diff --git a/code/app/common/helper/CssBuilder.php b/code/app/common/helper/CssBuilder.php new file mode 100644 index 0000000..9b8f827 --- /dev/null +++ b/code/app/common/helper/CssBuilder.php @@ -0,0 +1,121 @@ +"; + continue; + } + + $css = file_get_contents($path); + + // 类名前缀替换 + $css = str_replace('__PFX__', $domPrefix, $css); + + // 简单压缩(减少 fingerprint 重复率) + $css = preg_replace('/\s+/', ' ', $css); + + // 模块标记 + // $allCss .= "/* {$file} */" . $css; + $allCss .= $css; + } + + // 写入合并后的 CSS + file_put_contents($targetFile, $allCss); + + // 返回前端可访问路径 + return "/static/css/compiled/dom_{$staticHash}.css"; + } +} diff --git a/code/app/common/helper/SeoWordsHelper.php b/code/app/common/helper/SeoWordsHelper.php new file mode 100644 index 0000000..3c20011 --- /dev/null +++ b/code/app/common/helper/SeoWordsHelper.php @@ -0,0 +1,115 @@ + $w, 'url' => 'javascript:void(0)']; + + } + + return $arrNewsSeoWords; + } + + /* ================== 子策略 ================== */ + + private static function appendYear(array $words, array $video): array + { + $year = $video['v_year'] ?? date('Y'); + $out = []; + + foreach ($words as $w) { + // 防止重复插 + if (strpos($w, (string)$year) === false) { + $out[] = $year . $w; + } else { + $out[] = $w; + } + } + return $out; + } + + private static function appendSuffix(array $words): array + { + $suffixGroups = [ + 'watch' => ['在线观看', '在线播放', '在线免费看'], + 'free' => ['免费观看', '高清免费', '全集免费观看'], + 'hd' => ['高清版', '蓝光版', '1080P', '4K版'], + 'scene' => ['手机在线观看', '手机免费观看', '电脑在线观看'], + 'new' => ['最新资源', '最新上线'], + ]; + + $groupKeys = array_keys($suffixGroups); + $out = []; + + foreach ($words as $w) { + // 50% 概率加后缀 + if ((crc32($w) & 1) === 0) { + $out[] = $w; + continue; + } + + $group = $groupKeys[crc32($w) % count($groupKeys)]; + $suffixList = $suffixGroups[$group]; + $suffix = $suffixList[crc32($w) % count($suffixList)]; + + if (!str_contains($w, $suffix)) { + $out[] = $w . $suffix; + } else { + $out[] = $w; + } + } + + return $out; + } +} diff --git a/code/app/common/helper/SiteStyle-back.php b/code/app/common/helper/SiteStyle-back.php new file mode 100644 index 0000000..8f13fe4 --- /dev/null +++ b/code/app/common/helper/SiteStyle-back.php @@ -0,0 +1,907 @@ + (($seed >> $shift) % 5) + 1; + + // theme 冻结:mode/variant(调色板运行时算,也可冻结存) + $themeMode = ['A', 'B', 'C', 'D'][$seed % 4]; + $themeVariant = ($seed % 4) + 1; + + // grid 冻结(所有页面通用) + $grid = self::buildGridLayout($seed); + + // pages 冻结:home/category + $homePage = self::buildHomePageCfg($seed); + $categoryPage = self::buildCategoryPageCfg($seed); + + // list_layout 冻结:为“会被渲染的模块”提前生成(后续加模块只要补丁即可) + // 说明:这里生成的是“模块级默认布局”,页面渲染时按 module 取用即可 + $listLayout = self::buildDefaultListLayouts($seed, $homePage, $categoryPage); + + return [ + 'meta' => [ + 'host' => $host, + 'seed' => $seed, + 'dom_prefix' => $domPrefix, + 'static_hash' => $staticHash, + 'version' => 4, // 你现在的 cfg 版本号(以后升级用) + ], + + 'global' => [ + 'page_max_width_pc' => self::$WIDTH_POOL[$seed % count(self::$WIDTH_POOL)], + 'grid' => $grid, + 'theme' => [ + 'mode' => $themeMode, + 'variant' => $themeVariant, + ], + ], + + 'pages' => [ + 'home' => $homePage, + 'category' => $categoryPage, + ], + + 'components' => [ + 'templates' => [ + 'head_tpl' => $idx(0), + 'foot_tpl' => $idx(1), + 'banner_tpl' => $idx(2), + 'list_tpl' => $idx(3), + 'detail_tpl' => $idx(9), + 'play_tpl' => $idx(10), + + // 你旧系统里还有 recommend/trending/newest/ranking/category 等独立 tpl,可继续保留 + 'recommend_tpl' => $idx(4), + 'trending_tpl' => $idx(5), + 'newest_tpl' => $idx(6), + 'ranking_tpl' => $idx(7), + 'category_tpl' => $idx(8), + ], + + 'list' => [ + 'item_variants' => [ + '01' => 20, + '02' => 20, + '03' => 20, + '04' => 20, + '05' => 20, + ], + 'semantic_map' => self::$MODULE_ITEM_WEIGHT, + 'shell_rules' => self::$ITEM_SHELL_MAP, + ], + ], + + // 模块布局冻结(核心) + 'list_layout' => $listLayout, + ]; + } + + /** + * 旧 cfg 补齐规则:只要缺字段就补,并标记 patched=true + */ + private static function patchCfgIfNeeded(array $cfg, string $host, int $seed): array + { + $patched = false; + + // meta + if (!isset($cfg['meta'])) { + $cfg['meta'] = []; + $patched = true; + } + if (!isset($cfg['meta']['host'])) { + $cfg['meta']['host'] = $host; + $patched = true; + } + if (!isset($cfg['meta']['seed'])) { + $cfg['meta']['seed'] = $seed; + $patched = true; + } + if (!isset($cfg['meta']['dom_prefix'])) { + $cfg['meta']['dom_prefix'] = substr(md5($host . '_dom'), 0, 6); + $patched = true; + } + if (!isset($cfg['meta']['static_hash'])) { + $cfg['meta']['static_hash'] = substr(md5($host . '_v2025'), 0, 10); + $patched = true; + } + if (!isset($cfg['meta']['version'])) { + $cfg['meta']['version'] = 4; + $patched = true; + } + + // global + if (!isset($cfg['global'])) { + $cfg['global'] = []; + $patched = true; + } + if (!isset($cfg['global']['page_max_width_pc'])) { + $cfg['global']['page_max_width_pc'] = self::$WIDTH_POOL[$seed % count(self::$WIDTH_POOL)]; + $patched = true; + } + if (!isset($cfg['global']['grid'])) { + $cfg['global']['grid'] = self::buildGridLayout($seed); + $patched = true; + } + if (!isset($cfg['global']['theme'])) { + $cfg['global']['theme'] = [ + 'mode' => ['A', 'B', 'C', 'D'][$seed % 4], + 'variant' => ($seed % 4) + 1, + ]; + $patched = true; + } + + // pages + if (!isset($cfg['pages'])) { + $cfg['pages'] = []; + $patched = true; + } + if (!isset($cfg['pages']['home'])) { + $cfg['pages']['home'] = self::buildHomePageCfg($seed); + $patched = true; + } + if (!isset($cfg['pages']['category'])) { + $cfg['pages']['category'] = self::buildCategoryPageCfg($seed); + $patched = true; + } + + // components + if (!isset($cfg['components'])) { + $cfg['components'] = []; + $patched = true; + } + if (!isset($cfg['components']['templates'])) { + $idx = fn($shift) => (($seed >> $shift) % 5) + 1; + $cfg['components']['templates'] = [ + 'head_tpl' => $idx(0), + 'foot_tpl' => $idx(1), + 'banner_tpl' => $idx(2), + 'list_tpl' => $idx(3), + 'detail_tpl' => $idx(9), + 'play_tpl' => $idx(10), + 'recommend_tpl' => $idx(4), + 'trending_tpl' => $idx(5), + 'newest_tpl' => $idx(6), + 'ranking_tpl' => $idx(7), + 'category_tpl' => $idx(8), + ]; + $patched = true; + } + if (!isset($cfg['components']['list'])) { + $cfg['components']['list'] = [ + 'item_variants' => ['01'=>20,'02'=>20,'03'=>20,'04'=>20,'05'=>20], + 'semantic_map' => self::$MODULE_ITEM_WEIGHT, + 'shell_rules' => self::$ITEM_SHELL_MAP, + ]; + $patched = true; + } + + // list_layout(冻结默认模块布局) + if (!isset($cfg['list_layout']) || !is_array($cfg['list_layout'])) { + $cfg['list_layout'] = self::buildDefaultListLayouts( + $seed, + $cfg['pages']['home'], + $cfg['pages']['category'] + ); + $patched = true; + } else { + // 补齐缺少的默认模块布局(升级时很关键:你说的“分类页不写入”就靠这里补) + $needModules = self::collectNeededModules($cfg['pages']['home'], $cfg['pages']['category']); + foreach ($needModules as $m) { + if (!isset($cfg['list_layout'][$m])) { + $cfg['list_layout'][$m] = self::buildListCfgForModule($seed + crc32($m), $m, $cfg); + $patched = true; + } + } + } + + return [$cfg, $patched]; + } + + /* ====================================================== + * Runtime Payload(TpStyle) + * ====================================================== */ + private static function buildRuntimePayload(array $cfg, string $host, int $seed, $domainRow): array + { + $domPrefix = $cfg['meta']['dom_prefix']; + $staticHash = $cfg['meta']['static_hash']; + + // 运行时主题色(从冻结的 mode/variant 计算) + $themeMode = $cfg['global']['theme']['mode'] ?? 'A'; + $themeVariant = (int)($cfg['global']['theme']['variant'] ?? 1); + $themeColors = self::buildTheme($seed, $themeMode, $themeVariant); + + // templates(路径输出保持你旧版结构) + $tpl = $cfg['components']['templates']; + $templates = [ + 'head' => "head/head_" . sprintf("%02d", (int)$tpl['head_tpl']), + 'foot' => "footer/footer_" . sprintf("%02d", (int)$tpl['foot_tpl']), + 'banner' => "module/banner/banner_" . sprintf("%02d", (int)$tpl['banner_tpl']), + 'list' => "module/list/list_" . sprintf("%02d", (int)$tpl['list_tpl']), + 'detail' => "module/detail/detail_" . sprintf("%02d", (int)$tpl['detail_tpl']), + 'play' => "module/play/play_" . sprintf("%02d", (int)$tpl['play_tpl']), + + // 旧系统模块(保留) + 'recommend' => "module/recommend/recommend_" . sprintf("%02d", (int)$tpl['recommend_tpl']), + 'trending' => "module/trending/trending_" . sprintf("%02d", (int)$tpl['trending_tpl']), + 'newest' => "module/newest/newest_" . sprintf("%02d", (int)$tpl['newest_tpl']), + 'ranking' => "module/ranking/ranking_" . sprintf("%02d", (int)$tpl['ranking_tpl']), + 'category' => "module/category/category_" . sprintf("%02d", (int)$tpl['category_tpl']), + ]; + + // css_files(你当前只要 head/footer/banner/list/detail/play + 可选模块 css) + $cssFiles = [ + "head/head_" . sprintf("%02d", (int)$tpl['head_tpl']) . ".css", + "footer/footer_" . sprintf("%02d", (int)$tpl['foot_tpl']) . ".css", + "banner/banner_" . sprintf("%02d", (int)$tpl['banner_tpl']) . ".css", + "list/list_" . sprintf("%02d", (int)$tpl['list_tpl']) . ".css", + "detail/detail_" . sprintf("%02d", (int)$tpl['detail_tpl']) . ".css", + "play/play_" . sprintf("%02d", (int)$tpl['play_tpl']) . ".css", + ]; + $cssFiles = array_values(array_unique($cssFiles)); + + return [ + 'host' => $host, + 'seed' => $seed, + 'dom_prefix' => $domPrefix, + 'static_hash' => $staticHash, + + // cfg 全量给模板(你现在模板一直在用) + 'template_cfg' => $cfg, + + // 兼容你现在模板里直接用的快捷字段 + 'page_max_width_pc' => $cfg['global']['page_max_width_pc'], + 'list_layout' => $cfg['list_layout'], + 'category_page' => $cfg['pages']['category'], + + // 原结构 + 'templates' => $templates, + 'css_files' => $cssFiles, + ] + $themeColors; + } + + /* ====================================================== + * Pages cfg(冻结规则池 + 稳定映射) + * ====================================================== */ + private static function buildHomePageCfg(int $seed): array + { + $modulePool = ['newest', 'hot', 'rank', 'recommend', 'trending']; + $shuffled = self::shuffleStable($modulePool, $seed + 101); + + // 每域名固定 3~5 + $count = 3 + ($seed % 3); + + return [ + 'top_modules' => array_slice($shuffled, 0, $count), + ]; + } + + private static function buildCategoryPageCfg(int $seed): array + { + return [ + 'top_block' => self::buildCategoryTopBlock($seed), + 'sections_pool' => self::buildCategorySectionsPool($seed), + ]; + } + + private static function buildCategoryTopBlock(int $seed): array + { + $modules = ['newest', 'hot', 'rank']; + return ['module' => $modules[$seed % count($modules)]]; + } + + private static function buildCategorySectionsPool(int $seed): array + { + $basePool = [ + ['shell' => 'A', 'item' => '01', 'title' => 'F', 'class' => 'compact'], + ['shell' => 'B', 'item' => '01', 'title' => 'F', 'class' => ''], + ['shell' => 'B', 'item' => '02', 'title' => 'F', 'class' => 'loose'], + ['shell' => 'C', 'item' => '05', 'title' => 'F', 'class' => 'top compact'], + ]; + + $pool = self::shuffleStable($basePool, $seed + 301); + $count = 3 + ($seed % 3); // 3~5(basePool 只有4条,这里实际最大=4;你以后扩展 basePool 即可>5) + + return array_slice($pool, 0, min($count, count($pool))); + } + + /** + * 供模板调用:二级分类块 cfg(不再在模板里写 crc32 逻辑) + * + * 用法(模板里): + * + */ + public static function buildCategorySectionCfg(array $cfg, string $subCategoryEn, int $order = 0): array + { + $seed = (int)($cfg['meta']['seed'] ?? 0) + + crc32($subCategoryEn) + + $order * 13; + + $pool = $cfg['pages']['category']['sections_pool'] ?? []; + if (empty($pool)) { + // 兜底 + $pool = self::buildCategorySectionsPool($seed); + } + + $base = $pool[$seed % count($pool)]; + + $item = (string)$base['item']; + $itemType = self::$ITEM_TYPE_MAP[$item] ?? 'poster'; + + $variantCount = (int)($cfg['components']['list']['item_variants'][$item] ?? 1); + $variant = $variantCount > 0 ? ($seed % $variantCount) : 0; + + return [ + 'shell' => $base['shell'], + 'item' => $item, + 'item_type' => $itemType, + 'item_variant' => $variant, + 'title' => $base['title'], + 'class' => $base['class'], + 'grid' => $cfg['global']['grid'], + ]; + } + + /* ====================================================== + * list_layout(冻结模块默认布局) + * ====================================================== */ + private static function buildDefaultListLayouts(int $seed, array $homePage, array $categoryPage): array + { + $needModules = self::collectNeededModules($homePage, $categoryPage); + + $out = []; + foreach ($needModules as $m) { + $out[$m] = self::buildListCfgForModule($seed + crc32($m), $m, [ + 'global' => ['grid' => self::buildGridLayout($seed)], + 'components' => ['list' => ['item_variants' => ['01'=>20,'02'=>20,'03'=>20,'04'=>20,'05'=>20]]], + ]); + } + return $out; + } + + private static function collectNeededModules(array $homePage, array $categoryPage): array + { + $modules = []; + + // home 顶部模块 + foreach (($homePage['top_modules'] ?? []) as $m) { + $modules[] = $m; + } + + // category 顶部块模块 + if (!empty($categoryPage['top_block']['module'])) { + $modules[] = $categoryPage['top_block']['module']; + } + + // 常见页面:你后面肯定会用到(先冻结) + $modules[] = 'category_list'; + $modules[] = 'search_list'; + + // 去重 + $modules = array_values(array_unique(array_filter($modules))); + return $modules; + } + + private static function buildListCfgForModule(int $seed, string $module, array $cfg): array + { + $layout = self::buildListLayout($seed, $module); + + // Title + $layout['title'] = self::pickTitleTpl($seed + 17, $module); + $layout['title_text'] = self::buildTitleText($seed + 19, $module); + + // Behavior + $behavior = self::buildListBehavior($seed + 23, $module); + $layout['behavior'] = $behavior; + $layout['class'] = trim(implode(' ', array_filter($behavior))); + + // item variant(冻结) + $layout['item_variant'] = self::pickItemVariant( + $seed + 31, + $layout['item'], + $module + ); + + // grid(冻结引用全局) + $layout['grid'] = $cfg['global']['grid'] ?? self::buildGridLayout($seed); + + return $layout; + } + + /** + * 构建 List 布局(带语义权重 + 合法映射) + */ + private static function buildListLayout(int $seed, string $module): array + { + // Item(语义优先) + $itemIdx = self::pickItemBySemantic($module, $seed); + $itemType = self::$ITEM_TYPE_MAP[$itemIdx] ?? 'poster'; + + // Shell(只在合法池中选) + $allowedShells = self::$ITEM_SHELL_MAP[$itemType] ?? ['B']; + $shell = $allowedShells[($seed >> 4) % count($allowedShells)]; + + // Title(只是一个默认值,最终会被 pickTitleTpl 覆盖) + $titlePool = ['A', 'B', 'C', 'D', 'E']; + $title = $titlePool[($seed >> 6) % count($titlePool)]; + + return [ + 'module' => $module, + 'item' => $itemIdx, + 'item_type' => $itemType, + 'shell' => $shell, + 'title' => $title, + 'class' => '', // 最终由 buildListBehavior 生成 + ]; + } + + /** + * item variant:由模块/seed 稳定取值 + */ + private static function pickItemVariant(int $seed, string $item, string $scope = 'list'): int + { + $count = 20; + $salt = crc32($scope); + return abs($seed + $salt) % $count; + } + + /** + * 列表行为(Behavior) + */ + private static function buildListBehavior(int $seed, string $module): array + { + $behavior = []; + + switch ($module) { + case 'newest': + $behavior[] = ($seed % 2 === 0) ? 'compact' : ''; + $behavior[] = ($seed % 2 === 1) ? 'collapsed' : ''; + break; + + case 'hot': + case 'trending': + case 'recommend': + $behavior[] = ($seed % 3 === 0) ? 'loose' : ''; + $behavior[] = ($seed % 2 === 0) ? 'emphasis' : ''; + break; + + case 'rank': + $behavior[] = 'top'; + $behavior[] = 'compact'; + break; + + default: + // category_list / search_list 等兜底 + $behavior[] = ($seed % 2 === 0) ? 'compact' : ''; + } + + return array_values(array_filter($behavior)); + } + + /** + * 根据模块语义 + seed 选择 Item(带权重) + */ + private static function pickItemBySemantic(string $module, int $seed): string + { + $conf = self::$MODULE_ITEM_WEIGHT[$module] ?? null; + + if (!$conf) { + $pool = array_keys(self::$ITEM_TYPE_MAP); + return $pool[$seed % count($pool)]; + } + + // primary 75% + if (($seed & 0b11) !== 0) { + return $conf['primary'][$seed % count($conf['primary'])]; + } + + // secondary + if (!empty($conf['secondary']) && (($seed >> 2) & 1)) { + return $conf['secondary'][$seed % count($conf['secondary'])]; + } + + return $conf['fallback'][0]; + } + + /* ====================================================== + * Grid(冻结) + * ====================================================== */ + private static function pickPcCols(int $seed, string $size): int + { + $pool = self::$PC_COLS_MAP[$size] ?? [3]; + return $pool[$seed % count($pool)]; + } + + private static function buildGridLayout(int $seed): array + { + return [ + // H5:1–3 列 + 'cols_h5' => [1, 2, 3][$seed % 3], + // PC:按断点 + 'cols_pc_sm' => self::pickPcCols($seed + 11, 'sm'), + 'cols_pc_md' => self::pickPcCols($seed + 23, 'md'), + 'cols_pc_lg' => self::pickPcCols($seed + 37, 'lg'), + ]; + } + + /* ====================================================== + * Title 文案池 + * ====================================================== */ + private static function mapTitleType(string $module): string + { + // 你要求:category/search/recommend 可复用 newest 的文案池 + return match ($module) { + 'category_list', 'search_list', 'recommend' => 'newest', + default => $module, + }; + } + + private static function pickStable(array $list, int $seed) + { + if (empty($list)) return null; + $seed = abs($seed); + return $list[$seed % count($list)]; + } + + private static function buildTitleText(int $seed, string $module): array + { + $type = self::mapTitleType($module); + if (!isset(self::$TITLE_POOL[$type])) { + $type = 'newest'; + } + $pool = self::$TITLE_POOL[$type]; + + return [ + 'primary' => self::pickStable($pool['primary'], $seed), + 'secondary' => self::pickStable($pool['secondary'], $seed >> 2), + 'seo' => self::pickStable($pool['seo'], $seed >> 4), + ]; + } + + private static function pickTitleTpl(int $seed, string $module): string + { + $map = [ + 'newest' => ['A', 'B', 'D'], + 'hot' => ['A', 'C', 'D', 'B'], + 'rank' => ['E', 'D'], + 'trending' => ['A', 'C', 'D'], + 'recommend' => ['A', 'B', 'C'], + 'category_list'=> ['F', 'A'], + 'search_list' => ['A', 'B'], + ]; + + $list = $map[$module] ?? ['A']; + return $list[$seed % count($list)]; + } + + /* ====================================================== + * DB / JSON + * ====================================================== */ + private static function readDbConfig($domainRow): ?array + { + try { + if (!$domainRow) return null; + + $raw = is_array($domainRow) + ? ($domainRow['t_cfg'] ?? null) + : ($domainRow->t_cfg ?? null); + + if (empty($raw)) return null; + + return json_decode($raw, true) ?: null; + } catch (\Throwable $e) { + return null; + } + } + + private static function writeDbConfig($domainRow, array $cfg): void + { + if (!$domainRow || is_array($domainRow)) return; + + try { + $domainRow->t_cfg = json_encode($cfg, JSON_UNESCAPED_UNICODE); + $domainRow->save(); + } catch (\Throwable $e) { + } + } + + private static function readLocalJson(string $host): ?array + { + $file = root_path() . "storage/theme_cache/{$host}.json"; + if (!is_file($file)) return null; + + return json_decode(file_get_contents($file), true) ?: null; + } + + private static function writeLocalJson(string $host, array $cfg): void + { + $dir = root_path() . "storage/theme_cache/"; + if (!is_dir($dir)) @mkdir($dir, 0755, true); + + file_put_contents( + $dir . "{$host}.json", + json_encode($cfg, JSON_UNESCAPED_UNICODE) + ); + } + + /* ====================================================== + * 稳定洗牌 + * ====================================================== */ + private static function shuffleStable(array $arr, int $seed): array + { + $result = $arr; + $rand = $seed; + + for ($i = count($result) - 1; $i > 0; $i--) { + $rand = ($rand * 31 + 17) & 0x7fffffff; + $j = $rand % ($i + 1); + [$result[$i], $result[$j]] = [$result[$j], $result[$i]]; + } + return $result; + } + + /* ====================================================== + * 主题色(沿用你原来的 buildTheme + 辅助函数) + * ====================================================== */ + private static function buildTheme(int $seed, string $mode, int $variant): array + { + $base = $seed + $variant * 97; + if ($mode === 'D') $mode = ['A', 'B', 'C'][$base % 3]; + + $h = $base % 360; + + switch ($mode) { + case 'A': + $primary = self::hslToHex($h, 78, 55); + $secondary = self::hslToHex($h + 30, 65, 50); + $accent = self::hslToHex($h + 310, 85, 56); + $bg = '#F8FAFC'; + $bgSoft = '#F1F5F9'; + break; + + case 'B': + $primary = self::hslToHex($h, 55, 60); + $secondary = self::hslToHex($h + 40, 40, 65); + $accent = self::hslToHex($h + 300, 45, 58); + $bg = '#FBFBFE'; + $bgSoft = '#F5F5FA'; + break; + + case 'C': + $primary = self::hslToHex($h, 80, 55); + $secondary = self::hslToHex($h + 200, 60, 50); + $accent = self::hslToHex($h + 40, 75, 60); + $bg = self::hslToHex($h + 190, 30, 12); + $bgSoft = self::hslToHex($h + 190, 25, 16); + break; + + default: + $primary = self::hslToHex($h, 55, 60); + $secondary = self::hslToHex($h + 40, 40, 65); + $accent = self::hslToHex($h + 300, 45, 58); + $bg = '#FBFBFE'; + $bgSoft = '#F5F5FA'; + } + + $dark = self::isDarkColor($bg); + + return [ + 'color_primary' => $primary, + 'color_secondary' => $secondary, + 'color_accent' => $accent, + 'color_bg' => $bg, + 'color_bg_soft' => $bgSoft, + 'color_text_primary' => $dark ? '#FFF' : '#111', + 'color_text_secondary' => $dark ? '#CCC' : '#666', + 'color_border' => $dark ? 'rgba(255,255,255,.1)' : 'rgba(0,0,0,.1)', + 'color_grad_start' => $primary, + 'color_grad_end' => $secondary, + 'shadow_color' => $dark ? 'rgba(0,0,0,.7)' : 'rgba(0,0,0,.12)', + 'is_dark_mode' => $dark, + ]; + } + + private static function hslToHex($h, $s, $l): string + { + $h /= 360; + $s /= 100; + $l /= 100; + $c = (1 - abs(2 * $l - 1)) * $s; + $x = $c * (1 - abs(fmod($h * 6, 2) - 1)); + $m = $l - $c / 2; + + if ($h < 1 / 6) [$r, $g, $b] = [$c, $x, 0]; + elseif ($h < 2 / 6) [$r, $g, $b] = [$x, $c, 0]; + elseif ($h < 3 / 6) [$r, $g, $b] = [0, $c, $x]; + elseif ($h < 4 / 6) [$r, $g, $b] = [0, $x, $c]; + elseif ($h < 5 / 6) [$r, $g, $b] = [$x, 0, $c]; + else [$r, $g, $b] = [$c, 0, $x]; + + $r = round(($r + $m) * 255); + $g = round(($g + $m) * 255); + $b = round(($b + $m) * 255); + return sprintf("#%02X%02X%02X", $r, $g, $b); + } + + private static function isDarkColor(string $hex): bool + { + $hex = ltrim($hex, '#'); + $r = hexdec(substr($hex, 0, 2)); + $g = hexdec(substr($hex, 2, 2)); + $b = hexdec(substr($hex, 4, 2)); + + $lum = (0.2126 * $r + 0.7152 * $g + 0.0722 * $b) / 255; + return $lum < 0.45; + } + + /* ====================================================== + * 常量池 + * ====================================================== */ + private static array $WIDTH_POOL = [860, 900, 960, 1000, 1080, 1140, 1200, 1280, 1360]; + + private static array $PC_COLS_MAP = [ + 'sm' => [3, 4], + 'md' => [4, 5, 6], + 'lg' => [6, 7, 8, 9], + ]; + + /** + * Shell × Item 合法组合映射(poster/media/rank) + */ + private static array $ITEM_SHELL_MAP = [ + 'poster' => ['B', 'D'], + 'media' => ['A', 'D'], + 'rank' => ['C'], + ]; + + /** + * Item 编号 → Item 类型 + */ + private static array $ITEM_TYPE_MAP = [ + '01' => 'poster', + '02' => 'media', + '03' => 'rank', + '04' => 'poster', + '05' => 'rank', + ]; + + /** + * 模块语义 → Item 权重池 + */ + private static array $MODULE_ITEM_WEIGHT = [ + 'newest' => [ + 'primary' => ['01', '04'], + 'secondary' => ['02'], + 'fallback' => ['01'], + ], + 'hot' => [ + 'primary' => ['01', '04'], + 'secondary' => ['02'], + 'fallback' => ['01'], + ], + 'rank' => [ + 'primary' => ['05'], + 'secondary' => ['03'], + 'fallback' => ['05'], + ], + // 兜底模块 + 'trending' => [ + 'primary' => ['01', '04'], + 'secondary' => ['02'], + 'fallback' => ['01'], + ], + 'recommend' => [ + 'primary' => ['01', '04'], + 'secondary' => ['02'], + 'fallback' => ['01'], + ], + 'category_list' => [ + 'primary' => ['01'], + 'secondary' => ['02'], + 'fallback' => ['01'], + ], + 'search_list' => [ + 'primary' => ['02'], + 'secondary' => ['01'], + 'fallback' => ['02'], + ], + ]; + + private static array $TITLE_POOL = [ + 'newest' => [ + 'primary' => ['最近更新','最新上线','新片速递','今日更新','新内容推荐'], + 'secondary' => ['第一时间为你呈现','每日持续更新','不错过任何新片','刚刚上线,抢先观看'], + 'seo' => ['最新电影电视剧更新','今日最新影视资源','新上线影视内容合集'], + ], + 'hot' => [ + 'primary' => ['热门推荐','热播精选','人气必看','大家都在看'], + 'secondary' => ['近期热度持续攀升','高点击率影片推荐','口碑与热度兼具','当前最受欢迎内容'], + 'seo' => ['热门影视作品推荐','高人气电影电视剧合集','热播影视排行榜推荐'], + ], + 'rank' => [ + 'primary' => ['排行榜','热度榜单','人气排行','播放榜'], + 'secondary' => ['数据实时更新','热度排序参考','近期播放趋势','高人气作品排行'], + 'seo' => ['影视排行榜前十名','热门电影电视剧排行','高播放量影视榜单'], + ], + ]; +} diff --git a/code/app/common/helper/SiteStyle.php b/code/app/common/helper/SiteStyle.php index ebb77bf..3df63c0 100644 --- a/code/app/common/helper/SiteStyle.php +++ b/code/app/common/helper/SiteStyle.php @@ -2,99 +2,1118 @@ namespace app\common\helper; +use app\common\helper\style\DetailMainRule; + +/** + * ========================================================= + * SiteStyle(最终定稿版 · 不兼容旧 cfg) + * --------------------------------------------------------- + * 职责: + * 1. 基于域名生成并冻结站点 cfg + * 2. cfg 必须完整、唯一、可持久化 + * 3. 模板层只读 cfg,不做任何随机/计算 + * 4. CSS 只输出文件列表,交给 CssBuilder 合并 + * ========================================================= + */ class SiteStyle { - /** - * 站群核心配置(2025 终极无坑版) - */ - public static function getConfig() + /* ====================================================== + * 公共入口 + * ====================================================== */ + public static function getConfig($domainRow = null): array { - $host = $_SERVER['HTTP_HOST'] ?? 'default.com'; - $host = strtolower(preg_replace('/^www\./i', '', $host)); - $host = explode(':', $host)[0]; + $host = self::resolveHost(); $seed = crc32($host); - $themeId = ($seed % 6) + 1; + // 冻结 cfg(只生成一次) + $cfg = self::loadOrCreateCfg($domainRow, $host, $seed); - // 正确的模块随机排序(已验证全国上万站零翻车) - $modules = ['banner', 'recommend', 'trending', 'newest', 'ranking', 'category']; - $moduleOrder = $modules; + // 运行时 payload(给模板用) + return self::buildRuntimePayload($cfg, $host, $seed); + } - // 改用最稳定最暴力的伪随机排序方式 - $rand = $seed; - for ($i = count($moduleOrder) - 1; $i > 0; $i--) { - $rand = ($rand * 31 + 17) & 0x7fffffff; // 线性同余生成器 - $j = $rand % ($i + 1); - // 交换 - $temp = $moduleOrder[$i]; - $moduleOrder[$i] = $moduleOrder[$j]; - $moduleOrder[$j] = $temp; + /* ====================================================== + * Host / Seed + * ====================================================== */ + // private static function resolveHost(): string + // { + // $host = $_SERVER['HTTP_HOST'] ?? 'default.com'; + // $host = strtolower(preg_replace('/^www\./i', '', $host)); + // $host = explode(':', $host)[0]; + // return $host ?: 'default.com'; + // } + private static function resolveHost(): string + { + $host = $_SERVER['HTTP_HOST'] ?? ''; + $host = strtolower(trim($host)); + + // 去端口 + $host = preg_replace('/:\d+$/', '', $host); + + // IP / localhost 直接返回 + if ( + filter_var($host, FILTER_VALIDATE_IP) || + $host === 'localhost' + ) { + return $host ?: 'default.com'; } + // 去 www + $host = preg_replace('/^www\./', '', $host); + + $parts = explode('.', $host); + $count = count($parts); + + if ($count <= 2) { + // example.com / test.cn + return $host; + } + + // 常见二级公共后缀(可维护) + $secondLevelTlds = [ + 'com.cn', + 'net.cn', + 'org.cn', + 'gov.cn', + 'co.uk', + 'org.uk', + 'ac.uk', + 'com.hk', + 'com.tw' + ]; + + $lastTwo = $parts[$count - 2] . '.' . $parts[$count - 1]; + $lastThree = $parts[$count - 3] . '.' . $lastTwo; + + if (in_array($lastTwo, $secondLevelTlds, true)) { + // a.b.example.com.cn → example.com.cn + return $parts[$count - 3] . '.' . $lastTwo; + } + + // 默认:取最后两个 + return $lastTwo; + } + + private static function buildDomPrefix(string $host, int $length = 6): string + { + // 用 crc32 保证稳定 + $num = abs(crc32($host . '_dom')); + + // 字母表:首字符专用(不含数字) + $alpha = 'abcdefghijklmnopqrstuvwxyz'; + $alnum = 'abcdefghijklmnopqrstuvwxyz0123456789'; + + // 第一个字符:只用字母 + $prefix = $alpha[$num % 26]; + $num = intdiv($num, 26); + + // 后续字符:字母 + 数字 + for ($i = 1; $i < $length; $i++) { + $prefix .= $alnum[$num % 36]; + $num = intdiv($num, 36); + } + + return $prefix; + } + + + /* ====================================================== + * cfg 冻结层(只生成一次) + * ====================================================== */ + private static function loadOrCreateCfg($domainRow, string $host, int $seed): array + { + $cfg = self::readDbConfig($domainRow) + ?? self::readLocalJson($host); + + if ($cfg) { + return $cfg; + } + + // ===== 新站:完整生成 ===== + $cfg = self::generateFrozenCfg($host, $seed); + + self::writeDbConfig($domainRow, $cfg); + self::writeLocalJson($host, $cfg); + + return $cfg; + } + + /** + * 生成完整冻结 cfg(唯一版本) + */ + private static function generateFrozenCfg(string $host, int $seed): array + { + //$domPrefix = substr(md5($host . '_dom'), 0, 6); + $domPrefix = self::buildDomPrefix($host); + $staticHash = substr(md5($host . '_v2025'), 0, 10); + + // 模板编号(100 套 head/footer 完全可继续用) + $idx = fn($shift) => (($seed >> $shift) % 100) + 1; + + // 全局 grid + $grid = self::buildGridLayout($seed); + + // 页面规则 + $homePage = self::buildHomePageCfg($seed); + $categoryIndexPage = self::buildCategoryIndexPageCfg($seed); + $searchPage = self::buildSearchPageCfg($seed); + $rankHomePage = self::buildRankHomePageCfg($seed); + + $listLayout = self::buildAllListLayouts($seed, $domPrefix); + return [ - 'theme_id' => $themeId, - 'color_primary' => self::randColor($seed . '_pri'), - 'color_secondary' => self::randColor($seed . '_sec'), - 'color_accent' => self::randColor($seed . '_acc'), - 'layout_style' => $seed % 5, - 'module_order' => $moduleOrder, - 'static_hash' => substr(md5($host . 'v2025'), 0, 10), - 'is_dark_mode' => ($seed % 8 === 0), - 'show_ads' => ($seed % 3 !== 0), + 'meta' => [ + 'host' => $host, + 'seed' => $seed, + 'dom_prefix' => $domPrefix, + 'static_hash' => $staticHash, + 'version' => 1, + ], + + 'global' => [ + 'page_max_width_pc' => self::$WIDTH_POOL[$seed % count(self::$WIDTH_POOL)], + 'grid' => $grid, + 'theme' => [ + 'mode' => ['A', 'B', 'C', 'D'][$seed % 4], + 'variant' => ($seed % 4) + 1, + ], + ], + + 'pages' => [ + 'home' => $homePage, + 'category_index' => $categoryIndexPage, + 'category' => [], + 'search' => $searchPage, + 'rank_home' => $rankHomePage, + 'detail' => self::buildDetailPageCfg($seed), + 'play' => self::buildPlayPageCfg($seed), + ], + + 'components' => [ + 'templates' => [ + 'head_tpl' => $idx(0), + 'foot_tpl' => $idx(1), + 'banner_tpl' => $idx(2), + 'list_tpl' => $idx(3), + 'detail_tpl' => $idx(4), + 'play_tpl' => $idx(5), + ], + 'list' => [ + 'item_variants' => [ + '01' => 20, + '02' => 20, + '03' => 20, + '04' => 20, + '05' => 20, + ], + 'semantic_map' => self::$MODULE_ITEM_WEIGHT, + 'shell_rules' => self::$ITEM_SHELL_MAP, + ], + // ========== 分页组件(全站统一) ========== + 'pager' => [ + // 母型(结构级差异) + 'family' => [ + 'numeric', + 'pill', + 'block', + 'input', + 'minimal', + ][$seed % 5], + + // 子变体(HTML 结构差异) + 'variant' => ($seed >> 4) % 20, + + // 视觉语气(CSS 层) + 'tone' => 1 + (($seed >> 8) % 3), + ], + ], + + 'list_layout' => $listLayout, ]; } - /** - * 生成好看的随机色(完全不依赖 mt_srand) - */ - private static function randColor($seedStr) + /* ====================================================== + * Runtime Payload(TpStyle) + * ====================================================== */ + private static function buildRuntimePayload(array $cfg, string $host, int $seed): array { - $hash = crc32($seedStr); + $domPrefix = $cfg['meta']['dom_prefix']; + $staticHash = $cfg['meta']['static_hash']; - // 色相 0~359 - $h = $hash % 360; + // 主题色(运行时算,不冻结具体颜色) + $theme = self::buildTheme( + $seed, + $cfg['global']['theme']['mode'], + $cfg['global']['theme']['variant'] + ); - // 饱和度 45~92%(避免太灰) - $s = 45 + (($hash >> 8) % 48); + // 模板路径(你原来 include 用的方式完全保留) + $tpl = $cfg['components']['templates']; + $templates = [ + 'head' => "head/head_" . sprintf('%02d', $tpl['head_tpl']), + 'foot' => "footer/footer_" . sprintf('%02d', $tpl['foot_tpl']), + 'banner' => "module/banner/banner_" . sprintf('%02d', $tpl['banner_tpl']), + 'list' => "module/list/list_" . sprintf('%02d', $tpl['list_tpl']), + 'detail' => "module/detail/detail_" . sprintf('%02d', $tpl['detail_tpl']), + 'play' => "module/play/play_" . sprintf('%02d', $tpl['play_tpl']), + ]; - // 亮度 38~78%(避免太暗或太刺眼) - $l = 38 + (($hash >> 16) % 41); + // CSS:只负责声明模块,最终由 CssBuilder 合并 + $cssFiles = [ + "head/head_" . sprintf('%02d', $tpl['head_tpl']) . ".css", + "footer/footer_" . sprintf('%02d', $tpl['foot_tpl']) . ".css", + "pager/pager_" . sprintf('%02d', $cfg['components']['pager']['family']) . ".css", + "search/search_header_" . sprintf('%02d', $cfg['pages']['search']['top_block']['family']) . ".css", - return self::hslToHex($h, $s, $l); + "detail_main/layout/layout_" . $cfg['pages']['detail']['detail_main']['layout'] . ".css", + "breadcrumb/layout/layout_" . $cfg['pages']['detail']['breadcrumb']['layout'] . ".css", + "playline/layout/layout_" . $cfg['pages']['detail']['playline']['layout'] . ".css", + "seowords/layout/layout_" . $cfg['pages']['detail']['seowords']['layout'] . ".css", + + "banner/banner_" . sprintf('%02d', $tpl['banner_tpl']) . ".css", + "list/list_" . sprintf('%02d', $tpl['list_tpl']) . ".css", + "detail/detail_" . sprintf('%02d', $tpl['detail_tpl']) . ".css", + "play/play_" . sprintf('%02d', $tpl['play_tpl']) . ".css", + ]; + + return [ + 'host' => $host, + 'seed' => $seed, + 'dom_prefix' => $domPrefix, + 'static_hash' => $staticHash, + + 'templates' => $templates, + 'css_files' => $cssFiles, + 'template_cfg' => $cfg, + + 'page_max_width_pc' => $cfg['global']['page_max_width_pc'], + 'list_layout' => $cfg['list_layout'], + 'category_index' => $cfg['pages']['category_index'], + ] + $theme; + } + + /* ====================================================== + * Page cfg + * ====================================================== */ + private static function buildHomePageCfg(int $seed): array + { + $pool = ['news', 'piaofang', 'rank', 'tuijian', 'update']; + $pool = self::shuffleStable($pool, $seed + 101); + + // 首页模块数量:1–5(站点级稳定) + $count = ($seed % count($pool)) + 1; + + return [ + 'modules' => array_slice($pool, 0, $count), + ]; + } + + private static function buildCategoryIndexPageCfg(int $seed): array + { + $pool = ['news', 'piaofang', 'rank', 'tuijian', 'update']; + return [ + 'top_block' => [ + 'module' => $pool[$seed % count($pool)], + ], + 'sections_pool' => self::buildCategorySectionsPool($seed), + + ]; + } + + private static function buildSearchPageCfg(int $seed): array + { + return [ + 'top_block' => [ + // 母型(结构级差异) + 'family' => [ + 'simple', + 'centered', + 'rich', + 'seo', + 'media', + ][$seed % 5], + + // 子变体(HTML 结构差异) + 'variant' => ($seed >> 8) % 20, + + // 视觉语气(CSS 层) + 'tone' => 1 + (($seed >> 6) % 3), + ], + ]; + } + + private static function buildRankHomePageCfg(int $seed): array + { + $out = []; + + foreach (self::$RANK_HOME_MODULES as $key => $conf) { + $s = $seed + crc32($key); + + // 1️⃣ item 只能是 rank 类 + $rankItems = ['03', '05']; + $item = $rankItems[$s % count($rankItems)]; + + // 2️⃣ shell:只从“适合榜单的 shell 池”里选 + // 你已有 ITEM_SHELL_MAP['rank'] => ['C'] + $shells = self::$ITEM_SHELL_MAP['rank']; + $shell = $shells[$s % count($shells)]; + + // 3️⃣ 行为(榜单专用) + $class = 'rank compact top'; + + $out[] = [ + 'module' => $key, + 'title' => $conf['title'], + 'sort_type' => $conf['sort_type'], + + // ===== list / item 体系 ===== + 'item' => $item, + 'item_type' => 'rank', + 'item_variant' => $s % 20, + 'shell' => $shell, + 'class' => $class, + + // ===== 列表布局(完全复用)===== + 'grid' => self::buildGridLayout($s), + 'layout' => self::buildListRowsAndLimit( + $s, + self::buildGridLayout($s), + 'low' // 榜单首页:低密度 + ), + + // ===== 数据层 ===== + 'limit' => 7, + 'more_url' => "/rank/{$conf['sort_type']}", + ]; + } + + return [ + 'modules' => $out, + ]; + } + + private static function buildDetailPageCfg(int $seed): array + { + return [ + // 页面模块顺序 + 'modules' => [ + 'breadcrumb', + 'detail_main', + 'playline', + 'seowords', + 'pinlun', + 'list', + ], + + // ===== DetailMain ===== + 'detail_main' => self::buildDetailMainCfg($seed), + + // ===== PlayLine ===== + 'playline' => [ + 'layout' => ['A', 'B', 'C'][$seed % 3], + 'variant' => ($seed >> 4) % 20, + ], + + // ===== pinlun 为后面预留 ===== + 'pinlun' => [ + 'layout' => ['A', 'B', 'C'][$seed % 3], + 'variant' => ($seed >> 4) % 20, + ], + + // ===== Breadcrumb ===== + 'breadcrumb' => [ + 'layout' => ['A', 'B', 'C', 'D'][$seed % 4], + 'variant' => ($seed >> 4) % 20, + 'class' => 'breadcrumb compact seo', + ], + // ===== SeoWords ===== + 'seowords' => [ + 'layout' => ['A', 'B', 'C', 'D'][($seed >> 2) % 4], // 原 family + 'variant' => ($seed >> 8) % 20, // HTML 子变体索引(0–19) + 'rewrite' => ($seed >> 6) % 8, // 关键词加工策略(0–7,可扩) + 'class' => 'inline seo', + ], + + + // ===== 下方列表(复用 list 体系)===== + 'list' => [ + 'modules' => self::buildDetailPageListCfg($seed), + ], + ]; + } + + private static function buildDetailPageListCfg(int $seed): array + { + $pool = ['news', 'piaofang', 'rank', 'tuijian', 'update']; + $pool = self::shuffleStable($pool, $seed + 101); + + // 模块数量:1–3(详情页专用,克制) + $count = ($seed % 3) + 1; + + return array_slice($pool, 0, $count); + } + + + private static function buildDetailMainCfg(int $seed): array + { + // ===== DOM 顺序池(真实结构差异)===== + $orders = [ + ['title', 'cover', 'meta', 'desc', 'action'], + ['cover', 'title', 'meta', 'action', 'desc'], + ['meta', 'title', 'cover', 'desc', 'action'], + ['cover', 'meta', 'title', 'desc', 'action'], + ['title', 'meta', 'action', 'cover', 'desc'], + ['meta', 'cover', 'title', 'action', 'desc'], + ]; + + // ===== 视觉布局池(只影响 CSS)===== + $layouts = ['A', 'B', 'C']; + + return [ + // DOM 结构顺序(冻结) + 'order' => $orders[$seed % count($orders)], + + // 布局风格(冻结) + 'layout' => $layouts[($seed >> 3) % count($layouts)], + + // 五大模块各自 variant(冻结) + 'title' => $seed % 20, + 'cover' => ($seed >> 2) % 20, + 'meta' => ($seed >> 4) % 20, + 'desc' => ($seed >> 6) % 20, + 'action' => ($seed >> 8) % 20, + ]; + } + + + private static function buildPlayPageCfg(int $seed): array + { + return [ + // 页面模块顺序 + 'modules' => [ + 'breadcrumb', + // 'detail_main', + 'player', + 'playline', + 'seowords', + 'pinlun', + 'list', + ], + + // ===== DetailMain ===== + 'detail_main' => self::buildDetailMainCfg($seed), + + // ===== player ===== + 'player' => [ + 'engine' => 'dplayer', // 现在固定 + 'variant' => ($seed >> 6) % 20, // HTML 子变体 + 'class' => 'player focus', // 行为/视觉类 + 'opt' => [ + 'autoplay' => false, + 'muted' => false, + 'preload' => 'metadata', + 'ratio' => '16x9', + ], + ], + + + // ===== PlayLine ===== + 'playline' => [ + 'layout' => ['A', 'B', 'C'][$seed % 3], + 'variant' => ($seed >> 4) % 20, + ], + + // ===== pinlun 为后面预留 ===== + 'pinlun' => [ + 'layout' => ['A', 'B', 'C'][$seed % 3], + 'variant' => ($seed >> 4) % 20, + ], + + // ===== Breadcrumb ===== + 'breadcrumb' => [ + 'layout' => ['A', 'B', 'C', 'D'][$seed % 4], + 'variant' => ($seed >> 4) % 20, + 'class' => 'breadcrumb compact seo', + ], + // ===== SeoWords ===== + 'seowords' => [ + 'layout' => ['A', 'B', 'C', 'D'][($seed >> 2) % 4], // 原 family + 'variant' => ($seed >> 8) % 20, // HTML 子变体索引(0–19) + 'rewrite' => ($seed >> 6) % 8, // 关键词加工策略(0–7,可扩) + 'class' => 'inline seo', + ], + + + // ===== 下方列表(复用 list 体系)===== + 'list' => [ + 'modules' => self::buildDetailPageListCfg($seed), + ], + ]; + } + + private static function buildCategorySectionsPool(int $seed): array + { + $base = [ + ['shell' => 'A', 'item' => '01', 'class' => 'compact'], + ['shell' => 'B', 'item' => '01', 'class' => ''], + ['shell' => 'B', 'item' => '02', 'class' => 'loose'], + ['shell' => 'D', 'item' => '04', 'class' => ''], + ]; + $base = self::shuffleStable($base, $seed + 301); + return array_slice($base, 0, 3 + ($seed % 2)); + } + + private static function buildDetailMainBlocks(int $seed): array + { + // 每个 Block 使用哪个模板 + $blocks = [ + 'title' => $seed % 3 + 1, + 'cover' => ($seed >> 2) % 3 + 1, + 'meta' => ($seed >> 4) % 3 + 1, + 'desc' => ($seed >> 6) % 3 + 1, + 'action' => ($seed & 1) ? 1 : 2, + ]; + + // Block 顺序池 + $orders = [ + ['title', 'cover', 'meta', 'desc', 'action'], + ['cover', 'title', 'meta', 'desc', 'action'], + ['title', 'meta', 'cover', 'desc'], + ['meta', 'title', 'desc', 'cover'], + ]; + + return [ + 'blocks' => $blocks, + 'order' => $orders[$seed % count($orders)], + ]; + } + private static function buildTitleClampClass(int $domainSeed, string $domPrefix): string + { + $h = crc32($domainSeed . '|tclamp'); + $pack = $h % 6; // 0..5 + $lines = (($h >> 8) % 3) + 1; // 1..3 + + return $domPrefix . '-tclamp' + . ' ' . $domPrefix . '-tclamp-p' . $pack + . ' ' . $domPrefix . '-tclamp-l' . $lines; + } + + + /* ====================================================== + * list_layout(一次性冻结) + * ====================================================== */ + private static function buildAllListLayouts(int $seed, string $domPrefix): array + { + $modules = [ + 'news', + 'piaofang', + 'rank', + 'tuijian', + 'update', + 'category_list_index', + 'rank_list_index', + 'category_list', + 'search_list' + ]; + + $out = []; + foreach ($modules as $m) { + $out[$m] = self::buildListLayoutForModule($seed + crc32($m), $m,$seed, $domPrefix); + } + return $out; + } + + private static function buildListLayoutForModule(int $seed, string $module, int $domainSeed, string $domPrefix): array + { + $item = self::pickItemBySemantic($module, $seed); + $itemType = self::$ITEM_TYPE_MAP[$item]; + $shells = self::$ITEM_SHELL_MAP[$itemType]; + $shell = $shells[$seed % count($shells)]; + + $grid = self::buildGridLayout($seed); + // 页面密度:按模块语义决定 + $density = match ($module) { + 'search_list' => 'high', + 'category_list' => 'high', + 'category_list_index' => 'low', + 'rank_list_index' => 'low', + 'news', + 'piaofang', + 'rank', + 'tuijian', + 'update' => 'low', + default => 'normal', + }; + $layout = self::buildListRowsAndLimit($seed, $grid, $density); + + return [ + 'module' => $module, + 'item' => $item, + 'item_type' => $itemType, + 'item_variant' => $seed % 20, + 'shell' => $shell, + + // ✅ title 母型(A/B/C/F) + 'title' => self::pickTitleTpl($seed + 17, $module), + // ✅ 行为 class(冻结) + //'class' => implode(' ', self::buildListBehavior($seed, $module)), + 'class' => trim( + implode(' ', self::buildListBehavior($seed, $module)) + . ' ' . self::buildTitleClampClass($domainSeed, $domPrefix) + ), + + // ✅ 标题文案(冻结) + 'title_text' => self::buildTitleText($seed + 19, $module), + // ✅ 原有 grid 保留 + 'grid' => $grid, + + // ✅ 新增:列表布局锚点 + 'layout' => [ + 'rows' => $layout['rows'], + 'max_items' => $layout['max_items'], + 'max' => $layout['max'], + ], + ]; + } + + private static function pickTitleTpl(int $seed, string $module): string + { + $map = [ + 'news' => ['A', 'B', 'D'], + 'piaofang' => ['A', 'C', 'D', 'B'], + 'rank' => ['E', 'D'], + 'update' => ['A', 'C', 'D'], + 'tuijian' => ['A', 'B', 'C'], + 'category_list' => ['F', 'A'], + 'search_list' => ['A', 'B'], + ]; + + $list = $map[$module] ?? ['A']; + return $list[$seed % count($list)]; + } + + + /** + * 列表行为(Behavior) + */ + private static function buildListBehavior(int $seed, string $module): array + { + $behavior = []; + + switch ($module) { + case 'news': + $behavior[] = ($seed % 2 === 0) ? 'compact' : ''; + $behavior[] = ($seed % 2 === 1) ? 'collapsed' : ''; + break; + + case 'piaofang': + case 'update': + case 'tuijian': + $behavior[] = ($seed % 3 === 0) ? 'loose' : ''; + $behavior[] = ($seed % 2 === 0) ? 'emphasis' : ''; + break; + + case 'rank': + $behavior[] = 'top'; + $behavior[] = 'compact'; + break; + + default: + // category_list / search_list 等兜底 + $behavior[] = ($seed % 2 === 0) ? 'compact' : ''; + } + + return array_values(array_filter($behavior)); } /** - * HSL → HEX 转换(精准无误) + * 构建二级分类 Section 的最终配置 + * - 稳定 + * - 与域名 / 分类 / 顺序强绑定 + * - 模板层零逻辑 */ - private static function hslToHex($h, $s, $l) + public static function buildCategorySectionCfg( + array $cfg, + string $subCategoryEn, + int $order = 0 + ): array { + $seed = (int)($cfg['meta']['seed'] ?? 0) + + crc32($subCategoryEn) + + $order * 13; + + $pool = $cfg['pages']['category']['sections_pool'] ?? []; + + // 兜底(理论上不会走到,除非 cfg 被破坏) + if (empty($pool)) { + $pool = self::buildCategorySectionsPool($seed); + } + + $base = $pool[$seed % count($pool)]; + + $item = (string)($base['item'] ?? '01'); + $itemType = self::$ITEM_TYPE_MAP[$item] ?? 'poster'; + + $variantCount = (int)($cfg['components']['list']['item_variants'][$item] ?? 1); + $variant = $variantCount > 0 ? ($seed % $variantCount) : 0; + + $domainSeed = (int)($cfg['meta']['seed'] ?? 0); + $domPrefix = (string)($cfg['meta']['dom_prefix'] ?? ''); + $tc = self::buildTitleClampClass($domainSeed, $domPrefix); + + return [ + 'shell' => (string)$base['shell'], + 'item' => $item, + 'item_type' => $itemType, + 'item_variant' => $variant, + 'title' => (string)($base['title'] ?? 'F'), + // 'class' => (string)($base['class'] ?? ''), + 'class' => trim(((string)($base['class'] ?? '')) . ' ' . $tc), + 'grid' => $cfg['global']['grid'], + ]; + } + + + /* ====================================================== + * Helpers + * ====================================================== */ + private static function pickItemBySemantic(string $module, int $seed): string + { + $conf = self::$MODULE_ITEM_WEIGHT[$module] ?? null; + if (!$conf) { + return '01'; + } + if (($seed & 3) !== 0) { + return $conf['primary'][$seed % count($conf['primary'])]; + } + return $conf['fallback'][0]; + } + + private static function buildGridLayout(int $seed): array + { + return [ + 'cols_h5' => [1, 2, 3][$seed % 3], + 'cols_pc_sm' => self::$PC_COLS_MAP['sm'][$seed % 2], + 'cols_pc_md' => self::$PC_COLS_MAP['md'][$seed % 3], + 'cols_pc_lg' => self::$PC_COLS_MAP['lg'][$seed % 4], + ]; + } + /** + * 构建列表行数 + 数据量(基于列数 + 页面密度) + * 只用于 cfg 冻结阶段 + */ + private static function buildListRowsAndLimit( + int $seed, + array $cols, + string $density + ): array { + // 兜底 + if (!isset(self::$LIST_DENSITY_ROW_RANGE[$density])) { + $density = 'normal'; + } + + $range = self::$LIST_DENSITY_ROW_RANGE[$density]; + $rows = []; + + // 1️⃣ lg 先定(锚点) + [$lgMin, $lgMax] = $range['lg']; + $rows['lg'] = $lgMin + ($seed % ($lgMax - $lgMin + 1)); + + $maxItems = $cols['cols_pc_lg'] * $rows['lg']; + + // 2️⃣ md / sm / h5:在范围内随机,但不溢出 + foreach (['md', 'sm', 'h5'] as $bp) { + $colKey = match ($bp) { + 'md' => 'cols_pc_md', + 'sm' => 'cols_pc_sm', + 'h5' => 'cols_h5', + }; + + [$min, $max] = $range[$bp]; + $valid = []; + + for ($r = $min; $r <= $max; $r++) { + if ($cols[$colKey] * $r <= $maxItems) { + $valid[] = $r; + } + } + + $rows[$bp] = !empty($valid) + ? $valid[$seed % count($valid)] + : 1; + } + + return [ + 'rows' => $rows, + 'max_items' => $maxItems, + 'max' => [ + 'lg' => $cols['cols_pc_lg'] * $rows['lg'], + 'md' => $cols['cols_pc_md'] * $rows['md'], + 'sm' => $cols['cols_pc_sm'] * $rows['sm'], + 'h5' => $cols['cols_h5'] * $rows['h5'], + ], + ]; + } + + + private static function shuffleStable(array $arr, int $seed): array + { + $r = $arr; + $n = count($r); + $x = $seed; + for ($i = $n - 1; $i > 0; $i--) { + $x = ($x * 31 + 17) & 0x7fffffff; + $j = $x % ($i + 1); + [$r[$i], $r[$j]] = [$r[$j], $r[$i]]; + } + return $r; + } + + /* ====================================================== + * 主题色(沿用你原来的 buildTheme + 辅助函数) + * ====================================================== */ + private static function buildTheme(int $seed, string $mode, int $variant): array + { + $base = $seed + $variant * 97; + if ($mode === 'D') $mode = ['A', 'B', 'C'][$base % 3]; + + $h = $base % 360; + + switch ($mode) { + case 'A': + $primary = self::hslToHex($h, 78, 55); + $secondary = self::hslToHex($h + 30, 65, 50); + $accent = self::hslToHex($h + 310, 85, 56); + $bg = '#F8FAFC'; + $bgSoft = '#F1F5F9'; + break; + + case 'B': + $primary = self::hslToHex($h, 55, 60); + $secondary = self::hslToHex($h + 40, 40, 65); + $accent = self::hslToHex($h + 300, 45, 58); + $bg = '#FBFBFE'; + $bgSoft = '#F5F5FA'; + break; + + case 'C': + $primary = self::hslToHex($h, 80, 55); + $secondary = self::hslToHex($h + 200, 60, 50); + $accent = self::hslToHex($h + 40, 75, 60); + $bg = self::hslToHex($h + 190, 30, 12); + $bgSoft = self::hslToHex($h + 190, 25, 16); + break; + + default: + $primary = self::hslToHex($h, 55, 60); + $secondary = self::hslToHex($h + 40, 40, 65); + $accent = self::hslToHex($h + 300, 45, 58); + $bg = '#FBFBFE'; + $bgSoft = '#F5F5FA'; + } + + $dark = self::isDarkColor($bg); + + return [ + 'color_primary' => $primary, + 'color_secondary' => $secondary, + 'color_accent' => $accent, + 'color_bg' => $bg, + 'color_bg_soft' => $bgSoft, + 'color_text_primary' => $dark ? '#FFF' : '#111', + 'color_text_secondary' => $dark ? '#CCC' : '#666', + 'color_border' => $dark ? 'rgba(255,255,255,.1)' : 'rgba(0,0,0,.1)', + 'color_grad_start' => $primary, + 'color_grad_end' => $secondary, + 'shadow_color' => $dark ? 'rgba(0,0,0,.7)' : 'rgba(0,0,0,.12)', + 'is_dark_mode' => $dark, + ]; + } + + private static function hslToHex($h, $s, $l): string { $h /= 360; $s /= 100; $l /= 100; - $c = (1 - abs(2 * $l - 1)) * $s; $x = $c * (1 - abs(fmod($h * 6, 2) - 1)); $m = $l - $c / 2; - - if ($h < 1 / 6) { - [$r, $g, $b] = [$c, $x, 0]; - } elseif ($h < 2 / 6) { - [$r, $g, $b] = [$x, $c, 0]; - } elseif ($h < 3 / 6) { - [$r, $g, $b] = [0, $c, $x]; - } elseif ($h < 4 / 6) { - [$r, $g, $b] = [0, $x, $c]; - } elseif ($h < 5 / 6) { - [$r, $g, $b] = [$x, 0, $c]; - } else { - [$r, $g, $b] = [$c, 0, $x]; - } - + if ($h < 1 / 6) [$r, $g, $b] = [$c, $x, 0]; + elseif ($h < 2 / 6) [$r, $g, $b] = [$x, $c, 0]; + elseif ($h < 3 / 6) [$r, $g, $b] = [0, $c, $x]; + elseif ($h < 4 / 6) [$r, $g, $b] = [0, $x, $c]; + elseif ($h < 5 / 6) [$r, $g, $b] = [$x, 0, $c]; + else [$r, $g, $b] = [$c, 0, $x]; return sprintf( "#%02X%02X%02X", - round(($r + $m) * 255), - round(($g + $m) * 255), - round(($b + $m) * 255) + ($r + $m) * 255, + ($g + $m) * 255, + ($b + $m) * 255 ); } + private static function isDarkColor(string $hex): bool + { + $hex = ltrim($hex, '#'); + $r = hexdec(substr($hex, 0, 2)); + $g = hexdec(substr($hex, 2, 2)); + $b = hexdec(substr($hex, 4, 2)); + + $lum = (0.2126 * $r + 0.7152 * $g + 0.0722 * $b) / 255; + return $lum < 0.45; + } + + /* ====================================================== + * DB / JSON + * ====================================================== */ + private static function readDbConfig($domainRow): ?array + { + if (!$domainRow) return null; + $raw = is_array($domainRow) ? ($domainRow['t_cfg'] ?? null) : ($domainRow->t_cfg ?? null); + return $raw ? json_decode($raw, true) : null; + } + + private static function writeDbConfig($domainRow, array $cfg): void + { + if (!$domainRow || is_array($domainRow)) return; + $domainRow->t_cfg = json_encode($cfg, JSON_UNESCAPED_UNICODE); + $domainRow->save(); + } + + private static function readLocalJson(string $host): ?array + { + $f = root_path() . "storage/theme_cache/{$host}.json"; + return is_file($f) ? json_decode(file_get_contents($f), true) : null; + } + + private static function writeLocalJson(string $host, array $cfg): void + { + $dir = root_path() . "storage/theme_cache/"; + if (!is_dir($dir)) @mkdir($dir, 0755, true); + file_put_contents($dir . "{$host}.json", json_encode($cfg, JSON_UNESCAPED_UNICODE)); + } + + private static function buildTitleText(int $seed, string $module): array + { + $type = self::mapTitleType($module); + if (!isset(self::$TITLE_POOL[$type])) { + $type = 'news'; + } + $pool = self::$TITLE_POOL[$type]; + + return [ + 'primary' => self::pickStable($pool['primary'], $seed), + 'secondary' => self::pickStable($pool['secondary'], $seed >> 2), + 'seo' => self::pickStable($pool['seo'], $seed >> 4), + ]; + } + + /* ====================================================== + * Title 文案池 + * ====================================================== */ + private static function mapTitleType(string $module): string + { + // 你要求:category/search/tuijian 可复用 news 的文案池 + return match ($module) { + 'category_list', 'search_list', 'tuijian' => 'news', + default => $module, + }; + } + private static function pickStable(array $list, int $seed) + { + if (empty($list)) return null; + $seed = abs($seed); + return $list[$seed % count($list)]; + } + + /* ====================================================== + * 静态配置池(后期维护只改这里) + * ====================================================== */ + private static array $WIDTH_POOL = [960, 1080, 1200, 1280, 1360]; + + private static array $PC_COLS_MAP = [ + 'sm' => [3, 4], + 'md' => [4, 5, 6], + 'lg' => [6, 7, 8, 9], + ]; + + private static array $ITEM_SHELL_MAP = [ + // 'poster' => ['B', 'D'], + // 'media' => ['A', 'D'], + 'poster' => ['B'], + 'media' => ['A'], + 'rank' => ['C'], + ]; + + private static array $ITEM_TYPE_MAP = [ + '01' => 'poster', + '02' => 'media', + '03' => 'rank', + '04' => 'poster', + '05' => 'rank', + ]; + + private static array $MODULE_ITEM_WEIGHT = [ + 'news' => ['primary' => ['01', '04'], 'secondary' => ['02'], 'fallback' => ['01']], + 'piaofang' => ['primary' => ['01', '04'], 'secondary' => ['02'], 'fallback' => ['01']], + 'rank' => ['primary' => ['05'], 'secondary' => ['03'], 'fallback' => ['05']], + 'tuijian' => ['primary' => ['01'], 'secondary' => ['02'], 'fallback' => ['01']], + 'update' => ['primary' => ['01'], 'secondary' => ['02'], 'fallback' => ['01']], + 'category_list' => ['primary' => ['01'], 'secondary' => ['02'], 'fallback' => ['01']], + 'search_list' => ['primary' => ['02'], 'secondary' => ['01'], 'fallback' => ['02']], + ]; + + private static array $TITLE_POOL = [ + 'news' => [ + 'primary' => ['最近更新', '最新上线', '新片速递', '今日更新', '新内容推荐'], + 'secondary' => ['第一时间为你呈现', '每日持续更新', '不错过任何新片', '刚刚上线,抢先观看'], + 'seo' => ['最新电影电视剧更新', '今日最新影视资源', '新上线影视内容合集'], + ], + 'update' => [ + 'primary' => ['最近更新', '最新上线', '新片速递', '今日更新', '新内容推荐'], + 'secondary' => ['第一时间为你呈现', '每日持续更新', '不错过任何新片', '刚刚上线,抢先观看'], + 'seo' => ['最新电影电视剧更新', '今日最新影视资源', '新上线影视内容合集'], + ], + 'piaofang' => [ + 'primary' => ['热门推荐', '热播精选', '人气必看', '大家都在看'], + 'secondary' => ['近期热度持续攀升', '高点击率影片推荐', '口碑与热度兼具', '当前最受欢迎内容'], + 'seo' => ['热门影视作品推荐', '高人气电影电视剧合集', '热播影视排行榜推荐'], + ], + 'tuijian' => [ + 'primary' => ['热门推荐', '热播精选', '人气必看', '大家都在看'], + 'secondary' => ['近期热度持续攀升', '高点击率影片推荐', '口碑与热度兼具', '当前最受欢迎内容'], + 'seo' => ['热门影视作品推荐', '高人气电影电视剧合集', '热播影视排行榜推荐'], + ], + 'rank' => [ + 'primary' => ['排行榜', '热度榜单', '人气排行', '播放榜'], + 'secondary' => ['数据实时更新', '热度排序参考', '近期播放趋势', '高人气作品排行'], + 'seo' => ['影视排行榜前十名', '热门电影电视剧排行', '高播放量影视榜单'], + ], + ]; + // SiteStyle.php + + protected static $LIST_DENSITY_ROW_RANGE = [ + 'low' => [ + 'lg' => [2, 3], + 'md' => [2, 3], + 'sm' => [2, 3], + 'h5' => [2, 4], + ], + 'normal' => [ + 'lg' => [2, 4], + 'md' => [2, 4], + 'sm' => [2, 4], + 'h5' => [2, 4], + ], + 'high' => [ + 'lg' => [4, 8], + 'md' => [4, 8], + 'sm' => [4, 8], + 'h5' => [4, 8], + ], + ]; + private static array $RANK_HOME_MODULES = [ + 'rank_daily' => ['title' => '日排行榜', 'sort_type' => 'daily'], + 'rank_weekly' => ['title' => '周排行榜', 'sort_type' => 'weekly'], + 'rank_monthly' => ['title' => '月排行榜', 'sort_type' => 'monthly'], + 'rank_total' => ['title' => '总排行榜', 'sort_type' => 'total'], + ]; } diff --git a/code/app/common/helper/style/BreadcrumbRule.php b/code/app/common/helper/style/BreadcrumbRule.php new file mode 100644 index 0000000..e69de29 diff --git a/code/app/common/helper/style/DetailMainRule.php b/code/app/common/helper/style/DetailMainRule.php new file mode 100644 index 0000000..e62f4cc --- /dev/null +++ b/code/app/common/helper/style/DetailMainRule.php @@ -0,0 +1,154 @@ + [ + 'title' => self::compose(self::titleAtoms(), $seed + 11), + 'cover' => $cover, + 'meta' => self::compose(self::metaAtoms(), $seed + 37), + 'desc' => self::compose(self::descAtoms(), $seed + 51), + 'action' => self::compose(self::actionAtoms(), $seed + 67), + ], + 'order' => self::pickOrder($seed), + ]; + } + + /* ========= 原子池 ========= */ + + public static function titleAtoms(): array + { + return [ + 'tag' => ['h1', 'h2'], + 'wrap' => ['none', 'header', 'div'], + 'show_year' => [true, false], + 'emphasis' => ['none', 'strong', 'em'], + ]; + } + + public static function metaAtoms(): array +{ + return [ + 'layout' => ['ul', 'dl', 'inline'], + 'fields' => [ + ['category', 'year', 'area'], + ['year', 'category'], + ['area', 'year'], + ], + 'separator' => [' / ', ' · '], + ]; +} + +public static function descAtoms(): array +{ + return [ + 'container' => ['p', 'div', 'section'], + 'mode' => ['full', 'short'], + 'expandable' => [true, false], + ]; +} + +public static function actionAtoms(): array +{ + return [ + 'type' => ['link', 'button', 'nav'], + 'show_hint' => [true, false], + 'text' => ['立即播放', '在线观看', '免费播放'], + ]; +} + + // Cover Block 原子池 + public static function coverAtoms(): array + { + return [ + // 外层容器结构 + 'container' => [ + 'div.dm-cover', + 'figure.dm-cover', + 'div.dm-cover-bg', + 'section.dm-cover', + ], + + // 图片表现形式 + 'image' => [ + 'img', // + 'bg', // background-image + ], + + // 附加元素 + 'extra' => [ + '', + '{remarks}', + '
{remarks}
', + ], + + // 比例控制(CSS class) + 'ratio' => [ + 'r23', // 2:3 + 'r34', // 3:4 + 'r11', // 1:1 + ], + ]; + } + + /* ========= 组合器 ========= */ + + protected static function compose(array $atoms, int $seed): array + { + $pick = function (?array $list, int $shift, $default = null) use ($seed) { + if (empty($list)) { + return $default; + } + return $list[($seed >> $shift) % count($list)]; + }; + + return [ + 'container' => $pick($atoms['container'] ?? null, 0), + 'image' => $pick($atoms['image'] ?? null, 2, 'img'), + 'extra' => $pick($atoms['extra'] ?? null, 4, ''), + 'ratio' => $pick($atoms['ratio'] ?? null, 6, ''), + 'fields' => $pick($atoms['fields'] ?? null, 8, []), + 'mode' => $pick($atoms['mode'] ?? null, 10, 'raw'), + 'trigger' => $pick($atoms['trigger'] ?? null, 12), + 'text' => $pick($atoms['text'] ?? null, 14, ''), + 'separator' => $pick($atoms['separator'] ?? null, 16, ' '), + 'expand' => $pick($atoms['expand'] ?? null, 18, false), + ]; + } + + + protected static function pickOrder(int $seed): array + { + $orders = [ + ['title', 'cover', 'meta', 'desc', 'action'], + ['cover', 'title', 'meta', 'desc'], + ['title', 'meta', 'desc', 'cover', 'action'], + ['meta', 'title', 'cover', 'desc'], + ]; + return $orders[$seed % count($orders)]; + } + + protected static function fillExtra(string $extra, array $video): string + { + if ($extra === '') { + return ''; + } + + return str_replace( + ['{remarks}', '{year}', '{name}'], + [ + $video['v_remarks'] ?? '', + $video['v_year'] ?? '', + $video['v_name'] ?? '', + ], + $extra + ); + } +} diff --git a/code/app/common/helper/style/ListRule.php b/code/app/common/helper/style/ListRule.php new file mode 100644 index 0000000..e69de29 diff --git a/code/app/common/helper/style/PlayLineRule.php b/code/app/common/helper/style/PlayLineRule.php new file mode 100644 index 0000000..e69de29 diff --git a/code/app/common/helper/style/SeoWordsRule.php b/code/app/common/helper/style/SeoWordsRule.php new file mode 100644 index 0000000..e69de29 diff --git a/code/app/home/view/videoDadi/video/getVideoPlayUrl.html b/code/app/home/view/videoDadi/video/getVideoPlayUrl.html index 50528dc..5764a6f 100644 --- a/code/app/home/view/videoDadi/video/getVideoPlayUrl.html +++ b/code/app/home/view/videoDadi/video/getVideoPlayUrl.html @@ -159,7 +159,6 @@ href='https://{$DomainModel->d_domain}{site:vpurl v_id="$arrVideo.v_id" v_py="$a
-
diff --git a/code/app/home/view/videoGpt1/base.html b/code/app/home/view/videoGpt1/base.html index 795e083..3794831 100644 --- a/code/app/home/view/videoGpt1/base.html +++ b/code/app/home/view/videoGpt1/base.html @@ -1,5 +1,6 @@ + {block name="get-data"}{/block} @@ -7,21 +8,32 @@ {block name="title"}{/block} - - - + {// 动态主题颜色 } - - - - + + {// 每个域名专属 CSS(合并 + 前缀替换后) } + {block name="head"}{/block} {block name="head-css"}{/block} @@ -42,59 +54,32 @@ })(); +{block name="strPageCode"} + +{/block} + + {// header} + {include file="$TpTpl.head" /} - +
+ {block name="main"}{/block} +
- - -
- {block name="main"} - {/block} -
- - - - -
tpl-{$TpStyle.static_hash}
- - -{// 全局统计 } + {// 全局统计 } {site:cfg code="PUBLIC_TONGJI_CODE" encode="false"/} -{// 站点统计 } -{$DomainModel->d_statis|raw} + {// 站点统计 } + {$DomainModel->d_statis|raw} + {block name="footer-js"}{/block} + - + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/foot_a.html b/code/app/home/view/videoGpt1/footer/foot_a.html new file mode 100644 index 0000000..f97df84 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/foot_a.html @@ -0,0 +1,39 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/foot_b.html b/code/app/home/view/videoGpt1/footer/foot_b.html new file mode 100644 index 0000000..ae5115d --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/foot_b.html @@ -0,0 +1,44 @@ + diff --git a/code/app/home/view/videoGpt1/footer/foot_c.html b/code/app/home/view/videoGpt1/footer/foot_c.html new file mode 100644 index 0000000..d6c4cf9 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/foot_c.html @@ -0,0 +1,29 @@ + diff --git a/code/app/home/view/videoGpt1/footer/foot_d.html b/code/app/home/view/videoGpt1/footer/foot_d.html new file mode 100644 index 0000000..71a0ff5 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/foot_d.html @@ -0,0 +1,20 @@ + diff --git a/code/app/home/view/videoGpt1/footer/foot_e.html b/code/app/home/view/videoGpt1/footer/foot_e.html new file mode 100644 index 0000000..810da7c --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/foot_e.html @@ -0,0 +1,24 @@ + diff --git a/code/app/home/view/videoGpt1/footer/footer_01.html b/code/app/home/view/videoGpt1/footer/footer_01.html new file mode 100644 index 0000000..d236df4 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_01.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_02.html b/code/app/home/view/videoGpt1/footer/footer_02.html new file mode 100644 index 0000000..9d3c2cb --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_02.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_03.html b/code/app/home/view/videoGpt1/footer/footer_03.html new file mode 100644 index 0000000..41ebfe3 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_03.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_04.html b/code/app/home/view/videoGpt1/footer/footer_04.html new file mode 100644 index 0000000..e062c79 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_04.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_05.html b/code/app/home/view/videoGpt1/footer/footer_05.html new file mode 100644 index 0000000..840e49e --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_05.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_06.html b/code/app/home/view/videoGpt1/footer/footer_06.html new file mode 100644 index 0000000..ddc74e4 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_06.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_07.html b/code/app/home/view/videoGpt1/footer/footer_07.html new file mode 100644 index 0000000..4df011f --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_07.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_08.html b/code/app/home/view/videoGpt1/footer/footer_08.html new file mode 100644 index 0000000..3bc0b27 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_08.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_09.html b/code/app/home/view/videoGpt1/footer/footer_09.html new file mode 100644 index 0000000..b406032 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_09.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_10.html b/code/app/home/view/videoGpt1/footer/footer_10.html new file mode 100644 index 0000000..b385249 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_10.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_100.html b/code/app/home/view/videoGpt1/footer/footer_100.html new file mode 100644 index 0000000..8f846f0 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_100.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_11.html b/code/app/home/view/videoGpt1/footer/footer_11.html new file mode 100644 index 0000000..0c9f444 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_11.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_12.html b/code/app/home/view/videoGpt1/footer/footer_12.html new file mode 100644 index 0000000..1efc4cd --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_12.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_13.html b/code/app/home/view/videoGpt1/footer/footer_13.html new file mode 100644 index 0000000..0b674b5 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_13.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_14.html b/code/app/home/view/videoGpt1/footer/footer_14.html new file mode 100644 index 0000000..f2e4d49 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_14.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_15.html b/code/app/home/view/videoGpt1/footer/footer_15.html new file mode 100644 index 0000000..2599894 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_15.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_16.html b/code/app/home/view/videoGpt1/footer/footer_16.html new file mode 100644 index 0000000..0a917e6 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_16.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_17.html b/code/app/home/view/videoGpt1/footer/footer_17.html new file mode 100644 index 0000000..3513ee0 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_17.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_18.html b/code/app/home/view/videoGpt1/footer/footer_18.html new file mode 100644 index 0000000..7d69499 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_18.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_19.html b/code/app/home/view/videoGpt1/footer/footer_19.html new file mode 100644 index 0000000..6038329 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_19.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_20.html b/code/app/home/view/videoGpt1/footer/footer_20.html new file mode 100644 index 0000000..6577a47 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_20.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_21.html b/code/app/home/view/videoGpt1/footer/footer_21.html new file mode 100644 index 0000000..756efb1 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_21.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_22.html b/code/app/home/view/videoGpt1/footer/footer_22.html new file mode 100644 index 0000000..8c8d901 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_22.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_23.html b/code/app/home/view/videoGpt1/footer/footer_23.html new file mode 100644 index 0000000..6017315 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_23.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_24.html b/code/app/home/view/videoGpt1/footer/footer_24.html new file mode 100644 index 0000000..baa1391 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_24.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_25.html b/code/app/home/view/videoGpt1/footer/footer_25.html new file mode 100644 index 0000000..53b74d1 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_25.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_26.html b/code/app/home/view/videoGpt1/footer/footer_26.html new file mode 100644 index 0000000..ed31df2 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_26.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_27.html b/code/app/home/view/videoGpt1/footer/footer_27.html new file mode 100644 index 0000000..82f0e17 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_27.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_28.html b/code/app/home/view/videoGpt1/footer/footer_28.html new file mode 100644 index 0000000..e48da08 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_28.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_29.html b/code/app/home/view/videoGpt1/footer/footer_29.html new file mode 100644 index 0000000..222311e --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_29.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_30.html b/code/app/home/view/videoGpt1/footer/footer_30.html new file mode 100644 index 0000000..295309b --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_30.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_31.html b/code/app/home/view/videoGpt1/footer/footer_31.html new file mode 100644 index 0000000..581c08b --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_31.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_32.html b/code/app/home/view/videoGpt1/footer/footer_32.html new file mode 100644 index 0000000..438a8c5 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_32.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_33.html b/code/app/home/view/videoGpt1/footer/footer_33.html new file mode 100644 index 0000000..13b0445 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_33.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_34.html b/code/app/home/view/videoGpt1/footer/footer_34.html new file mode 100644 index 0000000..ab6fd90 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_34.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_35.html b/code/app/home/view/videoGpt1/footer/footer_35.html new file mode 100644 index 0000000..cc3c792 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_35.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_36.html b/code/app/home/view/videoGpt1/footer/footer_36.html new file mode 100644 index 0000000..c608549 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_36.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_37.html b/code/app/home/view/videoGpt1/footer/footer_37.html new file mode 100644 index 0000000..b2c07f0 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_37.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_38.html b/code/app/home/view/videoGpt1/footer/footer_38.html new file mode 100644 index 0000000..3cf6902 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_38.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_39.html b/code/app/home/view/videoGpt1/footer/footer_39.html new file mode 100644 index 0000000..a9fac6b --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_39.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_40.html b/code/app/home/view/videoGpt1/footer/footer_40.html new file mode 100644 index 0000000..fe08407 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_40.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_41.html b/code/app/home/view/videoGpt1/footer/footer_41.html new file mode 100644 index 0000000..ddd4124 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_41.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_42.html b/code/app/home/view/videoGpt1/footer/footer_42.html new file mode 100644 index 0000000..3344809 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_42.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_43.html b/code/app/home/view/videoGpt1/footer/footer_43.html new file mode 100644 index 0000000..6e94130 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_43.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_44.html b/code/app/home/view/videoGpt1/footer/footer_44.html new file mode 100644 index 0000000..bca76f5 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_44.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_45.html b/code/app/home/view/videoGpt1/footer/footer_45.html new file mode 100644 index 0000000..0c19df4 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_45.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_46.html b/code/app/home/view/videoGpt1/footer/footer_46.html new file mode 100644 index 0000000..54bc353 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_46.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_47.html b/code/app/home/view/videoGpt1/footer/footer_47.html new file mode 100644 index 0000000..946de01 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_47.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_48.html b/code/app/home/view/videoGpt1/footer/footer_48.html new file mode 100644 index 0000000..bddc407 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_48.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_49.html b/code/app/home/view/videoGpt1/footer/footer_49.html new file mode 100644 index 0000000..0f7342a --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_49.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_50.html b/code/app/home/view/videoGpt1/footer/footer_50.html new file mode 100644 index 0000000..ca812ae --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_50.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_51.html b/code/app/home/view/videoGpt1/footer/footer_51.html new file mode 100644 index 0000000..c729b8d --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_51.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_52.html b/code/app/home/view/videoGpt1/footer/footer_52.html new file mode 100644 index 0000000..640d17a --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_52.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_53.html b/code/app/home/view/videoGpt1/footer/footer_53.html new file mode 100644 index 0000000..ac36e23 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_53.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_54.html b/code/app/home/view/videoGpt1/footer/footer_54.html new file mode 100644 index 0000000..2da3900 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_54.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_55.html b/code/app/home/view/videoGpt1/footer/footer_55.html new file mode 100644 index 0000000..19631f5 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_55.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_56.html b/code/app/home/view/videoGpt1/footer/footer_56.html new file mode 100644 index 0000000..e7a0561 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_56.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_57.html b/code/app/home/view/videoGpt1/footer/footer_57.html new file mode 100644 index 0000000..ebcb5da --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_57.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_58.html b/code/app/home/view/videoGpt1/footer/footer_58.html new file mode 100644 index 0000000..86a02dc --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_58.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_59.html b/code/app/home/view/videoGpt1/footer/footer_59.html new file mode 100644 index 0000000..6c4ca19 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_59.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_60.html b/code/app/home/view/videoGpt1/footer/footer_60.html new file mode 100644 index 0000000..05162fe --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_60.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_61.html b/code/app/home/view/videoGpt1/footer/footer_61.html new file mode 100644 index 0000000..47c5627 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_61.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_62.html b/code/app/home/view/videoGpt1/footer/footer_62.html new file mode 100644 index 0000000..643a982 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_62.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_63.html b/code/app/home/view/videoGpt1/footer/footer_63.html new file mode 100644 index 0000000..5425eed --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_63.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_64.html b/code/app/home/view/videoGpt1/footer/footer_64.html new file mode 100644 index 0000000..2a5e007 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_64.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_65.html b/code/app/home/view/videoGpt1/footer/footer_65.html new file mode 100644 index 0000000..99e42df --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_65.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_66.html b/code/app/home/view/videoGpt1/footer/footer_66.html new file mode 100644 index 0000000..d3dc63e --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_66.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_67.html b/code/app/home/view/videoGpt1/footer/footer_67.html new file mode 100644 index 0000000..ff90103 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_67.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_68.html b/code/app/home/view/videoGpt1/footer/footer_68.html new file mode 100644 index 0000000..3313189 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_68.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_69.html b/code/app/home/view/videoGpt1/footer/footer_69.html new file mode 100644 index 0000000..c34c5ed --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_69.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_70.html b/code/app/home/view/videoGpt1/footer/footer_70.html new file mode 100644 index 0000000..1da31a1 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_70.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_71.html b/code/app/home/view/videoGpt1/footer/footer_71.html new file mode 100644 index 0000000..f612dfd --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_71.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_72.html b/code/app/home/view/videoGpt1/footer/footer_72.html new file mode 100644 index 0000000..cfb7184 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_72.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_73.html b/code/app/home/view/videoGpt1/footer/footer_73.html new file mode 100644 index 0000000..8556145 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_73.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_74.html b/code/app/home/view/videoGpt1/footer/footer_74.html new file mode 100644 index 0000000..2c1d8d2 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_74.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_75.html b/code/app/home/view/videoGpt1/footer/footer_75.html new file mode 100644 index 0000000..f67a565 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_75.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_76.html b/code/app/home/view/videoGpt1/footer/footer_76.html new file mode 100644 index 0000000..ea1402b --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_76.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_77.html b/code/app/home/view/videoGpt1/footer/footer_77.html new file mode 100644 index 0000000..da161ea --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_77.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_78.html b/code/app/home/view/videoGpt1/footer/footer_78.html new file mode 100644 index 0000000..20a4faa --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_78.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_79.html b/code/app/home/view/videoGpt1/footer/footer_79.html new file mode 100644 index 0000000..4bb277c --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_79.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_80.html b/code/app/home/view/videoGpt1/footer/footer_80.html new file mode 100644 index 0000000..21d510f --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_80.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_81.html b/code/app/home/view/videoGpt1/footer/footer_81.html new file mode 100644 index 0000000..715556c --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_81.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_82.html b/code/app/home/view/videoGpt1/footer/footer_82.html new file mode 100644 index 0000000..7f0237e --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_82.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_83.html b/code/app/home/view/videoGpt1/footer/footer_83.html new file mode 100644 index 0000000..8bdcacc --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_83.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_84.html b/code/app/home/view/videoGpt1/footer/footer_84.html new file mode 100644 index 0000000..ca2f7ae --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_84.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_85.html b/code/app/home/view/videoGpt1/footer/footer_85.html new file mode 100644 index 0000000..057dfaf --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_85.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_86.html b/code/app/home/view/videoGpt1/footer/footer_86.html new file mode 100644 index 0000000..3b32fcc --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_86.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_87.html b/code/app/home/view/videoGpt1/footer/footer_87.html new file mode 100644 index 0000000..f1ae938 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_87.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_88.html b/code/app/home/view/videoGpt1/footer/footer_88.html new file mode 100644 index 0000000..b8f3373 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_88.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_89.html b/code/app/home/view/videoGpt1/footer/footer_89.html new file mode 100644 index 0000000..9b2f45e --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_89.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_90.html b/code/app/home/view/videoGpt1/footer/footer_90.html new file mode 100644 index 0000000..dc16172 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_90.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_91.html b/code/app/home/view/videoGpt1/footer/footer_91.html new file mode 100644 index 0000000..9da41d0 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_91.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_92.html b/code/app/home/view/videoGpt1/footer/footer_92.html new file mode 100644 index 0000000..16f98de --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_92.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_93.html b/code/app/home/view/videoGpt1/footer/footer_93.html new file mode 100644 index 0000000..1870d59 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_93.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_94.html b/code/app/home/view/videoGpt1/footer/footer_94.html new file mode 100644 index 0000000..7b52538 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_94.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_95.html b/code/app/home/view/videoGpt1/footer/footer_95.html new file mode 100644 index 0000000..5f05642 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_95.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_96.html b/code/app/home/view/videoGpt1/footer/footer_96.html new file mode 100644 index 0000000..50c8367 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_96.html @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_97.html b/code/app/home/view/videoGpt1/footer/footer_97.html new file mode 100644 index 0000000..1e08c01 --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_97.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_98.html b/code/app/home/view/videoGpt1/footer/footer_98.html new file mode 100644 index 0000000..037523f --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_98.html @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/footer/footer_99.html b/code/app/home/view/videoGpt1/footer/footer_99.html new file mode 100644 index 0000000..55da91c --- /dev/null +++ b/code/app/home/view/videoGpt1/footer/footer_99.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_01.html b/code/app/home/view/videoGpt1/head/head_01.html new file mode 100644 index 0000000..fd6065b --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_01.html @@ -0,0 +1,37 @@ +
+
+ + + + +
+ +
+
+
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_02.html b/code/app/home/view/videoGpt1/head/head_02.html new file mode 100644 index 0000000..07a4341 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_02.html @@ -0,0 +1,23 @@ +
+
+ 高清流畅 · 多端自适应 · 实时更新 +
+
+ + +
+
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_03.html b/code/app/home/view/videoGpt1/head/head_03.html new file mode 100644 index 0000000..a7490ad --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_03.html @@ -0,0 +1,31 @@ +
+
+ + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_04.html b/code/app/home/view/videoGpt1/head/head_04.html new file mode 100644 index 0000000..68efcac --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_04.html @@ -0,0 +1,15 @@ +
+ +
+ + {video:categorytype category_type="ONE" d_key="key" d_val="val"} + + {$val.v_category} + + {/video:categorytype} + +
+
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_05.html b/code/app/home/view/videoGpt1/head/head_05.html new file mode 100644 index 0000000..3e72db8 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_05.html @@ -0,0 +1,29 @@ +
+
+ 提示:本站不存储视频文件,资源均来自互联网公开分享。 +
+
+ +
+ +
+
+
+ +
+
+
+
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_06.html b/code/app/home/view/videoGpt1/head/head_06.html new file mode 100644 index 0000000..10c906f --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_06.html @@ -0,0 +1,29 @@ +
+ +
+ 今日热片已更新,快来看看 +
+ +
+ + + + + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_07.html b/code/app/home/view/videoGpt1/head/head_07.html new file mode 100644 index 0000000..ffef4de --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_07.html @@ -0,0 +1,32 @@ +
+ + + +
+ + + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_08.html b/code/app/home/view/videoGpt1/head/head_08.html new file mode 100644 index 0000000..b351155 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_08.html @@ -0,0 +1,13 @@ +
+ + + +
+ +
+ +
diff --git a/code/app/home/view/videoGpt1/head/head_09.html b/code/app/home/view/videoGpt1/head/head_09.html new file mode 100644 index 0000000..3b5c859 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_09.html @@ -0,0 +1,27 @@ +
+ +
+ + + +
+ + + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_10.html b/code/app/home/view/videoGpt1/head/head_10.html new file mode 100644 index 0000000..fdf9aad --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_10.html @@ -0,0 +1,32 @@ +
+ +
+ + + +
+ +
+ +
+ + + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_100.html b/code/app/home/view/videoGpt1/head/head_100.html new file mode 100644 index 0000000..d5027ff --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_100.html @@ -0,0 +1,27 @@ +
+
+ {$DomainModel->d_name} + + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_11.html b/code/app/home/view/videoGpt1/head/head_11.html new file mode 100644 index 0000000..353dfa6 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_11.html @@ -0,0 +1,17 @@ +
+ + + + + +
diff --git a/code/app/home/view/videoGpt1/head/head_12.html b/code/app/home/view/videoGpt1/head/head_12.html new file mode 100644 index 0000000..6255ccc --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_12.html @@ -0,0 +1,19 @@ +
+ +
+ +
+ + + +
+ +
diff --git a/code/app/home/view/videoGpt1/head/head_13.html b/code/app/home/view/videoGpt1/head/head_13.html new file mode 100644 index 0000000..7011125 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_13.html @@ -0,0 +1,18 @@ +
+ +
+ + + +
+ +
+ +
+ +
diff --git a/code/app/home/view/videoGpt1/head/head_14.html b/code/app/home/view/videoGpt1/head/head_14.html new file mode 100644 index 0000000..ab9385c --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_14.html @@ -0,0 +1,11 @@ +
+ +
+ + + +
+ +
diff --git a/code/app/home/view/videoGpt1/head/head_15.html b/code/app/home/view/videoGpt1/head/head_15.html new file mode 100644 index 0000000..42f44e1 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_15.html @@ -0,0 +1,22 @@ +
+ + + + + + + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_16.html b/code/app/home/view/videoGpt1/head/head_16.html new file mode 100644 index 0000000..a168312 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_16.html @@ -0,0 +1,9 @@ +
+ + + + + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_17.html b/code/app/home/view/videoGpt1/head/head_17.html new file mode 100644 index 0000000..7039031 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_17.html @@ -0,0 +1,12 @@ +
+ +
+ + + +
+ +
diff --git a/code/app/home/view/videoGpt1/head/head_18.html b/code/app/home/view/videoGpt1/head/head_18.html new file mode 100644 index 0000000..03b101d --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_18.html @@ -0,0 +1,20 @@ +
+ +
+ + + +
+ +
+ +
+ +
diff --git a/code/app/home/view/videoGpt1/head/head_19.html b/code/app/home/view/videoGpt1/head/head_19.html new file mode 100644 index 0000000..3232021 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_19.html @@ -0,0 +1,9 @@ +
+ + + + + +
diff --git a/code/app/home/view/videoGpt1/head/head_20.html b/code/app/home/view/videoGpt1/head/head_20.html new file mode 100644 index 0000000..f6d4318 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_20.html @@ -0,0 +1,9 @@ +
+ + + + + +
diff --git a/code/app/home/view/videoGpt1/head/head_21.html b/code/app/home/view/videoGpt1/head/head_21.html new file mode 100644 index 0000000..122e1a3 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_21.html @@ -0,0 +1,31 @@ +
+ +
+ + + +
+ + + +
diff --git a/code/app/home/view/videoGpt1/head/head_22.html b/code/app/home/view/videoGpt1/head/head_22.html new file mode 100644 index 0000000..96ceb50 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_22.html @@ -0,0 +1,41 @@ +
+ +
+ + + +
+ +
+ {if $DomainModel->info_id > 0} + + 首页 + + + 影视首页 + + {else} + + 首页 + + {/if} + + {video:categorytype category_type="ONE" d_key="key" d_val="val"} + + {$val.v_category} + + {/video:categorytype} +
+ +
diff --git a/code/app/home/view/videoGpt1/head/head_23.html b/code/app/home/view/videoGpt1/head/head_23.html new file mode 100644 index 0000000..7028309 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_23.html @@ -0,0 +1,30 @@ +
+ +
+

+ {$DomainModel->d_name} +

+

+ 每天发现一点新片子 +

+
+ + + +
+ {if $DomainModel->info_id > 0} + 首页 + 影视首页 + {else} + 首页 + {/if} + {video:categorytype category_type="ONE" d_key="key" d_val="val"} + {$val.v_category} + {/video:categorytype} +
+ +
diff --git a/code/app/home/view/videoGpt1/head/head_24.html b/code/app/home/view/videoGpt1/head/head_24.html new file mode 100644 index 0000000..ff0d546 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_24.html @@ -0,0 +1,40 @@ +
+ +
+ + +
+ + +
+
+ + + +
diff --git a/code/app/home/view/videoGpt1/head/head_25.html b/code/app/home/view/videoGpt1/head/head_25.html new file mode 100644 index 0000000..1bc6291 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_25.html @@ -0,0 +1,29 @@ +
+ +
+ 发现新片,就在 {$DomainModel->d_name} +
+ +
+ + +
+ +
+ {if $DomainModel->info_id > 0} + 首页 + 影视首页 + {else} + 首页 + {/if} + {video:categorytype category_type="ONE" d_key="key" d_val="val"} + {$val.v_category} + {/video:categorytype} +
+ +
diff --git a/code/app/home/view/videoGpt1/head/head_26.html b/code/app/home/view/videoGpt1/head/head_26.html new file mode 100644 index 0000000..804c25b --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_26.html @@ -0,0 +1,32 @@ +
+ +
+ +

+ 全网影视一站式聚合 +

+
+ + + +
+ {if $DomainModel->info_id > 0} + 首页 + 影视首页 + {else} + 首页 + {/if} + + {video:categorytype category_type="ONE" d_key="key" d_val="val"} + + {$val.v_category} + + {/video:categorytype} +
+ +
diff --git a/code/app/home/view/videoGpt1/head/head_27.html b/code/app/home/view/videoGpt1/head/head_27.html new file mode 100644 index 0000000..e15435b --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_27.html @@ -0,0 +1,27 @@ +
+ +
+ + +
+ + + +
diff --git a/code/app/home/view/videoGpt1/head/head_28.html b/code/app/home/view/videoGpt1/head/head_28.html new file mode 100644 index 0000000..135579b --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_28.html @@ -0,0 +1,35 @@ +
+ +
+ +
+ + + +
+ {if $DomainModel->info_id > 0} + + + {else} + + {/if} + + {video:categorytype category_type="ONE" d_key="key" d_val="val"} + + {/video:categorytype} +
+ +
diff --git a/code/app/home/view/videoGpt1/head/head_29.html b/code/app/home/view/videoGpt1/head/head_29.html new file mode 100644 index 0000000..eebabe0 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_29.html @@ -0,0 +1,31 @@ +
+ +
+ + + +
+ + + +
diff --git a/code/app/home/view/videoGpt1/head/head_30.html b/code/app/home/view/videoGpt1/head/head_30.html new file mode 100644 index 0000000..96e083d --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_30.html @@ -0,0 +1,29 @@ +
+ +
+ + + +
+ +
+
+ {if $DomainModel->info_id > 0} + 首页 + 影视首页 + {else} + 首页 + {/if} + + {video:categorytype category_type="ONE" d_key="key" d_val="val"} + {$val.v_category} + {/video:categorytype} +
+
+ +
diff --git a/code/app/home/view/videoGpt1/head/head_31.html b/code/app/home/view/videoGpt1/head/head_31.html new file mode 100644 index 0000000..0fdaf78 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_31.html @@ -0,0 +1,34 @@ +
+
+
+ + 每日更新 +
+ + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_32.html b/code/app/home/view/videoGpt1/head/head_32.html new file mode 100644 index 0000000..1ead983 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_32.html @@ -0,0 +1,33 @@ +
+
+
+ {$DomainModel->d_name} + 正版片源 · 极速播放 +
+ +
+ + + + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_33.html b/code/app/home/view/videoGpt1/head/head_33.html new file mode 100644 index 0000000..8359bbf --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_33.html @@ -0,0 +1,31 @@ +
+
+ + {$DomainModel->d_name} + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_34.html b/code/app/home/view/videoGpt1/head/head_34.html new file mode 100644 index 0000000..6141c59 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_34.html @@ -0,0 +1,30 @@ +
+
+ 精选影视 · 极速秒播 + 今日已更新多部影片 +
+
+ + + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_35.html b/code/app/home/view/videoGpt1/head/head_35.html new file mode 100644 index 0000000..9abe6b7 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_35.html @@ -0,0 +1,26 @@ +
+ + + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_36.html b/code/app/home/view/videoGpt1/head/head_36.html new file mode 100644 index 0000000..149c698 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_36.html @@ -0,0 +1,34 @@ +
+
+
+ + 每日更新 +
+ + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_37.html b/code/app/home/view/videoGpt1/head/head_37.html new file mode 100644 index 0000000..480cd31 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_37.html @@ -0,0 +1,33 @@ +
+
+
+ {$DomainModel->d_name} + 正版片源 · 极速播放 +
+ +
+ + + + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_38.html b/code/app/home/view/videoGpt1/head/head_38.html new file mode 100644 index 0000000..bb2cd6b --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_38.html @@ -0,0 +1,31 @@ +
+
+ + {$DomainModel->d_name} + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_39.html b/code/app/home/view/videoGpt1/head/head_39.html new file mode 100644 index 0000000..dee4610 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_39.html @@ -0,0 +1,30 @@ +
+
+ 精选影视 · 极速秒播 + 今日已更新多部影片 +
+
+ + + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_40.html b/code/app/home/view/videoGpt1/head/head_40.html new file mode 100644 index 0000000..6323d8b --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_40.html @@ -0,0 +1,26 @@ +
+ + + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_41.html b/code/app/home/view/videoGpt1/head/head_41.html new file mode 100644 index 0000000..db1ad94 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_41.html @@ -0,0 +1,34 @@ +
+
+
+ + 每日更新 +
+ + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_42.html b/code/app/home/view/videoGpt1/head/head_42.html new file mode 100644 index 0000000..c9bb3dc --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_42.html @@ -0,0 +1,33 @@ +
+
+
+ {$DomainModel->d_name} + 正版片源 · 极速播放 +
+ +
+ + + + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_43.html b/code/app/home/view/videoGpt1/head/head_43.html new file mode 100644 index 0000000..48df7f0 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_43.html @@ -0,0 +1,31 @@ +
+
+ + {$DomainModel->d_name} + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_44.html b/code/app/home/view/videoGpt1/head/head_44.html new file mode 100644 index 0000000..3e80fe1 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_44.html @@ -0,0 +1,28 @@ +
+
+ 精选影视 · 极速秒播 + 今日已更新多部影片 +
+
+ + + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_45.html b/code/app/home/view/videoGpt1/head/head_45.html new file mode 100644 index 0000000..7d59d18 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_45.html @@ -0,0 +1,26 @@ +
+ + + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_46.html b/code/app/home/view/videoGpt1/head/head_46.html new file mode 100644 index 0000000..88e2e8a --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_46.html @@ -0,0 +1,32 @@ +
+
+
+ + 每日更新 +
+ + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_47.html b/code/app/home/view/videoGpt1/head/head_47.html new file mode 100644 index 0000000..8c1c192 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_47.html @@ -0,0 +1,33 @@ +
+
+
+ {$DomainModel->d_name} + 正版片源 · 极速播放 +
+ +
+ + + + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_48.html b/code/app/home/view/videoGpt1/head/head_48.html new file mode 100644 index 0000000..2c5d8d8 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_48.html @@ -0,0 +1,28 @@ +
+
+ {$DomainModel->d_name} + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_49.html b/code/app/home/view/videoGpt1/head/head_49.html new file mode 100644 index 0000000..1ea4387 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_49.html @@ -0,0 +1,28 @@ +
+
+ 精选影视 · 极速秒播 + 今日已更新多部影片 +
+
+ + + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_50.html b/code/app/home/view/videoGpt1/head/head_50.html new file mode 100644 index 0000000..436baeb --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_50.html @@ -0,0 +1,26 @@ +
+ + + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_51.html b/code/app/home/view/videoGpt1/head/head_51.html new file mode 100644 index 0000000..193d3b5 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_51.html @@ -0,0 +1,34 @@ +
+
+ {$DomainModel->d_name} + + +
+ + + + +
diff --git a/code/app/home/view/videoGpt1/head/head_52.html b/code/app/home/view/videoGpt1/head/head_52.html new file mode 100644 index 0000000..658a5ef --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_52.html @@ -0,0 +1,42 @@ +
+
+ + + +
+ + + + +
diff --git a/code/app/home/view/videoGpt1/head/head_53.html b/code/app/home/view/videoGpt1/head/head_53.html new file mode 100644 index 0000000..159d682 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_53.html @@ -0,0 +1,39 @@ +
+ + + + + +
diff --git a/code/app/home/view/videoGpt1/head/head_54.html b/code/app/home/view/videoGpt1/head/head_54.html new file mode 100644 index 0000000..ce7c74d --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_54.html @@ -0,0 +1,27 @@ +
+
+
+ {$DomainModel->d_name} +
发现 · 收藏 · 观看
+
+ + +
+ + + {if $DomainModel->info_id > 0} + 首页 + 影视首页 + {else} + 首页 + {/if} + + {video:categorytype category_type="ONE" d_key="key" d_val="val"} + {$val.v_category} + {/video:categorytype} + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_55.html b/code/app/home/view/videoGpt1/head/head_55.html new file mode 100644 index 0000000..370989b --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_55.html @@ -0,0 +1,30 @@ +
+
+ {$DomainModel->d_name} + + +
+ +
+ + +
+ + +
diff --git a/code/app/home/view/videoGpt1/head/head_56.html b/code/app/home/view/videoGpt1/head/head_56.html new file mode 100644 index 0000000..26b939f --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_56.html @@ -0,0 +1,32 @@ +
+ + +
+ + + +
+
diff --git a/code/app/home/view/videoGpt1/head/head_57.html b/code/app/home/view/videoGpt1/head/head_57.html new file mode 100644 index 0000000..d7d629e --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_57.html @@ -0,0 +1,35 @@ +
+
+
+ {$DomainModel->d_name} + 今日更新 +
+ + +
+ +
+ +
+ + +
diff --git a/code/app/home/view/videoGpt1/head/head_58.html b/code/app/home/view/videoGpt1/head/head_58.html new file mode 100644 index 0000000..9840c28 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_58.html @@ -0,0 +1,28 @@ +
+
+ {$DomainModel->d_name} + + +
+ + +
diff --git a/code/app/home/view/videoGpt1/head/head_59.html b/code/app/home/view/videoGpt1/head/head_59.html new file mode 100644 index 0000000..34e9b7b --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_59.html @@ -0,0 +1,32 @@ +
+ + + + +
+ +
+
diff --git a/code/app/home/view/videoGpt1/head/head_60.html b/code/app/home/view/videoGpt1/head/head_60.html new file mode 100644 index 0000000..eda030d --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_60.html @@ -0,0 +1,35 @@ +
+
+
+ {$DomainModel->d_name} + 片库 · 分类导航 +
+ + +
+ +
+ + + +
+
diff --git a/code/app/home/view/videoGpt1/head/head_61.html b/code/app/home/view/videoGpt1/head/head_61.html new file mode 100644 index 0000000..43d1636 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_61.html @@ -0,0 +1,30 @@ +
+
+ {$DomainModel->d_name} + + + + +
+ + +
diff --git a/code/app/home/view/videoGpt1/head/head_62.html b/code/app/home/view/videoGpt1/head/head_62.html new file mode 100644 index 0000000..df8b1bb --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_62.html @@ -0,0 +1,38 @@ +
+
+
+ {$DomainModel->d_name} +
新片 · 热播 · 推荐
+
+ + +
+ +
+ + + + {if $DomainModel->info_id > 0} + 首页 + 影视首页 + {else} + 首页 + {/if} + +
+ + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_63.html b/code/app/home/view/videoGpt1/head/head_63.html new file mode 100644 index 0000000..a1cddbb --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_63.html @@ -0,0 +1,36 @@ +
+ + +
+ + + +
+
diff --git a/code/app/home/view/videoGpt1/head/head_64.html b/code/app/home/view/videoGpt1/head/head_64.html new file mode 100644 index 0000000..8d78de2 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_64.html @@ -0,0 +1,40 @@ +
+
+
+ {$DomainModel->d_name} + · + 轻量导航 +
+ +
+ +
+
+ + + +
+
+ {if $DomainModel->info_id > 0} + 首页 + 影视首页 + {else} + 首页 + {/if} +
+ + +
+
diff --git a/code/app/home/view/videoGpt1/head/head_65.html b/code/app/home/view/videoGpt1/head/head_65.html new file mode 100644 index 0000000..6051a14 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_65.html @@ -0,0 +1,25 @@ +
+ + {$DomainModel->d_name} + + + + +
+ + + +
+
diff --git a/code/app/home/view/videoGpt1/head/head_66.html b/code/app/home/view/videoGpt1/head/head_66.html new file mode 100644 index 0000000..d54592f --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_66.html @@ -0,0 +1,7 @@ +
+

{$DomainModel->d_name}

+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_67.html b/code/app/home/view/videoGpt1/head/head_67.html new file mode 100644 index 0000000..b7baa26 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_67.html @@ -0,0 +1,15 @@ +
+
+ {$DomainModel->d_name} + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_68.html b/code/app/home/view/videoGpt1/head/head_68.html new file mode 100644 index 0000000..7e891f1 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_68.html @@ -0,0 +1,10 @@ +
+ +
+
+ +
+
+
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_69.html b/code/app/home/view/videoGpt1/head/head_69.html new file mode 100644 index 0000000..042b62e --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_69.html @@ -0,0 +1,13 @@ +
+ {$DomainModel->d_name} + + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_70.html b/code/app/home/view/videoGpt1/head/head_70.html new file mode 100644 index 0000000..e8ebc40 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_70.html @@ -0,0 +1,8 @@ +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_71.html b/code/app/home/view/videoGpt1/head/head_71.html new file mode 100644 index 0000000..da85da2 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_71.html @@ -0,0 +1,33 @@ +
+
+ {$DomainModel->d_name} + +
+ + + + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_72.html b/code/app/home/view/videoGpt1/head/head_72.html new file mode 100644 index 0000000..4d2f0b8 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_72.html @@ -0,0 +1,36 @@ +
+
+ {$DomainModel->d_name} + +
+ + + +
+ + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_73.html b/code/app/home/view/videoGpt1/head/head_73.html new file mode 100644 index 0000000..c596e5b --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_73.html @@ -0,0 +1,22 @@ +
+
+ {$DomainModel->d_name} + +
+
+ + +
+
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_74.html b/code/app/home/view/videoGpt1/head/head_74.html new file mode 100644 index 0000000..efa0f52 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_74.html @@ -0,0 +1,24 @@ +
+
+ {$DomainModel->d_name} + +
+ +
+ + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_75.html b/code/app/home/view/videoGpt1/head/head_75.html new file mode 100644 index 0000000..3a91a7e --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_75.html @@ -0,0 +1,34 @@ +
+ + + + +
+ + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_76.html b/code/app/home/view/videoGpt1/head/head_76.html new file mode 100644 index 0000000..a32cdbe --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_76.html @@ -0,0 +1,36 @@ +
+
+ {$DomainModel->d_name} +
+ + +
+
+ + + + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_77.html b/code/app/home/view/videoGpt1/head/head_77.html new file mode 100644 index 0000000..d8f11a5 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_77.html @@ -0,0 +1,15 @@ +
+ + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_78.html b/code/app/home/view/videoGpt1/head/head_78.html new file mode 100644 index 0000000..4528ac2 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_78.html @@ -0,0 +1,22 @@ +
+
+ {$DomainModel->d_name} + +
+ + + + +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_79.html b/code/app/home/view/videoGpt1/head/head_79.html new file mode 100644 index 0000000..8bcc847 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_79.html @@ -0,0 +1,29 @@ +
+
+ {$DomainModel->d_name} + +
+
+ + +
+
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_80.html b/code/app/home/view/videoGpt1/head/head_80.html new file mode 100644 index 0000000..1d435ff --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_80.html @@ -0,0 +1,27 @@ +
+
+ {$DomainModel->d_name} + + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_81.html b/code/app/home/view/videoGpt1/head/head_81.html new file mode 100644 index 0000000..7f38df9 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_81.html @@ -0,0 +1,29 @@ +
+
+ {$DomainModel->d_name} + +
+
+ + +
+
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_82.html b/code/app/home/view/videoGpt1/head/head_82.html new file mode 100644 index 0000000..1fe401f --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_82.html @@ -0,0 +1,27 @@ +
+
+ {$DomainModel->d_name} + + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_83.html b/code/app/home/view/videoGpt1/head/head_83.html new file mode 100644 index 0000000..1d821ed --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_83.html @@ -0,0 +1,27 @@ +
+
+ {$DomainModel->d_name} + + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_84.html b/code/app/home/view/videoGpt1/head/head_84.html new file mode 100644 index 0000000..52f4930 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_84.html @@ -0,0 +1,31 @@ +
+
+ {$DomainModel->d_name} + +
+ + +
+ +
+ +
    + {video:categorytype category_type="ONE" d_key="key" d_val="val"} +
  • + {$val.v_category} +
  • + {/video:categorytype} +
+
+
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_85.html b/code/app/home/view/videoGpt1/head/head_85.html new file mode 100644 index 0000000..8ea26fd --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_85.html @@ -0,0 +1,29 @@ +
+
+ {$DomainModel->d_name} + +
+
+ + +
+
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_86.html b/code/app/home/view/videoGpt1/head/head_86.html new file mode 100644 index 0000000..7393582 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_86.html @@ -0,0 +1,27 @@ +
+
+ {$DomainModel->d_name} + + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_87.html b/code/app/home/view/videoGpt1/head/head_87.html new file mode 100644 index 0000000..1428b95 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_87.html @@ -0,0 +1,29 @@ +
+
+ {$DomainModel->d_name} + +
+
+ + +
+
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_88.html b/code/app/home/view/videoGpt1/head/head_88.html new file mode 100644 index 0000000..5a15d5d --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_88.html @@ -0,0 +1,25 @@ +
+
+ {$DomainModel->d_name} + + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_89.html b/code/app/home/view/videoGpt1/head/head_89.html new file mode 100644 index 0000000..3e453b1 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_89.html @@ -0,0 +1,26 @@ +
+
+ {$DomainModel->d_name} + + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_90.html b/code/app/home/view/videoGpt1/head/head_90.html new file mode 100644 index 0000000..86bf9e5 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_90.html @@ -0,0 +1,30 @@ +
+
+ {$DomainModel->d_name} + +
+ + +
+ +
+ + +
+
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_91.html b/code/app/home/view/videoGpt1/head/head_91.html new file mode 100644 index 0000000..19e31d6 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_91.html @@ -0,0 +1,29 @@ +
+
+ {$DomainModel->d_name} + +
+
+ + +
+
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_92.html b/code/app/home/view/videoGpt1/head/head_92.html new file mode 100644 index 0000000..88139f4 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_92.html @@ -0,0 +1,27 @@ +
+
+ {$DomainModel->d_name} + + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_93.html b/code/app/home/view/videoGpt1/head/head_93.html new file mode 100644 index 0000000..797d32c --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_93.html @@ -0,0 +1,29 @@ +
+
+ {$DomainModel->d_name} + +
+
+ + +
+
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_94.html b/code/app/home/view/videoGpt1/head/head_94.html new file mode 100644 index 0000000..4acb2f3 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_94.html @@ -0,0 +1,27 @@ +
+
+ {$DomainModel->d_name} + + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_95.html b/code/app/home/view/videoGpt1/head/head_95.html new file mode 100644 index 0000000..d571e4d --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_95.html @@ -0,0 +1,27 @@ +
+
+ {$DomainModel->d_name} + + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_96.html b/code/app/home/view/videoGpt1/head/head_96.html new file mode 100644 index 0000000..b502a4c --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_96.html @@ -0,0 +1,31 @@ +
+
+ {$DomainModel->d_name} + +
+ + +
+ +
+ +
    + {video:categorytype category_type="ONE" d_key="key" d_val="val"} +
  • + {$val.v_category} +
  • + {/video:categorytype} +
+
+
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_97.html b/code/app/home/view/videoGpt1/head/head_97.html new file mode 100644 index 0000000..642aa41 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_97.html @@ -0,0 +1,29 @@ +
+
+ {$DomainModel->d_name} + +
+
+ + +
+
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_98.html b/code/app/home/view/videoGpt1/head/head_98.html new file mode 100644 index 0000000..8d9ecca --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_98.html @@ -0,0 +1,27 @@ +
+
+ {$DomainModel->d_name} + + +
+ +
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/head/head_99.html b/code/app/home/view/videoGpt1/head/head_99.html new file mode 100644 index 0000000..f425fb2 --- /dev/null +++ b/code/app/home/view/videoGpt1/head/head_99.html @@ -0,0 +1,29 @@ +
+
+ {$DomainModel->d_name} + +
+
+ + +
+
\ No newline at end of file diff --git a/code/app/home/view/videoGpt1/index/index-back.html b/code/app/home/view/videoGpt1/index/index-back.html new file mode 100644 index 0000000..9f99f52 --- /dev/null +++ b/code/app/home/view/videoGpt1/index/index-back.html @@ -0,0 +1,98 @@ +{extend name="base" /} + +{block name="get-data"} + +{video:listexp count="6" sort_type="tuijian" d_key="key" d_val="Video" cache_life="3600" export_name="arrVideoTuijian" +/} +{video:listexp count="6" sort_type="piaofang" d_key="key" d_val="Video" cache_life="3600" +export_name="arrVideoPiaofang" /} + + +{video:listexp +count="12" +sort_type="tuijian" +export_name="arrVideoRecommend" +/} + + +{video:listexp +count="12" +sort_type="zuixin" +export_name="arrVideoNewest" +/} + +{video:listexp +count="12" +sort_type="zuire" +export_name="arrVideoTrending" +/} + + +{video:listexp +count="12" +sort_type="ranking" +export_name="arrVideoRanking" +/} + +{site:grm page_code="h5_index" diff="0" num="80" g_key="arrGrm" /} + +{/block} + + +{block name="title"} +{site:replace code="VIDEO@INDEX@INDEX@TITLE"} +{/block} + +{block name="keywords"} +{site:replace code="VIDEO@INDEX@INDEX@KEYWORDS"} +{/block} + +{block name="description"} +{site:replace code="VIDEO@INDEX@INDEX@DESCRIPTION"} +{/block} + +{block name="main"} + +{// ================= 最近更新 ================= } +{include file="module/list/home_newest" /} + +{// ================= 热门推荐 ================= } +{include file="module/list/home_hot" /} + +{// ================= 排行榜 ================= } +{include file="module/list/home_rank" /} + +
+ {foreach $TpStyle.home_modules as $key=>$mod } + + {if $mod == 'banner'} + {include file="$TpTpl.banner" /} + {/if} + + {if $mod == 'recommend'} + {include file="$TpTpl.recommend" /} + {/if} + + {if $mod == 'trending'} + {include file="$TpTpl.trending" /} + {/if} + + {if $mod == 'newest'} + {include file="$TpTpl.newest" /} + {/if} + + {if $mod == 'ranking'} + {include file="$TpTpl.ranking" /} + {/if} + + {if $mod == 'category'} + {include file="$TpTpl.category" /} + {/if} + + {/foreach} + + {include file="$TpTpl.list" /} + +
+ +{/block} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/index/index.html b/code/app/home/view/videoGpt1/index/index.html index ecda951..b73ca31 100644 --- a/code/app/home/view/videoGpt1/index/index.html +++ b/code/app/home/view/videoGpt1/index/index.html @@ -2,45 +2,42 @@ {block name="get-data"} -{video:listexp count="6" sort_type="tuijian" d_key="key" d_val="Video" cache_life="3600" export_name="arrVideoTuijian" -/} -{video:listexp count="6" sort_type="piaofang" d_key="key" d_val="Video" cache_life="3600" -export_name="arrVideoPiaofang" /} - -{site:grm page_code="h5_index" diff="0" num="100" g_key="arrGrm" /} - {/block} -{block name="title"}{site:replace code="VIDEO@INDEX@INDEX@TITLE"}{/block} -{block name="keywords"}{site:replace code="VIDEO@INDEX@INDEX@KEYWORDS"}{/block} -{block name="description"}{site:replace code="VIDEO@INDEX@INDEX@DESCRIPTION"}{/block} + +{block name="title"} +{site:replace code="VIDEO@INDEX@INDEX@TITLE"} +{/block} + +{block name="keywords"} +{site:replace code="VIDEO@INDEX@INDEX@KEYWORDS"} +{/block} + +{block name="description"} +{site:replace code="VIDEO@INDEX@INDEX@DESCRIPTION"} +{/block} {block name="main"} - +
+ + {foreach $TpStyle.template_cfg.pages.home.modules as $module} - {// 模块按站群规则随机} - {volist name="$TpStyle.module_order" id="item" key="k"} + {assign name="limit" value="$TpStyle.list_layout[$module]['layout']['max_items']"} + {if $module == 'rank'} + {video:ranklistexp count="$limit" sort_type="weekly" d_key="key" d_val="Video" cache_life="3600" + export_name="__LIST__" /} + {else/} + {video:listexp count="$limit" sort_type="$module" d_key="key" d_val="Video" cache_life="3600" + export_name="__LIST__" /} + {/if} + - {if $item == 'banner'} - {include file="public/module-banner" /} - {/if} + {include file="module/list/home_block" /} - {if $item == 'recommend'} - {include file="public/module-recommend" /} - {/if} + {/foreach} - {if $item == 'newest'} - {include file="public/module-newest" /} - {/if} - - {if $item == 'ranking'} - {include file="public/module-ranking" /} - {/if} - - {/volist} + +
{/block} diff --git a/code/app/home/view/videoGpt1/module/banner/banner_01.html b/code/app/home/view/videoGpt1/module/banner/banner_01.html new file mode 100644 index 0000000..533e9db --- /dev/null +++ b/code/app/home/view/videoGpt1/module/banner/banner_01.html @@ -0,0 +1,15 @@ +
+ +
+ {$arrVideoTuijian.0.v_name} + +
+

{$arrVideoTuijian.0.v_name}

+

热播精选 · 高清极速观看

+
+
+
+
diff --git a/code/app/home/view/videoGpt1/module/banner/banner_02.html b/code/app/home/view/videoGpt1/module/banner/banner_02.html new file mode 100644 index 0000000..e8ab736 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/banner/banner_02.html @@ -0,0 +1,14 @@ +
+ +
+

{$arrVideoTuijian.1.v_name}

+ 最新热播上线,立即观看 +
+
+ {$arrVideoTuijian.1.v_name} +
+
+
diff --git a/code/app/home/view/videoGpt1/module/banner/banner_03.html b/code/app/home/view/videoGpt1/module/banner/banner_03.html new file mode 100644 index 0000000..62dd718 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/banner/banner_03.html @@ -0,0 +1,15 @@ +
+ +
diff --git a/code/app/home/view/videoGpt1/module/banner/banner_04.html b/code/app/home/view/videoGpt1/module/banner/banner_04.html new file mode 100644 index 0000000..d762816 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/banner/banner_04.html @@ -0,0 +1,8 @@ +
+ +
+ 🔥 + {$arrVideoTuijian.2.v_name} 正在热播 +
+
+
diff --git a/code/app/home/view/videoGpt1/module/banner/banner_05.html b/code/app/home/view/videoGpt1/module/banner/banner_05.html new file mode 100644 index 0000000..77beea9 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/banner/banner_05.html @@ -0,0 +1,14 @@ +
+ +
+ {$arrVideoTuijian.3.v_name} +
+

{$arrVideoTuijian.3.v_name}

+ 支持手机 / 平板 / 电视播放 +
+
+
+
diff --git a/code/app/home/view/videoGpt1/module/breadcrumb/breadcrumb_A.html b/code/app/home/view/videoGpt1/module/breadcrumb/breadcrumb_A.html new file mode 100644 index 0000000..4b68b8e --- /dev/null +++ b/code/app/home/view/videoGpt1/module/breadcrumb/breadcrumb_A.html @@ -0,0 +1,261 @@ + + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/breadcrumb/breadcrumb_B.html b/code/app/home/view/videoGpt1/module/breadcrumb/breadcrumb_B.html new file mode 100644 index 0000000..400caa0 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/breadcrumb/breadcrumb_B.html @@ -0,0 +1,167 @@ + + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/breadcrumb/breadcrumb_C.html b/code/app/home/view/videoGpt1/module/breadcrumb/breadcrumb_C.html new file mode 100644 index 0000000..95394ea --- /dev/null +++ b/code/app/home/view/videoGpt1/module/breadcrumb/breadcrumb_C.html @@ -0,0 +1,181 @@ + + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/breadcrumb/breadcrumb_D.html b/code/app/home/view/videoGpt1/module/breadcrumb/breadcrumb_D.html new file mode 100644 index 0000000..eb0d297 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/breadcrumb/breadcrumb_D.html @@ -0,0 +1,209 @@ + + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/breadcrumb/breadcrumb_router.html b/code/app/home/view/videoGpt1/module/breadcrumb/breadcrumb_router.html new file mode 100644 index 0000000..739a6ff --- /dev/null +++ b/code/app/home/view/videoGpt1/module/breadcrumb/breadcrumb_router.html @@ -0,0 +1,20 @@ +{assign name="intVariant" value="$pageCfg.breadcrumb.variant"} +{switch $pageCfg.breadcrumb.layout} + +{case value="A"} + {include file="module/breadcrumb/breadcrumb_A" /} +{/case} + +{case value="B"} + {include file="module/breadcrumb/breadcrumb_B" /} +{/case} + +{case value="C"} + {include file="module/breadcrumb/breadcrumb_C" /} +{/case} + +{case value="D"} + {include file="module/breadcrumb/breadcrumb_D" /} +{/case} + +{/switch} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/category/category_01.html b/code/app/home/view/videoGpt1/module/category/category_01.html new file mode 100644 index 0000000..22f2acc --- /dev/null +++ b/code/app/home/view/videoGpt1/module/category/category_01.html @@ -0,0 +1,10 @@ +
+

分类导航

+ + +
diff --git a/code/app/home/view/videoGpt1/module/category/category_02.html b/code/app/home/view/videoGpt1/module/category/category_02.html new file mode 100644 index 0000000..eeea29e --- /dev/null +++ b/code/app/home/view/videoGpt1/module/category/category_02.html @@ -0,0 +1,10 @@ +
+
浏览分类
+ + +
diff --git a/code/app/home/view/videoGpt1/module/category/category_03.html b/code/app/home/view/videoGpt1/module/category/category_03.html new file mode 100644 index 0000000..5300721 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/category/category_03.html @@ -0,0 +1,22 @@ +
+

影片分类

+ + +
diff --git a/code/app/home/view/videoGpt1/module/category/category_04.html b/code/app/home/view/videoGpt1/module/category/category_04.html new file mode 100644 index 0000000..6f5fc32 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/category/category_04.html @@ -0,0 +1,8 @@ + diff --git a/code/app/home/view/videoGpt1/module/category/category_05.html b/code/app/home/view/videoGpt1/module/category/category_05.html new file mode 100644 index 0000000..cf6bde1 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/category/category_05.html @@ -0,0 +1,39 @@ +
+
+ 内容分类 +
+ + +
diff --git a/code/app/home/view/videoGpt1/module/detail/detail_01.html b/code/app/home/view/videoGpt1/module/detail/detail_01.html new file mode 100644 index 0000000..1991005 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/detail/detail_01.html @@ -0,0 +1,99 @@ +
+ + {// 顶部基本信息 } +
+ {$arrVideo.v_name} + +
+

{$arrVideo.v_name}

+ +

类型:{$arrVideo.type.type_name}

+

主演:{$arrVideo.v_actor}

+

地区:{$arrVideo.v_area}

+

年份:{$arrVideo.v_year}

+
+
+ + {// 播放线路 TAB } + + + {// 各线路播放集数列表 } +
+ + + {foreach $arrVideo.v_play_url as $strPlayGroupName=>$arrPlayUrlType } + + + + {/foreach} + +
+ + {// 剧情简介 } +
+

剧情简介

+

{$arrVideo.v_des}

+
+ + {// 相关推荐(站内沉淀、SEO 拉链) } +
+

相关推荐

+ +
+ {video:listexp count="8" v_category="$arrVideo.v_category" d_key="key" d_val="Video" + export_name="arrRelated" cache_life="3600" /} + + {volist name="arrRelated" id="re"} + + {$re.v_name} +

{$re.v_name}

+
+ {/volist} +
+
+ +
+ + diff --git a/code/app/home/view/videoGpt1/module/detail/detail_02.html b/code/app/home/view/videoGpt1/module/detail/detail_02.html new file mode 100644 index 0000000..d08dc0a --- /dev/null +++ b/code/app/home/view/videoGpt1/module/detail/detail_02.html @@ -0,0 +1,99 @@ +
+ + {// 顶部大横图 } +
+ {$arrVideo.v_name} +
+
+

{$arrVideo.v_name}

+

{$arrVideo.v_year} · {$arrVideo.type.type_name} · {$arrVideo.v_area}

+
+
+ + {// 基本信息 } +
+

主演:{$arrVideo.v_actor}

+

导演:{$arrVideo.v_director}

+

语言:{$arrVideo.v_lang}

+
+ + {// 播放线路 TAB } + + + {// 每个线路的集数列表(竖排) } +
+ + + {foreach $arrVideo.v_play_url as $strPlayGroupName=>$arrPlayUrlType } + + + + + {/foreach} +
+ + {// 剧情简介 } +
+

剧情简介

+

{$arrVideo.v_des}

+
+ + {// 相关推荐:同分类 } +
+

同类推荐

+ + {video:listexp count="8" v_category="$arrVideo.v_category" d_key="key" d_val="Video" + export_name="arrRelCat" cache_life="3600" /} + +
+ {volist name="arrRelCat" id="re"} + + {$re.v_name} +

{$re.v_name}

+
+ {/volist} +
+
+
+ + diff --git a/code/app/home/view/videoGpt1/module/detail/detail_03.html b/code/app/home/view/videoGpt1/module/detail/detail_03.html new file mode 100644 index 0000000..4563fc9 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/detail/detail_03.html @@ -0,0 +1,87 @@ +
+ +
+
+ {$arrVideo.v_name} +
+
+

{$arrVideo.v_name}

+

{$arrVideo.v_year} · {$arrVideo.type.type_name}

+

主演:{$arrVideo.v_actor}

+

地区:{$arrVideo.v_area}

+
+
+ + {// 线路标签 } + + + {// 集数列表 } +
+ + {foreach $arrVideo.v_play_url as $strPlayGroupName=>$arrPlayUrlType } + +
+ + {volist name='$arrPlayUrlType' id='arrPlayUrl'} + + + {$arrPlayUrl.name} + + {/volist} +
+ {/foreach} +
+ + {// 简介 } +
+

简介

+

{$arrVideo.v_des}

+
+ + {// 同演员推荐 } +
+

同主演推荐

+ + {video:listexp count="6" v_actor="$arrVideo.v_actor" d_key="key" d_val="Video" + export_name="arrRelActor" cache_life="3600" /} +
+ {volist name="arrRelActor" id="re"} + + {$re.v_name} +

{$re.v_name}

+
+ {/volist} +
+
+ +
+ + diff --git a/code/app/home/view/videoGpt1/module/detail/detail_04.html b/code/app/home/view/videoGpt1/module/detail/detail_04.html new file mode 100644 index 0000000..20fe2e5 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/detail/detail_04.html @@ -0,0 +1,90 @@ +
+ +
+

{$arrVideo.v_name}

+
+ +
+ {$arrVideo.v_name} + +
+

类型{$arrVideo.type.type_name}

+

年份{$arrVideo.v_year}

+

地区{$arrVideo.v_area}

+

语言{$arrVideo.v_lang}

+
+
+ + {// 下拉选择线路 } +
+ + +
+ + {// 集数列表:有序列表 } +
+ + {foreach $arrVideo.v_play_url as $strPlayGroupName=>$arrPlayUrlType } + +
    + + {volist name='$arrPlayUrlType' id='arrPlayUrl'} + +
  1. + + {$arrPlayUrl.name} + +
  2. + {/volist} +
+ {/foreach} +
+ + {// 简介 } +
+

内容简介

+

{$arrVideo.v_des}

+
+ + {// 同年份推荐 } +
+

{$arrVideo.v_year} 年度影片推荐

+ + {video:listexp count="6" v_year="$arrVideo.v_year" d_key="key" d_val="Video" + export_name="arrRelYear" cache_life="3600" /} +
+ {volist name="arrRelYear" id="re"} + + {$re.v_name} +

{$re.v_name}

+
+ {/volist} +
+
+ +
+ + diff --git a/code/app/home/view/videoGpt1/module/detail/detail_05.html b/code/app/home/view/videoGpt1/module/detail/detail_05.html new file mode 100644 index 0000000..dd5ee3b --- /dev/null +++ b/code/app/home/view/videoGpt1/module/detail/detail_05.html @@ -0,0 +1,86 @@ +
+ +
+

{$arrVideo.v_name}

+

{$arrVideo.v_year} · {$arrVideo.type.type_name} · {$arrVideo.v_area}

+
+ +
+ {$arrVideo.v_name} +
+ + {// 线路按钮条 } +
+
+ + {foreach $arrVideo.v_play_url as $strPlayGroupName=>$arrPlayUrlType } + + + {/foreach} +
+ +
+ + {foreach $arrVideo.v_play_url as $strPlayGroupName=>$arrPlayUrlType } + +
+ + {volist name='$arrPlayUrlType' id='arrPlayUrl'} + + + {$arrPlayUrl.name} + + {/volist} +
+ {/foreach} +
+
+ + {// 简介分段 } +
+

简介

+

{$arrVideo.v_des}

+
+ + {// 综合推荐:同类 + 高票房 } +
+

你可能还喜欢

+ + {video:listexp count="8" v_category="$arrVideo.v_category" d_key="key" d_val="Video" + export_name="arrRelMix" cache_life="3600" /} +
+ {volist name="arrRelMix" id="re"} + + {$re.v_name} +

{$re.v_name}

+
+ {/volist} +
+
+ +
+ + diff --git a/code/app/home/view/videoGpt1/module/detail_main/action.html b/code/app/home/view/videoGpt1/module/detail_main/action.html new file mode 100644 index 0000000..c34a290 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/detail_main/action.html @@ -0,0 +1,111 @@ +{// ===================== Action Variants ===================== } + +{if $variant == 0} +
+ 立即播放 +
+ +{elseif $variant == 1} +
+ 在线播放 + 无需安装 +
+ +{elseif $variant == 2} + + +{elseif $variant == 3} + + +{elseif $variant == 4} +
+ +
+ +{elseif $variant == 5} +
+ {$arrVideo.v_name} 在线观看 +
+ +{elseif $variant == 6} + + +{elseif $variant == 7} +
+ 免费观看 + 高清资源 +
+ +{elseif $variant == 8} +
+ 播放正片 +
+ +{elseif $variant == 9} +
+ 立即观看 {$arrVideo.v_name} +
+ +{elseif $variant == 10} +
+ 在线播放 · 高清 +
+ +{elseif $variant == 11} +
+ 点击播放 + 支持多线路 +
+ +{elseif $variant == 12} + + +{elseif $variant == 13} +
+ +
+ +{elseif $variant == 14} +
+ {$arrVideo.v_name} 免费看 +
+ +{elseif $variant == 15} + + +{elseif $variant == 16} +
+ 播放影片 +
+ +{elseif $variant == 17} +
+ 高清播放 + 无需登录 +
+ +{elseif $variant == 18} +
+ 在线观看 +
+ +{elseif $variant == 19} + + +{/if} diff --git a/code/app/home/view/videoGpt1/module/detail_main/cover.html b/code/app/home/view/videoGpt1/module/detail_main/cover.html new file mode 100644 index 0000000..8d62268 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/detail_main/cover.html @@ -0,0 +1,152 @@ +{// ===================== Cover Variants ===================== } + +{if $variant == 0} +
+ {$arrVideo.v_name} +
+ +{elseif $variant == 1} +
+ {$arrVideo.v_name} +
+ {$arrVideo.v_remarks} +
+
+ +{elseif $variant == 2} + + {$arrVideo.v_name} + + +{elseif $variant == 3} +
+
+
+ +{elseif $variant == 4} +
+ + + {$arrVideo.v_year} + +
+ +{elseif $variant == 5} +
+ + + {$arrVideo.v_score} + +
+ +{elseif $variant == 6} +
+
+ +
+ +{elseif $variant == 7} +
+ +
+ +{elseif $variant == 8} +
+ + + +
+ +{elseif $variant == 9} +
+ + + {$arrVideo.v_remarks} + +
+ +{elseif $variant == 10} +
+
+ HD +
+ +{elseif $variant == 11} + +
+
+ +{elseif $variant == 12} +
+ + 更新中 +
+ +{elseif $variant == 13} +
+ + +
+ +{elseif $variant == 14} +
+
+ + {$arrVideo.v_year} + +
+ +{elseif $variant == 15} +
+ + + 免费 + +
+ +{elseif $variant == 16} +
+ + +
+ +{elseif $variant == 17} + + +{elseif $variant == 18} +
+
+ +{elseif $variant == 19} +
+ +
+ +{/if} diff --git a/code/app/home/view/videoGpt1/module/detail_main/desc.html b/code/app/home/view/videoGpt1/module/detail_main/desc.html new file mode 100644 index 0000000..9d365db --- /dev/null +++ b/code/app/home/view/videoGpt1/module/detail_main/desc.html @@ -0,0 +1,134 @@ +{// ===================== Desc Variants ===================== } + +{if $variant == 0} +

+ {$arrVideo.v_description} +

+ +{elseif $variant == 1} +
+

{$arrVideo.v_description|mb_substr=0,120}

+
+ +{elseif $variant == 2} +
+

{$arrVideo.v_description|mb_substr=0,200}

+
+ +{elseif $variant == 3} +
+

{$arrVideo.v_description}

+
+ +{elseif $variant == 4} +
+

+ 剧情简介:{$arrVideo.v_description|mb_substr=0,150} +

+
+ +{elseif $variant == 5} +
+ 剧情介绍 +

{$arrVideo.v_description}

+
+ +{elseif $variant == 6} +
+

{$arrVideo.v_description|mb_substr=0,100}...

+ 查看详情 +
+ +{elseif $variant == 7} +
+
影片简介
+

{$arrVideo.v_description|mb_substr=0,180}

+
+ +{elseif $variant == 8} +
+
+ {$arrVideo.v_description|mb_substr=0,160} +
+
+ +{elseif $variant == 9} +

+ {$arrVideo.v_name}({$arrVideo.v_year})剧情: + {$arrVideo.v_description|mb_substr=0,140} +

+ +{elseif $variant == 10} +
+

+ {$arrVideo.v_description|mb_substr=0,160} +

+
+ +{elseif $variant == 11} +
+

{$arrVideo.v_description|mb_substr=0,120}

+
+ +{elseif $variant == 12} +
+

+ {$arrVideo.v_description|mb_substr=0,100} + + {$arrVideo.v_name} 在线观看 + +

+
+ +{elseif $variant == 13} +
+

+ {$arrVideo.v_description|mb_substr=0,130} + 高清完整版内容介绍。 +

+
+ +{elseif $variant == 14} +
+

+ {$arrVideo.v_description|mb_substr=0,150} +

+

+ 本片支持在线播放 +

+
+ +{elseif $variant == 15} +

+ {$arrVideo.v_description|mb_substr=0,120} + 免费观看{$arrVideo.v_name} +

+ +{elseif $variant == 16} +
+

+ {$arrVideo.v_name} + {$arrVideo.v_description|mb_substr=0,140} +

+
+ +{elseif $variant == 17} +
+

{$arrVideo.v_description|mb_substr=0,180}

+
+ +{elseif $variant == 18} +
+

+ {$arrVideo.v_description} +

+
+ +{elseif $variant == 19} +
+
剧情简介
+

{$arrVideo.v_description|mb_substr=0,160}

+
+ +{/if} diff --git a/code/app/home/view/videoGpt1/module/detail_main/detail_main_router.html b/code/app/home/view/videoGpt1/module/detail_main/detail_main_router.html new file mode 100644 index 0000000..ebd0308 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/detail_main/detail_main_router.html @@ -0,0 +1,15 @@ +{switch $pageCfg.detail_main.layout} + +{case value="A"} + {include file="module/detail_main/layout/layout_A" /} +{/case} + +{case value="B"} + {include file="module/detail_main/layout/layout_B" /} +{/case} + +{case value="C"} + {include file="module/detail_main/layout/layout_C" /} +{/case} + +{/switch} diff --git a/code/app/home/view/videoGpt1/module/detail_main/detail_main_router.md b/code/app/home/view/videoGpt1/module/detail_main/detail_main_router.md new file mode 100644 index 0000000..b15287b --- /dev/null +++ b/code/app/home/view/videoGpt1/module/detail_main/detail_main_router.md @@ -0,0 +1,32 @@ + + A 改成 : + h5 + 顶部 cover 1/3 居中显示,pc 有个最大尺寸,不要太大,不然封面霸屏了 + 中间: 居中展示 :title meta + 下面 居中展示 action ; + pc: + 左边 cover + 右边 title meta action desc + + ┌───────────────────────────────┐ +│ cover │ ← 主视觉(居中,不霸屏) +├───────────────────────────────┤ +│ title | meta | action │ ← 信息一行阅读 +├───────────────────────────────┤ +│ desc │ ← 内容阅读区 +└───────────────────────────────┘ + + + B 改成 : + 顶部 左边cover 1/3 ;右边: title meta action + 下面 desc + + c 改成 : + 顶部 title + 中间 左边cover 1/3 ;右边: meta action + 下面 desc + + + 注意 : + thinkphp 视图 注释 {// ===== Top:Title ===== } + 然后 所有html的 class 请加seed 前缀 {$TpStyle.dom_prefix}- \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/detail_main/index.md b/code/app/home/view/videoGpt1/module/detail_main/index.md new file mode 100644 index 0000000..8d8d833 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/detail_main/index.md @@ -0,0 +1,268 @@ +好,确认你选的是 **方案 1:给你「5 个模块 × 每个 20 套的【具体 HTML 设计清单】」**。 +下面我**不写完整代码**,而是给你 **可以直接照着写的结构设计说明**,每一套都**明确“差异点在哪”**,这样你写的时候不会重复、不会越界,也不会把自己绕晕。 + +> 目标只有一个: +> **F12 看起来不一样 + SEO 结构不一样 + 长期好维护** + +--- + +# 一、Title 模块(20 套设计清单) +好,这里我一次性给你可直接上线用的完整版本,不再讲概念。 + +你要的是: + +✅ title 模块 + +✅ 1 个文件内 20 套 HTML + +✅ 配套 CSS + +✅ CSS 全部走类名 + +✅ 用 seed / dom_prefix 做前缀,天然差异化 + +✅ 后续加标签不需要动 CSS + +下面内容你可以 直接复制进项目。 + +一、Title 模块 HTML(1 个文件 / 20 套) + +文件路径: + +module/detail_main/title.html + +约定 + +$variant:0–19 + +$TpStyle.dom_prefix:seed 前缀 + +$arrVideo:视频数据 +> 变化维度: +> **标签语义 / 层级 / 强弱 / 附加信息** + +### Title 01–05(标准标题系) + +1. `h1` 单行标题 +2. `h1 + small(year)` +3. `h2 + strong` +4. `h1` 带引号《》 +5. `h1` + `sup`(HD / 完结) + +### Title 06–10(语义包裹系) + +6. `header > h1` +7. `div.title > h1` +8. `figure > figcaption > h1` +9. `section > h1 + p.sub` +10. `article > h1` + +### Title 11–15(强调变化系) + +11. `h1 > strong` +12. `h1 > em` +13. `h2 + span.tag(年份)` +14. `h1 + span.score` +15. `h1 + i.icon` + +### Title 16–20(SEO 扩展系) + +16. `h1` + “在线观看”文案 +17. `h1` + “免费高清完整版” +18. `h1 + meta(itemprop=name)` +19. `h1` + `data-title` 属性 +20. `h1` + 隐藏 `span`(SEO) + +--- + +# 二、Cover 模块(20 套设计清单) + +> 变化维度: +> **img / bg / 容器语义 / 角标 / 交互** + +### Cover 01–05(基础封面) + +1. `div > img` +2. `figure > img` +3. `a > img`(可点击) +4. `div.cover > img + badge` +5. `div.cover > img + score` + +### Cover 06–10(背景图系) + +6. `div.bg` + inline background +7. `div.bg` + 渐变遮罩 +8. `section.bg` +9. `figure.bg + figcaption` +10. `a.bg`(跳播放) + +### Cover 11–15(信息叠加系) + +11. 封面右下角年份 +12. 封面左上角“更新中” +13. hover 显示播放 icon +14. hover 显示标题 +15. 叠加评分条 + +### Cover 16–20(比例 / 结构差异) + +16. 2:3 比例容器 +17. 1:1 比例容器 +18. 3:4 比例容器 +19. picture / source 结构 +20. img + noscript(SEO) + +--- + +# 三、Meta 模块(20 套设计清单) + +> 变化维度: +> **结构标签 / 字段顺序 / 展示密度** + +### Meta 01–05(列表系) + +1. `ul > li`(类型 / 年份 / 地区) +2. `ol > li` +3. `ul.inline` +4. `ul + icon` +5. `ul + span.label` + +### Meta 06–10(定义列表) + +6. `dl > dt/dd` +7. `dl.horizontal` +8. `dl` + data-* +9. `dl` + microdata +10. `dl` 精简版(2 项) + +### Meta 11–15(行内文本) + +11. `p` 用 `|` 分隔 +12. `p` 用 `·` 分隔 +13. `span.meta-item` +14. `small.meta` +15. `p` + `time` + +### Meta 16–20(SEO 结构) + +16. `table`(2 行) +17. `div.meta-grid` +18. `meta itemprop` +19. `data-year / data-area` +20. 隐藏 meta(SEO) + +--- + +# 四、Desc 模块(20 套设计清单) + +> 变化维度: +> **内容长度 / 展示方式 / 语义标签** + +### Desc 01–05(直出文本) + +1. `p` 全文 +2. `p` 截断 120 字 +3. `p` 截断 200 字 +4. `div` 全文 +5. `section > p` + +### Desc 06–10(可展开) + +6. `details > summary` +7. `div + “展开更多”` +8. `p + a(#desc)` +9. `section + toggle` +10. `article + footer` + +### Desc 11–15(SEO 改写) + +11. 标准简介 + 年份 +12. 加“在线观看”关键词 +13. 加“高清资源” +14. 加“剧情介绍”前缀 +15. 半伪原创句式 + +### Desc 16–20(语义增强) + +16. `article` +17. `blockquote` +18. `p itemprop=description` +19. `div data-desc` +20. 隐藏长描述(SEO) + +--- + +# 五、Action 模块(20 套设计清单) + +> 变化维度: +> **交互形式 / 文案 / 结构** + +### Action 01–05(按钮) + +1. 单按钮「立即播放」 +2. 单按钮「在线观看」 +3. button 标签 +4. a.btn 标签 +5. 带 icon 的按钮 + +### Action 06–10(导航) + +6. `nav > a`(播放 / 剧情) +7. `ul > li > a` +8. 横向按钮组 +9. 垂直按钮组 +10. sticky action + +### Action 11–15(强化转化) + +11. 播放 + “无需安装” +12. 播放 + “高清” +13. 播放 + “免费” +14. 播放 + “推荐” +15. 播放 + 提示文本 + +### Action 16–20(结构差异) + +16. `section.action` +17. `footer.action` +18. `div.action` +19. `aside.action` +20. data-action 结构 + +--- + +# 六、你写的时候只需要记住 3 条铁律 + +1. **一个模块 = 一个文件** +2. **一个文件 = 20 个 `{if $variant == N}`** +3. **每个 variant = 完整、真实、能独立存在的 HTML** + +不需要: + +* 原子 +* 组合器 +* cfg 兜底 +* 复杂判断 + +--- + +# 七、最终工程评价(实话) + +你现在这个方案: + +* ✔ **复杂度最低** +* ✔ **差异化足够大** +* ✔ **和 item 体系统一** +* ✔ **最适合 InCloud** +* ✔ **3 年内不用重构** + +这是**站群工程里的“终态方案”**。 + +--- + +如果你下一步想要,我可以: + +* **直接帮你把某一个模块(比如 title 或 action)的 20 套 HTML 全部写出来** +* 或 **帮你设计「播放页 Player」用同一套路** + +你一句话说哪个模块,我直接给你 **完整 20 套可复制代码**。 diff --git a/code/app/home/view/videoGpt1/module/detail_main/layout/layout_A.html b/code/app/home/view/videoGpt1/module/detail_main/layout/layout_A.html new file mode 100644 index 0000000..b12ad65 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/detail_main/layout/layout_A.html @@ -0,0 +1,27 @@ +
+ + {// ===== Top:Cover ===== } +
+ {assign name="variant" value="$pageCfg.detail_main.cover"} + {include file="module/detail_main/cover" /} +
+ + {// ===== Middle:Title + Meta + Action ===== } +
+ {assign name="variant" value="$pageCfg.detail_main.title"} + {include file="module/detail_main/title" /} + + {assign name="variant" value="$pageCfg.detail_main.meta"} + {include file="module/detail_main/meta" /} + + {assign name="variant" value="$pageCfg.detail_main.action"} + {include file="module/detail_main/action" /} +
+ + {// ===== Bottom:Desc ===== } +
+ {assign name="variant" value="$pageCfg.detail_main.desc"} + {include file="module/detail_main/desc" /} +
+ +
diff --git a/code/app/home/view/videoGpt1/module/detail_main/layout/layout_B.html b/code/app/home/view/videoGpt1/module/detail_main/layout/layout_B.html new file mode 100644 index 0000000..0562b92 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/detail_main/layout/layout_B.html @@ -0,0 +1,30 @@ +
+ + {// ===== Top:Cover + Info ===== } +
+ +
+ {assign name="variant" value="$pageCfg.detail_main.cover"} + {include file="module/detail_main/cover" /} +
+ +
+ {assign name="variant" value="$pageCfg.detail_main.title"} + {include file="module/detail_main/title" /} + + {assign name="variant" value="$pageCfg.detail_main.meta"} + {include file="module/detail_main/meta" /} + + {assign name="variant" value="$pageCfg.detail_main.action"} + {include file="module/detail_main/action" /} +
+ +
+ + {// ===== Bottom:Desc ===== } +
+ {assign name="variant" value="$pageCfg.detail_main.desc"} + {include file="module/detail_main/desc" /} +
+ +
diff --git a/code/app/home/view/videoGpt1/module/detail_main/layout/layout_C.html b/code/app/home/view/videoGpt1/module/detail_main/layout/layout_C.html new file mode 100644 index 0000000..4ea83ca --- /dev/null +++ b/code/app/home/view/videoGpt1/module/detail_main/layout/layout_C.html @@ -0,0 +1,33 @@ +
+ + {// ===== Top:Title ===== } +
+ {assign name="variant" value="$pageCfg.detail_main.title"} + {include file="module/detail_main/title" /} +
+ + {// ===== Middle:Cover + Meta / Action ===== } +
+ +
+ {assign name="variant" value="$pageCfg.detail_main.cover"} + {include file="module/detail_main/cover" /} +
+ +
+ {assign name="variant" value="$pageCfg.detail_main.meta"} + {include file="module/detail_main/meta" /} + + {assign name="variant" value="$pageCfg.detail_main.action"} + {include file="module/detail_main/action" /} +
+ +
+ + {// ===== Bottom:Desc ===== } +
+ {assign name="variant" value="$pageCfg.detail_main.desc"} + {include file="module/detail_main/desc" /} +
+ +
diff --git a/code/app/home/view/videoGpt1/module/detail_main/meta.html b/code/app/home/view/videoGpt1/module/detail_main/meta.html new file mode 100644 index 0000000..fde0223 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/detail_main/meta.html @@ -0,0 +1,222 @@ +{// ===================== Meta Variants (Array-aware, no i_last) ===================== } + +{// 预计算长度(避免 i_last) } +{assign name="len_area" value="is_array($arrVideo.v_area)?count($arrVideo.v_area):0"} +{assign name="len_actor" value="is_array($arrVideo.v_actor)?count($arrVideo.v_actor):0"} +{assign name="len_director" value="is_array($arrVideo.v_director)?count($arrVideo.v_director):0"} +{assign name="len_lang" value="is_array($arrVideo.v_lang)?count($arrVideo.v_lang):0"} + +{if $variant == 0} + + +{elseif $variant == 1} +

+ {$arrVideo.v_year} · + {volist name="arrVideo.v_area" id="vo" key="k"} + {$vo}{if $k < $len_area} · {/if} + {/volist} + · {$arrVideo.v_category} +

+ +{elseif $variant == 2} +
    +
  1. 上映时间:{$arrVideo.v_year}
  2. +
  3. + 语言: + {volist name="arrVideo.v_lang" id="vo" key="k"} + {$vo}{if $k < $len_lang}、{/if} + {/volist} +
  4. +
  5. {$arrVideo.v_category}
  6. +
+ +{elseif $variant == 3} +
+ {$arrVideo.v_category} + + {volist name="arrVideo.v_area" id="vo" key="k"} + {$vo}{if $k < $len_area} | {/if} + {/volist} + + {$arrVideo.v_year} +
+ +{elseif $variant == 4} +

+ {$arrVideo.v_year} / + {volist name="arrVideo.v_lang" id="vo" key="k"} + {$vo}{if $k < $len_lang}/{/if} + {/volist} +

+ +{elseif $variant == 5} +
+
导演
+
+ {volist name="arrVideo.v_director" id="vo" key="k"} + {$vo}{if $k < $len_director}、{/if} + {/volist} +
+
主演
+
+ {volist name="arrVideo.v_actor" id="vo" key="k"} + {$vo}{if $k < $len_actor} / {/if} + {/volist} +
+
+ +{elseif $variant == 6} +
+
主演
+
+ {volist name="arrVideo.v_actor" id="vo" key="k"} + {$vo}{if $k < $len_actor} · {/if} + {/volist} +
+
+ +{elseif $variant == 7} +
+ 导演 + + {volist name="arrVideo.v_director" id="vo" key="k"} + {$vo}{if $k < $len_director} | {/if} + {/volist} + +
+ +{elseif $variant == 8} +
+ + + {volist name="arrVideo.v_area" id="vo" key="k"} + {$vo}{if $k < $len_area} · {/if} + {/volist} + +
+ +{elseif $variant == 9} +
+ {$arrVideo.v_category} + | + + {volist name="arrVideo.v_lang" id="vo" key="k"} + {$vo}{if $k < $len_lang} | {/if} + {/volist} + +
+ +{elseif $variant == 10} + + + + + + + + + +
地区 + {volist name="arrVideo.v_area" id="vo" key="k"} + {$vo}{if $k < $len_area}、{/if} + {/volist} +
语言 + {volist name="arrVideo.v_lang" id="vo" key="k"} + {$vo}{if $k < $len_lang}、{/if} + {/volist} +
+ +{elseif $variant == 11} +
+ {$arrVideo.v_category} +
+ +{elseif $variant == 12} +

+ {$arrVideo.v_category} + + {volist name="arrVideo.v_lang" id="vo" key="k"} + {$vo}{if $k < $len_lang} / {/if} + {/volist} + +

+ +{elseif $variant == 13} +
+ + {volist name="arrVideo.v_area" id="vo" key="k"} + {$vo}{if $k < $len_area} · {/if} + {/volist} + + {$arrVideo.v_year} +
+ +{elseif $variant == 14} +
+ {$arrVideo.v_year} + + 主演: + {volist name="arrVideo.v_actor" id="vo" key="k"} + {$vo}{if $k < $len_actor}、{/if} + {/volist} + +
+ +{elseif $variant == 15} +

+ {$arrVideo.v_category} / + {volist name="arrVideo.v_area" id="vo" key="k"} + {$vo}{if $k < $len_area}/{/if} + {/volist} + / {$arrVideo.v_year} +

+ +{elseif $variant == 16} +
+ {$arrVideo.v_category} +
+ +{elseif $variant == 17} +
+ 导演: + {volist name="arrVideo.v_director" id="vo" key="k"} + {$vo}{if $k < $len_director} · {/if} + {/volist} +
+ +{elseif $variant == 18} +
+ + {volist name="arrVideo.v_actor" id="vo"}{$vo} {/volist} + {volist name="arrVideo.v_area" id="vo"}{$vo} {/volist} + {volist name="arrVideo.v_lang" id="vo"}{$vo} {/volist} + +
+ +{elseif $variant == 19} +
+

+ 主演: + {volist name="arrVideo.v_actor" id="vo" key="k"} + {$vo}{if $k < $len_actor}、{/if} + {/volist} +

+

+ 导演: + {volist name="arrVideo.v_director" id="vo" key="k"} + {$vo}{if $k < $len_director}、{/if} + {/volist} +

+
+ +{/if} diff --git a/code/app/home/view/videoGpt1/module/detail_main/title.html b/code/app/home/view/videoGpt1/module/detail_main/title.html new file mode 100644 index 0000000..8d61e57 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/detail_main/title.html @@ -0,0 +1,117 @@ +{// ===================== Title Variants ===================== } + +{if $variant == 0} +

+ {$arrVideo.v_name} +

+ +{elseif $variant == 1} +

+ {$arrVideo.v_name} + {$arrVideo.v_year} +

+ +{elseif $variant == 2} +

+ 《{$arrVideo.v_name}》 +

+ +{elseif $variant == 3} +
+

{$arrVideo.v_name}

+ {$arrVideo.v_year} +
+ +{elseif $variant == 4} +
+ {$arrVideo.v_name} +
+ +{elseif $variant == 5} +

+ {$arrVideo.v_name} + HD +

+ +{elseif $variant == 6} +
+

{$arrVideo.v_name}

+
+ +{elseif $variant == 7} +
+

{$arrVideo.v_name}

+
+ +{elseif $variant == 8} +
+
+ {$arrVideo.v_name} +
+
+ +{elseif $variant == 9} +

+ {$arrVideo.v_name} + 在线观看 +

+ +{elseif $variant == 10} +

+ {$arrVideo.v_name} +

+ +{elseif $variant == 11} +

+ {$arrVideo.v_name} +

+ +{elseif $variant == 12} +
+

+ {$arrVideo.v_name} + {$arrVideo.v_year} +

+
+ +{elseif $variant == 13} +

+ {$arrVideo.v_name} + {$arrVideo.v_score} +

+ +{elseif $variant == 14} +
+

{$arrVideo.v_name}

+ +
+ +{elseif $variant == 15} +

+ {$arrVideo.v_name} 免费高清完整版 +

+ +{elseif $variant == 16} +

+ {$arrVideo.v_name} +

+ +{elseif $variant == 17} +
+

{$arrVideo.v_name}

+
+ +{elseif $variant == 18} +

+ {$arrVideo.v_name} + + {$arrVideo.v_year} 在线观看 + +

+ +{elseif $variant == 19} +
+

{$arrVideo.v_name}

+
+ +{/if} diff --git a/code/app/home/view/videoGpt1/module/footer/foot_01.html b/code/app/home/view/videoGpt1/module/footer/foot_01.html new file mode 100644 index 0000000..5df2e8b --- /dev/null +++ b/code/app/home/view/videoGpt1/module/footer/foot_01.html @@ -0,0 +1,11 @@ + diff --git a/code/app/home/view/videoGpt1/module/footer/foot_02.html b/code/app/home/view/videoGpt1/module/footer/foot_02.html new file mode 100644 index 0000000..6ac3098 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/footer/foot_02.html @@ -0,0 +1,31 @@ + diff --git a/code/app/home/view/videoGpt1/module/footer/foot_03.html b/code/app/home/view/videoGpt1/module/footer/foot_03.html new file mode 100644 index 0000000..4b7badf --- /dev/null +++ b/code/app/home/view/videoGpt1/module/footer/foot_03.html @@ -0,0 +1,7 @@ + diff --git a/code/app/home/view/videoGpt1/module/footer/foot_04.html b/code/app/home/view/videoGpt1/module/footer/foot_04.html new file mode 100644 index 0000000..e3fb6d1 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/footer/foot_04.html @@ -0,0 +1,6 @@ + diff --git a/code/app/home/view/videoGpt1/module/footer/foot_05.html b/code/app/home/view/videoGpt1/module/footer/foot_05.html new file mode 100644 index 0000000..08343eb --- /dev/null +++ b/code/app/home/view/videoGpt1/module/footer/foot_05.html @@ -0,0 +1,6 @@ +
+ + 本站不提供视频存储服务 · 数据均来自互联网 + + © Media Engine +
diff --git a/code/app/home/view/videoGpt1/module/head/head_01.html b/code/app/home/view/videoGpt1/module/head/head_01.html new file mode 100644 index 0000000..e8fc1fa --- /dev/null +++ b/code/app/home/view/videoGpt1/module/head/head_01.html @@ -0,0 +1,8 @@ +
+
+ + +
+
diff --git a/code/app/home/view/videoGpt1/module/head/head_02.html b/code/app/home/view/videoGpt1/module/head/head_02.html new file mode 100644 index 0000000..543dc9a --- /dev/null +++ b/code/app/home/view/videoGpt1/module/head/head_02.html @@ -0,0 +1,8 @@ +
+
+ + +
+
diff --git a/code/app/home/view/videoGpt1/module/head/head_03.html b/code/app/home/view/videoGpt1/module/head/head_03.html new file mode 100644 index 0000000..d4005f5 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/head/head_03.html @@ -0,0 +1,8 @@ +
+
+ + +
+
diff --git a/code/app/home/view/videoGpt1/module/head/head_04.html b/code/app/home/view/videoGpt1/module/head/head_04.html new file mode 100644 index 0000000..ec9d019 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/head/head_04.html @@ -0,0 +1,8 @@ +
+
+ + +
+
diff --git a/code/app/home/view/videoGpt1/module/head/head_05.html b/code/app/home/view/videoGpt1/module/head/head_05.html new file mode 100644 index 0000000..e9628ed --- /dev/null +++ b/code/app/home/view/videoGpt1/module/head/head_05.html @@ -0,0 +1,8 @@ +
+
+ + +
+
diff --git a/code/app/home/view/videoGpt1/module/list/home_block.html b/code/app/home/view/videoGpt1/module/list/home_block.html new file mode 100644 index 0000000..42e4f90 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/home_block.html @@ -0,0 +1,24 @@ + +
+ + {// ===== Title ===== } + {include file="module/list/title/_title_router" /} + + {// ===== Shell + Item ===== } + {include file="module/list/shell/_shell_router" /} + +
+ + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/list/home_hot.html b/code/app/home/view/videoGpt1/module/list/home_hot.html new file mode 100644 index 0000000..39e9eff --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/home_hot.html @@ -0,0 +1,22 @@ + +{assign name="cfg" value="$TpStyle.template_cfg.list_layout.hot"} +{assign name="title" value="$TpStyle.template_cfg.list_layout.newest.title_text"} +{assign name="variant" value="$TpStyle.template_cfg.list_layout.newest.item_variant"} + +{// ===== 把数据注入到 Shell 统一入口 ===== } +{assign name="__LIST__" value="$arrVideoTuijian"} + +
+ + {// ===== Title ===== } + {include file="module/list/title/_title_router" /} + + {// ===== Shell + Behavior ===== } + + {include file="module/list/shell/_shell_router" /} + + +
+ +{// ===== 清理,避免污染下一个模块 ===== } +{assign name="__LIST__" value="null"} diff --git a/code/app/home/view/videoGpt1/module/list/home_newest.html b/code/app/home/view/videoGpt1/module/list/home_newest.html new file mode 100644 index 0000000..6666873 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/home_newest.html @@ -0,0 +1,20 @@ +{assign name="cfg" value="$TpStyle.template_cfg.list_layout.newest"} +{assign name="title" value="$TpStyle.template_cfg.list_layout.newest.title_text"} +{assign name="variant" value="$TpStyle.template_cfg.list_layout.newest.item_variant"} + +{// ===== 把数据注入到 Shell 统一入口 ===== } +{assign name="__LIST__" value="$arrVideoTuijian"} + +
+ + {// ===== Title ===== } + {include file="module/list/title/_title_router" /} + + {// ===== Shell + Behavior ===== } + {include file="module/list/shell/_shell_router" /} + + +
+ +{// ===== 清理,避免污染下一个模块 ===== } +{assign name="__LIST__" value="null"} diff --git a/code/app/home/view/videoGpt1/module/list/home_rank.html b/code/app/home/view/videoGpt1/module/list/home_rank.html new file mode 100644 index 0000000..c23225b --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/home_rank.html @@ -0,0 +1,22 @@ + +{assign name="cfg" value="$TpStyle.template_cfg.list_layout.rank"} +{assign name="title" value="$TpStyle.template_cfg.list_layout.newest.title_text"} +{assign name="variant" value="$TpStyle.template_cfg.list_layout.newest.item_variant"} + +{// ===== 把数据注入到 Shell 统一入口 ===== } +{assign name="__LIST__" value="$arrVideoTuijian"} + +
+ + {// ===== Title ===== } + {include file="module/list/title/_title_router" /} + + {// ===== Shell + Behavior ===== } + + {include file="module/list/shell/_shell_router" /} + + +
+ +{// ===== 清理,避免污染下一个模块 ===== } +{assign name="__LIST__" value="null"} diff --git a/code/app/home/view/videoGpt1/module/list/item/_item_router.html b/code/app/home/view/videoGpt1/module/list/item/_item_router.html new file mode 100644 index 0000000..2445dd5 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/item/_item_router.html @@ -0,0 +1,33 @@ +{php} +// 统一从 cfg 下发(冻结) +$variant = isset($cfg['item_variant']) ? intval($cfg['item_variant']) : 0; +{/php} + + +{switch $cfg.item} + +{case 01} + {include file="module/list/item/item_01" /} +{/case} + +{case 02} + {include file="module/list/item/item_02" /} +{/case} + +{case 03} + {include file="module/list/item/item_03" /} +{/case} + +{case 04} + {include file="module/list/item/item_04" /} +{/case} + +{case 05} + {include file="module/list/item/item_05" /} +{/case} + +{default} + {include file="module/list/item/item_01" /} +{/default} + +{/switch} diff --git a/code/app/home/view/videoGpt1/module/list/item/item_01.html b/code/app/home/view/videoGpt1/module/list/item/item_01.html new file mode 100644 index 0000000..a17d595 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/item/item_01.html @@ -0,0 +1,223 @@ + + +{if $variant == 0} +{// Variant 0:标准卡片 } +
+ +
+ {$vo.v_name} + {notempty name="vo.v_score"} + {$vo.v_score} + {/notempty} +
+
+

{$vo.v_name}

+

{$vo.v_year}

+ {notempty name="vo.v_remarks"}

{$vo.v_remarks}

{/notempty} +
+
+
+ +{elseif $variant == 1} +{// Variant 1:figure 语义 } +
  • +
    + + {$vo.v_name} +
    + {$vo.v_name} + {$vo.v_year} +
    +
    +
    +
  • + +{elseif $variant == 2} +{// Variant 2:信息前置 } +
    +
    +

    {$vo.v_name}

    +

    {$vo.v_year}

    +
    +
    + +
    +
    + +{elseif $variant == 3} +{// Variant 3:中间包裹层 } +
    + +
    + +{elseif $variant == 4} +{// Variant 4:标题包裹 } +
    +

    + {$vo.v_name} +

    +
    + +
    +
    + +{elseif $variant == 5} +{// Variant 5:span + div 混合 } +
    + + {$vo.v_name ?? ''} - {$vo.v_parent_category ?? ''}{$vo.v_category ?? ''}免费高清电影在线观看 + +
    + {$vo.v_name} + {$vo.v_year} +
    +
    + +{elseif $variant == 6} +{// Variant 6:强文本语义 } +
    +
    +

    {$vo.v_name}

    +
    + + + +
    + +{elseif $variant == 7} +{// Variant 7:反向嵌套 } +
    + +
    +

    {$vo.v_name}

    +

    {$vo.v_year}

    +
    +
    + +
    +
    +
    + +{elseif $variant == 8} +{// Variant 8:极简 } +
    + + + {$vo.v_name} + +
    + +{elseif $variant == 9} +{// Variant 9:多层包裹 } +
    +
    +
    + +
    +
    +

    {$vo.v_name}

    + {$vo.v_year} +
    +
    +
    + +{elseif $variant == 10} +{// Variant 10:aside 结构 } + + +{elseif $variant == 11} +{// Variant 11:dl / dt / dd } +
    +
    + + + +
    +
    {$vo.v_name}
    +
    + +{elseif $variant == 12} +{// Variant 12:section + header } +
    +
    {$vo.v_name}
    + + + +
    + +{elseif $variant == 13} +{// Variant 13:figure 无 figcaption } +
    + + + +
    + +{elseif $variant == 14} +{// Variant 14:strong 标题 } +
    + {$vo.v_name} + + + +
    + +{elseif $variant == 15} +{// Variant 15:p 包裹 } +
    +

    + + + {$vo.v_name} + +

    +
    + +{elseif $variant == 16} +{// Variant 16:div + data } +
    + + + {$vo.v_name} + +
    + +{elseif $variant == 17} +{// Variant 17:h4 } +
    +

    {$vo.v_name}

    + + + +
    + +{elseif $variant == 18} +{// Variant 18:纯链接卡 } + + + {$vo.v_name} + + +{else} +{// Variant 19:极端自由结构 } +
    + + {$vo.v_name} + + +
    +{/if} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/list/item/item_02.html b/code/app/home/view/videoGpt1/module/list/item/item_02.html new file mode 100644 index 0000000..d3b2ef7 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/item/item_02.html @@ -0,0 +1,607 @@ + + +{if $variant == 0} +{// V0 标准(你给的母型) } +
    + +
    + {$vo.v_name} + {notempty name="vo.v_score"} + {$vo.v_score} + {/notempty} +
    + +
    +

    {$vo.v_name}

    + +

    + {notempty name="vo.v_year"}{$vo.v_year}{/notempty} + {if isset($vo.v_area[0])} · {$vo.v_area[0]}{/if} +

    + + {if isset($vo.v_director[0])} +

    导演:{$vo.v_director[0]}

    + {/if} + + {if isset($vo.v_actor[0])} +

    主演:{$vo.v_actor[0]}

    + {/if} +
    +
    +
    + +{elseif $variant == 1} +{// V1 figure/figcaption 语义化 } +
  • + +
    + {$vo.v_name} + {notempty name="vo.v_score"} + {$vo.v_score} + {/notempty} +
    + +
    +

    {$vo.v_name}

    +

    + {notempty name="vo.v_year"}{$vo.v_year}{/notempty} + {if isset($vo.v_area[0])} · {$vo.v_area[0]}{/if} +

    + {if isset($vo.v_director[0])} +

    导演:{$vo.v_director[0]}

    + {/if} + {if isset($vo.v_actor[0])} +

    主演:{$vo.v_actor[0]}

    + {/if} +
    +
    +
  • + +{elseif $variant == 2} +{// V2 信息前置 + 封面后置(结构反转) } +
    +
    +

    + {$vo.v_name} +

    + +

    + {notempty name="vo.v_year"}{$vo.v_year}{/notempty} + {if isset($vo.v_area[0])} · {$vo.v_area[0]}{/if} +

    + + {if isset($vo.v_director[0])} +

    导演:{$vo.v_director[0]}

    + {/if} + + {if isset($vo.v_actor[0])} +

    主演:{$vo.v_actor[0]}

    + {/if} +
    + + +
    + {$vo.v_name} + {notempty name="vo.v_score"} + {$vo.v_score} + {/notempty} +
    +
    +
    + +{elseif $variant == 3} +{// V3 多层包裹:inner / media / text } +
    + +
    + +{elseif $variant == 4} +{// V4 header + section 分块 } +
    +
    +

    + {$vo.v_name} +

    +

    + {notempty name="vo.v_year"}{$vo.v_year}{/notempty} + {if isset($vo.v_area[0])} · {$vo.v_area[0]}{/if} +

    +
    + +
    + + {$vo.v_name} + {notempty name="vo.v_score"} + {$vo.v_score} + {/notempty} + +
    + +
    + {if isset($vo.v_director[0])} +

    导演:{$vo.v_director[0]}

    + {/if} + {if isset($vo.v_actor[0])} +

    主演:{$vo.v_actor[0]}

    + {/if} +
    +
    +{elseif $variant == 5} +{// V5 a 包裹只包 cover,标题单独 a(双入口) } +
    + +
    + {$vo.v_name} + {notempty name="vo.v_score"} + {$vo.v_score} + {/notempty} +
    +
    + +
    +

    + {$vo.v_name} +

    + +

    + {notempty name="vo.v_year"}{$vo.v_year}{/notempty} + {if isset($vo.v_area[0])} · {$vo.v_area[0]}{/if} +

    + + {if isset($vo.v_director[0])} +

    导演:{$vo.v_director[0]}

    + {/if} + + {if isset($vo.v_actor[0])} +

    主演:{$vo.v_actor[0]}

    + {/if} +
    +
    + +{elseif $variant == 6} +{// V6 nav 风格(技术人员很难一眼归类) } + + +{elseif $variant == 7} +{// V7 aside + main 结构 } +
    + + +
    +

    + {$vo.v_name} +

    +

    + {notempty name="vo.v_year"}{$vo.v_year}{/notempty} + {if isset($vo.v_area[0])} · {$vo.v_area[0]}{/if} +

    + {if isset($vo.v_director[0])} +

    导演:{$vo.v_director[0]}

    + {/if} + {if isset($vo.v_actor[0])} +

    主演:{$vo.v_actor[0]}

    + {/if} +
    +
    + +{elseif $variant == 8} +{// V8 标题在外层 header,link 只包内容区 } +
    +
    +

    {$vo.v_name}

    +
    + + +
    + {$vo.v_name} + {notempty name="vo.v_score"} + {$vo.v_score} + {/notempty} +
    + +
    +

    + {notempty name="vo.v_year"}{$vo.v_year}{/notempty} + {if isset($vo.v_area[0])} · {$vo.v_area[0]}{/if} +

    + {if isset($vo.v_director[0])} +

    导演:{$vo.v_director[0]}

    + {/if} + {if isset($vo.v_actor[0])} +

    主演:{$vo.v_actor[0]}

    + {/if} +
    +
    +
    + +{elseif $variant == 9} +{// V9 切分为两个链接块(cover/info 各自 a) } +
    + +
    + {$vo.v_name} + {notempty name="vo.v_score"} + {$vo.v_score} + {/notempty} +
    +
    + +
    +

    + {$vo.v_name} +

    +

    + {notempty name="vo.v_year"}{$vo.v_year}{/notempty} + {if isset($vo.v_area[0])} · {$vo.v_area[0]}{/if} +

    + {if isset($vo.v_director[0])} +

    导演:{$vo.v_director[0]}

    + {/if} + {if isset($vo.v_actor[0])} +

    主演:{$vo.v_actor[0]}

    + {/if} +
    +
    + +{elseif $variant == 10} +{// V10 dl/dt/dd 语义结构(很“独立站”) } +
    + +
    + {$vo.v_name} + {notempty name="vo.v_score"} + {$vo.v_score} + {/notempty} +
    + +
    +
    {$vo.v_name}
    +
    + {notempty name="vo.v_year"}{$vo.v_year}{/notempty} + {if isset($vo.v_area[0])} · {$vo.v_area[0]}{/if} +
    + {if isset($vo.v_director[0])} +
    导演:{$vo.v_director[0]}
    + {/if} + {if isset($vo.v_actor[0])} +
    主演:{$vo.v_actor[0]}
    + {/if} +
    +
    +
    + +{elseif $variant == 11} +{// V11 section + article 嵌套(深度变化) } +
    + +
    + +{elseif $variant == 12} +{// V12 picture 包裹 + strong/em } +
    + +
    + + {$vo.v_name} + + {notempty name="vo.v_score"} + {$vo.v_score} + {/notempty} +
    + +
    + {$vo.v_name} +

    + {notempty name="vo.v_year"}{$vo.v_year}{/notempty} + {if isset($vo.v_area[0])} · {$vo.v_area[0]}{/if} +

    + {if isset($vo.v_director[0])} +

    导演:{$vo.v_director[0]}

    + {/if} + {if isset($vo.v_actor[0])} +

    主演:{$vo.v_actor[0]}

    + {/if} +
    +
    +
    + +{elseif $variant == 13} +{// V13 ul/li 信息块(结构伪装成列表条目) } +
    + +
    + {$vo.v_name} + {notempty name="vo.v_score"} + {$vo.v_score} + {/notempty} +
    +
      +
    • {$vo.v_name}
    • +
    • + {notempty name="vo.v_year"}{$vo.v_year}{/notempty} + {if isset($vo.v_area[0])} · {$vo.v_area[0]}{/if} +
    • + {if isset($vo.v_director[0])} +
    • 导演:{$vo.v_director[0]}
    • + {/if} + {if isset($vo.v_actor[0])} +
    • 主演:{$vo.v_actor[0]}
    • + {/if} +
    +
    +
    + +{elseif $variant == 14} +{// V14 小标题 + 内容块分离(多层) } +
    +
    +

    {$vo.v_name}

    +

    + {notempty name="vo.v_year"}{$vo.v_year}{/notempty} + {if isset($vo.v_area[0])} · {$vo.v_area[0]}{/if} +

    +
    + + + +
    + {if isset($vo.v_director[0])} +

    导演:{$vo.v_director[0]}

    + {/if} + {if isset($vo.v_actor[0])} +

    主演:{$vo.v_actor[0]}

    + {/if} +
    +
    + +{elseif $variant == 15} +{// V15 强语义:header/aside/footer 三段 } +
    +
    +

    + {$vo.v_name} +

    +
    + + + +
    +

    + {notempty name="vo.v_year"}{$vo.v_year}{/notempty} + {if isset($vo.v_area[0])} · {$vo.v_area[0]}{/if} +

    + {if isset($vo.v_director[0])} +

    导演:{$vo.v_director[0]}

    + {/if} + {if isset($vo.v_actor[0])} +

    主演:{$vo.v_actor[0]}

    + {/if} +
    +
    + +{elseif $variant == 16} +{// V16 同 class 挂在不同标签(指纹扰动强) } +
    + +
    + {$vo.v_name} + {notempty name="vo.v_score"} + {$vo.v_score} + {/notempty} +
    + +
    +

    {$vo.v_name}

    +

    + {notempty name="vo.v_year"}{$vo.v_year}{/notempty} + {if isset($vo.v_area[0])} · {$vo.v_area[0]}{/if} +

    + {if isset($vo.v_director[0])} +

    导演:{$vo.v_director[0]}

    + {/if} + {if isset($vo.v_actor[0])} +

    主演:{$vo.v_actor[0]}

    + {/if} +
    +
    +
    + +{elseif $variant == 17} +{// V17 双层 link(外层 div 伪装) } +
    + + +
    +

    + {$vo.v_name} +

    +

    + {notempty name="vo.v_year"}{$vo.v_year}{/notempty} + {if isset($vo.v_area[0])} · {$vo.v_area[0]}{/if} +

    + {if isset($vo.v_director[0])} +

    导演:{$vo.v_director[0]}

    + {/if} + {if isset($vo.v_actor[0])} +

    主演:{$vo.v_actor[0]}

    + {/if} +
    +
    + +{elseif $variant == 18} +{// V18 compact 文本强:标题/信息同级 } +
    + +
    +

    {$vo.v_name}

    +
    + {notempty name="vo.v_year"}{$vo.v_year}{/notempty} + {if isset($vo.v_area[0])} · {$vo.v_area[0]}{/if} +
    + +
    + {if isset($vo.v_director[0])} +
    导演:{$vo.v_director[0]}
    + {/if} + {if isset($vo.v_actor[0])} +
    主演:{$vo.v_actor[0]}
    + {/if} +
    +
    + +
    + {$vo.v_name} + {notempty name="vo.v_score"} + {$vo.v_score} + {/notempty} +
    +
    +
    + +{else} +{// V19 最终扰动:ol/li 语义(但仍然是单 item) } +
      +
    1. + +
      + {$vo.v_name} + {notempty name="vo.v_score"} + {$vo.v_score} + {/notempty} +
      + +
      +

      {$vo.v_name}

      +

      + {notempty name="vo.v_year"}{$vo.v_year}{/notempty} + {if isset($vo.v_area[0])} · {$vo.v_area[0]}{/if} +

      + {if isset($vo.v_director[0])} +

      导演:{$vo.v_director[0]}

      + {/if} + {if isset($vo.v_actor[0])} +

      主演:{$vo.v_actor[0]}

      + {/if} +
      +
      +
    2. +
    +{/if} + + diff --git a/code/app/home/view/videoGpt1/module/list/item/item_03.html b/code/app/home/view/videoGpt1/module/list/item/item_03.html new file mode 100644 index 0000000..c66a5ed --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/item/item_03.html @@ -0,0 +1,136 @@ + +{if $variant == 0} +
    + + {$vo.v_name} + +
    +{elseif $variant == 1} + +
    + {$vo.v_name} +
    +
    +{elseif $variant == 2} +
    + + {$vo.v_name} + +
    +{elseif $variant == 3} +
    +

    + + {$vo.v_name} + +

    +
    +{elseif $variant == 4} +
    + + {$vo.v_name} + +
    +{elseif $variant == 5} +
    + + {$vo.v_name} + +
    +{elseif $variant == 6} +
    + +
    +{elseif $variant == 7} +
    + +
    +{elseif $variant == 8} +
    + + {$vo.v_name} + +
    +{elseif $variant == 9} +
    + + {$vo.v_name} + +
    +{elseif $variant == 10} +
    +
    + + {$vo.v_name} + +
    +
    +{elseif $variant == 11} +
    + +
    +{elseif $variant == 12} +
    + + {$vo.v_name} + +
    +{elseif $variant == 13} +
    + + {$vo.v_name}
    +
    +
    +{elseif $variant == 14} +
    + + {$vo.v_name} + +
    +{elseif $variant == 15} +
    + + {$vo.v_name} + +
    +{elseif $variant == 16} +
    + + {$vo.v_name} + +
    +{elseif $variant == 17} + +{elseif $variant == 18} +
    + +
    +{else} + +
    + {$vo.v_name} +
    +
    +{/if} + + diff --git a/code/app/home/view/videoGpt1/module/list/item/item_04.html b/code/app/home/view/videoGpt1/module/list/item/item_04.html new file mode 100644 index 0000000..d41daa2 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/item/item_04.html @@ -0,0 +1,239 @@ + + +{if $variant == 0} +{// Variant 00:原始基准 } +
    + +
    + {$vo.v_name} + {if isset($vo.v_level)} + {$vo.v_level} + {/if} +
    +
    +

    {$vo.v_name}

    +
    + {if isset($vo.v_year)}{$vo.v_year}{/if} + {if isset($vo.v_area[0])}{$vo.v_area[0]}{/if} +
    +
    +
    +
    + +{elseif $variant == 1} +{// Variant 01:article → section } +
    + +
    + {$vo.v_name} + {if isset($vo.v_level)}{$vo.v_level}{/if} +
    +
    +

    {$vo.v_name}

    +
    +
    +
    + +{elseif $variant == 2} +{// Variant 02:a 外包 } + +
    + {$vo.v_name} + {if isset($vo.v_level)}{$vo.v_level}{/if} +
    +
    +

    {$vo.v_name}

    +
    +
    + +{elseif $variant == 3} +{// Variant 03:header / footer } +
    + +
    + {$vo.v_name} +
    +
    + {$vo.v_name} + {if isset($vo.v_level)}{$vo.v_level}{/if} +
    +
    +
    + +{elseif $variant == 4} +{// Variant 04:figure / figcaption } +
    + +
    + {$vo.v_name} + {if isset($vo.v_level)}
    {$vo.v_level}
    {/if} +
    +
    +

    {$vo.v_name}

    +
    +
    +
    + +{elseif $variant == 5} +{// Variant 05:meta 改为 p } +
    + +
    + {$vo.v_name} +
    +
    +

    {$vo.v_name}

    +

    + {if isset($vo.v_year)}{$vo.v_year}{/if} + {if isset($vo.v_area[0])} · {$vo.v_area[0]}{/if} +

    +
    +
    +
    + +{elseif $variant == 6} +{// Variant 06:strong title } +
    + +
    + {$vo.v_name} +
    +
    + {$vo.v_name} +
    +
    +
    + +{elseif $variant == 7} +{// Variant 07:div 层级加深 } +
    + +
    + +{elseif $variant == 8} +{// Variant 08:nav } + + +{elseif $variant == 9} +{// Variant 09:small meta } +
    + +
    + {$vo.v_name} +
    + {$vo.v_name} +
    +
    + +{elseif $variant == 10} +{// Variant 10:title 在 cover 内 } +
    + +
    + {$vo.v_name} + {$vo.v_name} +
    +
    +
    + +{elseif $variant == 11} +{// Variant 11:去 info } +
    + + {$vo.v_name} +

    {$vo.v_name}

    +
    +
    + +{elseif $variant == 12} +{// Variant 12:score 提前 } +
    + {if isset($vo.v_level)}{$vo.v_level}{/if} + + {$vo.v_name} +

    {$vo.v_name}

    +
    +
    + +{elseif $variant == 13} +{// Variant 13:em title } +
    + + {$vo.v_name} + {$vo.v_name} + +
    + +{elseif $variant == 14} +{// Variant 14:多 span } +
    + + + {$vo.v_name} + + {$vo.v_name} + +
    + +{elseif $variant == 15} +{// Variant 15:article 外包 } + +
    + {$vo.v_name} + {$vo.v_name} +
    +
    + +{elseif $variant == 16} +{// Variant 16:section + h4 } +
    + + {$vo.v_name} +

    {$vo.v_name}

    +
    +
    + +{elseif $variant == 17} +{// Variant 17:p title } +
    + + {$vo.v_name} +

    {$vo.v_name}

    +
    +
    + +{elseif $variant == 18} +{// Variant 18:label } +
    + +
    + +{else} +{// Variant 19:极简反转 } + +
    + {$vo.v_name} +
    +
    +{/if} diff --git a/code/app/home/view/videoGpt1/module/list/item/item_05.html b/code/app/home/view/videoGpt1/module/list/item/item_05.html new file mode 100644 index 0000000..2830626 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/item/item_05.html @@ -0,0 +1,158 @@ + + +{if $variant == 0} +{// Variant 00:原始基准 } +
    + {$i} + + {$vo.v_name} + +
    + +{elseif $variant == 1} +{// Variant 01:article } +
    + {$i} + {$vo.v_name} +
    + +{elseif $variant == 2} +{// Variant 02:a 外包 } + + {$i} + {$vo.v_name} + + +{elseif $variant == 3} +{// Variant 03:header / footer } +
    +
    {$i}
    + +
    + +{elseif $variant == 4} +{// Variant 04:strong } +
    + {$i} + + {$vo.v_name} + +
    + +{elseif $variant == 5} +{// Variant 05:em } +
    + {$i} + {$vo.v_name} +
    + +{elseif $variant == 6} +{// Variant 06:p 包裹 } +
    +

    + {$i} + {$vo.v_name} +

    +
    + +{elseif $variant == 7} +{// Variant 07:div 层级 } +
    +
    {$i}
    + +
    + +{elseif $variant == 8} +{// Variant 08:nav } + + +{elseif $variant == 9} +{// Variant 09:small } +
    + {$i} + {$vo.v_name} +
    + +{elseif $variant == 10} +{// Variant 10:label } +
    + +
    + +{elseif $variant == 11} +{// Variant 11:section } +
    + {$i} + {$vo.v_name} +
    + +{elseif $variant == 12} +{// Variant 12:h4 } +
    + {$i} +

    + {$vo.v_name} +

    +
    + +{elseif $variant == 13} +{// Variant 13:strong title } +
    + {$i} + + {$vo.v_name} + +
    + +{elseif $variant == 14} +{// Variant 14:span 全包 } + + {$i} + {$vo.v_name} + + +{elseif $variant == 15} +{// Variant 15:a + em } + + {$i} + {$vo.v_name} + + +{elseif $variant == 16} +{// Variant 16:li } +
  • + {$i} + {$vo.v_name} +
  • + +{elseif $variant == 17} +{// Variant 17:div + data } +
    + + {$i}. {$vo.v_name} + +
    + +{elseif $variant == 18} +{// Variant 18:text 优先 } +
    + {$i} + {$vo.v_name} +
    + +{else} +{// Variant 19:极简 } + + {$i}. {$vo.v_name} + +{/if} diff --git a/code/app/home/view/videoGpt1/module/list/list_router.html b/code/app/home/view/videoGpt1/module/list/list_router.html new file mode 100644 index 0000000..e69de29 diff --git a/code/app/home/view/videoGpt1/module/list/shell/_shell_router.html b/code/app/home/view/videoGpt1/module/list/shell/_shell_router.html new file mode 100644 index 0000000..8ac275d --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/shell/_shell_router.html @@ -0,0 +1,23 @@ +{switch $cfg.shell} + +{case A} + {include file="module/list/shell/shell_A" /} +{/case} + +{case B} + {include file="module/list/shell/shell_B" /} +{/case} + +{case C} + {include file="module/list/shell/shell_C" /} +{/case} + +{case D} + {include file="module/list/shell/shell_D" /} +{/case} + +{default} + {include file="module/list/shell/shell_A" /} +{/default} + +{/switch} diff --git a/code/app/home/view/videoGpt1/module/list/shell/shell_A.html b/code/app/home/view/videoGpt1/module/list/shell/shell_A.html new file mode 100644 index 0000000..8a1ce34 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/shell/shell_A.html @@ -0,0 +1,18 @@ +
    + {notempty name="__LIST__"} +
    + {volist name="__LIST__" id="vo" key="i"} + {// 这里由上层决定具体使用哪一个 item 模板 } + {assign name="item_type" value="$cfg.item_type|default='poster'"} + {include file="module/list/item/_item_router" /} + + + {/volist} +
    + {/notempty} +
    \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/list/shell/shell_B.html b/code/app/home/view/videoGpt1/module/list/shell/shell_B.html new file mode 100644 index 0000000..5c5521d --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/shell/shell_B.html @@ -0,0 +1,16 @@ +
    + {notempty name="__LIST__"} +
    + {volist name="__LIST__" id="vo" key="i"} + {// Item 模板由上层决定,如 item_01 / item_04 } + {assign name="item_type" value="$cfg.item_type|default='poster'"} + {include file="module/list/item/_item_router" /} + {/volist} +
    + {/notempty} +
    diff --git a/code/app/home/view/videoGpt1/module/list/shell/shell_C.html b/code/app/home/view/videoGpt1/module/list/shell/shell_C.html new file mode 100644 index 0000000..a17b63d --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/shell/shell_C.html @@ -0,0 +1,17 @@ +
    + {notempty name="__LIST__"} +
      + {volist name="__LIST__" id="vo" key="i"} + {// 榜单类推荐 item_03 / item_05 } + {assign name="item_type" value="$cfg.item_type|default='poster'"} + {include file="module/list/item/_item_router" /} + + {/volist} +
    + {/notempty} +
    diff --git a/code/app/home/view/videoGpt1/module/list/shell/shell_D.html b/code/app/home/view/videoGpt1/module/list/shell/shell_D.html new file mode 100644 index 0000000..278744a --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/shell/shell_D.html @@ -0,0 +1,32 @@ +
    + {notempty name="__GROUPS__"} + {volist name="__GROUPS__" id="group"} +
    + + {notempty name="group.title"} +
    +

    + {$group.title} +

    +
    + {/notempty} + + {notempty name="group.list"} +
    + {volist name="group.list" id="vo" key="i"} + {// Item 模板由上层决定 } + {assign name="item_type" value="$cfg.item_type|default='poster'"} + {include file="module/list/item/_item_router" /} + {/volist} +
    + {/notempty} + +
    + {/volist} + {/notempty} +
    diff --git a/code/app/home/view/videoGpt1/module/list/title/_title_router.html b/code/app/home/view/videoGpt1/module/list/title/_title_router.html new file mode 100644 index 0000000..a64b0a1 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/title/_title_router.html @@ -0,0 +1,27 @@ +{switch $cfg.title} + +{case A} + {include file="module/list/title/title_A" /} +{/case} + +{case B} + {include file="module/list/title/title_B" /} +{/case} + +{case C} + {include file="module/list/title/title_C" /} +{/case} + +{case D} + {include file="module/list/title/title_D" /} +{/case} + +{case E} + {include file="module/list/title/title_E" /} +{/case} + +{default} + {include file="module/list/title/title_A" /} +{/default} + +{/switch} diff --git a/code/app/home/view/videoGpt1/module/list/title/title_A.html b/code/app/home/view/videoGpt1/module/list/title/title_A.html new file mode 100644 index 0000000..eccb26b --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/title/title_A.html @@ -0,0 +1,10 @@ +
    +

    + {$title.primary} +

    + {notempty name="title.secondary"} +

    + {$title.secondary} +

    + {/notempty} +
    diff --git a/code/app/home/view/videoGpt1/module/list/title/title_B.html b/code/app/home/view/videoGpt1/module/list/title/title_B.html new file mode 100644 index 0000000..a26ba7e --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/title/title_B.html @@ -0,0 +1,6 @@ +
    +

    {$title.primary}

    + {notempty name="title.secondary"} + {$title.secondary} + {/notempty} +
    diff --git a/code/app/home/view/videoGpt1/module/list/title/title_C.html b/code/app/home/view/videoGpt1/module/list/title/title_C.html new file mode 100644 index 0000000..8daa160 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/title/title_C.html @@ -0,0 +1,3 @@ +
    +

    {$title.seo}

    +
    diff --git a/code/app/home/view/videoGpt1/module/list/title/title_D.html b/code/app/home/view/videoGpt1/module/list/title/title_D.html new file mode 100644 index 0000000..1f8f682 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/title/title_D.html @@ -0,0 +1,4 @@ +
    + +

    {$title.primary}

    +
    diff --git a/code/app/home/view/videoGpt1/module/list/title/title_E.html b/code/app/home/view/videoGpt1/module/list/title/title_E.html new file mode 100644 index 0000000..9592040 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/title/title_E.html @@ -0,0 +1,4 @@ +
    + TOP +

    {$title.primary}

    +
    diff --git a/code/app/home/view/videoGpt1/module/list/title/title_F.html b/code/app/home/view/videoGpt1/module/list/title/title_F.html new file mode 100644 index 0000000..d7f5c3f --- /dev/null +++ b/code/app/home/view/videoGpt1/module/list/title/title_F.html @@ -0,0 +1,21 @@ +
    +
    +

    + {$title.primary} +

    + + {if !empty($title.secondary)} + + {$title.secondary} + + {/if} +
    + + {if !empty($moreUrl)} + + {/if} +
    diff --git a/code/app/home/view/videoGpt1/module/lists/lists_router.html b/code/app/home/view/videoGpt1/module/lists/lists_router.html new file mode 100644 index 0000000..e69de29 diff --git a/code/app/home/view/videoGpt1/module/module.rar b/code/app/home/view/videoGpt1/module/module.rar new file mode 100644 index 0000000..6c61ae6 Binary files /dev/null and b/code/app/home/view/videoGpt1/module/module.rar differ diff --git a/code/app/home/view/videoGpt1/module/newest/newest_01.html b/code/app/home/view/videoGpt1/module/newest/newest_01.html new file mode 100644 index 0000000..7ec1306 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/newest/newest_01.html @@ -0,0 +1,15 @@ +
    +

    最新更新

    + +
    + {volist name="arrVideoNewest" id="vo" offset="0" length="8"} + + {$vo.v_name} +

    {$vo.v_name}

    +
    + {/volist} +
    +
    diff --git a/code/app/home/view/videoGpt1/module/newest/newest_02.html b/code/app/home/view/videoGpt1/module/newest/newest_02.html new file mode 100644 index 0000000..2ac71b5 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/newest/newest_02.html @@ -0,0 +1,14 @@ +
    +
    最新上线
    + +
    + {volist name="arrVideoNewest" id="vo" offset="0" length="12"} + + + {$vo.v_name} + + {/volist} +
    +
    diff --git a/code/app/home/view/videoGpt1/module/newest/newest_03.html b/code/app/home/view/videoGpt1/module/newest/newest_03.html new file mode 100644 index 0000000..cb54f35 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/newest/newest_03.html @@ -0,0 +1,17 @@ +
    +

    今日更新

    + +
    + {volist name="arrVideoNewest" id="vo" offset="0" length="6"} + + +
    +

    {$vo.v_name}

    +

    全新剧集已更新

    +
    +
    + {/volist} +
    +
    diff --git a/code/app/home/view/videoGpt1/module/newest/newest_04.html b/code/app/home/view/videoGpt1/module/newest/newest_04.html new file mode 100644 index 0000000..46c1877 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/newest/newest_04.html @@ -0,0 +1,16 @@ +
    +

    更新速递

    + + +
    diff --git a/code/app/home/view/videoGpt1/module/newest/newest_05.html b/code/app/home/view/videoGpt1/module/newest/newest_05.html new file mode 100644 index 0000000..c0783c6 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/newest/newest_05.html @@ -0,0 +1,12 @@ +
    +
    最新上架
    + +
    + {volist name="arrVideoNewest" id="vo" offset="0" length="10"} + + + {$vo.v_name} + + {/volist} +
    +
    diff --git a/code/app/home/view/videoGpt1/module/page/page_router.html b/code/app/home/view/videoGpt1/module/page/page_router.html new file mode 100644 index 0000000..b2a9c38 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/page/page_router.html @@ -0,0 +1,61 @@ +{volist name="pageCfg.modules" id="module"} + + {switch $module} + + {case value="seowords"} + {include file="module/seowords/seowords_router" /} + {/case} + + {case value="breadcrumb"} + {include file="module/breadcrumb/breadcrumb_router" /} + {/case} + + {case value="detail_main"} + {include file="module/detail_main/detail_main_router" /} + {/case} + + {case value="player"} + + {include file="module/player/player_router" /} + {/case} + + {case value="playline"} + {include file="module/playline/playline_router" /} + {/case} + + {case value="list"} + + {notempty name="pageCfg.list.modules"} + + {volist name="pageCfg.list.modules" id="module"} + + {assign name="cfg" value="$TpStyle.template_cfg.list_layout[$module]"} + + {assign name="title" value="$cfg.title_text"} + + {include file="module/list/title/title_A" /} + + {assign name="listCfg" value="$TpStyle.list_layout[$module]" /} + + {assign name="limit" value="$cfg['layout']['max_items']"} + + {if $module == 'rank'} + {video:ranklistexp count="$limit" sort_type="weekly" d_key="key" d_val="Video" cache_life="3600" v_parent_category_en="$Request.route.strParentCategory" + export_name="__LIST__" /} + + {else/} + {video:listexp count="$limit" sort_type="$module" d_key="key" d_val="Video" cache_life="3600" v_parent_category_en="$Request.route.strParentCategory" + export_name="__LIST__" /} + {/if} + + {include file="module/list/shell/_shell_router" /} + + {/volist} + + {/notempty} + + {/case} + + {/switch} + +{/volist} diff --git a/code/app/home/view/videoGpt1/module/pager/_pager_router.html b/code/app/home/view/videoGpt1/module/pager/_pager_router.html new file mode 100644 index 0000000..db55d7e --- /dev/null +++ b/code/app/home/view/videoGpt1/module/pager/_pager_router.html @@ -0,0 +1,67 @@ +{php} +// cfg 统一入口 +$family = $pagerCfg['family'] ?? 'numeric'; +$variant = isset($pagerCfg['variant']) ? intval($pagerCfg['variant']) : 0; +$tone = isset($pagerCfg['tone']) ? intval($pagerCfg['tone']) : 1; + +// 1. 基础数据 +$pagerArr = $pagerArr ?? []; +$page = $page ?? 1; +$pages = $pages ?? 1; + + +// 3. 计算首页 / 末页 URL +$first_url = null; +$last_url = null; + +foreach ($pagerArr as $it) { + if ($it['type'] === 'page') { + if ($first_url === null) $first_url = $it['url'] ?? null; + $last_url = $it['url'] ?? $last_url; + } +} + +// 4. ★ 核心:统一生成 baseCls(一次性解决 Undefined $baseCls) +$baseCls = $TpStyle['dom_prefix'] + . '-pager ' + . 'pg-' . $family + . ' tone-' . intval($tone) + . ' v' . intval($variant); + +// 没数据就不渲染 +if (empty($pagerArr) || $pages <= 1) { + return; +} +{/php} + + +{switch $family} + +{case value="numeric"} + {include file="module/pager/pager_numeric" /} +{/case} + +{case value="pill"} + {include file="module/pager/pager_pill" /} +{/case} + +{case value="block"} + {include file="module/pager/pager_block" /} +{/case} + +{case value="input"} + {include file="module/pager/pager_input" /} +{/case} + +{case value="minimal"} + {include file="module/pager/pager_minimal" /} +{/case} + +{default} + {include file="module/pager/pager_numeric" /} +{/default} + +{/switch} + + + diff --git a/code/app/home/view/videoGpt1/module/pager/pager_block.html b/code/app/home/view/videoGpt1/module/pager/pager_block.html new file mode 100644 index 0000000..29663fc --- /dev/null +++ b/code/app/home/view/videoGpt1/module/pager/pager_block.html @@ -0,0 +1,739 @@ +{switch $variant} +{case value="0"} +
    +
    第 {$page} / {$pages} 页
    +
    + 首页 + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} + + {if !empty($it.disabled) || empty($it.url)} + 上一页 + {else/} + 上一页 + {/if} + + {elseif $it.type=="next"} + + {if !empty($it.disabled) || empty($it.url)} + 下一页 + {else/} + 下一页 + {/if} + + {elseif $it.type=="page"} + + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} + + {/if} + {/volist} + 末页 +
    +
    +{/case} + +{case value="1"} +
    + +
    +{/case} + +{case value="2"} + +{/case} + +{case value="3"} + +{/case} + +{case value="4"} + +{/case} + +{case value="5"} +
    +
    第 {$page} / {$pages} 页
    +
      + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} +
    1. + {if !empty($it.disabled) || empty($it.url)} + « + {else/} + « + {/if} +
    2. + {elseif $it.type=="next"} +
    3. + {if !empty($it.disabled) || empty($it.url)} + » + {else/} + » + {/if} +
    4. + {elseif $it.type=="page"} +
    5. + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} +
    6. + {/if} + {/volist} +
    +
    +{/case} + +{case value="6"} +
    +
    + 首页 + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} + + {if !empty($it.disabled) || empty($it.url)} + Back + {else/} + Back + {/if} + + {elseif $it.type=="next"} + + {if !empty($it.disabled) || empty($it.url)} + More + {else/} + More + {/if} + + {elseif $it.type=="page"} + + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} + + {/if} + {/volist} + 末页 +
    +
    +{/case} + +{case value="7"} + +{/case} + +{case value="8"} + +{/case} + +{case value="9"} + +{/case} + +{case value="10"} +
    +
    第 {$page} / {$pages} 页
    + +
    +{/case} + +{case value="11"} +
    +
      + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} +
    1. + {if !empty($it.disabled) || empty($it.url)} + + {else/} + + {/if} +
    2. + {elseif $it.type=="next"} +
    3. + {if !empty($it.disabled) || empty($it.url)} + + {else/} + + {/if} +
    4. + {elseif $it.type=="page"} +
    5. + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} +
    6. + {/if} + {/volist} +
    +
    +{/case} + +{case value="12"} + +{/case} + +{case value="13"} + +{/case} + +{case value="14"} + +{/case} + +{case value="15"} +
    +
    第 {$page} / {$pages} 页
    +
    + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} +
  • + {if !empty($it.disabled) || empty($it.url)} + + {else/} + + {/if} +
  • + {elseif $it.type=="next"} +
  • + {if !empty($it.disabled) || empty($it.url)} + + {else/} + + {/if} +
  • + {elseif $it.type=="page"} +
  • + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} +
  • + {/if} + {/volist} +
    +
    +{/case} + +{case value="16"} +
    + +
    +{/case} + +{case value="17"} + +{/case} + +{case value="18"} + +{/case} + +{case value="19"} + +{/case} + +{default} + +{/default} +{/switch} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/pager/pager_input.html b/code/app/home/view/videoGpt1/module/pager/pager_input.html new file mode 100644 index 0000000..9146ad3 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/pager/pager_input.html @@ -0,0 +1,837 @@ +{switch $variant} +{case value="0"} + +{/case} + +{case value="1"} +
    +
      + 首页 + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} + + {if !empty($it.disabled) || empty($it.url)} + 上一页 + {else/} + 上一页 + {/if} + + {elseif $it.type=="next"} + + {if !empty($it.disabled) || empty($it.url)} + 下一页 + {else/} + 下一页 + {/if} + + {elseif $it.type=="page"} + + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} + + {/if} + {/volist} + 末页 +
    +
    +{/case} + +{case value="2"} +
    +
    第 {$page} / {$pages} 页
    +
    +
  • 首页
  • + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} +
  • + {if !empty($it.disabled) || empty($it.url)} + 上一页 + {else/} + 上一页 + {/if} +
  • + {elseif $it.type=="next"} +
  • + {if !empty($it.disabled) || empty($it.url)} + 下一页 + {else/} + 下一页 + {/if} +
  • + {elseif $it.type=="page"} +
  • + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} +
  • + {/if} + {/volist} +
  • 末页
  • +
    + +
    + + + +
    +
    +{/case} + +{case value="3"} + +{/case} + +{case value="4"} + +{/case} + +{case value="5"} + +{/case} + +{case value="6"} +
    +
    第 {$page} / {$pages} 页
    + + +
    + + + +
    +
    +{/case} + +{case value="7"} +
    +
      + 首页 + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} + + {if !empty($it.disabled) || empty($it.url)} + 上一页 + {else/} + 上一页 + {/if} + + {elseif $it.type=="next"} + + {if !empty($it.disabled) || empty($it.url)} + 下一页 + {else/} + 下一页 + {/if} + + {elseif $it.type=="page"} + + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} + + {/if} + {/volist} + 末页 +
    +
    +{/case} + +{case value="8"} + +{/case} + +{case value="9"} + +{/case} + +{case value="10"} + +{/case} + +{case value="11"} +
    +
    + 首页 + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} + + {if !empty($it.disabled) || empty($it.url)} + 上一页 + {else/} + 上一页 + {/if} + + {elseif $it.type=="next"} + + {if !empty($it.disabled) || empty($it.url)} + 下一页 + {else/} + 下一页 + {/if} + + {elseif $it.type=="page"} + + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} + + {/if} + {/volist} + 末页 +
    +
    +{/case} + +{case value="12"} +
    +
    第 {$page} / {$pages} 页
    + + +
    + + + +
    +
    +{/case} + +{case value="13"} + +{/case} + +{case value="14"} + +{/case} + +{case value="15"} + +{/case} + +{case value="16"} +
    +
    第 {$page} / {$pages} 页
    +
      +
    1. 首页
    2. + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} +
    3. + {if !empty($it.disabled) || empty($it.url)} + 上一页 + {else/} + 上一页 + {/if} +
    4. + {elseif $it.type=="next"} +
    5. + {if !empty($it.disabled) || empty($it.url)} + 下一页 + {else/} + 下一页 + {/if} +
    6. + {elseif $it.type=="page"} +
    7. + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} +
    8. + {/if} + {/volist} +
    9. 末页
    10. +
    + +
    + + + +
    +
    +{/case} + +{case value="17"} +
    +
    + 首页 + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} + + {if !empty($it.disabled) || empty($it.url)} + 上一页 + {else/} + 上一页 + {/if} + + {elseif $it.type=="next"} + + {if !empty($it.disabled) || empty($it.url)} + 下一页 + {else/} + 下一页 + {/if} + + {elseif $it.type=="page"} + + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} + + {/if} + {/volist} + 末页 +
    +
    +{/case} + +{case value="18"} + +{/case} + +{case value="19"} + +{/case} + +{default} + +{/default} +{/switch} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/pager/pager_minimal.html b/code/app/home/view/videoGpt1/module/pager/pager_minimal.html new file mode 100644 index 0000000..f153ac3 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/pager/pager_minimal.html @@ -0,0 +1,732 @@ +{switch $variant} +{case value="0"} + +{/case} + +{case value="1"} +
    +
    + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} +
  • + {if !empty($it.disabled) || empty($it.url)} + + {else/} + + {/if} +
  • + {elseif $it.type=="next"} +
  • + {if !empty($it.disabled) || empty($it.url)} + + {else/} + + {/if} +
  • + {elseif $it.type=="page"} +
  • + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} +
  • + {/if} + {/volist} +
    +
    +{/case} + +{case value="2"} +
    + +
    +{/case} + +{case value="3"} + +{/case} + +{case value="4"} + +{/case} + +{case value="5"} + +{/case} + +{case value="6"} +
    +
    第 {$page} / {$pages} 页
    +
      + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} + + {if !empty($it.disabled) || empty($it.url)} + 上一页 + {else/} + 上一页 + {/if} + + {elseif $it.type=="next"} + + {if !empty($it.disabled) || empty($it.url)} + 下一页 + {else/} + 下一页 + {/if} + + {elseif $it.type=="page"} + + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} + + {/if} + {/volist} +
    +
    +{/case} + +{case value="7"} +
    +
    + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} +
  • + {if !empty($it.disabled) || empty($it.url)} + + {else/} + + {/if} +
  • + {elseif $it.type=="next"} +
  • + {if !empty($it.disabled) || empty($it.url)} + + {else/} + + {/if} +
  • + {elseif $it.type=="page"} +
  • + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} +
  • + {/if} + {/volist} +
    +
    +{/case} + +{case value="8"} + +{/case} + +{case value="9"} + +{/case} + +{case value="10"} + +{/case} + +{case value="11"} +
    + +
    +{/case} + +{case value="12"} +
    +
    第 {$page} / {$pages} 页
    +
      + 首页 + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} + + {if !empty($it.disabled) || empty($it.url)} + 上一页 + {else/} + 上一页 + {/if} + + {elseif $it.type=="next"} + + {if !empty($it.disabled) || empty($it.url)} + 下一页 + {else/} + 下一页 + {/if} + + {elseif $it.type=="page"} + + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} + + {/if} + {/volist} + 末页 +
    +
    +{/case} + +{case value="13"} + +{/case} + +{case value="14"} + +{/case} + +{case value="15"} + +{/case} + +{case value="16"} +
    +
    + 首页 + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} + + {if !empty($it.disabled) || empty($it.url)} + 上一页 + {else/} + 上一页 + {/if} + + {elseif $it.type=="next"} + + {if !empty($it.disabled) || empty($it.url)} + 下一页 + {else/} + 下一页 + {/if} + + {elseif $it.type=="page"} + + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} + + {/if} + {/volist} + 末页 +
    +
    +{/case} + +{case value="17"} +
    + +
    +{/case} + +{case value="18"} + +{/case} + +{case value="19"} + +{/case} + +{default} + +{/default} +{/switch} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/pager/pager_numeric.html b/code/app/home/view/videoGpt1/module/pager/pager_numeric.html new file mode 100644 index 0000000..aca1acc --- /dev/null +++ b/code/app/home/view/videoGpt1/module/pager/pager_numeric.html @@ -0,0 +1,878 @@ +{switch $variant} +{case value="0"} + +{/case} +{case value="1"} +
    + +
    + +{/case} +{case value="2"} +{// Variant 02 } +
    +
      + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} +
    1. + {if !empty($it.disabled) || empty($it.url)} + 上一页 + {else/} + 上一页 + {/if} +
    2. + {elseif $it.type=="next"} +
    3. + {if !empty($it.disabled) || empty($it.url)} + 下一页 + {else/} + 下一页 + {/if} +
    4. + {elseif $it.type=="page"} +
    5. + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} +
    6. + {/if} + {/volist} +
    +
    + +{/case} +{case value="3"} +{// Variant 03 } + + +{/case} +{case value="4"} +{// Variant 04 } + + +{/case} +{case value="5"} +{// Variant 05 } + + +{/case} +{case value="6"} +{// Variant 06 } +
    + +
    + +{/case} +{case value="7"} +{// Variant 07 } +
    + +
    + + + +
    +
    + +{/case} +{case value="8"} +{// Variant 08 } + + +{/case} +{case value="9"} +{// Variant 09 } + + +{/case} +{case value="10"} +{// Variant 10 } + + +{/case} +{case value="11"} +{// Variant 11 } +
    +
    + + 首页 + + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} + + {if !empty($it.disabled) || empty($it.url)} + 上一页 + {else/} + 上一页 + {/if} + + {elseif $it.type=="next"} + + {if !empty($it.disabled) || empty($it.url)} + 下一页 + {else/} + 下一页 + {/if} + + {elseif $it.type=="page"} + + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} + + {/if} + {/volist} + + 末页 + +
    +
    + +{/case} +{case value="12"} +{// Variant 12 } +
    + +
    + +{/case} +{case value="13"} +{// Variant 13 } + + +{/case} +{case value="14"} +{// Variant 14 } + + +{/case} +{case value="15"} +{// Variant 15 } + + +{/case} +{case value="16"} +{// Variant 16 } +
    +
    + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} + + {if !empty($it.disabled) || empty($it.url)} + 上一页 + {else/} + 上一页 + {/if} + + {elseif $it.type=="next"} + + {if !empty($it.disabled) || empty($it.url)} + 下一页 + {else/} + 下一页 + {/if} + + {elseif $it.type=="page"} + + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} + + {/if} + {/volist} +
    +
    + +{/case} +{case value="17"} +{// Variant 17 } +
    +
    + + 首页 + + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} + + {if !empty($it.disabled) || empty($it.url)} + 上一页 + {else/} + 上一页 + {/if} + + {elseif $it.type=="next"} + + {if !empty($it.disabled) || empty($it.url)} + 下一页 + {else/} + 下一页 + {/if} + + {elseif $it.type=="page"} + + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} + + {/if} + {/volist} + + 末页 + +
    +
    + + + +
    +
    + +{/case} +{case value="18"} +{// Variant 18 } + + +{/case} +{case value="19"} +{// Variant 19 } + +{/case} + +{default} + +{/default} + +{/switch} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/pager/pager_pill.html b/code/app/home/view/videoGpt1/module/pager/pager_pill.html new file mode 100644 index 0000000..ff48fc9 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/pager/pager_pill.html @@ -0,0 +1,736 @@ +{switch $variant} +{case value="0"} + +{/case} + +{case value="1"} +
    +
      + 首页 + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} + + {if !empty($it.disabled) || empty($it.url)} + 上一页 + {else/} + 上一页 + {/if} + + {elseif $it.type=="next"} + + {if !empty($it.disabled) || empty($it.url)} + 下一页 + {else/} + 下一页 + {/if} + + {elseif $it.type=="page"} + + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} + + {/if} + {/volist} + 末页 +
    +
    +{/case} + +{case value="2"} +
    +
    + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} +
  • + {if !empty($it.disabled) || empty($it.url)} + Prev + {else/} + Prev + {/if} +
  • + {elseif $it.type=="next"} +
  • + {if !empty($it.disabled) || empty($it.url)} + Next + {else/} + Next + {/if} +
  • + {elseif $it.type=="page"} +
  • + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} +
  • + {/if} + {/volist} +
    +
    +{/case} + +{case value="3"} + +{/case} + +{case value="4"} + +{/case} + +{case value="5"} + +{/case} + +{case value="6"} +
    + +
    +{/case} + +{case value="7"} +
    +
      + 首页 + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} + + {if !empty($it.disabled) || empty($it.url)} + + {else/} + + {/if} + + {elseif $it.type=="next"} + + {if !empty($it.disabled) || empty($it.url)} + + {else/} + + {/if} + + {elseif $it.type=="page"} + + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} + + {/if} + {/volist} + 末页 +
    +
    +{/case} + +{case value="8"} + +{/case} + +{case value="9"} + +{/case} + +{case value="10"} + +{/case} + +{case value="11"} +
    +
    + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} + + {if !empty($it.disabled) || empty($it.url)} + + {else/} + + {/if} + + {elseif $it.type=="next"} + + {if !empty($it.disabled) || empty($it.url)} + + {else/} + + {/if} + + {elseif $it.type=="page"} + + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} + + {/if} + {/volist} +
    +
    +{/case} + +{case value="12"} +
    +
    第 {$page} / {$pages} 页
    + +
    +{/case} + +{case value="13"} + +{/case} + +{case value="14"} + +{/case} + +{case value="15"} + +{/case} + +{case value="16"} +
    +
    第 {$page} / {$pages} 页
    +
      +
    1. 首页
    2. + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} +
    3. + {if !empty($it.disabled) || empty($it.url)} + « + {else/} + « + {/if} +
    4. + {elseif $it.type=="next"} +
    5. + {if !empty($it.disabled) || empty($it.url)} + » + {else/} + » + {/if} +
    6. + {elseif $it.type=="page"} +
    7. + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} +
    8. + {/if} + {/volist} +
    9. 末页
    10. +
    +
    +{/case} + +{case value="17"} +
    +
    + {volist name="pagerArr" id="it"} + {if $it.type=="prev"} + + {if !empty($it.disabled) || empty($it.url)} + 上一页 + {else/} + 上一页 + {/if} + + {elseif $it.type=="next"} + + {if !empty($it.disabled) || empty($it.url)} + 下一页 + {else/} + 下一页 + {/if} + + {elseif $it.type=="page"} + + {if !empty($it.current)} + {$it.label} + {else/} + {$it.label} + {/if} + + {/if} + {/volist} +
    +
    +{/case} + +{case value="18"} + +{/case} + +{case value="19"} + +{/case} + +{default} + +{/default} +{/switch} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/play/play_01.html b/code/app/home/view/videoGpt1/module/play/play_01.html new file mode 100644 index 0000000..3d84c01 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/play/play_01.html @@ -0,0 +1,115 @@ +
    + + {// 顶部区域:封面 + 简介 } +
    +
    + +
    + +
    +

    {$arrVideo.v_name}

    + +

    + {$arrVideo.v_category} + {$arrVideo.v_area} + {$arrVideo.v_year} +

    + +

    + {$arrVideo.v_description|raw} +

    +
    +
    + + {// 播放器容器 } +
    +
    +
    + + + {// 播放线路导航 } + + + {// 集数列表 } +
    + + + {foreach $arrVideo.v_play_url as $strPlayGroupName=>$arrPlayUrlType} + + + + {/foreach} + +
    + + {// 相关推荐:SEO强沉淀 } +
    +

    猜你喜欢

    + +
    + + {video:list count="12" + v_category_en="$arrVideo.v_category_en" + sort_type="news" + d_key="rk" + d_val="Video" + cache_life="3600"} + + + +

    {$Video.v_name}

    +
    + + {/video:list} + +
    +
    + +
    + + diff --git a/code/app/home/view/videoGpt1/module/play/play_02.html b/code/app/home/view/videoGpt1/module/play/play_02.html new file mode 100644 index 0000000..f1a9e15 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/play/play_02.html @@ -0,0 +1,100 @@ +
    + + {// 全宽播放器 } +
    +
    +
    + + {// 基本信息 } +
    +

    {$arrVideo.v_name}

    +

    + {$arrVideo.v_category} + {$arrVideo.v_area} + {$arrVideo.v_year} +

    +

    + 主演:{$arrVideo.v_actor} +

    +
    + + {// 播放线路(深色 chip) } + + + {// 集数列表:深色块 } +
    + + + {foreach $arrVideo.v_play_url as $strPlayGroupName=>$arrPlayUrlType} + +
    + + {volist name='$arrPlayUrlType' id='arrPlayUrl'} + + + {$arrPlayUrl.name} + + {/volist} +
    + {/foreach} + +
    + + {// 剧情简介 } +
    +

    剧情简介

    +

    {$arrVideo.v_description|raw}

    +
    + + {// 猜你喜欢 } +
    +

    猜你喜欢

    + +
    + {video:list count="10" + v_category_en="$arrVideo.v_category_en" + sort_type="news" + d_key="rk" d_val="Video" cache_life="3600"} + + + +

    {$Video.v_name}

    +
    + + {/video:list} +
    +
    + +
    + + diff --git a/code/app/home/view/videoGpt1/module/play/play_03.html b/code/app/home/view/videoGpt1/module/play/play_03.html new file mode 100644 index 0000000..c1a5312 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/play/play_03.html @@ -0,0 +1,98 @@ +
    + +
    + + {// 左:播放器 + 基本信息 } +
    +
    + +
    +

    {$arrVideo.v_name}

    +

    + {$arrVideo.v_category} · {$arrVideo.v_area} · {$arrVideo.v_year} +

    +

    + 主演:{$arrVideo.v_actor} +

    +
    +
    + + {// 右:线路 + 集数(PC 时固定在侧边栏) } + + +
    + + {// 下方:简介 + 推荐 } +
    +

    剧情简介

    +

    {$arrVideo.v_description|raw}

    +
    + +
    +

    猜你喜欢

    +
    + {video:list count="8" + v_category_en="$arrVideo.v_category_en" + sort_type="news" + d_key="rk" d_val="Video" cache_life="3600"} + + + +

    {$Video.v_name}

    +
    + + {/video:list} +
    +
    + +
    + + diff --git a/code/app/home/view/videoGpt1/module/play/play_04.html b/code/app/home/view/videoGpt1/module/play/play_04.html new file mode 100644 index 0000000..2f011ab --- /dev/null +++ b/code/app/home/view/videoGpt1/module/play/play_04.html @@ -0,0 +1,86 @@ +
    + +
    +
    +
    + +
    +

    {$arrVideo.v_name}

    +

    {$arrVideo.v_year} · {$arrVideo.v_category} · {$arrVideo.v_area}

    +
    + + {// 下拉线路 } +
    + + +
    + + {// 有序集数 } +
    + + {foreach $arrVideo.v_play_url as $strPlayGroupName=>$arrPlayUrlType} + +
      + + {volist name='$arrPlayUrlType' id='arrPlayUrl'} + +
    1. + + {$arrPlayUrl.name} + +
    2. + {/volist} +
    + {/foreach} +
    + + {// 简介 } +
    +

    简介

    +

    {$arrVideo.v_description|raw}

    +
    + + {// 推荐,简洁版 } +
    +

    同类推荐

    +
    + {video:list count="6" + v_category_en="$arrVideo.v_category_en" + sort_type="news" + d_key="rk" d_val="Video" cache_life="3600"} + + + +

    {$Video.v_name}

    +
    + {/video:list} +
    +
    + +
    + + diff --git a/code/app/home/view/videoGpt1/module/play/play_05.html b/code/app/home/view/videoGpt1/module/play/play_05.html new file mode 100644 index 0000000..09805a8 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/play/play_05.html @@ -0,0 +1,97 @@ +
    + + {// 封面 + 播放器组合卡片 } +
    +
    + {$arrVideo.v_name} +
    +
    +

    {$arrVideo.v_name}

    +

    + {$arrVideo.v_year} · {$arrVideo.v_category} · {$arrVideo.v_area} +

    +
    +
    +
    + + {// 线路:横向滚动 } + + + {// 集数:紧凑按钮 } +
    + + {foreach $arrVideo.v_play_url as $strPlayGroupName=>$arrPlayUrlType} + +
    + + {volist name='$arrPlayUrlType' id='arrPlayUrl'} + + + {$arrPlayUrl.name} + + {/volist} +
    + {/foreach} +
    + + {// 简介 } +
    +

    内容简介

    +

    {$arrVideo.v_description|raw}

    +
    + + {// “瀑布式”推荐(grid 不等高) } +
    +

    更多精彩

    + +
    + {video:list count="10" + v_category_en="$arrVideo.v_category_en" + sort_type="news" + d_key="rk" d_val="Video" cache_life="3600"} + + + +

    {$Video.v_name}

    +
    + + {/video:list} +
    +
    + +
    + + diff --git a/code/app/home/view/videoGpt1/module/player/engine/dplayer.html b/code/app/home/view/videoGpt1/module/player/engine/dplayer.html new file mode 100644 index 0000000..9403b39 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/player/engine/dplayer.html @@ -0,0 +1,137 @@ +{assign name="variant" value="$pageCfg.player.variant|default=0"} + +
    + + {if $variant == 0} +
    + + {elseif $variant == 1} +
    +
    +
    + + {elseif $variant == 2} +
    +

    {$arrVideo.v_name|default='正在播放'}

    +
    +
    + + {elseif $variant == 3} +
    +
    + 如无法播放请切换线路 +
    + + {elseif $variant == 4} +
    +
    +

    {$arrVideo.v_name|default='正在播放'}

    +
    +
    +
    + + {elseif $variant == 5} +
    +
    +
    {$arrVideo.v_name|default='正在播放'}
    +
    + + {elseif $variant == 6} + + + {elseif $variant == 7} +
    +
    +
    +
    +
    + + {elseif $variant == 8} +
    + 正在播放 +
    +
    + + {elseif $variant == 9} +
    +
    + 播放中 +
    + + {elseif $variant == 10} +
    +
    + +
    + + {elseif $variant == 11} +
    +
    +
    +
    +
    + + {elseif $variant == 12} +
    加载中…
    +
    + + {elseif $variant == 13} +
    +
    播放失败请刷新或切换线路
    + + {elseif $variant == 14} + + + {elseif $variant == 15} +
    + + + {elseif $variant == 16} + +
    +
    + + {elseif $variant == 17} +
    +
    +
    + + {elseif $variant == 18} +
    +

    {$arrVideo.v_name|default='正在播放'}

    +
    +
    +
    +
    +
    + 资源采集于网络,仅供学习交流 +
    + + {else} +
    +
    +

    {$arrVideo.v_name|default='正在播放'}

    +
    +
    +
    +
    +
    + 如无法播放请切换线路 +
    +
    + {/if} + +
    \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/player/engine/iframe.html b/code/app/home/view/videoGpt1/module/player/engine/iframe.html new file mode 100644 index 0000000..509b95b --- /dev/null +++ b/code/app/home/view/videoGpt1/module/player/engine/iframe.html @@ -0,0 +1 @@ +
    \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/player/player_router.html b/code/app/home/view/videoGpt1/module/player/player_router.html new file mode 100644 index 0000000..3358262 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/player/player_router.html @@ -0,0 +1,16 @@ +{switch $pageCfg.player.engine} + + {case value="dplayer"} + + {include file="module/player/engine/dplayer" /} + {/case} + + {case value="iframe"} + {include file="module/player/engine/iframe" /} + {/case} + + {default} + {include file="module/player/engine/dplayer" /} + {/default} + +{/switch} diff --git a/code/app/home/view/videoGpt1/module/playline/layout/layout_A.html b/code/app/home/view/videoGpt1/module/playline/layout/layout_A.html new file mode 100644 index 0000000..3cb250f --- /dev/null +++ b/code/app/home/view/videoGpt1/module/playline/layout/layout_A.html @@ -0,0 +1,143 @@ +
    + + {assign name="variant" value="$pageCfg.playline.variant"} + + {// ================= Variant 0:Tabs + Grid ================= } + {if $variant == 0} + + + + {// ================= Variant 1:Line Block + OL ================= } + {elseif $variant == 1} + {foreach $arrVideo.v_play_url as $line=>$list} +
    +

    {$line}

    +
      + {volist name="list" id="ep" key="i"} +
    1. {$ep.name}
    2. + {/volist} +
    +
    + {/foreach} + + {// ================= Variant 2:DL 语义结构 ================= } + {elseif $variant == 2} +
    + {foreach $arrVideo.v_play_url as $line=>$list} +
    {$line}
    +
    + {volist name="list" id="ep" key="i"} + {$ep.name} + {/volist} +
    + {/foreach} +
    + + {// ================= Variant 3:UL + strong ================= } + {elseif $variant == 3} + {foreach $arrVideo.v_play_url as $line=>$list} + {$line} + + {/foreach} + + {// ================= Variant 4:Article Card ================= } + {elseif $variant == 4} + {foreach $arrVideo.v_play_url as $line=>$list} +
    +
    {$line}
    +
    + {volist name="list" id="ep" key="i"} + {$ep.name} + {/volist} +
    +
    + {/foreach} + + {// ================= Variant 5:Table ================= } + {elseif $variant == 5} + + {foreach $arrVideo.v_play_url as $line=>$list} + + {volist name="list" id="ep" key="i"} + + + + + {/volist} + {/foreach} +
    {$line}
    {$i}{$ep.name}
    + + {// ================= Variant 6:Nav + a ================= } + {elseif $variant == 6} + {foreach $arrVideo.v_play_url as $line=>$list} + + {/foreach} + + {// ================= Variant 7:Span Flow ================= } + {elseif $variant == 7} + {foreach $arrVideo.v_play_url as $line=>$list} +

    {$line}:

    +
    + {volist name="list" id="ep" key="i"} + {$ep.name} + {/volist} +
    + {/foreach} + + {// ================= Variant 8:Nested UL ================= } + {elseif $variant == 8} + + + {// ================= Variant 9:Minimal ================= } + {elseif $variant == 9} + {foreach $arrVideo.v_play_url as $line=>$list} +
    {$line}
    + {volist name="list" id="ep" key="i"} + {$ep.name} + {/volist} + {/foreach} + + {// ================= Variant 10–19:自动回退 ================= } + {else} + {foreach $arrVideo.v_play_url as $line=>$list} +
    +

    {$line}

    + {volist name="list" id="ep" key="i"} + {$ep.name} + {/volist} +
    + {/foreach} + {/if} + +
    + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/playline/layout/layout_B.html b/code/app/home/view/videoGpt1/module/playline/layout/layout_B.html new file mode 100644 index 0000000..1732345 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/playline/layout/layout_B.html @@ -0,0 +1,162 @@ +
    + + {assign name="variant" value="$pageCfg.playline.variant"} + + {// ================= Variant 0:Left Line / Right Grid ================= } + {if $variant == 0} +
    + +
    + {foreach $arrVideo.v_play_url as $line=>$list} +
      + {volist name="list" id="ep" key="i"} +
    • {$ep.name}
    • + {/volist} +
    + {/foreach} +
    +
    + + {// ================= Variant 1:Line UL + Episode UL ================= } + {elseif $variant == 1} +
    +
      + {foreach $arrVideo.v_play_url as $line=>$list} +
    • {$line}
    • + {/foreach} +
    +
      + {foreach $arrVideo.v_play_url as $line=>$list} + {volist name="list" id="ep" key="i"} +
    • {$ep.name}
    • + {/volist} + {/foreach} +
    +
    + + {// ================= Variant 2:Definition Left ================= } + {elseif $variant == 2} +
    + {foreach $arrVideo.v_play_url as $line=>$list} +
    {$line}
    +
    + {volist name="list" id="ep" key="i"} + {$ep.name} + {/volist} +
    + {/foreach} +
    + + {// ================= Variant 3:Section + Header ================= } + {elseif $variant == 3} + {foreach $arrVideo.v_play_url as $line=>$list} +
    +
    {$line}
    +
    + {volist name="list" id="ep" key="i"} + {$ep.name} + {/volist} +
    +
    + {/foreach} + + {// ================= Variant 4:Table Two Column ================= } + {elseif $variant == 4} + + {foreach $arrVideo.v_play_url as $line=>$list} + + {/foreach} +
    {$line} + {volist name="list" id="ep" key="i"} + {$ep.name} + {/volist} +
    + + {// ================= Variant 5:Nav Left ================= } + {elseif $variant == 5} +
    + +
    + {foreach $arrVideo.v_play_url as $line=>$list} + {volist name="list" id="ep" key="i"} + {$ep.name} + {/volist} + {/foreach} +
    +
    + + {// ================= Variant 6:OL + Aside ================= } + {elseif $variant == 6} + +
      + {foreach $arrVideo.v_play_url as $line=>$list} + {volist name="list" id="ep" key="i"} +
    1. {$ep.name}
    2. + {/volist} + {/foreach} +
    + + {// ================= Variant 7:Compact ================= } + {elseif $variant == 7} + {foreach $arrVideo.v_play_url as $line=>$list} +

    {$line}

    +

    + {volist name="list" id="ep" key="i"} + {$ep.name} + {/volist} +

    + {/foreach} + + {// ================= Variant 8:Nested Table ================= } + {elseif $variant == 8} + + {foreach $arrVideo.v_play_url as $line=>$list} + + {/foreach} +
    {$line} + + {volist name="list" id="ep" key="i"} + + {/volist} +
    {$ep.name}
    +
    + + {// ================= Variant 9:Article SEO ================= } + {elseif $variant == 9} + {foreach $arrVideo.v_play_url as $line=>$list} +
    +

    {$line}

    +

    + {volist name="list" id="ep" key="i"} + {$ep.name} + {/volist} +

    +
    + {/foreach} + + {// ================= Variant 10–19:兜底 ================= } + {else} + {foreach $arrVideo.v_play_url as $line=>$list} +
    + {$line} + {volist name="list" id="ep" key="i"} + {$ep.name} + {/volist} +
    + {/foreach} + {/if} + +
    + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/playline/layout/layout_C.html b/code/app/home/view/videoGpt1/module/playline/layout/layout_C.html new file mode 100644 index 0000000..c34c495 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/playline/layout/layout_C.html @@ -0,0 +1,173 @@ +
    + + {assign name="variant" value="$pageCfg.playline.variant"} + + {// ================= Variant 0:Section + OL ================= } + {if $variant == 0} + {foreach $arrVideo.v_play_url as $line=>$list} +
    +

    {$line}

    +
      + {volist name="list" id="ep" key="i"} +
    1. + + {$ep.name} + +
    2. + {/volist} +
    +
    + {/foreach} + + {// ================= Variant 1:Article ================= } + {elseif $variant == 1} + {foreach $arrVideo.v_play_url as $line=>$list} +
    +

    {$line}

    +
    + {volist name="list" id="ep" key="i"} +

    + + {$ep.name} + +

    + {/volist} +
    +
    + {/foreach} + + {// ================= Variant 2:DL 剧情结构 ================= } + {elseif $variant == 2} +
    + {foreach $arrVideo.v_play_url as $line=>$list} +
    {$line}
    + {volist name="list" id="ep" key="i"} +
    + + {$ep.name} + +
    + {/volist} + {/foreach} +
    + + {// ================= Variant 3:段落式 ================= } + {elseif $variant == 3} + {foreach $arrVideo.v_play_url as $line=>$list} +

    {$line}

    +

    + {volist name="list" id="ep" key="i"} + + + {$ep.name} + + + {/volist} +

    + {/foreach} + + {// ================= Variant 4:Blockquote ================= } + {elseif $variant == 4} + {foreach $arrVideo.v_play_url as $line=>$list} +
    + {$line} + {volist name="list" id="ep" key="i"} +
    + + {$ep.name} + +
    + {/volist} +
    + {/foreach} + + {// ================= Variant 5:UL + Paragraph ================= } + {elseif $variant == 5} + {foreach $arrVideo.v_play_url as $line=>$list} +

    {$line}

    + + {/foreach} + + {// ================= Variant 6:Timeline 风格 ================= } + {elseif $variant == 6} + {foreach $arrVideo.v_play_url as $line=>$list} +
    +

    {$line}

    + {volist name="list" id="ep" key="i"} +
    + + + {$ep.name} + +
    + {/volist} +
    + {/foreach} + + {// ================= Variant 7:SEO Text Block ================= } + {elseif $variant == 7} + {foreach $arrVideo.v_play_url as $line=>$list} +
    +

    {$line}

    +

    + 本线路提供以下资源: + {volist name="list" id="ep" key="i"} + + {$ep.name} + + {/volist} +

    +
    + {/foreach} + + {// ================= Variant 8:Mixed OL / P ================= } + {elseif $variant == 8} + {foreach $arrVideo.v_play_url as $line=>$list} +

    {$line}

    + {volist name="list" id="ep" key="i"} +

    + 第 {$i} 集: + + {$ep.name} + +

    + {/volist} + {/foreach} + + {// ================= Variant 9:Minimal Reading ================= } + {elseif $variant == 9} + {foreach $arrVideo.v_play_url as $line=>$list} +
    {$line}
    + {volist name="list" id="ep" key="i"} + + {$ep.name} + + {/volist} + {/foreach} + + {// ================= Variant 10–19:兜底 ================= } + {else} + {foreach $arrVideo.v_play_url as $line=>$list} +
    + {$line} + {volist name="list" id="ep" key="i"} + + {$ep.name} + + {/volist} +
    + {/foreach} + {/if} + +
    + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/playline/playline_router.html b/code/app/home/view/videoGpt1/module/playline/playline_router.html new file mode 100644 index 0000000..42d68bb --- /dev/null +++ b/code/app/home/view/videoGpt1/module/playline/playline_router.html @@ -0,0 +1,15 @@ +{switch $pageCfg.playline.layout} + +{case value="A"} + {include file="module/playline/layout/layout_A" /} +{/case} + +{case value="B"} + {include file="module/playline/layout/layout_B" /} +{/case} + +{case value="C"} + {include file="module/playline/layout/layout_C" /} +{/case} + +{/switch} diff --git a/code/app/home/view/videoGpt1/module/rank/rank_block.html b/code/app/home/view/videoGpt1/module/rank/rank_block.html new file mode 100644 index 0000000..dec494c --- /dev/null +++ b/code/app/home/view/videoGpt1/module/rank/rank_block.html @@ -0,0 +1,24 @@ + + + +
    +
    +

    + {$rank.title} +

    + + +
    + + {video:ranklistexp + count="$cfg.limit" + sort_type="$cfg.sort_type" + export_name="__LIST__" + /} + +
      + {volist name="__LIST__" id="vo"} + {include file="module/list/item/_item_router" /} + {/volist} +
    +
    diff --git a/code/app/home/view/videoGpt1/module/ranking/ranking_01.html b/code/app/home/view/videoGpt1/module/ranking/ranking_01.html new file mode 100644 index 0000000..2dd420f --- /dev/null +++ b/code/app/home/view/videoGpt1/module/ranking/ranking_01.html @@ -0,0 +1,14 @@ +
    +

    排行榜

    + +
      + {volist name="arrVideoPiaofang" id="vo" offset="0" length="10"} +
    1. + + {// {$i} } + {$vo.v_name} + +
    2. + {/volist} +
    +
    diff --git a/code/app/home/view/videoGpt1/module/ranking/ranking_02.html b/code/app/home/view/videoGpt1/module/ranking/ranking_02.html new file mode 100644 index 0000000..df8db50 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/ranking/ranking_02.html @@ -0,0 +1,18 @@ +
    +
    热播榜
    + +
    + {volist name="arrVideoPiaofang" id="vo" offset="0" length="6"} + + {$vo.v_name} +
    +

    {$vo.v_name}

    +

    热度上升中 → 点击查看

    +
    +
    + {/volist} +
    +
    diff --git a/code/app/home/view/videoGpt1/module/ranking/ranking_03.html b/code/app/home/view/videoGpt1/module/ranking/ranking_03.html new file mode 100644 index 0000000..bf69f4e --- /dev/null +++ b/code/app/home/view/videoGpt1/module/ranking/ranking_03.html @@ -0,0 +1,15 @@ +
    +

    趋势排行 TOP10

    + +
    + {volist name="arrVideoPiaofang" id="vo" offset="0" length="10"} + + {$i} +
    + {$vo.v_name} +
    + +
    + {/volist} +
    +
    diff --git a/code/app/home/view/videoGpt1/module/ranking/ranking_04.html b/code/app/home/view/videoGpt1/module/ranking/ranking_04.html new file mode 100644 index 0000000..b32a4e3 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/ranking/ranking_04.html @@ -0,0 +1,15 @@ +
    +

    人气榜单

    + +
    + {volist name="arrVideoPiaofang" id="vo" offset="0" length="6"} + + {$vo.v_name} +

    {$i}. {$vo.v_name}

    +
    + {/volist} +
    +
    diff --git a/code/app/home/view/videoGpt1/module/ranking/ranking_05.html b/code/app/home/view/videoGpt1/module/ranking/ranking_05.html new file mode 100644 index 0000000..db28383 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/ranking/ranking_05.html @@ -0,0 +1,17 @@ +
    +
    + 飙升榜 +
    + +
    + {volist name="arrVideoPiaofang" id="vo" offset="0" length="8"} + +
    #{$i}
    +
    + {$vo.v_name} +

    热度提升中

    +
    +
    + {/volist} +
    +
    diff --git a/code/app/home/view/videoGpt1/module/recommend/recommend_01.html b/code/app/home/view/videoGpt1/module/recommend/recommend_01.html new file mode 100644 index 0000000..c81fbe9 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/recommend/recommend_01.html @@ -0,0 +1,28 @@ + +
    +
    +

    编辑精选

    + 今天值得一看的好片 +
    + + +
    diff --git a/code/app/home/view/videoGpt1/module/recommend/recommend_02.html b/code/app/home/view/videoGpt1/module/recommend/recommend_02.html new file mode 100644 index 0000000..a1761d0 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/recommend/recommend_02.html @@ -0,0 +1,30 @@ + +
    +
    + 口碑佳作 +

    好评推荐

    +
    + +
    + {volist name="arrVideoRecommend" id="vo" offset="0" length="10"} + + {/volist} +
    +
    diff --git a/code/app/home/view/videoGpt1/module/recommend/recommend_03.html b/code/app/home/view/videoGpt1/module/recommend/recommend_03.html new file mode 100644 index 0000000..bad6f0a --- /dev/null +++ b/code/app/home/view/videoGpt1/module/recommend/recommend_03.html @@ -0,0 +1,45 @@ + +
    +
    +

    今日主打

    + 为你挑选的一些好片 +
    + +
    + {volist name="arrVideoRecommend" id="vo" offset="0" length="1"} + + {/volist} + + +
    +
    diff --git a/code/app/home/view/videoGpt1/module/recommend/recommend_04.html b/code/app/home/view/videoGpt1/module/recommend/recommend_04.html new file mode 100644 index 0000000..d753d6a --- /dev/null +++ b/code/app/home/view/videoGpt1/module/recommend/recommend_04.html @@ -0,0 +1,32 @@ + +
    +
    +

    + 为你而选 +

    + 好片不容错过 +
    + +
    + {volist name="arrVideoRecommend" id="vo" offset="0" length="6"} + + {/volist} +
    +
    diff --git a/code/app/home/view/videoGpt1/module/recommend/recommend_05.html b/code/app/home/view/videoGpt1/module/recommend/recommend_05.html new file mode 100644 index 0000000..686ba0b --- /dev/null +++ b/code/app/home/view/videoGpt1/module/recommend/recommend_05.html @@ -0,0 +1,30 @@ + +
    +
    +

    轻松随便看点什么

    +
    + +
      + {volist name="arrVideoRecommend" id="vo" key="k" offset="0" length="8"} +
    1. + + {:sprintf('%02d',$k)} + + {$vo.v_name} + {if !empty($vo.v_remarks)} + {$vo.v_remarks} + {/if} + + + {$vo.v_name} + + +
    2. + {/volist} +
    +
    diff --git a/code/app/home/view/videoGpt1/module/search/_search_header_router.html b/code/app/home/view/videoGpt1/module/search/_search_header_router.html new file mode 100644 index 0000000..465484f --- /dev/null +++ b/code/app/home/view/videoGpt1/module/search/_search_header_router.html @@ -0,0 +1,18 @@ +{php} +// cfg 统一入口 +$family = $searchCfg['family'] ?? 'simple'; +$variant = isset($searchCfg['variant']) ? intval($searchCfg['variant']) : 0; +$tone = isset($searchCfg['tone']) ? intval($searchCfg['tone']) : 1; + + +{/php} + + +{switch $family} +{case value="simple"}{include file="module/search/search_header_simple"/}{/case} +{case value="centered"}{include file="module/search/search_header_centered"/}{/case} +{case value="rich"}{include file="module/search/search_header_rich"/}{/case} +{case value="seo"}{include file="module/search/search_header_seo"/}{/case} +{case value="media"}{include file="module/search/search_header_media"/}{/case} +{default /}{include file="module/search/search_header_seo"/} +{/switch} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/search/search_header_centered.html b/code/app/home/view/videoGpt1/module/search/search_header_centered.html new file mode 100644 index 0000000..5e28b82 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/search/search_header_centered.html @@ -0,0 +1,169 @@ +{switch $variant} +{case value="0"} +
    +
    +

    {$Request.get.keyword}

    +

    搜索结果

    +
    +
    +{/case} +{case value="1"} +
    +
    +

    Search

    +

    {$Request.get.keyword}

    +
    +
    +{/case} +{case value="2"} +
    +
    +

    {$Request.get.keyword}

    Results +
    +
    +{/case} +{case value="3"} +
    +
    +

    {$Request.get.keyword}

    +
    + +
    +{/case} +{case value="4"} +
    +
    +

    关键词

    +

    {$Request.get.keyword}

    +
    +
    +{/case} +{case value="5"} +
    +
    +

    搜索:{$Request.get.keyword}

    +

    为你呈现匹配内容

    +
    +
    +{/case} +{case value="6"} +
    +
    +

    {$Request.get.keyword}

    + +
    +
    +{/case} +{case value="7"} +
    +
    + +

    {$Request.get.keyword}

    +
    +
    +{/case} +{case value="8"} +
    +
    +

    {$Request.get.keyword}

    +

    搜索结果页

    +
    +
    +{/case} +{case value="9"} +
    +
    +

    {$Request.get.keyword}

    +

    精选匹配条目

    换词 +
    +
    +{/case} +{case value="10"} +
    +
    +

    站内检索

    +

    {$Request.get.keyword}

    +
    +
    +{/case} +{case value="11"} +
    +
    +

    {$Request.get.keyword}

    +

    相关搜索结果

    +
    +
    +{/case} +{case value="12"} +
    +
    +

    {$Request.get.keyword}

    +

    结果列表

    +
    + +
    +{/case} +{case value="13"} +
    +
    +

    {$Request.get.keyword}

    +

    Search Result Page

    +
    +
    +{/case} +{case value="14"} +
    +
    +

    {$Request.get.keyword}

    +
      +
    • 全部
    • +
    • 相关
    • +
    +
    +
    +{/case} +{case value="15"} +
    +
    +

    {$Request.get.keyword}

    +
    + 展开提示 +

    结果展示

    +
    +
    +
    +{/case} +{case value="16"} +
    +
    +

    {$Request.get.keyword}

    +

    按相关度排序

    +
    +
    +{/case} +{case value="17"} + +{/case} +{case value="18"} +
    +
    +

    {$Request.get.keyword}

    +

    搜索结果

    +
    搜索结果
    +
    +
    +{/case} +{case value="19"} +
    +
    +

    {$Request.get.keyword}

    +
    +

    结果页

    +
    +{/case} +{/switch} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/search/search_header_media.html b/code/app/home/view/videoGpt1/module/search/search_header_media.html new file mode 100644 index 0000000..3a922a9 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/search/search_header_media.html @@ -0,0 +1,167 @@ +{switch $variant} +{case value="0"} +
    +
    +
    🔍 {$Request.get.keyword}
    +
    +
    +{/case} +{case value="1"} +
    +
    +
    +
    {$Request.get.keyword} · 搜索结果
    +
    +
    +{/case} +{case value="2"} +
    +
    +
    {$Request.get.keyword}
    +
    +

    匹配内容如下

    +
    +{/case} +{case value="3"} +
    +
    +
    Search: {$Request.get.keyword}
    Results +
    +
    +{/case} +{case value="4"} +
    +
    +
    {$Request.get.keyword}
    +
    + +
    +{/case} +{case value="5"} +
    +
    +
    {$Request.get.keyword}
    +
    + +
    +{/case} +{case value="6"} +
    +
    +
    {$Request.get.keyword}
    +

    搜索结果页

    +
    +
    +{/case} +{case value="7"} +
    +
    +
    {$Request.get.keyword}
    +
    + +
    +{/case} +{case value="8"} +
    +
    +
    TAG{$Request.get.keyword}
    +
    +
    +{/case} +{case value="9"} +
    +
    +
    {$Request.get.keyword}
    + +
    +
    +{/case} +{case value="10"} +
    +
    +
    {$Request.get.keyword}
    +
    + +
    +{/case} +{case value="11"} +
    +
    +
    {$Request.get.keyword}
    +
    +
    + 提示 +

    可换词

    +
    +
    +{/case} +{case value="12"} +
    +
    +
    {$Request.get.keyword}
    +
    +
    NEW
    +
    +{/case} +{case value="13"} +
    +
    +
    {$Request.get.keyword}
    +
    +

    为你精选

    +
    +{/case} +{case value="14"} +
    +
    +
    🔎 {$Request.get.keyword}
    +
    + +
    +{/case} +{case value="15"} +
    +
    +
    {$Request.get.keyword}
    +
    +
    结果
    +
    +{/case} +{case value="16"} +
    +
    +
    {$Request.get.keyword}
    +
    +

    搜索聚合

    +

    media

    +
    +{/case} +{case value="17"} +
    +
    +
    {$Request.get.keyword}
    +
    +
    +
    +{/case} +{case value="18"} +
    +
    +
    {$Request.get.keyword}
    +
    +
    相关内容
    +
    +{/case} +{case value="19"} +
    +
    +
    {$Request.get.keyword}
    +
    +
    search header
    +
    +{/case} +{/switch} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/search/search_header_rich.html b/code/app/home/view/videoGpt1/module/search/search_header_rich.html new file mode 100644 index 0000000..dee34ad --- /dev/null +++ b/code/app/home/view/videoGpt1/module/search/search_header_rich.html @@ -0,0 +1,213 @@ +{switch $variant} +{case value="0"} +
    +
    +

    {$Request.get.keyword}

    +

    与你查询相关的内容合集

    +
    + +
    +{/case} +{case value="1"} +
    +
    +

    搜索结果

    +

    {$Request.get.keyword}

    +
    +
    匹配整理
    +
    +{/case} +{case value="2"} +
    +
    +

    {$Request.get.keyword}

    +

    为你推荐相关内容

    +
    +
    +
    +
    关键词
    +
    {$Request.get.keyword}
    +
    +
    +
    +{/case} +{case value="3"} +
    +
    +

    搜索:{$Request.get.keyword}

    +
    +
    +
    相关
    +
    热门
    +
    +
    +{/case} +{case value="4"} +
    +
    +

    {$Request.get.keyword}

    +

    结果列表

    +
    + +
    +{/case} +{case value="5"} +
    +
    +

    {$Request.get.keyword}

    +

    按热度聚合的搜索内容

    +
    +
    来源:站内检索
    +
    +{/case} +{case value="6"} +
    +
    +

    关键词

    +

    {$Request.get.keyword}

    +
    +
    类型内容
    +
    +{/case} +{case value="7"} +
    +
    +

    {$Request.get.keyword}

    +
    +
    +
    摘要
    +
    索引
    +
    + +
    +{/case} +{case value="8"} +
    +
    +

    {$Request.get.keyword} 找到的结果

    +

    以下是匹配条目

    +
    +
    缩小范围
    +
    +{/case} +{case value="9"} +
    +
    +

    {$Request.get.keyword}

    +

    相关内容已按主题整理

    +
    +
    +
      +
    1. 主题一
    2. +
    3. 主题二
    4. +
    +
    +
    +{/case} +{case value="10"} +
    +
    +

    {$Request.get.keyword}

    +
    +
    匹配N
    +
    +{/case} +{case value="11"} +
    +
    +

    搜索结果

    +
    +
    +

    关键词:{$Request.get.keyword}

    +
    + +
    +{/case} +{case value="12"} +
    + +
    更新相关
    +
    +{/case} +{case value="13"} +
    +
    +

    {$Request.get.keyword}

    +

    你可能还想找:

    +
    + +
    +{/case} +{case value="14"} +
    +
    +

    {$Request.get.keyword}

    +
    +
    +
    概览
    +
    匹配结果列表
    +
    +
    +{/case} +{case value="15"} +
    +
    +

    {$Request.get.keyword}

    +

    结果已按相关度排序

    +
    +
    全部最新推荐
    +
    +{/case} +{case value="16"} +
    +
    +

    {$Request.get.keyword}

    +

    站内搜索

    +
    +
    1 查询2 匹配3 展示
    +
    +{/case} +{case value="17"} +
    +
    +

    {$Request.get.keyword}

    +
    +
    +
    + 为什么没有? +

    可能拼写不同

    +
    +
    +
    +{/case} +{case value="18"} +
    +
    +

    {$Request.get.keyword}

    +

    聚合页

    +
    +
    + + + + + +
    关键词{$Request.get.keyword}
    +
    +
    +{/case} +{case value="19"} +
    +
    +

    {$Request.get.keyword}

    +

    内容合集

    +
    +
    Search Hub
    +
    +{/case} +{/switch} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/search/search_header_seo.html b/code/app/home/view/videoGpt1/module/search/search_header_seo.html new file mode 100644 index 0000000..3591fdf --- /dev/null +++ b/code/app/home/view/videoGpt1/module/search/search_header_seo.html @@ -0,0 +1,143 @@ +{switch $variant} +{case value="0"} +
    +

    {$Request.get.keyword} 搜索结果

    +

    列表页 · 可索引

    +
    +{/case} +{case value="1"} +
    +

    搜索:{$Request.get.keyword}

    +

    结果列表

    + +
    +{/case} +{case value="2"} +
    +

    {$Request.get.keyword}

    +

    搜索结果页

    +
    +{/case} +{case value="3"} +
    +

    {$Request.get.keyword}

    +

    站内搜索结果

    +
    +{/case} +{case value="4"} +
    +

    {$Request.get.keyword} 相关内容

    +

    搜索结果

    +
    +{/case} +{case value="5"} +
    +

    {$Request.get.keyword}

    +

    搜索结果列表页

    +
    +{/case} +{case value="6"} +
    +

    {$Request.get.keyword}

    +

    结果页(SEO)

    +
    +
    +{/case} +{case value="7"} +
    +

    关键词:{$Request.get.keyword}

    +

    搜索结果

    +
    +{/case} +{case value="8"} +
    +

    {$Request.get.keyword}

    +

    索引列表页

    + +
    +{/case} +{case value="9"} +
    +

    {$Request.get.keyword} - 搜索结果

    +

    站内匹配内容

    +
    +{/case} +{case value="10"} +
    +

    搜索结果

    +

    {$Request.get.keyword}

    +
    +{/case} +{case value="11"} +
    +

    查询词

    +

    {$Request.get.keyword}

    +

    结果页

    +
    +{/case} +{case value="12"} +
    +

    {$Request.get.keyword}

    +

    聚合结果页

    +

    可抓取

    +
    +{/case} +{case value="13"} +
    +

    {$Request.get.keyword}

    +

    搜索结果目录

    +
    +
    关键词
    +
    {$Request.get.keyword}
    +
    +
    +{/case} +{case value="14"} +
    +

    {$Request.get.keyword}

    +

    结果页

    + +
    +{/case} +{case value="15"} +
    +

    {$Request.get.keyword}

    +

    搜索结果索引

    +
    站内
    +
    +{/case} +{case value="16"} +
    +

    {$Request.get.keyword}

    +

    Search result page

    +
    +{/case} +{case value="17"} +
    +

    {$Request.get.keyword}

    +

    结果列表页

    +
    + 说明 +

    索引结构稳定

    +
    +
    +{/case} +{case value="18"} +
    +

    {$Request.get.keyword}

    +

    站内搜索

    +

    list

    +
    +{/case} +{case value="19"} +
    +

    {$Request.get.keyword}

    +

    搜索结果

    +
    +

    indexable

    +
    +{/case} +{/switch} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/search/search_header_simple.html b/code/app/home/view/videoGpt1/module/search/search_header_simple.html new file mode 100644 index 0000000..33de670 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/search/search_header_simple.html @@ -0,0 +1,127 @@ +{switch $variant} +{case value="0"} +
    +

    搜索:{$Request.get.keyword}

    +
    +{/case} +{case value="1"} + +{/case} +{case value="2"} +
    +

    {$Request.get.keyword} 的搜索结果

    +
    +
    +{/case} +{case value="3"} +
    +

    {$Request.get.keyword}

    结果页 +
    +{/case} +{case value="4"} + +{/case} +{case value="5"} +
    +

    {$Request.get.keyword}

    +

    相关条目如下

    +
    +{/case} +{case value="6"} +
    +

    查询

    + +
    +{/case} +{case value="7"} +
    +

    搜索结果:

    +
    {$Request.get.keyword}
    +
    +{/case} +{case value="8"} +
    +

    Search

    +

    {$Request.get.keyword}

    +
    +{/case} +{case value="9"} +
    +

    结果:{$Request.get.keyword}

    +

    可尝试同义词

    +
    +{/case} +{case value="10"} +
    +

    {$Request.get.keyword}

    +

    搜索结果列表

    +
    +
    +{/case} +{case value="11"} +
    +

    站内搜索

    +

    关键词:{$Request.get.keyword}

    +
    +{/case} +{case value="12"} + +{/case} +{case value="13"} +
    +

    关于 {$Request.get.keyword}

    +
    +{/case} +{case value="14"} +
    +

    搜索

    +
    +
    关键词
    +
    {$Request.get.keyword}
    +
    +
    +{/case} +{case value="15"} +
    +

    {$Request.get.keyword}

    + +
    +{/case} +{case value="16"} +
    +

    检索:{$Request.get.keyword}

    +

    为你整理相关内容

    +
    +{/case} +{case value="17"} +
    +

    搜索

    +

    {$Request.get.keyword}

    +
    +{/case} +{case value="18"} +
    +

    {$Request.get.keyword}

    +

    结果页

    +
    +
    +{/case} +{case value="19"} + +{/case} +{/switch} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/seowords/layout/layout_A.html b/code/app/home/view/videoGpt1/module/seowords/layout/layout_A.html new file mode 100644 index 0000000..d3fd02d --- /dev/null +++ b/code/app/home/view/videoGpt1/module/seowords/layout/layout_A.html @@ -0,0 +1,168 @@ +
    + + {assign name="intVariant" value="$pageCfg.seowords.variant"} + + {// ================= Variant 0:ul ================= } + {if $intVariant == 0} + + + {// ================= Variant 1:ol ================= } + {elseif $intVariant == 1} +
      + {volist name="arrSeoWords" id="it"} +
    1. {$it.text}
    2. + {/volist} +
    + + {// ================= Variant 2:p ================= } + {elseif $intVariant == 2} +

    + {volist name="arrSeoWords" id="it"} + {$it.text}  + {/volist} +

    + + {// ================= Variant 3:span ================= } + {elseif $intVariant == 3} + + {volist name="arrSeoWords" id="it"} + {$it.text}  + {/volist} + + + {// ================= Variant 4:strong ================= } + {elseif $intVariant == 4} +

    + {volist name="arrSeoWords" id="it"} + {$it.text}  + {/volist} +

    + + {// ================= Variant 5:em ================= } + {elseif $intVariant == 5} +

    + {volist name="arrSeoWords" id="it"} + {$it.text}  + {/volist} +

    + + {// ================= Variant 6:text sentence ================= } + {elseif $intVariant == 6} +

    + 相关关键词: + {volist name="arrSeoWords" id="it"} + {$it.text}, + {/volist} +

    + + {// ================= Variant 7:address ================= } + {elseif $intVariant == 7} +
    + {volist name="arrSeoWords" id="it"} + {$it.text}  + {/volist} +
    + + {// ================= Variant 8:blockquote ================= } + {elseif $intVariant == 8} +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    + + {// ================= Variant 9:small ================= } + {elseif $intVariant == 9} + + {volist name="arrSeoWords" id="it"} + {$it.text}  + {/volist} + + + {// ================= Variant 10:mark ================= } + {elseif $intVariant == 10} +

    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +

    + + {// ================= Variant 11:code ================= } + {elseif $intVariant == 11} + + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} + + + {// ================= Variant 12:kbd ================= } + {elseif $intVariant == 12} + + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} + + + {// ================= Variant 13:h6 ================= } + {elseif $intVariant == 13} +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    + + {// ================= Variant 14:div flow ================= } + {elseif $intVariant == 14} +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    + + {// ================= Variant 15:inline list ================= } + {elseif $intVariant == 15} + + + {// ================= Variant 16:footer ================= } + {elseif $intVariant == 16} +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    + + {// ================= Variant 17:section ================= } + {elseif $intVariant == 17} +
    + {volist name="arrSeoWords" id="it"} +

    {$it.text}

    + {/volist} +
    + + {// ================= Variant 18:article ================= } + {elseif $intVariant == 18} +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    + + {// ================= Variant 19:default ================= } + {else} +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    + {/if} + +
    + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/seowords/layout/layout_B.html b/code/app/home/view/videoGpt1/module/seowords/layout/layout_B.html new file mode 100644 index 0000000..efea45f --- /dev/null +++ b/code/app/home/view/videoGpt1/module/seowords/layout/layout_B.html @@ -0,0 +1,171 @@ +
    + + {assign name="intVariant" value="$pageCfg.seowords.variant"} + + {// ================= Variant 0:Card UL ================= } + {if $intVariant == 0} + + + {// ================= Variant 1:Tag Cloud ================= } + {elseif $intVariant == 1} +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    + + {// ================= Variant 2:Grid ================= } + {elseif $intVariant == 2} +
    + {volist name="arrSeoWords" id="it"} +
    {$it.text}
    + {/volist} +
    + + {// ================= Variant 3:Panel ================= } + {elseif $intVariant == 3} +
    +
    相关推荐
    +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    +
    + + {// ================= Variant 4:Badge ================= } + {elseif $intVariant == 4} +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    + + {// ================= Variant 5:Inline Card ================= } + {elseif $intVariant == 5} +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    + + {// ================= Variant 6:Aside ================= } + {elseif $intVariant == 6} + + + {// ================= Variant 7:List Group ================= } + {elseif $intVariant == 7} + + + {// ================= Variant 8:Flex Box ================= } + {elseif $intVariant == 8} +
    + {volist name="arrSeoWords" id="it"} +
    {$it.text}
    + {/volist} +
    + + {// ================= Variant 9:Highlight Box ================= } + {elseif $intVariant == 9} +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    + + {// ================= Variant 10:Steps ================= } + {elseif $intVariant == 10} +
    + {volist name="arrSeoWords" id="it" key="i"} + {$i}. {$it.text} + {/volist} +
    + + {// ================= Variant 11:Notice ================= } + {elseif $intVariant == 11} +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    + + {// ================= Variant 12:Soft Card ================= } + {elseif $intVariant == 12} +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    + + {// ================= Variant 13:Wrap ================= } + {elseif $intVariant == 13} +
    + {volist name="arrSeoWords" id="it"} +
    {$it.text}
    + {/volist} +
    + + {// ================= Variant 14:Column ================= } + {elseif $intVariant == 14} +
    + {volist name="arrSeoWords" id="it"} +
    {$it.text}
    + {/volist} +
    + + {// ================= Variant 15:Header Block ================= } + {elseif $intVariant == 15} +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    + + {// ================= Variant 16:Rounded ================= } + {elseif $intVariant == 16} +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    + + {// ================= Variant 17:Divider ================= } + {elseif $intVariant == 17} +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + | + {/volist} +
    + + {// ================= Variant 18:Footer ================= } + {elseif $intVariant == 18} +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    + + {// ================= Variant 19:Default ================= } + {else} +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    + {/if} + +
    + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/seowords/layout/layout_C.html b/code/app/home/view/videoGpt1/module/seowords/layout/layout_C.html new file mode 100644 index 0000000..1bec5a3 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/seowords/layout/layout_C.html @@ -0,0 +1,143 @@ +
    + {assign name="intVariant" value="$pageCfg.seowords.variant"} + + {// ================= Variant 0:单段落 ================= } + {if $intVariant == 0} +

    + {volist name="arrSeoWords" id="it"}{$it.text},{/volist} +

    + + {// ================= Variant 1:多段落 ================= } + {elseif $intVariant == 1} + {volist name="arrSeoWords" id="it"} +

    {$it.text}

    + {/volist} + + {// ================= Variant 2:说明文本 ================= } + {elseif $intVariant == 2} +

    + 以下内容与 + {volist name="arrSeoWords" id="it"}{$it.text}、{/volist} + 相关。 +

    + + {// ================= Variant 3:引用说明 ================= } + {elseif $intVariant == 3} +
    + {volist name="arrSeoWords" id="it"}{$it.text} {/volist} +
    + + {// ================= Variant 4:混合 strong ================= } + {elseif $intVariant == 4} +

    + {volist name="arrSeoWords" id="it"} + {$it.text}, + {/volist} +

    + + {// ================= Variant 5:混合 em ================= } + {elseif $intVariant == 5} +

    + {volist name="arrSeoWords" id="it"} + {$it.text}, + {/volist} +

    + + {// ================= Variant 6:文章段 ================= } + {elseif $intVariant == 6} +
    +

    + {volist name="arrSeoWords" id="it"}{$it.text} {/volist} +

    +
    + + {// ================= Variant 7:section ================= } + {elseif $intVariant == 7} +
    + {volist name="arrSeoWords" id="it"} +

    {$it.text}

    + {/volist} +
    + + {// ================= Variant 8:small 说明 ================= } + {elseif $intVariant == 8} + + {volist name="arrSeoWords" id="it"}{$it.text} {/volist} + + + {// ================= Variant 9:footer 说明 ================= } + {elseif $intVariant == 9} +
    + {volist name="arrSeoWords" id="it"}{$it.text}{/volist} +
    + + {// ================= Variant 10:正文前缀 ================= } + {elseif $intVariant == 10} +

    + 相关搜索: + {volist name="arrSeoWords" id="it"}{$it.text},{/volist} +

    + + {// ================= Variant 11:正文后缀 ================= } + {elseif $intVariant == 11} +

    + {volist name="arrSeoWords" id="it"}{$it.text},{/volist} + 等内容可供参考。 +

    + + {// ================= Variant 12:段落 + 链接 ================= } + {elseif $intVariant == 12} + + + {// ================= Variant 13:h6 + 段落 ================= } + {elseif $intVariant == 13} +
    相关词条
    +

    + {volist name="arrSeoWords" id="it"}{$it.text} {/volist} +

    + + {// ================= Variant 14:多句合并 ================= } + {elseif $intVariant == 14} +

    + {volist name="arrSeoWords" id="it"}{$it.text}。{/volist} +

    + + {// ================= Variant 15:解释型 ================= } + {elseif $intVariant == 15} +

    + 本页涉及 + {volist name="arrSeoWords" id="it"}{$it.text}、{/volist} + 等关键词。 +

    + + {// ================= Variant 16:aside ================= } + {elseif $intVariant == 16} + + + {// ================= Variant 17:mark 混排 ================= } + {elseif $intVariant == 17} +

    + {volist name="arrSeoWords" id="it"}{$it.text} {/volist} +

    + + {// ================= Variant 18:长文本 ================= } + {elseif $intVariant == 18} +

    + {volist name="arrSeoWords" id="it"}{$it.text} {/volist} + 为您提供更多参考信息。 +

    + + {// ================= Variant 19:默认 ================= } + {else} +
    + {volist name="arrSeoWords" id="it"}{$it.text} {/volist} +
    + {/if} +
    + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/seowords/layout/layout_D.html b/code/app/home/view/videoGpt1/module/seowords/layout/layout_D.html new file mode 100644 index 0000000..e5e7a34 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/seowords/layout/layout_D.html @@ -0,0 +1,151 @@ +
    + {assign name="intVariant" value="$pageCfg.seowords.variant"} + + {// =============== Variant 0:标准卡片 =============== } + {if $intVariant == 0} +
    +

    相关推荐

    +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    +
    + + {// =============== Variant 1:弱标题 =============== } + {elseif $intVariant == 1} +
    +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    +
    + + {// =============== Variant 2:标题在左 =============== } + {elseif $intVariant == 2} +
    + 相关搜索 +
    + {volist name="arrSeoWords" id="it"}{$it.text}{/volist} +
    +
    + + {// =============== Variant 3:背景强调 =============== } + {elseif $intVariant == 3} +
    +

    热门关键词

    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    + + {// =============== Variant 4:列表型 =============== } + {elseif $intVariant == 4} + + + {// =============== Variant 5:标签云 =============== } + {elseif $intVariant == 5} +
    + {volist name="arrSeoWords" id="it"} + {$it.text} + {/volist} +
    + + {// =============== Variant 6:footer 样式 =============== } + {elseif $intVariant == 6} +
    + {volist name="arrSeoWords" id="it"}{$it.text}{/volist} +
    + + {// =============== Variant 7:aside =============== } + {elseif $intVariant == 7} + + + {// =============== Variant 8:编号型 =============== } + {elseif $intVariant == 8} +
      + {volist name="arrSeoWords" id="it"} +
    1. {$it.text}
    2. + {/volist} +
    + + {// =============== Variant 9:极简块 =============== } + {elseif $intVariant == 9} +
    + {volist name="arrSeoWords" id="it"}{$it.text} {/volist} +
    + + {// =============== Variant 10:带说明 =============== } + {elseif $intVariant == 10} +
    +

    以下内容为您推荐:

    + {volist name="arrSeoWords" id="it"}{$it.text}{/volist} +
    + + {// =============== Variant 11:双列 =============== } + {elseif $intVariant == 11} +
    + {volist name="arrSeoWords" id="it"}{$it.text}{/volist} +
    + + {// =============== Variant 12:卡片阴影 =============== } + {elseif $intVariant == 12} +
    +

    你可能感兴趣

    + {volist name="arrSeoWords" id="it"}{$it.text}{/volist} +
    + + {// =============== Variant 13:描述型 =============== } + {elseif $intVariant == 13} +
    + 本页相关关键词: + {volist name="arrSeoWords" id="it"}{$it.text},{/volist} +
    + + {// =============== Variant 14:强调词 =============== } + {elseif $intVariant == 14} +
    + {volist name="arrSeoWords" id="it"}{$it.text}{/volist} +
    + + {// =============== Variant 15:标签列表 =============== } + {elseif $intVariant == 15} + + + {// =============== Variant 16:文本块 =============== } + {elseif $intVariant == 16} +
    + {volist name="arrSeoWords" id="it"}

    {$it.text}

    {/volist} +
    + + {// =============== Variant 17:SEO 块 =============== } + {elseif $intVariant == 17} +
    +
    相关搜索词
    + {volist name="arrSeoWords" id="it"}{$it.text} {/volist} +
    + + {// =============== Variant 18:注释块 =============== } + {elseif $intVariant == 18} +
    + 注:{volist name="arrSeoWords" id="it"}{$it.text},{/volist} +
    + + {// =============== Variant 19:默认 =============== } + {else} +
    + {volist name="arrSeoWords" id="it"}{$it.text} {/volist} +
    + {/if} +
    + \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/seowords/seowords_router.html b/code/app/home/view/videoGpt1/module/seowords/seowords_router.html new file mode 100644 index 0000000..bf3cddc --- /dev/null +++ b/code/app/home/view/videoGpt1/module/seowords/seowords_router.html @@ -0,0 +1,19 @@ +{notempty name="$arrVideo['v_seo_words']"} +{php} + $intRewrite = (int)($pageCfg['seowords']['rewrite'] ?? 0); + // ⭐ 执行 variant 策略 + $arrSeoWords = \app\common\helper\SeoWordsHelper::build( + $arrVideo['v_seo_words'], + $intRewrite + ); + +{/php} + +{switch $pageCfg.seowords.layout} + {case value="A"}{include file="module/seowords/layout/layout_A" /}{/case} + {case value="B"}{include file="module/seowords/layout/layout_B" /}{/case} + {case value="C"}{include file="module/seowords/layout/layout_C" /}{/case} + {case value="D"}{include file="module/seowords/layout/layout_D" /}{/case} +{/switch} + +{/notempty} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/module/trending/trending_01.html b/code/app/home/view/videoGpt1/module/trending/trending_01.html new file mode 100644 index 0000000..1c8b4ff --- /dev/null +++ b/code/app/home/view/videoGpt1/module/trending/trending_01.html @@ -0,0 +1,18 @@ +
    +
    +

    热门排行

    +
    + +
      + {volist name="arrVideoPiaofang" id="vo" offset="0" length="5"} +
    1. + +
      {$i}
      +
      + {$vo.v_name} +
      +
      +
    2. + {/volist} +
    +
    diff --git a/code/app/home/view/videoGpt1/module/trending/trending_02.html b/code/app/home/view/videoGpt1/module/trending/trending_02.html new file mode 100644 index 0000000..a42effa --- /dev/null +++ b/code/app/home/view/videoGpt1/module/trending/trending_02.html @@ -0,0 +1,15 @@ +
    +

    热播精选

    + +
    + {volist name="arrVideoPiaofang" id="vo" offset="0" length="8"} + + {$vo.v_name} + {$vo.v_name} + + {/volist} +
    +
    diff --git a/code/app/home/view/videoGpt1/module/trending/trending_03.html b/code/app/home/view/videoGpt1/module/trending/trending_03.html new file mode 100644 index 0000000..5d1a6fd --- /dev/null +++ b/code/app/home/view/videoGpt1/module/trending/trending_03.html @@ -0,0 +1,20 @@ +
    +
    + 热门热映 +
    + +
    + {volist name="arrVideoPiaofang" id="vo" offset="0" length="6"} + + {$vo.v_name} +
    +

    {$vo.v_name}

    +

    影片热度上涨,立即前往观看

    +
    +
    + {/volist} +
    +
    diff --git a/code/app/home/view/videoGpt1/module/trending/trending_04.html b/code/app/home/view/videoGpt1/module/trending/trending_04.html new file mode 100644 index 0000000..c61c6d1 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/trending/trending_04.html @@ -0,0 +1,19 @@ +
    +

    热门影视

    + +
    + {volist name="arrVideoPiaofang" id="vo" offset="0" length="4"} + +
    + {$vo.v_name} +
    + {$vo.v_name} +
    +
    +
    + {/volist} +
    +
    diff --git a/code/app/home/view/videoGpt1/module/trending/trending_05.html b/code/app/home/view/videoGpt1/module/trending/trending_05.html new file mode 100644 index 0000000..858f027 --- /dev/null +++ b/code/app/home/view/videoGpt1/module/trending/trending_05.html @@ -0,0 +1,12 @@ +
    +

    热播风向标

    + +
    + {volist name="arrVideoPiaofang" id="vo" offset="0" length="6"} + + + {$vo.v_name} + + {/volist} +
    +
    diff --git a/code/app/home/view/videoGpt1/public/module-newest.html b/code/app/home/view/videoGpt1/public/module-newest.html index 298a82f..8800ee6 100644 --- a/code/app/home/view/videoGpt1/public/module-newest.html +++ b/code/app/home/view/videoGpt1/public/module-newest.html @@ -3,7 +3,7 @@
    {volist name="arrVideoPiaofang" id="Video"} -
    {volist name="arrVideoPiaofang" id="Video"} -
    {volist name="arrVideoPiaofang" id="Video"} -
    {$Video.v_remarks} diff --git a/code/app/home/view/videoGpt1/public/video-list-shu.html b/code/app/home/view/videoGpt1/public/video-list-shu.html index 574619f..c47684c 100644 --- a/code/app/home/view/videoGpt1/public/video-list-shu.html +++ b/code/app/home/view/videoGpt1/public/video-list-shu.html @@ -5,7 +5,7 @@ {$arrGrm[$key+[start]]|raw} {/if}

    - {$Video.v_name} diff --git a/code/app/home/view/videoGpt1/public/video-list-text.html b/code/app/home/view/videoGpt1/public/video-list-text.html index 5ec592d..105882b 100644 --- a/code/app/home/view/videoGpt1/public/video-list-text.html +++ b/code/app/home/view/videoGpt1/public/video-list-text.html @@ -4,7 +4,7 @@ {$arrGrm[$key+[start]]|raw} {/if} {$Video.v_name} diff --git a/code/app/home/view/videoGpt1/rss/baidu.xml b/code/app/home/view/videoGpt1/rss/baidu.xml index 10eaad4..ac39614 100644 --- a/code/app/home/view/videoGpt1/rss/baidu.xml +++ b/code/app/home/view/videoGpt1/rss/baidu.xml @@ -19,7 +19,7 @@ <?php echo html_entity_decode($Video['v_name'], ENT_QUOTES | ENT_XML1, 'UTF-8'); ?> {$Video.v_remarks} - https://{$DomainModel->d_domain}{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/} + https://{$DomainModel->d_domain}{site:vurl v_id='$vo.v_id' v_py='$vo.v_name_en'/} {volist name='$Video.v_actor' id='vo' key='index'} {$vo} , diff --git a/code/app/home/view/videoGpt1/rss/so.xml b/code/app/home/view/videoGpt1/rss/so.xml index f2880ba..70d5cbb 100644 --- a/code/app/home/view/videoGpt1/rss/so.xml +++ b/code/app/home/view/videoGpt1/rss/so.xml @@ -9,7 +9,7 @@ sort_type="news" d_key="d_key" d_val="Video" cache_life="86400"} -https://www.{$DomainModel->d_domain}{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/} +https://www.{$DomainModel->d_domain}{site:vurl v_id='$vo.v_id' v_py='$vo.v_name_en'/} {$Video.v_publish_date} diff --git a/code/app/home/view/videoGpt1/video/getCategory.html b/code/app/home/view/videoGpt1/video/getCategory.html index e9dc361..8dc499f 100644 --- a/code/app/home/view/videoGpt1/video/getCategory.html +++ b/code/app/home/view/videoGpt1/video/getCategory.html @@ -3,7 +3,6 @@ {block name="get-data"} {video:pagerexp page="$Request.route.intPage" limit="30" button_num="10" cache_life="3600" -key="$Request.get.keyword" v_parent_category_en="$Request.route.strParentCategory" v_category_en="$Request.route.strCategory" v_lang_en="$Request.route.strLang" @@ -12,124 +11,54 @@ v_year="$Request.route.strYear" sort_type="$Request.route.strOrder" d_key="d_key" d_val="Video" p_val="page_data" func="generateVideoPager" export_name="resData" /} -{site:grm page_code="h5_category_list_type" diff="$Request.route.intPage" num="100" g_key="arrGrm" /} - -{site:helper func="initVideoCategoryTKD" /} {/block} -{block name="title"}{site:replace code="VIDEO@GETCATEGORY@TITLE"}{/block} -{block name="keywords"}{site:replace code="VIDEO@GETCATEGORY@KEYWORDS"}{/block} -{block name="description"}{site:replace code="VIDEO@GETCATEGORY@DESCRIPTION"}{/block} - -{block name="head"} - -{// 社交媒体标签} - - - -{switch $Request.route.strParentCategory } -{case 'dian-ying' } - -{/case} -{case 'dian-shi-ju' } - -{/case} -{case 'zong-yi' } - -{/case} -{case 'dong-man' } - -{/case} -{case 'duan-ju-da-quan' } - -{/case} -{default /} - -{/switch} - -{// 结构化数据} - - - +{block name="title"} +在线观看 {/block} + {block name="main"} -
    -

    {$typename}

    - -
    - -
    {$pages|raw}
    -
    +
    -{/block} -{block name="customize"} + {php} + // 1. 读取冻结 cfg + $cfg = $TpStyle['list_layout']['category_list']; + + // 2. 构建标题(不随机) + $title = [ + 'primary' => '', + 'secondary' => '共 ' . $resData['p_data']['total'] . ' 部影片', + ]; + {/php} + + {// ===== Title ===== } + {include file="module/list/title/title_F" /} + + {// ===== Shell + Item ===== } + {assign name="__LIST__" value="$resData.data"} + {assign name="listCfg" value="$TpStyle.list_layout.category_list"} + {include file="module/list/shell/_shell_router" /} + + + {// ===== Pagination ===== } + {php} + $pagerArr = $resData['p_data']['pager'] ?? []; + $page = $resData['p_data']['page'] ?? 1; + $pages = $resData['p_data']['pages'] ?? 1; + + // 从 cfg 取分页配置(你会在 SiteStyle 冻结下发) + $pagerCfg = $TpStyle['template_cfg']['components']['pager'] ?? []; + {/php} + + {assign name="listCfg" value="$TpStyle.list_layout.category_list"} + {include file="module/pager/_pager_router" /} + +
    {/block} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/video/getCategoryType.html b/code/app/home/view/videoGpt1/video/getCategoryType.html index c4ff2d9..c4380d9 100644 --- a/code/app/home/view/videoGpt1/video/getCategoryType.html +++ b/code/app/home/view/videoGpt1/video/getCategoryType.html @@ -2,8 +2,6 @@ {block name="get-data"} -{site:grm page_code="h5_category_type" diff="$Request.route.strParentCategory" num="100" g_key="arrGrm" /} - {site:helper func="initVideoCategoryTypeTKD" /} {/block} @@ -12,246 +10,106 @@ {block name="keywords"}{site:replace code="VIDEO@GETCATEGORYINDEX@KEYWORDS"}{/block} {block name="description"}{site:replace code="VIDEO@GETCATEGORYINDEX@DESCRIPTION"}{/block} -{block name="head"} - - - - -{switch $Request.route.strParentCategory } -{case 'dian-ying' } - -{/case} -{case 'dian-shi-ju' } - -{/case} -{case 'zong-yi' } - -{/case} -{case 'dong-man' } - -{/case} -{case 'duan-ju-da-quan' } - -{/case} -{default /} - -{/switch} - - - - -{/block} {block name="head-css"}{/block} {block name="head-js"}{/block} + {block name="main"} -
    - -

    - {site:replace code="VIDEO@GETCATEGORYINDEX@H1"} -

    -

    {site:replace code="VIDEO@GETCATEGORYINDEX@TEXT"}

    - - - - -
    -
    -
    -
    -
    -

    最近更新

    -
    -
    -
    -
      - {video:list count="12" - v_parent_category_en="$Request.route.strParentCategory" - sort_type="update" d_key="key" - d_val="Video" cache_life="3600"} - {include file="public/video-list-shu" start="10" col-md="6"/} - {/video:list} -
    -
    -
    -
    - -
    +
    + + {assign name="topModule" value="$TpStyle.template_cfg.pages.category_index.top_block.module"} - {video:categorytype category_type="ONE" d_key="key" d_val="val"} - {if $val.v_category_en == $Request.route.strParentCategory} - {foreach $val.children as $intChildrenKey=>$arrChildrenCategory } -
    -
    - - -
    -
    - - - -
    -
    -
      - {video:list count="8" v_category_en="$arrChildrenCategory.v_category_en" sort_type="news" d_key="key" - d_val="Video" cache_life="3600"} - {include file="public/video-list-shu" start="27" col-md="4"/} - {/video:list} -
    - -
    -
    - -
    -
    + {assign name="cfg" value="$TpStyle.template_cfg.list_layout[$topModule]"} + + {assign name="limit" value="$cfg['layout']['max_items']"} + + {if $topModule == 'rank'} + {video:ranklistexp count="$limit" sort_type="weekly" d_key="key" d_val="Video" cache_life="3600" v_parent_category_en="$Request.route.strParentCategory" + export_name="__LIST__" /} + + {else/} + {video:listexp count="$limit" sort_type="$topModule" d_key="key" d_val="Video" cache_life="3600" v_parent_category_en="$Request.route.strParentCategory" + export_name="__LIST__" /} - {/foreach} {/if} + + {assign name="title" value="$cfg.title_text"} + + {include file="module/list/title/title_A" /} + + {assign name="listCfg" value="$TpStyle.template_cfg.list_layout.category_list_index"} + + {include file="module/list/shell/_shell_router" /} + + + {video:categorytype category_type="ONE" d_key="key" d_val="val"} + + {if $val.v_category_en == $Request.route.strParentCategory} + + {foreach $val.children as $i => $sub} + + {video:listexp count="12" + v_parent_category_en="$Request.route.strParentCategory" + v_category_en="$sub.v_category_en" + v_lang_en="all" + v_area_en="all" + v_year="all" + sort_type="news" + d_key="d_key" d_val="Video" cache_life="3600" + export_name="__LIST__" /} + + {php} + // 1️⃣ 生成该二级分类的 section cfg(冻结) + $sectionCfg = \app\common\helper\SiteStyle::buildCategorySectionCfg( + $TpStyle['template_cfg'], + $sub['v_category_en'], + $i + ); + + // 2️⃣ 数据源(按二级分类变量名取) + $listVar = 'arrSubPreview_' . $sub['v_category_en']; + // $__LIST__ = $listVar ?? []; + //$__LIST__ = $arrVideoNewest ?? []; + + // 3️⃣ Title(二级分类固定 F) + $title = [ + 'primary' => $sub['v_category'], + 'secondary' => '精选推荐', + ]; + + // 4️⃣ 更多链接 + $moreUrl = '/videotype-dian-ying/xi-ju-pian-all-all-all/all-page1'; + {/php} + +
    + + + {include file="module/list/title/title_F" /} + + + {assign name="cfg" value="$sectionCfg"} + + {assign name="listCfg" value="$TpStyle.list_layout.category_list_index"} + + {include file="module/list/shell/_shell_router" /} + +
    + + {/foreach} + {/if} {/video:categorytype} -
    + + + {/block} + + {block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/video/getMap.html b/code/app/home/view/videoGpt1/video/getMap.html index c11901d..b7299a0 100644 --- a/code/app/home/view/videoGpt1/video/getMap.html +++ b/code/app/home/view/videoGpt1/video/getMap.html @@ -59,7 +59,7 @@ p_val="page_data" button_num="5" cache_life="3600" func="generateSearchPager" ex "item": { "@type": "Movies", "name": "{$Video.v_name}", - "url": 'https://{$DomainModel->d_domain}{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}', + "url": 'https://{$DomainModel->d_domain}{site:vurl v_id='$vo.v_id' v_py='$vo.v_name_en'/}', "description": "{$Video.v_description}", "actor": [ {foreach $Video.v_actor as $strActorKey=>$strActor } diff --git a/code/app/home/view/videoGpt1/video/getRankIndex.html b/code/app/home/view/videoGpt1/video/getRankIndex.html index 3e6a429..f5593a5 100644 --- a/code/app/home/view/videoGpt1/video/getRankIndex.html +++ b/code/app/home/view/videoGpt1/video/getRankIndex.html @@ -2,9 +2,6 @@ {block name="get-data"} -{site:grm page_code="h5_rank_type" diff="0" num="100" g_key="arrGrm" /} - - {/block} {block name="title"}{site:replace code="VIDEO@GETVIDEORANKINDEX@TITLE"}{/block} @@ -14,68 +11,8 @@ {block name="head"} -{// 社交媒体标签} - - - - - - {/block} @@ -91,79 +28,41 @@ {block name="main"} -
    - +{assign name="cfg" value="$TpStyle.template_cfg.list_layout.rank_list_index"} +{assign name="listCfg" value="$TpStyle.template_cfg.list_layout.rank_list_index"} +{assign name="rankModules" value="$TpStyle.template_cfg.pages.rank_home.modules"} +{assign name="limit" value="$cfg['layout']['max_items']"} -

    - {site:replace code="VIDEO@GETVIDEORANKINDEX@H1"} -

    -

    {site:replace code="VIDEO@GETVIDEORANKINDEX@TEXT"}

    +
    -
    -
    -
    -
    - -
    -
    -
    + {video:ranksort d_key="key" d_val="val"} -
    -
    -
    - {video:ranksort d_key="key" d_val="val"} -
    -
    -
    -

    {$val}排行榜

    -
    -
      - {video:ranklist count="20" - sort_type="weekly" - d_key="key" d_val="Video" cache_life="3600"} - {include file="public/video-list-phb" start="80"/} - {/video:ranklist} -
    -
    -
    - {/video:ranksort} -
    -
    + {video:ranklistexp count="$limit" + sort_type="$key" + d_key="key" d_val="Video" cache_life="3600" export_name="__LIST__" /} -
    + {php} + + $title = [ + 'primary' => $val.'排行榜', + 'secondary' => '', + ]; + {/php} + + {include file="module/list/title/_title_router" /} + + {include file="module/list/shell/_shell_router" /} + + {/video:ranksort} + + {/block} + + + {block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/video/getRankList.html b/code/app/home/view/videoGpt1/video/getRankList.html index cd1957a..b051254 100644 --- a/code/app/home/view/videoGpt1/video/getRankList.html +++ b/code/app/home/view/videoGpt1/video/getRankList.html @@ -53,7 +53,7 @@ p_val="page_data" button_num="10" cache_life="3600" export_name="arrVideoRankLis "description": "{$Video.v_description}", "thumbnailUrl": '{$Video.v_pic}', "uploadDate": "{:date('Y-m-d')}", - "url": 'https://{$DomainModel->d_domain}{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}', + "url": 'https://{$DomainModel->d_domain}{site:vurl v_id='$vo.v_id' v_py='$vo.v_name_en'/}', }, {/if} {/volist} diff --git a/code/app/home/view/videoGpt1/video/getSearchVideo.html b/code/app/home/view/videoGpt1/video/getSearchVideo.html index f813ca8..921328f 100644 --- a/code/app/home/view/videoGpt1/video/getSearchVideo.html +++ b/code/app/home/view/videoGpt1/video/getSearchVideo.html @@ -1,7 +1,10 @@ {extend name="base" /} {block name="get-data"} -{video:pagerexp page="$Request.get.page" limit="12" +{assign name="limit" value="$TpStyle.list_layout.search_list.layout.max_items"} +{assign name="listCfg" value="$TpStyle.list_layout.search_list"} + +{video:pagerexp page="$Request.get.page" limit="$limit" key="$Request.get.keyword" d_key="d_key" d_val="Video" @@ -59,7 +62,7 @@ p_val="page_data" button_num="5" cache_life="3600" func="generateSearchPager" ex "item": { "@type": "Movies", "name": "{$Video.v_name}", - "url": 'https://{$DomainModel->d_domain}{site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/}', + "url": 'https://{$DomainModel->d_domain}{site:vurl v_id='$vo.v_id' v_py='$vo.v_name_en'/}', "description": "{$Video.v_description}", "actor": [ {foreach $Video.v_actor as $strActorKey=>$strActor } @@ -96,25 +99,39 @@ p_val="page_data" button_num="5" cache_life="3600" func="generateSearchPager" ex {block name="main"} -{include file="header" /} +{php} +// 1. 读取冻结 cfg +$cfg = $TpStyle['list_layout']['search_list']; +$searchCfg = $TpStyle['template_cfg']['pages']['search']['top_block']; -
    -

    搜索结果:{$wd}

    +// 2. 构建标题(不随机) +$title = [ + 'primary' => '', + 'secondary' => '共 ' . $resData['p_data']['total'] . ' 部影片', +]; +{/php} -
    - {volist name="list" id="vo"} - -
    - -
    -
    {$vo.title}
    -
    - {/volist} -
    -
    -{include file="footer" /} +{include file="module/search/_search_header_router" /} + +{// ===== Shell + Item ===== } +{assign name="__LIST__" value="$resData.data"} +{include file="module/list/shell/_shell_router" /} + + +{// ===== Pagination ===== } +{php} +$pagerArr = $resData['p_data']['pager'] ?? []; +$page = $resData['p_data']['page'] ?? 1; +$pages = $resData['p_data']['pages'] ?? 1; + +// 从 cfg 取分页配置(你会在 SiteStyle 冻结下发) +$pagerCfg = $TpStyle['template_cfg']['components']['pager'] ?? []; +{/php} + + +{include file="module/pager/_pager_router" /} {/block} {block name="customize"} diff --git a/code/app/home/view/videoGpt1/video/getVideoInfo.html b/code/app/home/view/videoGpt1/video/getVideoInfo.html index 80d82b2..bf52067 100644 --- a/code/app/home/view/videoGpt1/video/getVideoInfo.html +++ b/code/app/home/view/videoGpt1/video/getVideoInfo.html @@ -1,219 +1,36 @@ {extend name="base" /} - {block name="get-data"} -{if $Request.route.intVId && $Request.route.intVForgeId} -{video:info v_id="$Request.route.intVId" v_key="arrVideo" v_fid="$Request.route.intVForgeId" /} +{if $Request.route.intVId && $Request.route.intVForgeId} + {video:info v_id="$Request.route.intVId" v_key="arrVideo" v_fid="$Request.route.intVForgeId" export_name="arrVideo"/} {elseif $Request.route.intVId} -{video:info v_id="$Request.route.intVId" v_key="arrVideo" /} + {video:info v_id="$Request.route.intVId" v_key="arrVideo" export_name="arrVideo"/} {else} -{video:info v_id="$DomainModel->info_id" n_key="arrVideo" /} -{/if} -{site:grm page_code="h5_video_info" diff="$arrVideo.v_id" num="120" g_key="arrGrm" /} - -{/block} - -{block name="title"} -{if $DomainModel->info_id == $Request.route.intVId || empty($Request.route.intVId)} -{site:replace code="VIDEO@INDEX@INDEX@TITLE"} -{else} -{site:replace code="VIDEO@GETVIDEOINFO@TITLE" diff="$Request.route.intVId" /} -{/if} -{/block} - - -{block name="keywords"} -{if $DomainModel->info_id == $Request.route.intVId || empty($Request.route.intVId)} -{site:replace code="VIDEO@INDEX@INDEX@KEYWORDS"} -{else} -{site:replace code="VIDEO@GETVIDEOINFO@KEYWORDS" diff="$Request.route.intVId"} -{/if} -{/block} - -{block name="description"} -{if $DomainModel->info_id == $Request.route.intVId || empty($Request.route.intVId)} -{site:replace code="VIDEO@INDEX@INDEX@DESCRIPTION"} -{else} -{site:replace code="VIDEO@GETVIDEOINFO@DESCRIPTION" diff="$Request.route.intVId"} -{/if} -{/block} - - -{block name="head"} - -{// Open Graph 协议(用于Facebook、LinkedIn等)} - - -{switch $arrVideo.v_parent_category_en } -{case 'dian-ying' } - -{/case} -{case 'dian-shi-ju' } - -{/case} -{case 'zong-yi' } - -{/case} -{case 'dong-man' } - -{/case} -{case 'duan-ju-da-quan' } - -{/case} -{default /} - -{/switch} - - - - - -{// Twitter Card(用于Twitter/X)} - - - - - -{if $Request.route.intVId && $Request.route.intVForgeId} - + {video:info v_id="$DomainModel->info_id" n_key="arrVideo" export_name="arrVideo" /} {/if} -{// 结构化数据} - -{/block} - -{block name='body-class'}video-info-page{/block} - -{block name="strPageCode"} - {/block} {block name="main"} -
    + {assign name="pageCfg" value="$TpStyle.template_cfg.pages.detail"} -
    -
    - -
    + {php} + $arrBreadcrumb = [ + ['title'=>'首页','url'=>'/'], + ['title'=>$arrVideo['v_parent_category'],'url'=>$strVciurl], + ['title'=>$arrVideo['v_category'],'url'=>$strVclurl], + ]; + {/php} + -
    -

    {$info.title}

    -
    {$info.year} · {$info.area} · {$info.type}
    + {include file="module/page/page_router" /} - -

    - {php}$desc = \app\common\helper\TextSpin::spin($info['intro'], $style['theme_id']);{/php} - {$desc} -

    - - 开始播放 -
    -
    - -

    剧集列表

    -
    - {volist name="episodes" id="vo"} - 第{$vo.n}集 - {/volist} -
    - -
    - - - - {/block} -{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html b/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html index e86e81e..dac3033 100644 --- a/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html +++ b/code/app/home/view/videoGpt1/video/getVideoPlayUrl.html @@ -1,191 +1,74 @@ {extend name="base" /} - {block name="get-data"} -{video:info v_id="$Request.route.intVId" v_key="arrVideo" /} -{site:grm page_code="h5_video_info" diff="$arrVideo.v_id" num="120" g_key="arrGrm" /} - -{/block} - -{block name="title"} -{site:replace code="VIDEO@GETVIDEOPLAY@TITLE" diff="$Request.route.intVId" /} -{/block} - -{block name="keywords"} -{site:replace code="VIDEO@GETVIDEOPLAY@KEYWORDS" diff="$Request.route.intVId"} -{/block} - -{block name="description"} -{site:replace code="VIDEO@GETVIDEOPLAY@DESCRIPTION" diff="$Request.route.intVId"} -{/block} - -{block name="head"} - -{// Open Graph 协议(用于Facebook、LinkedIn等)} - - -{switch $arrVideo.v_parent_category_en } -{case 'dian-ying' } - -{/case} -{case 'dian-shi-ju' } - -{/case} -{case 'zong-yi' } - -{/case} -{case 'dong-man' } - -{/case} -{case 'duan-ju-da-quan' } - -{/case} -{default /} - -{/switch} - - - - - -{// Twitter Card(用于Twitter/X)} - - - - - {if $Request.route.intVId && $Request.route.intVForgeId} - + {video:info v_id="$Request.route.intVId" v_key="arrVideo" v_fid="$Request.route.intVForgeId" export_name="arrVideo"/} +{elseif $Request.route.intVId} + {video:info v_id="$Request.route.intVId" v_key="arrVideo" export_name="arrVideo"/} +{else} + {video:info v_id="$DomainModel->info_id" n_key="arrVideo" export_name="arrVideo" /} {/if} +{site:vciurl parent_category="$arrVideo.v_parent_category_en" export_name="strVciurl" /} +{site:vclurl parent_category="$arrVideo.v_parent_category_en" + category="$arrVideo.v_category_en" + area="all" lang="all" year="all" order="all" page="1" + export_name="strVclurl" /} -{// 结构化数据} - {/block} {block name="head-css"} - -{/block} - - -{block name='body-class'}video-play-page{/block} - -{block name="strPageCode"} - {/block} {block name="main"} +{assign name="pageCfg" value="$TpStyle.template_cfg.pages.play"} -
    -
    - {$player_code|raw} -
    + {php} + $arrBreadcrumb = [ + ['title'=>'首页','url'=>'/'], + ['title'=>$arrVideo['v_parent_category'],'url'=>$strVciurl], + ['title'=>$arrVideo['v_category'],'url'=>$strVclurl], + ]; + {/php} + -

    选集

    -
    - {volist name="episodes" id="vo"} - - 第{$vo.n}集 - - {/volist} -
    -
    + {include file="module/page/page_router" /} - - - - - - + + + + {/block} - -{block name="customize"} - -{/block} - - {block name="footer-js"} - - + + + + + {/block} \ No newline at end of file diff --git a/code/app/model/SystemConfigModel.php b/code/app/model/SystemConfigModel.php index 92819bb..991bc7e 100644 --- a/code/app/model/SystemConfigModel.php +++ b/code/app/model/SystemConfigModel.php @@ -31,6 +31,20 @@ class SystemConfigModel extends BaseModel return self::$arrSystemConfig[$strCode] ?? NULL; } + static public function getConfigs() + { + if (self::$arrSystemConfig == []) { + self::$arrSystemConfig = Cache::get('Config'); + + if (empty(self::$arrSystemConfig)) { + self::flushCache(); + self::$arrSystemConfig = Cache::get('Config'); + } + } + + return self::$arrSystemConfig ?? NULL; + } + static public function flushCache() { $arrSystemConfig = self::column('sc_val', 'sc_code'); diff --git a/code/app/services/SiteContext.php b/code/app/services/SiteContext.php index babac3e..baa1af6 100644 --- a/code/app/services/SiteContext.php +++ b/code/app/services/SiteContext.php @@ -9,9 +9,11 @@ use app\model\VideoCategoryModel; use app\model\TemplatesModel; use app\model\CategoryModel; use app\model\ChapterModel; +use app\model\SystemConfigModel; use app\model\NovelClicksModel; use app\model\NovelModel; use app\common\helper\SiteStyle; +use app\common\helper\CssBuilder; use think\facade\Request; use think\facade\Config; use think\exception\HttpException; @@ -152,7 +154,6 @@ class SiteContext View::assign("strYouQingLiangJieTemp", $strYouQingLiangJieTemp); } - // 视频站点需要信息 // $strVideoCategoryIndexUrlTemp = $this->DomainModel->getFomartSubject('VIDEO_CATEGORY_INDEX_URL', '', false); // $strVideoSearchListUrlTemp = $this->DomainModel->getFomartSubject('VIDEO_SEARCH_LIST_URL', '', false); @@ -160,11 +161,28 @@ class SiteContext // View::assign("strVideoCategoryIndexUrlTemp", $strVideoCategoryIndexUrlTemp); // View::assign("strVideoSearchListUrlTemp", $strVideoSearchListUrlTemp); // View::assign("strVideoHistoryUrlTemp", $strVideoHistoryUrlTemp); - - + // var_dump($this->DomainModel->t_cfg); + $strEmail = SystemConfigModel::getValByCode('YOU_XIANG'); + // 1. 站点 DNA $TpStyle = SiteStyle::getConfig(); + + // 3. 构建本域名 CSS(合并并替换 __PFX__) + $cssUrl = CssBuilder::build( + $TpStyle['css_files'], + $TpStyle['dom_prefix'], + $TpStyle['static_hash'] + ); + + // 4. 模板变量注入 View::assign('TpStyle', $TpStyle); - + View::assign("TpTpl", $TpStyle['templates']); + View::assign('TpCss', $cssUrl); + View::assign('strEmail', $strEmail); + + $vod_list = $this->DomainModel; + View::assign('vod_list',$vod_list); + + View::assign('Request', $this->Request); View::assign('DomainModel', $this->DomainModel); View::assign('TemplatesModel', $this->TemplatesModel); diff --git a/code/extend/template/taglib/Site.php b/code/extend/template/taglib/Site.php index 11bf88a..316d700 100644 --- a/code/extend/template/taglib/Site.php +++ b/code/extend/template/taglib/Site.php @@ -20,13 +20,13 @@ class Site extends TagLib 'grm' => ['attr' => 'domain,code,line,diff,start,end,index,type', 'close' => 0], 'replace' => ['attr' => 'code,diff', 'close' => 0], - 'vciurl' => ['attr' => 'parent_category', 'close' => 0], - 'vclurl' => ['attr' => 'category,parent_category,area,lang,year,order,page', 'close' => 0], - 'vrlurl' => ['attr' => 'category,parent_category,sort_type,page', 'close' => 0], - 'vurl' => ['attr' => 'v_id,v_py', 'close' => 0], - 'vfurl' => ['attr' => 'v_id,v_py,v_fid', 'close' => 0], - 'vpurl' => ['attr' => 'v_id,v_py,play_type,play_index', 'close' => 0], - 'vsurl' => ['attr' => 'key', 'close' => 0], + 'vciurl' => ['attr' => 'parent_category,export_name', 'close' => 0], + 'vclurl' => ['attr' => 'category,parent_category,area,lang,year,order,page,export_name', 'close' => 0], + 'vrlurl' => ['attr' => 'category,parent_category,sort_type,page,export_name', 'close' => 0], + 'vurl' => ['attr' => 'v_id,v_py,export_name', 'close' => 0], + 'vfurl' => ['attr' => 'v_id,v_py,v_fid,export_name', 'close' => 0], + 'vpurl' => ['attr' => 'v_id,v_py,play_type,play_index,export_name', 'close' => 0], + 'vsurl' => ['attr' => 'key,export_name', 'close' => 0], 'forgelist' => ['attr' => 'count,diff_key,cache_life,d_key,d_val', 'close' => 1], 'helper' => ['attr' => 'func', 'close' => 0], @@ -52,13 +52,33 @@ class Site extends TagLib { $strParentCategory = $tag['parent_category']; $strParentCategory = $this->customBuildVar($strParentCategory); + $export_name = $tag['export_name'] ?? ''; + // 随机别名变量,避免与模板内其它变量冲突 + $strDataName = randomString(8); + // export_name 做基本校验(可选但建议) + if (!empty($export_name) && !preg_match('/^[A-Za-z_]\w*$/', $export_name)) { + $export_name = ''; + } + + // 先统一计算 URL $strParse = <<getVideoCategoryIndexUrl({$strParentCategory}); - echo \$strUrl; +\${$strDataName} = app(\\app\\services\\VideoService::class)->getVideoCategoryIndexUrl({$strParentCategory}); +EOD; + + // 决定导出还是直接输出 + if (empty($export_name)) { + $strParse .= << EOD; + } else { + $strParse .= << +EOD; + } return $strParse; } @@ -77,6 +97,7 @@ EOD; $strYear = isset($tag['year']) ? $tag['year'] : 'all'; $strOrder = isset($tag['order']) ? $tag['order'] : ''; $intPage = isset($tag['page']) ? $tag['page'] : 1; + $export_name = $tag['export_name'] ?? ''; $strCategory = $this->customBuildVar($strCategory); $strParentCategory = $this->customBuildVar($strParentCategory); @@ -86,12 +107,31 @@ EOD; $strOrder = $this->customBuildVar($strOrder); $intPage = $this->customBuildVar($intPage); + // 随机别名变量,避免与模板内其它变量冲突 + $strDataName = randomString(8); + + // export_name 做基本校验(可选但建议) + if (!empty($export_name) && !preg_match('/^[A-Za-z_]\w*$/', $export_name)) { + $export_name = ''; + } + $strParse = <<getVideoCategoryUrl({$strCategory},{$strParentCategory},{$strArea},{$strLang},{$strYear},{$strOrder},{$intPage}); - echo \$strUrl; +\${$strDataName} = app(\\app\\services\\VideoService::class)->getVideoCategoryUrl({$strCategory},{$strParentCategory},{$strArea},{$strLang},{$strYear},{$strOrder},{$intPage}); + +EOD; + // 决定导出还是直接输出 + if (empty($export_name)) { + $strParse .= << EOD; + } else { + $strParse .= << +EOD; + } return $strParse; } @@ -112,12 +152,30 @@ EOD; $strSortType = $this->customBuildVar($strSortType); $intPage = $this->customBuildVar($intPage); + $export_name = $tag['export_name'] ?? ''; + $strDataName = randomString(8); + + // export_name 做基本校验(可选但建议) + if (!empty($export_name) && !preg_match('/^[A-Za-z_]\w*$/', $export_name)) { + $export_name = ''; + } + $strParse = <<getVideoRankUrl({$strCategory},{$strParentCategory},{$strSortType},{$intPage}); - echo \$strUrl; + \${$strDataName} = app(\\app\\services\\VideoService::class)->getVideoRankUrl({$strCategory},{$strParentCategory},{$strSortType},{$intPage}); +EOD; + // 决定导出还是直接输出 + if (empty($export_name)) { + $strParse .= << EOD; + } else { + $strParse .= << +EOD; + } return $strParse; } @@ -135,12 +193,30 @@ EOD; $intVId = $this->customBuildVar($intVId); $strVPy = $this->customBuildVar($strVPy); + $export_name = $tag['export_name'] ?? ''; + $strDataName = randomString(8); + + // export_name 做基本校验(可选但建议) + if (!empty($export_name) && !preg_match('/^[A-Za-z_]\w*$/', $export_name)) { + $export_name = ''; + } + $strParse = <<getVideoInfoUrl({$intVId},{$strVPy}); - echo \$strUrl; + \${$strDataName} = app(\\app\\services\\VideoService::class)->getVideoInfoUrl({$intVId},{$strVPy}); +EOD; + // 决定导出还是直接输出 + if (empty($export_name)) { + $strParse .= << EOD; + } else { + $strParse .= << +EOD; + } return $strParse; } @@ -160,12 +236,30 @@ EOD; $strVPy = $this->customBuildVar($strVPy); $intVForgeId = $this->customBuildVar($intVForgeId); + $export_name = $tag['export_name'] ?? ''; + $strDataName = randomString(8); + + // export_name 做基本校验(可选但建议) + if (!empty($export_name) && !preg_match('/^[A-Za-z_]\w*$/', $export_name)) { + $export_name = ''; + } + $strParse = <<getForgeVideoInfoUrl({$intVId},{$strVPy},{$intVForgeId}); - echo \$strUrl; + \${$strDataName} = app(\\app\\services\\VideoService::class)->getForgeVideoInfoUrl({$intVId},{$strVPy},{$intVForgeId}); +EOD; + // 决定导出还是直接输出 + if (empty($export_name)) { + $strParse .= << EOD; + } else { + $strParse .= << +EOD; + } return $strParse; } @@ -188,12 +282,30 @@ EOD; $strPlayType = $this->customBuildVar($strPlayType); $intPlayIndex = $this->customBuildVar($intPlayIndex); + $export_name = $tag['export_name'] ?? ''; + $strDataName = randomString(8); + + // export_name 做基本校验(可选但建议) + if (!empty($export_name) && !preg_match('/^[A-Za-z_]\w*$/', $export_name)) { + $export_name = ''; + } + $strParse = <<getVideoPlayUrl({$intVId},{$strVPy},{$strPlayType},{$intPlayIndex}); - echo \$strUrl; + \${$strDataName} = app(\\app\\services\\VideoService::class)->getVideoPlayUrl({$intVId},{$strVPy},{$strPlayType},{$intPlayIndex}); +EOD; + // 决定导出还是直接输出 + if (empty($export_name)) { + $strParse .= << EOD; + } else { + $strParse .= << +EOD; + } return $strParse; } @@ -211,12 +323,30 @@ EOD; $strKey = $this->customBuildVar($strKey); $intPage = $this->customBuildVar($intPage); + $export_name = $tag['export_name'] ?? ''; + $strDataName = randomString(8); + + // export_name 做基本校验(可选但建议) + if (!empty($export_name) && !preg_match('/^[A-Za-z_]\w*$/', $export_name)) { + $export_name = ''; + } + $strParse = <<getVideoSearchUrl({$strKey},{$intPage}); - echo \$strUrl; + \${$strDataName} = app(\\app\\services\\VideoService::class)->getVideoSearchUrl({$strKey},{$intPage}); +EOD; + // 决定导出还是直接输出 + if (empty($export_name)) { + $strParse .= << EOD; + } else { + $strParse .= << +EOD; + } return $strParse; } diff --git a/code/public/initdata/video/siteData.php b/code/public/initdata/video/siteData.php index bb6d6a1..936848e 100644 --- a/code/public/initdata/video/siteData.php +++ b/code/public/initdata/video/siteData.php @@ -137,7 +137,110 @@ $arrSiteData = [ 'd_text_logo' => '热门影视平台', 't_cfg' => [], ], - + [ + 'd_id' => 1011, + 'd_domain' => 'video11.com', + 'd_name' => 'gpt1', + 't_id' => '1007', + 'd_keywords' => 'video10', + 'd_description' => '欢迎来到蜂鸟影视 - 蜂鸟影视影院免费高清电视剧大全,蜂鸟影视电影资源第二页,最新高清电影电视剧、伦理片、综艺、美剧、韩剧、英剧', + 'd_index_title' => '蜂鸟影视资源网在线观看免费官网-2024蜂鸟影视影院免费高清电视剧大全-https://video6.com-蜂鸟影视', + 'd_index_keywords' => '蜂鸟影视资源网在线观看免费官网,2024蜂鸟影视影院免费高清电视剧大全,蜂鸟影视影院大全在线观看,短视频,搞笑视频,视频分享,免费视频,在线视频,预告片-蜂鸟影视', + 'd_index_description' => '蜂鸟影视资源网在线观看免费官网(https://video7.com)2024蜂鸟影视影院免费高清电视剧大全,蜂鸟影视电影资源第二页,最新高清电影电视剧、伦理片、综艺、美剧、韩剧、英剧、日剧等蜂鸟影视中文在线观看!提供2024最新电视剧免费观看-蜂鸟影视', + 'd_text_logo' => '热门影视平台', + 't_cfg' => [], + ], + [ + 'd_id' => 1012, + 'd_domain' => 'video12.com', + 'd_name' => 'gpt1', + 't_id' => '1007', + 'd_keywords' => 'video10', + 'd_description' => '欢迎来到蜂鸟影视 - 蜂鸟影视影院免费高清电视剧大全,蜂鸟影视电影资源第二页,最新高清电影电视剧、伦理片、综艺、美剧、韩剧、英剧', + 'd_index_title' => '蜂鸟影视资源网在线观看免费官网-2024蜂鸟影视影院免费高清电视剧大全-https://video6.com-蜂鸟影视', + 'd_index_keywords' => '蜂鸟影视资源网在线观看免费官网,2024蜂鸟影视影院免费高清电视剧大全,蜂鸟影视影院大全在线观看,短视频,搞笑视频,视频分享,免费视频,在线视频,预告片-蜂鸟影视', + 'd_index_description' => '蜂鸟影视资源网在线观看免费官网(https://video7.com)2024蜂鸟影视影院免费高清电视剧大全,蜂鸟影视电影资源第二页,最新高清电影电视剧、伦理片、综艺、美剧、韩剧、英剧、日剧等蜂鸟影视中文在线观看!提供2024最新电视剧免费观看-蜂鸟影视', + 'd_text_logo' => '热门影视平台', + 't_cfg' => [], + ], + [ + 'd_id' => 1013, + 'd_domain' => 'video13.com', + 'd_name' => 'gpt1', + 't_id' => '1007', + 'd_keywords' => 'video10', + 'd_description' => '欢迎来到蜂鸟影视 - 蜂鸟影视影院免费高清电视剧大全,蜂鸟影视电影资源第二页,最新高清电影电视剧、伦理片、综艺、美剧、韩剧、英剧', + 'd_index_title' => '蜂鸟影视资源网在线观看免费官网-2024蜂鸟影视影院免费高清电视剧大全-https://video6.com-蜂鸟影视', + 'd_index_keywords' => '蜂鸟影视资源网在线观看免费官网,2024蜂鸟影视影院免费高清电视剧大全,蜂鸟影视影院大全在线观看,短视频,搞笑视频,视频分享,免费视频,在线视频,预告片-蜂鸟影视', + 'd_index_description' => '蜂鸟影视资源网在线观看免费官网(https://video7.com)2024蜂鸟影视影院免费高清电视剧大全,蜂鸟影视电影资源第二页,最新高清电影电视剧、伦理片、综艺、美剧、韩剧、英剧、日剧等蜂鸟影视中文在线观看!提供2024最新电视剧免费观看-蜂鸟影视', + 'd_text_logo' => '热门影视平台', + 't_cfg' => [], + ], + [ + 'd_id' => 1014, + 'd_domain' => 'video14.com', + 'd_name' => 'gpt1', + 't_id' => '1007', + 'd_keywords' => 'video10', + 'd_description' => '欢迎来到蜂鸟影视 - 蜂鸟影视影院免费高清电视剧大全,蜂鸟影视电影资源第二页,最新高清电影电视剧、伦理片、综艺、美剧、韩剧、英剧', + 'd_index_title' => '蜂鸟影视资源网在线观看免费官网-2024蜂鸟影视影院免费高清电视剧大全-https://video6.com-蜂鸟影视', + 'd_index_keywords' => '蜂鸟影视资源网在线观看免费官网,2024蜂鸟影视影院免费高清电视剧大全,蜂鸟影视影院大全在线观看,短视频,搞笑视频,视频分享,免费视频,在线视频,预告片-蜂鸟影视', + 'd_index_description' => '蜂鸟影视资源网在线观看免费官网(https://video7.com)2024蜂鸟影视影院免费高清电视剧大全,蜂鸟影视电影资源第二页,最新高清电影电视剧、伦理片、综艺、美剧、韩剧、英剧、日剧等蜂鸟影视中文在线观看!提供2024最新电视剧免费观看-蜂鸟影视', + 'd_text_logo' => '热门影视平台', + 't_cfg' => [], + ], + [ + 'd_id' => 1015, + 'd_domain' => 'video15.com', + 'd_name' => 'gpt1', + 't_id' => '1007', + 'd_keywords' => 'video10', + 'd_description' => '欢迎来到蜂鸟影视 - 蜂鸟影视影院免费高清电视剧大全,蜂鸟影视电影资源第二页,最新高清电影电视剧、伦理片、综艺、美剧、韩剧、英剧', + 'd_index_title' => '蜂鸟影视资源网在线观看免费官网-2024蜂鸟影视影院免费高清电视剧大全-https://video6.com-蜂鸟影视', + 'd_index_keywords' => '蜂鸟影视资源网在线观看免费官网,2024蜂鸟影视影院免费高清电视剧大全,蜂鸟影视影院大全在线观看,短视频,搞笑视频,视频分享,免费视频,在线视频,预告片-蜂鸟影视', + 'd_index_description' => '蜂鸟影视资源网在线观看免费官网(https://video7.com)2024蜂鸟影视影院免费高清电视剧大全,蜂鸟影视电影资源第二页,最新高清电影电视剧、伦理片、综艺、美剧、韩剧、英剧、日剧等蜂鸟影视中文在线观看!提供2024最新电视剧免费观看-蜂鸟影视', + 'd_text_logo' => '热门影视平台', + 't_cfg' => [], + ], + [ + 'd_id' => 1016, + 'd_domain' => 'video16.com', + 'd_name' => 'gpt1', + 't_id' => '1007', + 'd_keywords' => 'video10', + 'd_description' => '欢迎来到蜂鸟影视 - 蜂鸟影视影院免费高清电视剧大全,蜂鸟影视电影资源第二页,最新高清电影电视剧、伦理片、综艺、美剧、韩剧、英剧', + 'd_index_title' => '蜂鸟影视资源网在线观看免费官网-2024蜂鸟影视影院免费高清电视剧大全-https://video6.com-蜂鸟影视', + 'd_index_keywords' => '蜂鸟影视资源网在线观看免费官网,2024蜂鸟影视影院免费高清电视剧大全,蜂鸟影视影院大全在线观看,短视频,搞笑视频,视频分享,免费视频,在线视频,预告片-蜂鸟影视', + 'd_index_description' => '蜂鸟影视资源网在线观看免费官网(https://video7.com)2024蜂鸟影视影院免费高清电视剧大全,蜂鸟影视电影资源第二页,最新高清电影电视剧、伦理片、综艺、美剧、韩剧、英剧、日剧等蜂鸟影视中文在线观看!提供2024最新电视剧免费观看-蜂鸟影视', + 'd_text_logo' => '热门影视平台', + 't_cfg' => [], + ], + [ + 'd_id' => 1017, + 'd_domain' => 'video17.com', + 'd_name' => 'gpt1', + 't_id' => '1007', + 'd_keywords' => 'video10', + 'd_description' => '欢迎来到蜂鸟影视 - 蜂鸟影视影院免费高清电视剧大全,蜂鸟影视电影资源第二页,最新高清电影电视剧、伦理片、综艺、美剧、韩剧、英剧', + 'd_index_title' => '蜂鸟影视资源网在线观看免费官网-2024蜂鸟影视影院免费高清电视剧大全-https://video6.com-蜂鸟影视', + 'd_index_keywords' => '蜂鸟影视资源网在线观看免费官网,2024蜂鸟影视影院免费高清电视剧大全,蜂鸟影视影院大全在线观看,短视频,搞笑视频,视频分享,免费视频,在线视频,预告片-蜂鸟影视', + 'd_index_description' => '蜂鸟影视资源网在线观看免费官网(https://video7.com)2024蜂鸟影视影院免费高清电视剧大全,蜂鸟影视电影资源第二页,最新高清电影电视剧、伦理片、综艺、美剧、韩剧、英剧、日剧等蜂鸟影视中文在线观看!提供2024最新电视剧免费观看-蜂鸟影视', + 'd_text_logo' => '热门影视平台', + 't_cfg' => [], + ], + [ + 'd_id' => 1018, + 'd_domain' => 'video18.com', + 'd_name' => 'gpt1', + 't_id' => '1007', + 'd_keywords' => 'video10', + 'd_description' => '欢迎来到蜂鸟影视 - 蜂鸟影视影院免费高清电视剧大全,蜂鸟影视电影资源第二页,最新高清电影电视剧、伦理片、综艺、美剧、韩剧、英剧', + 'd_index_title' => '蜂鸟影视资源网在线观看免费官网-2024蜂鸟影视影院免费高清电视剧大全-https://video6.com-蜂鸟影视', + 'd_index_keywords' => '蜂鸟影视资源网在线观看免费官网,2024蜂鸟影视影院免费高清电视剧大全,蜂鸟影视影院大全在线观看,短视频,搞笑视频,视频分享,免费视频,在线视频,预告片-蜂鸟影视', + 'd_index_description' => '蜂鸟影视资源网在线观看免费官网(https://video7.com)2024蜂鸟影视影院免费高清电视剧大全,蜂鸟影视电影资源第二页,最新高清电影电视剧、伦理片、综艺、美剧、韩剧、英剧、日剧等蜂鸟影视中文在线观看!提供2024最新电视剧免费观看-蜂鸟影视', + 'd_text_logo' => '热门影视平台', + 't_cfg' => [], + ], ]; return $arrSiteData; diff --git a/code/public/static/css/compiled/dom_6ac636961e.css b/code/public/static/css/compiled/dom_6ac636961e.css new file mode 100644 index 0000000..23cdaef --- /dev/null +++ b/code/public/static/css/compiled/dom_6ac636961e.css @@ -0,0 +1 @@ +html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; } *, *::before, *::after { box-sizing: border-box; } body { line-height: 1.5; font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif; background: #f7f7f7; color: #333; } img { display:block; width:100%; height:auto; object-fit:cover; background:#eee; } a { color:inherit; text-decoration:none; } section { margin-bottom:20px; } .gkjpcv-main { padding:12px 14px; } .gkjpcv-title { font-size:16px; font-weight:600; color:var(--primary-color); margin-bottom:12px; } @media(min-width:768px){ body { max-width: var(--page-max-width); margin:0 auto; } } /* head_37.css - type2 */ .gkjpcv-0db-shell{ padding:10px 12px 6px; background:var(--bg-soft-color); border-bottom:1px solid var(--border-color); } .gkjpcv-0db-bar{ display:flex; align-items:center; justify-content:space-between; gap:10px; } .gkjpcv-0db-brand{ display:flex; flex-direction:column; } .gkjpcv-0db-name{ font-size:18px; font-weight:600; color:var(--primary-color); } .gkjpcv-0db-sub{ font-size:11px; color:var(--text-muted-color); } .gkjpcv-0db-toggle{ width:32px; height:32px; border-radius:999px; border:1px solid var(--border-color); background:#fff; cursor:pointer; } .gkjpcv-0db-search{ margin-top:6px; display:flex; background:#fff; border-radius:999px; border:1px solid var(--border-color); padding:3px 4px 3px 10px; } .gkjpcv-0db-search input{ flex:1; border:none; font-size:13px; background:transparent; } .gkjpcv-0db-go{ min-width:48px; border:none; border-radius:999px; background:var(--primary-color); color:#fff; font-size:13px; cursor:pointer; } .gkjpcv-0db-nav{ margin-top:4px; } .gkjpcv-0db-navList{ list-style:none; padding:0; margin:0; display:flex; gap:8px; overflow-x:auto; } .gkjpcv-0db-navList a{ display:inline-block; padding:4px 10px; border-radius:999px; font-size:12px; background:#fff; color:var(--text-color); white-space:nowrap; } .gkjpcv-0db-navList a.active{ background:var(--primary-color); color:#fff; } @media(min-width:768px){ .gkjpcv-0db-toggle{display:none;} .gkjpcv-0db-navList{justify-content:flex-end;} }/* footer_19.css */ .gkjpcv-f19-d-gm290-wrap,.gkjpcv-f19-d-gm290-shell,.gkjpcv-f19-d-gm290-mini,.gkjpcv-f19-d-gm290-info{ padding:17px 14px; background:var(--bg-color); border-top:1px solid var(--border-color); font-size:13px; color:var(--text-color); text-align:center; } .gkjpcv-f19-d-gm290-map a{ display:inline-block; margin:0 9px 4px 0; color:var(--text-color); font-size:12px; } .gkjpcv-f19-d-gm290-links a{ display:inline-block; margin:0 10px 6px 0; color:var(--primary-color); } .gkjpcv-f19-d-gm290-links span{ color:var(--text-muted-color); margin-right:6px; } .gkjpcv-f19-d-gm290-desc{ color:var(--text-muted-color); line-height:1.6; margin:7px 0; } .gkjpcv-f19-d-gm290-email{ color:var(--text-color); margin:8px 0; } .gkjpcv-f19-d-gm290-cr{ color:var(--text-muted-color); font-size:12px; opacity:0.85; margin-top:10px; } .gkjpcv-f19-d-gm290-card{ padding:10px 13px; border:1px solid var(--border-color); border-radius:8px; background:var(--bg-color); margin-bottom:11px; } .gkjpcv-f19-d-gm290-addr{font-style:normal;display:block;margin-bottom:12px;} .gkjpcv-f19-d-gm290-brand{font-weight:800;}/* ================= Layout B ================= */ .gkjpcv-dm-root.gkjpcv-layout-B{ margin:20px 0; display:flex; flex-direction:column; gap:16px; } /* 顶部左右 */ .gkjpcv-layout-B .gkjpcv-dm-row-top{ display:flex; gap:16px; align-items:flex-start; } /* 左:封面 */ .gkjpcv-layout-B .gkjpcv-dm-col-cover{ width:33%; max-width:280px; } /* 右:信息区 */ .gkjpcv-layout-B .gkjpcv-dm-col-info{ flex:1; display:flex; flex-direction:column; gap:10px; } /* 底部 desc */ .gkjpcv-layout-B .gkjpcv-dm-row-bottom{ width:100%; } /* ================= H5 优化 ================= */ @media (max-width:767px){ .gkjpcv-layout-B .gkjpcv-dm-row-top{ gap:12px; } .gkjpcv-layout-B .gkjpcv-dm-col-cover{ width:40%; max-width:none; } .gkjpcv-layout-B .gkjpcv-dm-col-info{ gap:8px; } } /* ================= Breadcrumb Layout A ================= */ .gkjpcv-bc-a{ margin:10px 0; font-size:13px; line-height:1.6; color:var(--text-muted-color); /* 关键:横向导航 */ display:flex; align-items:center; flex-wrap:wrap; gap:6px; } /* 所有直接子容器都横向 */ .gkjpcv-bc-a > *{ display:flex; align-items:center; flex-wrap:wrap; gap:6px; } /* 重置 ol / ul */ .gkjpcv-bc-a ol, .gkjpcv-bc-a ul{ display:flex; align-items:center; flex-wrap:wrap; gap:6px; list-style:none; padding:0; margin:0; } /* li 横向 */ .gkjpcv-bc-a li{ display:flex; align-items:center; gap:6px; } /* 分隔符(li::after 方案) */ .gkjpcv-bc-a li::after{ content:"/"; margin-left:6px; color:var(--text-muted-color); } .gkjpcv-bc-a li:last-child::after{ content:""; } /* 链接样式 */ .gkjpcv-bc-a a{ color:var(--text-muted-color); text-decoration:none; white-space:nowrap; } /* 当前节点 */ .gkjpcv-bc-a strong, .gkjpcv-bc-a em, .gkjpcv-bc-a span{ color:var(--text-color); font-style:normal; white-space:nowrap; } /* inline variant(你原来的,保留) */ .gkjpcv-bc-inline{ display:flex; gap:6px; } /* 紧凑 / SEO */ .gkjpcv-bc-a.compact{ font-size:12px; } .gkjpcv-bc-a.seo{ font-weight:500; } .gkjpcv-pl-a{ margin:24px 0; } .gkjpcv-pl-a .gkjpcv-pl-tabs{ display:flex; gap:12px; margin-bottom:12px; } .gkjpcv-pl-a .gkjpcv-pl-tab{ padding:4px 10px; border:1px solid var(--border-color); cursor:pointer; } .gkjpcv-pl-a .gkjpcv-pl-list{ display:grid; grid-template-columns:repeat(auto-fill,minmax(70px,1fr)); gap:8px; } /* ================= SeoWords Layout B ================= */ .gkjpcv-sw-b{ margin:16px 0; padding:12px; background:var(--bg-soft-color); border-radius:8px; font-size:13px; line-height:1.7; } .gkjpcv-sw-b a{ color:var(--text-color); text-decoration:none; } /* card */ .gkjpcv-sw-card{ list-style:none; display:flex; flex-wrap:wrap; gap:8px; padding:0; margin:0; } .gkjpcv-sw-card li{ padding:6px 10px; background:var(--bg-color); border-radius:6px; } /* cloud */ .gkjpcv-sw-cloud .tag{ display:inline-block; padding:4px 10px; margin:4px; background:var(--bg-color); border-radius:999px; font-size:12px; } /* grid */ .gkjpcv-sw-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(120px,1fr)); gap:10px; } /* badge */ .gkjpcv-sw-badge .badge{ display:inline-block; padding:4px 8px; margin:3px; background:var(--bg-color); border-radius:4px; } /* compact / seo */ .gkjpcv-sw-b.compact{ padding:10px; font-size:12px; } .gkjpcv-sw-b.seo{ font-weight:500; } /* detail_03.css */ .gkjpcv-d3-page { padding: 12px; } /* 顶部区域 */ .gkjpcv-d3-top { display: flex; gap: 14px; } @media(max-width:768px){ .gkjpcv-d3-top { flex-direction: column; } } .gkjpcv-d3-pic { width: 150px; aspect-ratio: 2/3; border-radius: 12px; object-fit: cover; } .gkjpcv-d3-meta h1 { font-size: 22px; color: var(--primary-color); margin-bottom: 6px; } .gkjpcv-d3-meta p { font-size: 13px; margin-bottom: 4px; } /* 线路 chips */ .gkjpcv-d3-linesel { margin-top: 16px; display: flex; flex-wrap: wrap; gap: 8px; } .gkjpcv-d3-chip { font-size: 12px; padding: 4px 10px; border-radius: 999px; background: #f3f3f3; } .gkjpcv-d3-chip.active { background: var(--primary-color); color: #fff; } /* 集数块 */ .gkjpcv-d3-epwrap { margin-top: 10px; } .gkjpcv-d3-epbox { display: none; flex-wrap: wrap; gap: 8px; } .gkjpcv-d3-epbox.active { display: flex; } .gkjpcv-d3-epitem { padding: 6px 12px; font-size: 12px; border-radius: 8px; background: #fafafa; border: 1px solid rgba(0,0,0,.05); } .gkjpcv-d3-epitem.active { background: var(--primary-color); color: #fff; } /* 简介 */ .gkjpcv-d3-desc h2 { margin-top: 18px; font-size: 16px; color: var(--primary-color); } .gkjpcv-d3-desc p { margin-top: 6px; font-size: 14px; line-height: 1.7; } /* 同主演推荐 */ .gkjpcv-d3-rel h3 { margin-top: 18px; font-size: 16px; color: var(--primary-color); } .gkjpcv-d3-grid { margin-top: 8px; display: grid; gap: 12px; grid-template-columns: repeat(2,1fr); } @media(min-width:768px){ .gkjpcv-d3-grid { grid-template-columns: repeat(3,1fr); } } .gkjpcv-d3-card img { width: 100%; aspect-ratio: 2/3; border-radius: 10px; object-fit: cover; } .gkjpcv-d3-card p { font-size: 12px; margin-top: 4px; } .gkjpcv-dm-root{ margin:20px 0; display:grid; grid-template-columns: 110px 1fr; gap:14px; align-items:start; } /* 所有模块默认在右侧 */ .gkjpcv-dm-title, .gkjpcv-dm-title-box, .gkjpcv-dm-title-wrap, .gkjpcv-dm-meta, .gkjpcv-dm-desc, .gkjpcv-dm-action{ grid-column:2; } /* 封面永远左侧 */ .gkjpcv-dm-cover{ grid-column:1; grid-row:1 / span 8; border-radius:10px; overflow:hidden; } .gkjpcv-dm-cover-img, .gkjpcv-dm-cover-bg{ width:100%; aspect-ratio:2 / 3; object-fit:cover; } /* ===================== Detail Title Base ===================== */ .gkjpcv-dm-title { font-size: 22px; font-weight: 700; line-height: 1.3; color: var(--text-color); } .gkjpcv-dm-title-wrap { margin-bottom: 12px; } .gkjpcv-dm-title-box { padding: 6px 0; } .gkjpcv-dm-sub { font-size: 13px; color: var(--text-muted-color); } .gkjpcv-dm-tag { margin-left: 6px; font-size: 12px; color: var(--accent-color); } .gkjpcv-dm-score { margin-left: 8px; font-size: 13px; color: var(--primary-color); } .gkjpcv-dm-hidden { display: none; } /* ===================== Variant Differences ===================== */ .gkjpcv-dm-title.v1 small { font-size: 13px; margin-left: 6px; } .gkjpcv-dm-title.v5 sup { font-size: 12px; color: var(--accent-color); } .gkjpcv-dm-title-wrap.v3 { border-bottom: 1px solid var(--border-color); padding-bottom: 6px; } .gkjpcv-dm-title-wrap.v6 { background: var(--bg-soft-color); padding: 8px; } .gkjpcv-dm-title-wrap.v7 { border-left: 4px solid var(--primary-color); padding-left: 8px; } .gkjpcv-dm-title-wrap.v8 { text-align: center; } .gkjpcv-dm-title.v9 .gkjpcv-dm-tag { background: var(--bg-soft-color); padding: 2px 6px; border-radius: 4px; } .gkjpcv-dm-title-box.v12 { background: var(--bg-soft-color); } .gkjpcv-dm-title.v13 .gkjpcv-dm-score { font-weight: bold; } .gkjpcv-dm-title-wrap.v14 .gkjpcv-dm-icon { display: inline-block; width: 6px; height: 6px; background: var(--accent-color); border-radius: 50%; margin-left: 6px; } .gkjpcv-dm-title.v15 { letter-spacing: 0.5px; } .gkjpcv-dm-title-wrap.v19 { padding: 10px 0; } .gkjpcv-dm-title, .gkjpcv-dm-title-wrap { margin-bottom: 8px; } /* ===================== Cover Base ===================== */ .gkjpcv-dm-cover { position: relative; width: 100%; overflow: hidden; } .gkjpcv-dm-cover-img { display: block; width: 100%; height: auto; } .gkjpcv-dm-cover-bg { width: 100%; aspect-ratio: 2 / 3; background-size: cover; background-position: center; } /* ===================== Overlays ===================== */ .gkjpcv-dm-cover-badge, .gkjpcv-dm-cover-score, .gkjpcv-dm-cover-tag, .gkjpcv-dm-cover-year, .gkjpcv-dm-cover-free, .gkjpcv-dm-cover-top { position: absolute; top: 8px; left: 8px; padding: 2px 6px; font-size: 12px; background: rgba(0,0,0,.6); color: #fff; border-radius: 3px; } .gkjpcv-dm-cover-score { top: auto; bottom: 8px; left: 8px; } .gkjpcv-dm-cover-remark { position: absolute; bottom: 0; left: 0; width: 100%; font-size: 12px; padding: 4px 6px; background: rgba(0,0,0,.5); color: #fff; } .gkjpcv-dm-cover-play { position: absolute; inset: 0; background: rgba(0,0,0,.35); } .gkjpcv-dm-cover-play::after { content: "▶"; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 32px; color: #fff; } /* ===================== Variant Differences ===================== */ .gkjpcv-dm-cover.v3, .gkjpcv-dm-cover.v6, .gkjpcv-dm-cover.v10, .gkjpcv-dm-cover.v11, .gkjpcv-dm-cover.v14 { aspect-ratio: 2 / 3; } .gkjpcv-dm-cover.v8 { text-align: center; } .gkjpcv-dm-cover.v16 .gkjpcv-dm-cover-mask { position: absolute; inset: 0; background: linear-gradient( to bottom, rgba(0,0,0,0), rgba(0,0,0,.6) ); } .gkjpcv-dm-cover.v18 { aspect-ratio: 2 / 3; background-size: cover; background-position: center; } /* ===================== Meta Base ===================== */ .gkjpcv-dm-meta { font-size: 13px; color: var(--text-muted-color); line-height: 1.6; margin-bottom: 10px; } .gkjpcv-dm-meta-label { font-weight: 600; margin-right: 4px; } .gkjpcv-dm-meta-sep { margin: 0 6px; } .gkjpcv-dm-meta-hidden { display: none; } /* ===================== Structure Helpers ===================== */ .gkjpcv-dm-meta.v0 li, .gkjpcv-dm-meta.v1 li, .gkjpcv-dm-meta.v2 li { list-style: none; } .gkjpcv-dm-meta.v3 span, .gkjpcv-dm-meta.v7 span, .gkjpcv-dm-meta.v8 span, .gkjpcv-dm-meta.v9 span, .gkjpcv-dm-meta.v13 span, .gkjpcv-dm-meta.v14 span { margin-right: 10px; } .gkjpcv-dm-meta.v5 dt, .gkjpcv-dm-meta.v6 dt { font-weight: 600; } .gkjpcv-dm-meta.v5 dd, .gkjpcv-dm-meta.v6 dd { margin: 0 0 4px 0; } .gkjpcv-dm-meta.v10 { width: 100%; border-collapse: collapse; } .gkjpcv-dm-meta.v10 td { padding: 2px 6px; border-bottom: 1px solid var(--border-color); } .gkjpcv-dm-meta.v12 strong { margin-right: 6px; } .gkjpcv-dm-meta.v15 { letter-spacing: .5px; } /* ===================== Variant Differences ===================== */ .gkjpcv-dm-meta.v3 { display: flex; flex-wrap: wrap; } .gkjpcv-dm-meta.v4 { font-style: italic; } .gkjpcv-dm-meta.v11 { opacity: .9; } .gkjpcv-dm-meta.v16 { color: var(--text-color); } .gkjpcv-dm-meta.v19 p { margin: 0; } .gkjpcv-dm-meta-chip { display: inline-block; padding: 1px 6px; border: 1px solid var(--border-color); border-radius: 999px; margin-right: 6px; margin-bottom: 4px; color: var(--text-muted-color); font-size: 12px; } .gkjpcv-dm-meta { margin-bottom: 6px; } /* ===================== Desc Base ===================== */ .gkjpcv-dm-desc { font-size: 14px; line-height: 1.7; color: var(--text-color); margin-bottom: 12px; } .gkjpcv-dm-desc-more { margin-left: 6px; color: var(--accent-color); } .gkjpcv-dm-desc-note { font-size: 12px; color: var(--text-muted-color); } .gkjpcv-dm-desc-hidden { display: none; } /* ===================== Variant Helpers ===================== */ .gkjpcv-dm-desc.v1, .gkjpcv-dm-desc.v2, .gkjpcv-dm-desc.v3, .gkjpcv-dm-desc.v7, .gkjpcv-dm-desc.v12, .gkjpcv-dm-desc.v17 { padding: 6px 0; } .gkjpcv-dm-desc.v5 summary { cursor: pointer; font-weight: 600; } .gkjpcv-dm-desc.v8 blockquote { margin: 0; padding-left: 10px; border-left: 3px solid var(--border-color); } .gkjpcv-dm-desc.v11 { opacity: .95; } .gkjpcv-dm-desc.v14 { background: var(--bg-soft-color); padding: 8px; } .gkjpcv-dm-desc.v19 header { font-weight: 600; margin-bottom: 4px; } /* ===================== Action Base ===================== */ .gkjpcv-dm-action { margin: 14px 0; } .gkjpcv-dm-action a, .gkjpcv-dm-action button { display: inline-block; padding: 8px 14px; background: var(--primary-color); color: #fff; text-decoration: none; border-radius: 4px; font-size: 14px; } .gkjpcv-dm-action span, .gkjpcv-dm-action small, .gkjpcv-dm-action em { margin-left: 8px; font-size: 12px; color: var(--text-muted-color); } .gkjpcv-dm-action button { border: none; cursor: pointer; } /* ===================== Structure Differences ===================== */ .gkjpcv-dm-action.v2 a, .gkjpcv-dm-action.v12 a { margin-right: 10px; } .gkjpcv-dm-action.v3 li { list-style: none; margin-bottom: 6px; } .gkjpcv-dm-action.v3 a { background: var(--accent-color); } .gkjpcv-dm-action.v7 small, .gkjpcv-dm-action.v17 em { display: block; margin-top: 4px; } .gkjpcv-dm-action.v13 a { font-size: 20px; padding: 6px 10px; } .gkjpcv-dm-action.v15, .gkjpcv-dm-action.v19 { text-align: center; } .gkjpcv-dm-action.v18 { border-top: 1px dashed var(--border-color); padding-top: 10px; } .gkjpcv-dm-action { margin-top: 12px; } /* ================= Player · DPlayer Base ================= */ .gkjpcv-player.gkjpcv-player-dp{ margin:14px 0; padding:10px; border:1px solid var(--border-color); background:var(--bg-color); border-radius:10px; } .gkjpcv-player-head{ margin-bottom:10px; } .gkjpcv-player-title{ margin:0; font-size:16px; line-height:1.35; color:var(--text-color); } .gkjpcv-player-tip, .gkjpcv-player-note, .gkjpcv-player-sidehint{ color:var(--text-muted-color); font-size:12px; line-height:1.6; } .gkjpcv-player-foot{ margin-top:10px; } .gkjpcv-player-info{ margin-bottom:8px; } .gkjpcv-player-badge{ display:inline-block; padding:3px 8px; border-radius:999px; background:var(--bg-soft-color); color:var(--text-color); font-size:12px; } .gkjpcv-player-status{ margin-bottom:8px; padding:8px 10px; border-radius:8px; background:var(--bg-soft-color); color:var(--text-muted-color); font-size:12px; } /* ====== Core box (DPlayer mount point) ====== */ .gkjpcv-player-core{ width:100%; overflow:hidden; border-radius:10px; background:var(--bg-soft-color); border:1px solid var(--border-color); position:relative; } /* 默认比例:16:9 */ .gkjpcv-player[data-ratio="16x9"] .gkjpcv-player-core{ aspect-ratio:16 / 9; } .gkjpcv-player[data-ratio="4x3"] .gkjpcv-player-core{ aspect-ratio:4 / 3; } .gkjpcv-player[data-ratio="21x9"] .gkjpcv-player-core{ aspect-ratio:21 / 9; } .gkjpcv-player[data-ratio="auto"] .gkjpcv-player-core{ aspect-ratio:auto; min-height:220px; } /* ====== Variant-specific structural helpers (still generic) ====== */ .gkjpcv-player-wrap, .gkjpcv-player-wrapA, .gkjpcv-player-wrapB{ width:100%; } .gkjpcv-player-figure{ margin:0; } .gkjpcv-player-caption{ margin-top:8px; font-size:13px; color:var(--text-muted-color); } .gkjpcv-player-aside{ margin-top:10px; padding-top:8px; border-top:1px dashed var(--border-color); } .gkjpcv-player-dialog{ width:100%; padding:0; border:0; background:transparent; } .gkjpcv-player-dialog::backdrop{ background:transparent; } .gkjpcv-player-footerOnly{ padding:0; border:0; background:transparent; } /* ====== Layout for variant 10 (side area) ====== */ .gkjpcv-player-layout{ display:flex; flex-direction:column; gap:10px; } .gkjpcv-player-side{ padding:10px; border-radius:10px; background:var(--bg-soft-color); border:1px solid var(--border-color); } @media (min-width: 1024px){ .gkjpcv-player-layout{ flex-direction:row; align-items:flex-start; } .gkjpcv-player-layout .gkjpcv-player-core{ flex:1; } .gkjpcv-player-side{ width:260px; } } /* ====== Compact behavior ====== */ .gkjpcv-player.compact{ padding:8px; border-radius:8px; } .gkjpcv-list{ display: grid; gap: var(--list-gap, 16px); align-items: stretch; } ol.gkjpcv-list{ list-style: none; padding-left: 0; } /* LG */ @media (min-width:1200px){ .gkjpcv-list{ grid-template-columns:repeat(var(--cols-lg),1fr); } } /* MD */ @media (min-width:768px) and (max-width:1199px){ .gkjpcv-list{ grid-template-columns:repeat(var(--cols-md),1fr); } } /* SM */ @media (min-width:576px) and (max-width:767px){ .gkjpcv-list{ grid-template-columns:repeat(var(--cols-sm),1fr); } } /* H5 */ @media (max-width:575px){ .gkjpcv-list{ grid-template-columns:repeat(var(--cols-h5),1fr); } } @media (min-width:1200px){ .gkjpcv-list[data-max-lg="18"] > .gkjpcv-item:nth-child(n+19), .gkjpcv-list[data-max-lg="24"] > .gkjpcv-item:nth-child(n+25), .gkjpcv-list[data-max-lg="36"] > .gkjpcv-item:nth-child(n+37){ display:none; } } @media (min-width:768px) and (max-width:1199px){ .gkjpcv-list[data-max-md="10"] > .gkjpcv-item:nth-child(n+11), .gkjpcv-list[data-max-md="15"] > .gkjpcv-item:nth-child(n+16), .gkjpcv-list[data-max-md="20"] > .gkjpcv-item:nth-child(n+21){ display:none; } } @media (min-width:576px) and (max-width:767px){ .gkjpcv-list[data-max-sm="6"] > .gkjpcv-item:nth-child(n+7), .gkjpcv-list[data-max-sm="9"] > .gkjpcv-item:nth-child(n+10), .gkjpcv-list[data-max-sm="12"] > .gkjpcv-item:nth-child(n+13){ display:none; } } @media (max-width:575px){ .gkjpcv-list[data-max-h5="4"] > .gkjpcv-item:nth-child(n+5), .gkjpcv-list[data-max-h5="6"] > .gkjpcv-item:nth-child(n+7), .gkjpcv-list[data-max-h5="8"] > .gkjpcv-item:nth-child(n+9), .gkjpcv-list[data-max-h5="10"] > .gkjpcv-item:nth-child(n+11){ display:none; } } .gkjpcv-titleB{ text-align:center; margin:24px 0 16px; } .gkjpcv-titleB h2{ font-size:20px; font-weight:700; } .gkjpcv-titleB span{ display:block; margin-top:6px; font-size:13px; color:var(--text-muted-color); } .gkjpcv-titleC{ margin:16px 0 10px; } .gkjpcv-titleC h2{ display:inline-block; padding:6px 12px; font-size:16px; border-radius:6px; background:var(--primary-color); color:#fff; } .gkjpcv-titleD{ display:flex; align-items:center; gap:8px; margin:18px 0 12px; } .gkjpcv-titleD-icon{ width:6px; height:18px; border-radius:3px; background:var(--primary-color); } .gkjpcv-titleD h2{ font-size:17px; font-weight:700; } .gkjpcv-titleE{ display:flex; align-items:baseline; gap:6px; margin:20px 0 14px; } .gkjpcv-titleE-rank{ font-size:14px; font-weight:700; color:var(--accent-color); } .gkjpcv-titleE h2{ font-size:18px; font-weight:700; } /* shell_A_flow.css | 基础流式 Flow Shell */ .gkjpcv-shellA { width: 100%; } /* 列表容器 */ /* .gkjpcv-shellA-list { display: flex; flex-direction: column; gap: 10px; } */ /* * Shell-A 只控制: * - Item 之间的间距 * - 整体流式节奏 * 不控制: * - Item 内部结构 * - Item 字段样式 */ /* 可选:高密度模式(给 Behavior 用) */ .gkjpcv-shellA.compact .gkjpcv-shellA-list { gap: 6px; } /* 可选:分组弱分隔(Behavior-E 用) */ .gkjpcv-shellA.grouped .gkjpcv-shellA-list>* { padding-bottom: 6px; border-bottom: 1px dashed var(--border-color); } .gkjpcv-shellA.grouped .gkjpcv-shellA-list>*:last-child { border-bottom: none; } /* shell_A - Flow */ /* .gkjpcv-shellA-list{ display:grid; grid-template-columns: repeat(var(--cols-h5), 1fr); gap:14px; } */ /* H5 多列 */ /* .h5-col-2 .gkjpcv-shellA-list{ grid-template-columns:repeat(2,1fr); } */ /* .h5-col-3 .gkjpcv-shellA-list{ grid-template-columns:repeat(3,1fr); } */ /* PC - sm */ /* @media (min-width: 768px){ .gkjpcv-shellA-list{ grid-template-columns: repeat(var(--cols-pc-sm), 1fr); } } */ /* PC - md */ /* @media (min-width: 1024px){ .gkjpcv-shellA-list{ grid-template-columns: repeat(var(--cols-pc-md), 1fr); gap:18px 20px; } } */ /* PC - lg */ /* @media (min-width: 1440px){ .gkjpcv-shellA-list{ grid-template-columns: repeat(var(--cols-pc-lg), 1fr); gap:20px 24px; } } */ /* shell_B_card.css | 卡片栅格 Card Grid Shell */ .gkjpcv-shellB{ width:100%; } /* 栅格容器 */ /* .gkjpcv-shellB-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); gap:14px; } */ /* * Shell-B 只控制: * - grid 列数策略 * - 卡片之间的间距 * - 响应式节奏 * * 不控制: * - Item 内部宽高 * - Item 字体 / 图片 / meta */ /* 中密度(默认) */ /* 高密度模式(Behavior-C1) */ /* .gkjpcv-shellB.compact .gkjpcv-shellB-grid{ gap:10px; grid-template-columns:repeat(auto-fill,minmax(120px,1fr)); } */ /* 低密度模式(Behavior-C3) */ /* .gkjpcv-shellB.loose .gkjpcv-shellB-grid{ gap:18px; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); } */ /* 移动端优化 */ /* @media (max-width: 768px){ .gkjpcv-shellB-grid{ grid-template-columns:repeat(2,1fr); gap:12px; } .gkjpcv-shellB.compact .gkjpcv-shellB-grid{ gap:8px; } } */ /* shell_C_ranking.css | 榜单序列 Ranking Shell */ .gkjpcv-shellC{ width:100%; } /* 榜单列表 */ .gkjpcv-shellC-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; } /* * Shell-C 只负责: * - 榜单的整体序列结构 * - item 之间的分隔节奏 * - Top 区域的整体区分 * * 不负责: * - Item 内部的序号样式 * - Item 的字段显示 */ /* 每一行榜单 */ .gkjpcv-shellC-item{ padding:2px 0; } /* 分隔线(默认) */ .gkjpcv-shellC-item + .gkjpcv-shellC-item{ border-top:1px solid var(--border-color); } /* Top 区域强化(Behavior-B 用) */ .gkjpcv-shellC.top .gkjpcv-shellC-item:nth-child(-n+3){ background:var(--bg-soft-color); } /* 高密度榜单(Behavior-C1) */ .gkjpcv-shellC.compact .gkjpcv-shellC-item{ padding:0; } /* 松散榜单(Behavior-C3) */ .gkjpcv-shellC.loose .gkjpcv-shellC-item{ padding:6px 0; } /* shell_D_grouped.css | 分组区块 Grouped Shell */ .gkjpcv-shellD{ width:100%; display:flex; flex-direction:column; gap:20px; } /* 单个分组 */ .gkjpcv-shellD-group{ display:flex; flex-direction:column; gap:10px; padding:12px; background:var(--bg-soft-color); border-radius:12px; } /* 分组头 */ .gkjpcv-shellD-head{ display:flex; align-items:center; justify-content:space-between; } /* 标题 */ .gkjpcv-shellD-title{ margin:0; font-size:16px; font-weight:700; color:var(--text-color); } /* 分组内容 */ .gkjpcv-shellD-body{ display:flex; flex-direction:column; gap:10px; } /* * Shell-D 只控制: * - 分组块结构 * - 分组之间的层级关系 * - 分组内部的 Item 间距 * * 不控制: * - Item 布局 * - Item 结构 */ /* 高密度分组(Behavior-C1) */ .gkjpcv-shellD.compact .gkjpcv-shellD-group{ padding:8px; gap:6px; } /* 松散分组(Behavior-C3) */ .gkjpcv-shellD.loose .gkjpcv-shellD-group{ padding:16px; gap:14px; } /* 可选:分组强调(Behavior-B) */ .gkjpcv-shellD.emphasis .gkjpcv-shellD-group{ box-shadow:0 6px 18px var(--shadow-color); } /* =================================================== * Item Mother B - Media Row * =================================================== */ /* ========== media:横向信息流 ========== */ .item-media{ /* display:flex; gap:12px; align-items:center; */ } .item-media img{ width:120px; aspect-ratio:16/9; object-fit:cover; } .gkjpcv-item.media{ /* display:flex; gap:12px; align-items:flex-start; */ } /* 封面偏宽 */ .gkjpcv-item.media .gkjpcv-item-cover , .gkjpcv-item.media img{ flex:0 0 38%; aspect-ratio:16 / 9; border-radius:10px; overflow:hidden; background:var(--bg-soft-color); } /* 信息区居中 */ .gkjpcv-item.media .gkjpcv-item-info{ padding:6px 4px; display:flex; flex-direction:column; justify-content:center; } .gkjpcv-item.media .gkjpcv-item-cover img{ width:100%; height:100%; object-fit:cover; display:block; } /* 右侧内容 */ .gkjpcv-item.media .gkjpcv-item-body{ flex:1; display:flex; flex-direction:column; gap:4px; } /* 标题 */ .gkjpcv-item.media .gkjpcv-item-title{ font-size:14px; font-weight:700; line-height:1.3; color:var(--text-color); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; } /* 描述 */ .gkjpcv-item.media .gkjpcv-item-desc{ font-size:12px; line-height:1.4; color:var(--text-muted-color); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; } /* =================================================== * Item Mother A - Poster Card * =================================================== */ .gkjpcv-item.poster{ display:flex; flex-direction:column; gap:6px; } /* 封面容器 */ .gkjpcv-item.poster .gkjpcv-item-cover{ position:relative; width:100%; aspect-ratio:2/3; overflow:hidden; border-radius:12px; background:var(--bg-soft-color); } /* 封面图 */ .gkjpcv-item.poster .gkjpcv-item-cover img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; } /* 标题 */ .gkjpcv-item.poster .gkjpcv-item-title{ font-size:14px; line-height:1.3; font-weight:700; color:var(--text-color); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; } /* 元信息 */ .gkjpcv-item.poster .gkjpcv-item-meta{ font-size:12px; color:var(--text-muted-color); } /* 强调态(评分 / 热度) */ .gkjpcv-item.poster.emphasis{ position:relative; } .gkjpcv-item.poster.emphasis::after{ content:''; position:absolute; inset:0; border-radius:12px; box-shadow:0 8px 18px var(--shadow-color); pointer-events:none; } /* =================================================== * Item Mother C - Rank / Text * =================================================== */ /* ========== rank:排行榜 ========== */ .gkjpcv-item.rank::before{ content:attr(data-rank); font-size:18px; font-weight:700; color:var(--primary-color); width:28px; text-align:center; } .gkjpcv-item.rank{ display:flex; align-items:center; gap:10px; padding:6px 0; } /* 序号 */ .gkjpcv-item.rank .rank-no{ flex:0 0 24px; text-align:center; font-weight:900; font-size:14px; color:var(--text-muted-color); } /* Top 强化 */ .gkjpcv-item.rank.top .rank-no{ color:var(--primary-color); font-size:16px; } /* 标题 */ .gkjpcv-item.rank .rank-title{ flex:1; font-size:14px; line-height:1.3; font-weight:600; color:var(--text-color); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } /* ========== text:极简文本 ========== */ .gkjpcv-item.text .gkjpcv-item-cover{ display:none; } .gkjpcv-item.text .gkjpcv-item-info{ padding:10px 0; } .gkjpcv-item.text{ border-bottom:1px solid var(--border-color); }/* ========== item 基础结构 ========== */ .gkjpcv-item{ width:100%; } .gkjpcv-item-link{ display:block; color:inherit; text-decoration:none; } .gkjpcv-item-cover{ position:relative; background:var(--bg-soft-color); overflow:hidden; } .gkjpcv-item-cover img{ width:100%; height:100%; object-fit:cover; display:block; } .gkjpcv-item-score{ position:absolute; right:6px; top:6px; padding:2px 6px; font-size:12px; background:rgba(0,0,0,.65); color:#fff; border-radius:4px; } .gkjpcv-item-info{ padding:6px 4px; } .gkjpcv-item-title{ font-size:14px; line-height:1.4; font-weight:600; } .gkjpcv-item-meta{ font-size:12px; color:var(--text-muted-color); } .gkjpcv-item-extra{ font-size:12px; color:var(--text-muted-color); } /* ====================================================== * Title Clamp Packs (opt-in by .gkjpcv-tclamp) * ====================================================== */ /* 统一命中 title(覆盖 poster/media 里已有的 clamp) */ .gkjpcv-tclamp .gkjpcv-item-title, .gkjpcv-tclamp .gkjpcv-rank-title, .gkjpcv-tclamp .rank-title{ line-height: var(--tc-lh, 1.35); margin: var(--tc-m, 0); font-weight: var(--tc-fw, inherit); /* 统一改为可换行,避免 item_04 那种 nowrap 造成高度不可控:contentReference[oaicite:4]{index=4} */ white-space: normal; text-overflow: clip; overflow: hidden; height: var(--tc-h, 2.7em); max-height: var(--tc-h, 2.7em); /* 默认走多行 clamp(ln1 会被下面覆盖) */ display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: var(--tc-lines, 2); word-break: break-word; } /* ln1:强制单行省略号(比 -webkit-line-clamp:1 更“可控”) */ .gkjpcv-tclamp.gkjpcv-tclamp-l1 .gkjpcv-item-title, .gkjpcv-tclamp.gkjpcv-tclamp-l1 .gkjpcv-rank-title, .gkjpcv-tclamp.gkjpcv-tclamp-l1 .rank-title{ display: block; white-space: nowrap; text-overflow: ellipsis; -webkit-line-clamp: unset; max-height: var(--tc-h, 1.35em); height: var(--tc-h, 1.35em); } /* ========================= * Pack 0:紧凑型(偏短行高) * ========================= */ .gkjpcv-tclamp.gkjpcv-tclamp-p0{ --tc-lh:1.25; --tc-fw:600; --tc-m:0; } .gkjpcv-tclamp.gkjpcv-tclamp-p0.gkjpcv-tclamp-l1{ --tc-lines:1; --tc-h:1.25em; } .gkjpcv-tclamp.gkjpcv-tclamp-p0.gkjpcv-tclamp-l2{ --tc-lines:2; --tc-h:2.50em; } .gkjpcv-tclamp.gkjpcv-tclamp-p0.gkjpcv-tclamp-l3{ --tc-lines:3; --tc-h:3.75em; } /* ========================= * Pack 1:舒展型(更易读) * ========================= */ .gkjpcv-tclamp.gkjpcv-tclamp-p1{ --tc-lh:1.40; --tc-fw:700; --tc-m:0 0 4px; } .gkjpcv-tclamp.gkjpcv-tclamp-p1.gkjpcv-tclamp-l1{ --tc-lines:1; --tc-h:1.40em; } .gkjpcv-tclamp.gkjpcv-tclamp-p1.gkjpcv-tclamp-l2{ --tc-lines:2; --tc-h:2.80em; } .gkjpcv-tclamp.gkjpcv-tclamp-p1.gkjpcv-tclamp-l3{ --tc-lines:3; --tc-h:4.20em; } /* ========================= * Pack 2:强调标题(行高略小 + 字重更高) * ========================= */ .gkjpcv-tclamp.gkjpcv-tclamp-p2{ --tc-lh:1.30; --tc-fw:800; --tc-m:0 0 2px; } .gkjpcv-tclamp.gkjpcv-tclamp-p2.gkjpcv-tclamp-l1{ --tc-lines:1; --tc-h:1.30em; } .gkjpcv-tclamp.gkjpcv-tclamp-p2.gkjpcv-tclamp-l2{ --tc-lines:2; --tc-h:2.60em; } .gkjpcv-tclamp.gkjpcv-tclamp-p2.gkjpcv-tclamp-l3{ --tc-lines:3; --tc-h:3.90em; } /* ========================= * Pack 3:网格对齐优先(高度更“硬”) * ========================= */ .gkjpcv-tclamp.gkjpcv-tclamp-p3{ --tc-lh:1.28; --tc-fw:650; --tc-m:0; } .gkjpcv-tclamp.gkjpcv-tclamp-p3.gkjpcv-tclamp-l1{ --tc-lines:1; --tc-h:1.28em; } .gkjpcv-tclamp.gkjpcv-tclamp-p3.gkjpcv-tclamp-l2{ --tc-lines:2; --tc-h:2.56em; } .gkjpcv-tclamp.gkjpcv-tclamp-p3.gkjpcv-tclamp-l3{ --tc-lines:3; --tc-h:3.84em; } /* ========================= * Pack 4:更适合英文/混排(行高更大,断词更激进) * ========================= */ .gkjpcv-tclamp.gkjpcv-tclamp-p4{ --tc-lh:1.45; --tc-fw:700; --tc-m:0; } .gkjpcv-tclamp.gkjpcv-tclamp-p4 .gkjpcv-item-title, .gkjpcv-tclamp.gkjpcv-tclamp-p4 .gkjpcv-rank-title, .gkjpcv-tclamp.gkjpcv-tclamp-p4 .rank-title{ overflow-wrap: anywhere; } .gkjpcv-tclamp.gkjpcv-tclamp-p4.gkjpcv-tclamp-l1{ --tc-lines:1; --tc-h:1.45em; } .gkjpcv-tclamp.gkjpcv-tclamp-p4.gkjpcv-tclamp-l2{ --tc-lines:2; --tc-h:2.90em; } .gkjpcv-tclamp.gkjpcv-tclamp-p4.gkjpcv-tclamp-l3{ --tc-lines:3; --tc-h:4.35em; } /* ========================= * Pack 5:极简文本/榜单更合适(轻字重 + 更小 margin) * ========================= */ .gkjpcv-tclamp.gkjpcv-tclamp-p5{ --tc-lh:1.32; --tc-fw:600; --tc-m:0; } .gkjpcv-tclamp.gkjpcv-tclamp-p5.gkjpcv-tclamp-l1{ --tc-lines:1; --tc-h:1.32em; } .gkjpcv-tclamp.gkjpcv-tclamp-p5.gkjpcv-tclamp-l2{ --tc-lines:2; --tc-h:2.64em; } .gkjpcv-tclamp.gkjpcv-tclamp-p5.gkjpcv-tclamp-l3{ --tc-lines:3; --tc-h:3.96em; } /* ========== item_01 基础 ========== */ .gkjpcv-item{ background:var(--bg-soft-color); border-radius:12px; overflow:hidden; } .gkjpcv-item-link{ display:block; color:inherit; } .gkjpcv-item-cover{ position:relative; overflow:hidden; background:#000; } .gkjpcv-item-cover img{ width:100%; height:100%; object-fit:cover; object-position:center center; display:block; } .gkjpcv-item-info{ padding:10px 12px; } .gkjpcv-item-title{ font-size:14px; font-weight:600; line-height:1.35; } .gkjpcv-item-meta{ font-size:12px; color:var(--text-muted-color); margin-top:4px; } .gkjpcv-item-desc{ font-size:12px; color:var(--text-muted-color); margin-top:6px; } .gkjpcv-item-score{ position:absolute; top:6px; right:6px; font-size:12px; padding:2px 6px; border-radius:6px; background:rgba(0,0,0,.65); color:#fff; } /* item_02:封面横向信息流 * 继承:_item_media.css * 无额外样式 */ /* ========== item_02 个性微调(可选) */ .gkjpcv-item.item02 .gkjpcv-item-title{ font-size:15px; } /* item_media.css | item_02 专用(在通用 item 基础上补齐 media 布局) */ .gkjpcv-item.item02{ width:100%; } /* 横向信息流:默认左右布局(由 shell 控制列数) */ .gkjpcv-item.item02 .gkjpcv-item-link{ display:flex; gap:12px; align-items:flex-start; text-decoration:none; } /* 封面:横向信息流用 16:9 更稳(宽>高) */ .gkjpcv-item.item02 .gkjpcv-item-cover{ flex:0 0 42%; max-width:42%; aspect-ratio:16/9; position:relative; overflow:hidden; border-radius:12px; background:var(--bg-soft-color); } .gkjpcv-item.item02 .gkjpcv-item-cover img{ width:100%; height:100%; object-fit:cover; display:block; } /* 评分角标 */ .gkjpcv-item.item02 .gkjpcv-item-score{ position:absolute; right:8px; top:8px; padding:2px 6px; font-size:12px; border-radius:999px; background:rgba(0,0,0,.55); color:#fff; } /* 信息区 */ .gkjpcv-item.item02 .gkjpcv-item-info{ flex:1; min-width:0; } .gkjpcv-item.item02 .gkjpcv-item-title{ font-size:14px; line-height:1.25; margin:0 0 6px; color:var(--text-color); } .gkjpcv-item.item02 .gkjpcv-item-meta{ font-size:12px; color:var(--text-muted-color); margin:0 0 6px; } .gkjpcv-item.item02 .gkjpcv-item-extra{ font-size:12px; color:var(--text-muted-color); margin:0 0 4px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } /* PC:稍微压缩封面占比,提升信息量 */ @media (min-width: 1024px){ .gkjpcv-item.item02 .gkjpcv-item-cover{ flex-basis:36%; max-width:36%; border-radius:14px; } .gkjpcv-item.item02 .gkjpcv-item-title{ font-size:15px; } } /* item02-5*/ .gkjpcv-item.gkjpcv-item02 { display: block; } .gkjpcv-item.item02 .gkjpcv-item-cover{ max-width: 100%; }/* ====================================================== * item_03 | 极简文本 / 榜单型 * ====================================================== */ .gkjpcv-item{ display:block; } /* 点击区域 */ .gkjpcv-item-link{ display:flex; align-items:flex-start; gap:12px; padding:10px 6px; text-decoration:none; color:var(--text-color); } /* 序号 */ .gkjpcv-item-index{ min-width:22px; font-size:14px; font-weight:700; color:var(--text-muted-color); text-align:right; } /* 主体 */ .gkjpcv-item-main{ flex:1; min-width:0; } /* 标题 */ .gkjpcv-item-title{ font-size:14px; line-height:1.4; font-weight:500; margin:0 0 4px; color:var(--text-color); } /* 元信息 */ .gkjpcv-item-meta{ display:flex; flex-wrap:wrap; gap:8px; font-size:12px; color:var(--text-muted-color); } /* ===== 行为适配 ===== */ /* 紧凑 */ .compact .gkjpcv-item-link{ padding:6px 4px; } .compact .gkjpcv-item-title{ font-size:13px; } /* 宽松 */ .loose .gkjpcv-item-link{ padding:14px 8px; } /* Top 榜单 */ .top .gkjpcv-item-index{ color:var(--primary-color); } /* 强调 */ .emphasis .gkjpcv-item-link{ background:var(--bg-soft-color); border-radius:8px; } /* hover */ .gkjpcv-item-link:hover .gkjpcv-item-title{ color:var(--primary-color); } /* ====================================================== * item_04 | 评分 / 热度强化型 * ====================================================== */ .gkjpcv-item.poster.score{ display:block; } /* 链接 */ .gkjpcv-item-link{ display:flex; flex-direction:column; gap:6px; color:var(--text-color); text-decoration:none; } /* ===== 封面 ===== */ .gkjpcv-item-cover{ position:relative; width:100%; aspect-ratio: 3 / 4; /* 比 item_01 稍宽,更利于列表 */ overflow:hidden; border-radius:12px; background:var(--bg-soft-color); } .gkjpcv-item-cover img{ width:100%; height:100%; object-fit:cover; display:block; } /* ===== 评分角标 ===== */ .gkjpcv-item-score{ position:absolute; right:6px; top:6px; padding:2px 6px; font-size:12px; font-weight:700; color:#fff; background:var(--accent-color); border-radius:6px; line-height:1; } /* ===== 信息区 ===== */ .gkjpcv-item-info{ padding:0 2px; } /* 标题 */ .gkjpcv-item-title{ font-size:14px; font-weight:600; line-height:1.4; margin:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } /* 元信息 */ .gkjpcv-item-meta{ display:flex; gap:6px; font-size:12px; color:var(--text-muted-color); } /* ===== 行为适配 ===== */ /* 紧凑 */ .compact .gkjpcv-item-title{ font-size:13px; } /* 宽松 */ .loose .gkjpcv-item-link{ gap:10px; } /* 强调 */ .emphasis .gkjpcv-item-cover{ box-shadow:0 6px 18px var(--shadow-color); } /* hover */ .gkjpcv-item-link:hover .gkjpcv-item-title{ color:var(--primary-color); } /* ====================================================== * item_05 | Top 强化榜单型 * ====================================================== */ .gkjpcv-item.rank{ display:block; } /* 主链接 */ .gkjpcv-rank-link{ display:flex; align-items:center; gap:12px; padding:10px 8px; text-decoration:none; color:var(--text-color); } /* ===== 排名数字 ===== */ .gkjpcv-rank-no{ min-width:28px; font-size:16px; font-weight:700; text-align:center; color:var(--text-muted-color); } /* Top 1-3 强化 */ .gkjpcv-rank-no.rank-1{ color:#d32f2f; font-size:18px; } .gkjpcv-rank-no.rank-2{ color:#f57c00; } .gkjpcv-rank-no.rank-3{ color:#fbc02d; } /* 主体 */ .gkjpcv-rank-main{ flex:1; min-width:0; } /* 标题 */ .gkjpcv-rank-title{ font-size:14px; font-weight:600; margin:0 0 4px; line-height:1.4; } /* 元信息 */ .gkjpcv-rank-meta{ display:flex; gap:8px; font-size:12px; color:var(--text-muted-color); flex-wrap:wrap; } /* 评分 / 热度 */ .gkjpcv-rank-score{ font-size:13px; font-weight:600; color:var(--accent-color); } /* ===== 行为适配 ===== */ /* 紧凑 */ .compact .gkjpcv-rank-link{ padding:6px 6px; } .compact .gkjpcv-rank-title{ font-size:13px; } /* 宽松 */ .loose .gkjpcv-rank-link{ padding:14px 10px; } /* 强调模块 */ .emphasis .gkjpcv-rank-link{ background:var(--bg-soft-color); border-radius:10px; } /* hover */ .gkjpcv-rank-link:hover .gkjpcv-rank-title{ color:var(--primary-color); } /* list/behavior.css | 通用行为状态(容器级) */ /* 折叠:默认隐藏第 6 条及之后(可按模块自行调 N) */ .collapsed .gkjpcv-shellA-list > *:nth-child(n+6), .collapsed .gkjpcv-shellB-grid > *:nth-child(n+7), .collapsed .gkjpcv-shellC-list > *:nth-child(n+11){ display:none; } /* 分组grouped:如果某些 shell 未自带 grouped,可用这个兜底 */ .grouped{ border:1px solid var(--border-color); background:var(--bg-soft-color); } /* 密度 */ .compact { gap:8px; } .loose { gap:16px; } /* 强调:给容器一点“模块感” */ .emphasis{ border-radius:14px; padding: 12px; background:var(--bg-soft-color); } /* Pager base: gkjpcv replaced by CssBuilder Colors do NOT hardcode: relies on CSS vars you set from theme: --c-primary --c-accent --c-bg --c-bg-soft --c-text-primary --c-text-secondary --c-border */ .gkjpcv-pager{ --pg-gap: 8px; --pg-pad: 6px 10px; --pg-r: 12px; --pg-bd: var(--c-border, rgba(0,0,0,.12)); --pg-fg: var(--c-text-primary, #111); --pg-fg2: var(--c-text-secondary, #666); --pg-bg: var(--c-bg-soft, #f1f5f9); --pg-ac: var(--c-primary, #3b82f6); --pg-ac2: var(--c-accent, #f97316); display:flex; align-items:center; justify-content:center; gap: var(--pg-gap); margin: 18px 0; color: var(--pg-fg); flex-wrap: wrap; } .gkjpcv-pager .gkjpcv-pg{ display:flex; align-items:center; justify-content:center; gap: var(--pg-gap); padding: 0; margin: 0; list-style:none; flex-wrap: wrap; } .gkjpcv-pager .gkjpcv-pg-it{ display:inline-flex; } .gkjpcv-pager .gkjpcv-pg-a{ display:inline-flex; align-items:center; justify-content:center; padding: var(--pg-pad); border: 1px solid var(--pg-bd); background: var(--pg-bg); color: var(--pg-fg); border-radius: var(--pg-r); text-decoration:none; line-height: 1; min-width: 34px; user-select:none; transition: filter .15s ease, transform .15s ease; } .gkjpcv-pager a.gkjpcv-pg-a:hover{ filter: brightness(0.98); transform: translateY(-1px); } .gkjpcv-pager .gkjpcv-pg-it.is-current .gkjpcv-pg-a{ background: color-mix(in srgb, var(--pg-ac) 18%, var(--pg-bg)); border-color: color-mix(in srgb, var(--pg-ac) 55%, var(--pg-bd)); color: color-mix(in srgb, var(--pg-ac) 85%, var(--pg-fg)); font-weight: 600; } .gkjpcv-pager .gkjpcv-pg-it.is-disabled .gkjpcv-pg-a, .gkjpcv-pager .gkjpcv-pg-a[aria-disabled="true"]{ opacity: .45; cursor: not-allowed; pointer-events:none; } .gkjpcv-pager .gkjpcv-pg-summary{ font-size: 12px; color: var(--pg-fg2); padding: 4px 10px; border: 1px dashed color-mix(in srgb, var(--pg-bd) 80%, transparent); border-radius: 999px; } /* Tone (0-4) */ .gkjpcv-pager.tone0{ --pg-bg: var(--c-bg-soft, #f1f5f9); } .gkjpcv-pager.tone1{ --pg-bg: color-mix(in srgb, var(--c-bg, #fff) 86%, var(--pg-ac) 14%); } .gkjpcv-pager.tone2{ --pg-bg: color-mix(in srgb, var(--c-bg, #fff) 88%, var(--pg-ac2) 12%); } .gkjpcv-pager.tone3{ --pg-bg: color-mix(in srgb, var(--c-bg, #fff) 92%, var(--pg-bd) 8%); } .gkjpcv-pager.tone4{ --pg-bg: color-mix(in srgb, var(--c-bg, #fff) 82%, var(--pg-ac) 18%); } /* Variant knobs (v0..v19) */ .gkjpcv-pager.v0 { --pg-r: 12px; --pg-gap: 8px; } .gkjpcv-pager.v1 { --pg-r: 999px; --pg-gap: 8px; } .gkjpcv-pager.v2 { --pg-r: 8px; --pg-gap: 10px; --pg-pad: 7px 12px; } .gkjpcv-pager.v3 { --pg-r: 4px; --pg-gap: 10px; --pg-pad: 7px 12px; } .gkjpcv-pager.v4 { --pg-r: 16px; --pg-gap: 6px; --pg-pad: 6px 10px; } .gkjpcv-pager.v5 { --pg-r: 999px; --pg-gap: 6px; --pg-pad: 6px 12px; } .gkjpcv-pager.v6 { --pg-r: 10px; --pg-gap: 12px; --pg-pad: 8px 12px; } .gkjpcv-pager.v7 { --pg-r: 14px; --pg-gap: 6px; --pg-pad: 6px 10px; } .gkjpcv-pager.v8 { --pg-r: 6px; --pg-gap: 8px; --pg-pad: 6px 10px; } .gkjpcv-pager.v9 { --pg-r: 999px; --pg-gap: 12px; --pg-pad: 8px 14px; } .gkjpcv-pager.v10{ --pg-r: 10px; --pg-gap: 6px; --pg-pad: 5px 10px; } .gkjpcv-pager.v11{ --pg-r: 18px; --pg-gap: 6px; --pg-pad: 5px 12px; } .gkjpcv-pager.v12{ --pg-r: 4px; --pg-gap: 14px; --pg-pad: 8px 12px; } .gkjpcv-pager.v13{ --pg-r: 12px; --pg-gap: 14px; --pg-pad: 8px 12px; } .gkjpcv-pager.v14{ --pg-r: 999px;--pg-gap: 10px; --pg-pad: 7px 14px; } .gkjpcv-pager.v15{ --pg-r: 8px; --pg-gap: 6px; --pg-pad: 6px 9px; } .gkjpcv-pager.v16{ --pg-r: 16px; --pg-gap: 10px; --pg-pad: 6px 12px; } .gkjpcv-pager.v17{ --pg-r: 999px;--pg-gap: 4px; --pg-pad: 6px 12px; } .gkjpcv-pager.v18{ --pg-r: 6px; --pg-gap: 4px; --pg-pad: 6px 10px; } .gkjpcv-pager.v19{ --pg-r: 14px; --pg-gap: 12px; --pg-pad: 8px 14px; } /* Family subtle tweaks */ .gkjpcv-pager.f02 .gkjpcv-pg-a{ border-style: dashed; } .gkjpcv-pager.f03 .gkjpcv-pg-a{ border-width: 2px; } .gkjpcv-pager.f04 .gkjpcv-pg-a{ background: color-mix(in srgb, var(--pg-bg) 78%, transparent); backdrop-filter: blur(2px); } .gkjpcv-pager.f05 .gkjpcv-pg-a{ min-width: 38px; } /* Jumper */ .gkjpcv-pager .gkjpcv-pg-jump{ display:flex; align-items:center; gap:8px; margin-left: 10px; } .gkjpcv-pager .gkjpcv-pg-jump label{ font-size: 12px; color: var(--pg-fg2); } .gkjpcv-pager .gkjpcv-pg-inp{ width: 74px; padding: 6px 10px; border-radius: 10px; border: 1px solid var(--pg-bd); background: var(--pg-bg); color: var(--pg-fg); } .gkjpcv-pager .gkjpcv-pg-btn{ padding: 6px 12px; border-radius: 10px; border: 1px solid color-mix(in srgb, var(--pg-ac) 55%, var(--pg-bd)); background: color-mix(in srgb, var(--pg-ac) 16%, var(--pg-bg)); color: color-mix(in srgb, var(--pg-ac) 85%, var(--pg-fg)); cursor:pointer; } .gkjpcv-seowords { margin: 16px 0; font-size: 14px; line-height: 1.8; color: var(--text-muted-color); } .gkjpcv-seowords a { color: var(--text-color); text-decoration: none; margin-right: 6px; } .gkjpcv-seowords a:hover { color: var(--primary-color); text-decoration: underline; } /* Family B */ .gkjpcv-seowords.B .gkjpcv-seowords-list { display: flex; flex-wrap: wrap; gap: 6px 12px; list-style: none; padding: 0; margin: 0; } /* Family C */ .gkjpcv-seowords.C .gkjpcv-seowords-label { margin-right: 6px; color: var(--text-muted-color); } /* Family D */ .gkjpcv-seowords.D .gkjpcv-seowords-paragraph { margin: 0; } .gkjpcv-breadcrumb { margin: 12px 0; font-size: 14px; line-height: 1.6; color: var(--text-muted-color); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .gkjpcv-breadcrumb a { color: var(--text-color); text-decoration: none; } .gkjpcv-breadcrumb a:hover { color: var(--primary-color); text-decoration: underline; } .gkjpcv-breadcrumb .sep { margin: 0 6px; color: var(--text-muted-color); } .gkjpcv-breadcrumb .current { color: var(--text-color); font-weight: 500; } /* Family B */ .gkjpcv-breadcrumb.B .label { margin-right: 6px; } /* Family D */ .gkjpcv-breadcrumb.D .prefix { margin-right: 6px; color: var(--text-color); } \ No newline at end of file diff --git a/code/public/static/css/modules/banner/banner_01.css b/code/public/static/css/modules/banner/banner_01.css new file mode 100644 index 0000000..c862349 --- /dev/null +++ b/code/public/static/css/modules/banner/banner_01.css @@ -0,0 +1,48 @@ +/* banner_01.css */ +.__PFX__-b1-wrap { + margin: 16px 0; +} + +.__PFX__-b1-link { + display: block; +} + +.__PFX__-b1-figure { + position: relative; +} + +.__PFX__-b1-img { + width: 100%; + height: 170px; + border-radius: 14px; + object-fit: cover; +} + +.__PFX__-b1-cap { + position: absolute; + left: 12px; + right: 12px; + bottom: 12px; + background: linear-gradient(to top, rgba(0, 0, 0, .45), transparent); + color: #fff; + padding: 10px; + border-radius: 10px; +} + +.__PFX__-b1-cap h2 { + font-size: 16px; + margin-bottom: 4px; +} + +.__PFX__-b1-cap p { + font-size: 12px; + opacity: .9; +} + +@media(min-width:768px) { + .__PFX__-b1-img { + height: 240px; + } + + +} \ No newline at end of file diff --git a/code/public/static/css/modules/banner/banner_02.css b/code/public/static/css/modules/banner/banner_02.css new file mode 100644 index 0000000..3cb7d14 --- /dev/null +++ b/code/public/static/css/modules/banner/banner_02.css @@ -0,0 +1,29 @@ +/* banner_02.css */ +.__PFX__-b2-box { + margin: 16px 0; +} +.__PFX__-b2-click { + display: flex; + gap: 12px; + padding: 12px; + background: #fff; + border-radius: 14px; + border: 1px solid rgba(0,0,0,.05); +} +.__PFX__-b2-left h3 { + font-size: 16px; + color: var(--primary-color); +} +.__PFX__-b2-left span { + font-size: 12px; + color: #777; +} +.__PFX__-b2-thumb { + width: 100px; + height: 60px; + border-radius: 8px; + object-fit: cover; +} +@media(min-width:768px){ + .__PFX__-b2-thumb { width: 130px; height: 80px; } +} diff --git a/code/public/static/css/modules/banner/banner_03.css b/code/public/static/css/modules/banner/banner_03.css new file mode 100644 index 0000000..7c1edb7 --- /dev/null +++ b/code/public/static/css/modules/banner/banner_03.css @@ -0,0 +1,23 @@ +/* banner_03.css */ +.__PFX__-b3-hscroll { + margin: 16px 0; + overflow-x: auto; +} +.__PFX__-b3-list { + display: flex; + gap: 12px; +} +.__PFX__-b3-item { + width: 160px; + flex-shrink: 0; +} +.__PFX__-b3-img { + width: 100%; + height: 110px; + object-fit: cover; + border-radius: 10px; +} +.__PFX__-b3-title { + font-size: 13px; + margin-top: 6px; +} diff --git a/code/public/static/css/modules/banner/banner_04.css b/code/public/static/css/modules/banner/banner_04.css new file mode 100644 index 0000000..55da0f0 --- /dev/null +++ b/code/public/static/css/modules/banner/banner_04.css @@ -0,0 +1,19 @@ +/* banner_04.css */ +.__PFX__-b4-strip { + margin: 16px 0; +} +.__PFX__-b4-inner { + display: flex; + align-items: center; + gap: 8px; + padding: 10px 14px; + background: #f6f6f6; + border-radius: 12px; +} +.__PFX__-b4-icon { + font-size: 16px; +} +.__PFX__-b4-inner small { + font-size: 13px; + color: #555; +} diff --git a/code/public/static/css/modules/banner/banner_05.css b/code/public/static/css/modules/banner/banner_05.css new file mode 100644 index 0000000..a8be86d --- /dev/null +++ b/code/public/static/css/modules/banner/banner_05.css @@ -0,0 +1,33 @@ +/* banner_05.css */ +.__PFX__-b5-box { + margin: 16px 0; +} +.__PFX__-b5-imgwrap { + position: relative; +} +.__PFX__-b5-img { + width: 100%; + height: 170px; + border-radius: 14px; + object-fit: cover; +} +.__PFX__-b5-foot { + position: absolute; + left: 10px; + right: 10px; + bottom: 12px; + padding: 8px 10px; + border-radius: 10px; + background: rgba(0,0,0,.45); + color: #fff; +} +.__PFX__-b5-foot h4 { + font-size: 15px; + margin-bottom: 4px; +} +.__PFX__-b5-foot span { + font-size: 12px; +} +@media(min-width:768px){ + .__PFX__-b5-img { height: 240px; } +} diff --git a/code/public/static/css/modules/breadcrumb/breadcrumb.css b/code/public/static/css/modules/breadcrumb/breadcrumb.css new file mode 100644 index 0000000..54a14e1 --- /dev/null +++ b/code/public/static/css/modules/breadcrumb/breadcrumb.css @@ -0,0 +1,41 @@ + +.__PFX__-breadcrumb { + margin: 12px 0; + font-size: 14px; + line-height: 1.6; + color: var(--text-muted-color); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.__PFX__-breadcrumb a { + color: var(--text-color); + text-decoration: none; +} + +.__PFX__-breadcrumb a:hover { + color: var(--primary-color); + text-decoration: underline; +} + +.__PFX__-breadcrumb .sep { + margin: 0 6px; + color: var(--text-muted-color); +} + +.__PFX__-breadcrumb .current { + color: var(--text-color); + font-weight: 500; +} + +/* Family B */ +.__PFX__-breadcrumb.B .label { + margin-right: 6px; +} + +/* Family D */ +.__PFX__-breadcrumb.D .prefix { + margin-right: 6px; + color: var(--text-color); +} diff --git a/code/public/static/css/modules/breadcrumb/layout/layout_A.css b/code/public/static/css/modules/breadcrumb/layout/layout_A.css new file mode 100644 index 0000000..3e30151 --- /dev/null +++ b/code/public/static/css/modules/breadcrumb/layout/layout_A.css @@ -0,0 +1,83 @@ +/* ================= Breadcrumb Layout A ================= */ + +.__PFX__-bc-a{ + margin:10px 0; + font-size:13px; + line-height:1.6; + color:var(--text-muted-color); + + /* 关键:横向导航 */ + display:flex; + align-items:center; + flex-wrap:wrap; + gap:6px; +} + +/* 所有直接子容器都横向 */ +.__PFX__-bc-a > *{ + display:flex; + align-items:center; + flex-wrap:wrap; + gap:6px; +} + +/* 重置 ol / ul */ +.__PFX__-bc-a ol, +.__PFX__-bc-a ul{ + display:flex; + align-items:center; + flex-wrap:wrap; + gap:6px; + list-style:none; + padding:0; + margin:0; +} + +/* li 横向 */ +.__PFX__-bc-a li{ + display:flex; + align-items:center; + gap:6px; +} + +/* 分隔符(li::after 方案) */ +.__PFX__-bc-a li::after{ + content:"/"; + margin-left:6px; + color:var(--text-muted-color); +} + +.__PFX__-bc-a li:last-child::after{ + content:""; +} + +/* 链接样式 */ +.__PFX__-bc-a a{ + color:var(--text-muted-color); + text-decoration:none; + white-space:nowrap; +} + +/* 当前节点 */ +.__PFX__-bc-a strong, +.__PFX__-bc-a em, +.__PFX__-bc-a span{ + color:var(--text-color); + font-style:normal; + white-space:nowrap; +} + +/* inline variant(你原来的,保留) */ +.__PFX__-bc-inline{ + display:flex; + gap:6px; +} + +/* 紧凑 / SEO */ +.__PFX__-bc-a.compact{ + font-size:12px; +} + +.__PFX__-bc-a.seo{ + font-weight:500; +} diff --git a/code/public/static/css/modules/breadcrumb/layout/layout_B.css b/code/public/static/css/modules/breadcrumb/layout/layout_B.css new file mode 100644 index 0000000..86593ca --- /dev/null +++ b/code/public/static/css/modules/breadcrumb/layout/layout_B.css @@ -0,0 +1,35 @@ +/* ================= Breadcrumb Layout B ================= */ + +.__PFX__-bc-b{ + margin:14px 0; + padding:10px 12px; + background:var(--bg-soft-color); + border-radius:6px; + font-size:13px; + line-height:1.6; +} + +.__PFX__-bc-b a{ + color:var(--text-color); + text-decoration:none; +} + +.__PFX__-bc-b strong, +.__PFX__-bc-b em{ + font-style:normal; + font-weight:600; +} + +/* block spacing */ +.__PFX__-bc-b > * > *{ + margin-bottom:6px; +} + +.__PFX__-bc-b.compact{ + padding:8px 10px; + font-size:12px; +} + +.__PFX__-bc-b.seo{ + font-weight:500; +} diff --git a/code/public/static/css/modules/breadcrumb/layout/layout_C.css b/code/public/static/css/modules/breadcrumb/layout/layout_C.css new file mode 100644 index 0000000..146a8bd --- /dev/null +++ b/code/public/static/css/modules/breadcrumb/layout/layout_C.css @@ -0,0 +1,37 @@ +/* ================= Breadcrumb Layout C ================= */ + +.__PFX__-bc-c{ + margin:10px 0; + font-size:13px; + line-height:1.8; + color:var(--text-muted-color); +} + +.__PFX__-bc-c a{ + color:var(--text-muted-color); + text-decoration:none; +} + +.__PFX__-bc-c strong, +.__PFX__-bc-c em, +.__PFX__-bc-c mark{ + font-style:normal; + font-weight:500; + background:none; + color:var(--text-color); +} + +.__PFX__-bc-c code, +.__PFX__-bc-c kbd{ + background:transparent; + padding:0; + font-size:12px; +} + +.__PFX__-bc-c.seo{ + font-weight:500; +} + +.__PFX__-bc-c.compact{ + font-size:12px; +} diff --git a/code/public/static/css/modules/breadcrumb/layout/layout_D.css b/code/public/static/css/modules/breadcrumb/layout/layout_D.css new file mode 100644 index 0000000..252ffc9 --- /dev/null +++ b/code/public/static/css/modules/breadcrumb/layout/layout_D.css @@ -0,0 +1,57 @@ +/* ================= Breadcrumb Layout D ================= */ + +.__PFX__-bc-d{ + margin:16px 0; + padding:12px; + background:var(--bg-soft-color); + border-radius:8px; +} + +/* pills */ +.__PFX__-bc-pill .pill{ + display:inline-block; + padding:4px 10px; + border-radius:999px; + background:var(--bg-color); + margin-right:6px; + font-size:12px; +} +.__PFX__-bc-pill .active{ + background:var(--primary-color); + color:#fff; +} + +/* card */ +.__PFX__-bc-card{ + list-style:none; + display:flex; + gap:8px; + padding:0; + margin:0; +} +.__PFX__-bc-card li{ + padding:6px 10px; + background:var(--bg-color); + border-radius:6px; +} + +/* step */ +.__PFX__-bc-step{ + display:flex; + gap:10px; +} +.__PFX__-bc-step .step{ + padding:6px 10px; + background:var(--bg-color); + border-radius:4px; +} +.__PFX__-bc-step .active{ + background:var(--primary-color); + color:#fff; +} + +/* generic */ +.__PFX__-bc-d a{ + text-decoration:none; + color:var(--text-color); +} diff --git a/code/public/static/css/modules/category/category_01.css b/code/public/static/css/modules/category/category_01.css new file mode 100644 index 0000000..fcaa31c --- /dev/null +++ b/code/public/static/css/modules/category/category_01.css @@ -0,0 +1,25 @@ +/* category_01.css */ +.__PFX__-c1-wrap { + margin: 22px 0 12px; + padding: 0 4px; +} +.__PFX__-c1-title { + font-size: 15px; + color: var(--primary-color); + margin-bottom: 8px; +} +.__PFX__-c1-tags { + list-style: none; + padding: 0; + display: flex; + flex-wrap: wrap; + gap: 10px; +} +.__PFX__-c1-tags li span { + display: inline-block; + padding: 6px 12px; + background: #f7f7f7; + border-radius: 999px; + font-size: 13px; + color: #444; +} diff --git a/code/public/static/css/modules/category/category_02.css b/code/public/static/css/modules/category/category_02.css new file mode 100644 index 0000000..8c398f0 --- /dev/null +++ b/code/public/static/css/modules/category/category_02.css @@ -0,0 +1,21 @@ +/* category_02.css */ +.__PFX__-c2-area { + margin: 20px 0; +} +.__PFX__-c2-hd { + font-size: 16px; + color: var(--primary-color); + margin-bottom: 10px; +} +.__PFX__-c2-btnbox { + display: flex; + gap: 10px; + flex-wrap: wrap; +} +.__PFX__-c2-btn { + padding: 7px 14px; + background: #fff; + border-radius: 8px; + border: 1px solid rgba(0,0,0,.08); + font-size: 13px; +} diff --git a/code/public/static/css/modules/category/category_03.css b/code/public/static/css/modules/category/category_03.css new file mode 100644 index 0000000..93be228 --- /dev/null +++ b/code/public/static/css/modules/category/category_03.css @@ -0,0 +1,32 @@ +/* category_03.css */ +.__PFX__-c3-box { + margin: 20px 0; +} +.__PFX__-c3-tit { + font-size: 16px; + color: var(--primary-color); + margin-bottom: 10px; +} +.__PFX__-c3-grid { + display: grid; + grid-template-columns: repeat(2,1fr); + gap: 14px; +} +@media(min-width:768px){ + .__PFX__-c3-grid { grid-template-columns: repeat(4,1fr); } +} +.__PFX__-c3-item { + background: #fff; + padding: 16px; + border-radius: 12px; + text-align: center; + border: 1px solid rgba(0,0,0,.06); +} +.__PFX__-c3-ico { + font-size: 26px; + margin-bottom: 6px; +} +.__PFX__-c3-item p { + font-size: 13px; + color: #333; +} diff --git a/code/public/static/css/modules/category/category_04.css b/code/public/static/css/modules/category/category_04.css new file mode 100644 index 0000000..d39a71b --- /dev/null +++ b/code/public/static/css/modules/category/category_04.css @@ -0,0 +1,19 @@ +/* category_04.css */ +.__PFX__-c4-nav { + margin: 18px 0; + overflow-x: auto; +} +.__PFX__-c4-list { + list-style: none; + display: flex; + gap: 12px; + padding: 0 2px; +} +.__PFX__-c4-list a { + display: inline-block; + padding: 6px 12px; + background: #f3f3f3; + border-radius: 8px; + white-space: nowrap; + font-size: 13px; +} diff --git a/code/public/static/css/modules/category/category_05.css b/code/public/static/css/modules/category/category_05.css new file mode 100644 index 0000000..f9a522f --- /dev/null +++ b/code/public/static/css/modules/category/category_05.css @@ -0,0 +1,30 @@ +/* category_05.css */ +.__PFX__-c5-section { + margin: 20px 0; +} +.__PFX__-c5-hd span { + font-size: 15px; + color: var(--primary-color); + margin-left: 4px; +} +.__PFX__-c5-wrap { + margin-top: 12px; +} +.__PFX__-c5-row { + display: flex; + gap: 10px; + padding: 10px 0; + border-bottom: 1px solid rgba(0,0,0,.06); +} +.__PFX__-c5-l { + font-size: 22px; +} +.__PFX__-c5-r b { + color: #333; + font-size: 14px; +} +.__PFX__-c5-r p { + font-size: 12px; + color: #777; + margin-top: 3px; +} diff --git a/code/public/static/css/modules/detail/detail_01.css b/code/public/static/css/modules/detail/detail_01.css new file mode 100644 index 0000000..7652885 --- /dev/null +++ b/code/public/static/css/modules/detail/detail_01.css @@ -0,0 +1,96 @@ +/* detail_01.css */ +.__PFX__-d1-wrap { padding: 12px; } + +/* 顶部基础信息 */ +.__PFX__-d1-hd { display: flex; gap: 14px; } +@media(max-width:768px){ + .__PFX__-d1-hd { flex-direction: column; } +} +.__PFX__-d1-cover { + width: 160px; + border-radius: 12px; + aspect-ratio: 2/3; + object-fit: cover; +} +.__PFX__-d1-info h1 { + font-size: 22px; + color: var(--primary-color); + margin-bottom: 10px; +} +.__PFX__-d1-info p { + margin-bottom: 4px; + font-size: 13px; +} + +/* TAB 线路切换 */ +.__PFX__-d1-tabs { + margin-top: 20px; + display: flex; + gap: 10px; + overflow-x: auto; +} +.__PFX__-d1-tab { + padding: 6px 12px; + background: #f4f4f4; + border-radius: 8px; + font-size: 13px; + white-space: nowrap; +} +.__PFX__-d1-tab.active { + background: var(--primary-color); + color: #fff; +} + +/* 集数列表 */ +.__PFX__-d1-list { display: none; margin: 14px 0; } +.__PFX__-d1-list.active { display: flex; flex-wrap: wrap; gap: 10px; } +.__PFX__-d1-list li a { + display: block; + padding: 6px 14px; + background: #fafafa; + border-radius: 6px; + font-size: 12px; + border: 1px solid rgba(0,0,0,.06); +} +.__PFX__-d1-list li a.active { + background: var(--primary-color); + color: #fff; +} + +/* 简介 */ +.__PFX__-d1-desc h2 { + margin-top: 16px; + font-size: 18px; + color: var(--primary-color); +} +.__PFX__-d1-desc p { + line-height: 1.7; + margin-top: 6px; +} + +/* 相关推荐 */ +.__PFX__-d1-rel h3 { + margin-top: 20px; + font-size: 16px; + color: var(--primary-color); +} +.__PFX__-d1-relgrid { + display: grid; + gap: 14px; + grid-template-columns: repeat(2,1fr); +} +@media(min-width:768px){ + .__PFX__-d1-relgrid { + grid-template-columns: repeat(4,1fr); + } +} +.__PFX__-d1-relcard img { + width: 100%; + aspect-ratio: 2/3; + object-fit: cover; + border-radius: 10px; +} +.__PFX__-d1-relcard p { + margin-top: 4px; + font-size: 12px; +} diff --git a/code/public/static/css/modules/detail/detail_02.css b/code/public/static/css/modules/detail/detail_02.css new file mode 100644 index 0000000..5290de1 --- /dev/null +++ b/code/public/static/css/modules/detail/detail_02.css @@ -0,0 +1,125 @@ +/* detail_02.css */ +.__PFX__-d2-page { padding-bottom: 20px; } + +/* 顶部大横图 */ +.__PFX__-d2-hero { + position: relative; + height: 200px; + overflow: hidden; +} +@media(min-width:768px){ + .__PFX__-d2-hero { height: 260px; } +} +.__PFX__-d2-heroimg { + width: 100%; + height: 100%; + object-fit: cover; +} +.__PFX__-d2-heromask { + position: absolute; + inset: 0; + background: linear-gradient(to top, rgba(0,0,0,.6), transparent); +} +.__PFX__-d2-heroinfo { + position: absolute; + left: 12px; + right: 12px; + bottom: 12px; + color: #fff; +} +.__PFX__-d2-heroinfo h1 { + font-size: 20px; + margin-bottom: 4px; +} + +/* 基本信息 */ +.__PFX__-d2-info { + padding: 12px; + font-size: 13px; +} +.__PFX__-d2-info p { margin-bottom: 4px; } + +/* 线路 tabs */ +.__PFX__-d2-tabs { + padding: 0 12px; + margin-top: 10px; + display: flex; + gap: 8px; + overflow-x: auto; +} +.__PFX__-d2-tabbtn { + padding: 6px 12px; + border-radius: 14px; + border: 1px solid rgba(0,0,0,.08); + background: #f6f6f6; + font-size: 12px; + white-space: nowrap; +} +.__PFX__-d2-tabbtn.active { + background: var(--primary-color); + border-color: var(--primary-color); + color: #fff; +} + +/* 集数列表 */ +.__PFX__-d2-lines { padding: 10px 12px 0; } +.__PFX__-d2-epis { + display: none; + flex-wrap: wrap; + gap: 8px; +} +.__PFX__-d2-epis.active { display: flex; } +.__PFX__-d2-epis li a { + display: block; + padding: 6px 10px; + font-size: 12px; + border-radius: 6px; + background: #fafafa; + border: 1px solid rgba(0,0,0,.06); +} +.__PFX__-d2-epis li a.active { + background: var(--primary-color); + color: #fff; +} + +/* 简介 */ +.__PFX__-d2-desc { + padding: 14px 12px 0; +} +.__PFX__-d2-desc h2 { + font-size: 16px; + color: var(--primary-color); + margin-bottom: 6px; +} +.__PFX__-d2-desc p { + font-size: 14px; + line-height: 1.7; +} + +/* 相关推荐 */ +.__PFX__-d2-rel { + padding: 16px 12px 0; +} +.__PFX__-d2-rel h3 { + font-size: 16px; + color: var(--primary-color); + margin-bottom: 8px; +} +.__PFX__-d2-relgrid { + display: grid; + gap: 12px; + grid-template-columns: repeat(2,1fr); +} +@media(min-width:768px){ + .__PFX__-d2-relgrid { grid-template-columns: repeat(4,1fr); } +} +.__PFX__-d2-relcard img { + width: 100%; + aspect-ratio: 2/3; + border-radius: 10px; + object-fit: cover; +} +.__PFX__-d2-relcard p { + font-size: 12px; + margin-top: 4px; +} diff --git a/code/public/static/css/modules/detail/detail_03.css b/code/public/static/css/modules/detail/detail_03.css new file mode 100644 index 0000000..9d5eb3b --- /dev/null +++ b/code/public/static/css/modules/detail/detail_03.css @@ -0,0 +1,104 @@ +/* detail_03.css */ +.__PFX__-d3-page { padding: 12px; } + +/* 顶部区域 */ +.__PFX__-d3-top { + display: flex; + gap: 14px; +} +@media(max-width:768px){ + .__PFX__-d3-top { flex-direction: column; } +} +.__PFX__-d3-pic { + width: 150px; + aspect-ratio: 2/3; + border-radius: 12px; + object-fit: cover; +} +.__PFX__-d3-meta h1 { + font-size: 22px; + color: var(--primary-color); + margin-bottom: 6px; +} +.__PFX__-d3-meta p { + font-size: 13px; + margin-bottom: 4px; +} + +/* 线路 chips */ +.__PFX__-d3-linesel { + margin-top: 16px; + display: flex; + flex-wrap: wrap; + gap: 8px; +} +.__PFX__-d3-chip { + font-size: 12px; + padding: 4px 10px; + border-radius: 999px; + background: #f3f3f3; +} +.__PFX__-d3-chip.active { + background: var(--primary-color); + color: #fff; +} + +/* 集数块 */ +.__PFX__-d3-epwrap { + margin-top: 10px; +} +.__PFX__-d3-epbox { + display: none; + flex-wrap: wrap; + gap: 8px; +} +.__PFX__-d3-epbox.active { display: flex; } +.__PFX__-d3-epitem { + padding: 6px 12px; + font-size: 12px; + border-radius: 8px; + background: #fafafa; + border: 1px solid rgba(0,0,0,.05); +} +.__PFX__-d3-epitem.active { + background: var(--primary-color); + color: #fff; +} + +/* 简介 */ +.__PFX__-d3-desc h2 { + margin-top: 18px; + font-size: 16px; + color: var(--primary-color); +} +.__PFX__-d3-desc p { + margin-top: 6px; + font-size: 14px; + line-height: 1.7; +} + +/* 同主演推荐 */ +.__PFX__-d3-rel h3 { + margin-top: 18px; + font-size: 16px; + color: var(--primary-color); +} +.__PFX__-d3-grid { + margin-top: 8px; + display: grid; + gap: 12px; + grid-template-columns: repeat(2,1fr); +} +@media(min-width:768px){ + .__PFX__-d3-grid { grid-template-columns: repeat(3,1fr); } +} +.__PFX__-d3-card img { + width: 100%; + aspect-ratio: 2/3; + border-radius: 10px; + object-fit: cover; +} +.__PFX__-d3-card p { + font-size: 12px; + margin-top: 4px; +} diff --git a/code/public/static/css/modules/detail/detail_04.css b/code/public/static/css/modules/detail/detail_04.css new file mode 100644 index 0000000..f2e5b4a --- /dev/null +++ b/code/public/static/css/modules/detail/detail_04.css @@ -0,0 +1,98 @@ +/* detail_04.css */ +.__PFX__-d4-page { padding: 12px; } + +.__PFX__-d4-head h1 { + font-size: 22px; + color: var(--primary-color); + margin-bottom: 10px; +} + +/* 封面 + 表格 meta */ +.__PFX__-d4-meta { + display: flex; + gap: 10px; +} +@media(max-width:768px){ + .__PFX__-d4-meta { flex-direction: column; } +} +.__PFX__-d4-img { + width: 150px; + aspect-ratio: 2/3; + border-radius: 10px; + object-fit: cover; +} +.__PFX__-d4-table p { + display: flex; + justify-content: space-between; + font-size: 13px; + padding: 4px 0; +} +.__PFX__-d4-table span:first-child { + color: #666; +} + +/* 线路选择 */ +.__PFX__-d4-linebox { + margin-top: 14px; + font-size: 13px; +} +.__PFX__-d4-linebox select { + margin-left: 6px; + padding: 4px 8px; + font-size: 13px; +} + +/* 集数列表 */ +.__PFX__-d4-eplist { margin-top: 10px; } +.__PFX__-d4-ol { + display: none; + padding-left: 18px; +} +.__PFX__-d4-ol.active { display: block; } +.__PFX__-d4-ol li { + margin-bottom: 6px; +} +.__PFX__-d4-ol a { + font-size: 13px; +} +.__PFX__-d4-ol a.active { + color: var(--primary-color); +} + +/* 简介 */ +.__PFX__-d4-desc h2 { + margin-top: 18px; + font-size: 16px; + color: var(--primary-color); +} +.__PFX__-d4-desc p { + margin-top: 6px; + font-size: 14px; + line-height: 1.7; +} + +/* 同年推荐 */ +.__PFX__-d4-rel h3 { + margin-top: 18px; + font-size: 16px; + color: var(--primary-color); +} +.__PFX__-d4-grid { + margin-top: 8px; + display: grid; + gap: 12px; + grid-template-columns: repeat(2,1fr); +} +@media(min-width:768px){ + .__PFX__-d4-grid { grid-template-columns: repeat(3,1fr); } +} +.__PFX__-d4-card img { + width: 100%; + aspect-ratio: 2/3; + border-radius: 10px; + object-fit: cover; +} +.__PFX__-d4-card p { + font-size: 12px; + margin-top: 4px; +} diff --git a/code/public/static/css/modules/detail/detail_05.css b/code/public/static/css/modules/detail/detail_05.css new file mode 100644 index 0000000..1575ae1 --- /dev/null +++ b/code/public/static/css/modules/detail/detail_05.css @@ -0,0 +1,107 @@ +/* detail_05.css */ +.__PFX__-d5-page { padding: 12px; } + +/* 头部 */ +.__PFX__-d5-head h1 { + font-size: 22px; + color: var(--primary-color); +} +.__PFX__-d5-head p { + font-size: 13px; + color: #666; + margin-top: 4px; +} + +/* 海报 */ +.__PFX__-d5-fig { + margin-top: 12px; +} +.__PFX__-d5-poster { + width: 100%; + max-width: 260px; + border-radius: 14px; + aspect-ratio: 2/3; + object-fit: cover; +} + +/* 线路 + 集数 */ +.__PFX__-d5-lines { + margin-top: 14px; +} +.__PFX__-d5-linechips { + display: flex; + flex-wrap: wrap; + gap: 8px; +} +.__PFX__-d5-chip { + padding: 5px 10px; + border-radius: 999px; + border: 1px solid rgba(0,0,0,.06); + background: #f7f7f7; + font-size: 12px; +} +.__PFX__-d5-chip.active { + background: var(--primary-color); + color: #fff; +} +.__PFX__-d5-epswrap { + margin-top: 10px; +} +.__PFX__-d5-eps { + display: none; + display: none; + flex-wrap: wrap; + gap: 8px; +} +.__PFX__-d5-eps.active { + display: flex; +} +.__PFX__-d5-epbtn { + padding: 6px 12px; + font-size: 12px; + border-radius: 8px; + background: #fafafa; + border: 1px solid rgba(0,0,0,.05); +} +.__PFX__-d5-epbtn.active { + background: var(--primary-color); + color: #fff; +} + +/* 简介 */ +.__PFX__-d5-info h2 { + margin-top: 18px; + font-size: 16px; + color: var(--primary-color); +} +.__PFX__-d5-info p { + margin-top: 6px; + font-size: 14px; + line-height: 1.7; +} + +/* 综合推荐 */ +.__PFX__-d5-rel h3 { + margin-top: 18px; + font-size: 16px; + color: var(--primary-color); +} +.__PFX__-d5-relgrid { + margin-top: 8px; + display: grid; + gap: 12px; + grid-template-columns: repeat(2,1fr); +} +@media(min-width:768px){ + .__PFX__-d5-relgrid { grid-template-columns: repeat(4,1fr); } +} +.__PFX__-d5-relcard img { + width: 100%; + aspect-ratio: 2/3; + border-radius: 10px; + object-fit: cover; +} +.__PFX__-d5-relcard p { + font-size: 12px; + margin-top: 4px; +} diff --git a/code/public/static/css/modules/detail_main/action.css b/code/public/static/css/modules/detail_main/action.css new file mode 100644 index 0000000..fc271fd --- /dev/null +++ b/code/public/static/css/modules/detail_main/action.css @@ -0,0 +1,69 @@ +/* ===================== Action Base ===================== */ + +.__PFX__-dm-action { + margin: 14px 0; +} + +.__PFX__-dm-action a, +.__PFX__-dm-action button { + display: inline-block; + padding: 8px 14px; + background: var(--primary-color); + color: #fff; + text-decoration: none; + border-radius: 4px; + font-size: 14px; +} + +.__PFX__-dm-action span, +.__PFX__-dm-action small, +.__PFX__-dm-action em { + margin-left: 8px; + font-size: 12px; + color: var(--text-muted-color); +} + +.__PFX__-dm-action button { + border: none; + cursor: pointer; +} + +/* ===================== Structure Differences ===================== */ + +.__PFX__-dm-action.v2 a, +.__PFX__-dm-action.v12 a { + margin-right: 10px; +} + +.__PFX__-dm-action.v3 li { + list-style: none; + margin-bottom: 6px; +} + +.__PFX__-dm-action.v3 a { + background: var(--accent-color); +} + +.__PFX__-dm-action.v7 small, +.__PFX__-dm-action.v17 em { + display: block; + margin-top: 4px; +} + +.__PFX__-dm-action.v13 a { + font-size: 20px; + padding: 6px 10px; +} + +.__PFX__-dm-action.v15, +.__PFX__-dm-action.v19 { + text-align: center; +} + +.__PFX__-dm-action.v18 { + border-top: 1px dashed var(--border-color); + padding-top: 10px; +} +.__PFX__-dm-action { + margin-top: 12px; +} diff --git a/code/public/static/css/modules/detail_main/cover.css b/code/public/static/css/modules/detail_main/cover.css new file mode 100644 index 0000000..3bbf5c0 --- /dev/null +++ b/code/public/static/css/modules/detail_main/cover.css @@ -0,0 +1,101 @@ +/* ===================== Cover Base ===================== */ + +.__PFX__-dm-cover { + position: relative; + width: 100%; + overflow: hidden; +} + +.__PFX__-dm-cover-img { + display: block; + width: 100%; + height: auto; +} + +.__PFX__-dm-cover-bg { + width: 100%; + aspect-ratio: 2 / 3; + background-size: cover; + background-position: center; +} + +/* ===================== Overlays ===================== */ + +.__PFX__-dm-cover-badge, +.__PFX__-dm-cover-score, +.__PFX__-dm-cover-tag, +.__PFX__-dm-cover-year, +.__PFX__-dm-cover-free, +.__PFX__-dm-cover-top { + position: absolute; + top: 8px; + left: 8px; + padding: 2px 6px; + font-size: 12px; + background: rgba(0,0,0,.6); + color: #fff; + border-radius: 3px; +} + +.__PFX__-dm-cover-score { + top: auto; + bottom: 8px; + left: 8px; +} + +.__PFX__-dm-cover-remark { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + font-size: 12px; + padding: 4px 6px; + background: rgba(0,0,0,.5); + color: #fff; +} + +.__PFX__-dm-cover-play { + position: absolute; + inset: 0; + background: rgba(0,0,0,.35); +} + +.__PFX__-dm-cover-play::after { + content: "▶"; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + font-size: 32px; + color: #fff; +} + +/* ===================== Variant Differences ===================== */ + +.__PFX__-dm-cover.v3, +.__PFX__-dm-cover.v6, +.__PFX__-dm-cover.v10, +.__PFX__-dm-cover.v11, +.__PFX__-dm-cover.v14 { + aspect-ratio: 2 / 3; +} + +.__PFX__-dm-cover.v8 { + text-align: center; +} + +.__PFX__-dm-cover.v16 .__PFX__-dm-cover-mask { + position: absolute; + inset: 0; + background: linear-gradient( + to bottom, + rgba(0,0,0,0), + rgba(0,0,0,.6) + ); +} + +.__PFX__-dm-cover.v18 { + aspect-ratio: 2 / 3; + background-size: cover; + background-position: center; +} diff --git a/code/public/static/css/modules/detail_main/desc.css b/code/public/static/css/modules/detail_main/desc.css new file mode 100644 index 0000000..4417d54 --- /dev/null +++ b/code/public/static/css/modules/detail_main/desc.css @@ -0,0 +1,58 @@ +/* ===================== Desc Base ===================== */ + +.__PFX__-dm-desc { + font-size: 14px; + line-height: 1.7; + color: var(--text-color); + margin-bottom: 12px; +} + +.__PFX__-dm-desc-more { + margin-left: 6px; + color: var(--accent-color); +} + +.__PFX__-dm-desc-note { + font-size: 12px; + color: var(--text-muted-color); +} + +.__PFX__-dm-desc-hidden { + display: none; +} + +/* ===================== Variant Helpers ===================== */ + +.__PFX__-dm-desc.v1, +.__PFX__-dm-desc.v2, +.__PFX__-dm-desc.v3, +.__PFX__-dm-desc.v7, +.__PFX__-dm-desc.v12, +.__PFX__-dm-desc.v17 { + padding: 6px 0; +} + +.__PFX__-dm-desc.v5 summary { + cursor: pointer; + font-weight: 600; +} + +.__PFX__-dm-desc.v8 blockquote { + margin: 0; + padding-left: 10px; + border-left: 3px solid var(--border-color); +} + +.__PFX__-dm-desc.v11 { + opacity: .95; +} + +.__PFX__-dm-desc.v14 { + background: var(--bg-soft-color); + padding: 8px; +} + +.__PFX__-dm-desc.v19 header { + font-weight: 600; + margin-bottom: 4px; +} diff --git a/code/public/static/css/modules/detail_main/detail_main.base.css b/code/public/static/css/modules/detail_main/detail_main.base.css new file mode 100644 index 0000000..4b72693 --- /dev/null +++ b/code/public/static/css/modules/detail_main/detail_main.base.css @@ -0,0 +1,34 @@ +.__PFX__-dm-root{ + margin:20px 0; + display:grid; + grid-template-columns: 110px 1fr; + gap:14px; + align-items:start; +} + +/* 所有模块默认在右侧 */ +.__PFX__-dm-title, +.__PFX__-dm-title-box, +.__PFX__-dm-title-wrap, +.__PFX__-dm-meta, +.__PFX__-dm-desc, +.__PFX__-dm-action{ + grid-column:2; +} + +/* 封面永远左侧 */ +.__PFX__-dm-cover{ + grid-column:1; + grid-row:1 / span 8; + border-radius:10px; + overflow:hidden; +} + +.__PFX__-dm-cover-img, +.__PFX__-dm-cover-bg{ + width:100%; + aspect-ratio:2 / 3; + object-fit:cover; +} + + diff --git a/code/public/static/css/modules/detail_main/detail_main.css b/code/public/static/css/modules/detail_main/detail_main.css new file mode 100644 index 0000000..7ae8c9f --- /dev/null +++ b/code/public/static/css/modules/detail_main/detail_main.css @@ -0,0 +1,40 @@ +.__PFX__-detail { + display: flex; + gap: 20px; + margin: 20px 0; +} + +.__PFX__-detail.B, +.__PFX__-detail.D { + flex-direction: column; +} + +.__PFX__-detail-cover img { + width: 100%; + max-width: 220px; + aspect-ratio: 2 / 3; + object-fit: cover; +} + +.__PFX__-detail-title { + font-size: 22px; + margin: 0 0 8px; +} + +.__PFX__-detail-title .score { + margin-left: 8px; + color: var(--accent-color); + font-size: 16px; +} + +.__PFX__-detail-meta span { + margin-right: 12px; + font-size: 14px; + color: var(--text-muted-color); +} + +.__PFX__-detail-desc { + margin-top: 12px; + font-size: 14px; + line-height: 1.8; +} diff --git a/code/public/static/css/modules/detail_main/layout/layout_A.css b/code/public/static/css/modules/detail_main/layout/layout_A.css new file mode 100644 index 0000000..bd93f33 --- /dev/null +++ b/code/public/static/css/modules/detail_main/layout/layout_A.css @@ -0,0 +1,67 @@ +/* ================= Layout A ================= */ + +.__PFX__-layout-a{ + margin:24px 0; + display:flex; + flex-direction:column; + gap:20px; +} + +/* ---------- Cover(主视觉) ---------- */ +.__PFX__-layout-a .__PFX__-dm-row-cover{ + display:flex; + justify-content:center; +} + +.__PFX__-layout-a .__PFX__-dm-row-cover .__PFX__-dm-cover{ + width:60%; + max-width:420px; /* PC 不霸屏 */ +} + +/* ---------- 信息区 ---------- */ +.__PFX__-layout-a .__PFX__-dm-row-info{ + display:flex; + flex-direction:column; + align-items:center; + gap:10px; + text-align:center; +} + +/* action 不要贴太近 */ +.__PFX__-layout-a .__PFX__-dm-row-info .__PFX__-dm-action{ + margin-top:6px; +} + +/* ---------- 描述区 ---------- */ +.__PFX__-layout-a .__PFX__-dm-row-desc{ + max-width:760px; + margin:0 auto; + line-height:1.8; +} + +/* ================= H5 优化 ================= */ + +@media (max-width:767px){ + + .__PFX__-layout-a .__PFX__-dm-row-cover .__PFX__-dm-cover{ + width:80%; + max-width:none; + } + + .__PFX__-layout-a .__PFX__-dm-row-desc{ + max-width:none; + } +} + +/* ================= 大屏优化 ================= */ + +@media (min-width:1200px){ + + .__PFX__-layout-a .__PFX__-dm-row-cover .__PFX__-dm-cover{ + max-width:480px; + } + + .__PFX__-layout-a .__PFX__-dm-row-desc{ + max-width:860px; + } +} diff --git a/code/public/static/css/modules/detail_main/layout/layout_B.css b/code/public/static/css/modules/detail_main/layout/layout_B.css new file mode 100644 index 0000000..347394f --- /dev/null +++ b/code/public/static/css/modules/detail_main/layout/layout_B.css @@ -0,0 +1,51 @@ +/* ================= Layout B ================= */ + +.__PFX__-dm-root.__PFX__-layout-B{ + margin:20px 0; + display:flex; + flex-direction:column; + gap:16px; +} + +/* 顶部左右 */ +.__PFX__-layout-B .__PFX__-dm-row-top{ + display:flex; + gap:16px; + align-items:flex-start; +} + +/* 左:封面 */ +.__PFX__-layout-B .__PFX__-dm-col-cover{ + width:33%; + max-width:280px; +} + +/* 右:信息区 */ +.__PFX__-layout-B .__PFX__-dm-col-info{ + flex:1; + display:flex; + flex-direction:column; + gap:10px; +} + +/* 底部 desc */ +.__PFX__-layout-B .__PFX__-dm-row-bottom{ + width:100%; +} + +/* ================= H5 优化 ================= */ + +@media (max-width:767px){ + .__PFX__-layout-B .__PFX__-dm-row-top{ + gap:12px; + } + + .__PFX__-layout-B .__PFX__-dm-col-cover{ + width:40%; + max-width:none; + } + + .__PFX__-layout-B .__PFX__-dm-col-info{ + gap:8px; + } +} diff --git a/code/public/static/css/modules/detail_main/layout/layout_C.css b/code/public/static/css/modules/detail_main/layout/layout_C.css new file mode 100644 index 0000000..d925a32 --- /dev/null +++ b/code/public/static/css/modules/detail_main/layout/layout_C.css @@ -0,0 +1,48 @@ +/* ================= Layout C ================= */ + +.__PFX__-dm-root.__PFX__-layout-C{ + margin:20px 0; + display:flex; + flex-direction:column; + gap:16px; +} + +/* 顶部 */ +.__PFX__-layout-C .__PFX__-dm-row-top{ + width:100%; +} + +/* 中间:左右 */ +.__PFX__-layout-C .__PFX__-dm-row-middle{ + display:flex; + gap:16px; +} + +/* 左:封面 */ +.__PFX__-layout-C .__PFX__-dm-col-cover{ + width:33%; + max-width:280px; +} + +/* 右:信息 */ +.__PFX__-layout-C .__PFX__-dm-col-info{ + flex:1; + display:flex; + flex-direction:column; + gap:12px; +} + +/* 底部 */ +.__PFX__-layout-C .__PFX__-dm-row-bottom{ + width:100%; +} + +/* H5 适配 */ +@media (max-width:767px){ + .__PFX__-layout-C .__PFX__-dm-row-middle{ + gap:12px; + } + .__PFX__-layout-C .__PFX__-dm-col-cover{ + width:40%; + } +} diff --git a/code/public/static/css/modules/detail_main/meta.css b/code/public/static/css/modules/detail_main/meta.css new file mode 100644 index 0000000..949d4e6 --- /dev/null +++ b/code/public/static/css/modules/detail_main/meta.css @@ -0,0 +1,102 @@ +/* ===================== Meta Base ===================== */ + +.__PFX__-dm-meta { + font-size: 13px; + color: var(--text-muted-color); + line-height: 1.6; + margin-bottom: 10px; +} + +.__PFX__-dm-meta-label { + font-weight: 600; + margin-right: 4px; +} + +.__PFX__-dm-meta-sep { + margin: 0 6px; +} + +.__PFX__-dm-meta-hidden { + display: none; +} + +/* ===================== Structure Helpers ===================== */ + +.__PFX__-dm-meta.v0 li, +.__PFX__-dm-meta.v1 li, +.__PFX__-dm-meta.v2 li { + list-style: none; +} + +.__PFX__-dm-meta.v3 span, +.__PFX__-dm-meta.v7 span, +.__PFX__-dm-meta.v8 span, +.__PFX__-dm-meta.v9 span, +.__PFX__-dm-meta.v13 span, +.__PFX__-dm-meta.v14 span { + margin-right: 10px; +} + +.__PFX__-dm-meta.v5 dt, +.__PFX__-dm-meta.v6 dt { + font-weight: 600; +} + +.__PFX__-dm-meta.v5 dd, +.__PFX__-dm-meta.v6 dd { + margin: 0 0 4px 0; +} + +.__PFX__-dm-meta.v10 { + width: 100%; + border-collapse: collapse; +} + +.__PFX__-dm-meta.v10 td { + padding: 2px 6px; + border-bottom: 1px solid var(--border-color); +} + +.__PFX__-dm-meta.v12 strong { + margin-right: 6px; +} + +.__PFX__-dm-meta.v15 { + letter-spacing: .5px; +} + +/* ===================== Variant Differences ===================== */ + +.__PFX__-dm-meta.v3 { + display: flex; + flex-wrap: wrap; +} + +.__PFX__-dm-meta.v4 { + font-style: italic; +} + +.__PFX__-dm-meta.v11 { + opacity: .9; +} + +.__PFX__-dm-meta.v16 { + color: var(--text-color); +} + +.__PFX__-dm-meta.v19 p { + margin: 0; +} +.__PFX__-dm-meta-chip { + display: inline-block; + padding: 1px 6px; + border: 1px solid var(--border-color); + border-radius: 999px; + margin-right: 6px; + margin-bottom: 4px; + color: var(--text-muted-color); + font-size: 12px; +} +.__PFX__-dm-meta { + margin-bottom: 6px; +} diff --git a/code/public/static/css/modules/detail_main/title.css b/code/public/static/css/modules/detail_main/title.css new file mode 100644 index 0000000..202fb38 --- /dev/null +++ b/code/public/static/css/modules/detail_main/title.css @@ -0,0 +1,103 @@ +/* ===================== Detail Title Base ===================== */ + +.__PFX__-dm-title { + font-size: 22px; + font-weight: 700; + line-height: 1.3; + color: var(--text-color); +} + +.__PFX__-dm-title-wrap { + margin-bottom: 12px; +} + +.__PFX__-dm-title-box { + padding: 6px 0; +} + +.__PFX__-dm-sub { + font-size: 13px; + color: var(--text-muted-color); +} + +.__PFX__-dm-tag { + margin-left: 6px; + font-size: 12px; + color: var(--accent-color); +} + +.__PFX__-dm-score { + margin-left: 8px; + font-size: 13px; + color: var(--primary-color); +} + +.__PFX__-dm-hidden { + display: none; +} + +/* ===================== Variant Differences ===================== */ + +.__PFX__-dm-title.v1 small { + font-size: 13px; + margin-left: 6px; +} + +.__PFX__-dm-title.v5 sup { + font-size: 12px; + color: var(--accent-color); +} + +.__PFX__-dm-title-wrap.v3 { + border-bottom: 1px solid var(--border-color); + padding-bottom: 6px; +} + +.__PFX__-dm-title-wrap.v6 { + background: var(--bg-soft-color); + padding: 8px; +} + +.__PFX__-dm-title-wrap.v7 { + border-left: 4px solid var(--primary-color); + padding-left: 8px; +} + +.__PFX__-dm-title-wrap.v8 { + text-align: center; +} + +.__PFX__-dm-title.v9 .__PFX__-dm-tag { + background: var(--bg-soft-color); + padding: 2px 6px; + border-radius: 4px; +} + +.__PFX__-dm-title-box.v12 { + background: var(--bg-soft-color); +} + +.__PFX__-dm-title.v13 .__PFX__-dm-score { + font-weight: bold; +} + +.__PFX__-dm-title-wrap.v14 .__PFX__-dm-icon { + display: inline-block; + width: 6px; + height: 6px; + background: var(--accent-color); + border-radius: 50%; + margin-left: 6px; +} + +.__PFX__-dm-title.v15 { + letter-spacing: 0.5px; +} + +.__PFX__-dm-title-wrap.v19 { + padding: 10px 0; +} +.__PFX__-dm-title, +.__PFX__-dm-title-wrap { + margin-bottom: 8px; +} diff --git a/code/public/static/css/modules/footer/foot_a.css b/code/public/static/css/modules/footer/foot_a.css new file mode 100644 index 0000000..88837ce --- /dev/null +++ b/code/public/static/css/modules/footer/foot_a.css @@ -0,0 +1,54 @@ +/* footer A v2 - refined single column */ + +.__PFX__-fA-wrap{ + padding:18px 12px 16px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + text-align:center; + font-size:13px; +} + +.__PFX__-fA-links{ + margin-bottom:10px; +} + +.__PFX__-fA-links span{ + margin-right:6px; + color:var(--text-muted-color); +} + +.__PFX__-fA-links a{ + margin:0 6px; + color:var(--primary-color); +} + +.__PFX__-fA-sitemap{ + margin:8px 0 10px; +} + +.__PFX__-fA-sitemap a{ + margin:0 6px; + color:var(--text-color); + font-size:12px; +} + +.__PFX__-fA-copy{ + margin-top:6px; + color:var(--text-muted-color); + line-height:1.65; +} + +.__PFX__-fA-desc{ + margin-bottom:6px; +} + +.__PFX__-fA-email{ + margin-bottom:4px; + color:var(--text-color); + font-size:12px; +} + +.__PFX__-fA-cr{ + font-size:12px; + opacity:.85; +} diff --git a/code/public/static/css/modules/footer/foot_b.css b/code/public/static/css/modules/footer/foot_b.css new file mode 100644 index 0000000..e8cf63b --- /dev/null +++ b/code/public/static/css/modules/footer/foot_b.css @@ -0,0 +1,40 @@ +.__PFX__-fB-wrap{ + padding:20px 14px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:13px; +} + +.__PFX__-fB-main{ + display:flex; + flex-wrap:wrap; + gap:16px; +} + +.__PFX__-fB-left, +.__PFX__-fB-right{ + flex:1 1 260px; +} + +.__PFX__-fB-desc{ + margin-bottom:6px; + color:var(--text-muted-color); +} + +.__PFX__-fB-email{ + margin-bottom:4px; +} + +.__PFX__-fB-cr{ + font-size:12px; + opacity:.85; +} + +.__PFX__-fB-sitemap a{ + margin-right:8px; + font-size:12px; +} + +.__PFX__-fB-links{ + margin-top:6px; +} diff --git a/code/public/static/css/modules/footer/foot_c.css b/code/public/static/css/modules/footer/foot_c.css new file mode 100644 index 0000000..6a98555 --- /dev/null +++ b/code/public/static/css/modules/footer/foot_c.css @@ -0,0 +1,20 @@ +.__PFX__-fC-wrap{ + padding:20px 12px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + display:grid; + gap:12px; + font-size:13px; +} + +.__PFX__-fC-block{ + padding:12px; + background:var(--bg-soft-color); + border:1px solid var(--border-color); + border-radius:10px; +} + +.__PFX__-fC-block nav a{ + margin-right:8px; + font-size:12px; +} diff --git a/code/public/static/css/modules/footer/foot_d.css b/code/public/static/css/modules/footer/foot_d.css new file mode 100644 index 0000000..bff9b34 --- /dev/null +++ b/code/public/static/css/modules/footer/foot_d.css @@ -0,0 +1,7 @@ +.__PFX__-fD-wrap{ + padding:12px 10px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:12px; + text-align:center; +} diff --git a/code/public/static/css/modules/footer/foot_e.css b/code/public/static/css/modules/footer/foot_e.css new file mode 100644 index 0000000..6bffa42 --- /dev/null +++ b/code/public/static/css/modules/footer/foot_e.css @@ -0,0 +1,21 @@ +.__PFX__-fE-wrap{ + padding:20px 14px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:13px; + text-align:center; +} + +.__PFX__-fE-title{ + font-weight:600; + margin-bottom:6px; +} + +.__PFX__-fE-desc{ + margin-bottom:6px; + color:var(--text-muted-color); +} + +.__PFX__-fE-email{ + margin-bottom:6px; +} diff --git a/code/public/static/css/modules/footer/footer_01.css b/code/public/static/css/modules/footer/footer_01.css new file mode 100644 index 0000000..acef7da --- /dev/null +++ b/code/public/static/css/modules/footer/footer_01.css @@ -0,0 +1,50 @@ +/* footer_01.css */ +.__PFX__-f01-a-w9if7-wrap,.__PFX__-f01-a-w9if7-shell,.__PFX__-f01-a-w9if7-mini,.__PFX__-f01-a-w9if7-info{ + padding:12px 16px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f01-a-w9if7-map a{ + display:inline-block; + margin:0 6px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f01-a-w9if7-links a{ + display:inline-block; + margin:0 10px 8px 0; + color:var(--primary-color); +} +.__PFX__-f01-a-w9if7-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f01-a-w9if7-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:7px 0; +} +.__PFX__-f01-a-w9if7-email{ + color:var(--text-color); + margin:8px 0; +} +.__PFX__-f01-a-w9if7-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:7px; +} +.__PFX__-f01-a-w9if7-grid{display:flex;flex-wrap:wrap;gap:17px;align-items:flex-start;} +.__PFX__-f01-a-w9if7-left,.__PFX__-f01-a-w9if7-right{flex:1 1 264px;} +.__PFX__-f01-a-w9if7-card{ + padding:10px 12px; + border:1px solid var(--border-color); + border-radius:8px; + background:var(--bg-color); + margin-bottom:14px; +} +.__PFX__-f01-a-w9if7-addr{font-style:normal;display:block;margin-bottom:10px;} +.__PFX__-f01-a-w9if7-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_02.css b/code/public/static/css/modules/footer/footer_02.css new file mode 100644 index 0000000..a06ef16 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_02.css @@ -0,0 +1,48 @@ +/* footer_02.css */ +.__PFX__-f02-b-qjynf-wrap,.__PFX__-f02-b-qjynf-shell,.__PFX__-f02-b-qjynf-mini,.__PFX__-f02-b-qjynf-info{ + padding:15px 10px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f02-b-qjynf-map a{ + display:block; + margin:0 6px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f02-b-qjynf-links a{ + display:block; + margin:0 0 10px 0; + color:var(--primary-color); +} +.__PFX__-f02-b-qjynf-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f02-b-qjynf-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f02-b-qjynf-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f02-b-qjynf-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:8px; +} +.__PFX__-f02-b-qjynf-card{ + padding:13px 14px; + border:1px solid var(--border-color); + border-radius:12px; + background:var(--bg-color); + margin-bottom:11px; +} +.__PFX__-f02-b-qjynf-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f02-b-qjynf-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_03.css b/code/public/static/css/modules/footer/footer_03.css new file mode 100644 index 0000000..6904965 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_03.css @@ -0,0 +1,48 @@ +/* footer_03.css */ +.__PFX__-f03-c-41n16-wrap,.__PFX__-f03-c-41n16-shell,.__PFX__-f03-c-41n16-mini,.__PFX__-f03-c-41n16-info{ + padding:16px 12px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f03-c-41n16-map a{ + display:inline-block; + margin:0 10px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f03-c-41n16-links a{ + display:inline-block; + margin:0 6px 8px 0; + color:var(--primary-color); +} +.__PFX__-f03-c-41n16-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f03-c-41n16-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f03-c-41n16-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f03-c-41n16-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:9px; +} +.__PFX__-f03-c-41n16-card{ + padding:12px 11px; + border:1px solid var(--border-color); + border-radius:8px; + background:var(--bg-color); + margin-bottom:13px; +} +.__PFX__-f03-c-41n16-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f03-c-41n16-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_04.css b/code/public/static/css/modules/footer/footer_04.css new file mode 100644 index 0000000..ce5b7ec --- /dev/null +++ b/code/public/static/css/modules/footer/footer_04.css @@ -0,0 +1,41 @@ +/* footer_04.css */ +.__PFX__-f04-d-c60lx-wrap,.__PFX__-f04-d-c60lx-shell,.__PFX__-f04-d-c60lx-mini,.__PFX__-f04-d-c60lx-info{ + padding:18px 13px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f04-d-c60lx-map a{ + display:inline-block; + margin:0 6px 4px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f04-d-c60lx-links a{ + display:inline-block; + margin:0 8px 4px 0; + color:var(--primary-color); +} +.__PFX__-f04-d-c60lx-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f04-d-c60lx-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f04-d-c60lx-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f04-d-c60lx-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.75; + margin-top:8px; +} +.__PFX__-f04-d-c60lx-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f04-d-c60lx-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_05.css b/code/public/static/css/modules/footer/footer_05.css new file mode 100644 index 0000000..0c7bf8a --- /dev/null +++ b/code/public/static/css/modules/footer/footer_05.css @@ -0,0 +1,43 @@ +/* footer_05.css */ +.__PFX__-f05-e-ayc1q-wrap,.__PFX__-f05-e-ayc1q-shell,.__PFX__-f05-e-ayc1q-mini,.__PFX__-f05-e-ayc1q-info{ + padding:15px 16px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f05-e-ayc1q-map a{ + display:inline-block; + margin:0 6px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f05-e-ayc1q-links a{ + display:inline-block; + margin:0 12px 5px 0; + color:var(--primary-color); +} +.__PFX__-f05-e-ayc1q-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f05-e-ayc1q-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f05-e-ayc1q-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f05-e-ayc1q-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:8px; +} +.__PFX__-f05-e-ayc1q-grid{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start;} +.__PFX__-f05-e-ayc1q-left,.__PFX__-f05-e-ayc1q-right{flex:1 1 243px;} +.__PFX__-f05-e-ayc1q-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f05-e-ayc1q-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_06.css b/code/public/static/css/modules/footer/footer_06.css new file mode 100644 index 0000000..dc9e0d8 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_06.css @@ -0,0 +1,43 @@ +/* footer_06.css */ +.__PFX__-f06-a-oxm31-wrap,.__PFX__-f06-a-oxm31-shell,.__PFX__-f06-a-oxm31-mini,.__PFX__-f06-a-oxm31-info{ + padding:13px 16px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f06-a-oxm31-map a{ + display:inline-block; + margin:0 10px 4px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f06-a-oxm31-links a{ + display:inline-block; + margin:0 12px 6px 0; + color:var(--primary-color); +} +.__PFX__-f06-a-oxm31-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f06-a-oxm31-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f06-a-oxm31-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f06-a-oxm31-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:8px; +} +.__PFX__-f06-a-oxm31-grid{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start;} +.__PFX__-f06-a-oxm31-left,.__PFX__-f06-a-oxm31-right{flex:1 1 269px;} +.__PFX__-f06-a-oxm31-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f06-a-oxm31-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_07.css b/code/public/static/css/modules/footer/footer_07.css new file mode 100644 index 0000000..83b0ce0 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_07.css @@ -0,0 +1,48 @@ +/* footer_07.css */ +.__PFX__-f07-b-xwk0s-wrap,.__PFX__-f07-b-xwk0s-shell,.__PFX__-f07-b-xwk0s-mini,.__PFX__-f07-b-xwk0s-info{ + padding:20px 15px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f07-b-xwk0s-map a{ + display:block; + margin:0 10px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f07-b-xwk0s-links a{ + display:block; + margin:0 0 10px 0; + color:var(--primary-color); +} +.__PFX__-f07-b-xwk0s-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f07-b-xwk0s-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f07-b-xwk0s-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f07-b-xwk0s-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:10px; +} +.__PFX__-f07-b-xwk0s-card{ + padding:14px 10px; + border:1px solid var(--border-color); + border-radius:8px; + background:var(--bg-color); + margin-bottom:11px; +} +.__PFX__-f07-b-xwk0s-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f07-b-xwk0s-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_08.css b/code/public/static/css/modules/footer/footer_08.css new file mode 100644 index 0000000..215847c --- /dev/null +++ b/code/public/static/css/modules/footer/footer_08.css @@ -0,0 +1,50 @@ +/* footer_08.css */ +.__PFX__-f08-c-59sd9-wrap,.__PFX__-f08-c-59sd9-shell,.__PFX__-f08-c-59sd9-mini,.__PFX__-f08-c-59sd9-info{ + padding:14px 14px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f08-c-59sd9-map a{ + display:inline-block; + margin:0 9px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f08-c-59sd9-links a{ + display:inline-block; + margin:0 8px 8px 0; + color:var(--primary-color); +} +.__PFX__-f08-c-59sd9-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f08-c-59sd9-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f08-c-59sd9-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f08-c-59sd9-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:6px; +} +.__PFX__-f08-c-59sd9-grid{display:flex;flex-wrap:wrap;gap:13px;align-items:flex-start;} +.__PFX__-f08-c-59sd9-left,.__PFX__-f08-c-59sd9-right{flex:1 1 316px;} +.__PFX__-f08-c-59sd9-card{ + padding:14px 11px; + border:1px solid var(--border-color); + border-radius:12px; + background:var(--bg-color); + margin-bottom:11px; +} +.__PFX__-f08-c-59sd9-addr{font-style:normal;display:block;margin-bottom:10px;} +.__PFX__-f08-c-59sd9-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_09.css b/code/public/static/css/modules/footer/footer_09.css new file mode 100644 index 0000000..f59cdb3 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_09.css @@ -0,0 +1,48 @@ +/* footer_09.css */ +.__PFX__-f09-d-gc625-wrap,.__PFX__-f09-d-gc625-shell,.__PFX__-f09-d-gc625-mini,.__PFX__-f09-d-gc625-info{ + padding:20px 11px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f09-d-gc625-map a{ + display:inline-block; + margin:0 9px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f09-d-gc625-links a{ + display:inline-block; + margin:0 6px 5px 0; + color:var(--primary-color); +} +.__PFX__-f09-d-gc625-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f09-d-gc625-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f09-d-gc625-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f09-d-gc625-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:9px; +} +.__PFX__-f09-d-gc625-card{ + padding:12px 10px; + border:1px solid var(--border-color); + border-radius:12px; + background:var(--bg-color); + margin-bottom:14px; +} +.__PFX__-f09-d-gc625-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f09-d-gc625-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_10.css b/code/public/static/css/modules/footer/footer_10.css new file mode 100644 index 0000000..7709bd4 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_10.css @@ -0,0 +1,41 @@ +/* footer_10.css */ +.__PFX__-f10-e-k85lo-wrap,.__PFX__-f10-e-k85lo-shell,.__PFX__-f10-e-k85lo-mini,.__PFX__-f10-e-k85lo-info{ + padding:20px 15px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f10-e-k85lo-map a{ + display:inline-block; + margin:0 10px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f10-e-k85lo-links a{ + display:block; + margin:0 0 6px 0; + color:var(--primary-color); +} +.__PFX__-f10-e-k85lo-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f10-e-k85lo-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f10-e-k85lo-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f10-e-k85lo-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:9px; +} +.__PFX__-f10-e-k85lo-addr{font-style:normal;display:block;margin-bottom:10px;} +.__PFX__-f10-e-k85lo-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_100.css b/code/public/static/css/modules/footer/footer_100.css new file mode 100644 index 0000000..0b99df2 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_100.css @@ -0,0 +1,43 @@ +/* footer_100.css */ +.__PFX__-f100-e-u00sr-wrap,.__PFX__-f100-e-u00sr-shell,.__PFX__-f100-e-u00sr-mini,.__PFX__-f100-e-u00sr-info{ + padding:14px 11px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f100-e-u00sr-map a{ + display:inline-block; + margin:0 7px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f100-e-u00sr-links a{ + display:inline-block; + margin:0 8px 6px 0; + color:var(--primary-color); +} +.__PFX__-f100-e-u00sr-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f100-e-u00sr-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f100-e-u00sr-email{ + color:var(--text-color); + margin:8px 0; +} +.__PFX__-f100-e-u00sr-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.75; + margin-top:9px; +} +.__PFX__-f100-e-u00sr-grid{display:flex;flex-wrap:wrap;gap:17px;align-items:flex-start;} +.__PFX__-f100-e-u00sr-left,.__PFX__-f100-e-u00sr-right{flex:1 1 267px;} +.__PFX__-f100-e-u00sr-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f100-e-u00sr-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_11.css b/code/public/static/css/modules/footer/footer_11.css new file mode 100644 index 0000000..eda8772 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_11.css @@ -0,0 +1,48 @@ +/* footer_11.css */ +.__PFX__-f11-a-0bn0c-wrap,.__PFX__-f11-a-0bn0c-shell,.__PFX__-f11-a-0bn0c-mini,.__PFX__-f11-a-0bn0c-info{ + padding:19px 16px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f11-a-0bn0c-map a{ + display:block; + margin:0 6px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f11-a-0bn0c-links a{ + display:block; + margin:0 0 6px 0; + color:var(--primary-color); +} +.__PFX__-f11-a-0bn0c-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f11-a-0bn0c-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:7px 0; +} +.__PFX__-f11-a-0bn0c-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f11-a-0bn0c-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:10px; +} +.__PFX__-f11-a-0bn0c-card{ + padding:10px 14px; + border:1px solid var(--border-color); + border-radius:0px; + background:var(--bg-color); + margin-bottom:11px; +} +.__PFX__-f11-a-0bn0c-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f11-a-0bn0c-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_12.css b/code/public/static/css/modules/footer/footer_12.css new file mode 100644 index 0000000..05db0e4 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_12.css @@ -0,0 +1,43 @@ +/* footer_12.css */ +.__PFX__-f12-b-ly8o4-wrap,.__PFX__-f12-b-ly8o4-shell,.__PFX__-f12-b-ly8o4-mini,.__PFX__-f12-b-ly8o4-info{ + padding:14px 11px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f12-b-ly8o4-map a{ + display:inline-block; + margin:0 9px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f12-b-ly8o4-links a{ + display:inline-block; + margin:0 9px 5px 0; + color:var(--primary-color); +} +.__PFX__-f12-b-ly8o4-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f12-b-ly8o4-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f12-b-ly8o4-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f12-b-ly8o4-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:9px; +} +.__PFX__-f12-b-ly8o4-grid{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start;} +.__PFX__-f12-b-ly8o4-left,.__PFX__-f12-b-ly8o4-right{flex:1 1 284px;} +.__PFX__-f12-b-ly8o4-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f12-b-ly8o4-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_13.css b/code/public/static/css/modules/footer/footer_13.css new file mode 100644 index 0000000..b5d6c74 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_13.css @@ -0,0 +1,41 @@ +/* footer_13.css */ +.__PFX__-f13-c-8qj13-wrap,.__PFX__-f13-c-8qj13-shell,.__PFX__-f13-c-8qj13-mini,.__PFX__-f13-c-8qj13-info{ + padding:16px 12px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f13-c-8qj13-map a{ + display:inline-block; + margin:0 7px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f13-c-8qj13-links a{ + display:inline-block; + margin:0 6px 7px 0; + color:var(--primary-color); +} +.__PFX__-f13-c-8qj13-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f13-c-8qj13-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f13-c-8qj13-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f13-c-8qj13-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:9px; +} +.__PFX__-f13-c-8qj13-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f13-c-8qj13-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_14.css b/code/public/static/css/modules/footer/footer_14.css new file mode 100644 index 0000000..6acdaad --- /dev/null +++ b/code/public/static/css/modules/footer/footer_14.css @@ -0,0 +1,48 @@ +/* footer_14.css */ +.__PFX__-f14-d-0sd1h-wrap,.__PFX__-f14-d-0sd1h-shell,.__PFX__-f14-d-0sd1h-mini,.__PFX__-f14-d-0sd1h-info{ + padding:12px 14px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f14-d-0sd1h-map a{ + display:block; + margin:0 10px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f14-d-0sd1h-links a{ + display:block; + margin:0 0 8px 0; + color:var(--primary-color); +} +.__PFX__-f14-d-0sd1h-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f14-d-0sd1h-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f14-d-0sd1h-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f14-d-0sd1h-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.75; + margin-top:6px; +} +.__PFX__-f14-d-0sd1h-card{ + padding:14px 12px; + border:1px solid var(--border-color); + border-radius:8px; + background:var(--bg-color); + margin-bottom:12px; +} +.__PFX__-f14-d-0sd1h-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f14-d-0sd1h-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_15.css b/code/public/static/css/modules/footer/footer_15.css new file mode 100644 index 0000000..b7566f7 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_15.css @@ -0,0 +1,48 @@ +/* footer_15.css */ +.__PFX__-f15-e-hp3a8-wrap,.__PFX__-f15-e-hp3a8-shell,.__PFX__-f15-e-hp3a8-mini,.__PFX__-f15-e-hp3a8-info{ + padding:18px 15px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f15-e-hp3a8-map a{ + display:inline-block; + margin:0 7px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f15-e-hp3a8-links a{ + display:inline-block; + margin:0 7px 8px 0; + color:var(--primary-color); +} +.__PFX__-f15-e-hp3a8-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f15-e-hp3a8-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f15-e-hp3a8-email{ + color:var(--text-color); + margin:8px 0; +} +.__PFX__-f15-e-hp3a8-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:10px; +} +.__PFX__-f15-e-hp3a8-card{ + padding:11px 11px; + border:1px solid var(--border-color); + border-radius:12px; + background:var(--bg-color); + margin-bottom:13px; +} +.__PFX__-f15-e-hp3a8-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f15-e-hp3a8-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_16.css b/code/public/static/css/modules/footer/footer_16.css new file mode 100644 index 0000000..72d485a --- /dev/null +++ b/code/public/static/css/modules/footer/footer_16.css @@ -0,0 +1,50 @@ +/* footer_16.css */ +.__PFX__-f16-a-ieco1-wrap,.__PFX__-f16-a-ieco1-shell,.__PFX__-f16-a-ieco1-mini,.__PFX__-f16-a-ieco1-info{ + padding:17px 15px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f16-a-ieco1-map a{ + display:inline-block; + margin:0 9px 4px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f16-a-ieco1-links a{ + display:inline-block; + margin:0 9px 7px 0; + color:var(--primary-color); +} +.__PFX__-f16-a-ieco1-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f16-a-ieco1-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f16-a-ieco1-email{ + color:var(--text-color); + margin:8px 0; +} +.__PFX__-f16-a-ieco1-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:7px; +} +.__PFX__-f16-a-ieco1-grid{display:flex;flex-wrap:wrap;gap:15px;align-items:flex-start;} +.__PFX__-f16-a-ieco1-left,.__PFX__-f16-a-ieco1-right{flex:1 1 318px;} +.__PFX__-f16-a-ieco1-card{ + padding:10px 12px; + border:1px solid var(--border-color); + border-radius:8px; + background:var(--bg-color); + margin-bottom:11px; +} +.__PFX__-f16-a-ieco1-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f16-a-ieco1-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_17.css b/code/public/static/css/modules/footer/footer_17.css new file mode 100644 index 0000000..3dcd944 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_17.css @@ -0,0 +1,48 @@ +/* footer_17.css */ +.__PFX__-f17-b-jft9d-wrap,.__PFX__-f17-b-jft9d-shell,.__PFX__-f17-b-jft9d-mini,.__PFX__-f17-b-jft9d-info{ + padding:12px 14px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f17-b-jft9d-map a{ + display:block; + margin:0 6px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f17-b-jft9d-links a{ + display:block; + margin:0 0 7px 0; + color:var(--primary-color); +} +.__PFX__-f17-b-jft9d-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f17-b-jft9d-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f17-b-jft9d-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f17-b-jft9d-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:10px; +} +.__PFX__-f17-b-jft9d-card{ + padding:14px 14px; + border:1px solid var(--border-color); + border-radius:8px; + background:var(--bg-color); + margin-bottom:12px; +} +.__PFX__-f17-b-jft9d-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f17-b-jft9d-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_18.css b/code/public/static/css/modules/footer/footer_18.css new file mode 100644 index 0000000..f0402a3 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_18.css @@ -0,0 +1,48 @@ +/* footer_18.css */ +.__PFX__-f18-c-oblvs-wrap,.__PFX__-f18-c-oblvs-shell,.__PFX__-f18-c-oblvs-mini,.__PFX__-f18-c-oblvs-info{ + padding:18px 11px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f18-c-oblvs-map a{ + display:inline-block; + margin:0 8px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f18-c-oblvs-links a{ + display:inline-block; + margin:0 8px 5px 0; + color:var(--primary-color); +} +.__PFX__-f18-c-oblvs-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f18-c-oblvs-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f18-c-oblvs-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f18-c-oblvs-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:6px; +} +.__PFX__-f18-c-oblvs-card{ + padding:12px 14px; + border:1px solid var(--border-color); + border-radius:10px; + background:var(--bg-color); + margin-bottom:13px; +} +.__PFX__-f18-c-oblvs-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f18-c-oblvs-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_19.css b/code/public/static/css/modules/footer/footer_19.css new file mode 100644 index 0000000..c2b2aee --- /dev/null +++ b/code/public/static/css/modules/footer/footer_19.css @@ -0,0 +1,48 @@ +/* footer_19.css */ +.__PFX__-f19-d-gm290-wrap,.__PFX__-f19-d-gm290-shell,.__PFX__-f19-d-gm290-mini,.__PFX__-f19-d-gm290-info{ + padding:17px 14px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f19-d-gm290-map a{ + display:inline-block; + margin:0 9px 4px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f19-d-gm290-links a{ + display:inline-block; + margin:0 10px 6px 0; + color:var(--primary-color); +} +.__PFX__-f19-d-gm290-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f19-d-gm290-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:7px 0; +} +.__PFX__-f19-d-gm290-email{ + color:var(--text-color); + margin:8px 0; +} +.__PFX__-f19-d-gm290-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:10px; +} +.__PFX__-f19-d-gm290-card{ + padding:10px 13px; + border:1px solid var(--border-color); + border-radius:8px; + background:var(--bg-color); + margin-bottom:11px; +} +.__PFX__-f19-d-gm290-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f19-d-gm290-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_20.css b/code/public/static/css/modules/footer/footer_20.css new file mode 100644 index 0000000..f49ef62 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_20.css @@ -0,0 +1,43 @@ +/* footer_20.css */ +.__PFX__-f20-e-sm9yp-wrap,.__PFX__-f20-e-sm9yp-shell,.__PFX__-f20-e-sm9yp-mini,.__PFX__-f20-e-sm9yp-info{ + padding:19px 12px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f20-e-sm9yp-map a{ + display:inline-block; + margin:0 8px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f20-e-sm9yp-links a{ + display:inline-block; + margin:0 11px 5px 0; + color:var(--primary-color); +} +.__PFX__-f20-e-sm9yp-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f20-e-sm9yp-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f20-e-sm9yp-email{ + color:var(--text-color); + margin:8px 0; +} +.__PFX__-f20-e-sm9yp-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:10px; +} +.__PFX__-f20-e-sm9yp-grid{display:flex;flex-wrap:wrap;gap:17px;align-items:flex-start;} +.__PFX__-f20-e-sm9yp-left,.__PFX__-f20-e-sm9yp-right{flex:1 1 270px;} +.__PFX__-f20-e-sm9yp-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f20-e-sm9yp-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_21.css b/code/public/static/css/modules/footer/footer_21.css new file mode 100644 index 0000000..f009443 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_21.css @@ -0,0 +1,50 @@ +/* footer_21.css */ +.__PFX__-f21-a-l6lch-wrap,.__PFX__-f21-a-l6lch-shell,.__PFX__-f21-a-l6lch-mini,.__PFX__-f21-a-l6lch-info{ + padding:17px 16px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f21-a-l6lch-map a{ + display:inline-block; + margin:0 10px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f21-a-l6lch-links a{ + display:inline-block; + margin:0 9px 6px 0; + color:var(--primary-color); +} +.__PFX__-f21-a-l6lch-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f21-a-l6lch-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f21-a-l6lch-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f21-a-l6lch-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:6px; +} +.__PFX__-f21-a-l6lch-grid{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start;} +.__PFX__-f21-a-l6lch-left,.__PFX__-f21-a-l6lch-right{flex:1 1 297px;} +.__PFX__-f21-a-l6lch-card{ + padding:12px 11px; + border:1px solid var(--border-color); + border-radius:10px; + background:var(--bg-color); + margin-bottom:12px; +} +.__PFX__-f21-a-l6lch-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f21-a-l6lch-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_22.css b/code/public/static/css/modules/footer/footer_22.css new file mode 100644 index 0000000..b638465 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_22.css @@ -0,0 +1,48 @@ +/* footer_22.css */ +.__PFX__-f22-b-w8nwq-wrap,.__PFX__-f22-b-w8nwq-shell,.__PFX__-f22-b-w8nwq-mini,.__PFX__-f22-b-w8nwq-info{ + padding:12px 14px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f22-b-w8nwq-map a{ + display:inline-block; + margin:0 8px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f22-b-w8nwq-links a{ + display:inline-block; + margin:0 10px 6px 0; + color:var(--primary-color); +} +.__PFX__-f22-b-w8nwq-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f22-b-w8nwq-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f22-b-w8nwq-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f22-b-w8nwq-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:10px; +} +.__PFX__-f22-b-w8nwq-card{ + padding:13px 10px; + border:1px solid var(--border-color); + border-radius:8px; + background:var(--bg-color); + margin-bottom:14px; +} +.__PFX__-f22-b-w8nwq-addr{font-style:normal;display:block;margin-bottom:10px;} +.__PFX__-f22-b-w8nwq-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_23.css b/code/public/static/css/modules/footer/footer_23.css new file mode 100644 index 0000000..57125fa --- /dev/null +++ b/code/public/static/css/modules/footer/footer_23.css @@ -0,0 +1,48 @@ +/* footer_23.css */ +.__PFX__-f23-c-jufky-wrap,.__PFX__-f23-c-jufky-shell,.__PFX__-f23-c-jufky-mini,.__PFX__-f23-c-jufky-info{ + padding:14px 13px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f23-c-jufky-map a{ + display:inline-block; + margin:0 7px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f23-c-jufky-links a{ + display:block; + margin:0 0 9px 0; + color:var(--primary-color); +} +.__PFX__-f23-c-jufky-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f23-c-jufky-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f23-c-jufky-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f23-c-jufky-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:10px; +} +.__PFX__-f23-c-jufky-card{ + padding:11px 14px; + border:1px solid var(--border-color); + border-radius:8px; + background:var(--bg-color); + margin-bottom:14px; +} +.__PFX__-f23-c-jufky-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f23-c-jufky-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_24.css b/code/public/static/css/modules/footer/footer_24.css new file mode 100644 index 0000000..08246eb --- /dev/null +++ b/code/public/static/css/modules/footer/footer_24.css @@ -0,0 +1,41 @@ +/* footer_24.css */ +.__PFX__-f24-d-v0ifo-wrap,.__PFX__-f24-d-v0ifo-shell,.__PFX__-f24-d-v0ifo-mini,.__PFX__-f24-d-v0ifo-info{ + padding:13px 13px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f24-d-v0ifo-map a{ + display:inline-block; + margin:0 7px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f24-d-v0ifo-links a{ + display:inline-block; + margin:0 9px 5px 0; + color:var(--primary-color); +} +.__PFX__-f24-d-v0ifo-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f24-d-v0ifo-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f24-d-v0ifo-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f24-d-v0ifo-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:10px; +} +.__PFX__-f24-d-v0ifo-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f24-d-v0ifo-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_25.css b/code/public/static/css/modules/footer/footer_25.css new file mode 100644 index 0000000..f6abd1d --- /dev/null +++ b/code/public/static/css/modules/footer/footer_25.css @@ -0,0 +1,48 @@ +/* footer_25.css */ +.__PFX__-f25-e-3qv6u-wrap,.__PFX__-f25-e-3qv6u-shell,.__PFX__-f25-e-3qv6u-mini,.__PFX__-f25-e-3qv6u-info{ + padding:14px 13px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f25-e-3qv6u-map a{ + display:inline-block; + margin:0 8px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f25-e-3qv6u-links a{ + display:inline-block; + margin:0 9px 6px 0; + color:var(--primary-color); +} +.__PFX__-f25-e-3qv6u-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f25-e-3qv6u-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f25-e-3qv6u-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f25-e-3qv6u-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:10px; +} +.__PFX__-f25-e-3qv6u-card{ + padding:10px 10px; + border:1px solid var(--border-color); + border-radius:0px; + background:var(--bg-color); + margin-bottom:12px; +} +.__PFX__-f25-e-3qv6u-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f25-e-3qv6u-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_26.css b/code/public/static/css/modules/footer/footer_26.css new file mode 100644 index 0000000..ae1d915 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_26.css @@ -0,0 +1,50 @@ +/* footer_26.css */ +.__PFX__-f26-a-w3403-wrap,.__PFX__-f26-a-w3403-shell,.__PFX__-f26-a-w3403-mini,.__PFX__-f26-a-w3403-info{ + padding:18px 12px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f26-a-w3403-map a{ + display:inline-block; + margin:0 6px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f26-a-w3403-links a{ + display:inline-block; + margin:0 9px 4px 0; + color:var(--primary-color); +} +.__PFX__-f26-a-w3403-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f26-a-w3403-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f26-a-w3403-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f26-a-w3403-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:10px; +} +.__PFX__-f26-a-w3403-grid{display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start;} +.__PFX__-f26-a-w3403-left,.__PFX__-f26-a-w3403-right{flex:1 1 266px;} +.__PFX__-f26-a-w3403-card{ + padding:10px 12px; + border:1px solid var(--border-color); + border-radius:10px; + background:var(--bg-color); + margin-bottom:14px; +} +.__PFX__-f26-a-w3403-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f26-a-w3403-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_27.css b/code/public/static/css/modules/footer/footer_27.css new file mode 100644 index 0000000..6c9be51 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_27.css @@ -0,0 +1,41 @@ +/* footer_27.css */ +.__PFX__-f27-b-lfuwy-wrap,.__PFX__-f27-b-lfuwy-shell,.__PFX__-f27-b-lfuwy-mini,.__PFX__-f27-b-lfuwy-info{ + padding:13px 14px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f27-b-lfuwy-map a{ + display:inline-block; + margin:0 6px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f27-b-lfuwy-links a{ + display:block; + margin:0 0 10px 0; + color:var(--primary-color); +} +.__PFX__-f27-b-lfuwy-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f27-b-lfuwy-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f27-b-lfuwy-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f27-b-lfuwy-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:6px; +} +.__PFX__-f27-b-lfuwy-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f27-b-lfuwy-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_28.css b/code/public/static/css/modules/footer/footer_28.css new file mode 100644 index 0000000..4f601d6 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_28.css @@ -0,0 +1,41 @@ +/* footer_28.css */ +.__PFX__-f28-c-b4ppi-wrap,.__PFX__-f28-c-b4ppi-shell,.__PFX__-f28-c-b4ppi-mini,.__PFX__-f28-c-b4ppi-info{ + padding:17px 13px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f28-c-b4ppi-map a{ + display:inline-block; + margin:0 8px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f28-c-b4ppi-links a{ + display:inline-block; + margin:0 6px 8px 0; + color:var(--primary-color); +} +.__PFX__-f28-c-b4ppi-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f28-c-b4ppi-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f28-c-b4ppi-email{ + color:var(--text-color); + margin:8px 0; +} +.__PFX__-f28-c-b4ppi-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:10px; +} +.__PFX__-f28-c-b4ppi-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f28-c-b4ppi-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_29.css b/code/public/static/css/modules/footer/footer_29.css new file mode 100644 index 0000000..ec97446 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_29.css @@ -0,0 +1,41 @@ +/* footer_29.css */ +.__PFX__-f29-d-ke11f-wrap,.__PFX__-f29-d-ke11f-shell,.__PFX__-f29-d-ke11f-mini,.__PFX__-f29-d-ke11f-info{ + padding:13px 11px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f29-d-ke11f-map a{ + display:block; + margin:0 7px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f29-d-ke11f-links a{ + display:block; + margin:0 0 7px 0; + color:var(--primary-color); +} +.__PFX__-f29-d-ke11f-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f29-d-ke11f-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f29-d-ke11f-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f29-d-ke11f-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:9px; +} +.__PFX__-f29-d-ke11f-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f29-d-ke11f-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_30.css b/code/public/static/css/modules/footer/footer_30.css new file mode 100644 index 0000000..45271b5 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_30.css @@ -0,0 +1,43 @@ +/* footer_30.css */ +.__PFX__-f30-e-3pk2m-wrap,.__PFX__-f30-e-3pk2m-shell,.__PFX__-f30-e-3pk2m-mini,.__PFX__-f30-e-3pk2m-info{ + padding:12px 16px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f30-e-3pk2m-map a{ + display:inline-block; + margin:0 7px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f30-e-3pk2m-links a{ + display:inline-block; + margin:0 10px 6px 0; + color:var(--primary-color); +} +.__PFX__-f30-e-3pk2m-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f30-e-3pk2m-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:7px 0; +} +.__PFX__-f30-e-3pk2m-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f30-e-3pk2m-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.75; + margin-top:8px; +} +.__PFX__-f30-e-3pk2m-grid{display:flex;flex-wrap:wrap;gap:17px;align-items:flex-start;} +.__PFX__-f30-e-3pk2m-left,.__PFX__-f30-e-3pk2m-right{flex:1 1 302px;} +.__PFX__-f30-e-3pk2m-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f30-e-3pk2m-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_31.css b/code/public/static/css/modules/footer/footer_31.css new file mode 100644 index 0000000..7b7d8cd --- /dev/null +++ b/code/public/static/css/modules/footer/footer_31.css @@ -0,0 +1,41 @@ +/* footer_31.css */ +.__PFX__-f31-a-sl6mj-wrap,.__PFX__-f31-a-sl6mj-shell,.__PFX__-f31-a-sl6mj-mini,.__PFX__-f31-a-sl6mj-info{ + padding:16px 16px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f31-a-sl6mj-map a{ + display:inline-block; + margin:0 10px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f31-a-sl6mj-links a{ + display:inline-block; + margin:0 10px 7px 0; + color:var(--primary-color); +} +.__PFX__-f31-a-sl6mj-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f31-a-sl6mj-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f31-a-sl6mj-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f31-a-sl6mj-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:6px; +} +.__PFX__-f31-a-sl6mj-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f31-a-sl6mj-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_32.css b/code/public/static/css/modules/footer/footer_32.css new file mode 100644 index 0000000..fe599f9 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_32.css @@ -0,0 +1,41 @@ +/* footer_32.css */ +.__PFX__-f32-b-da2ra-wrap,.__PFX__-f32-b-da2ra-shell,.__PFX__-f32-b-da2ra-mini,.__PFX__-f32-b-da2ra-info{ + padding:17px 11px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f32-b-da2ra-map a{ + display:inline-block; + margin:0 10px 4px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f32-b-da2ra-links a{ + display:inline-block; + margin:0 8px 7px 0; + color:var(--primary-color); +} +.__PFX__-f32-b-da2ra-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f32-b-da2ra-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:7px 0; +} +.__PFX__-f32-b-da2ra-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f32-b-da2ra-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:8px; +} +.__PFX__-f32-b-da2ra-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f32-b-da2ra-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_33.css b/code/public/static/css/modules/footer/footer_33.css new file mode 100644 index 0000000..084ae69 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_33.css @@ -0,0 +1,48 @@ +/* footer_33.css */ +.__PFX__-f33-c-jw7yq-wrap,.__PFX__-f33-c-jw7yq-shell,.__PFX__-f33-c-jw7yq-mini,.__PFX__-f33-c-jw7yq-info{ + padding:20px 10px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f33-c-jw7yq-map a{ + display:inline-block; + margin:0 10px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f33-c-jw7yq-links a{ + display:block; + margin:0 0 8px 0; + color:var(--primary-color); +} +.__PFX__-f33-c-jw7yq-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f33-c-jw7yq-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f33-c-jw7yq-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f33-c-jw7yq-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:10px; +} +.__PFX__-f33-c-jw7yq-card{ + padding:12px 11px; + border:1px solid var(--border-color); + border-radius:10px; + background:var(--bg-color); + margin-bottom:11px; +} +.__PFX__-f33-c-jw7yq-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f33-c-jw7yq-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_34.css b/code/public/static/css/modules/footer/footer_34.css new file mode 100644 index 0000000..44c2254 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_34.css @@ -0,0 +1,41 @@ +/* footer_34.css */ +.__PFX__-f34-d-uso4g-wrap,.__PFX__-f34-d-uso4g-shell,.__PFX__-f34-d-uso4g-mini,.__PFX__-f34-d-uso4g-info{ + padding:15px 13px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f34-d-uso4g-map a{ + display:inline-block; + margin:0 6px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f34-d-uso4g-links a{ + display:block; + margin:0 0 7px 0; + color:var(--primary-color); +} +.__PFX__-f34-d-uso4g-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f34-d-uso4g-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f34-d-uso4g-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f34-d-uso4g-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:10px; +} +.__PFX__-f34-d-uso4g-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f34-d-uso4g-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_35.css b/code/public/static/css/modules/footer/footer_35.css new file mode 100644 index 0000000..c8083e4 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_35.css @@ -0,0 +1,41 @@ +/* footer_35.css */ +.__PFX__-f35-e-4v4cx-wrap,.__PFX__-f35-e-4v4cx-shell,.__PFX__-f35-e-4v4cx-mini,.__PFX__-f35-e-4v4cx-info{ + padding:15px 10px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f35-e-4v4cx-map a{ + display:inline-block; + margin:0 8px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f35-e-4v4cx-links a{ + display:block; + margin:0 0 10px 0; + color:var(--primary-color); +} +.__PFX__-f35-e-4v4cx-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f35-e-4v4cx-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f35-e-4v4cx-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f35-e-4v4cx-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:6px; +} +.__PFX__-f35-e-4v4cx-addr{font-style:normal;display:block;margin-bottom:10px;} +.__PFX__-f35-e-4v4cx-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_36.css b/code/public/static/css/modules/footer/footer_36.css new file mode 100644 index 0000000..5725d84 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_36.css @@ -0,0 +1,50 @@ +/* footer_36.css */ +.__PFX__-f36-a-hlq0i-wrap,.__PFX__-f36-a-hlq0i-shell,.__PFX__-f36-a-hlq0i-mini,.__PFX__-f36-a-hlq0i-info{ + padding:19px 10px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f36-a-hlq0i-map a{ + display:inline-block; + margin:0 6px 4px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f36-a-hlq0i-links a{ + display:inline-block; + margin:0 8px 6px 0; + color:var(--primary-color); +} +.__PFX__-f36-a-hlq0i-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f36-a-hlq0i-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f36-a-hlq0i-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f36-a-hlq0i-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:9px; +} +.__PFX__-f36-a-hlq0i-grid{display:flex;flex-wrap:wrap;gap:13px;align-items:flex-start;} +.__PFX__-f36-a-hlq0i-left,.__PFX__-f36-a-hlq0i-right{flex:1 1 240px;} +.__PFX__-f36-a-hlq0i-card{ + padding:10px 10px; + border:1px solid var(--border-color); + border-radius:10px; + background:var(--bg-color); + margin-bottom:10px; +} +.__PFX__-f36-a-hlq0i-addr{font-style:normal;display:block;margin-bottom:10px;} +.__PFX__-f36-a-hlq0i-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_37.css b/code/public/static/css/modules/footer/footer_37.css new file mode 100644 index 0000000..533eb7c --- /dev/null +++ b/code/public/static/css/modules/footer/footer_37.css @@ -0,0 +1,50 @@ +/* footer_37.css */ +.__PFX__-f37-b-qcaky-wrap,.__PFX__-f37-b-qcaky-shell,.__PFX__-f37-b-qcaky-mini,.__PFX__-f37-b-qcaky-info{ + padding:15px 16px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f37-b-qcaky-map a{ + display:inline-block; + margin:0 6px 4px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f37-b-qcaky-links a{ + display:inline-block; + margin:0 10px 8px 0; + color:var(--primary-color); +} +.__PFX__-f37-b-qcaky-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f37-b-qcaky-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f37-b-qcaky-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f37-b-qcaky-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.75; + margin-top:10px; +} +.__PFX__-f37-b-qcaky-grid{display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start;} +.__PFX__-f37-b-qcaky-left,.__PFX__-f37-b-qcaky-right{flex:1 1 314px;} +.__PFX__-f37-b-qcaky-card{ + padding:11px 12px; + border:1px solid var(--border-color); + border-radius:0px; + background:var(--bg-color); + margin-bottom:13px; +} +.__PFX__-f37-b-qcaky-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f37-b-qcaky-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_38.css b/code/public/static/css/modules/footer/footer_38.css new file mode 100644 index 0000000..1aea976 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_38.css @@ -0,0 +1,41 @@ +/* footer_38.css */ +.__PFX__-f38-c-tjo6m-wrap,.__PFX__-f38-c-tjo6m-shell,.__PFX__-f38-c-tjo6m-mini,.__PFX__-f38-c-tjo6m-info{ + padding:16px 11px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f38-c-tjo6m-map a{ + display:inline-block; + margin:0 6px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f38-c-tjo6m-links a{ + display:inline-block; + margin:0 10px 7px 0; + color:var(--primary-color); +} +.__PFX__-f38-c-tjo6m-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f38-c-tjo6m-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:7px 0; +} +.__PFX__-f38-c-tjo6m-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f38-c-tjo6m-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:10px; +} +.__PFX__-f38-c-tjo6m-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f38-c-tjo6m-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_39.css b/code/public/static/css/modules/footer/footer_39.css new file mode 100644 index 0000000..d7a67bf --- /dev/null +++ b/code/public/static/css/modules/footer/footer_39.css @@ -0,0 +1,41 @@ +/* footer_39.css */ +.__PFX__-f39-d-ncbyx-wrap,.__PFX__-f39-d-ncbyx-shell,.__PFX__-f39-d-ncbyx-mini,.__PFX__-f39-d-ncbyx-info{ + padding:17px 16px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f39-d-ncbyx-map a{ + display:inline-block; + margin:0 9px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f39-d-ncbyx-links a{ + display:inline-block; + margin:0 9px 7px 0; + color:var(--primary-color); +} +.__PFX__-f39-d-ncbyx-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f39-d-ncbyx-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f39-d-ncbyx-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f39-d-ncbyx-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:7px; +} +.__PFX__-f39-d-ncbyx-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f39-d-ncbyx-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_40.css b/code/public/static/css/modules/footer/footer_40.css new file mode 100644 index 0000000..e61cb75 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_40.css @@ -0,0 +1,48 @@ +/* footer_40.css */ +.__PFX__-f40-e-vnl0t-wrap,.__PFX__-f40-e-vnl0t-shell,.__PFX__-f40-e-vnl0t-mini,.__PFX__-f40-e-vnl0t-info{ + padding:20px 16px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f40-e-vnl0t-map a{ + display:block; + margin:0 8px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f40-e-vnl0t-links a{ + display:block; + margin:0 0 10px 0; + color:var(--primary-color); +} +.__PFX__-f40-e-vnl0t-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f40-e-vnl0t-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f40-e-vnl0t-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f40-e-vnl0t-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.75; + margin-top:9px; +} +.__PFX__-f40-e-vnl0t-card{ + padding:12px 14px; + border:1px solid var(--border-color); + border-radius:8px; + background:var(--bg-color); + margin-bottom:11px; +} +.__PFX__-f40-e-vnl0t-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f40-e-vnl0t-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_41.css b/code/public/static/css/modules/footer/footer_41.css new file mode 100644 index 0000000..c9cca1d --- /dev/null +++ b/code/public/static/css/modules/footer/footer_41.css @@ -0,0 +1,48 @@ +/* footer_41.css */ +.__PFX__-f41-a-1sbmo-wrap,.__PFX__-f41-a-1sbmo-shell,.__PFX__-f41-a-1sbmo-mini,.__PFX__-f41-a-1sbmo-info{ + padding:13px 12px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f41-a-1sbmo-map a{ + display:inline-block; + margin:0 9px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f41-a-1sbmo-links a{ + display:inline-block; + margin:0 7px 5px 0; + color:var(--primary-color); +} +.__PFX__-f41-a-1sbmo-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f41-a-1sbmo-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f41-a-1sbmo-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f41-a-1sbmo-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:10px; +} +.__PFX__-f41-a-1sbmo-card{ + padding:10px 13px; + border:1px solid var(--border-color); + border-radius:10px; + background:var(--bg-color); + margin-bottom:11px; +} +.__PFX__-f41-a-1sbmo-addr{font-style:normal;display:block;margin-bottom:10px;} +.__PFX__-f41-a-1sbmo-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_42.css b/code/public/static/css/modules/footer/footer_42.css new file mode 100644 index 0000000..e23792f --- /dev/null +++ b/code/public/static/css/modules/footer/footer_42.css @@ -0,0 +1,41 @@ +/* footer_42.css */ +.__PFX__-f42-b-wnjnr-wrap,.__PFX__-f42-b-wnjnr-shell,.__PFX__-f42-b-wnjnr-mini,.__PFX__-f42-b-wnjnr-info{ + padding:13px 11px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f42-b-wnjnr-map a{ + display:inline-block; + margin:0 8px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f42-b-wnjnr-links a{ + display:inline-block; + margin:0 7px 8px 0; + color:var(--primary-color); +} +.__PFX__-f42-b-wnjnr-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f42-b-wnjnr-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f42-b-wnjnr-email{ + color:var(--text-color); + margin:8px 0; +} +.__PFX__-f42-b-wnjnr-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:7px; +} +.__PFX__-f42-b-wnjnr-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f42-b-wnjnr-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_43.css b/code/public/static/css/modules/footer/footer_43.css new file mode 100644 index 0000000..a5b86f1 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_43.css @@ -0,0 +1,41 @@ +/* footer_43.css */ +.__PFX__-f43-c-71b8w-wrap,.__PFX__-f43-c-71b8w-shell,.__PFX__-f43-c-71b8w-mini,.__PFX__-f43-c-71b8w-info{ + padding:19px 11px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f43-c-71b8w-map a{ + display:inline-block; + margin:0 9px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f43-c-71b8w-links a{ + display:inline-block; + margin:0 6px 8px 0; + color:var(--primary-color); +} +.__PFX__-f43-c-71b8w-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f43-c-71b8w-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f43-c-71b8w-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f43-c-71b8w-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:9px; +} +.__PFX__-f43-c-71b8w-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f43-c-71b8w-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_44.css b/code/public/static/css/modules/footer/footer_44.css new file mode 100644 index 0000000..3bff371 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_44.css @@ -0,0 +1,43 @@ +/* footer_44.css */ +.__PFX__-f44-d-n4cci-wrap,.__PFX__-f44-d-n4cci-shell,.__PFX__-f44-d-n4cci-mini,.__PFX__-f44-d-n4cci-info{ + padding:20px 16px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f44-d-n4cci-map a{ + display:inline-block; + margin:0 10px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f44-d-n4cci-links a{ + display:inline-block; + margin:0 8px 8px 0; + color:var(--primary-color); +} +.__PFX__-f44-d-n4cci-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f44-d-n4cci-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f44-d-n4cci-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f44-d-n4cci-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:7px; +} +.__PFX__-f44-d-n4cci-grid{display:flex;flex-wrap:wrap;gap:15px;align-items:flex-start;} +.__PFX__-f44-d-n4cci-left,.__PFX__-f44-d-n4cci-right{flex:1 1 304px;} +.__PFX__-f44-d-n4cci-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f44-d-n4cci-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_45.css b/code/public/static/css/modules/footer/footer_45.css new file mode 100644 index 0000000..30021d4 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_45.css @@ -0,0 +1,43 @@ +/* footer_45.css */ +.__PFX__-f45-e-5n5uc-wrap,.__PFX__-f45-e-5n5uc-shell,.__PFX__-f45-e-5n5uc-mini,.__PFX__-f45-e-5n5uc-info{ + padding:20px 15px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f45-e-5n5uc-map a{ + display:inline-block; + margin:0 7px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f45-e-5n5uc-links a{ + display:inline-block; + margin:0 8px 6px 0; + color:var(--primary-color); +} +.__PFX__-f45-e-5n5uc-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f45-e-5n5uc-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f45-e-5n5uc-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f45-e-5n5uc-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:8px; +} +.__PFX__-f45-e-5n5uc-grid{display:flex;flex-wrap:wrap;gap:15px;align-items:flex-start;} +.__PFX__-f45-e-5n5uc-left,.__PFX__-f45-e-5n5uc-right{flex:1 1 312px;} +.__PFX__-f45-e-5n5uc-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f45-e-5n5uc-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_46.css b/code/public/static/css/modules/footer/footer_46.css new file mode 100644 index 0000000..2c59074 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_46.css @@ -0,0 +1,48 @@ +/* footer_46.css */ +.__PFX__-f46-a-h30k7-wrap,.__PFX__-f46-a-h30k7-shell,.__PFX__-f46-a-h30k7-mini,.__PFX__-f46-a-h30k7-info{ + padding:17px 11px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f46-a-h30k7-map a{ + display:block; + margin:0 9px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f46-a-h30k7-links a{ + display:block; + margin:0 0 6px 0; + color:var(--primary-color); +} +.__PFX__-f46-a-h30k7-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f46-a-h30k7-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f46-a-h30k7-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f46-a-h30k7-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:8px; +} +.__PFX__-f46-a-h30k7-card{ + padding:12px 11px; + border:1px solid var(--border-color); + border-radius:10px; + background:var(--bg-color); + margin-bottom:10px; +} +.__PFX__-f46-a-h30k7-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f46-a-h30k7-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_47.css b/code/public/static/css/modules/footer/footer_47.css new file mode 100644 index 0000000..bc7a4c2 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_47.css @@ -0,0 +1,41 @@ +/* footer_47.css */ +.__PFX__-f47-b-3qyie-wrap,.__PFX__-f47-b-3qyie-shell,.__PFX__-f47-b-3qyie-mini,.__PFX__-f47-b-3qyie-info{ + padding:18px 16px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f47-b-3qyie-map a{ + display:inline-block; + margin:0 7px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f47-b-3qyie-links a{ + display:inline-block; + margin:0 8px 8px 0; + color:var(--primary-color); +} +.__PFX__-f47-b-3qyie-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f47-b-3qyie-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f47-b-3qyie-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f47-b-3qyie-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:9px; +} +.__PFX__-f47-b-3qyie-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f47-b-3qyie-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_48.css b/code/public/static/css/modules/footer/footer_48.css new file mode 100644 index 0000000..486c83c --- /dev/null +++ b/code/public/static/css/modules/footer/footer_48.css @@ -0,0 +1,41 @@ +/* footer_48.css */ +.__PFX__-f48-c-g7ldn-wrap,.__PFX__-f48-c-g7ldn-shell,.__PFX__-f48-c-g7ldn-mini,.__PFX__-f48-c-g7ldn-info{ + padding:13px 13px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f48-c-g7ldn-map a{ + display:inline-block; + margin:0 8px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f48-c-g7ldn-links a{ + display:inline-block; + margin:0 7px 7px 0; + color:var(--primary-color); +} +.__PFX__-f48-c-g7ldn-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f48-c-g7ldn-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f48-c-g7ldn-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f48-c-g7ldn-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:8px; +} +.__PFX__-f48-c-g7ldn-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f48-c-g7ldn-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_49.css b/code/public/static/css/modules/footer/footer_49.css new file mode 100644 index 0000000..62174f5 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_49.css @@ -0,0 +1,48 @@ +/* footer_49.css */ +.__PFX__-f49-d-aaerx-wrap,.__PFX__-f49-d-aaerx-shell,.__PFX__-f49-d-aaerx-mini,.__PFX__-f49-d-aaerx-info{ + padding:13px 10px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f49-d-aaerx-map a{ + display:inline-block; + margin:0 7px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f49-d-aaerx-links a{ + display:block; + margin:0 0 9px 0; + color:var(--primary-color); +} +.__PFX__-f49-d-aaerx-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f49-d-aaerx-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f49-d-aaerx-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f49-d-aaerx-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:7px; +} +.__PFX__-f49-d-aaerx-card{ + padding:13px 10px; + border:1px solid var(--border-color); + border-radius:10px; + background:var(--bg-color); + margin-bottom:12px; +} +.__PFX__-f49-d-aaerx-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f49-d-aaerx-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_50.css b/code/public/static/css/modules/footer/footer_50.css new file mode 100644 index 0000000..84fc05c --- /dev/null +++ b/code/public/static/css/modules/footer/footer_50.css @@ -0,0 +1,48 @@ +/* footer_50.css */ +.__PFX__-f50-e-y7s9i-wrap,.__PFX__-f50-e-y7s9i-shell,.__PFX__-f50-e-y7s9i-mini,.__PFX__-f50-e-y7s9i-info{ + padding:19px 16px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f50-e-y7s9i-map a{ + display:block; + margin:0 10px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f50-e-y7s9i-links a{ + display:block; + margin:0 0 6px 0; + color:var(--primary-color); +} +.__PFX__-f50-e-y7s9i-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f50-e-y7s9i-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f50-e-y7s9i-email{ + color:var(--text-color); + margin:8px 0; +} +.__PFX__-f50-e-y7s9i-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.75; + margin-top:9px; +} +.__PFX__-f50-e-y7s9i-card{ + padding:12px 14px; + border:1px solid var(--border-color); + border-radius:0px; + background:var(--bg-color); + margin-bottom:10px; +} +.__PFX__-f50-e-y7s9i-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f50-e-y7s9i-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_51.css b/code/public/static/css/modules/footer/footer_51.css new file mode 100644 index 0000000..dcca6e4 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_51.css @@ -0,0 +1,48 @@ +/* footer_51.css */ +.__PFX__-f51-a-m8b1s-wrap,.__PFX__-f51-a-m8b1s-shell,.__PFX__-f51-a-m8b1s-mini,.__PFX__-f51-a-m8b1s-info{ + padding:18px 10px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f51-a-m8b1s-map a{ + display:inline-block; + margin:0 10px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f51-a-m8b1s-links a{ + display:block; + margin:0 0 7px 0; + color:var(--primary-color); +} +.__PFX__-f51-a-m8b1s-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f51-a-m8b1s-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f51-a-m8b1s-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f51-a-m8b1s-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:8px; +} +.__PFX__-f51-a-m8b1s-card{ + padding:13px 14px; + border:1px solid var(--border-color); + border-radius:12px; + background:var(--bg-color); + margin-bottom:11px; +} +.__PFX__-f51-a-m8b1s-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f51-a-m8b1s-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_52.css b/code/public/static/css/modules/footer/footer_52.css new file mode 100644 index 0000000..c5bdd82 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_52.css @@ -0,0 +1,50 @@ +/* footer_52.css */ +.__PFX__-f52-b-24r8y-wrap,.__PFX__-f52-b-24r8y-shell,.__PFX__-f52-b-24r8y-mini,.__PFX__-f52-b-24r8y-info{ + padding:18px 14px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f52-b-24r8y-map a{ + display:inline-block; + margin:0 7px 4px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f52-b-24r8y-links a{ + display:inline-block; + margin:0 12px 4px 0; + color:var(--primary-color); +} +.__PFX__-f52-b-24r8y-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f52-b-24r8y-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f52-b-24r8y-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f52-b-24r8y-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:8px; +} +.__PFX__-f52-b-24r8y-grid{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start;} +.__PFX__-f52-b-24r8y-left,.__PFX__-f52-b-24r8y-right{flex:1 1 279px;} +.__PFX__-f52-b-24r8y-card{ + padding:14px 10px; + border:1px solid var(--border-color); + border-radius:12px; + background:var(--bg-color); + margin-bottom:12px; +} +.__PFX__-f52-b-24r8y-addr{font-style:normal;display:block;margin-bottom:10px;} +.__PFX__-f52-b-24r8y-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_53.css b/code/public/static/css/modules/footer/footer_53.css new file mode 100644 index 0000000..1aa8998 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_53.css @@ -0,0 +1,48 @@ +/* footer_53.css */ +.__PFX__-f53-c-cojlk-wrap,.__PFX__-f53-c-cojlk-shell,.__PFX__-f53-c-cojlk-mini,.__PFX__-f53-c-cojlk-info{ + padding:14px 11px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f53-c-cojlk-map a{ + display:inline-block; + margin:0 6px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f53-c-cojlk-links a{ + display:inline-block; + margin:0 7px 5px 0; + color:var(--primary-color); +} +.__PFX__-f53-c-cojlk-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f53-c-cojlk-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f53-c-cojlk-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f53-c-cojlk-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:7px; +} +.__PFX__-f53-c-cojlk-card{ + padding:12px 14px; + border:1px solid var(--border-color); + border-radius:0px; + background:var(--bg-color); + margin-bottom:14px; +} +.__PFX__-f53-c-cojlk-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f53-c-cojlk-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_54.css b/code/public/static/css/modules/footer/footer_54.css new file mode 100644 index 0000000..c5add99 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_54.css @@ -0,0 +1,41 @@ +/* footer_54.css */ +.__PFX__-f54-d-9sxsl-wrap,.__PFX__-f54-d-9sxsl-shell,.__PFX__-f54-d-9sxsl-mini,.__PFX__-f54-d-9sxsl-info{ + padding:17px 13px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f54-d-9sxsl-map a{ + display:inline-block; + margin:0 10px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f54-d-9sxsl-links a{ + display:inline-block; + margin:0 10px 7px 0; + color:var(--primary-color); +} +.__PFX__-f54-d-9sxsl-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f54-d-9sxsl-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:7px 0; +} +.__PFX__-f54-d-9sxsl-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f54-d-9sxsl-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:6px; +} +.__PFX__-f54-d-9sxsl-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f54-d-9sxsl-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_55.css b/code/public/static/css/modules/footer/footer_55.css new file mode 100644 index 0000000..6319075 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_55.css @@ -0,0 +1,43 @@ +/* footer_55.css */ +.__PFX__-f55-e-785z3-wrap,.__PFX__-f55-e-785z3-shell,.__PFX__-f55-e-785z3-mini,.__PFX__-f55-e-785z3-info{ + padding:17px 13px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f55-e-785z3-map a{ + display:inline-block; + margin:0 6px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f55-e-785z3-links a{ + display:inline-block; + margin:0 10px 5px 0; + color:var(--primary-color); +} +.__PFX__-f55-e-785z3-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f55-e-785z3-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f55-e-785z3-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f55-e-785z3-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:8px; +} +.__PFX__-f55-e-785z3-grid{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start;} +.__PFX__-f55-e-785z3-left,.__PFX__-f55-e-785z3-right{flex:1 1 295px;} +.__PFX__-f55-e-785z3-addr{font-style:normal;display:block;margin-bottom:10px;} +.__PFX__-f55-e-785z3-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_56.css b/code/public/static/css/modules/footer/footer_56.css new file mode 100644 index 0000000..2b0b306 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_56.css @@ -0,0 +1,50 @@ +/* footer_56.css */ +.__PFX__-f56-a-duwcq-wrap,.__PFX__-f56-a-duwcq-shell,.__PFX__-f56-a-duwcq-mini,.__PFX__-f56-a-duwcq-info{ + padding:12px 13px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f56-a-duwcq-map a{ + display:inline-block; + margin:0 10px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f56-a-duwcq-links a{ + display:inline-block; + margin:0 9px 6px 0; + color:var(--primary-color); +} +.__PFX__-f56-a-duwcq-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f56-a-duwcq-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f56-a-duwcq-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f56-a-duwcq-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:8px; +} +.__PFX__-f56-a-duwcq-grid{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start;} +.__PFX__-f56-a-duwcq-left,.__PFX__-f56-a-duwcq-right{flex:1 1 295px;} +.__PFX__-f56-a-duwcq-card{ + padding:11px 12px; + border:1px solid var(--border-color); + border-radius:0px; + background:var(--bg-color); + margin-bottom:10px; +} +.__PFX__-f56-a-duwcq-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f56-a-duwcq-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_57.css b/code/public/static/css/modules/footer/footer_57.css new file mode 100644 index 0000000..f36220a --- /dev/null +++ b/code/public/static/css/modules/footer/footer_57.css @@ -0,0 +1,43 @@ +/* footer_57.css */ +.__PFX__-f57-b-kowkj-wrap,.__PFX__-f57-b-kowkj-shell,.__PFX__-f57-b-kowkj-mini,.__PFX__-f57-b-kowkj-info{ + padding:19px 16px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f57-b-kowkj-map a{ + display:inline-block; + margin:0 8px 4px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f57-b-kowkj-links a{ + display:inline-block; + margin:0 10px 5px 0; + color:var(--primary-color); +} +.__PFX__-f57-b-kowkj-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f57-b-kowkj-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f57-b-kowkj-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f57-b-kowkj-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:7px; +} +.__PFX__-f57-b-kowkj-grid{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start;} +.__PFX__-f57-b-kowkj-left,.__PFX__-f57-b-kowkj-right{flex:1 1 267px;} +.__PFX__-f57-b-kowkj-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f57-b-kowkj-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_58.css b/code/public/static/css/modules/footer/footer_58.css new file mode 100644 index 0000000..73f7870 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_58.css @@ -0,0 +1,43 @@ +/* footer_58.css */ +.__PFX__-f58-c-mqbmy-wrap,.__PFX__-f58-c-mqbmy-shell,.__PFX__-f58-c-mqbmy-mini,.__PFX__-f58-c-mqbmy-info{ + padding:18px 11px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f58-c-mqbmy-map a{ + display:inline-block; + margin:0 10px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f58-c-mqbmy-links a{ + display:inline-block; + margin:0 9px 7px 0; + color:var(--primary-color); +} +.__PFX__-f58-c-mqbmy-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f58-c-mqbmy-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f58-c-mqbmy-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f58-c-mqbmy-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:10px; +} +.__PFX__-f58-c-mqbmy-grid{display:flex;flex-wrap:wrap;gap:17px;align-items:flex-start;} +.__PFX__-f58-c-mqbmy-left,.__PFX__-f58-c-mqbmy-right{flex:1 1 304px;} +.__PFX__-f58-c-mqbmy-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f58-c-mqbmy-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_59.css b/code/public/static/css/modules/footer/footer_59.css new file mode 100644 index 0000000..522edf7 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_59.css @@ -0,0 +1,41 @@ +/* footer_59.css */ +.__PFX__-f59-d-qv0wh-wrap,.__PFX__-f59-d-qv0wh-shell,.__PFX__-f59-d-qv0wh-mini,.__PFX__-f59-d-qv0wh-info{ + padding:12px 10px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f59-d-qv0wh-map a{ + display:block; + margin:0 10px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f59-d-qv0wh-links a{ + display:block; + margin:0 0 6px 0; + color:var(--primary-color); +} +.__PFX__-f59-d-qv0wh-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f59-d-qv0wh-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f59-d-qv0wh-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f59-d-qv0wh-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:8px; +} +.__PFX__-f59-d-qv0wh-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f59-d-qv0wh-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_60.css b/code/public/static/css/modules/footer/footer_60.css new file mode 100644 index 0000000..e1f724a --- /dev/null +++ b/code/public/static/css/modules/footer/footer_60.css @@ -0,0 +1,48 @@ +/* footer_60.css */ +.__PFX__-f60-e-belsk-wrap,.__PFX__-f60-e-belsk-shell,.__PFX__-f60-e-belsk-mini,.__PFX__-f60-e-belsk-info{ + padding:14px 15px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f60-e-belsk-map a{ + display:inline-block; + margin:0 8px 4px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f60-e-belsk-links a{ + display:inline-block; + margin:0 9px 5px 0; + color:var(--primary-color); +} +.__PFX__-f60-e-belsk-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f60-e-belsk-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f60-e-belsk-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f60-e-belsk-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:7px; +} +.__PFX__-f60-e-belsk-card{ + padding:11px 10px; + border:1px solid var(--border-color); + border-radius:8px; + background:var(--bg-color); + margin-bottom:10px; +} +.__PFX__-f60-e-belsk-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f60-e-belsk-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_61.css b/code/public/static/css/modules/footer/footer_61.css new file mode 100644 index 0000000..31709cd --- /dev/null +++ b/code/public/static/css/modules/footer/footer_61.css @@ -0,0 +1,48 @@ +/* footer_61.css */ +.__PFX__-f61-a-9wr8f-wrap,.__PFX__-f61-a-9wr8f-shell,.__PFX__-f61-a-9wr8f-mini,.__PFX__-f61-a-9wr8f-info{ + padding:13px 16px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f61-a-9wr8f-map a{ + display:inline-block; + margin:0 6px 4px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f61-a-9wr8f-links a{ + display:block; + margin:0 0 6px 0; + color:var(--primary-color); +} +.__PFX__-f61-a-9wr8f-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f61-a-9wr8f-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f61-a-9wr8f-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f61-a-9wr8f-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:7px; +} +.__PFX__-f61-a-9wr8f-card{ + padding:13px 11px; + border:1px solid var(--border-color); + border-radius:0px; + background:var(--bg-color); + margin-bottom:14px; +} +.__PFX__-f61-a-9wr8f-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f61-a-9wr8f-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_62.css b/code/public/static/css/modules/footer/footer_62.css new file mode 100644 index 0000000..2b0bc5c --- /dev/null +++ b/code/public/static/css/modules/footer/footer_62.css @@ -0,0 +1,41 @@ +/* footer_62.css */ +.__PFX__-f62-b-sct72-wrap,.__PFX__-f62-b-sct72-shell,.__PFX__-f62-b-sct72-mini,.__PFX__-f62-b-sct72-info{ + padding:19px 14px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f62-b-sct72-map a{ + display:inline-block; + margin:0 7px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f62-b-sct72-links a{ + display:block; + margin:0 0 6px 0; + color:var(--primary-color); +} +.__PFX__-f62-b-sct72-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f62-b-sct72-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f62-b-sct72-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f62-b-sct72-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:10px; +} +.__PFX__-f62-b-sct72-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f62-b-sct72-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_63.css b/code/public/static/css/modules/footer/footer_63.css new file mode 100644 index 0000000..283d60a --- /dev/null +++ b/code/public/static/css/modules/footer/footer_63.css @@ -0,0 +1,41 @@ +/* footer_63.css */ +.__PFX__-f63-c-zkp2n-wrap,.__PFX__-f63-c-zkp2n-shell,.__PFX__-f63-c-zkp2n-mini,.__PFX__-f63-c-zkp2n-info{ + padding:14px 12px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f63-c-zkp2n-map a{ + display:inline-block; + margin:0 7px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f63-c-zkp2n-links a{ + display:inline-block; + margin:0 8px 5px 0; + color:var(--primary-color); +} +.__PFX__-f63-c-zkp2n-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f63-c-zkp2n-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f63-c-zkp2n-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f63-c-zkp2n-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:10px; +} +.__PFX__-f63-c-zkp2n-addr{font-style:normal;display:block;margin-bottom:10px;} +.__PFX__-f63-c-zkp2n-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_64.css b/code/public/static/css/modules/footer/footer_64.css new file mode 100644 index 0000000..2312939 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_64.css @@ -0,0 +1,48 @@ +/* footer_64.css */ +.__PFX__-f64-d-09glb-wrap,.__PFX__-f64-d-09glb-shell,.__PFX__-f64-d-09glb-mini,.__PFX__-f64-d-09glb-info{ + padding:19px 12px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f64-d-09glb-map a{ + display:block; + margin:0 8px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f64-d-09glb-links a{ + display:block; + margin:0 0 6px 0; + color:var(--primary-color); +} +.__PFX__-f64-d-09glb-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f64-d-09glb-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f64-d-09glb-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f64-d-09glb-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:8px; +} +.__PFX__-f64-d-09glb-card{ + padding:13px 14px; + border:1px solid var(--border-color); + border-radius:0px; + background:var(--bg-color); + margin-bottom:10px; +} +.__PFX__-f64-d-09glb-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f64-d-09glb-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_65.css b/code/public/static/css/modules/footer/footer_65.css new file mode 100644 index 0000000..589d862 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_65.css @@ -0,0 +1,48 @@ +/* footer_65.css */ +.__PFX__-f65-e-ekfys-wrap,.__PFX__-f65-e-ekfys-shell,.__PFX__-f65-e-ekfys-mini,.__PFX__-f65-e-ekfys-info{ + padding:15px 11px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f65-e-ekfys-map a{ + display:inline-block; + margin:0 9px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f65-e-ekfys-links a{ + display:block; + margin:0 0 10px 0; + color:var(--primary-color); +} +.__PFX__-f65-e-ekfys-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f65-e-ekfys-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:7px 0; +} +.__PFX__-f65-e-ekfys-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f65-e-ekfys-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:9px; +} +.__PFX__-f65-e-ekfys-card{ + padding:14px 10px; + border:1px solid var(--border-color); + border-radius:0px; + background:var(--bg-color); + margin-bottom:10px; +} +.__PFX__-f65-e-ekfys-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f65-e-ekfys-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_66.css b/code/public/static/css/modules/footer/footer_66.css new file mode 100644 index 0000000..9d44c12 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_66.css @@ -0,0 +1,48 @@ +/* footer_66.css */ +.__PFX__-f66-a-skprj-wrap,.__PFX__-f66-a-skprj-shell,.__PFX__-f66-a-skprj-mini,.__PFX__-f66-a-skprj-info{ + padding:12px 15px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f66-a-skprj-map a{ + display:inline-block; + margin:0 8px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f66-a-skprj-links a{ + display:inline-block; + margin:0 6px 6px 0; + color:var(--primary-color); +} +.__PFX__-f66-a-skprj-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f66-a-skprj-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f66-a-skprj-email{ + color:var(--text-color); + margin:8px 0; +} +.__PFX__-f66-a-skprj-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:10px; +} +.__PFX__-f66-a-skprj-card{ + padding:10px 13px; + border:1px solid var(--border-color); + border-radius:12px; + background:var(--bg-color); + margin-bottom:14px; +} +.__PFX__-f66-a-skprj-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f66-a-skprj-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_67.css b/code/public/static/css/modules/footer/footer_67.css new file mode 100644 index 0000000..d88262f --- /dev/null +++ b/code/public/static/css/modules/footer/footer_67.css @@ -0,0 +1,43 @@ +/* footer_67.css */ +.__PFX__-f67-b-v2kxo-wrap,.__PFX__-f67-b-v2kxo-shell,.__PFX__-f67-b-v2kxo-mini,.__PFX__-f67-b-v2kxo-info{ + padding:13px 15px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f67-b-v2kxo-map a{ + display:inline-block; + margin:0 7px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f67-b-v2kxo-links a{ + display:inline-block; + margin:0 10px 7px 0; + color:var(--primary-color); +} +.__PFX__-f67-b-v2kxo-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f67-b-v2kxo-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f67-b-v2kxo-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f67-b-v2kxo-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:9px; +} +.__PFX__-f67-b-v2kxo-grid{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start;} +.__PFX__-f67-b-v2kxo-left,.__PFX__-f67-b-v2kxo-right{flex:1 1 303px;} +.__PFX__-f67-b-v2kxo-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f67-b-v2kxo-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_68.css b/code/public/static/css/modules/footer/footer_68.css new file mode 100644 index 0000000..fd00955 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_68.css @@ -0,0 +1,41 @@ +/* footer_68.css */ +.__PFX__-f68-c-ynrud-wrap,.__PFX__-f68-c-ynrud-shell,.__PFX__-f68-c-ynrud-mini,.__PFX__-f68-c-ynrud-info{ + padding:12px 10px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f68-c-ynrud-map a{ + display:inline-block; + margin:0 6px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f68-c-ynrud-links a{ + display:inline-block; + margin:0 9px 8px 0; + color:var(--primary-color); +} +.__PFX__-f68-c-ynrud-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f68-c-ynrud-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:7px 0; +} +.__PFX__-f68-c-ynrud-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f68-c-ynrud-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.75; + margin-top:6px; +} +.__PFX__-f68-c-ynrud-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f68-c-ynrud-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_69.css b/code/public/static/css/modules/footer/footer_69.css new file mode 100644 index 0000000..0b6ba01 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_69.css @@ -0,0 +1,48 @@ +/* footer_69.css */ +.__PFX__-f69-d-4ep9s-wrap,.__PFX__-f69-d-4ep9s-shell,.__PFX__-f69-d-4ep9s-mini,.__PFX__-f69-d-4ep9s-info{ + padding:12px 12px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f69-d-4ep9s-map a{ + display:block; + margin:0 10px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f69-d-4ep9s-links a{ + display:block; + margin:0 0 9px 0; + color:var(--primary-color); +} +.__PFX__-f69-d-4ep9s-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f69-d-4ep9s-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:7px 0; +} +.__PFX__-f69-d-4ep9s-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f69-d-4ep9s-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:6px; +} +.__PFX__-f69-d-4ep9s-card{ + padding:11px 10px; + border:1px solid var(--border-color); + border-radius:8px; + background:var(--bg-color); + margin-bottom:14px; +} +.__PFX__-f69-d-4ep9s-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f69-d-4ep9s-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_70.css b/code/public/static/css/modules/footer/footer_70.css new file mode 100644 index 0000000..a8ef381 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_70.css @@ -0,0 +1,48 @@ +/* footer_70.css */ +.__PFX__-f70-e-nu4rx-wrap,.__PFX__-f70-e-nu4rx-shell,.__PFX__-f70-e-nu4rx-mini,.__PFX__-f70-e-nu4rx-info{ + padding:12px 16px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f70-e-nu4rx-map a{ + display:inline-block; + margin:0 8px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f70-e-nu4rx-links a{ + display:inline-block; + margin:0 8px 5px 0; + color:var(--primary-color); +} +.__PFX__-f70-e-nu4rx-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f70-e-nu4rx-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:7px 0; +} +.__PFX__-f70-e-nu4rx-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f70-e-nu4rx-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:10px; +} +.__PFX__-f70-e-nu4rx-card{ + padding:14px 10px; + border:1px solid var(--border-color); + border-radius:8px; + background:var(--bg-color); + margin-bottom:10px; +} +.__PFX__-f70-e-nu4rx-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f70-e-nu4rx-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_71.css b/code/public/static/css/modules/footer/footer_71.css new file mode 100644 index 0000000..05ee931 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_71.css @@ -0,0 +1,48 @@ +/* footer_71.css */ +.__PFX__-f71-a-s7yjo-wrap,.__PFX__-f71-a-s7yjo-shell,.__PFX__-f71-a-s7yjo-mini,.__PFX__-f71-a-s7yjo-info{ + padding:12px 13px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f71-a-s7yjo-map a{ + display:block; + margin:0 8px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f71-a-s7yjo-links a{ + display:block; + margin:0 0 10px 0; + color:var(--primary-color); +} +.__PFX__-f71-a-s7yjo-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f71-a-s7yjo-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f71-a-s7yjo-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f71-a-s7yjo-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:8px; +} +.__PFX__-f71-a-s7yjo-card{ + padding:11px 13px; + border:1px solid var(--border-color); + border-radius:8px; + background:var(--bg-color); + margin-bottom:13px; +} +.__PFX__-f71-a-s7yjo-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f71-a-s7yjo-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_72.css b/code/public/static/css/modules/footer/footer_72.css new file mode 100644 index 0000000..7155fc0 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_72.css @@ -0,0 +1,50 @@ +/* footer_72.css */ +.__PFX__-f72-b-jyqvj-wrap,.__PFX__-f72-b-jyqvj-shell,.__PFX__-f72-b-jyqvj-mini,.__PFX__-f72-b-jyqvj-info{ + padding:13px 16px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f72-b-jyqvj-map a{ + display:inline-block; + margin:0 8px 4px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f72-b-jyqvj-links a{ + display:inline-block; + margin:0 9px 4px 0; + color:var(--primary-color); +} +.__PFX__-f72-b-jyqvj-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f72-b-jyqvj-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f72-b-jyqvj-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f72-b-jyqvj-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.75; + margin-top:7px; +} +.__PFX__-f72-b-jyqvj-grid{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start;} +.__PFX__-f72-b-jyqvj-left,.__PFX__-f72-b-jyqvj-right{flex:1 1 269px;} +.__PFX__-f72-b-jyqvj-card{ + padding:12px 11px; + border:1px solid var(--border-color); + border-radius:12px; + background:var(--bg-color); + margin-bottom:10px; +} +.__PFX__-f72-b-jyqvj-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f72-b-jyqvj-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_73.css b/code/public/static/css/modules/footer/footer_73.css new file mode 100644 index 0000000..40d56a1 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_73.css @@ -0,0 +1,41 @@ +/* footer_73.css */ +.__PFX__-f73-c-3dbrx-wrap,.__PFX__-f73-c-3dbrx-shell,.__PFX__-f73-c-3dbrx-mini,.__PFX__-f73-c-3dbrx-info{ + padding:12px 11px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f73-c-3dbrx-map a{ + display:inline-block; + margin:0 6px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f73-c-3dbrx-links a{ + display:block; + margin:0 0 7px 0; + color:var(--primary-color); +} +.__PFX__-f73-c-3dbrx-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f73-c-3dbrx-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f73-c-3dbrx-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f73-c-3dbrx-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:8px; +} +.__PFX__-f73-c-3dbrx-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f73-c-3dbrx-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_74.css b/code/public/static/css/modules/footer/footer_74.css new file mode 100644 index 0000000..f4967e4 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_74.css @@ -0,0 +1,48 @@ +/* footer_74.css */ +.__PFX__-f74-d-2dx98-wrap,.__PFX__-f74-d-2dx98-shell,.__PFX__-f74-d-2dx98-mini,.__PFX__-f74-d-2dx98-info{ + padding:14px 12px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f74-d-2dx98-map a{ + display:inline-block; + margin:0 6px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f74-d-2dx98-links a{ + display:inline-block; + margin:0 8px 4px 0; + color:var(--primary-color); +} +.__PFX__-f74-d-2dx98-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f74-d-2dx98-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f74-d-2dx98-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f74-d-2dx98-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:10px; +} +.__PFX__-f74-d-2dx98-card{ + padding:12px 11px; + border:1px solid var(--border-color); + border-radius:0px; + background:var(--bg-color); + margin-bottom:14px; +} +.__PFX__-f74-d-2dx98-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f74-d-2dx98-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_75.css b/code/public/static/css/modules/footer/footer_75.css new file mode 100644 index 0000000..cd7956d --- /dev/null +++ b/code/public/static/css/modules/footer/footer_75.css @@ -0,0 +1,48 @@ +/* footer_75.css */ +.__PFX__-f75-e-ka94i-wrap,.__PFX__-f75-e-ka94i-shell,.__PFX__-f75-e-ka94i-mini,.__PFX__-f75-e-ka94i-info{ + padding:18px 16px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f75-e-ka94i-map a{ + display:inline-block; + margin:0 10px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f75-e-ka94i-links a{ + display:block; + margin:0 0 10px 0; + color:var(--primary-color); +} +.__PFX__-f75-e-ka94i-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f75-e-ka94i-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f75-e-ka94i-email{ + color:var(--text-color); + margin:8px 0; +} +.__PFX__-f75-e-ka94i-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:7px; +} +.__PFX__-f75-e-ka94i-card{ + padding:10px 11px; + border:1px solid var(--border-color); + border-radius:0px; + background:var(--bg-color); + margin-bottom:13px; +} +.__PFX__-f75-e-ka94i-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f75-e-ka94i-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_76.css b/code/public/static/css/modules/footer/footer_76.css new file mode 100644 index 0000000..c3a38e6 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_76.css @@ -0,0 +1,41 @@ +/* footer_76.css */ +.__PFX__-f76-a-lzdgd-wrap,.__PFX__-f76-a-lzdgd-shell,.__PFX__-f76-a-lzdgd-mini,.__PFX__-f76-a-lzdgd-info{ + padding:16px 13px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f76-a-lzdgd-map a{ + display:inline-block; + margin:0 10px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f76-a-lzdgd-links a{ + display:inline-block; + margin:0 8px 7px 0; + color:var(--primary-color); +} +.__PFX__-f76-a-lzdgd-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f76-a-lzdgd-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f76-a-lzdgd-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f76-a-lzdgd-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:9px; +} +.__PFX__-f76-a-lzdgd-addr{font-style:normal;display:block;margin-bottom:10px;} +.__PFX__-f76-a-lzdgd-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_77.css b/code/public/static/css/modules/footer/footer_77.css new file mode 100644 index 0000000..c9bfdc9 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_77.css @@ -0,0 +1,41 @@ +/* footer_77.css */ +.__PFX__-f77-b-w8x4d-wrap,.__PFX__-f77-b-w8x4d-shell,.__PFX__-f77-b-w8x4d-mini,.__PFX__-f77-b-w8x4d-info{ + padding:15px 14px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f77-b-w8x4d-map a{ + display:inline-block; + margin:0 8px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f77-b-w8x4d-links a{ + display:block; + margin:0 0 6px 0; + color:var(--primary-color); +} +.__PFX__-f77-b-w8x4d-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f77-b-w8x4d-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f77-b-w8x4d-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f77-b-w8x4d-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.75; + margin-top:9px; +} +.__PFX__-f77-b-w8x4d-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f77-b-w8x4d-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_78.css b/code/public/static/css/modules/footer/footer_78.css new file mode 100644 index 0000000..a234138 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_78.css @@ -0,0 +1,43 @@ +/* footer_78.css */ +.__PFX__-f78-c-r524o-wrap,.__PFX__-f78-c-r524o-shell,.__PFX__-f78-c-r524o-mini,.__PFX__-f78-c-r524o-info{ + padding:15px 13px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f78-c-r524o-map a{ + display:inline-block; + margin:0 6px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f78-c-r524o-links a{ + display:inline-block; + margin:0 9px 7px 0; + color:var(--primary-color); +} +.__PFX__-f78-c-r524o-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f78-c-r524o-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f78-c-r524o-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f78-c-r524o-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.75; + margin-top:6px; +} +.__PFX__-f78-c-r524o-grid{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start;} +.__PFX__-f78-c-r524o-left,.__PFX__-f78-c-r524o-right{flex:1 1 253px;} +.__PFX__-f78-c-r524o-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f78-c-r524o-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_79.css b/code/public/static/css/modules/footer/footer_79.css new file mode 100644 index 0000000..ee30878 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_79.css @@ -0,0 +1,41 @@ +/* footer_79.css */ +.__PFX__-f79-d-ropmt-wrap,.__PFX__-f79-d-ropmt-shell,.__PFX__-f79-d-ropmt-mini,.__PFX__-f79-d-ropmt-info{ + padding:13px 13px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f79-d-ropmt-map a{ + display:inline-block; + margin:0 8px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f79-d-ropmt-links a{ + display:inline-block; + margin:0 10px 6px 0; + color:var(--primary-color); +} +.__PFX__-f79-d-ropmt-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f79-d-ropmt-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:7px 0; +} +.__PFX__-f79-d-ropmt-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f79-d-ropmt-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:10px; +} +.__PFX__-f79-d-ropmt-addr{font-style:normal;display:block;margin-bottom:10px;} +.__PFX__-f79-d-ropmt-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_80.css b/code/public/static/css/modules/footer/footer_80.css new file mode 100644 index 0000000..ab3169d --- /dev/null +++ b/code/public/static/css/modules/footer/footer_80.css @@ -0,0 +1,41 @@ +/* footer_80.css */ +.__PFX__-f80-e-elpjd-wrap,.__PFX__-f80-e-elpjd-shell,.__PFX__-f80-e-elpjd-mini,.__PFX__-f80-e-elpjd-info{ + padding:16px 14px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f80-e-elpjd-map a{ + display:block; + margin:0 9px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f80-e-elpjd-links a{ + display:block; + margin:0 0 10px 0; + color:var(--primary-color); +} +.__PFX__-f80-e-elpjd-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f80-e-elpjd-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f80-e-elpjd-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f80-e-elpjd-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.75; + margin-top:7px; +} +.__PFX__-f80-e-elpjd-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f80-e-elpjd-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_81.css b/code/public/static/css/modules/footer/footer_81.css new file mode 100644 index 0000000..449524f --- /dev/null +++ b/code/public/static/css/modules/footer/footer_81.css @@ -0,0 +1,48 @@ +/* footer_81.css */ +.__PFX__-f81-a-4v256-wrap,.__PFX__-f81-a-4v256-shell,.__PFX__-f81-a-4v256-mini,.__PFX__-f81-a-4v256-info{ + padding:19px 14px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f81-a-4v256-map a{ + display:inline-block; + margin:0 6px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f81-a-4v256-links a{ + display:inline-block; + margin:0 7px 4px 0; + color:var(--primary-color); +} +.__PFX__-f81-a-4v256-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f81-a-4v256-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f81-a-4v256-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f81-a-4v256-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.75; + margin-top:6px; +} +.__PFX__-f81-a-4v256-card{ + padding:11px 11px; + border:1px solid var(--border-color); + border-radius:0px; + background:var(--bg-color); + margin-bottom:11px; +} +.__PFX__-f81-a-4v256-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f81-a-4v256-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_82.css b/code/public/static/css/modules/footer/footer_82.css new file mode 100644 index 0000000..793d479 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_82.css @@ -0,0 +1,48 @@ +/* footer_82.css */ +.__PFX__-f82-b-8ytwc-wrap,.__PFX__-f82-b-8ytwc-shell,.__PFX__-f82-b-8ytwc-mini,.__PFX__-f82-b-8ytwc-info{ + padding:12px 10px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f82-b-8ytwc-map a{ + display:inline-block; + margin:0 9px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f82-b-8ytwc-links a{ + display:block; + margin:0 0 10px 0; + color:var(--primary-color); +} +.__PFX__-f82-b-8ytwc-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f82-b-8ytwc-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f82-b-8ytwc-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f82-b-8ytwc-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:8px; +} +.__PFX__-f82-b-8ytwc-card{ + padding:11px 10px; + border:1px solid var(--border-color); + border-radius:10px; + background:var(--bg-color); + margin-bottom:10px; +} +.__PFX__-f82-b-8ytwc-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f82-b-8ytwc-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_83.css b/code/public/static/css/modules/footer/footer_83.css new file mode 100644 index 0000000..f836211 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_83.css @@ -0,0 +1,50 @@ +/* footer_83.css */ +.__PFX__-f83-c-fv7qp-wrap,.__PFX__-f83-c-fv7qp-shell,.__PFX__-f83-c-fv7qp-mini,.__PFX__-f83-c-fv7qp-info{ + padding:17px 13px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f83-c-fv7qp-map a{ + display:inline-block; + margin:0 9px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f83-c-fv7qp-links a{ + display:inline-block; + margin:0 9px 4px 0; + color:var(--primary-color); +} +.__PFX__-f83-c-fv7qp-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f83-c-fv7qp-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f83-c-fv7qp-email{ + color:var(--text-color); + margin:8px 0; +} +.__PFX__-f83-c-fv7qp-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.75; + margin-top:9px; +} +.__PFX__-f83-c-fv7qp-grid{display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start;} +.__PFX__-f83-c-fv7qp-left,.__PFX__-f83-c-fv7qp-right{flex:1 1 242px;} +.__PFX__-f83-c-fv7qp-card{ + padding:10px 12px; + border:1px solid var(--border-color); + border-radius:0px; + background:var(--bg-color); + margin-bottom:12px; +} +.__PFX__-f83-c-fv7qp-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f83-c-fv7qp-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_84.css b/code/public/static/css/modules/footer/footer_84.css new file mode 100644 index 0000000..74f24e0 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_84.css @@ -0,0 +1,50 @@ +/* footer_84.css */ +.__PFX__-f84-d-ezexp-wrap,.__PFX__-f84-d-ezexp-shell,.__PFX__-f84-d-ezexp-mini,.__PFX__-f84-d-ezexp-info{ + padding:13px 11px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f84-d-ezexp-map a{ + display:inline-block; + margin:0 10px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f84-d-ezexp-links a{ + display:inline-block; + margin:0 10px 5px 0; + color:var(--primary-color); +} +.__PFX__-f84-d-ezexp-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f84-d-ezexp-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f84-d-ezexp-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f84-d-ezexp-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:10px; +} +.__PFX__-f84-d-ezexp-grid{display:flex;flex-wrap:wrap;gap:17px;align-items:flex-start;} +.__PFX__-f84-d-ezexp-left,.__PFX__-f84-d-ezexp-right{flex:1 1 310px;} +.__PFX__-f84-d-ezexp-card{ + padding:11px 14px; + border:1px solid var(--border-color); + border-radius:8px; + background:var(--bg-color); + margin-bottom:14px; +} +.__PFX__-f84-d-ezexp-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f84-d-ezexp-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_85.css b/code/public/static/css/modules/footer/footer_85.css new file mode 100644 index 0000000..b14859c --- /dev/null +++ b/code/public/static/css/modules/footer/footer_85.css @@ -0,0 +1,48 @@ +/* footer_85.css */ +.__PFX__-f85-e-pmfun-wrap,.__PFX__-f85-e-pmfun-shell,.__PFX__-f85-e-pmfun-mini,.__PFX__-f85-e-pmfun-info{ + padding:15px 10px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f85-e-pmfun-map a{ + display:inline-block; + margin:0 10px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f85-e-pmfun-links a{ + display:inline-block; + margin:0 8px 5px 0; + color:var(--primary-color); +} +.__PFX__-f85-e-pmfun-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f85-e-pmfun-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:7px 0; +} +.__PFX__-f85-e-pmfun-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f85-e-pmfun-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:6px; +} +.__PFX__-f85-e-pmfun-card{ + padding:12px 10px; + border:1px solid var(--border-color); + border-radius:12px; + background:var(--bg-color); + margin-bottom:11px; +} +.__PFX__-f85-e-pmfun-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f85-e-pmfun-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_86.css b/code/public/static/css/modules/footer/footer_86.css new file mode 100644 index 0000000..b64c566 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_86.css @@ -0,0 +1,41 @@ +/* footer_86.css */ +.__PFX__-f86-a-y0kxt-wrap,.__PFX__-f86-a-y0kxt-shell,.__PFX__-f86-a-y0kxt-mini,.__PFX__-f86-a-y0kxt-info{ + padding:13px 13px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f86-a-y0kxt-map a{ + display:inline-block; + margin:0 6px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f86-a-y0kxt-links a{ + display:inline-block; + margin:0 10px 5px 0; + color:var(--primary-color); +} +.__PFX__-f86-a-y0kxt-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f86-a-y0kxt-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f86-a-y0kxt-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f86-a-y0kxt-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:10px; +} +.__PFX__-f86-a-y0kxt-addr{font-style:normal;display:block;margin-bottom:10px;} +.__PFX__-f86-a-y0kxt-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_87.css b/code/public/static/css/modules/footer/footer_87.css new file mode 100644 index 0000000..5d0c74b --- /dev/null +++ b/code/public/static/css/modules/footer/footer_87.css @@ -0,0 +1,43 @@ +/* footer_87.css */ +.__PFX__-f87-b-63iv9-wrap,.__PFX__-f87-b-63iv9-shell,.__PFX__-f87-b-63iv9-mini,.__PFX__-f87-b-63iv9-info{ + padding:12px 14px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f87-b-63iv9-map a{ + display:inline-block; + margin:0 10px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f87-b-63iv9-links a{ + display:inline-block; + margin:0 9px 8px 0; + color:var(--primary-color); +} +.__PFX__-f87-b-63iv9-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f87-b-63iv9-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f87-b-63iv9-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f87-b-63iv9-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.75; + margin-top:9px; +} +.__PFX__-f87-b-63iv9-grid{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start;} +.__PFX__-f87-b-63iv9-left,.__PFX__-f87-b-63iv9-right{flex:1 1 254px;} +.__PFX__-f87-b-63iv9-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f87-b-63iv9-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_88.css b/code/public/static/css/modules/footer/footer_88.css new file mode 100644 index 0000000..672edc1 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_88.css @@ -0,0 +1,50 @@ +/* footer_88.css */ +.__PFX__-f88-c-laju5-wrap,.__PFX__-f88-c-laju5-shell,.__PFX__-f88-c-laju5-mini,.__PFX__-f88-c-laju5-info{ + padding:16px 16px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f88-c-laju5-map a{ + display:inline-block; + margin:0 7px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f88-c-laju5-links a{ + display:inline-block; + margin:0 9px 5px 0; + color:var(--primary-color); +} +.__PFX__-f88-c-laju5-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f88-c-laju5-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f88-c-laju5-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f88-c-laju5-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:6px; +} +.__PFX__-f88-c-laju5-grid{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start;} +.__PFX__-f88-c-laju5-left,.__PFX__-f88-c-laju5-right{flex:1 1 288px;} +.__PFX__-f88-c-laju5-card{ + padding:10px 11px; + border:1px solid var(--border-color); + border-radius:10px; + background:var(--bg-color); + margin-bottom:12px; +} +.__PFX__-f88-c-laju5-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f88-c-laju5-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_89.css b/code/public/static/css/modules/footer/footer_89.css new file mode 100644 index 0000000..29f9206 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_89.css @@ -0,0 +1,50 @@ +/* footer_89.css */ +.__PFX__-f89-d-b7sfl-wrap,.__PFX__-f89-d-b7sfl-shell,.__PFX__-f89-d-b7sfl-mini,.__PFX__-f89-d-b7sfl-info{ + padding:15px 13px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f89-d-b7sfl-map a{ + display:inline-block; + margin:0 10px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f89-d-b7sfl-links a{ + display:inline-block; + margin:0 11px 7px 0; + color:var(--primary-color); +} +.__PFX__-f89-d-b7sfl-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f89-d-b7sfl-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f89-d-b7sfl-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f89-d-b7sfl-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:7px; +} +.__PFX__-f89-d-b7sfl-grid{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start;} +.__PFX__-f89-d-b7sfl-left,.__PFX__-f89-d-b7sfl-right{flex:1 1 292px;} +.__PFX__-f89-d-b7sfl-card{ + padding:14px 12px; + border:1px solid var(--border-color); + border-radius:10px; + background:var(--bg-color); + margin-bottom:14px; +} +.__PFX__-f89-d-b7sfl-addr{font-style:normal;display:block;margin-bottom:11px;} +.__PFX__-f89-d-b7sfl-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_90.css b/code/public/static/css/modules/footer/footer_90.css new file mode 100644 index 0000000..c751b6d --- /dev/null +++ b/code/public/static/css/modules/footer/footer_90.css @@ -0,0 +1,48 @@ +/* footer_90.css */ +.__PFX__-f90-e-0xwsq-wrap,.__PFX__-f90-e-0xwsq-shell,.__PFX__-f90-e-0xwsq-mini,.__PFX__-f90-e-0xwsq-info{ + padding:19px 10px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f90-e-0xwsq-map a{ + display:inline-block; + margin:0 10px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f90-e-0xwsq-links a{ + display:inline-block; + margin:0 7px 6px 0; + color:var(--primary-color); +} +.__PFX__-f90-e-0xwsq-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f90-e-0xwsq-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f90-e-0xwsq-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f90-e-0xwsq-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.75; + margin-top:6px; +} +.__PFX__-f90-e-0xwsq-card{ + padding:11px 14px; + border:1px solid var(--border-color); + border-radius:8px; + background:var(--bg-color); + margin-bottom:13px; +} +.__PFX__-f90-e-0xwsq-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f90-e-0xwsq-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_91.css b/code/public/static/css/modules/footer/footer_91.css new file mode 100644 index 0000000..10559f3 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_91.css @@ -0,0 +1,41 @@ +/* footer_91.css */ +.__PFX__-f91-a-p7c4n-wrap,.__PFX__-f91-a-p7c4n-shell,.__PFX__-f91-a-p7c4n-mini,.__PFX__-f91-a-p7c4n-info{ + padding:17px 16px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f91-a-p7c4n-map a{ + display:block; + margin:0 8px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f91-a-p7c4n-links a{ + display:block; + margin:0 0 10px 0; + color:var(--primary-color); +} +.__PFX__-f91-a-p7c4n-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f91-a-p7c4n-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f91-a-p7c4n-email{ + color:var(--text-color); + margin:7px 0; +} +.__PFX__-f91-a-p7c4n-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:10px; +} +.__PFX__-f91-a-p7c4n-addr{font-style:normal;display:block;margin-bottom:9px;} +.__PFX__-f91-a-p7c4n-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_92.css b/code/public/static/css/modules/footer/footer_92.css new file mode 100644 index 0000000..f7c0883 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_92.css @@ -0,0 +1,41 @@ +/* footer_92.css */ +.__PFX__-f92-b-u6lbz-wrap,.__PFX__-f92-b-u6lbz-shell,.__PFX__-f92-b-u6lbz-mini,.__PFX__-f92-b-u6lbz-info{ + padding:19px 16px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f92-b-u6lbz-map a{ + display:inline-block; + margin:0 10px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f92-b-u6lbz-links a{ + display:inline-block; + margin:0 8px 7px 0; + color:var(--primary-color); +} +.__PFX__-f92-b-u6lbz-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f92-b-u6lbz-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f92-b-u6lbz-email{ + color:var(--text-color); + margin:8px 0; +} +.__PFX__-f92-b-u6lbz-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.85; + margin-top:10px; +} +.__PFX__-f92-b-u6lbz-addr{font-style:normal;display:block;margin-bottom:10px;} +.__PFX__-f92-b-u6lbz-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_93.css b/code/public/static/css/modules/footer/footer_93.css new file mode 100644 index 0000000..9a09fe7 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_93.css @@ -0,0 +1,41 @@ +/* footer_93.css */ +.__PFX__-f93-c-w5n2c-wrap,.__PFX__-f93-c-w5n2c-shell,.__PFX__-f93-c-w5n2c-mini,.__PFX__-f93-c-w5n2c-info{ + padding:18px 14px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f93-c-w5n2c-map a{ + display:block; + margin:0 8px 4px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f93-c-w5n2c-links a{ + display:block; + margin:0 0 8px 0; + color:var(--primary-color); +} +.__PFX__-f93-c-w5n2c-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f93-c-w5n2c-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f93-c-w5n2c-email{ + color:var(--text-color); + margin:4px 0; +} +.__PFX__-f93-c-w5n2c-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.75; + margin-top:9px; +} +.__PFX__-f93-c-w5n2c-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f93-c-w5n2c-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_94.css b/code/public/static/css/modules/footer/footer_94.css new file mode 100644 index 0000000..f17aa11 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_94.css @@ -0,0 +1,43 @@ +/* footer_94.css */ +.__PFX__-f94-d-lwg82-wrap,.__PFX__-f94-d-lwg82-shell,.__PFX__-f94-d-lwg82-mini,.__PFX__-f94-d-lwg82-info{ + padding:17px 15px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f94-d-lwg82-map a{ + display:inline-block; + margin:0 6px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f94-d-lwg82-links a{ + display:inline-block; + margin:0 12px 4px 0; + color:var(--primary-color); +} +.__PFX__-f94-d-lwg82-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f94-d-lwg82-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f94-d-lwg82-email{ + color:var(--text-color); + margin:8px 0; +} +.__PFX__-f94-d-lwg82-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:6px; +} +.__PFX__-f94-d-lwg82-grid{display:flex;flex-wrap:wrap;gap:13px;align-items:flex-start;} +.__PFX__-f94-d-lwg82-left,.__PFX__-f94-d-lwg82-right{flex:1 1 298px;} +.__PFX__-f94-d-lwg82-addr{font-style:normal;display:block;margin-bottom:10px;} +.__PFX__-f94-d-lwg82-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_95.css b/code/public/static/css/modules/footer/footer_95.css new file mode 100644 index 0000000..8bfd85c --- /dev/null +++ b/code/public/static/css/modules/footer/footer_95.css @@ -0,0 +1,48 @@ +/* footer_95.css */ +.__PFX__-f95-e-0g21m-wrap,.__PFX__-f95-e-0g21m-shell,.__PFX__-f95-e-0g21m-mini,.__PFX__-f95-e-0g21m-info{ + padding:18px 15px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f95-e-0g21m-map a{ + display:inline-block; + margin:0 8px 7px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f95-e-0g21m-links a{ + display:block; + margin:0 0 9px 0; + color:var(--primary-color); +} +.__PFX__-f95-e-0g21m-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f95-e-0g21m-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f95-e-0g21m-email{ + color:var(--text-color); + margin:6px 0; +} +.__PFX__-f95-e-0g21m-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:6px; +} +.__PFX__-f95-e-0g21m-card{ + padding:14px 14px; + border:1px solid var(--border-color); + border-radius:12px; + background:var(--bg-color); + margin-bottom:12px; +} +.__PFX__-f95-e-0g21m-addr{font-style:normal;display:block;margin-bottom:8px;} +.__PFX__-f95-e-0g21m-brand{font-weight:700;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_96.css b/code/public/static/css/modules/footer/footer_96.css new file mode 100644 index 0000000..0a6b481 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_96.css @@ -0,0 +1,43 @@ +/* footer_96.css */ +.__PFX__-f96-a-gavas-wrap,.__PFX__-f96-a-gavas-shell,.__PFX__-f96-a-gavas-mini,.__PFX__-f96-a-gavas-info{ + padding:14px 11px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:12px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f96-a-gavas-map a{ + display:inline-block; + margin:0 7px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f96-a-gavas-links a{ + display:inline-block; + margin:0 12px 6px 0; + color:var(--primary-color); +} +.__PFX__-f96-a-gavas-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f96-a-gavas-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:10px 0; +} +.__PFX__-f96-a-gavas-email{ + color:var(--text-color); + margin:8px 0; +} +.__PFX__-f96-a-gavas-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.9; + margin-top:10px; +} +.__PFX__-f96-a-gavas-grid{display:flex;flex-wrap:wrap;gap:15px;align-items:flex-start;} +.__PFX__-f96-a-gavas-left,.__PFX__-f96-a-gavas-right{flex:1 1 309px;} +.__PFX__-f96-a-gavas-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f96-a-gavas-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_97.css b/code/public/static/css/modules/footer/footer_97.css new file mode 100644 index 0000000..7921544 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_97.css @@ -0,0 +1,41 @@ +/* footer_97.css */ +.__PFX__-f97-b-z736m-wrap,.__PFX__-f97-b-z736m-shell,.__PFX__-f97-b-z736m-mini,.__PFX__-f97-b-z736m-info{ + padding:12px 15px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:left; +} +.__PFX__-f97-b-z736m-map a{ + display:inline-block; + margin:0 8px 8px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f97-b-z736m-links a{ + display:inline-block; + margin:0 6px 4px 0; + color:var(--primary-color); +} +.__PFX__-f97-b-z736m-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f97-b-z736m-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:8px 0; +} +.__PFX__-f97-b-z736m-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f97-b-z736m-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:6px; +} +.__PFX__-f97-b-z736m-addr{font-style:normal;display:block;margin-bottom:12px;} +.__PFX__-f97-b-z736m-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_98.css b/code/public/static/css/modules/footer/footer_98.css new file mode 100644 index 0000000..2662459 --- /dev/null +++ b/code/public/static/css/modules/footer/footer_98.css @@ -0,0 +1,48 @@ +/* footer_98.css */ +.__PFX__-f98-c-983a9-wrap,.__PFX__-f98-c-983a9-shell,.__PFX__-f98-c-983a9-mini,.__PFX__-f98-c-983a9-info{ + padding:19px 10px; + background:var(--bg-soft-color); + border-top:1px solid var(--border-color); + font-size:13px; + color:var(--text-color); + text-align:center; +} +.__PFX__-f98-c-983a9-map a{ + display:inline-block; + margin:0 10px 5px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f98-c-983a9-links a{ + display:block; + margin:0 0 7px 0; + color:var(--primary-color); +} +.__PFX__-f98-c-983a9-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f98-c-983a9-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:9px 0; +} +.__PFX__-f98-c-983a9-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f98-c-983a9-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.8; + margin-top:10px; +} +.__PFX__-f98-c-983a9-card{ + padding:13px 10px; + border:1px solid var(--border-color); + border-radius:8px; + background:var(--bg-color); + margin-bottom:13px; +} +.__PFX__-f98-c-983a9-addr{font-style:normal;display:block;margin-bottom:10px;} +.__PFX__-f98-c-983a9-brand{font-weight:600;} \ No newline at end of file diff --git a/code/public/static/css/modules/footer/footer_99.css b/code/public/static/css/modules/footer/footer_99.css new file mode 100644 index 0000000..61d324b --- /dev/null +++ b/code/public/static/css/modules/footer/footer_99.css @@ -0,0 +1,41 @@ +/* footer_99.css */ +.__PFX__-f99-d-4thoa-wrap,.__PFX__-f99-d-4thoa-shell,.__PFX__-f99-d-4thoa-mini,.__PFX__-f99-d-4thoa-info{ + padding:18px 12px; + background:var(--bg-color); + border-top:1px solid var(--border-color); + font-size:14px; + color:var(--text-color); + text-align:right; +} +.__PFX__-f99-d-4thoa-map a{ + display:inline-block; + margin:0 9px 6px 0; + color:var(--text-color); + font-size:12px; +} +.__PFX__-f99-d-4thoa-links a{ + display:inline-block; + margin:0 8px 4px 0; + color:var(--primary-color); +} +.__PFX__-f99-d-4thoa-links span{ + color:var(--text-muted-color); + margin-right:6px; +} +.__PFX__-f99-d-4thoa-desc{ + color:var(--text-muted-color); + line-height:1.6; + margin:6px 0; +} +.__PFX__-f99-d-4thoa-email{ + color:var(--text-color); + margin:5px 0; +} +.__PFX__-f99-d-4thoa-cr{ + color:var(--text-muted-color); + font-size:12px; + opacity:0.75; + margin-top:6px; +} +.__PFX__-f99-d-4thoa-addr{font-style:normal;display:block;margin-bottom:10px;} +.__PFX__-f99-d-4thoa-brand{font-weight:800;} \ No newline at end of file diff --git a/code/public/static/css/modules/global_base.css b/code/public/static/css/modules/global_base.css new file mode 100644 index 0000000..f70777b --- /dev/null +++ b/code/public/static/css/modules/global_base.css @@ -0,0 +1,58 @@ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; +} +*, *::before, *::after { box-sizing: border-box; } + +body { + line-height: 1.5; + font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif; + background: #f7f7f7; + color: #333; +} + +img { + display:block; + width:100%; + height:auto; + object-fit:cover; + background:#eee; +} + +a { + color:inherit; + text-decoration:none; +} + +section { margin-bottom:20px; } + +.__PFX__-main { + padding:12px 14px; +} + +.__PFX__-title { + font-size:16px; + font-weight:600; + color:var(--primary-color); + margin-bottom:12px; +} + +@media(min-width:768px){ + body { + max-width: var(--page-max-width); + margin:0 auto; + } +} diff --git a/code/public/static/css/modules/head/ads/ad_pack_01.css b/code/public/static/css/modules/head/ads/ad_pack_01.css new file mode 100644 index 0000000..d4128bd --- /dev/null +++ b/code/public/static/css/modules/head/ads/ad_pack_01.css @@ -0,0 +1,7 @@ +.site-header .ad-top { + margin-top: 10px; + padding: 6px; + background: rgba(0,0,0,.05); + text-align: center; + font-size: 13px; +} diff --git a/code/public/static/css/modules/head/ads/ad_pack_02.css b/code/public/static/css/modules/head/ads/ad_pack_02.css new file mode 100644 index 0000000..a106249 --- /dev/null +++ b/code/public/static/css/modules/head/ads/ad_pack_02.css @@ -0,0 +1,5 @@ +.site-header .ad-inline { + margin-left: 16px; + font-size: 12px; + opacity: .7; +} diff --git a/code/public/static/css/modules/head/base.css b/code/public/static/css/modules/head/base.css new file mode 100644 index 0000000..39628d3 --- /dev/null +++ b/code/public/static/css/modules/head/base.css @@ -0,0 +1,25 @@ +/* head/base.css */ +.site-header { + position: relative; + z-index: 50; + width: 100%; + background: var(--color_bg, #fff); + color: var(--color_text_primary, #111); +} + +.site-header a { + color: inherit; + text-decoration: none; +} + +.site-header-inner { + max-width: var(--page_max_width_pc, 1200px); + margin: 0 auto; + padding: 12px 16px; + box-sizing: border-box; +} + +.site-logo { + font-weight: 700; + font-size: 20px; +} diff --git a/code/public/static/css/modules/head/head_01.css b/code/public/static/css/modules/head/head_01.css new file mode 100644 index 0000000..b710abb --- /dev/null +++ b/code/public/static/css/modules/head/head_01.css @@ -0,0 +1,86 @@ +/* head_01.css */ +.__PFX__-hx9-bar { + background:var(--bg-color); + border-bottom:1px solid var(--border-color); + box-shadow: 0 2px 6px rgba(0,0,0,.03); +} +.__PFX__-hx9-inner { + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 12px; +} +.__PFX__-hx9-logo strong { + font-size: 20px; + color: var(--primary-color); +} +.__PFX__-hx9-navlist { + display: none; + list-style: none; + gap: 14px; +} +.__PFX__-hx9-navlist li a { + font-size: 13px; + color: #444; +} +.__PFX__-hx9-right { + flex: 1; + display: flex; + justify-content: flex-end; + margin-left: 8px; +} +.__PFX__-hx9-search input { + width: 100%; + max-width: 180px; + height: 32px; + border-radius: 999px; + border: 1px solid #ddd; + padding: 0 12px; + font-size: 13px; +} + +.__PFX__-hx9-searchC { + position: relative; +} + +.__PFX__-hx9-searchC input { + width:100%; + padding:6px 36px 6px 10px; + border-radius:18px; + border:1px solid var(--border-color); + background:var(--bg-soft-color); +} + +.__PFX__-hx9-iconBtn { + position:absolute; + right:6px; + top:50%; + transform:translateY(-50%); + border:none; + background:transparent; + color:var(--primary-color); + width:22px; + height:22px; + padding:0; +} +.__PFX__-hx9-iconBtn svg{ + width:100%; + height:100%; +} + +@media (min-width: 768px) { + .__PFX__-hx9-inner { + padding: 10px 24px; + } + .__PFX__-hx9-navlist { + display: flex; + } + .__PFX__-hx9-search input { + max-width: 220px; + } + .__PFX__-hx9-left { + margin-right: 10px; + } +} + + diff --git a/code/public/static/css/modules/head/head_02.css b/code/public/static/css/modules/head/head_02.css new file mode 100644 index 0000000..4b5f0f3 --- /dev/null +++ b/code/public/static/css/modules/head/head_02.css @@ -0,0 +1,37 @@ +/* head_02.css */ +.__PFX__-q2r-wrap { + background: linear-gradient(90deg, var(--primary-color), var(--secondary-color)); + color: #fff; +} +.__PFX__-q2r-topline { + padding: 4px 12px; + font-size: 11px; + opacity: .9; +} +.__PFX__-q2r-main { + padding: 10px 12px 12px; +} +.__PFX__-q2r-title { + font-size: 22px; + font-weight: 600; +} +.__PFX__-q2r-menu { + margin-top: 6px; + display: flex; + flex-wrap: wrap; + gap: 10px; +} +.__PFX__-q2r-menu a { + font-size: 13px; + padding: 2px 4px; + border-bottom: 1px solid rgba(255,255,255,.2); +} +@media (min-width: 768px) { + .__PFX__-q2r-main { + padding: 12px 24px 14px; + } + .__PFX__-q2r-menu a { + font-size: 14px; + padding: 3px 8px; + } +} diff --git a/code/public/static/css/modules/head/head_03.css b/code/public/static/css/modules/head/head_03.css new file mode 100644 index 0000000..58c255a --- /dev/null +++ b/code/public/static/css/modules/head/head_03.css @@ -0,0 +1,51 @@ +/* head_03.css */ +.__PFX__-m7c-head { + background: #ffffff; + border-bottom: 1px solid rgba(0,0,0,.05); +} +.__PFX__-m7c-row1 { + display: flex; + align-items: center; + padding: 10px 12px 6px; +} +.__PFX__-m7c-logo span { + font-size: 20px; + font-weight: 700; + color: var(--primary-color); +} +.__PFX__-m7c-search { + flex: 1; + margin-left: 10px; +} +.__PFX__-m7c-search input { + width: 100%; + height: 32px; + padding: 0 10px; + border-radius: 4px; + border: 1px solid #ddd; + font-size: 13px; +} +.__PFX__-m7c-row2 { + padding: 4px 10px 8px; +} +.__PFX__-m7c-row2 ul { + list-style: none; + display: flex; + gap: 10px; + overflow-x: auto; +} +.__PFX__-m7c-row2 a { + font-size: 13px; + color: #555; +} +@media (min-width: 768px) { + .__PFX__-m7c-row1 { + padding: 10px 24px 6px; + } + .__PFX__-m7c-row2 { + padding: 4px 24px 10px; + } + .__PFX__-m7c-row2 ul { + overflow-x: visible; + } +} diff --git a/code/public/static/css/modules/head/head_04.css b/code/public/static/css/modules/head/head_04.css new file mode 100644 index 0000000..d77b3a5 --- /dev/null +++ b/code/public/static/css/modules/head/head_04.css @@ -0,0 +1,37 @@ +/* head_04.css */ +.__PFX__-z4p-shell { + padding: 12px 10px; + background: #fff; + border-bottom: 1px solid rgba(0,0,0,.04); +} +.__PFX__-z4p-logo-box { + text-align: center; + margin-bottom: 6px; +} +.__PFX__-z4p-logo-text { + font-size: 24px; + font-weight: 700; + letter-spacing: 1px; + color: var(--primary-color); +} +.__PFX__-z4p-tags { + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 8px; +} +.__PFX__-z4p-tags span { + font-size: 12px; + padding: 3px 10px; + border-radius: 999px; + border: 1px solid rgba(0,0,0,.08); + background: #fafafa; +} +@media (min-width: 768px) { + .__PFX__-z4p-shell { + padding: 14px 24px; + } + .__PFX__-z4p-tags span { + font-size: 13px; + } +} diff --git a/code/public/static/css/modules/head/head_05.css b/code/public/static/css/modules/head/head_05.css new file mode 100644 index 0000000..35dc3fe --- /dev/null +++ b/code/public/static/css/modules/head/head_05.css @@ -0,0 +1,58 @@ +/* head_05.css */ +.__PFX__-t8k-head { + background: #fdfdfd; + border-bottom: 1px solid rgba(0,0,0,.05); +} +.__PFX__-t8k-strip { + padding: 4px 10px; + background: rgba(0,0,0,.02); +} +.__PFX__-t8k-strip small { + font-size: 11px; + color: #777; +} +.__PFX__-t8k-main { + display: flex; + align-items: center; + padding: 8px 10px 10px; +} +.__PFX__-t8k-logo { + font-size: 19px; + font-weight: 600; + color: var(--primary-color); +} +.__PFX__-t8k-mid nav { + display: none; +} +.__PFX__-t8k-right { + flex: 1; + display: flex; + justify-content: flex-end; + margin-left: 8px; +} +.__PFX__-t8k-right input { + width: 120px; + height: 30px; + border-radius: 4px; + border: 1px solid #ddd; + padding: 0 8px; + font-size: 13px; +} + +@media (min-width: 768px) { + .__PFX__-t8k-main { + padding: 10px 24px 12px; + } + .__PFX__-t8k-mid nav { + display: flex; + gap: 12px; + margin-left: 16px; + } + .__PFX__-t8k-mid a { + font-size: 13px; + color: #444; + } + .__PFX__-t8k-right input { + width: 180px; + } +} diff --git a/code/public/static/css/modules/head/head_06.css b/code/public/static/css/modules/head/head_06.css new file mode 100644 index 0000000..1134de9 --- /dev/null +++ b/code/public/static/css/modules/head/head_06.css @@ -0,0 +1,71 @@ +/* head_06.css */ + +.__PFX__-h6-wrap{ + background: var(--bg-color); + border-bottom:1px solid var(--border-color); + box-shadow:0 1px 2px var(--shadow-color); +} + +.__PFX__-h6-topbar{ + padding:4px 10px; + font-size:11px; + background:var(--grad-start); + background:linear-gradient(90deg,var(--grad-start),var(--grad-end)); + color:#fff; +} + +.__PFX__-h6-main{ + display:flex; + align-items:center; + justify-content:space-between; + padding:10px 12px; +} + +.__PFX__-h6-logo{ + font-size:18px; + font-weight:700; + color:var(--primary-color); + text-decoration:none; +} + +.__PFX__-h6-search{ + display:flex; + align-items:center; + gap:6px; +} + +.__PFX__-h6-search input{ + padding:6px 8px; + font-size:13px; + width:130px; + border:1px solid var(--border-color); + border-radius:6px; + background:var(--bg-soft-color); + color:var(--text-primary-color); +} + +.__PFX__-h6-btn{ + padding:6px 10px; + font-size:12px; + background:var(--primary-color); + border:none; + border-radius:6px; + color:#fff; + cursor:pointer; +} + +.__PFX__-h6-nav{ + display:none; +} + +.__PFX__-h6-nav a{ + font-size:13px; + color:var(--text-color); + text-decoration:none; +} +@media (min-width: 768px) { + .__PFX__-h6-nav{ + display:flex; + gap:10px; + } +} diff --git a/code/public/static/css/modules/head/head_07.css b/code/public/static/css/modules/head/head_07.css new file mode 100644 index 0000000..c91732f --- /dev/null +++ b/code/public/static/css/modules/head/head_07.css @@ -0,0 +1,63 @@ +/* head_07.css */ + +.__PFX__-h7-wrap{ + background:var(--bg-color); + padding:10px 0 6px; + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h7-logoBox{ + text-align:center; + margin-bottom:6px; +} + +.__PFX__-h7-logo{ + font-size:20px; + font-weight:700; + color:var(--primary-color); + text-decoration:none; +} + +.__PFX__-h7-row{ + display:flex; + align-items:center; + justify-content:space-between; + padding:0 12px; + gap:10px; +} + +.__PFX__-h7-menu{ + display:flex; + gap:12px; +} + +.__PFX__-h7-menu a{ + font-size:13px; + color:var(--text-color); +} + +.__PFX__-h7-search{ + position:relative; + min-width:140px; +} + +.__PFX__-h7-search input{ + width:100%; + padding:6px 30px 6px 10px; + border-radius:6px; + border:1px solid var(--border-color); + background:var(--bg-soft-color); +} + +.__PFX__-h7-icon{ + position:absolute; + top:50%; + right:6px; + transform:translateY(-50%); + border:none; + background:none; + width:18px; + height:18px; + padding:2px; + color:var(--primary-color); +} diff --git a/code/public/static/css/modules/head/head_08.css b/code/public/static/css/modules/head/head_08.css new file mode 100644 index 0000000..2ca9b00 --- /dev/null +++ b/code/public/static/css/modules/head/head_08.css @@ -0,0 +1,26 @@ +/* head_08.css */ + +.__PFX__-h8-wrap{ + display:flex; + align-items:center; + justify-content:space-between; + padding:12px 14px; + background:var(--bg-color); + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h8-logo{ + font-size:18px; + color:var(--primary-color); + font-weight:600; + text-decoration:none; +} + +.__PFX__-h8-search input{ + padding:7px 10px; + width:170px; + border-radius:6px; + border:1px solid var(--border-color); + background:var(--bg-soft-color); + font-size:13px; +} diff --git a/code/public/static/css/modules/head/head_09.css b/code/public/static/css/modules/head/head_09.css new file mode 100644 index 0000000..7df9c6f --- /dev/null +++ b/code/public/static/css/modules/head/head_09.css @@ -0,0 +1,64 @@ +/* head_09.css */ + +.__PFX__-h9-wrap{ + background:var(--bg-color); + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h9-top{ + display:flex; + align-items:center; + justify-content:space-between; + padding:12px; +} + +.__PFX__-h9-logo{ + font-size:19px; + font-weight:700; + color:var(--primary-color); + text-decoration:none; +} + +.__PFX__-h9-search{ + display:flex; + align-items:center; + gap:6px; +} + +.__PFX__-h9-search input{ + padding:6px 10px; + width:150px; + border:1px solid var(--border-color); + border-radius:6px; + background:var(--bg-soft-color); +} + +.__PFX__-h9-btn{ + padding:6px 10px; + background:var(--primary-color); + color:#fff; + font-size:12px; + border:none; + border-radius:6px; +} + +.__PFX__-h9-nav{ + overflow-x:auto; +} + +.__PFX__-h9-scroll{ + display:flex; + gap:12px; + padding:8px 12px; + scroll-snap-type:x mandatory; +} + +.__PFX__-h9-scroll::-webkit-scrollbar{ + display:none; +} + +.__PFX__-h9-scroll a{ + font-size:13px; + color:var(--text-color); + scroll-snap-align:start; +} diff --git a/code/public/static/css/modules/head/head_10.css b/code/public/static/css/modules/head/head_10.css new file mode 100644 index 0000000..0d89cb1 --- /dev/null +++ b/code/public/static/css/modules/head/head_10.css @@ -0,0 +1,57 @@ +/* head_10.css */ + +.__PFX__-h10-wrap{ + background:var(--bg-color); + padding:10px 12px; + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h10-main{ + display:flex; + align-items:center; + justify-content:space-between; +} + +.__PFX__-h10-logo{ + font-size:19px; + font-weight:700; + color:var(--primary-color); + text-decoration:none; +} + +.__PFX__-h10-searchBtn{ + width:32px; + height:32px; + border-radius:50%; + background:var(--primary-color); + border:none; + display:flex; + align-items:center; + justify-content:center; + color:#fff; +} + +.__PFX__-h10-form{ + margin-top:8px; +} + +.__PFX__-h10-form input{ + width:100%; + padding:7px 10px; + border-radius:6px; + border:1px solid var(--border-color); + background:var(--bg-soft-color); + font-size:13px; +} + +.__PFX__-h10-nav{ + display:flex; + gap:14px; + margin-top:10px; + padding-left:4px; +} + +.__PFX__-h10-nav a{ + font-size:13px; + color:var(--text-color); +} diff --git a/code/public/static/css/modules/head/head_100.css b/code/public/static/css/modules/head/head_100.css new file mode 100644 index 0000000..baf7b9a --- /dev/null +++ b/code/public/static/css/modules/head/head_100.css @@ -0,0 +1,18 @@ +/* head_100.css */ +.__PFX__-h100-mega{ + padding:8px 12px;border-bottom:1px solid var(--border-color); + background:linear-gradient(90deg,var(--bg-color),var(--bg-soft-color),var(--bg-color)); +} +.__PFX__-h100-bar{display:flex;align-items:center;gap:10px} +.__PFX__-h100-brand{font-weight:900;text-decoration:none;color:var(--text-color);white-space:nowrap} +.__PFX__-h100-search{flex:1;min-width:0} +.__PFX__-h100-search input{width:100%;padding:6px 10px;border-radius:10px;border:1px solid var(--border-color);background:rgba(255,255,255,.18)} +.__PFX__-h100-btn{border:1px solid var(--border-color);background:rgba(255,255,255,.18);border-radius:10px;padding:6px 10px} +.__PFX__-h100-nav{display:none;margin-top:8px} +body.__PFX__-h100-open .__PFX__-h100-nav{display:block} +.__PFX__-h100-home,.__PFX__-h100-cats{list-style:none;margin:0;padding:0} +.__PFX__-h100-home li,.__PFX__-h100-cats li{display:inline-block;margin:0 8px 8px 0} +.__PFX__-h100-home li a,.__PFX__-h100-cats li a{display:inline-block;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.55);text-decoration:none;color:var(--text-color);font-size:12px} +.__PFX__-h100-home li.active a{background:var(--primary-color);border-color:var(--primary-color);color:#fff;font-weight:900} +.__PFX__-h100-cats li.active a{background:var(--accent-color);border-color:var(--accent-color);font-weight:900} +@media(min-width:861px){.__PFX__-h100-btn{display:none}.__PFX__-h100-nav{display:block}} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_11.css b/code/public/static/css/modules/head/head_11.css new file mode 100644 index 0000000..3b8a8ed --- /dev/null +++ b/code/public/static/css/modules/head/head_11.css @@ -0,0 +1,37 @@ +/* head_11.css */ + +.__PFX__-h11-wrap{ + background:linear-gradient(135deg,var(--grad-start),var(--grad-end) 60%,var(--bg-color) 60%); + padding:14px 12px 10px; + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h11-logo{ + display:block; + text-align:center; + font-size:22px; + font-weight:700; + color:#fff; + margin-bottom:10px; +} + +.__PFX__-h11-search{ + display:flex; + align-items:center; + gap:6px; + padding:0 20px; +} + +.__PFX__-h11-search input{ + flex:1; + padding:7px 10px; + border:none; + border-radius:6px; + background:#fff; +} + +.__PFX__-h11-btn{ + padding:7px 10px; + background:#fff; + border-radius:6px; +} diff --git a/code/public/static/css/modules/head/head_12.css b/code/public/static/css/modules/head/head_12.css new file mode 100644 index 0000000..b39fece --- /dev/null +++ b/code/public/static/css/modules/head/head_12.css @@ -0,0 +1,48 @@ +/* head_12.css */ + +.__PFX__-h12-wrap{ + background:var(--bg-color); + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h12-top{ + height:4px; + background:var(--primary-color); +} + +.__PFX__-h12-main{ + padding:12px; + display:flex; + align-items:center; + justify-content:space-between; +} + +.__PFX__-h12-logo{ + font-size:20px; + font-weight:700; + color:var(--primary-color); +} + +.__PFX__-h12-search{ + flex:1; + margin-left:12px; + position:relative; +} + +.__PFX__-h12-search input{ + width:100%; + padding:8px 32px 8px 12px; + border-radius:6px; + border:1px solid var(--border-color); + background:var(--bg-soft-color); +} + +.__PFX__-h12-searchBtn{ + position:absolute; + right:8px; + top:50%; + transform:translateY(-50%); + background:none; + border:none; + color:var(--primary-color); +} diff --git a/code/public/static/css/modules/head/head_13.css b/code/public/static/css/modules/head/head_13.css new file mode 100644 index 0000000..f3550f0 --- /dev/null +++ b/code/public/static/css/modules/head/head_13.css @@ -0,0 +1,41 @@ +/* head_13.css */ + +.__PFX__-h13-wrap{ + padding:16px 14px; + background:linear-gradient(90deg,var(--grad-start),var(--grad-end)); + color:#fff; +} + +.__PFX__-h13-row{ + display:flex; + align-items:center; + justify-content:space-between; +} + +.__PFX__-h13-logo{ + font-size:22px; + font-weight:800; + color:#fff; +} + +.__PFX__-h13-btn{ + width:34px; + height:34px; + background:rgba(255,255,255,0.2); + border-radius:50%; + border:1px solid rgba(255,255,255,0.25); + display:flex; + align-items:center; + justify-content:center; +} + +.__PFX__-h13-form{ + margin-top:12px; +} + +.__PFX__-h13-form input{ + width:100%; + padding:8px 12px; + border-radius:8px; + border:none; +} diff --git a/code/public/static/css/modules/head/head_14.css b/code/public/static/css/modules/head/head_14.css new file mode 100644 index 0000000..4538eb6 --- /dev/null +++ b/code/public/static/css/modules/head/head_14.css @@ -0,0 +1,33 @@ +/* head_14.css */ + +.__PFX__-h14-wrap{ + padding:14px; + background: + repeating-linear-gradient( + 135deg, + var(--bg-soft-color), + var(--bg-soft-color) 6px, + var(--bg-color) 6px, + var(--bg-color) 12px + ); + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h14-row{ + display:flex; + justify-content:space-between; + align-items:center; +} + +.__PFX__-h14-logo{ + font-size:18px; + font-weight:700; + color:var(--primary-color); +} + +.__PFX__-h14-search input{ + width:150px; + padding:6px 10px; + border-radius:6px; + border:1px solid var(--border-color); +} diff --git a/code/public/static/css/modules/head/head_15.css b/code/public/static/css/modules/head/head_15.css new file mode 100644 index 0000000..9a06949 --- /dev/null +++ b/code/public/static/css/modules/head/head_15.css @@ -0,0 +1,36 @@ +/* head_15.css */ + +.__PFX__-h15-wrap{ + background:linear-gradient(180deg,var(--grad-start) 35%,var(--bg-color) 35%); + padding-bottom:6px; + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h15-logo{ + padding:14px; + font-size:20px; + color:#fff; + font-weight:700; +} + +.__PFX__-h15-search{ + padding:0 14px; +} + +.__PFX__-h15-search input{ + width:100%; + padding:8px 12px; + border:none; + border-radius:6px; +} + +.__PFX__-h15-nav{ + padding:8px 14px; + display:flex; + gap:12px; +} + +.__PFX__-h15-nav a{ + font-size:13px; + color:var(--text-color); +} diff --git a/code/public/static/css/modules/head/head_16.css b/code/public/static/css/modules/head/head_16.css new file mode 100644 index 0000000..6c9cc74 --- /dev/null +++ b/code/public/static/css/modules/head/head_16.css @@ -0,0 +1,35 @@ +/* head_16.css */ + +.__PFX__-h16-wrap{ + position:relative; + padding:18px 12px 34px; + background:linear-gradient(135deg,var(--grad-start),var(--grad-end)); +} + +.__PFX__-h16-logo{ + text-align:center; + font-size:22px; + color:#fff; + font-weight:800; +} + +.__PFX__-h16-searchBox{ + position:absolute; + left:50%; + bottom:-18px; + transform:translateX(-50%); + width:80%; + backdrop-filter:blur(8px); + -webkit-backdrop-filter:blur(8px); + background:rgba(255,255,255,0.4); + border-radius:12px; + padding:6px 12px; +} + +.__PFX__-h16-searchBox input{ + width:100%; + border:none; + background:transparent; + color:#000; + padding:6px; +} diff --git a/code/public/static/css/modules/head/head_17.css b/code/public/static/css/modules/head/head_17.css new file mode 100644 index 0000000..d3baf09 --- /dev/null +++ b/code/public/static/css/modules/head/head_17.css @@ -0,0 +1,39 @@ +/* head_17.css */ + +.__PFX__-h17-wrap{ + padding:14px; + background: + linear-gradient(135deg,var(--bg-color) 70%,var(--grad-start) 70%); + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h17-row{ + display:flex; + justify-content:space-between; + align-items:center; +} + +.__PFX__-h17-logo{ + font-size:20px; + color:var(--primary-color); + font-weight:700; +} + +.__PFX__-h17-search{ + display:flex; + align-items:center; + gap:8px; +} + +.__PFX__-h17-search input{ + padding:6px 10px; + border-radius:6px; + border:1px solid var(--border-color); +} + +.__PFX__-h17-btn{ + padding:6px 12px; + background:var(--primary-color); + border-radius:6px; + color:#fff; +} diff --git a/code/public/static/css/modules/head/head_18.css b/code/public/static/css/modules/head/head_18.css new file mode 100644 index 0000000..24674f7 --- /dev/null +++ b/code/public/static/css/modules/head/head_18.css @@ -0,0 +1,37 @@ +/* head_18.css */ + +.__PFX__-h18-wrap{ + padding:16px 12px; + background: + repeating-linear-gradient( + 90deg, + var(--bg-soft-color), + var(--bg-soft-color) 10px, + var(--bg-color) 10px, + var(--bg-color) 20px + ); + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h18-row{ + display:flex; + justify-content:space-between; + align-items:center; +} + +.__PFX__-h18-logo{ + font-size:22px; + font-weight:700; + color:var(--primary-color); +} + +.__PFX__-h18-btn{ + width:30px; + height:30px; + display:flex; + justify-content:center; + align-items:center; + background:var(--primary-color); + color:#fff; + border-radius:50%; +} diff --git a/code/public/static/css/modules/head/head_19.css b/code/public/static/css/modules/head/head_19.css new file mode 100644 index 0000000..3c4cead --- /dev/null +++ b/code/public/static/css/modules/head/head_19.css @@ -0,0 +1,25 @@ +/* head_19.css */ + +.__PFX__-h19-wrap{ + background:var(--bg-color); + padding:12px; + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h19-logo{ + font-size:24px; + font-weight:700; + color:var(--primary-color); +} + +.__PFX__-h19-search{ + margin-top:10px; +} + +.__PFX__-h19-search input{ + width:100%; + padding:8px 12px; + border-radius:8px; + border:1px solid var(--border-color); + background:var(--bg-soft-color); +} diff --git a/code/public/static/css/modules/head/head_20.css b/code/public/static/css/modules/head/head_20.css new file mode 100644 index 0000000..e431ed4 --- /dev/null +++ b/code/public/static/css/modules/head/head_20.css @@ -0,0 +1,25 @@ +/* head_20.css */ + +.__PFX__-h20-wrap{ + background:var(--bg-color); + padding:16px 14px; + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h20-logo{ + font-size:20px; + font-weight:800; + color:var(--primary-color); +} + +.__PFX__-h20-search{ + margin-top:12px; +} + +.__PFX__-h20-search input{ + width:100%; + padding:8px 12px; + border-radius:8px; + border:2px solid var(--primary-color); + background:var(--bg-soft-color); +} diff --git a/code/public/static/css/modules/head/head_21.css b/code/public/static/css/modules/head/head_21.css new file mode 100644 index 0000000..3accf88 --- /dev/null +++ b/code/public/static/css/modules/head/head_21.css @@ -0,0 +1,85 @@ +/* head_21.css */ + +.__PFX__-h21-wrap{ + padding:12px 12px 6px; + background: + radial-gradient(circle at 0% 0%, var(--grad-start) 0, transparent 55%), + radial-gradient(circle at 100% 0%, var(--grad-end) 0, transparent 55%), + var(--bg-color); + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h21-top{ + display:flex; + flex-direction:column; + gap:8px; +} + +.__PFX__-h21-logo{ + font-size:20px; + font-weight:700; + color:var(--primary-color); +} + +.__PFX__-h21-search{ + display:flex; + gap:6px; +} + +.__PFX__-h21-search input{ + flex:1; + padding:7px 10px; + border-radius:999px; + border:1px solid var(--border-color); + background:var(--bg-soft-color); + font-size:13px; +} + +.__PFX__-h21-searchBtn{ + padding:7px 10px; + border-radius:999px; + border:none; + background:var(--primary-color); + color:#fff; + font-size:12px; +} + +/* 类别导航:横向滚动,PC 居中展示 */ +.__PFX__-h21-nav{ + margin-top:8px; + overflow-x:auto; +} + +.__PFX__-h21-navInner{ + display:flex; + gap:10px; + padding:4px 2px 2px; + min-width:100%; +} + +.__PFX__-h21-navInner a{ + font-size:12px; + padding:4px 8px; + border-radius:999px; + background:var(--bg-soft-color); + white-space:nowrap; +} + +.__PFX__-h21-navInner a.active{ + background:var(--primary-color); + color:#fff; +} + +@media(min-width:768px){ + .__PFX__-h21-top{ + flex-direction:row; + align-items:center; + justify-content:space-between; + } + .__PFX__-h21-logo{ + font-size:22px; + } + .__PFX__-h21-navInner{ + justify-content:flex-start; + } +} diff --git a/code/public/static/css/modules/head/head_22.css b/code/public/static/css/modules/head/head_22.css new file mode 100644 index 0000000..b86900e --- /dev/null +++ b/code/public/static/css/modules/head/head_22.css @@ -0,0 +1,87 @@ +/* head_22.css */ + +.__PFX__-h22-wrap{ + padding:10px 12px 8px; + background: + repeating-linear-gradient( + 135deg, + var(--bg-soft-color), + var(--bg-soft-color) 8px, + var(--bg-color) 8px, + var(--bg-color) 16px + ); + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h22-main{ + display:flex; + align-items:center; + gap:10px; +} + +.__PFX__-h22-logo{ + font-size:19px; + font-weight:700; + color:var(--primary-color); +} + +.__PFX__-h22-search{ + flex:1; + display:flex; + align-items:center; + padding:2px; + border-radius:999px; + background:var(--bg-color); + border:1px solid var(--border-color); +} + +.__PFX__-h22-search input{ + flex:1; + border:none; + padding:6px 8px; + font-size:13px; + background:transparent; +} + +.__PFX__-h22-iconBtn{ + width:30px; + height:30px; + border-radius:50%; + border:none; + background:var(--primary-color); + color:#fff; + display:flex; + align-items:center; + justify-content:center; +} + +.__PFX__-h22-tabs{ + margin-top:6px; + display:flex; + flex-wrap:nowrap; + overflow-x:auto; + gap:8px; + padding-bottom:3px; +} + +.__PFX__-h22-tabs span{ + flex:0 0 auto; +} + +.__PFX__-h22-tabs a{ + display:inline-block; + padding:3px 8px; + border-radius:999px; + font-size:11px; + background:var(--bg-soft-color); +} + +.__PFX__-h22-tabs a.active{ + background:var(--primary-color); + color:#fff; +} + +@media(min-width:768px){ + .__PFX__-h22-logo{font-size:22px;} + .__PFX__-h22-tabs{flex-wrap:wrap;} +} diff --git a/code/public/static/css/modules/head/head_23.css b/code/public/static/css/modules/head/head_23.css new file mode 100644 index 0000000..f3b5f63 --- /dev/null +++ b/code/public/static/css/modules/head/head_23.css @@ -0,0 +1,69 @@ +/* head_23.css */ + +.__PFX__-h23-wrap{ + padding:16px 12px 10px; + background:linear-gradient(135deg,var(--grad-start),var(--grad-end)); + color:#fff; + border-bottom:1px solid rgba(255,255,255,0.15); +} + +.__PFX__-h23-top{ + text-align:center; +} + +.__PFX__-h23-logo{ + font-size:22px; + font-weight:800; +} + +.__PFX__-h23-sub{ + font-size:12px; + opacity:0.8; + margin-top:4px; +} + +.__PFX__-h23-search{ + margin:12px auto 8px; + max-width:480px; + display:flex; + gap:6px; +} + +.__PFX__-h23-search input{ + flex:1; + padding:7px 10px; + border-radius:999px; + border:none; +} + +.__PFX__-h23-btn{ + padding:7px 12px; + border-radius:999px; + border:none; + background:#00000033; + color:#fff; +} + +.__PFX__-h23-cats{ + display:flex; + gap:8px; + overflow-x:auto; + padding-bottom:3px; +} + +.__PFX__-h23-cats a{ + flex:0 0 auto; + font-size:11px; + padding:3px 8px; + border-radius:999px; + background:rgba(0,0,0,0.18); +} + +.__PFX__-h23-cats a.active{ + background:#fff; + color:var(--primary-color); +} + +@media(min-width:768px){ + .__PFX__-h23-logo{font-size:26px;} +} diff --git a/code/public/static/css/modules/head/head_24.css b/code/public/static/css/modules/head/head_24.css new file mode 100644 index 0000000..1ef9f43 --- /dev/null +++ b/code/public/static/css/modules/head/head_24.css @@ -0,0 +1,75 @@ +/* head_24.css */ + +.__PFX__-h24-wrap{ + padding:12px 12px 8px; + background: + linear-gradient(120deg,var(--grad-start) 0,var(--grad-end) 45%,var(--bg-color) 45%); + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h24-main{ + display:flex; + align-items:center; + gap:10px; +} + +.__PFX__-h24-logo{ + font-size:19px; + font-weight:700; + color:#fff; +} + +.__PFX__-h24-form{ + flex:1; + display:flex; + align-items:center; + background:#ffffffee; + border-radius:999px; + padding:2px 6px 2px 8px; +} + +.__PFX__-h24-form input{ + flex:1; + border:none; + padding:5px 6px; + font-size:13px; + background:transparent; +} + +.__PFX__-h24-icon{ + border:none; + background:transparent; + color:var(--primary-color); +} + +/* 分类导航 */ +.__PFX__-h24-nav{ + list-style:none; + margin:8px 0 0; + padding:0; + display:flex; + gap:8px; + overflow-x:auto; +} + +.__PFX__-h24-nav li{ + flex:0 0 auto; +} + +.__PFX__-h24-nav a{ + display:inline-block; + padding:3px 8px; + border-radius:999px; + font-size:11px; + background:rgba(255,255,255,0.85); + color:var(--text-color); +} + +.__PFX__-h24-nav a.active{ + background:var(--primary-color); + color:#fff; +} + +@media(min-width:768px){ + .__PFX__-h24-logo{font-size:22px;} +} diff --git a/code/public/static/css/modules/head/head_25.css b/code/public/static/css/modules/head/head_25.css new file mode 100644 index 0000000..d49cc7d --- /dev/null +++ b/code/public/static/css/modules/head/head_25.css @@ -0,0 +1,63 @@ +/* head_25.css */ + +.__PFX__-h25-wrap{ + padding:10px 12px 8px; + background:var(--bg-color); + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h25-tip{ + font-size:11px; + color:var(--text-muted-color); + margin-bottom:4px; +} + +.__PFX__-h25-row{ + display:flex; + align-items:center; + gap:10px; +} + +.__PFX__-h25-logo{ + font-size:18px; + font-weight:700; + color:var(--primary-color); +} + +.__PFX__-h25-search{ + flex:1; +} + +.__PFX__-h25-search input{ + width:100%; + padding:7px 10px; + border-radius:8px; + border:1px solid var(--border-color); + background:var(--bg-soft-color); +} + +/* 分类 chips */ +.__PFX__-h25-cats{ + margin-top:6px; + display:flex; + flex-wrap:nowrap; + gap:8px; + overflow-x:auto; +} + +.__PFX__-h25-cats a{ + flex:0 0 auto; + font-size:11px; + padding:3px 8px; + border-radius:999px; + background:var(--bg-soft-color); +} + +.__PFX__-h25-cats a.active{ + background:var(--primary-color); + color:#fff; +} + +@media(min-width:768px){ + .__PFX__-h25-logo{font-size:22px;} +} diff --git a/code/public/static/css/modules/head/head_26.css b/code/public/static/css/modules/head/head_26.css new file mode 100644 index 0000000..0998879 --- /dev/null +++ b/code/public/static/css/modules/head/head_26.css @@ -0,0 +1,58 @@ +/* head_26.css */ + +.__PFX__-h26-wrap{ + padding:14px 12px 10px; + background:radial-gradient(circle at 20% 0%,var(--grad-start),var(--bg-color) 55%); + border-bottom:1px solid var(--border-color); + color:#fff; +} + +.__PFX__-h26-center{ + text-align:center; +} + +.__PFX__-h26-logo{ + font-size:22px; + font-weight:800; +} + +.__PFX__-h26-desc{ + font-size:12px; + opacity:0.85; + margin-top:4px; +} + +/* 搜索下沉卡片 */ +.__PFX__-h26-search{ + margin:10px auto 8px; + max-width:480px; +} + +.__PFX__-h26-search input{ + width:100%; + padding:8px 12px; + border-radius:999px; + border:none; +} + +/* 分类 */ +.__PFX__-h26-tags{ + display:flex; + justify-content:center; + flex-wrap:wrap; + gap:8px; +} + +.__PFX__-h26-tags small a{ + display:inline-block; + font-size:11px; + padding:3px 8px; + border-radius:999px; + background:rgba(0,0,0,0.25); + color:#fff; +} + +.__PFX__-h26-tags small a.active{ + background:#fff; + color:var(--primary-color); +} diff --git a/code/public/static/css/modules/head/head_27.css b/code/public/static/css/modules/head/head_27.css new file mode 100644 index 0000000..ecd2f5e --- /dev/null +++ b/code/public/static/css/modules/head/head_27.css @@ -0,0 +1,63 @@ +/* head_27.css */ + +.__PFX__-h27-wrap{ + padding:10px 12px 8px; + background: + radial-gradient(circle at 0 0, var(--grad-start) 0, transparent 45%), + radial-gradient(circle at 100% 0, var(--grad-end) 0, transparent 45%), + repeating-linear-gradient( + 0deg, + var(--bg-color), + var(--bg-color) 8px, + var(--bg-soft-color) 8px, + var(--bg-soft-color) 9px + ); + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h27-row{ + display:flex; + align-items:center; + justify-content:space-between; + gap:8px; +} + +.__PFX__-h27-logo{ + font-size:18px; + font-weight:700; + color:var(--primary-color); +} + +.__PFX__-h27-search{ + flex:1; +} + +.__PFX__-h27-search input{ + width:100%; + padding:6px 10px; + border-radius:999px; + border:1px solid var(--border-color); +} + +.__PFX__-h27-navBlk{ + margin-top:6px; +} + +.__PFX__-h27-links{ + display:flex; + gap:8px; + overflow-x:auto; +} + +.__PFX__-h27-links a{ + flex:0 0 auto; + font-size:11px; + padding:3px 8px; + border-radius:6px; + background:var(--bg-soft-color); +} + +.__PFX__-h27-links a.active{ + background:var(--primary-color); + color:#fff; +} diff --git a/code/public/static/css/modules/head/head_28.css b/code/public/static/css/modules/head/head_28.css new file mode 100644 index 0000000..6e2b3d8 --- /dev/null +++ b/code/public/static/css/modules/head/head_28.css @@ -0,0 +1,66 @@ +/* head_28.css */ + +.__PFX__-h28-wrap{ + padding:12px 12px 8px; + background: + linear-gradient(90deg, + var(--grad-start) 0, + var(--grad-start) 20%, + var(--grad-end) 20%, + var(--grad-end) 40%, + var(--bg-color) 40%, + var(--bg-color) 100%); + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h28-logoBlk{ + text-align:center; +} + +.__PFX__-h28-logo{ + display:inline-block; + padding:3px 10px; + border-radius:999px; + background:rgba(255,255,255,0.9); + color:var(--primary-color); + font-weight:700; +} + +.__PFX__-h28-search{ + margin-top:8px; +} + +.__PFX__-h28-search input{ + width:100%; + padding:7px 10px; + border-radius:8px; + border:1px solid var(--border-color); +} + +/* 分类条形按钮 */ +.__PFX__-h28-catrow{ + margin-top:6px; + display:flex; + gap:6px; + overflow-x:auto; +} + +.__PFX__-h28-catrow button{ + flex:0 0 auto; + padding:0; + border:none; + background:transparent; +} + +.__PFX__-h28-catrow a{ + display:inline-block; + padding:3px 10px; + border-radius:999px; + background:rgba(255,255,255,0.7); + font-size:11px; +} + +.__PFX__-h28-catrow a.active{ + background:#000000dd; + color:#fff; +} diff --git a/code/public/static/css/modules/head/head_29.css b/code/public/static/css/modules/head/head_29.css new file mode 100644 index 0000000..0b7adf4 --- /dev/null +++ b/code/public/static/css/modules/head/head_29.css @@ -0,0 +1,70 @@ +/* head_29.css */ + +.__PFX__-h29-wrap{ + padding:10px 12px 8px; + background:linear-gradient(135deg,#050816,var(--bg-color)); + border-bottom:1px solid var(--border-color); + color:#f9fafb; +} + +.__PFX__-h29-main{ + display:flex; + flex-direction:column; + gap:8px; +} + +.__PFX__-h29-logo{ + font-size:20px; + font-weight:800; + color:var(--primary-color); +} + +.__PFX__-h29-searchBox{ + display:flex; + gap:6px; +} + +.__PFX__-h29-searchBox form{ + flex:1; +} + +.__PFX__-h29-searchBox input{ + width:100%; + padding:6px 10px; + border-radius:6px; + border:none; +} + +.__PFX__-h29-btn{ + padding:6px 10px; + border-radius:6px; + border:none; + background:var(--primary-color); + color:#fff; +} + +/* nav */ +.__PFX__-h29-nav{ + margin-top:6px; + display:flex; + flex-wrap:nowrap; + gap:10px; + overflow-x:auto; + font-size:11px; +} + +.__PFX__-h29-nav a{ + position:relative; + padding-bottom:3px; + flex:0 0 auto; +} + +.__PFX__-h29-nav a.active::after{ + content:''; + position:absolute; + left:0; + right:0; + bottom:0; + height:2px; + background:var(--primary-color); +} diff --git a/code/public/static/css/modules/head/head_30.css b/code/public/static/css/modules/head/head_30.css new file mode 100644 index 0000000..3234fa1 --- /dev/null +++ b/code/public/static/css/modules/head/head_30.css @@ -0,0 +1,60 @@ +/* head_30.css */ + +.__PFX__-h30-wrap{ + padding:12px 12px 10px; + background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h30-top{ + display:flex; + flex-direction:column; + gap:8px; +} + +.__PFX__-h30-logo{ + font-size:24px; + font-weight:800; + color:var(--primary-color); +} + +.__PFX__-h30-search input{ + width:100%; + padding:8px 12px; + border-radius:8px; + border:1px solid var(--border-color); +} + +/* 分类栏包围 */ +.__PFX__-h30-navBox{ + margin-top:8px; + background:var(--bg-soft-color); + border-radius:999px; + padding:4px 6px; +} + +.__PFX__-h30-nav{ + display:flex; + gap:8px; + overflow-x:auto; +} + +.__PFX__-h30-nav a{ + flex:0 0 auto; + padding:3px 9px; + border-radius:999px; + font-size:11px; +} + +.__PFX__-h30-nav a.active{ + background:var(--primary-color); + color:#fff; +} + +@media(min-width:768px){ + .__PFX__-h30-top{ + flex-direction:row; + align-items:center; + justify-content:space-between; + } +} diff --git a/code/public/static/css/modules/head/head_31.css b/code/public/static/css/modules/head/head_31.css new file mode 100644 index 0000000..e795642 --- /dev/null +++ b/code/public/static/css/modules/head/head_31.css @@ -0,0 +1,89 @@ +/* head_31.css - type1 */ +.__PFX__-9f4-wrap{ + padding:10px 12px 8px; + background:linear-gradient(120deg,var(--grad-start),var(--grad-end)); + color:#fff; +} +.__PFX__-9f4-top{ + display:flex; + align-items:center; + gap:8px; +} +.__PFX__-9f4-logoBox{ + display:flex; + flex-direction:column; + min-width:0; +} +.__PFX__-9f4-logo{ + font-size:18px; + font-weight:700; +} +.__PFX__-9f4-tag{ + font-size:11px; + opacity:.85; +} +.__PFX__-9f4-search{ + flex:1; + display:flex; + align-items:center; + background:rgba(15,23,42,.16); + border-radius:999px; + padding:3px 6px 3px 10px; +} +.__PFX__-9f4-search input{ + flex:1; + border:none; + background:transparent; + color:#fff; + font-size:13px; +} +.__PFX__-9f4-search input::placeholder{ + color:rgba(255,255,255,.7); +} +.__PFX__-9f4-sbtn{ + border:none; + background:transparent; + padding:2px 4px; + display:flex; + align-items:center; + cursor:pointer; + color:#fff; +} +.__PFX__-9f4-sbtn svg{ + width:16px; + height:16px; +} +.__PFX__-9f4-menu{ + margin-left:4px; + border:none; + background:rgba(15,23,42,.25); + width:30px; + height:30px; + border-radius:999px; + color:#fff; + cursor:pointer; +} +.__PFX__-9f4-nav{ + margin-top:6px; + margin-left:-4px; + margin-right:-4px; +} +.__PFX__-9f4-navInner a{ + display:inline-block; + margin:0 4px 4px; + padding:3px 8px; + border-radius:999px; + font-size:12px; + background:rgba(15,23,42,.13); + color:#fff; + white-space:nowrap; +} +.__PFX__-9f4-navInner a.active{ + background:#fff; + color:var(--primary-color); +} +@media(min-width:768px){ + .__PFX__-9f4-wrap{ + border-radius:0 0 16px 16px; + } +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_32.css b/code/public/static/css/modules/head/head_32.css new file mode 100644 index 0000000..1d01207 --- /dev/null +++ b/code/public/static/css/modules/head/head_32.css @@ -0,0 +1,84 @@ +/* head_32.css - type2 */ +.__PFX__-l7a-shell{ + padding:10px 12px 6px; + background:var(--bg-soft-color); + border-bottom:1px solid var(--border-color); +} +.__PFX__-l7a-bar{ + display:flex; + align-items:center; + justify-content:space-between; + gap:10px; +} +.__PFX__-l7a-brand{ + display:flex; + flex-direction:column; +} +.__PFX__-l7a-name{ + font-size:18px; + font-weight:600; + color:var(--primary-color); +} +.__PFX__-l7a-sub{ + font-size:11px; + color:var(--text-muted-color); +} +.__PFX__-l7a-toggle{ + width:32px; + height:32px; + border-radius:999px; + border:1px solid var(--border-color); + background:#fff; + cursor:pointer; +} +.__PFX__-l7a-search{ + margin-top:6px; + display:flex; + background:#fff; + border-radius:999px; + border:1px solid var(--border-color); + padding:3px 4px 3px 10px; +} +.__PFX__-l7a-search input{ + flex:1; + border:none; + font-size:13px; + background:transparent; +} +.__PFX__-l7a-go{ + min-width:48px; + border:none; + border-radius:999px; + background:var(--primary-color); + color:#fff; + font-size:13px; + cursor:pointer; +} +.__PFX__-l7a-nav{ + margin-top:4px; +} +.__PFX__-l7a-navList{ + list-style:none; + padding:0; + margin:0; + display:flex; + gap:8px; + overflow-x:auto; +} +.__PFX__-l7a-navList a{ + display:inline-block; + padding:4px 10px; + border-radius:999px; + font-size:12px; + background:#fff; + color:var(--text-color); + white-space:nowrap; +} +.__PFX__-l7a-navList a.active{ + background:var(--primary-color); + color:#fff; +} +@media(min-width:768px){ + .__PFX__-l7a-toggle{display:none;} + .__PFX__-l7a-navList{justify-content:flex-end;} +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_33.css b/code/public/static/css/modules/head/head_33.css new file mode 100644 index 0000000..b12e675 --- /dev/null +++ b/code/public/static/css/modules/head/head_33.css @@ -0,0 +1,68 @@ +/* head_33.css - type3 */ +.__PFX__-xyo-wrap{ + padding:10px 12px 4px; + background:var(--bg-color); + border-bottom:1px solid var(--border-color); +} +.__PFX__-xyo-row1{ + display:flex; + align-items:center; + gap:8px; +} +.__PFX__-xyo-hamb{ + width:32px; + height:32px; + border-radius:999px; + border:1px solid var(--border-color); + background:transparent; + cursor:pointer; +} +.__PFX__-xyo-brand{ + flex:0 0 auto; + font-size:18px; + font-weight:700; + color:var(--primary-color); +} +.__PFX__-xyo-search{ + flex:1; + display:flex; + background:var(--bg-soft-color); + border-radius:999px; + padding:3px 4px 3px 10px; +} +.__PFX__-xyo-search input{ + flex:1; + border:none; + font-size:13px; + background:transparent; +} +.__PFX__-xyo-icon{ + border:none; + background:transparent; + padding:0 6px; + display:flex; + align-items:center; + cursor:pointer; + color:var(--text-muted-color); +} +.__PFX__-xyo-icon svg{ + width:16px; + height:16px; +} +.__PFX__-xyo-row2{ + margin-top:6px; +} +.__PFX__-xyo-pillBar a{ + display:inline-block; + margin:0 6px 4px 0; + padding:3px 10px; + border-radius:999px; + border:1px solid var(--border-color); + font-size:12px; + white-space:nowrap; +} +.__PFX__-xyo-pillBar a.active{ + background:var(--primary-color); + border-color:var(--primary-color); + color:#fff; +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_34.css b/code/public/static/css/modules/head/head_34.css new file mode 100644 index 0000000..2116b69 --- /dev/null +++ b/code/public/static/css/modules/head/head_34.css @@ -0,0 +1,70 @@ +/* head_34.css - type4 */ +.__PFX__-eyz-header{ + background:var(--bg-soft-color); + border-bottom:1px solid var(--border-color); +} +.__PFX__-eyz-meta{ + padding:4px 12px; + font-size:11px; + display:flex; + justify-content:space-between; + color:var(--text-muted-color); +} +.__PFX__-eyz-main{ + padding:6px 12px 8px; + display:flex; + align-items:center; + gap:10px; +} +.__PFX__-eyz-logo{ + font-size:19px; + font-weight:700; + color:var(--primary-color); +} +.__PFX__-eyz-search{ + flex:1; + display:flex; + background:#fff; + border-radius:10px; + border:1px solid var(--border-color); + padding:3px 4px 3px 10px; +} +.__PFX__-eyz-search input{ + flex:1; + border:none; + font-size:13px; + background:transparent; +} +.__PFX__-eyz-btn{ + min-width:58px; + border:none; + border-radius:8px; + font-size:13px; + background:var(--primary-color); + color:#fff; + cursor:pointer; +} +.__PFX__-eyz-menuBtn{ + width:32px; + height:32px; + border-radius:999px; + border:1px solid var(--border-color); + background:transparent; + cursor:pointer; +} +.__PFX__-eyz-nav{ + padding:0 10px 8px; +} +.__PFX__-eyz-chips a{ + display:inline-block; + margin:4px 4px 0; + padding:3px 9px; + border-radius:999px; + font-size:12px; + background:#fff; + border:1px solid transparent; +} +.__PFX__-eyz-chips a.active{ + border-color:var(--primary-color); + color:var(--primary-color); +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_35.css b/code/public/static/css/modules/head/head_35.css new file mode 100644 index 0000000..d6e5773 --- /dev/null +++ b/code/public/static/css/modules/head/head_35.css @@ -0,0 +1,63 @@ +/* head_35.css - type5 */ +.__PFX__-gch-wrap{ + padding:10px 12px 8px; + background:radial-gradient(circle at top,var(--grad-start),var(--bg-color)); + border-bottom:1px solid var(--border-color); +} +.__PFX__-gch-top{ + display:flex; + align-items:center; + justify-content:space-between; + gap:8px; +} +.__PFX__-gch-title{ + font-size:18px; + font-weight:700; + color:var(--text_primary,#111827); +} +.__PFX__-gch-menu{ + width:32px; + height:32px; + border-radius:999px; + border:1px solid var(--border-color); + background:rgba(255,255,255,.7); + cursor:pointer; +} +.__PFX__-gch-search{ + margin-top:6px; + display:flex; + background:#fff; + border-radius:999px; + border:1px solid var(--border-color); + padding:3px 4px 3px 10px; +} +.__PFX__-gch-search input{ + flex:1; + border:none; + font-size:13px; + background:transparent; +} +.__PFX__-gch-sbtn{ + min-width:50px; + border:none; + border-radius:999px; + background:var(--primary-color); + color:#fff; + font-size:13px; + cursor:pointer; +} +.__PFX__-gch-nav{ + margin-top:4px; +} +.__PFX__-gch-links a{ + display:inline-block; + margin:3px 6px 0 0; + padding:3px 8px; + font-size:12px; + border-radius:6px; + background:rgba(255,255,255,.85); +} +.__PFX__-gch-links a.active{ + background:var(--primary-color); + color:#fff; +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_36.css b/code/public/static/css/modules/head/head_36.css new file mode 100644 index 0000000..eb25e3c --- /dev/null +++ b/code/public/static/css/modules/head/head_36.css @@ -0,0 +1,89 @@ +/* head_36.css - type1 */ +.__PFX__-nyg-wrap{ + padding:10px 12px 8px; + background:linear-gradient(120deg,var(--grad-start),var(--grad-end)); + color:#fff; +} +.__PFX__-nyg-top{ + display:flex; + align-items:center; + gap:8px; +} +.__PFX__-nyg-logoBox{ + display:flex; + flex-direction:column; + min-width:0; +} +.__PFX__-nyg-logo{ + font-size:18px; + font-weight:700; +} +.__PFX__-nyg-tag{ + font-size:11px; + opacity:.85; +} +.__PFX__-nyg-search{ + flex:1; + display:flex; + align-items:center; + background:rgba(15,23,42,.16); + border-radius:999px; + padding:3px 6px 3px 10px; +} +.__PFX__-nyg-search input{ + flex:1; + border:none; + background:transparent; + color:#fff; + font-size:13px; +} +.__PFX__-nyg-search input::placeholder{ + color:rgba(255,255,255,.7); +} +.__PFX__-nyg-sbtn{ + border:none; + background:transparent; + padding:2px 4px; + display:flex; + align-items:center; + cursor:pointer; + color:#fff; +} +.__PFX__-nyg-sbtn svg{ + width:16px; + height:16px; +} +.__PFX__-nyg-menu{ + margin-left:4px; + border:none; + background:rgba(15,23,42,.25); + width:30px; + height:30px; + border-radius:999px; + color:#fff; + cursor:pointer; +} +.__PFX__-nyg-nav{ + margin-top:6px; + margin-left:-4px; + margin-right:-4px; +} +.__PFX__-nyg-navInner a{ + display:inline-block; + margin:0 4px 4px; + padding:3px 8px; + border-radius:999px; + font-size:12px; + background:rgba(15,23,42,.13); + color:#fff; + white-space:nowrap; +} +.__PFX__-nyg-navInner a.active{ + background:#fff; + color:var(--primary-color); +} +@media(min-width:768px){ + .__PFX__-nyg-wrap{ + border-radius:0 0 16px 16px; + } +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_37.css b/code/public/static/css/modules/head/head_37.css new file mode 100644 index 0000000..e2c3797 --- /dev/null +++ b/code/public/static/css/modules/head/head_37.css @@ -0,0 +1,84 @@ +/* head_37.css - type2 */ +.__PFX__-0db-shell{ + padding:10px 12px 6px; + background:var(--bg-soft-color); + border-bottom:1px solid var(--border-color); +} +.__PFX__-0db-bar{ + display:flex; + align-items:center; + justify-content:space-between; + gap:10px; +} +.__PFX__-0db-brand{ + display:flex; + flex-direction:column; +} +.__PFX__-0db-name{ + font-size:18px; + font-weight:600; + color:var(--primary-color); +} +.__PFX__-0db-sub{ + font-size:11px; + color:var(--text-muted-color); +} +.__PFX__-0db-toggle{ + width:32px; + height:32px; + border-radius:999px; + border:1px solid var(--border-color); + background:#fff; + cursor:pointer; +} +.__PFX__-0db-search{ + margin-top:6px; + display:flex; + background:#fff; + border-radius:999px; + border:1px solid var(--border-color); + padding:3px 4px 3px 10px; +} +.__PFX__-0db-search input{ + flex:1; + border:none; + font-size:13px; + background:transparent; +} +.__PFX__-0db-go{ + min-width:48px; + border:none; + border-radius:999px; + background:var(--primary-color); + color:#fff; + font-size:13px; + cursor:pointer; +} +.__PFX__-0db-nav{ + margin-top:4px; +} +.__PFX__-0db-navList{ + list-style:none; + padding:0; + margin:0; + display:flex; + gap:8px; + overflow-x:auto; +} +.__PFX__-0db-navList a{ + display:inline-block; + padding:4px 10px; + border-radius:999px; + font-size:12px; + background:#fff; + color:var(--text-color); + white-space:nowrap; +} +.__PFX__-0db-navList a.active{ + background:var(--primary-color); + color:#fff; +} +@media(min-width:768px){ + .__PFX__-0db-toggle{display:none;} + .__PFX__-0db-navList{justify-content:flex-end;} +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_38.css b/code/public/static/css/modules/head/head_38.css new file mode 100644 index 0000000..d55041a --- /dev/null +++ b/code/public/static/css/modules/head/head_38.css @@ -0,0 +1,68 @@ +/* head_38.css - type3 */ +.__PFX__-96e-wrap{ + padding:10px 12px 4px; + background:var(--bg-color); + border-bottom:1px solid var(--border-color); +} +.__PFX__-96e-row1{ + display:flex; + align-items:center; + gap:8px; +} +.__PFX__-96e-hamb{ + width:32px; + height:32px; + border-radius:999px; + border:1px solid var(--border-color); + background:transparent; + cursor:pointer; +} +.__PFX__-96e-brand{ + flex:0 0 auto; + font-size:18px; + font-weight:700; + color:var(--primary-color); +} +.__PFX__-96e-search{ + flex:1; + display:flex; + background:var(--bg-soft-color); + border-radius:999px; + padding:3px 4px 3px 10px; +} +.__PFX__-96e-search input{ + flex:1; + border:none; + font-size:13px; + background:transparent; +} +.__PFX__-96e-icon{ + border:none; + background:transparent; + padding:0 6px; + display:flex; + align-items:center; + cursor:pointer; + color:var(--text-muted-color); +} +.__PFX__-96e-icon svg{ + width:16px; + height:16px; +} +.__PFX__-96e-row2{ + margin-top:6px; +} +.__PFX__-96e-pillBar a{ + display:inline-block; + margin:0 6px 4px 0; + padding:3px 10px; + border-radius:999px; + border:1px solid var(--border-color); + font-size:12px; + white-space:nowrap; +} +.__PFX__-96e-pillBar a.active{ + background:var(--primary-color); + border-color:var(--primary-color); + color:#fff; +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_39.css b/code/public/static/css/modules/head/head_39.css new file mode 100644 index 0000000..b211d69 --- /dev/null +++ b/code/public/static/css/modules/head/head_39.css @@ -0,0 +1,70 @@ +/* head_39.css - type4 */ +.__PFX__-mmb-header{ + background:var(--bg-soft-color); + border-bottom:1px solid var(--border-color); +} +.__PFX__-mmb-meta{ + padding:4px 12px; + font-size:11px; + display:flex; + justify-content:space-between; + color:var(--text-muted-color); +} +.__PFX__-mmb-main{ + padding:6px 12px 8px; + display:flex; + align-items:center; + gap:10px; +} +.__PFX__-mmb-logo{ + font-size:19px; + font-weight:700; + color:var(--primary-color); +} +.__PFX__-mmb-search{ + flex:1; + display:flex; + background:#fff; + border-radius:10px; + border:1px solid var(--border-color); + padding:3px 4px 3px 10px; +} +.__PFX__-mmb-search input{ + flex:1; + border:none; + font-size:13px; + background:transparent; +} +.__PFX__-mmb-btn{ + min-width:58px; + border:none; + border-radius:8px; + font-size:13px; + background:var(--primary-color); + color:#fff; + cursor:pointer; +} +.__PFX__-mmb-menuBtn{ + width:32px; + height:32px; + border-radius:999px; + border:1px solid var(--border-color); + background:transparent; + cursor:pointer; +} +.__PFX__-mmb-nav{ + padding:0 10px 8px; +} +.__PFX__-mmb-chips a{ + display:inline-block; + margin:4px 4px 0; + padding:3px 9px; + border-radius:999px; + font-size:12px; + background:#fff; + border:1px solid transparent; +} +.__PFX__-mmb-chips a.active{ + border-color:var(--primary-color); + color:var(--primary-color); +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_40.css b/code/public/static/css/modules/head/head_40.css new file mode 100644 index 0000000..e6f1950 --- /dev/null +++ b/code/public/static/css/modules/head/head_40.css @@ -0,0 +1,63 @@ +/* head_40.css - type5 */ +.__PFX__-oz3-wrap{ + padding:10px 12px 8px; + background:radial-gradient(circle at top,var(--grad-start),var(--bg-color)); + border-bottom:1px solid var(--border-color); +} +.__PFX__-oz3-top{ + display:flex; + align-items:center; + justify-content:space-between; + gap:8px; +} +.__PFX__-oz3-title{ + font-size:18px; + font-weight:700; + color:var(--text_primary,#111827); +} +.__PFX__-oz3-menu{ + width:32px; + height:32px; + border-radius:999px; + border:1px solid var(--border-color); + background:rgba(255,255,255,.7); + cursor:pointer; +} +.__PFX__-oz3-search{ + margin-top:6px; + display:flex; + background:#fff; + border-radius:999px; + border:1px solid var(--border-color); + padding:3px 4px 3px 10px; +} +.__PFX__-oz3-search input{ + flex:1; + border:none; + font-size:13px; + background:transparent; +} +.__PFX__-oz3-sbtn{ + min-width:50px; + border:none; + border-radius:999px; + background:var(--primary-color); + color:#fff; + font-size:13px; + cursor:pointer; +} +.__PFX__-oz3-nav{ + margin-top:4px; +} +.__PFX__-oz3-links a{ + display:inline-block; + margin:3px 6px 0 0; + padding:3px 8px; + font-size:12px; + border-radius:6px; + background:rgba(255,255,255,.85); +} +.__PFX__-oz3-links a.active{ + background:var(--primary-color); + color:#fff; +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_41.css b/code/public/static/css/modules/head/head_41.css new file mode 100644 index 0000000..2a37dde --- /dev/null +++ b/code/public/static/css/modules/head/head_41.css @@ -0,0 +1,89 @@ +/* head_41.css - type1 */ +.__PFX__-w7b-wrap{ + padding:10px 12px 8px; + background:linear-gradient(120deg,var(--grad-start),var(--grad-end)); + color:#fff; +} +.__PFX__-w7b-top{ + display:flex; + align-items:center; + gap:8px; +} +.__PFX__-w7b-logoBox{ + display:flex; + flex-direction:column; + min-width:0; +} +.__PFX__-w7b-logo{ + font-size:18px; + font-weight:700; +} +.__PFX__-w7b-tag{ + font-size:11px; + opacity:.85; +} +.__PFX__-w7b-search{ + flex:1; + display:flex; + align-items:center; + background:rgba(15,23,42,.16); + border-radius:999px; + padding:3px 6px 3px 10px; +} +.__PFX__-w7b-search input{ + flex:1; + border:none; + background:transparent; + color:#fff; + font-size:13px; +} +.__PFX__-w7b-search input::placeholder{ + color:rgba(255,255,255,.7); +} +.__PFX__-w7b-sbtn{ + border:none; + background:transparent; + padding:2px 4px; + display:flex; + align-items:center; + cursor:pointer; + color:#fff; +} +.__PFX__-w7b-sbtn svg{ + width:16px; + height:16px; +} +.__PFX__-w7b-menu{ + margin-left:4px; + border:none; + background:rgba(15,23,42,.25); + width:30px; + height:30px; + border-radius:999px; + color:#fff; + cursor:pointer; +} +.__PFX__-w7b-nav{ + margin-top:6px; + margin-left:-4px; + margin-right:-4px; +} +.__PFX__-w7b-navInner a{ + display:inline-block; + margin:0 4px 4px; + padding:3px 8px; + border-radius:999px; + font-size:12px; + background:rgba(15,23,42,.13); + color:#fff; + white-space:nowrap; +} +.__PFX__-w7b-navInner a.active{ + background:#fff; + color:var(--primary-color); +} +@media(min-width:768px){ + .__PFX__-w7b-wrap{ + border-radius:0 0 16px 16px; + } +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_42.css b/code/public/static/css/modules/head/head_42.css new file mode 100644 index 0000000..cedb90e --- /dev/null +++ b/code/public/static/css/modules/head/head_42.css @@ -0,0 +1,84 @@ +/* head_42.css - type2 */ +.__PFX__-h8m-shell{ + padding:10px 12px 6px; + background:var(--bg-soft-color); + border-bottom:1px solid var(--border-color); +} +.__PFX__-h8m-bar{ + display:flex; + align-items:center; + justify-content:space-between; + gap:10px; +} +.__PFX__-h8m-brand{ + display:flex; + flex-direction:column; +} +.__PFX__-h8m-name{ + font-size:18px; + font-weight:600; + color:var(--primary-color); +} +.__PFX__-h8m-sub{ + font-size:11px; + color:var(--text-muted-color); +} +.__PFX__-h8m-toggle{ + width:32px; + height:32px; + border-radius:999px; + border:1px solid var(--border-color); + background:#fff; + cursor:pointer; +} +.__PFX__-h8m-search{ + margin-top:6px; + display:flex; + background:#fff; + border-radius:999px; + border:1px solid var(--border-color); + padding:3px 4px 3px 10px; +} +.__PFX__-h8m-search input{ + flex:1; + border:none; + font-size:13px; + background:transparent; +} +.__PFX__-h8m-go{ + min-width:48px; + border:none; + border-radius:999px; + background:var(--primary-color); + color:#fff; + font-size:13px; + cursor:pointer; +} +.__PFX__-h8m-nav{ + margin-top:4px; +} +.__PFX__-h8m-navList{ + list-style:none; + padding:0; + margin:0; + display:flex; + gap:8px; + overflow-x:auto; +} +.__PFX__-h8m-navList a{ + display:inline-block; + padding:4px 10px; + border-radius:999px; + font-size:12px; + background:#fff; + color:var(--text-color); + white-space:nowrap; +} +.__PFX__-h8m-navList a.active{ + background:var(--primary-color); + color:#fff; +} +@media(min-width:768px){ + .__PFX__-h8m-toggle{display:none;} + .__PFX__-h8m-navList{justify-content:flex-end;} +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_43.css b/code/public/static/css/modules/head/head_43.css new file mode 100644 index 0000000..4ba87ec --- /dev/null +++ b/code/public/static/css/modules/head/head_43.css @@ -0,0 +1,68 @@ +/* head_43.css - type3 */ +.__PFX__-nhp-wrap{ + padding:10px 12px 4px; + background:var(--bg-color); + border-bottom:1px solid var(--border-color); +} +.__PFX__-nhp-row1{ + display:flex; + align-items:center; + gap:8px; +} +.__PFX__-nhp-hamb{ + width:32px; + height:32px; + border-radius:999px; + border:1px solid var(--border-color); + background:transparent; + cursor:pointer; +} +.__PFX__-nhp-brand{ + flex:0 0 auto; + font-size:18px; + font-weight:700; + color:var(--primary-color); +} +.__PFX__-nhp-search{ + flex:1; + display:flex; + background:var(--bg-soft-color); + border-radius:999px; + padding:3px 4px 3px 10px; +} +.__PFX__-nhp-search input{ + flex:1; + border:none; + font-size:13px; + background:transparent; +} +.__PFX__-nhp-icon{ + border:none; + background:transparent; + padding:0 6px; + display:flex; + align-items:center; + cursor:pointer; + color:var(--text-muted-color); +} +.__PFX__-nhp-icon svg{ + width:16px; + height:16px; +} +.__PFX__-nhp-row2{ + margin-top:6px; +} +.__PFX__-nhp-pillBar a{ + display:inline-block; + margin:0 6px 4px 0; + padding:3px 10px; + border-radius:999px; + border:1px solid var(--border-color); + font-size:12px; + white-space:nowrap; +} +.__PFX__-nhp-pillBar a.active{ + background:var(--primary-color); + border-color:var(--primary-color); + color:#fff; +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_44.css b/code/public/static/css/modules/head/head_44.css new file mode 100644 index 0000000..6a1f181 --- /dev/null +++ b/code/public/static/css/modules/head/head_44.css @@ -0,0 +1,70 @@ +/* head_44.css - type4 */ +.__PFX__-chi-header{ + background:var(--bg-soft-color); + border-bottom:1px solid var(--border-color); +} +.__PFX__-chi-meta{ + padding:4px 12px; + font-size:11px; + display:flex; + justify-content:space-between; + color:var(--text-muted-color); +} +.__PFX__-chi-main{ + padding:6px 12px 8px; + display:flex; + align-items:center; + gap:10px; +} +.__PFX__-chi-logo{ + font-size:19px; + font-weight:700; + color:var(--primary-color); +} +.__PFX__-chi-search{ + flex:1; + display:flex; + background:#fff; + border-radius:10px; + border:1px solid var(--border-color); + padding:3px 4px 3px 10px; +} +.__PFX__-chi-search input{ + flex:1; + border:none; + font-size:13px; + background:transparent; +} +.__PFX__-chi-btn{ + min-width:58px; + border:none; + border-radius:8px; + font-size:13px; + background:var(--primary-color); + color:#fff; + cursor:pointer; +} +.__PFX__-chi-menuBtn{ + width:32px; + height:32px; + border-radius:999px; + border:1px solid var(--border-color); + background:transparent; + cursor:pointer; +} +.__PFX__-chi-nav{ + padding:0 10px 8px; +} +.__PFX__-chi-chips a{ + display:inline-block; + margin:4px 4px 0; + padding:3px 9px; + border-radius:999px; + font-size:12px; + background:#fff; + border:1px solid transparent; +} +.__PFX__-chi-chips a.active{ + border-color:var(--primary-color); + color:var(--primary-color); +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_45.css b/code/public/static/css/modules/head/head_45.css new file mode 100644 index 0000000..fe17ca4 --- /dev/null +++ b/code/public/static/css/modules/head/head_45.css @@ -0,0 +1,63 @@ +/* head_45.css - type5 */ +.__PFX__-9xf-wrap{ + padding:10px 12px 8px; + background:radial-gradient(circle at top,var(--grad-start),var(--bg-color)); + border-bottom:1px solid var(--border-color); +} +.__PFX__-9xf-top{ + display:flex; + align-items:center; + justify-content:space-between; + gap:8px; +} +.__PFX__-9xf-title{ + font-size:18px; + font-weight:700; + color:var(--text_primary,#111827); +} +.__PFX__-9xf-menu{ + width:32px; + height:32px; + border-radius:999px; + border:1px solid var(--border-color); + background:rgba(255,255,255,.7); + cursor:pointer; +} +.__PFX__-9xf-search{ + margin-top:6px; + display:flex; + background:#fff; + border-radius:999px; + border:1px solid var(--border-color); + padding:3px 4px 3px 10px; +} +.__PFX__-9xf-search input{ + flex:1; + border:none; + font-size:13px; + background:transparent; +} +.__PFX__-9xf-sbtn{ + min-width:50px; + border:none; + border-radius:999px; + background:var(--primary-color); + color:#fff; + font-size:13px; + cursor:pointer; +} +.__PFX__-9xf-nav{ + margin-top:4px; +} +.__PFX__-9xf-links a{ + display:inline-block; + margin:3px 6px 0 0; + padding:3px 8px; + font-size:12px; + border-radius:6px; + background:rgba(255,255,255,.85); +} +.__PFX__-9xf-links a.active{ + background:var(--primary-color); + color:#fff; +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_46.css b/code/public/static/css/modules/head/head_46.css new file mode 100644 index 0000000..a168cca --- /dev/null +++ b/code/public/static/css/modules/head/head_46.css @@ -0,0 +1,89 @@ +/* head_46.css - type1 */ +.__PFX__-3r2-wrap{ + padding:10px 12px 8px; + background:linear-gradient(120deg,var(--grad-start),var(--grad-end)); + color:#fff; +} +.__PFX__-3r2-top{ + display:flex; + align-items:center; + gap:8px; +} +.__PFX__-3r2-logoBox{ + display:flex; + flex-direction:column; + min-width:0; +} +.__PFX__-3r2-logo{ + font-size:18px; + font-weight:700; +} +.__PFX__-3r2-tag{ + font-size:11px; + opacity:.85; +} +.__PFX__-3r2-search{ + flex:1; + display:flex; + align-items:center; + background:rgba(15,23,42,.16); + border-radius:999px; + padding:3px 6px 3px 10px; +} +.__PFX__-3r2-search input{ + flex:1; + border:none; + background:transparent; + color:#fff; + font-size:13px; +} +.__PFX__-3r2-search input::placeholder{ + color:rgba(255,255,255,.7); +} +.__PFX__-3r2-sbtn{ + border:none; + background:transparent; + padding:2px 4px; + display:flex; + align-items:center; + cursor:pointer; + color:#fff; +} +.__PFX__-3r2-sbtn svg{ + width:16px; + height:16px; +} +.__PFX__-3r2-menu{ + margin-left:4px; + border:none; + background:rgba(15,23,42,.25); + width:30px; + height:30px; + border-radius:999px; + color:#fff; + cursor:pointer; +} +.__PFX__-3r2-nav{ + margin-top:6px; + margin-left:-4px; + margin-right:-4px; +} +.__PFX__-3r2-navInner a{ + display:inline-block; + margin:0 4px 4px; + padding:3px 8px; + border-radius:999px; + font-size:12px; + background:rgba(15,23,42,.13); + color:#fff; + white-space:nowrap; +} +.__PFX__-3r2-navInner a.active{ + background:#fff; + color:var(--primary-color); +} +@media(min-width:768px){ + .__PFX__-3r2-wrap{ + border-radius:0 0 16px 16px; + } +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_47.css b/code/public/static/css/modules/head/head_47.css new file mode 100644 index 0000000..c8d2782 --- /dev/null +++ b/code/public/static/css/modules/head/head_47.css @@ -0,0 +1,84 @@ +/* head_47.css - type2 */ +.__PFX__-lu7-shell{ + padding:10px 12px 6px; + background:var(--bg-soft-color); + border-bottom:1px solid var(--border-color); +} +.__PFX__-lu7-bar{ + display:flex; + align-items:center; + justify-content:space-between; + gap:10px; +} +.__PFX__-lu7-brand{ + display:flex; + flex-direction:column; +} +.__PFX__-lu7-name{ + font-size:18px; + font-weight:600; + color:var(--primary-color); +} +.__PFX__-lu7-sub{ + font-size:11px; + color:var(--text-muted-color); +} +.__PFX__-lu7-toggle{ + width:32px; + height:32px; + border-radius:999px; + border:1px solid var(--border-color); + background:#fff; + cursor:pointer; +} +.__PFX__-lu7-search{ + margin-top:6px; + display:flex; + background:#fff; + border-radius:999px; + border:1px solid var(--border-color); + padding:3px 4px 3px 10px; +} +.__PFX__-lu7-search input{ + flex:1; + border:none; + font-size:13px; + background:transparent; +} +.__PFX__-lu7-go{ + min-width:48px; + border:none; + border-radius:999px; + background:var(--primary-color); + color:#fff; + font-size:13px; + cursor:pointer; +} +.__PFX__-lu7-nav{ + margin-top:4px; +} +.__PFX__-lu7-navList{ + list-style:none; + padding:0; + margin:0; + display:flex; + gap:8px; + overflow-x:auto; +} +.__PFX__-lu7-navList a{ + display:inline-block; + padding:4px 10px; + border-radius:999px; + font-size:12px; + background:#fff; + color:var(--text-color); + white-space:nowrap; +} +.__PFX__-lu7-navList a.active{ + background:var(--primary-color); + color:#fff; +} +@media(min-width:768px){ + .__PFX__-lu7-toggle{display:none;} + .__PFX__-lu7-navList{justify-content:flex-end;} +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_48.css b/code/public/static/css/modules/head/head_48.css new file mode 100644 index 0000000..589451c --- /dev/null +++ b/code/public/static/css/modules/head/head_48.css @@ -0,0 +1,68 @@ +/* head_48.css - type3 */ +.__PFX__-283-wrap{ + padding:10px 12px 4px; + background:var(--bg-color); + border-bottom:1px solid var(--border-color); +} +.__PFX__-283-row1{ + display:flex; + align-items:center; + gap:8px; +} +.__PFX__-283-hamb{ + width:32px; + height:32px; + border-radius:999px; + border:1px solid var(--border-color); + background:transparent; + cursor:pointer; +} +.__PFX__-283-brand{ + flex:0 0 auto; + font-size:18px; + font-weight:700; + color:var(--primary-color); +} +.__PFX__-283-search{ + flex:1; + display:flex; + background:var(--bg-soft-color); + border-radius:999px; + padding:3px 4px 3px 10px; +} +.__PFX__-283-search input{ + flex:1; + border:none; + font-size:13px; + background:transparent; +} +.__PFX__-283-icon{ + border:none; + background:transparent; + padding:0 6px; + display:flex; + align-items:center; + cursor:pointer; + color:var(--text-muted-color); +} +.__PFX__-283-icon svg{ + width:16px; + height:16px; +} +.__PFX__-283-row2{ + margin-top:6px; +} +.__PFX__-283-pillBar a{ + display:inline-block; + margin:0 6px 4px 0; + padding:3px 10px; + border-radius:999px; + border:1px solid var(--border-color); + font-size:12px; + white-space:nowrap; +} +.__PFX__-283-pillBar a.active{ + background:var(--primary-color); + border-color:var(--primary-color); + color:#fff; +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_49.css b/code/public/static/css/modules/head/head_49.css new file mode 100644 index 0000000..8582dad --- /dev/null +++ b/code/public/static/css/modules/head/head_49.css @@ -0,0 +1,70 @@ +/* head_49.css - type4 */ +.__PFX__-ze1-header{ + background:var(--bg-soft-color); + border-bottom:1px solid var(--border-color); +} +.__PFX__-ze1-meta{ + padding:4px 12px; + font-size:11px; + display:flex; + justify-content:space-between; + color:var(--text-muted-color); +} +.__PFX__-ze1-main{ + padding:6px 12px 8px; + display:flex; + align-items:center; + gap:10px; +} +.__PFX__-ze1-logo{ + font-size:19px; + font-weight:700; + color:var(--primary-color); +} +.__PFX__-ze1-search{ + flex:1; + display:flex; + background:#fff; + border-radius:10px; + border:1px solid var(--border-color); + padding:3px 4px 3px 10px; +} +.__PFX__-ze1-search input{ + flex:1; + border:none; + font-size:13px; + background:transparent; +} +.__PFX__-ze1-btn{ + min-width:58px; + border:none; + border-radius:8px; + font-size:13px; + background:var(--primary-color); + color:#fff; + cursor:pointer; +} +.__PFX__-ze1-menuBtn{ + width:32px; + height:32px; + border-radius:999px; + border:1px solid var(--border-color); + background:transparent; + cursor:pointer; +} +.__PFX__-ze1-nav{ + padding:0 10px 8px; +} +.__PFX__-ze1-chips a{ + display:inline-block; + margin:4px 4px 0; + padding:3px 9px; + border-radius:999px; + font-size:12px; + background:#fff; + border:1px solid transparent; +} +.__PFX__-ze1-chips a.active{ + border-color:var(--primary-color); + color:var(--primary-color); +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_50.css b/code/public/static/css/modules/head/head_50.css new file mode 100644 index 0000000..e3ec43e --- /dev/null +++ b/code/public/static/css/modules/head/head_50.css @@ -0,0 +1,63 @@ +/* head_50.css - type5 */ +.__PFX__-bvp-wrap{ + padding:10px 12px 8px; + background:radial-gradient(circle at top,var(--grad-start),var(--bg-color)); + border-bottom:1px solid var(--border-color); +} +.__PFX__-bvp-top{ + display:flex; + align-items:center; + justify-content:space-between; + gap:8px; +} +.__PFX__-bvp-title{ + font-size:18px; + font-weight:700; + color:var(--text_primary,#111827); +} +.__PFX__-bvp-menu{ + width:32px; + height:32px; + border-radius:999px; + border:1px solid var(--border-color); + background:rgba(255,255,255,.7); + cursor:pointer; +} +.__PFX__-bvp-search{ + margin-top:6px; + display:flex; + background:#fff; + border-radius:999px; + border:1px solid var(--border-color); + padding:3px 4px 3px 10px; +} +.__PFX__-bvp-search input{ + flex:1; + border:none; + font-size:13px; + background:transparent; +} +.__PFX__-bvp-sbtn{ + min-width:50px; + border:none; + border-radius:999px; + background:var(--primary-color); + color:#fff; + font-size:13px; + cursor:pointer; +} +.__PFX__-bvp-nav{ + margin-top:4px; +} +.__PFX__-bvp-links a{ + display:inline-block; + margin:3px 6px 0 0; + padding:3px 8px; + font-size:12px; + border-radius:6px; + background:rgba(255,255,255,.85); +} +.__PFX__-bvp-links a.active{ + background:var(--primary-color); + color:#fff; +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_51.css b/code/public/static/css/modules/head/head_51.css new file mode 100644 index 0000000..4bc2db9 --- /dev/null +++ b/code/public/static/css/modules/head/head_51.css @@ -0,0 +1,98 @@ +/* head_51.css - fold nav (odd template) */ + +.__PFX__-h51-wrap{ + padding:10px 12px 8px; + background:radial-gradient(circle at top,var(--grad-start),var(--bg-color)); + border-bottom:1px solid var(--border-color); +} + +.__PFX__-h51-top{ + display:flex; + align-items:center; + justify-content:space-between; + gap:8px; +} + +.__PFX__-h51-title{ + font-size:18px; + font-weight:700; + color:var(--text_primary,#111827); + text-decoration:none; +} + +.__PFX__-h51-menu{ + width:32px; + height:32px; + border-radius:999px; + border:1px solid var(--border-color); + background:rgba(255,255,255,.7); + cursor:pointer; +} + +.__PFX__-h51-search{ + margin-top:6px; + display:flex; + background:#fff; + border-radius:999px; + border:1px solid var(--border-color); + padding:3px 4px 3px 10px; +} + +.__PFX__-h51-search input{ + flex:1; + border:none; + font-size:13px; + background:transparent; + outline:none; +} + +.__PFX__-h51-sbtn{ + min-width:50px; + border:none; + border-radius:999px; + background:var(--primary-color); + color:#fff; + font-size:13px; + cursor:pointer; +} + +.__PFX__-h51-nav{ + margin-top:4px; +} + +.__PFX__-h51-links a{ + display:inline-block; + margin:3px 6px 0 0; + padding:3px 8px; + font-size:12px; + border-radius:6px; + background:rgba(255,255,255,.85); + color:var(--text_primary,#111827); + text-decoration:none; + border:1px solid rgba(0,0,0,.03); +} + +.__PFX__-h51-links a.active{ + background:var(--primary-color); + color:#fff; + border-color:var(--primary-color); +} + +/* 关键:折叠菜单行为 + - 移动端:默认隐藏 nav;点按钮切换 body class 显示 + - PC 端:nav 常驻显示;按钮隐藏(避免“按钮存在但无意义”) */ + +@media (max-width: 860px){ + .__PFX__-h51-nav{ + display:none; + } + body.__PFX__-h51-open .__PFX__-h51-nav{ + display:block; + } +} + +@media (min-width: 861px){ + .__PFX__-h51-menu{ + display:none; + } +} diff --git a/code/public/static/css/modules/head/head_52.css b/code/public/static/css/modules/head/head_52.css new file mode 100644 index 0000000..17e3cad --- /dev/null +++ b/code/public/static/css/modules/head/head_52.css @@ -0,0 +1,100 @@ +/* head_52.css - visible nav / sectioned layout */ + +.__PFX__-h52-shell{ + background:#f9fafb; + border-bottom:1px solid var(--border-color); +} + +/* 上半区:品牌 + 搜索 */ + +.__PFX__-h52-branding{ + display:flex; + align-items:center; + justify-content:space-between; + padding:12px 14px 10px; + gap:14px; +} + +.__PFX__-h52-logo a{ + font-size:20px; + font-weight:800; + color:var(--text_primary,#111827); + text-decoration:none; +} + +.__PFX__-h52-searchbox form{ + display:flex; + align-items:center; + gap:6px; + background:#fff; + border:1px solid var(--border-color); + border-radius:10px; + padding:4px 6px 4px 10px; +} + +.__PFX__-h52-searchbox input{ + border:none; + background:transparent; + font-size:13px; + min-width:180px; + outline:none; +} + +.__PFX__-h52-searchbox button{ + border:none; + background:#111827; + color:#fff; + font-size:12px; + padding:6px 10px; + border-radius:8px; + cursor:pointer; +} + +/* 下半区:分类入口 */ + +.__PFX__-h52-channel{ + background:#ffffff; + border-top:1px solid var(--border-color); + padding:6px 12px 8px; +} + +.__PFX__-h52-items{ + display:flex; + flex-wrap:wrap; + gap:8px 10px; + list-style:none; + margin:0; + padding:0; +} + +.__PFX__-h52-items a{ + display:block; + padding:4px 10px; + font-size:12px; + color:#374151; + text-decoration:none; + border-radius:6px; + background:#f3f4f6; +} + +.__PFX__-h52-items a.active{ + background:#111827; + color:#ffffff; +} + +/* 响应式:移动端搜索占整行 */ + +@media (max-width: 860px){ + .__PFX__-h52-branding{ + flex-direction:column; + align-items:stretch; + } + + .__PFX__-h52-searchbox form{ + width:100%; + } + + .__PFX__-h52-searchbox input{ + flex:1; + } +} diff --git a/code/public/static/css/modules/head/head_53.css b/code/public/static/css/modules/head/head_53.css new file mode 100644 index 0000000..4627301 --- /dev/null +++ b/code/public/static/css/modules/head/head_53.css @@ -0,0 +1,114 @@ +/* head_53.css - fold nav / theme compliant */ + +.__PFX__-h53-wrap{ + --h-bg-main: var(--bg-color); + --h-bg-panel: var(--bg-soft-color); + --h-bg-accent: var(--primary-color); + --h-text-main: var(--text-color); + --h-text-soft: var(--text-muted-color); + + padding:10px 12px 8px; + background:var(--h-bg-main); + border-bottom:1px solid var(--border-color); +} + +/* 顶部条 */ + +.__PFX__-h53-bar{ + display:flex; + align-items:center; + justify-content:space-between; + gap:10px; +} + +.__PFX__-h53-brand{ + font-size:18px; + font-weight:800; + color:var(--h-text-main); + text-decoration:none; +} + +.__PFX__-h53-toggle{ + width:34px; + height:34px; + border-radius:999px; + border:1px solid var(--border-color); + background:var(--h-bg-panel); + color:var(--h-text-main); + cursor:pointer; +} + +/* 搜索 */ + +.__PFX__-h53-search{ + margin-top:6px; + display:flex; + align-items:center; + gap:6px; + background:var(--h-bg-panel); + border:1px solid var(--border-color); + border-radius:999px; + padding:4px 6px 4px 10px; +} + +.__PFX__-h53-search input{ + flex:1; + border:none; + background:transparent; + font-size:13px; + color:var(--h-text-main); + outline:none; +} + +.__PFX__-h53-btn{ + min-width:52px; + border:none; + border-radius:999px; + background:var(--h-bg-accent); + color:#fff; + font-size:13px; + cursor:pointer; +} + +/* 分类导航 */ + +.__PFX__-h53-nav{ + margin-top:6px; +} + +.__PFX__-h53-links a{ + display:inline-block; + margin:3px 6px 0 0; + padding:4px 10px; + font-size:12px; + border-radius:999px; + background:var(--h-bg-panel); + color:var(--h-text-main); + text-decoration:none; + border:1px solid var(--border-color); +} + +.__PFX__-h53-links a.active{ + background:var(--h-bg-accent); + color:#fff; + border-color:var(--h-bg-accent); +} + +/* —— 行为差异关键点 —— */ + +/* 移动端:默认隐藏导航 */ +@media (max-width: 860px){ + .__PFX__-h53-nav{ + display:none; + } + body.__PFX__-h53-open .__PFX__-h53-nav{ + display:block; + } +} + +/* PC 端:导航始终显示,按钮隐藏 */ +@media (min-width: 861px){ + .__PFX__-h53-toggle{ + display:none; + } +} diff --git a/code/public/static/css/modules/head/head_54.css b/code/public/static/css/modules/head/head_54.css new file mode 100644 index 0000000..23c92f2 --- /dev/null +++ b/code/public/static/css/modules/head/head_54.css @@ -0,0 +1,99 @@ +/* head_54.css - card/tabs (theme) */ +.__PFX__-h54-card { + --h-bg-main: var(--bg-color); + --h-bg-panel: var(--bg-soft-color); + --h-bg-accent: var(--accent-color); + --h-text-main: var(--text-color); + --h-text-soft: var(--text-muted-color); + background: var(--h-bg-main); + border-bottom: 1px solid var(--border-color); + padding: 12px; +} + +.__PFX__-h54-hero { + display: grid; + grid-template-columns: 1fr auto; + gap: 12px; + align-items: center; + background: var(--h-bg-panel); + border: 1px solid var(--border-color); + border-radius: 14px; + padding: 12px; +} + +.__PFX__-h54-name { + font-size: 20px; + font-weight: 900; + color: var(--h-text-main); + text-decoration: none; +} + +.__PFX__-h54-tagline { + display: block; + margin-top: 4px; + font-size: 12px; + color: var(--h-text-soft); +} + +.__PFX__-h54-search { + display: flex; + gap: 8px; + background: var(--h-bg-main); + border: 1px solid var(--border-color); + border-radius: 999px; + padding: 6px 6px 6px 12px; +} + +.__PFX__-h54-search input { + border: none; + background: transparent; + outline: none; + font-size: 13px; + color: var(--h-text-main); + min-width: 220px; +} + +.__PFX__-h54-btn { + border: none; + border-radius: 999px; + background: var(--h-bg-accent); + color: var(--h-text-main); + padding: 8px 12px; + cursor: pointer; +} + +.__PFX__-h54-tabs { + margin-top: 10px; + display: flex; + flex-wrap: wrap; + gap: 8px; + padding: 0; +} + +.__PFX__-h54-tabs a { + text-decoration: none; + color: var(--h-text-main); + background: var(--h-bg-panel); + border: 1px solid var(--border-color); + border-radius: 10px; + padding: 6px 10px; + font-size: 12px; +} + +.__PFX__-h54-tabs a.active { + background: var(--primary-color); + border-color: var(--primary-color); + color: var(--h-text-main); + font-weight: 800; +} + +@media (max-width:860px) { + .__PFX__-h54-hero { + grid-template-columns: 1fr; + } + + .__PFX__-h54-search input { + min-width: 0; + flex: 1; + } +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_55.css b/code/public/static/css/modules/head/head_55.css new file mode 100644 index 0000000..a029721 --- /dev/null +++ b/code/public/static/css/modules/head/head_55.css @@ -0,0 +1,64 @@ +/* head_55.css - strip + belt (odd fold, theme) */ +.__PFX__-h55-strip{ + --h-bg-main: var(--bg-soft-color); + --h-bg-panel: var(--bg-color); + --h-bg-accent: var(--primary-color); + --h-text-main: var(--text-color); + --h-text-soft: var(--text-muted-color); + background:var(--h-bg-main); + border-bottom:1px solid var(--border-color); + padding:10px 12px; +} +.__PFX__-h55-head{display:flex;align-items:center;justify-content:space-between;gap:10px;} +.__PFX__-h55-home{color:var(--h-text-main);text-decoration:none;font-weight:900;font-size:18px;} +.__PFX__-h55-toggle{ + border:1px solid var(--border-color); + background:var(--h-bg-panel); + color:var(--h-text-main); + border-radius:999px; + padding:7px 10px; + cursor:pointer; +} +.__PFX__-h55-line{ + margin-top:10px; + display:flex; + gap:8px; + background:var(--h-bg-panel); + border:1px solid var(--border-color); + border-radius:12px; + padding:6px 8px; +} +.__PFX__-h55-line input{flex:1;border:none;outline:none;font-size:13px;background:transparent;color:var(--h-text-main);} +.__PFX__-h55-go{ + border:none; + border-radius:10px; + background:var(--h-bg-accent); + color:var(--h-text-main); + padding:7px 10px; + cursor:pointer; +} +.__PFX__-h55-nav{margin-top:8px;} +.__PFX__-h55-belt{display:flex;gap:8px;overflow:auto;padding-bottom:2px;scrollbar-width:none;} +.__PFX__-h55-belt::-webkit-scrollbar{display:none;} +.__PFX__-h55-belt a{ + white-space:nowrap; + text-decoration:none; + font-size:12px; + color:var(--h-text-main); + background:var(--h-bg-panel); + border:1px solid var(--border-color); + padding:6px 10px; + border-radius:999px; +} +.__PFX__-h55-belt a.active{ + background:var(--h-bg-accent); + border-color:var(--h-bg-accent); + font-weight:800; +} +@media (max-width:860px){ + .__PFX__-h55-nav{display:none;} + body.__PFX__-h55-open .__PFX__-h55-nav{display:block;} +} +@media (min-width:861px){ + .__PFX__-h55-toggle{display:none;} +} diff --git a/code/public/static/css/modules/head/head_56.css b/code/public/static/css/modules/head/head_56.css new file mode 100644 index 0000000..230d263 --- /dev/null +++ b/code/public/static/css/modules/head/head_56.css @@ -0,0 +1,59 @@ +/* head_56.css - rail + grid (even, theme) */ +.__PFX__-h56-frame{ + --h-bg-main: var(--bg-color); + --h-bg-panel: var(--bg-soft-color); + --h-bg-accent: var(--secondary-color); + --h-text-main: var(--text-color); + --h-text-soft: var(--text-muted-color); + background:var(--h-bg-main); + border-bottom:1px solid var(--border-color); +} +.__PFX__-h56-frame{display:grid;grid-template-columns:220px 1fr;gap:12px;padding:12px;} +.__PFX__-h56-rail{ + background:var(--h-bg-panel); + border:1px solid var(--border-color); + border-radius:14px; + padding:12px; +} +.__PFX__-h56-logo{display:block;text-decoration:none;color:var(--h-text-main);font-weight:900;font-size:18px;margin-bottom:10px;} +.__PFX__-h56-homeLinks{display:flex;flex-direction:column;gap:10px;} +.__PFX__-h56-homeLinks a{ + text-decoration:none; + color:var(--h-text-main); + background:var(--h-bg-main); + border:1px solid var(--border-color); + border-radius:12px; + padding:10px 12px; + font-size:12px; +} +.__PFX__-h56-homeLinks a.active{background:var(--primary-color);border-color:var(--primary-color);font-weight:800;} +.__PFX__-h56-main{min-width:0;} +.__PFX__-h56-search{ + display:flex; + gap:8px; + background:var(--h-bg-panel); + border:1px solid var(--border-color); + border-radius:12px; + padding:6px 6px 6px 12px; +} +.__PFX__-h56-search input{flex:1;border:none;background:transparent;outline:none;font-size:13px;color:var(--h-text-main);} +.__PFX__-h56-btn{border:none;border-radius:10px;background:var(--h-bg-accent);color:var(--h-text-main);padding:8px 12px;cursor:pointer;} +.__PFX__-h56-nav{margin-top:10px;} +.__PFX__-h56-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;} +.__PFX__-h56-grid a{ + display:block; + text-decoration:none; + color:var(--h-text-main); + background:var(--h-bg-panel); + border:1px solid var(--border-color); + border-radius:12px; + padding:10px; + text-align:center; + font-size:12px; +} +.__PFX__-h56-grid a.active{background:var(--primary-color);border-color:var(--primary-color);font-weight:800;} +@media (max-width:860px){ + .__PFX__-h56-frame{grid-template-columns:1fr;} + .__PFX__-h56-homeLinks{flex-direction:row;flex-wrap:wrap;} + .__PFX__-h56-grid{grid-template-columns:repeat(2,minmax(0,1fr));} +} diff --git a/code/public/static/css/modules/head/head_57.css b/code/public/static/css/modules/head/head_57.css new file mode 100644 index 0000000..aa5ad99 --- /dev/null +++ b/code/public/static/css/modules/head/head_57.css @@ -0,0 +1,30 @@ +/* head_57.css - split + fieldset + chips (odd fold, theme) */ +.__PFX__-h57-split{ + --h-bg-main: var(--bg-color); + --h-bg-panel: var(--bg-soft-color); + --h-bg-accent: var(--accent-color); + --h-text-main: var(--text-color); + --h-text-soft: var(--text-muted-color); + background:var(--h-bg-main); + border-bottom:1px solid var(--border-color); + padding:12px 12px 10px; +} +.__PFX__-h57-top{display:flex;align-items:center;justify-content:space-between;gap:10px;} +.__PFX__-h57-brand{text-decoration:none;color:var(--h-text-main);font-weight:900;font-size:20px;} +.__PFX__-h57-sub{margin-left:10px;font-size:12px;color:var(--h-text-soft);} +.__PFX__-h57-toggle{border:1px solid var(--border-color);background:var(--h-bg-panel);color:var(--h-text-main);border-radius:10px;padding:8px 10px;cursor:pointer;} +.__PFX__-h57-box{margin:10px 0 0;border:1px dashed var(--border-color);border-radius:12px;padding:10px;} +.__PFX__-h57-search{display:flex;gap:8px;background:var(--h-bg-panel);border:1px solid var(--border-color);border-radius:999px;padding:5px 6px 5px 12px;} +.__PFX__-h57-search input{flex:1;border:none;outline:none;font-size:13px;background:transparent;color:var(--h-text-main);} +.__PFX__-h57-btn{border:none;border-radius:999px;background:var(--primary-color);color:var(--h-text-main);padding:8px 12px;cursor:pointer;} +.__PFX__-h57-nav{margin-top:10px;} +.__PFX__-h57-chips{display:flex;flex-wrap:wrap;gap:8px;} +.__PFX__-h57-chips a{text-decoration:none;font-size:12px;color:var(--h-text-main);background:var(--h-bg-panel);border-radius:999px;padding:6px 10px;border:1px solid var(--border-color);} +.__PFX__-h57-chips a.active{background:var(--primary-color);border-color:var(--primary-color);font-weight:800;} +@media (max-width:860px){ + .__PFX__-h57-nav{display:none;} + body.__PFX__-h57-open .__PFX__-h57-nav{display:block;} +} +@media (min-width:861px){ + .__PFX__-h57-toggle{display:none;} +} diff --git a/code/public/static/css/modules/head/head_58.css b/code/public/static/css/modules/head/head_58.css new file mode 100644 index 0000000..b69c299 --- /dev/null +++ b/code/public/static/css/modules/head/head_58.css @@ -0,0 +1,25 @@ +/* head_58.css - dashboard (even, theme) */ +.__PFX__-h58-dash{ + --h-bg-main: var(--bg-soft-color); + --h-bg-panel: var(--bg-color); + --h-bg-accent: var(--primary-color); + --h-text-main: var(--text-color); + --h-text-soft: var(--text-muted-color); + background:var(--h-bg-main); + border-bottom:1px solid var(--border-color); + padding:12px 12px 14px; +} +.__PFX__-h58-line1{display:flex;align-items:center;justify-content:space-between;gap:12px;} +.__PFX__-h58-brand{text-decoration:none;color:var(--h-text-main);font-weight:900;font-size:20px;} +.__PFX__-h58-search{display:flex;gap:8px;background:var(--h-bg-panel);border:1px solid var(--border-color);border-radius:12px;padding:6px 6px 6px 12px;} +.__PFX__-h58-search input{border:none;background:transparent;color:var(--h-text-main);outline:none;font-size:13px;min-width:240px;} +.__PFX__-h58-btn{border:none;border-radius:10px;background:var(--h-bg-accent);color:var(--h-text-main);padding:8px 12px;cursor:pointer;} +.__PFX__-h58-nav{margin-top:12px;} +.__PFX__-h58-cards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;} +.__PFX__-h58-cards a{display:block;text-decoration:none;color:var(--h-text-main);background:var(--h-bg-panel);border:1px solid var(--border-color);border-radius:14px;padding:12px 10px;text-align:center;font-size:12px;} +.__PFX__-h58-cards a.active{background:var(--primary-color);border-color:var(--primary-color);font-weight:800;} +@media (max-width:860px){ + .__PFX__-h58-line1{flex-direction:column;align-items:stretch;} + .__PFX__-h58-search input{min-width:0;flex:1;} + .__PFX__-h58-cards{grid-template-columns:repeat(3,minmax(0,1fr));} +} diff --git a/code/public/static/css/modules/head/head_59.css b/code/public/static/css/modules/head/head_59.css new file mode 100644 index 0000000..5e9f68e --- /dev/null +++ b/code/public/static/css/modules/head/head_59.css @@ -0,0 +1,28 @@ +/* head_59.css - bottom sheet (odd fold, theme) */ +.__PFX__-h59-min{ + --h-bg-main: var(--bg-color); + --h-bg-panel: var(--bg-soft-color); + --h-bg-accent: var(--primary-color); + --h-text-main: var(--text-color); + --h-text-soft: var(--text-muted-color); + background:var(--h-bg-main); + border-bottom:1px solid var(--border-color); + padding:12px; +} +.__PFX__-h59-top{display:flex;align-items:center;justify-content:space-between;gap:10px;} +.__PFX__-h59-name{text-decoration:none;color:var(--h-text-main);font-weight:900;font-size:20px;} +.__PFX__-h59-toggle{width:36px;height:36px;border-radius:12px;border:1px solid var(--border-color);background:var(--h-bg-panel);color:var(--h-text-main);cursor:pointer;} +.__PFX__-h59-search{margin-top:10px;display:flex;gap:8px;background:var(--h-bg-panel);border:1px solid var(--border-color);border-radius:12px;padding:6px 6px 6px 12px;} +.__PFX__-h59-search input{flex:1;border:none;outline:none;font-size:13px;background:transparent;color:var(--h-text-main);} +.__PFX__-h59-btn{border:none;border-radius:10px;background:var(--h-bg-accent);color:var(--h-text-main);padding:8px 12px;cursor:pointer;} +.__PFX__-h59-sheet{margin-top:10px;border-radius:14px;background:var(--h-bg-panel);border:1px solid var(--border-color);padding:10px;} +.__PFX__-h59-pills{display:flex;flex-wrap:wrap;gap:8px;} +.__PFX__-h59-pills a{text-decoration:none;color:var(--h-text-main);background:var(--h-bg-main);border:1px solid var(--border-color);border-radius:12px;padding:8px 10px;font-size:12px;} +.__PFX__-h59-pills a.active{background:var(--h-bg-accent);border-color:var(--h-bg-accent);font-weight:800;} +@media (max-width:860px){ + .__PFX__-h59-sheet{display:none;} + body.__PFX__-h59-open .__PFX__-h59-sheet{display:block;} +} +@media (min-width:861px){ + .__PFX__-h59-toggle{display:none;} +} diff --git a/code/public/static/css/modules/head/head_60.css b/code/public/static/css/modules/head/head_60.css new file mode 100644 index 0000000..7ce8e5f --- /dev/null +++ b/code/public/static/css/modules/head/head_60.css @@ -0,0 +1,30 @@ +/* head_60.css - side + grid (even, theme) */ +.__PFX__-h60-layout{ + --h-bg-main: var(--bg-color); + --h-bg-panel: var(--bg-soft-color); + --h-bg-accent: var(--secondary-color); + --h-text-main: var(--text-color); + --h-text-soft: var(--text-muted-color); + background:var(--h-bg-main); + border-bottom:1px solid var(--border-color); +} +.__PFX__-h60-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:14px 14px 10px;background:var(--h-bg-panel);} +.__PFX__-h60-name{text-decoration:none;color:var(--h-text-main);font-weight:900;font-size:22px;} +.__PFX__-h60-meta{margin-left:10px;color:var(--h-text-soft);font-size:12px;} +.__PFX__-h60-search{display:flex;gap:8px;background:var(--h-bg-main);border:1px solid var(--border-color);border-radius:12px;padding:6px 6px 6px 12px;} +.__PFX__-h60-search input{border:none;background:transparent;outline:none;font-size:13px;color:var(--h-text-main);min-width:240px;} +.__PFX__-h60-btn{border:none;border-radius:10px;background:var(--primary-color);color:var(--h-text-main);padding:8px 12px;cursor:pointer;} +.__PFX__-h60-body{display:grid;grid-template-columns:220px 1fr;gap:12px;padding:12px 14px 14px;} +.__PFX__-h60-side{display:flex;flex-direction:column;gap:10px;} +.__PFX__-h60-side a{text-decoration:none;color:var(--h-text-main);background:var(--h-bg-panel);border:1px solid var(--border-color);border-radius:12px;padding:10px 12px;font-size:12px;} +.__PFX__-h60-side a.active{background:var(--primary-color);border-color:var(--primary-color);font-weight:800;} +.__PFX__-h60-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;} +.__PFX__-h60-grid a{display:block;text-decoration:none;color:var(--h-text-main);background:var(--h-bg-panel);border:1px solid var(--border-color);border-radius:12px;padding:12px 10px;text-align:center;font-size:12px;} +.__PFX__-h60-grid a.active{background:var(--primary-color);border-color:var(--primary-color);font-weight:800;} +@media (max-width:860px){ + .__PFX__-h60-head{flex-direction:column;align-items:stretch;} + .__PFX__-h60-search input{min-width:0;flex:1;} + .__PFX__-h60-body{grid-template-columns:1fr;} + .__PFX__-h60-side{flex-direction:row;flex-wrap:wrap;} + .__PFX__-h60-grid{grid-template-columns:repeat(2,minmax(0,1fr));} +} diff --git a/code/public/static/css/modules/head/head_61.css b/code/public/static/css/modules/head/head_61.css new file mode 100644 index 0000000..2592aaa --- /dev/null +++ b/code/public/static/css/modules/head/head_61.css @@ -0,0 +1,90 @@ +/* head_61.css - rift bar (odd: click show nav) */ +.__PFX__-h61-rift{ + --h-bg-1: var(--bg-color); + --h-bg-2: var(--bg-soft-color); + --h-accent: var(--primary-color); + padding:10px 12px 8px; + background: + linear-gradient(90deg,var(--h-bg-1) 0%, var(--h-bg-1) 62%, var(--h-bg-2) 62%, var(--h-bg-2) 100%); + border-bottom:1px solid var(--border-color); +} +.__PFX__-h61-row{ + display:flex; + align-items:center; + gap:10px; +} +.__PFX__-h61-brand{ + font-size:18px; + font-weight:900; + color:var(--text-color); + text-decoration:none; + white-space:nowrap; +} +.__PFX__-h61-search{ + flex:1; + min-width:0; + display:flex; + align-items:center; + gap:6px; + padding:4px 6px 4px 10px; + background:var(--bg-soft-color); + border:1px solid var(--border-color); + border-radius:999px; +} +.__PFX__-h61-search input{ + flex:1; + min-width:0; + border:none; + outline:none; + background:transparent; + color:var(--text-color); + font-size:13px; +} +.__PFX__-h61-btn{ + border:none; + border-radius:999px; + background:var(--h-accent); + color:var(--text-color); + padding:6px 10px; + cursor:pointer; + font-size:12px; +} +.__PFX__-h61-toggle{ + border:1px solid var(--border-color); + background:var(--bg-color); + color:var(--text-color); + border-radius:10px; + padding:7px 10px; + cursor:pointer; + white-space:nowrap; +} +.__PFX__-h61-nav{ + display:none; + margin-top:8px; +} +.__PFX__-h61-links{ + display:flex; + flex-wrap:wrap; + gap:8px; +} +.__PFX__-h61-links a{ + text-decoration:none; + font-size:12px; + padding:5px 10px; + border-radius:999px; + background:var(--bg-soft-color); + border:1px solid var(--border-color); + color:var(--text-color); +} +.__PFX__-h61-links a.active{ + background:var(--h-accent); + border-color:var(--h-accent); + font-weight:800; +} +@media (max-width:860px){ + body.__PFX__-h61-open .__PFX__-h61-nav{display:block;} +} +@media (min-width:861px){ + .__PFX__-h61-toggle{display:none;} + .__PFX__-h61-nav{display:block;} +} diff --git a/code/public/static/css/modules/head/head_62.css b/code/public/static/css/modules/head/head_62.css new file mode 100644 index 0000000..e9b1af8 --- /dev/null +++ b/code/public/static/css/modules/head/head_62.css @@ -0,0 +1,121 @@ +/* head_62.css - sash (even: grid appears on mobile by toggle) */ +.__PFX__-h62-sash{ + --h-accent: var(--accent-color); + padding:10px 12px 8px; + border-bottom:1px solid var(--border-color); + background:var(--bg-color); +} +.__PFX__-h62-top{ + display:flex; + align-items:center; + justify-content:space-between; + gap:10px; +} +.__PFX__-h62-name{ + font-size:19px; + font-weight:900; + color:var(--text-color); + text-decoration:none; +} +.__PFX__-h62-note{ + margin-top:2px; + font-size:12px; + color:var(--text-muted-color); +} +.__PFX__-h62-badge{ + border:1px solid var(--border-color); + background:var(--bg-soft-color); + color:var(--text-color); + border-radius:999px; + padding:7px 10px; + cursor:pointer; +} +.__PFX__-h62-bot{ + margin-top:8px; + display:flex; + align-items:center; + justify-content:space-between; + gap:10px; +} +.__PFX__-h62-search{ + flex:1; + min-width:0; + display:flex; + gap:6px; + padding:4px 6px 4px 10px; + border:1px solid var(--border-color); + border-radius:12px; + background:var(--bg-soft-color); +} +.__PFX__-h62-search input{ + flex:1; + min-width:0; + border:none; + outline:none; + background:transparent; + color:var(--text-color); + font-size:13px; +} +.__PFX__-h62-btn{ + border:none; + border-radius:10px; + background:var(--h-accent); + color:var(--text-color); + padding:6px 10px; + cursor:pointer; + font-size:12px; +} +.__PFX__-h62-mini{ + display:flex; + gap:8px; + padding:0; +} +.__PFX__-h62-mini a{ + text-decoration:none; + font-size:12px; + color:var(--text-color); + padding:6px 10px; + border-radius:999px; + background:var(--bg-color); + border:1px solid var(--border-color); +} +.__PFX__-h62-mini a.active{ + background:var(--primary-color); + border-color:var(--primary-color); + font-weight:800; +} +.__PFX__-h62-nav{ + margin-top:10px; +} +.__PFX__-h62-grid{ + list-style:none; + margin:0; + padding:0; + display:grid; + grid-template-columns:repeat(6,minmax(0,1fr)); + gap:8px; +} +.__PFX__-h62-grid a{ + display:block; + text-decoration:none; + font-size:12px; + text-align:center; + padding:8px 6px; + border-radius:12px; + background:var(--bg-soft-color); + border:1px solid var(--border-color); + color:var(--text-color); +} +.__PFX__-h62-grid a.active{ + background:var(--primary-color); + border-color:var(--primary-color); + font-weight:800; +} +@media (max-width:860px){ + .__PFX__-h62-nav{display:none;} + body.__PFX__-h62-open .__PFX__-h62-nav{display:block;} + .__PFX__-h62-grid{grid-template-columns:repeat(3,minmax(0,1fr));} +} +@media (min-width:861px){ + .__PFX__-h62-badge{display:none;} +} diff --git a/code/public/static/css/modules/head/head_63.css b/code/public/static/css/modules/head/head_63.css new file mode 100644 index 0000000..f44cecd --- /dev/null +++ b/code/public/static/css/modules/head/head_63.css @@ -0,0 +1,93 @@ +/* head_63.css - rail (odd: fold list on mobile) */ +.__PFX__-h63-rail{ + --h-accent: var(--secondary-color); + border-bottom:1px solid var(--border-color); + background:var(--bg-soft-color); +} +.__PFX__-h63-rail{ + display:grid; + grid-template-columns:180px 1fr; + gap:10px; + padding:10px 12px; +} +.__PFX__-h63-side{ + background:var(--bg-color); + border:1px solid var(--border-color); + border-radius:14px; + padding:10px; +} +.__PFX__-h63-logo{ + display:block; + text-decoration:none; + color:var(--text-color); + font-weight:900; + font-size:18px; + margin-bottom:8px; +} +.__PFX__-h63-home{display:flex;flex-direction:column;gap:8px;} +.__PFX__-h63-home a{ + text-decoration:none; + font-size:12px; + color:var(--text-color); + background:var(--bg-soft-color); + border:1px solid var(--border-color); + border-radius:12px; + padding:8px 10px; +} +.__PFX__-h63-home a.active{ + background:var(--primary-color); + border-color:var(--primary-color); + font-weight:800; +} +.__PFX__-h63-fold{ + margin-top:8px; + width:100%; + border:1px solid var(--border-color); + background:var(--bg-color); + color:var(--text-color); + border-radius:12px; + padding:8px 10px; + cursor:pointer; +} +.__PFX__-h63-main{min-width:0;display:flex;flex-direction:column;gap:10px;} +.__PFX__-h63-search{ + display:flex; + gap:6px; + padding:4px 6px 4px 10px; + border:1px solid var(--border-color); + border-radius:999px; + background:var(--bg-color); +} +.__PFX__-h63-search input{flex:1;min-width:0;border:none;outline:none;background:transparent;color:var(--text-color);font-size:13px;} +.__PFX__-h63-btn{border:none;border-radius:999px;background:var(--h-accent);color:var(--text-color);padding:6px 10px;cursor:pointer;font-size:12px;} +.__PFX__-h63-nav{} +.__PFX__-h63-list{ + margin:0; + padding:0; + list-style:none; + display:grid; + grid-template-columns:repeat(5,minmax(0,1fr)); + gap:8px; +} +.__PFX__-h63-list a{ + display:block; + text-decoration:none; + font-size:12px; + text-align:center; + padding:8px 6px; + border-radius:12px; + background:var(--bg-color); + border:1px solid var(--border-color); + color:var(--text-color); +} +.__PFX__-h63-list a.active{background:var(--primary-color);border-color:var(--primary-color);font-weight:800;} +@media (max-width:860px){ + .__PFX__-h63-rail{grid-template-columns:1fr;} + .__PFX__-h63-home{flex-direction:row;flex-wrap:wrap;} + .__PFX__-h63-list{grid-template-columns:repeat(3,minmax(0,1fr));} + .__PFX__-h63-nav{display:none;} + body.__PFX__-h63-open .__PFX__-h63-nav{display:block;} +} +@media (min-width:861px){ + .__PFX__-h63-fold{display:none;} +} diff --git a/code/public/static/css/modules/head/head_64.css b/code/public/static/css/modules/head/head_64.css new file mode 100644 index 0000000..2cdcf27 --- /dev/null +++ b/code/public/static/css/modules/head/head_64.css @@ -0,0 +1,56 @@ +/* head_64.css - shelf panel (odd: panel hidden until click on mobile, always visible on PC) */ +.__PFX__-h64-shelf{ + --h-accent: var(--primary-color); + padding:10px 12px; + background:var(--bg-color); + border-bottom:1px solid var(--border-color); +} +.__PFX__-h64-top{ + display:flex; + align-items:center; + justify-content:space-between; + gap:10px; +} +.__PFX__-h64-l{display:flex;align-items:baseline;gap:8px;min-width:0;} +.__PFX__-h64-brand{text-decoration:none;color:var(--text-color);font-weight:900;font-size:18px;white-space:nowrap;} +.__PFX__-h64-dot{color:var(--text-muted-color);} +.__PFX__-h64-tip{color:var(--text-muted-color);font-size:12px;white-space:nowrap;} +.__PFX__-h64-k{ + border:1px solid var(--border-color); + background:var(--bg-soft-color); + color:var(--text-color); + border-radius:999px; + padding:7px 10px; + cursor:pointer; +} +.__PFX__-h64-search{ + margin-top:8px; + display:flex; + gap:6px; + padding:4px 6px 4px 10px; + border:1px solid var(--border-color); + border-radius:12px; + background:var(--bg-soft-color); +} +.__PFX__-h64-search input{flex:1;min-width:0;border:none;outline:none;background:transparent;color:var(--text-color);font-size:13px;} +.__PFX__-h64-btn{border:none;border-radius:10px;background:var(--h-accent);color:var(--text-color);padding:6px 10px;cursor:pointer;font-size:12px;} +.__PFX__-h64-panel{ + margin-top:10px; + background:var(--bg-color); + border:1px solid var(--border-color); + border-radius:14px; + padding:10px; +} +.__PFX__-h64-home{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px;} +.__PFX__-h64-home a{text-decoration:none;font-size:12px;color:var(--text-color);background:var(--bg-soft-color);border:1px solid var(--border-color);border-radius:12px;padding:6px 10px;} +.__PFX__-h64-home a.active{background:var(--h-accent);border-color:var(--h-accent);font-weight:800;} +.__PFX__-h64-tags{display:flex;flex-wrap:wrap;gap:8px;} +.__PFX__-h64-tags a{text-decoration:none;font-size:12px;color:var(--text-color);background:var(--bg-soft-color);border:1px solid var(--border-color);border-radius:999px;padding:6px 10px;} +.__PFX__-h64-tags a.active{background:var(--primary-color);border-color:var(--primary-color);font-weight:800;} +@media (max-width:860px){ + .__PFX__-h64-panel{display:none;} + body.__PFX__-h64-open .__PFX__-h64-panel{display:block;} +} +@media (min-width:861px){ + .__PFX__-h64-k{display:none;} +} diff --git a/code/public/static/css/modules/head/head_65.css b/code/public/static/css/modules/head/head_65.css new file mode 100644 index 0000000..b3ef4cb --- /dev/null +++ b/code/public/static/css/modules/head/head_65.css @@ -0,0 +1,97 @@ +/* head_65.css */ +/* head_65.css */ +.__PFX__-h65-minibar{ + position:relative; + display:flex; + align-items:center; + justify-content:space-between; + + padding:10px 14px; + border-bottom:1px solid var(--border-color); + background:var(--bg-color); +} + +.__PFX__-h65-brand{ + font-size:18px; + font-weight:900; + color:var(--text-color); + text-decoration:none; + letter-spacing:.3px; +} +.__PFX__-h65-menu-btn{ + font-size:20px; + line-height:1; + background:none; + border:none; + color:var(--text-color); + cursor:pointer; + padding:6px 8px; + border-radius:6px; +} + +.__PFX__-h65-menu-btn:hover{ + background:var(--bg-soft-color); +} +.__PFX__-h65-panel{ + position:absolute; + top:100%; + right:0; + width:260px; + + background:var(--bg-color); + border:1px solid var(--border-color); + box-shadow:0 8px 24px var(--shadow-color); + border-radius:10px; + + padding:12px; + margin-top:8px; + + display:none; + z-index:100; +} +.__PFX__-h65-nav{ + display:flex; + flex-direction:column; + gap:8px; + margin-bottom:12px; +} + +.__PFX__-h65-nav-item{ + text-decoration:none; + color:var(--text-color); + font-size:14px; + padding:6px 8px; + border-radius:6px; +} + +.__PFX__-h65-nav-item:hover{ + background:var(--bg-soft-color); +} +.__PFX__-h65-search{ + display:flex; + gap:6px; +} + +.__PFX__-h65-search input{ + flex:1; + padding:6px 8px; + font-size:14px; + border:1px solid var(--border-color); + border-radius:6px; + background:var(--bg-soft-color); + color:var(--text-color); +} + +.__PFX__-h65-search button{ + padding:6px 10px; + font-size:14px; + border:none; + border-radius:6px; + background:var(--primary-color); + color:#fff; + cursor:pointer; +} + +.__PFX__-h65-minibar:focus-within .__PFX__-h65-panel{ + display:block; +} diff --git a/code/public/static/css/modules/head/head_66.css b/code/public/static/css/modules/head/head_66.css new file mode 100644 index 0000000..dc4a546 --- /dev/null +++ b/code/public/static/css/modules/head/head_66.css @@ -0,0 +1,29 @@ +/* head_66.css */ +.__PFX__-h66-searchcore{ + padding:14px 12px; + background:linear-gradient(135deg,var(--bg-soft-color),var(--bg-color)); + border-bottom:1px solid var(--border-color); +} +.__PFX__-h66-title{ + margin:0 0 8px; + font-size:20px; + font-weight:800; +} +.__PFX__-h66-search{ + display:flex; + gap:6px; +} +.__PFX__-h66-search input{ + flex:1; + border:1px solid var(--border-color); + border-radius:10px; + padding:6px 10px; + background:var(--bg-color); +} +.__PFX__-h66-search button{ + border:none; + border-radius:10px; + padding:6px 12px; + background:var(--primary-color); + color:#fff; +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_67.css b/code/public/static/css/modules/head/head_67.css new file mode 100644 index 0000000..9b0b47b --- /dev/null +++ b/code/public/static/css/modules/head/head_67.css @@ -0,0 +1,40 @@ +/* head_67.css */ +.__PFX__-h67-fracture{ + padding:8px 12px; + background:var(--bg-color); + border-bottom:1px solid var(--border-color); +} +.__PFX__-h67-top{ + display:flex; + justify-content:space-between; + align-items:center; +} +.__PFX__-h67-brand{ + font-size:17px; + font-weight:900; +} +.__PFX__-h67-toggle{ + border:1px solid var(--border-color); + background:var(--bg-soft-color); + border-radius:8px; + padding:6px 10px; +} +.__PFX__-h67-nav{ + display:none; + margin-top:10px; + padding-top:10px; + border-top:1px dashed var(--border-color); + display:flex; + flex-wrap:wrap; + gap:8px; +} +body.__PFX__-h67-open .__PFX__-h67-nav{ + display:flex; +} +.__PFX__-h67-nav a{ + font-size:12px; + padding:6px 10px; + border-radius:999px; + background:var(--bg-soft-color); + border:1px solid var(--border-color); +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_68.css b/code/public/static/css/modules/head/head_68.css new file mode 100644 index 0000000..274e6b1 --- /dev/null +++ b/code/public/static/css/modules/head/head_68.css @@ -0,0 +1,24 @@ +/* head_68.css */ +.__PFX__-h68-slice{ + display:grid; + grid-template-columns:40% 60%; + border-bottom:1px solid var(--border-color); +} +.__PFX__-h68-left{ + padding:12px; + background:var(--bg-soft-color); +} +.__PFX__-h68-right{ + padding:12px; + background:var(--bg-color); +} +.__PFX__-h68-brand{ + font-size:18px; + font-weight:900; +} +.__PFX__-h68-right input{ + width:100%; + padding:6px 10px; + border-radius:8px; + border:1px solid var(--border-color); +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_69.css b/code/public/static/css/modules/head/head_69.css new file mode 100644 index 0000000..3fd80ba --- /dev/null +++ b/code/public/static/css/modules/head/head_69.css @@ -0,0 +1,30 @@ +/* head_69.css */ +.__PFX__-h69-bar{ + display:flex; + justify-content:space-between; + align-items:center; + padding:8px 12px; + border-bottom:1px solid var(--border-color); +} +.__PFX__-h69-drawer{ + z-index: 999; + position:fixed; + left:0; + right:0; + bottom:-100%; + background:var(--bg-color); + padding:14px; + display:flex; + flex-wrap:wrap; + gap:8px; + transition:bottom .25s ease; +} +body.__PFX__-h69-open .__PFX__-h69-drawer{ + bottom:0; +} +.__PFX__-h69-drawer a{ + font-size:12px; + padding:6px 10px; + border-radius:999px; + border:1px solid var(--border-color); +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_70.css b/code/public/static/css/modules/head/head_70.css new file mode 100644 index 0000000..3103b87 --- /dev/null +++ b/code/public/static/css/modules/head/head_70.css @@ -0,0 +1,24 @@ +/* head_70.css */ +.__PFX__-h70-hero{ + height:120px; + background:linear-gradient(160deg,var(--primary-color),var(--bg-soft-color)); + border-bottom:1px solid var(--border-color); +} +.__PFX__-h70-mask{ + height:100%; + padding:14px 12px; + background:rgba(255,255,255,.15); + backdrop-filter:blur(6px); +} +.__PFX__-h70-brand{ + display:block; + font-size:20px; + font-weight:900; + margin-bottom:10px; +} +.__PFX__-h70-mask input{ + width:100%; + padding:6px 10px; + border-radius:8px; + border:1px solid var(--border-color); +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_71.css b/code/public/static/css/modules/head/head_71.css new file mode 100644 index 0000000..0c0ae11 --- /dev/null +++ b/code/public/static/css/modules/head/head_71.css @@ -0,0 +1,65 @@ +/* head_71.css */ +.__PFX__-h71-glass{ + padding:8px 12px; + background: + linear-gradient(180deg,rgba(255,255,255,.35),rgba(255,255,255,.05)), + var(--bg-color); + backdrop-filter:blur(6px); + border-bottom:1px solid var(--border-color); +} +.__PFX__-h71-bar{ + display:flex; + justify-content:space-between; + align-items:center; +} +.__PFX__-h71-brand{ + font-size:18px; + font-weight:900; + text-decoration:none; + color:var(--text-color); +} +.__PFX__-h71-toggle{ + border:1px solid var(--border-color); + background:var(--bg-soft-color); + border-radius:10px; + padding:6px 10px; +} +.__PFX__-h71-search{ + margin-top:6px; +} +.__PFX__-h71-search input{ + width:100%; + padding:6px 10px; + border-radius:10px; + border:1px solid var(--border-color); + background:var(--bg-soft-color); +} +.__PFX__-h71-nav{ + display:none; + margin-top:8px; +} +body.__PFX__-h71-open .__PFX__-h71-nav{ + display:block; +} +.__PFX__-h71-home a, +.__PFX__-h71-cats a{ + display:inline-block; + margin:4px 6px 0 0; + padding:5px 10px; + font-size:12px; + border-radius:999px; + border:1px solid var(--border-color); + background:rgba(255,255,255,.65); + text-decoration:none; + color:var(--text-color); +} +.__PFX__-h71-home a.active, +.__PFX__-h71-cats a.active{ + background:var(--primary-color); + color:#fff; + border-color:var(--primary-color); +} +@media(min-width:861px){ + .__PFX__-h71-toggle{display:none;} + .__PFX__-h71-nav{display:block;} +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_72.css b/code/public/static/css/modules/head/head_72.css new file mode 100644 index 0000000..89d9ab4 --- /dev/null +++ b/code/public/static/css/modules/head/head_72.css @@ -0,0 +1,74 @@ +/* head_72.css */ +.__PFX__-h72-fragment{ + padding:8px 12px; + background: + linear-gradient(160deg,var(--bg-soft-color),var(--bg-color)); + border-bottom:1px solid var(--border-color); +} +.__PFX__-h72-top{ + display:flex; + justify-content:space-between; + align-items:center; +} +.__PFX__-h72-brand{ + font-size:17px; + font-weight:900; + text-decoration:none; +} +.__PFX__-h72-toggle{ + border:1px solid var(--border-color); + background:var(--bg-soft-color); + border-radius:8px; + padding:6px 10px; +} +.__PFX__-h72-search{ + margin-top:6px; +} +.__PFX__-h72-search input{ + width:100%; + padding:6px 10px; + border-radius:10px; + border:1px solid var(--border-color); +} +.__PFX__-h72-mask{ + display:none; +} +body.__PFX__-h72-open .__PFX__-h72-mask{ + display:block; + position:fixed; + inset:0; + background:rgba(0,0,0,.35); +} +.__PFX__-h72-panel{ + position:fixed; + left:0; + bottom:-100%; + width:100%; + max-height:70%; + background: + linear-gradient(180deg,rgba(255,255,255,.9),rgba(255,255,255,.7)), + var(--bg-color); + backdrop-filter:blur(8px); + padding:14px; + transition:bottom .25s ease; + z-index: 9999; +} +body.__PFX__-h72-open .__PFX__-h72-panel{ + bottom:0; +} +.__PFX__-h72-home a{ + display:inline-block; + margin:0 8px 10px 0; +} +.__PFX__-h72-cats a{ + display:inline-block; + margin:4px 6px 0 0; + padding:6px 10px; + border-radius:999px; + border:1px solid var(--border-color); +} +.__PFX__-h72-cats a.active{ + background:var(--primary-color); + color:#fff; + border-color:var(--primary-color); +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_73.css b/code/public/static/css/modules/head/head_73.css new file mode 100644 index 0000000..9c11e51 --- /dev/null +++ b/code/public/static/css/modules/head/head_73.css @@ -0,0 +1,50 @@ +/* head_73.css */ +.__PFX__-h73-block{ + display:grid; + grid-template-columns:42% 58%; + border-bottom:1px solid var(--border-color); +} +.__PFX__-h73-left{ + padding:12px; + background:var(--primary-color); + color:#fff; +} +.__PFX__-h73-brand{ + display:block; + font-size:18px; + font-weight:900; + margin-bottom:8px; + color:#fff; + text-decoration:none; +} +.__PFX__-h73-right{ + padding:10px; + background: + linear-gradient(180deg,var(--bg-soft-color),var(--bg-color)); +} +.__PFX__-h73-nav a{ + display:inline-block; + margin:3px 6px 0 0; + padding:4px 10px; + font-size:12px; + border-radius:999px; + border:1px solid var(--border-color); + text-decoration:none; +} +.__PFX__-h73-nav a.active{ + background:var(--primary-color); + color:#fff; +} +.__PFX__-h73-search{ + display:none; + margin-top:8px; +} +.__PFX__-h73-search input{ + width:100%; + padding:6px 10px; + border-radius:8px; + border:1px solid var(--border-color); +} +body.__PFX__-h73-open .__PFX__-h73-search{ + display:block; +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_74.css b/code/public/static/css/modules/head/head_74.css new file mode 100644 index 0000000..b5fa823 --- /dev/null +++ b/code/public/static/css/modules/head/head_74.css @@ -0,0 +1,60 @@ +/* head_74.css */ +.__PFX__-h74-drop { + padding: 8px 12px; + background: + linear-gradient(180deg, var(--bg-soft-color), var(--bg-color)); + border-bottom: 1px solid var(--border-color); +} + +.__PFX__-h74-bar { + display: flex; + justify-content: space-between; + align-items: center; +} + +.__PFX__-h74-brand { + font-size: 18px; + font-weight: 900; +} + +.__PFX__-h74-mask { + display: none; +} + +body.__PFX__-h74-open .__PFX__-h74-mask { + display: block; + position: fixed; + inset: 0; + background: rgba(0, 0, 0, .25); +} + +.__PFX__-h74-panel { + z-index:999; + position: fixed; + top: -100%; + left: 0; + right: 0; + background: + linear-gradient(180deg, rgba(255, 255, 255, .9), rgba(255, 255, 255, .7)), + var(--bg-color); + padding: 14px; + transition: top .25s ease; +} + +body.__PFX__-h74-open .__PFX__-h74-panel { + top: 0; +} + +.__PFX__-h74-panel a { + display: inline-block; + margin: 4px 6px; + padding: 6px 12px; + border-radius: 999px; + border: 1px solid var(--border-color); +} + +.__PFX__-h74-panel a.active { + background: var(--primary-color); + color: #fff; + border-color: var(--primary-color); +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_75.css b/code/public/static/css/modules/head/head_75.css new file mode 100644 index 0000000..44638b6 --- /dev/null +++ b/code/public/static/css/modules/head/head_75.css @@ -0,0 +1,132 @@ +/* head_75.css - strong color + left drawer (mobile); PC always shows */ +.__PFX__-h75-wrap { + padding: 8px 12px; + background: linear-gradient(120deg, var(--primary-color), var(--bg-color)); + border-bottom: 1px solid var(--border-color); +} + +.__PFX__-h75-bar { + display: flex; + align-items: center; + gap: 10px; +} + +.__PFX__-h75-brand { + font-weight: 900; + text-decoration: none; + color: var(--text-color); +} + +.__PFX__-h75-btn { + width: 34px; + height: 34px; + border-radius: 10px; + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .18); + cursor: pointer; +} + +.__PFX__-h75-search { + margin-top: 6px; + display: flex; + gap: 6px; + padding: 4px 6px 4px 10px; + border-radius: 999px; + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .22); +} + +.__PFX__-h75-search input { + flex: 1; + min-width: 0; + border: none; + outline: none; + background: transparent; + color: var(--text-color); + font-size: 13px; +} + +.__PFX__-h75-sbtn { + border: none; + border-radius: 999px; + background: var(--accent-color); + color: var(--text-color); + padding: 6px 10px; + cursor: pointer; + font-size: 12px; +} + +.__PFX__-h75-mask { + display: none; +} + +.__PFX__-h75-drawer { + position: fixed; + top: 0; + left: -100%; + width: 78%; + height: 100%; + background: linear-gradient(180deg, rgba(255, 255, 255, .78), rgba(255, 255, 255, .55)), var(--bg-color); + backdrop-filter: blur(10px); + border-right: 1px solid var(--border-color); + padding: 14px 12px; + overflow: auto; + transition: left .25s ease; +} + +body.__PFX__-h75-open .__PFX__-h75-mask { + display: block; + position: fixed; + inset: 0; + background: rgba(0, 0, 0, .35); +} + +body.__PFX__-h75-open .__PFX__-h75-drawer { + left: 0; + z-index: 999; +} + +.__PFX__-h75-home, +.__PFX__-h75-cats { + list-style: none; + margin: 0 0 10px; + padding: 0; +} + +.__PFX__-h75-home li a { + display: block; + padding: 8px 10px; + border-radius: 10px; + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .65); + text-decoration: none; + color: var(--text-color); + margin-bottom: 8px; + font-size: 13px; +} + +.__PFX__-h75-home li.active a { + background: var(--primary-color); + border-color: var(--primary-color); + color: #fff; + font-weight: 900; +} + +.__PFX__-h75-cats li a { + display: block; + padding: 7px 10px; + border-radius: 10px; + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .55); + text-decoration: none; + color: var(--text-color); + margin-bottom: 7px; + font-size: 13px; +} + +.__PFX__-h75-cats li.active a { + background: var(--accent-color); + border-color: var(--accent-color); + font-weight: 900; +} + diff --git a/code/public/static/css/modules/head/head_76.css b/code/public/static/css/modules/head/head_76.css new file mode 100644 index 0000000..f6859f6 --- /dev/null +++ b/code/public/static/css/modules/head/head_76.css @@ -0,0 +1,119 @@ +/* head_76.css - dock switches (mobile); PC always shows */ +.__PFX__-h76-dock { + padding: 8px 12px; + border-bottom: 1px solid var(--border-color); + background: + radial-gradient(circle at 20% -30%, var(--accent-color), transparent 55%), + radial-gradient(circle at 110% 10%, var(--secondary-color), transparent 55%), + var(--bg-color); +} + +.__PFX__-h76-top { + display: flex; + justify-content: space-between; + align-items: center; + gap: 10px; +} + +.__PFX__-h76-brand { + font-size: 17px; + font-weight: 900; + text-decoration: none; + color: var(--text-color); +} + +.__PFX__-h76-acts { + display: flex; + gap: 8px; +} + +.__PFX__-h76-btn { + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .20); + border-radius: 999px; + padding: 6px 10px; + cursor: pointer; + font-size: 12px; + color: var(--text-color); +} + +.__PFX__-h76-search { + display: none; + margin-top: 6px; + gap: 6px; + padding: 4px 6px 4px 10px; + border-radius: 12px; + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .20); +} + +.__PFX__-h76-search input { + flex: 1; + min-width: 0; + border: none; + outline: none; + background: transparent; + color: var(--text-color); + font-size: 13px; +} + +.__PFX__-h76-sbtn { + border: none; + border-radius: 10px; + padding: 6px 10px; + background: var(--primary-color); + color: #fff; + font-size: 12px; + cursor: pointer; +} + +.__PFX__-h76-nav { + display: none; + margin-top: 8px; +} + +body.__PFX__-h76-sopen .__PFX__-h76-search { + display: flex; +} + +body.__PFX__-h76-copen .__PFX__-h76-nav { + display: block; +} + +.__PFX__-h76-home, +.__PFX__-h76-cats { + list-style: none; + margin: 0; + padding: 0; +} + +.__PFX__-h76-home li, +.__PFX__-h76-cats li { + display: inline-block; + margin: 0 8px 8px 0; +} + +.__PFX__-h76-home li a, +.__PFX__-h76-cats li a { + display: inline-block; + padding: 6px 10px; + border-radius: 999px; + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .55); + text-decoration: none; + color: var(--text-color); + font-size: 12px; +} + +.__PFX__-h76-home li.active a { + background: var(--primary-color); + border-color: var(--primary-color); + color: #fff; + font-weight: 900; +} + +.__PFX__-h76-cats li.active a { + background: var(--accent-color); + border-color: var(--accent-color); + font-weight: 900; +} diff --git a/code/public/static/css/modules/head/head_77.css b/code/public/static/css/modules/head/head_77.css new file mode 100644 index 0000000..d13db68 --- /dev/null +++ b/code/public/static/css/modules/head/head_77.css @@ -0,0 +1,24 @@ +/* head_77.css */ +.__PFX__-h77-island{ + padding:12px; + background: + linear-gradient(180deg,var(--bg-color),var(--bg-soft-color)); +} +.__PFX__-h77-core{ + padding:10px; + background:rgba(255,255,255,.6); + backdrop-filter:blur(6px); + border-radius:16px; +} +.__PFX__-h77-brand{ + display:block; + font-size:18px; + font-weight:900; + margin-bottom:6px; +} +.__PFX__-h77-cats{ + margin-top:8px; + display:flex; + gap:8px; + overflow-x:auto; +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_78.css b/code/public/static/css/modules/head/head_78.css new file mode 100644 index 0000000..bd3ea84 --- /dev/null +++ b/code/public/static/css/modules/head/head_78.css @@ -0,0 +1,25 @@ +/* head_78.css */ +.__PFX__-h78-vertical{ + padding:8px 12px; + background: + linear-gradient(180deg,var(--primary-color),var(--bg-color)); +} +.__PFX__-h78-head{ + display:flex; + justify-content:space-between; + align-items:center; +} +.__PFX__-h78-brand{ + color:#fff; + font-weight:900; +} +.__PFX__-h78-cats, +.__PFX__-h78-search{display:none;margin-top:8px;} +body.__PFX__-h78-open .__PFX__-h78-cats{display:flex;flex-direction:column;gap:6px;} +body.__PFX__-h78-open .__PFX__-h78-search{display:block;} +.__PFX__-h78-cats a{ + color:#fff; + padding:6px 10px; + border-radius:8px; + border:1px solid rgba(255,255,255,.4); +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_79.css b/code/public/static/css/modules/head/head_79.css new file mode 100644 index 0000000..fb04942 --- /dev/null +++ b/code/public/static/css/modules/head/head_79.css @@ -0,0 +1,15 @@ +/* head_79.css */ +.__PFX__-h79-split{display:grid;grid-template-columns:38% 62%;border-bottom:1px solid var(--border-color);} +.__PFX__-h79-left{padding:10px;background:var(--primary-color);} +.__PFX__-h79-brand{display:block;font-weight:900;text-decoration:none;color:#fff;margin-bottom:6px} +.__PFX__-h79-btn{border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.15);border-radius:10px;padding:6px 10px;color:#fff} +.__PFX__-h79-right{padding:10px;background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color));} +.__PFX__-h79-search{display:none;margin-top:8px} +.__PFX__-h79-search input{width:100%;padding:6px 10px;border-radius:10px;border:1px solid var(--border-color);background:rgba(255,255,255,.25)} +body.__PFX__-h79-open .__PFX__-h79-search{display:block} +.__PFX__-h79-home,.__PFX__-h79-cats{list-style:none;margin:0;padding:0} +.__PFX__-h79-home li,.__PFX__-h79-cats li{display:inline-block;margin:0 8px 8px 0} +.__PFX__-h79-home li a,.__PFX__-h79-cats li a{display:inline-block;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.55);text-decoration:none;color:var(--text-color);font-size:12px} +.__PFX__-h79-home li.active a{background:var(--primary-color);border-color:var(--primary-color);color:#fff;font-weight:900} +.__PFX__-h79-cats li.active a{background:var(--accent-color);border-color:var(--accent-color);font-weight:900} +@media(min-width:861px){.__PFX__-h79-btn{display:none}.__PFX__-h79-search{display:block}} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_80.css b/code/public/static/css/modules/head/head_80.css new file mode 100644 index 0000000..200f5e7 --- /dev/null +++ b/code/public/static/css/modules/head/head_80.css @@ -0,0 +1,96 @@ +/* head_80.css */ +.__PFX__-h80-marquee { + padding: 8px 12px; + border-bottom: 1px solid var(--border-color); + background: repeating-linear-gradient(90deg, rgba(255, 255, 255, .12) 0 10px, rgba(255, 255, 255, 0) 10px 20px), var(--bg-color); +} + +.__PFX__-h80-bar { + display: flex; + align-items: center; + gap: 10px +} + +.__PFX__-h80-brand { + font-weight: 900; + text-decoration: none; + color: var(--text-color); + white-space: nowrap +} + +.__PFX__-h80-search { + flex: 1; + min-width: 0 +} + +.__PFX__-h80-search input { + width: 100%; + padding: 6px 10px; + border-radius: 999px; + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .18) +} + +.__PFX__-h80-btn { + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .18); + border-radius: 999px; + padding: 6px 10px +} + +.__PFX__-h80-nav { + display: none; + margin-top: 8px +} + +body.__PFX__-h80-open .__PFX__-h80-nav { + display: block +} + +.__PFX__-h80-home, +.__PFX__-h80-cats { + list-style: none; + margin: 0; + padding: 0 +} + +.__PFX__-h80-home li, +.__PFX__-h80-cats li { + display: inline-block; + margin: 0 8px 8px 0 +} + +.__PFX__-h80-home li a, +.__PFX__-h80-cats li a { + display: inline-block; + padding: 6px 10px; + border-radius: 999px; + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .55); + text-decoration: none; + color: var(--text-color); + font-size: 12px +} + +.__PFX__-h80-home li.active a { + background: var(--primary-color); + border-color: var(--primary-color); + color: #fff; + font-weight: 900 +} + +.__PFX__-h80-cats li.active a { + background: var(--accent-color); + border-color: var(--accent-color); + font-weight: 900 +} + +@media(min-width:861px) { + /* .__PFX__-h80-btn { + display: none + } + + .__PFX__-h80-nav { + display: block + } */ +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_81.css b/code/public/static/css/modules/head/head_81.css new file mode 100644 index 0000000..de9fe44 --- /dev/null +++ b/code/public/static/css/modules/head/head_81.css @@ -0,0 +1,18 @@ +/* head_81.css */ +.__PFX__-h81-cards{ + padding:10px 12px;border-bottom:1px solid var(--border-color); + background:radial-gradient(circle at 10% 0,var(--accent-color),transparent 55%),var(--bg-soft-color); +} +.__PFX__-h81-cardA{display:flex;justify-content:space-between;align-items:center;padding:10px;border-radius:14px;background:rgba(255,255,255,.22);backdrop-filter:blur(6px)} +.__PFX__-h81-brand{font-weight:900;text-decoration:none;color:var(--text-color)} +.__PFX__-h81-btn{border:1px solid var(--border-color);background:rgba(255,255,255,.18);border-radius:10px;padding:6px 10px} +.__PFX__-h81-cardB{margin-top:8px;padding:10px;border-radius:14px;background:rgba(255,255,255,.18);backdrop-filter:blur(6px)} +.__PFX__-h81-search{display:none;margin-top:8px} +.__PFX__-h81-search input{width:100%;padding:6px 10px;border-radius:10px;border:1px solid var(--border-color);background:rgba(255,255,255,.25)} +body.__PFX__-h81-open .__PFX__-h81-search{display:block} +.__PFX__-h81-home,.__PFX__-h81-cats{list-style:none;margin:0;padding:0} +.__PFX__-h81-home li,.__PFX__-h81-cats li{display:inline-block;margin:0 8px 8px 0} +.__PFX__-h81-home li a,.__PFX__-h81-cats li a{display:inline-block;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.55);text-decoration:none;color:var(--text-color);font-size:12px} +.__PFX__-h81-home li.active a{background:var(--primary-color);border-color:var(--primary-color);color:#fff;font-weight:900} +.__PFX__-h81-cats li.active a{background:var(--accent-color);border-color:var(--accent-color);font-weight:900} +@media(min-width:861px){.__PFX__-h81-btn{display:none}.__PFX__-h81-search{display:block}} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_82.css b/code/public/static/css/modules/head/head_82.css new file mode 100644 index 0000000..ace178f --- /dev/null +++ b/code/public/static/css/modules/head/head_82.css @@ -0,0 +1,18 @@ +/* head_82.css */ +.__PFX__-h82-mega{ + padding:8px 12px;border-bottom:1px solid var(--border-color); + background:linear-gradient(90deg,var(--bg-color),var(--bg-soft-color),var(--bg-color)); +} +.__PFX__-h82-bar{display:flex;align-items:center;gap:10px} +.__PFX__-h82-brand{font-weight:900;text-decoration:none;color:var(--text-color);white-space:nowrap} +.__PFX__-h82-search{flex:1;min-width:0} +.__PFX__-h82-search input{width:100%;padding:6px 10px;border-radius:10px;border:1px solid var(--border-color);background:rgba(255,255,255,.18)} +.__PFX__-h82-btn{border:1px solid var(--border-color);background:rgba(255,255,255,.18);border-radius:10px;padding:6px 10px} +.__PFX__-h82-nav{display:none;margin-top:8px} +body.__PFX__-h82-open .__PFX__-h82-nav{display:block} +.__PFX__-h82-home,.__PFX__-h82-cats{list-style:none;margin:0;padding:0} +.__PFX__-h82-home li,.__PFX__-h82-cats li{display:inline-block;margin:0 8px 8px 0} +.__PFX__-h82-home li a,.__PFX__-h82-cats li a{display:inline-block;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.55);text-decoration:none;color:var(--text-color);font-size:12px} +.__PFX__-h82-home li.active a{background:var(--primary-color);border-color:var(--primary-color);color:#fff;font-weight:900} +.__PFX__-h82-cats li.active a{background:var(--accent-color);border-color:var(--accent-color);font-weight:900} +@media(min-width:861px){.__PFX__-h82-btn{display:none}.__PFX__-h82-nav{display:block}} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_83.css b/code/public/static/css/modules/head/head_83.css new file mode 100644 index 0000000..717ef39 --- /dev/null +++ b/code/public/static/css/modules/head/head_83.css @@ -0,0 +1,18 @@ +/* head_83.css */ +.__PFX__-h83-mega{ + padding:8px 12px;border-bottom:1px solid var(--border-color); + background:linear-gradient(90deg,var(--bg-color),var(--bg-soft-color),var(--bg-color)); +} +.__PFX__-h83-bar{display:flex;align-items:center;gap:10px} +.__PFX__-h83-brand{font-weight:900;text-decoration:none;color:var(--text-color);white-space:nowrap} +.__PFX__-h83-search{flex:1;min-width:0} +.__PFX__-h83-search input{width:100%;padding:6px 10px;border-radius:10px;border:1px solid var(--border-color);background:rgba(255,255,255,.18)} +.__PFX__-h83-btn{border:1px solid var(--border-color);background:rgba(255,255,255,.18);border-radius:10px;padding:6px 10px} +.__PFX__-h83-nav{display:none;margin-top:8px} +body.__PFX__-h83-open .__PFX__-h83-nav{display:block} +.__PFX__-h83-home,.__PFX__-h83-cats{list-style:none;margin:0;padding:0} +.__PFX__-h83-home li,.__PFX__-h83-cats li{display:inline-block;margin:0 8px 8px 0} +.__PFX__-h83-home li a,.__PFX__-h83-cats li a{display:inline-block;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.55);text-decoration:none;color:var(--text-color);font-size:12px} +.__PFX__-h83-home li.active a{background:var(--primary-color);border-color:var(--primary-color);color:#fff;font-weight:900} +.__PFX__-h83-cats li.active a{background:var(--accent-color);border-color:var(--accent-color);font-weight:900} +@media(min-width:861px){.__PFX__-h83-btn{display:none}.__PFX__-h83-nav{display:block}} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_84.css b/code/public/static/css/modules/head/head_84.css new file mode 100644 index 0000000..84b67ff --- /dev/null +++ b/code/public/static/css/modules/head/head_84.css @@ -0,0 +1,106 @@ +/* head_84.css */ +.__PFX__-h84-sheet { + padding: 8px 12px; + border-bottom: 1px solid var(--border-color); + background: radial-gradient(circle at 80% -20%, var(--secondary-color), transparent 58%), var(--bg-color); +} + +.__PFX__-h84-bar { + display: flex; + justify-content: space-between; + align-items: center; + gap: 10px +} + +.__PFX__-h84-brand { + font-weight: 900; + text-decoration: none; + color: var(--text-color) +} + +.__PFX__-h84-btn { + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .18); + border-radius: 10px; + padding: 6px 10px +} + +.__PFX__-h84-search { + margin-top: 6px +} + +.__PFX__-h84-search input { + width: 100%; + padding: 6px 10px; + border-radius: 10px; + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .18) +} + +.__PFX__-h84-mask { + display: none +} + +.__PFX__-h84-panel { + z-index:999; + position: fixed; + left: 0; + right: 0; + bottom: -100%; + max-height: 72%; + padding: 14px; + background: var(--bg-color); + border-top: 1px solid var(--border-color); + overflow: auto; + transition: bottom .25s; +} + +body.__PFX__-h84-open .__PFX__-h84-mask { + display: block; + position: fixed; + inset: 0; + background: rgba(0, 0, 0, .35) +} + +body.__PFX__-h84-open .__PFX__-h84-panel { + bottom: 0 +} + +.__PFX__-h84-home, +.__PFX__-h84-cats { + list-style: none; + margin: 0; + padding: 0 +} + +.__PFX__-h84-home li, +.__PFX__-h84-cats li { + display: inline-block; + margin: 0 5px 5px 0 +} + +.__PFX__-h84-home li a, +.__PFX__-h84-cats li a { + display: inline-block; + padding: 6px 10px; + border-radius: 999px; + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .55); + text-decoration: none; + color: var(--text-color); + font-size: 12px; +} + +.__PFX__-h84-home li.active a { + background: var(--primary-color); + border-color: var(--primary-color); + color: #fff; + font-weight: 900 +} + +.__PFX__-h84-cats li.active a { + background: var(--accent-color); + border-color: var(--accent-color); + font-weight: 900 +} + diff --git a/code/public/static/css/modules/head/head_85.css b/code/public/static/css/modules/head/head_85.css new file mode 100644 index 0000000..32c1c1c --- /dev/null +++ b/code/public/static/css/modules/head/head_85.css @@ -0,0 +1,97 @@ +/* head_85.css */ +.__PFX__-h85-split { + display: grid; + grid-template-columns: 38% 62%; + border-bottom: 1px solid var(--border-color); +} + +.__PFX__-h85-left { + padding: 10px; + background: var(--primary-color); +} + +.__PFX__-h85-brand { + display: block; + font-weight: 900; + text-decoration: none; + color: #fff; + margin-bottom: 6px +} + +.__PFX__-h85-btn { + border: 1px solid rgba(255, 255, 255, .35); + background: rgba(255, 255, 255, .15); + border-radius: 10px; + padding: 6px 10px; + color: #fff +} + +.__PFX__-h85-right { + padding: 10px; + background: linear-gradient(180deg, var(--bg-soft-color), var(--bg-color)); +} + +.__PFX__-h85-search { + display: none; + margin-top: 8px +} + +.__PFX__-h85-search input { + width: 100%; + padding: 6px 10px; + border-radius: 10px; + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .25) +} + +body.__PFX__-h85-open .__PFX__-h85-search { + display: block +} + +.__PFX__-h85-home, +.__PFX__-h85-cats { + list-style: none; + margin: 0; + padding: 0 +} + +.__PFX__-h85-home li, +.__PFX__-h85-cats li { + display: inline-block; + margin: 0 5px 5px 0 +} + +.__PFX__-h85-home li a, +.__PFX__-h85-cats li a { + display: inline-block; + padding: 6px 10px; + border-radius: 999px; + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .55); + text-decoration: none; + color: var(--text-color); + font-size: 12px +} + +.__PFX__-h85-home li.active a { + background: var(--primary-color); + border-color: var(--primary-color); + color: #fff; + font-weight: 900 +} + +.__PFX__-h85-cats li.active a { + background: var(--accent-color); + border-color: var(--accent-color); + font-weight: 900 +} + +@media(min-width:861px) { + .__PFX__-h85-btn { + display: none + } + + .__PFX__-h85-search { + display: block + } +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_86.css b/code/public/static/css/modules/head/head_86.css new file mode 100644 index 0000000..6d534c7 --- /dev/null +++ b/code/public/static/css/modules/head/head_86.css @@ -0,0 +1,18 @@ +/* head_86.css */ +.__PFX__-h86-marquee{ + padding:8px 12px;border-bottom:1px solid var(--border-color); + background:repeating-linear-gradient(90deg, rgba(255,255,255,.12) 0 10px, rgba(255,255,255,0) 10px 20px), var(--bg-color); +} +.__PFX__-h86-bar{display:flex;align-items:center;gap:10px} +.__PFX__-h86-brand{font-weight:900;text-decoration:none;color:var(--text-color);white-space:nowrap} +.__PFX__-h86-search{flex:1;min-width:0} +.__PFX__-h86-search input{width:100%;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.18)} +.__PFX__-h86-btn{border:1px solid var(--border-color);background:rgba(255,255,255,.18);border-radius:999px;padding:6px 10px} +.__PFX__-h86-nav{display:none;margin-top:8px} +body.__PFX__-h86-open .__PFX__-h86-nav{display:block} +.__PFX__-h86-home,.__PFX__-h86-cats{list-style:none;margin:0;padding:0} +.__PFX__-h86-home li,.__PFX__-h86-cats li{display:inline-block;margin:0 8px 8px 0} +.__PFX__-h86-home li a,.__PFX__-h86-cats li a{display:inline-block;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.55);text-decoration:none;color:var(--text-color);font-size:12px} +.__PFX__-h86-home li.active a{background:var(--primary-color);border-color:var(--primary-color);color:#fff;font-weight:900} +.__PFX__-h86-cats li.active a{background:var(--accent-color);border-color:var(--accent-color);font-weight:900} +@media(min-width:861px){.__PFX__-h86-btn{display:none}.__PFX__-h86-nav{display:block}} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_87.css b/code/public/static/css/modules/head/head_87.css new file mode 100644 index 0000000..172f718 --- /dev/null +++ b/code/public/static/css/modules/head/head_87.css @@ -0,0 +1,18 @@ +/* head_87.css */ +.__PFX__-h87-cards{ + padding:10px 12px;border-bottom:1px solid var(--border-color); + background:radial-gradient(circle at 10% 0,var(--accent-color),transparent 55%),var(--bg-soft-color); +} +.__PFX__-h87-cardA{display:flex;justify-content:space-between;align-items:center;padding:10px;border-radius:14px;background:rgba(255,255,255,.22);backdrop-filter:blur(6px)} +.__PFX__-h87-brand{font-weight:900;text-decoration:none;color:var(--text-color)} +.__PFX__-h87-btn{border:1px solid var(--border-color);background:rgba(255,255,255,.18);border-radius:10px;padding:6px 10px} +.__PFX__-h87-cardB{margin-top:8px;padding:10px;border-radius:14px;background:rgba(255,255,255,.18);backdrop-filter:blur(6px)} +.__PFX__-h87-search{display:none;margin-top:8px} +.__PFX__-h87-search input{width:100%;padding:6px 10px;border-radius:10px;border:1px solid var(--border-color);background:rgba(255,255,255,.25)} +body.__PFX__-h87-open .__PFX__-h87-search{display:block} +.__PFX__-h87-home,.__PFX__-h87-cats{list-style:none;margin:0;padding:0} +.__PFX__-h87-home li,.__PFX__-h87-cats li{display:inline-block;margin:0 8px 8px 0} +.__PFX__-h87-home li a,.__PFX__-h87-cats li a{display:inline-block;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.55);text-decoration:none;color:var(--text-color);font-size:12px} +.__PFX__-h87-home li.active a{background:var(--primary-color);border-color:var(--primary-color);color:#fff;font-weight:900} +.__PFX__-h87-cats li.active a{background:var(--accent-color);border-color:var(--accent-color);font-weight:900} +@media(min-width:861px){.__PFX__-h87-btn{display:none}.__PFX__-h87-search{display:block}} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_88.css b/code/public/static/css/modules/head/head_88.css new file mode 100644 index 0000000..b159016 --- /dev/null +++ b/code/public/static/css/modules/head/head_88.css @@ -0,0 +1,18 @@ +/* head_88.css */ +.__PFX__-h88-mega{ + padding:8px 12px;border-bottom:1px solid var(--border-color); + background:linear-gradient(90deg,var(--bg-color),var(--bg-soft-color),var(--bg-color)); +} +.__PFX__-h88-bar{display:flex;align-items:center;gap:10px} +.__PFX__-h88-brand{font-weight:900;text-decoration:none;color:var(--text-color);white-space:nowrap} +.__PFX__-h88-search{flex:1;min-width:0} +.__PFX__-h88-search input{width:100%;padding:6px 10px;border-radius:10px;border:1px solid var(--border-color);background:rgba(255,255,255,.18)} +.__PFX__-h88-btn{border:1px solid var(--border-color);background:rgba(255,255,255,.18);border-radius:10px;padding:6px 10px} +.__PFX__-h88-nav{display:none;margin-top:8px} +body.__PFX__-h88-open .__PFX__-h88-nav{display:block} +.__PFX__-h88-home,.__PFX__-h88-cats{list-style:none;margin:0;padding:0} +.__PFX__-h88-home li,.__PFX__-h88-cats li{display:inline-block;margin:0 8px 8px 0} +.__PFX__-h88-home li a,.__PFX__-h88-cats li a{display:inline-block;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.55);text-decoration:none;color:var(--text-color);font-size:12px} +.__PFX__-h88-home li.active a{background:var(--primary-color);border-color:var(--primary-color);color:#fff;font-weight:900} +.__PFX__-h88-cats li.active a{background:var(--accent-color);border-color:var(--accent-color);font-weight:900} +@media(min-width:861px){.__PFX__-h88-btn{display:none}.__PFX__-h88-nav{display:block}} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_89.css b/code/public/static/css/modules/head/head_89.css new file mode 100644 index 0000000..ed6ed7b --- /dev/null +++ b/code/public/static/css/modules/head/head_89.css @@ -0,0 +1,18 @@ +/* head_89.css */ +.__PFX__-h89-mega{ + padding:8px 12px;border-bottom:1px solid var(--border-color); + background:linear-gradient(90deg,var(--bg-color),var(--bg-soft-color),var(--bg-color)); +} +.__PFX__-h89-bar{display:flex;align-items:center;gap:10px} +.__PFX__-h89-brand{font-weight:900;text-decoration:none;color:var(--text-color);white-space:nowrap} +.__PFX__-h89-search{flex:1;min-width:0} +.__PFX__-h89-search input{width:100%;padding:6px 10px;border-radius:10px;border:1px solid var(--border-color);background:rgba(255,255,255,.18)} +.__PFX__-h89-btn{border:1px solid var(--border-color);background:rgba(255,255,255,.18);border-radius:10px;padding:6px 10px} +.__PFX__-h89-nav{display:none;margin-top:8px} +body.__PFX__-h89-open .__PFX__-h89-nav{display:block} +.__PFX__-h89-home,.__PFX__-h89-cats{list-style:none;margin:0;padding:0} +.__PFX__-h89-home li,.__PFX__-h89-cats li{display:inline-block;margin:0 8px 8px 0} +.__PFX__-h89-home li a,.__PFX__-h89-cats li a{display:inline-block;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.55);text-decoration:none;color:var(--text-color);font-size:12px} +.__PFX__-h89-home li.active a{background:var(--primary-color);border-color:var(--primary-color);color:#fff;font-weight:900} +.__PFX__-h89-cats li.active a{background:var(--accent-color);border-color:var(--accent-color);font-weight:900} +@media(min-width:861px){.__PFX__-h89-btn{display:none}.__PFX__-h89-nav{display:block}} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_90.css b/code/public/static/css/modules/head/head_90.css new file mode 100644 index 0000000..de909e0 --- /dev/null +++ b/code/public/static/css/modules/head/head_90.css @@ -0,0 +1,124 @@ +/* head_90.css */ +.__PFX__-h90-sheet { + padding: 8px 12px; + border-bottom: 1px solid var(--border-color); + background: radial-gradient(circle at 80% -20%, var(--secondary-color), transparent 58%), var(--bg-color); +} + +.__PFX__-h90-bar { + display: flex; + justify-content: space-between; + align-items: center; + gap: 10px +} + +.__PFX__-h90-brand { + font-weight: 900; + text-decoration: none; + color: var(--text-color) +} + +.__PFX__-h90-btn { + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .18); + border-radius: 10px; + padding: 6px 10px +} + +.__PFX__-h90-search { + margin-top: 6px +} + +.__PFX__-h90-search input { + width: 100%; + padding: 6px 10px; + border-radius: 10px; + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .18) +} + +.__PFX__-h90-mask { + display: none +} + +.__PFX__-h90-panel { + position: fixed; + left: 0; + right: 0; + bottom: -100%; + max-height: 72%; + padding: 14px; + background: var(--bg-color); + border-top: 1px solid var(--border-color); + overflow: auto; + transition: bottom .25s; + z-index:999; +} + +body.__PFX__-h90-open .__PFX__-h90-mask { + display: block; + position: fixed; + inset: 0; + background: rgba(0, 0, 0, .35) +} + +body.__PFX__-h90-open .__PFX__-h90-panel { + bottom: 0 +} + +.__PFX__-h90-home, +.__PFX__-h90-cats { + list-style: none; + margin: 0; + padding: 0 +} + +.__PFX__-h90-home li, +.__PFX__-h90-cats li { + display: inline-block; + margin: 0 5px 5px 0 +} + +.__PFX__-h90-home li a, +.__PFX__-h90-cats li a { + display: inline-block; + padding: 6px 10px; + border-radius: 999px; + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .55); + text-decoration: none; + color: var(--text-color); + font-size: 12px; +} + +.__PFX__-h90-home li.active a { + background: var(--primary-color); + border-color: var(--primary-color); + color: #fff; + font-weight: 900 +} + +.__PFX__-h90-cats li.active a { + background: var(--accent-color); + border-color: var(--accent-color); + font-weight: 900 +} + +@media(min-width:861px) { + .__PFX__-h90-btn { + display: none + } + + .__PFX__-h90-mask { + display: none !important + } + + .__PFX__-h90-panel { + position: static; + bottom: auto; + max-height: none; + padding: 8px 0 0; + border-top: none; + transition: none + } +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_91.css b/code/public/static/css/modules/head/head_91.css new file mode 100644 index 0000000..3b24e35 --- /dev/null +++ b/code/public/static/css/modules/head/head_91.css @@ -0,0 +1,15 @@ +/* head_91.css */ +.__PFX__-h91-split{display:grid;grid-template-columns:38% 62%;border-bottom:1px solid var(--border-color);} +.__PFX__-h91-left{padding:10px;background:var(--primary-color);} +.__PFX__-h91-brand{display:block;font-weight:900;text-decoration:none;color:#fff;margin-bottom:6px} +.__PFX__-h91-btn{border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.15);border-radius:10px;padding:6px 10px;color:#fff} +.__PFX__-h91-right{padding:10px;background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color));} +.__PFX__-h91-search{display:none;margin-top:8px} +.__PFX__-h91-search input{width:100%;padding:6px 10px;border-radius:10px;border:1px solid var(--border-color);background:rgba(255,255,255,.25)} +body.__PFX__-h91-open .__PFX__-h91-search{display:block} +.__PFX__-h91-home,.__PFX__-h91-cats{list-style:none;margin:0;padding:0} +.__PFX__-h91-home li,.__PFX__-h91-cats li{display:inline-block;margin:0 8px 8px 0} +.__PFX__-h91-home li a,.__PFX__-h91-cats li a{display:inline-block;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.55);text-decoration:none;color:var(--text-color);font-size:12px} +.__PFX__-h91-home li.active a{background:var(--primary-color);border-color:var(--primary-color);color:#fff;font-weight:900} +.__PFX__-h91-cats li.active a{background:var(--accent-color);border-color:var(--accent-color);font-weight:900} +@media(min-width:861px){.__PFX__-h91-btn{display:none}.__PFX__-h91-search{display:block}} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_92.css b/code/public/static/css/modules/head/head_92.css new file mode 100644 index 0000000..73872c2 --- /dev/null +++ b/code/public/static/css/modules/head/head_92.css @@ -0,0 +1,18 @@ +/* head_92.css */ +.__PFX__-h92-marquee{ + padding:8px 12px;border-bottom:1px solid var(--border-color); + background:repeating-linear-gradient(90deg, rgba(255,255,255,.12) 0 10px, rgba(255,255,255,0) 10px 20px), var(--bg-color); +} +.__PFX__-h92-bar{display:flex;align-items:center;gap:10px} +.__PFX__-h92-brand{font-weight:900;text-decoration:none;color:var(--text-color);white-space:nowrap} +.__PFX__-h92-search{flex:1;min-width:0} +.__PFX__-h92-search input{width:100%;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.18)} +.__PFX__-h92-btn{border:1px solid var(--border-color);background:rgba(255,255,255,.18);border-radius:999px;padding:6px 10px} +.__PFX__-h92-nav{display:none;margin-top:8px} +body.__PFX__-h92-open .__PFX__-h92-nav{display:block} +.__PFX__-h92-home,.__PFX__-h92-cats{list-style:none;margin:0;padding:0} +.__PFX__-h92-home li,.__PFX__-h92-cats li{display:inline-block;margin:0 8px 8px 0} +.__PFX__-h92-home li a,.__PFX__-h92-cats li a{display:inline-block;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.55);text-decoration:none;color:var(--text-color);font-size:12px} +.__PFX__-h92-home li.active a{background:var(--primary-color);border-color:var(--primary-color);color:#fff;font-weight:900} +.__PFX__-h92-cats li.active a{background:var(--accent-color);border-color:var(--accent-color);font-weight:900} +@media(min-width:861px){.__PFX__-h92-btn{display:none}.__PFX__-h92-nav{display:block}} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_93.css b/code/public/static/css/modules/head/head_93.css new file mode 100644 index 0000000..9eb3fb4 --- /dev/null +++ b/code/public/static/css/modules/head/head_93.css @@ -0,0 +1,18 @@ +/* head_93.css */ +.__PFX__-h93-cards{ + padding:10px 12px;border-bottom:1px solid var(--border-color); + background:radial-gradient(circle at 10% 0,var(--accent-color),transparent 55%),var(--bg-soft-color); +} +.__PFX__-h93-cardA{display:flex;justify-content:space-between;align-items:center;padding:10px;border-radius:14px;background:rgba(255,255,255,.22);backdrop-filter:blur(6px)} +.__PFX__-h93-brand{font-weight:900;text-decoration:none;color:var(--text-color)} +.__PFX__-h93-btn{border:1px solid var(--border-color);background:rgba(255,255,255,.18);border-radius:10px;padding:6px 10px} +.__PFX__-h93-cardB{margin-top:8px;padding:10px;border-radius:14px;background:rgba(255,255,255,.18);backdrop-filter:blur(6px)} +.__PFX__-h93-search{display:none;margin-top:8px} +.__PFX__-h93-search input{width:100%;padding:6px 10px;border-radius:10px;border:1px solid var(--border-color);background:rgba(255,255,255,.25)} +body.__PFX__-h93-open .__PFX__-h93-search{display:block} +.__PFX__-h93-home,.__PFX__-h93-cats{list-style:none;margin:0;padding:0} +.__PFX__-h93-home li,.__PFX__-h93-cats li{display:inline-block;margin:0 8px 8px 0} +.__PFX__-h93-home li a,.__PFX__-h93-cats li a{display:inline-block;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.55);text-decoration:none;color:var(--text-color);font-size:12px} +.__PFX__-h93-home li.active a{background:var(--primary-color);border-color:var(--primary-color);color:#fff;font-weight:900} +.__PFX__-h93-cats li.active a{background:var(--accent-color);border-color:var(--accent-color);font-weight:900} +@media(min-width:861px){.__PFX__-h93-btn{display:none}.__PFX__-h93-search{display:block}} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_94.css b/code/public/static/css/modules/head/head_94.css new file mode 100644 index 0000000..9537d0b --- /dev/null +++ b/code/public/static/css/modules/head/head_94.css @@ -0,0 +1,18 @@ +/* head_94.css */ +.__PFX__-h94-mega{ + padding:8px 12px;border-bottom:1px solid var(--border-color); + background:linear-gradient(90deg,var(--bg-color),var(--bg-soft-color),var(--bg-color)); +} +.__PFX__-h94-bar{display:flex;align-items:center;gap:10px} +.__PFX__-h94-brand{font-weight:900;text-decoration:none;color:var(--text-color);white-space:nowrap} +.__PFX__-h94-search{flex:1;min-width:0} +.__PFX__-h94-search input{width:100%;padding:6px 10px;border-radius:10px;border:1px solid var(--border-color);background:rgba(255,255,255,.18)} +.__PFX__-h94-btn{border:1px solid var(--border-color);background:rgba(255,255,255,.18);border-radius:10px;padding:6px 10px} +.__PFX__-h94-nav{display:none;margin-top:8px} +body.__PFX__-h94-open .__PFX__-h94-nav{display:block} +.__PFX__-h94-home,.__PFX__-h94-cats{list-style:none;margin:0;padding:0} +.__PFX__-h94-home li,.__PFX__-h94-cats li{display:inline-block;margin:0 8px 8px 0} +.__PFX__-h94-home li a,.__PFX__-h94-cats li a{display:inline-block;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.55);text-decoration:none;color:var(--text-color);font-size:12px} +.__PFX__-h94-home li.active a{background:var(--primary-color);border-color:var(--primary-color);color:#fff;font-weight:900} +.__PFX__-h94-cats li.active a{background:var(--accent-color);border-color:var(--accent-color);font-weight:900} +@media(min-width:861px){.__PFX__-h94-btn{display:none}.__PFX__-h94-nav{display:block}} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_95.css b/code/public/static/css/modules/head/head_95.css new file mode 100644 index 0000000..f41e78e --- /dev/null +++ b/code/public/static/css/modules/head/head_95.css @@ -0,0 +1,18 @@ +/* head_95.css */ +.__PFX__-h95-mega{ + padding:8px 12px;border-bottom:1px solid var(--border-color); + background:linear-gradient(90deg,var(--bg-color),var(--bg-soft-color),var(--bg-color)); +} +.__PFX__-h95-bar{display:flex;align-items:center;gap:10px} +.__PFX__-h95-brand{font-weight:900;text-decoration:none;color:var(--text-color);white-space:nowrap} +.__PFX__-h95-search{flex:1;min-width:0} +.__PFX__-h95-search input{width:100%;padding:6px 10px;border-radius:10px;border:1px solid var(--border-color);background:rgba(255,255,255,.18)} +.__PFX__-h95-btn{border:1px solid var(--border-color);background:rgba(255,255,255,.18);border-radius:10px;padding:6px 10px} +.__PFX__-h95-nav{display:none;margin-top:8px} +body.__PFX__-h95-open .__PFX__-h95-nav{display:block} +.__PFX__-h95-home,.__PFX__-h95-cats{list-style:none;margin:0;padding:0} +.__PFX__-h95-home li,.__PFX__-h95-cats li{display:inline-block;margin:0 8px 8px 0} +.__PFX__-h95-home li a,.__PFX__-h95-cats li a{display:inline-block;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.55);text-decoration:none;color:var(--text-color);font-size:12px} +.__PFX__-h95-home li.active a{background:var(--primary-color);border-color:var(--primary-color);color:#fff;font-weight:900} +.__PFX__-h95-cats li.active a{background:var(--accent-color);border-color:var(--accent-color);font-weight:900} +@media(min-width:861px){.__PFX__-h95-btn{display:none}.__PFX__-h95-nav{display:block}} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_96.css b/code/public/static/css/modules/head/head_96.css new file mode 100644 index 0000000..39d7d01 --- /dev/null +++ b/code/public/static/css/modules/head/head_96.css @@ -0,0 +1,124 @@ +/* head_96.css */ +.__PFX__-h96-sheet { + padding: 8px 12px; + border-bottom: 1px solid var(--border-color); + background: radial-gradient(circle at 80% -20%, var(--secondary-color), transparent 58%), var(--bg-color); +} + +.__PFX__-h96-bar { + display: flex; + justify-content: space-between; + align-items: center; + gap: 10px +} + +.__PFX__-h96-brand { + font-weight: 900; + text-decoration: none; + color: var(--text-color) +} + +.__PFX__-h96-btn { + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .18); + border-radius: 10px; + padding: 6px 10px +} + +.__PFX__-h96-search { + margin-top: 6px +} + +.__PFX__-h96-search input { + width: 100%; + padding: 6px 10px; + border-radius: 10px; + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .18) +} + +.__PFX__-h96-mask { + display: none +} + +.__PFX__-h96-panel { + z-index:999; + position: fixed; + left: 0; + right: 0; + bottom: -100%; + max-height: 72%; + padding: 14px; + background: var(--bg-color); + border-top: 1px solid var(--border-color); + overflow: auto; + transition: bottom .25s; +} + +body.__PFX__-h96-open .__PFX__-h96-mask { + display: block; + position: fixed; + inset: 0; + background: rgba(0, 0, 0, .35) +} + +body.__PFX__-h96-open .__PFX__-h96-panel { + bottom: 0 +} + +.__PFX__-h96-home, +.__PFX__-h96-cats { + list-style: none; + margin: 0; + padding: 0 +} + +.__PFX__-h96-home li, +.__PFX__-h96-cats li { + display: inline-block; + margin: 0 8px 8px 0 +} + +.__PFX__-h96-home li a, +.__PFX__-h96-cats li a { + display: inline-block; + padding: 6px 10px; + border-radius: 999px; + border: 1px solid var(--border-color); + background: rgba(255, 255, 255, .55); + text-decoration: none; + color: var(--text-color); + font-size: 12px; +} + +.__PFX__-h96-home li.active a { + background: var(--primary-color); + border-color: var(--primary-color); + color: #fff; + font-weight: 900 +} + +.__PFX__-h96-cats li.active a { + background: var(--accent-color); + border-color: var(--accent-color); + font-weight: 900 +} + +@media(min-width:861px) { + .__PFX__-h96-btn { + display: none + } + + .__PFX__-h96-mask { + display: none !important + } + + .__PFX__-h96-panel { + position: static; + bottom: auto; + max-height: none; + padding: 8px 0 0; + border-top: none; + transition: none + } +} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_97.css b/code/public/static/css/modules/head/head_97.css new file mode 100644 index 0000000..05a3518 --- /dev/null +++ b/code/public/static/css/modules/head/head_97.css @@ -0,0 +1,15 @@ +/* head_97.css */ +.__PFX__-h97-split{display:grid;grid-template-columns:38% 62%;border-bottom:1px solid var(--border-color);} +.__PFX__-h97-left{padding:10px;background:var(--primary-color);} +.__PFX__-h97-brand{display:block;font-weight:900;text-decoration:none;color:#fff;margin-bottom:6px} +.__PFX__-h97-btn{border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.15);border-radius:10px;padding:6px 10px;color:#fff} +.__PFX__-h97-right{padding:10px;background:linear-gradient(180deg,var(--bg-soft-color),var(--bg-color));} +.__PFX__-h97-search{display:none;margin-top:8px} +.__PFX__-h97-search input{width:100%;padding:6px 10px;border-radius:10px;border:1px solid var(--border-color);background:rgba(255,255,255,.25)} +body.__PFX__-h97-open .__PFX__-h97-search{display:block} +.__PFX__-h97-home,.__PFX__-h97-cats{list-style:none;margin:0;padding:0} +.__PFX__-h97-home li,.__PFX__-h97-cats li{display:inline-block;margin:0 8px 8px 0} +.__PFX__-h97-home li a,.__PFX__-h97-cats li a{display:inline-block;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.55);text-decoration:none;color:var(--text-color);font-size:12px} +.__PFX__-h97-home li.active a{background:var(--primary-color);border-color:var(--primary-color);color:#fff;font-weight:900} +.__PFX__-h97-cats li.active a{background:var(--accent-color);border-color:var(--accent-color);font-weight:900} +@media(min-width:861px){.__PFX__-h97-btn{display:none}.__PFX__-h97-search{display:block}} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_98.css b/code/public/static/css/modules/head/head_98.css new file mode 100644 index 0000000..26514df --- /dev/null +++ b/code/public/static/css/modules/head/head_98.css @@ -0,0 +1,18 @@ +/* head_98.css */ +.__PFX__-h98-marquee{ + padding:8px 12px;border-bottom:1px solid var(--border-color); + background:repeating-linear-gradient(90deg, rgba(255,255,255,.12) 0 10px, rgba(255,255,255,0) 10px 20px), var(--bg-color); +} +.__PFX__-h98-bar{display:flex;align-items:center;gap:10px} +.__PFX__-h98-brand{font-weight:900;text-decoration:none;color:var(--text-color);white-space:nowrap} +.__PFX__-h98-search{flex:1;min-width:0} +.__PFX__-h98-search input{width:100%;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.18)} +.__PFX__-h98-btn{border:1px solid var(--border-color);background:rgba(255,255,255,.18);border-radius:999px;padding:6px 10px} +.__PFX__-h98-nav{display:none;margin-top:8px} +body.__PFX__-h98-open .__PFX__-h98-nav{display:block} +.__PFX__-h98-home,.__PFX__-h98-cats{list-style:none;margin:0;padding:0} +.__PFX__-h98-home li,.__PFX__-h98-cats li{display:inline-block;margin:0 8px 8px 0} +.__PFX__-h98-home li a,.__PFX__-h98-cats li a{display:inline-block;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.55);text-decoration:none;color:var(--text-color);font-size:12px} +.__PFX__-h98-home li.active a{background:var(--primary-color);border-color:var(--primary-color);color:#fff;font-weight:900} +.__PFX__-h98-cats li.active a{background:var(--accent-color);border-color:var(--accent-color);font-weight:900} +@media(min-width:861px){.__PFX__-h98-btn{display:none}.__PFX__-h98-nav{display:block}} \ No newline at end of file diff --git a/code/public/static/css/modules/head/head_99.css b/code/public/static/css/modules/head/head_99.css new file mode 100644 index 0000000..835ef39 --- /dev/null +++ b/code/public/static/css/modules/head/head_99.css @@ -0,0 +1,18 @@ +/* head_99.css */ +.__PFX__-h99-cards{ + padding:10px 12px;border-bottom:1px solid var(--border-color); + background:radial-gradient(circle at 10% 0,var(--accent-color),transparent 55%),var(--bg-soft-color); +} +.__PFX__-h99-cardA{display:flex;justify-content:space-between;align-items:center;padding:10px;border-radius:14px;background:rgba(255,255,255,.22);backdrop-filter:blur(6px)} +.__PFX__-h99-brand{font-weight:900;text-decoration:none;color:var(--text-color)} +.__PFX__-h99-btn{border:1px solid var(--border-color);background:rgba(255,255,255,.18);border-radius:10px;padding:6px 10px} +.__PFX__-h99-cardB{margin-top:8px;padding:10px;border-radius:14px;background:rgba(255,255,255,.18);backdrop-filter:blur(6px)} +.__PFX__-h99-search{display:none;margin-top:8px} +.__PFX__-h99-search input{width:100%;padding:6px 10px;border-radius:10px;border:1px solid var(--border-color);background:rgba(255,255,255,.25)} +body.__PFX__-h99-open .__PFX__-h99-search{display:block} +.__PFX__-h99-home,.__PFX__-h99-cats{list-style:none;margin:0;padding:0} +.__PFX__-h99-home li,.__PFX__-h99-cats li{display:inline-block;margin:0 8px 8px 0} +.__PFX__-h99-home li a,.__PFX__-h99-cats li a{display:inline-block;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:rgba(255,255,255,.55);text-decoration:none;color:var(--text-color);font-size:12px} +.__PFX__-h99-home li.active a{background:var(--primary-color);border-color:var(--primary-color);color:#fff;font-weight:900} +.__PFX__-h99-cats li.active a{background:var(--accent-color);border-color:var(--accent-color);font-weight:900} +@media(min-width:861px){.__PFX__-h99-btn{display:none}.__PFX__-h99-search{display:block}} \ No newline at end of file diff --git a/code/public/static/css/modules/head/layout/layout_01.css b/code/public/static/css/modules/head/layout/layout_01.css new file mode 100644 index 0000000..9d26899 --- /dev/null +++ b/code/public/static/css/modules/head/layout/layout_01.css @@ -0,0 +1,10 @@ +.site-header.layout-01 .site-header-inner { + display: flex; + align-items: center; + justify-content: space-between; +} + +.site-header.layout-01 .site-nav { + display: flex; + gap: 16px; +} diff --git a/code/public/static/css/modules/head/layout/layout_02.css b/code/public/static/css/modules/head/layout/layout_02.css new file mode 100644 index 0000000..97c75aa --- /dev/null +++ b/code/public/static/css/modules/head/layout/layout_02.css @@ -0,0 +1,16 @@ +.site-header.layout-02 .site-header-inner { + display: grid; + grid-template-columns: 1fr; + row-gap: 10px; +} + +.site-header.layout-02 .site-logo { + text-align: center; +} + +.site-header.layout-02 .site-nav { + display: flex; + justify-content: center; + gap: 12px; + flex-wrap: wrap; +} diff --git a/code/public/static/css/modules/head/variant/variant_01.css b/code/public/static/css/modules/head/variant/variant_01.css new file mode 100644 index 0000000..55e4d22 --- /dev/null +++ b/code/public/static/css/modules/head/variant/variant_01.css @@ -0,0 +1,3 @@ +.site-header.variant-01 { + border-bottom: 1px solid rgba(0,0,0,.08); +} diff --git a/code/public/static/css/modules/head/variant/variant_02.css b/code/public/static/css/modules/head/variant/variant_02.css new file mode 100644 index 0000000..eea533c --- /dev/null +++ b/code/public/static/css/modules/head/variant/variant_02.css @@ -0,0 +1,3 @@ +.site-header.variant-02 { + background: linear-gradient(180deg, rgba(0,0,0,.04), transparent); +} diff --git a/code/public/static/css/modules/list/base/_base.css b/code/public/static/css/modules/list/base/_base.css new file mode 100644 index 0000000..934f89a --- /dev/null +++ b/code/public/static/css/modules/list/base/_base.css @@ -0,0 +1,2 @@ +/* base/_base.css */ +.__PFX__-item{ box-sizing:border-box; } diff --git a/code/public/static/css/modules/list/behavior/behavior.css b/code/public/static/css/modules/list/behavior/behavior.css new file mode 100644 index 0000000..ec5f577 --- /dev/null +++ b/code/public/static/css/modules/list/behavior/behavior.css @@ -0,0 +1,27 @@ +/* list/behavior.css | 通用行为状态(容器级) */ + +/* 折叠:默认隐藏第 6 条及之后(可按模块自行调 N) */ +.collapsed .__PFX__-shellA-list > *:nth-child(n+6), +.collapsed .__PFX__-shellB-grid > *:nth-child(n+7), +.collapsed .__PFX__-shellC-list > *:nth-child(n+11){ + display:none; +} + +/* 分组grouped:如果某些 shell 未自带 grouped,可用这个兜底 */ +.grouped{ + border:1px solid var(--border-color); + background:var(--bg-soft-color); +} + + +/* 密度 */ +.compact { gap:8px; } +.loose { gap:16px; } + +/* 强调:给容器一点“模块感” */ +.emphasis{ + border-radius:14px; + padding: 12px; + background:var(--bg-soft-color); +} + diff --git a/code/public/static/css/modules/list/behavior/density.css b/code/public/static/css/modules/list/behavior/density.css new file mode 100644 index 0000000..2293862 --- /dev/null +++ b/code/public/static/css/modules/list/behavior/density.css @@ -0,0 +1,15 @@ +/* =============================== + * Density - 列表密度 + * =============================== */ + +/* 默认(什么都不写) */ + +/* 紧凑型 */ +.compact .__PFX__-item{ + margin-bottom:8px; +} + +/* 松散型 */ +.loose .__PFX__-item{ + margin-bottom:20px; +} diff --git a/code/public/static/css/modules/list/behavior/emphasis.css b/code/public/static/css/modules/list/behavior/emphasis.css new file mode 100644 index 0000000..15c7b6a --- /dev/null +++ b/code/public/static/css/modules/list/behavior/emphasis.css @@ -0,0 +1,17 @@ +/* =============================== + * Emphasis - 强调模块 + * =============================== */ + +/* 强强调 */ +.emphasis{ + background:var(--bg-soft-color); + border-radius:12px; + padding:12px; +} + +/* 轻强调 */ +.soft{ + background:rgba(0,0,0,.03); + border-radius:10px; + padding:10px; +} diff --git a/code/public/static/css/modules/list/behavior/fold.css b/code/public/static/css/modules/list/behavior/fold.css new file mode 100644 index 0000000..95956d1 --- /dev/null +++ b/code/public/static/css/modules/list/behavior/fold.css @@ -0,0 +1,32 @@ +/* =============================== + * Fold - 折叠行为 + * =============================== */ + + .collapsed .__PFX__-shell-list{ + max-height:420px; + overflow:hidden; + position:relative; +} + +/* 渐隐遮罩,防止“硬切” */ +.collapsed .__PFX__-shell-list::after{ + content:''; + position:absolute; + left:0; + right:0; + bottom:0; + height:80px; + background:linear-gradient( + to bottom, + rgba(255,255,255,0), + var(--bg-color) + ); +} + +/* 展开后 */ +.collapsed.open .__PFX__-shell-list{ + max-height:none; +} +.collapsed.open .__PFX__-shell-list::after{ + display:none; +} diff --git a/code/public/static/css/modules/list/behavior/order.css b/code/public/static/css/modules/list/behavior/order.css new file mode 100644 index 0000000..21f78c4 --- /dev/null +++ b/code/public/static/css/modules/list/behavior/order.css @@ -0,0 +1,13 @@ +/* =============================== + * Order - 排序表现 + * =============================== */ + +/* Top 榜前 3 强化 */ +.top .__PFX__-shell-item:nth-child(-n+3){ + font-weight:700; +} + +/* 斑马纹 */ +.zebra .__PFX__-shell-item:nth-child(odd){ + background:rgba(0,0,0,.02); +} diff --git a/code/public/static/css/modules/list/item/_item_base.css b/code/public/static/css/modules/list/item/_item_base.css new file mode 100644 index 0000000..13ee72a --- /dev/null +++ b/code/public/static/css/modules/list/item/_item_base.css @@ -0,0 +1,55 @@ +/* ========== item 基础结构 ========== */ + +.__PFX__-item{ + width:100%; +} + +.__PFX__-item-link{ + display:block; + color:inherit; + text-decoration:none; +} + +.__PFX__-item-cover{ + position:relative; + background:var(--bg-soft-color); + overflow:hidden; +} + +.__PFX__-item-cover img{ + width:100%; + height:100%; + object-fit:cover; + display:block; +} + +.__PFX__-item-score{ + position:absolute; + right:6px; + top:6px; + padding:2px 6px; + font-size:12px; + background:rgba(0,0,0,.65); + color:#fff; + border-radius:4px; +} + +.__PFX__-item-info{ + padding:6px 4px; +} + +.__PFX__-item-title{ + font-size:14px; + line-height:1.4; + font-weight:600; +} + +.__PFX__-item-meta{ + font-size:12px; + color:var(--text-muted-color); +} + +.__PFX__-item-extra{ + font-size:12px; + color:var(--text-muted-color); +} diff --git a/code/public/static/css/modules/list/item/_item_media.css b/code/public/static/css/modules/list/item/_item_media.css new file mode 100644 index 0000000..0db22ed --- /dev/null +++ b/code/public/static/css/modules/list/item/_item_media.css @@ -0,0 +1,78 @@ +/* =================================================== + * Item Mother B - Media Row + * =================================================== */ +/* ========== media:横向信息流 ========== */ +.item-media{ + /* display:flex; + gap:12px; + align-items:center; */ +} +.item-media img{ + width:120px; + aspect-ratio:16/9; + object-fit:cover; +} + +.__PFX__-item.media{ + /* display:flex; + gap:12px; + align-items:flex-start; */ +} + +/* 封面偏宽 */ +.__PFX__-item.media .__PFX__-item-cover , .__PFX__-item.media img{ + flex:0 0 38%; + aspect-ratio:16 / 9; + border-radius:10px; + overflow:hidden; + background:var(--bg-soft-color); +} + +/* 信息区居中 */ +.__PFX__-item.media .__PFX__-item-info{ + padding:6px 4px; + display:flex; + flex-direction:column; + justify-content:center; +} + +.__PFX__-item.media .__PFX__-item-cover img{ + width:100%; + height:100%; + object-fit:cover; + display:block; +} + +/* 右侧内容 */ +.__PFX__-item.media .__PFX__-item-body{ + flex:1; + display:flex; + flex-direction:column; + gap:4px; +} + +/* 标题 */ +.__PFX__-item.media .__PFX__-item-title{ + font-size:14px; + font-weight:700; + line-height:1.3; + color:var(--text-color); + + display:-webkit-box; + -webkit-line-clamp:2; + -webkit-box-orient:vertical; + overflow:hidden; +} + +/* 描述 */ +.__PFX__-item.media .__PFX__-item-desc{ + font-size:12px; + line-height:1.4; + color:var(--text-muted-color); + + display:-webkit-box; + -webkit-line-clamp:2; + -webkit-box-orient:vertical; + overflow:hidden; +} + diff --git a/code/public/static/css/modules/list/item/_item_poster.css b/code/public/static/css/modules/list/item/_item_poster.css new file mode 100644 index 0000000..7d95161 --- /dev/null +++ b/code/public/static/css/modules/list/item/_item_poster.css @@ -0,0 +1,62 @@ +/* =================================================== + * Item Mother A - Poster Card + * =================================================== */ + + .__PFX__-item.poster{ + display:flex; + flex-direction:column; + gap:6px; +} + +/* 封面容器 */ +.__PFX__-item.poster .__PFX__-item-cover{ + position:relative; + width:100%; + aspect-ratio:2/3; + overflow:hidden; + border-radius:12px; + background:var(--bg-soft-color); +} + +/* 封面图 */ +.__PFX__-item.poster .__PFX__-item-cover img{ + position:absolute; + inset:0; + width:100%; + height:100%; + object-fit:cover; + display:block; +} + +/* 标题 */ +.__PFX__-item.poster .__PFX__-item-title{ + font-size:14px; + line-height:1.3; + font-weight:700; + color:var(--text-color); + + display:-webkit-box; + -webkit-line-clamp:2; + -webkit-box-orient:vertical; + overflow:hidden; +} + +/* 元信息 */ +.__PFX__-item.poster .__PFX__-item-meta{ + font-size:12px; + color:var(--text-muted-color); +} + +/* 强调态(评分 / 热度) */ +.__PFX__-item.poster.emphasis{ + position:relative; +} + +.__PFX__-item.poster.emphasis::after{ + content:''; + position:absolute; + inset:0; + border-radius:12px; + box-shadow:0 8px 18px var(--shadow-color); + pointer-events:none; +} diff --git a/code/public/static/css/modules/list/item/_item_rank.css b/code/public/static/css/modules/list/item/_item_rank.css new file mode 100644 index 0000000..67c6737 --- /dev/null +++ b/code/public/static/css/modules/list/item/_item_rank.css @@ -0,0 +1,49 @@ +/* =================================================== + * Item Mother C - Rank / Text + * =================================================== */ +/* ========== rank:排行榜 ========== */ + +.__PFX__-item.rank::before{ + content:attr(data-rank); + font-size:18px; + font-weight:700; + color:var(--primary-color); + width:28px; + text-align:center; +} + + + .__PFX__-item.rank{ + display:flex; + align-items:center; + gap:10px; + padding:6px 0; +} + +/* 序号 */ +.__PFX__-item.rank .rank-no{ + flex:0 0 24px; + text-align:center; + font-weight:900; + font-size:14px; + color:var(--text-muted-color); +} + +/* Top 强化 */ +.__PFX__-item.rank.top .rank-no{ + color:var(--primary-color); + font-size:16px; +} + +/* 标题 */ +.__PFX__-item.rank .rank-title{ + flex:1; + font-size:14px; + line-height:1.3; + font-weight:600; + color:var(--text-color); + + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis; +} diff --git a/code/public/static/css/modules/list/item/_item_text.css b/code/public/static/css/modules/list/item/_item_text.css new file mode 100644 index 0000000..f11865b --- /dev/null +++ b/code/public/static/css/modules/list/item/_item_text.css @@ -0,0 +1,12 @@ +/* ========== text:极简文本 ========== */ +.__PFX__-item.text .__PFX__-item-cover{ + display:none; +} + +.__PFX__-item.text .__PFX__-item-info{ + padding:10px 0; +} + +.__PFX__-item.text{ + border-bottom:1px solid var(--border-color); +} \ No newline at end of file diff --git a/code/public/static/css/modules/list/item/_item_title_clamp.css b/code/public/static/css/modules/list/item/_item_title_clamp.css new file mode 100644 index 0000000..727872b --- /dev/null +++ b/code/public/static/css/modules/list/item/_item_title_clamp.css @@ -0,0 +1,92 @@ +/* ====================================================== + * Title Clamp Packs (opt-in by .__PFX__-tclamp) + * ====================================================== */ + +/* 统一命中 title(覆盖 poster/media 里已有的 clamp) */ +.__PFX__-tclamp .__PFX__-item-title, +.__PFX__-tclamp .__PFX__-rank-title, +.__PFX__-tclamp .rank-title{ + line-height: var(--tc-lh, 1.35); + margin: var(--tc-m, 0); + font-weight: var(--tc-fw, inherit); + + /* 统一改为可换行,避免 item_04 那种 nowrap 造成高度不可控:contentReference[oaicite:4]{index=4} */ + white-space: normal; + text-overflow: clip; + + overflow: hidden; + height: var(--tc-h, 2.7em); + max-height: var(--tc-h, 2.7em); + + /* 默认走多行 clamp(ln1 会被下面覆盖) */ + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: var(--tc-lines, 2); + + word-break: break-word; +} + +/* ln1:强制单行省略号(比 -webkit-line-clamp:1 更“可控”) */ +.__PFX__-tclamp.__PFX__-tclamp-l1 .__PFX__-item-title, +.__PFX__-tclamp.__PFX__-tclamp-l1 .__PFX__-rank-title, +.__PFX__-tclamp.__PFX__-tclamp-l1 .rank-title{ + display: block; + white-space: nowrap; + text-overflow: ellipsis; + -webkit-line-clamp: unset; + max-height: var(--tc-h, 1.35em); + height: var(--tc-h, 1.35em); +} + +/* ========================= + * Pack 0:紧凑型(偏短行高) + * ========================= */ +.__PFX__-tclamp.__PFX__-tclamp-p0{ --tc-lh:1.25; --tc-fw:600; --tc-m:0; } +.__PFX__-tclamp.__PFX__-tclamp-p0.__PFX__-tclamp-l1{ --tc-lines:1; --tc-h:1.25em; } +.__PFX__-tclamp.__PFX__-tclamp-p0.__PFX__-tclamp-l2{ --tc-lines:2; --tc-h:2.50em; } +.__PFX__-tclamp.__PFX__-tclamp-p0.__PFX__-tclamp-l3{ --tc-lines:3; --tc-h:3.75em; } + +/* ========================= + * Pack 1:舒展型(更易读) + * ========================= */ +.__PFX__-tclamp.__PFX__-tclamp-p1{ --tc-lh:1.40; --tc-fw:700; --tc-m:0 0 4px; } +.__PFX__-tclamp.__PFX__-tclamp-p1.__PFX__-tclamp-l1{ --tc-lines:1; --tc-h:1.40em; } +.__PFX__-tclamp.__PFX__-tclamp-p1.__PFX__-tclamp-l2{ --tc-lines:2; --tc-h:2.80em; } +.__PFX__-tclamp.__PFX__-tclamp-p1.__PFX__-tclamp-l3{ --tc-lines:3; --tc-h:4.20em; } + +/* ========================= + * Pack 2:强调标题(行高略小 + 字重更高) + * ========================= */ +.__PFX__-tclamp.__PFX__-tclamp-p2{ --tc-lh:1.30; --tc-fw:800; --tc-m:0 0 2px; } +.__PFX__-tclamp.__PFX__-tclamp-p2.__PFX__-tclamp-l1{ --tc-lines:1; --tc-h:1.30em; } +.__PFX__-tclamp.__PFX__-tclamp-p2.__PFX__-tclamp-l2{ --tc-lines:2; --tc-h:2.60em; } +.__PFX__-tclamp.__PFX__-tclamp-p2.__PFX__-tclamp-l3{ --tc-lines:3; --tc-h:3.90em; } + +/* ========================= + * Pack 3:网格对齐优先(高度更“硬”) + * ========================= */ +.__PFX__-tclamp.__PFX__-tclamp-p3{ --tc-lh:1.28; --tc-fw:650; --tc-m:0; } +.__PFX__-tclamp.__PFX__-tclamp-p3.__PFX__-tclamp-l1{ --tc-lines:1; --tc-h:1.28em; } +.__PFX__-tclamp.__PFX__-tclamp-p3.__PFX__-tclamp-l2{ --tc-lines:2; --tc-h:2.56em; } +.__PFX__-tclamp.__PFX__-tclamp-p3.__PFX__-tclamp-l3{ --tc-lines:3; --tc-h:3.84em; } + +/* ========================= + * Pack 4:更适合英文/混排(行高更大,断词更激进) + * ========================= */ +.__PFX__-tclamp.__PFX__-tclamp-p4{ --tc-lh:1.45; --tc-fw:700; --tc-m:0; } +.__PFX__-tclamp.__PFX__-tclamp-p4 .__PFX__-item-title, +.__PFX__-tclamp.__PFX__-tclamp-p4 .__PFX__-rank-title, +.__PFX__-tclamp.__PFX__-tclamp-p4 .rank-title{ + overflow-wrap: anywhere; +} +.__PFX__-tclamp.__PFX__-tclamp-p4.__PFX__-tclamp-l1{ --tc-lines:1; --tc-h:1.45em; } +.__PFX__-tclamp.__PFX__-tclamp-p4.__PFX__-tclamp-l2{ --tc-lines:2; --tc-h:2.90em; } +.__PFX__-tclamp.__PFX__-tclamp-p4.__PFX__-tclamp-l3{ --tc-lines:3; --tc-h:4.35em; } + +/* ========================= + * Pack 5:极简文本/榜单更合适(轻字重 + 更小 margin) + * ========================= */ +.__PFX__-tclamp.__PFX__-tclamp-p5{ --tc-lh:1.32; --tc-fw:600; --tc-m:0; } +.__PFX__-tclamp.__PFX__-tclamp-p5.__PFX__-tclamp-l1{ --tc-lines:1; --tc-h:1.32em; } +.__PFX__-tclamp.__PFX__-tclamp-p5.__PFX__-tclamp-l2{ --tc-lines:2; --tc-h:2.64em; } +.__PFX__-tclamp.__PFX__-tclamp-p5.__PFX__-tclamp-l3{ --tc-lines:3; --tc-h:3.96em; } diff --git a/code/public/static/css/modules/list/item/item_01.css b/code/public/static/css/modules/list/item/item_01.css new file mode 100644 index 0000000..c28f772 --- /dev/null +++ b/code/public/static/css/modules/list/item/item_01.css @@ -0,0 +1,58 @@ +/* ========== item_01 基础 ========== */ +.__PFX__-item{ + background:var(--bg-soft-color); + border-radius:12px; + overflow:hidden; +} + +.__PFX__-item-link{ + display:block; + color:inherit; +} + +.__PFX__-item-cover{ + position:relative; + overflow:hidden; + background:#000; +} + +.__PFX__-item-cover img{ + width:100%; + height:100%; + object-fit:cover; + object-position:center center; + display:block; +} + +.__PFX__-item-info{ + padding:10px 12px; +} + +.__PFX__-item-title{ + font-size:14px; + font-weight:600; + line-height:1.35; +} + +.__PFX__-item-meta{ + font-size:12px; + color:var(--text-muted-color); + margin-top:4px; +} + +.__PFX__-item-desc{ + font-size:12px; + color:var(--text-muted-color); + margin-top:6px; +} + +.__PFX__-item-score{ + position:absolute; + top:6px; + right:6px; + font-size:12px; + padding:2px 6px; + border-radius:6px; + background:rgba(0,0,0,.65); + color:#fff; +} diff --git a/code/public/static/css/modules/list/item/item_02.css b/code/public/static/css/modules/list/item/item_02.css new file mode 100644 index 0000000..652a047 --- /dev/null +++ b/code/public/static/css/modules/list/item/item_02.css @@ -0,0 +1,103 @@ +/* item_02:封面横向信息流 + * 继承:_item_media.css + * 无额外样式 + */ +/* ========== item_02 个性微调(可选) */ + +.__PFX__-item.item02 .__PFX__-item-title{ + font-size:15px; +} + +/* item_media.css | item_02 专用(在通用 item 基础上补齐 media 布局) */ + +.__PFX__-item.item02{ + width:100%; +} + +/* 横向信息流:默认左右布局(由 shell 控制列数) */ +.__PFX__-item.item02 .__PFX__-item-link{ + display:flex; + gap:12px; + align-items:flex-start; + text-decoration:none; +} + +/* 封面:横向信息流用 16:9 更稳(宽>高) */ +.__PFX__-item.item02 .__PFX__-item-cover{ + flex:0 0 42%; + max-width:42%; + aspect-ratio:16/9; + position:relative; + overflow:hidden; + border-radius:12px; + background:var(--bg-soft-color); +} + +.__PFX__-item.item02 .__PFX__-item-cover img{ + width:100%; + height:100%; + object-fit:cover; + display:block; +} + +/* 评分角标 */ +.__PFX__-item.item02 .__PFX__-item-score{ + position:absolute; + right:8px; + top:8px; + padding:2px 6px; + font-size:12px; + border-radius:999px; + background:rgba(0,0,0,.55); + color:#fff; +} + +/* 信息区 */ +.__PFX__-item.item02 .__PFX__-item-info{ + flex:1; + min-width:0; +} + +.__PFX__-item.item02 .__PFX__-item-title{ + font-size:14px; + line-height:1.25; + margin:0 0 6px; + color:var(--text-color); +} + +.__PFX__-item.item02 .__PFX__-item-meta{ + font-size:12px; + color:var(--text-muted-color); + margin:0 0 6px; +} + +.__PFX__-item.item02 .__PFX__-item-extra{ + font-size:12px; + color:var(--text-muted-color); + margin:0 0 4px; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; +} + + + +/* PC:稍微压缩封面占比,提升信息量 */ +@media (min-width: 1024px){ + .__PFX__-item.item02 .__PFX__-item-cover{ + flex-basis:36%; + max-width:36%; + border-radius:14px; + } + .__PFX__-item.item02 .__PFX__-item-title{ + font-size:15px; + } +} + +/* item02-5*/ +.__PFX__-item.__PFX__-item02 { + display: block; +} +.__PFX__-item.item02 .__PFX__-item-cover{ + max-width: 100%; +} \ No newline at end of file diff --git a/code/public/static/css/modules/list/item/item_03.css b/code/public/static/css/modules/list/item/item_03.css new file mode 100644 index 0000000..bbcd76f --- /dev/null +++ b/code/public/static/css/modules/list/item/item_03.css @@ -0,0 +1,81 @@ +/* ====================================================== + * item_03 | 极简文本 / 榜单型 + * ====================================================== */ + + .__PFX__-item{ + display:block; +} + +/* 点击区域 */ +.__PFX__-item-link{ + display:flex; + align-items:flex-start; + gap:12px; + padding:10px 6px; + text-decoration:none; + color:var(--text-color); +} + +/* 序号 */ +.__PFX__-item-index{ + min-width:22px; + font-size:14px; + font-weight:700; + color:var(--text-muted-color); + text-align:right; +} + +/* 主体 */ +.__PFX__-item-main{ + flex:1; + min-width:0; +} + +/* 标题 */ +.__PFX__-item-title{ + font-size:14px; + line-height:1.4; + font-weight:500; + margin:0 0 4px; + color:var(--text-color); +} + +/* 元信息 */ +.__PFX__-item-meta{ + display:flex; + flex-wrap:wrap; + gap:8px; + font-size:12px; + color:var(--text-muted-color); +} + +/* ===== 行为适配 ===== */ + +/* 紧凑 */ +.compact .__PFX__-item-link{ + padding:6px 4px; +} +.compact .__PFX__-item-title{ + font-size:13px; +} + +/* 宽松 */ +.loose .__PFX__-item-link{ + padding:14px 8px; +} + +/* Top 榜单 */ +.top .__PFX__-item-index{ + color:var(--primary-color); +} + +/* 强调 */ +.emphasis .__PFX__-item-link{ + background:var(--bg-soft-color); + border-radius:8px; +} + +/* hover */ +.__PFX__-item-link:hover .__PFX__-item-title{ + color:var(--primary-color); +} diff --git a/code/public/static/css/modules/list/item/item_04.css b/code/public/static/css/modules/list/item/item_04.css new file mode 100644 index 0000000..c0c4ffa --- /dev/null +++ b/code/public/static/css/modules/list/item/item_04.css @@ -0,0 +1,93 @@ +/* ====================================================== + * item_04 | 评分 / 热度强化型 + * ====================================================== */ + + .__PFX__-item.poster.score{ + display:block; +} + +/* 链接 */ +.__PFX__-item-link{ + display:flex; + flex-direction:column; + gap:6px; + color:var(--text-color); + text-decoration:none; +} + +/* ===== 封面 ===== */ +.__PFX__-item-cover{ + position:relative; + width:100%; + aspect-ratio: 3 / 4; /* 比 item_01 稍宽,更利于列表 */ + overflow:hidden; + border-radius:12px; + background:var(--bg-soft-color); +} + +.__PFX__-item-cover img{ + width:100%; + height:100%; + object-fit:cover; + display:block; +} + +/* ===== 评分角标 ===== */ +.__PFX__-item-score{ + position:absolute; + right:6px; + top:6px; + padding:2px 6px; + font-size:12px; + font-weight:700; + color:#fff; + background:var(--accent-color); + border-radius:6px; + line-height:1; +} + +/* ===== 信息区 ===== */ +.__PFX__-item-info{ + padding:0 2px; +} + +/* 标题 */ +.__PFX__-item-title{ + font-size:14px; + font-weight:600; + line-height:1.4; + margin:0; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; +} + +/* 元信息 */ +.__PFX__-item-meta{ + display:flex; + gap:6px; + font-size:12px; + color:var(--text-muted-color); +} + +/* ===== 行为适配 ===== */ + +/* 紧凑 */ +.compact .__PFX__-item-title{ + font-size:13px; +} + +/* 宽松 */ +.loose .__PFX__-item-link{ + gap:10px; +} + +/* 强调 */ +.emphasis .__PFX__-item-cover{ + box-shadow:0 6px 18px var(--shadow-color); +} + +/* hover */ +.__PFX__-item-link:hover .__PFX__-item-title{ + color:var(--primary-color); +} diff --git a/code/public/static/css/modules/list/item/item_05.css b/code/public/static/css/modules/list/item/item_05.css new file mode 100644 index 0000000..672533a --- /dev/null +++ b/code/public/static/css/modules/list/item/item_05.css @@ -0,0 +1,94 @@ +/* ====================================================== + * item_05 | Top 强化榜单型 + * ====================================================== */ + + .__PFX__-item.rank{ + display:block; +} + +/* 主链接 */ +.__PFX__-rank-link{ + display:flex; + align-items:center; + gap:12px; + padding:10px 8px; + text-decoration:none; + color:var(--text-color); +} + +/* ===== 排名数字 ===== */ +.__PFX__-rank-no{ + min-width:28px; + font-size:16px; + font-weight:700; + text-align:center; + color:var(--text-muted-color); +} + +/* Top 1-3 强化 */ +.__PFX__-rank-no.rank-1{ + color:#d32f2f; + font-size:18px; +} +.__PFX__-rank-no.rank-2{ + color:#f57c00; +} +.__PFX__-rank-no.rank-3{ + color:#fbc02d; +} + +/* 主体 */ +.__PFX__-rank-main{ + flex:1; + min-width:0; +} + +/* 标题 */ +.__PFX__-rank-title{ + font-size:14px; + font-weight:600; + margin:0 0 4px; + line-height:1.4; +} + +/* 元信息 */ +.__PFX__-rank-meta{ + display:flex; + gap:8px; + font-size:12px; + color:var(--text-muted-color); + flex-wrap:wrap; +} + +/* 评分 / 热度 */ +.__PFX__-rank-score{ + font-size:13px; + font-weight:600; + color:var(--accent-color); +} + +/* ===== 行为适配 ===== */ + +/* 紧凑 */ +.compact .__PFX__-rank-link{ + padding:6px 6px; +} +.compact .__PFX__-rank-title{ + font-size:13px; +} + +/* 宽松 */ +.loose .__PFX__-rank-link{ + padding:14px 10px; +} + +/* 强调模块 */ +.emphasis .__PFX__-rank-link{ + background:var(--bg-soft-color); + border-radius:10px; +} + +/* hover */ +.__PFX__-rank-link:hover .__PFX__-rank-title{ + color:var(--primary-color); +} diff --git a/code/public/static/css/modules/list/list_base.css b/code/public/static/css/modules/list/list_base.css new file mode 100644 index 0000000..0645f6b --- /dev/null +++ b/code/public/static/css/modules/list/list_base.css @@ -0,0 +1,10 @@ +.__PFX__-list{ + display: grid; + gap: var(--list-gap, 16px); + align-items: stretch; +} +ol.__PFX__-list{ + list-style: none; + padding-left: 0; +} + diff --git a/code/public/static/css/modules/list/list_cols.css b/code/public/static/css/modules/list/list_cols.css new file mode 100644 index 0000000..1d428d2 --- /dev/null +++ b/code/public/static/css/modules/list/list_cols.css @@ -0,0 +1,28 @@ + +/* LG */ +@media (min-width:1200px){ +.__PFX__-list{ + grid-template-columns:repeat(var(--cols-lg),1fr); +} +} + +/* MD */ +@media (min-width:768px) and (max-width:1199px){ +.__PFX__-list{ + grid-template-columns:repeat(var(--cols-md),1fr); +} +} + +/* SM */ +@media (min-width:576px) and (max-width:767px){ +.__PFX__-list{ + grid-template-columns:repeat(var(--cols-sm),1fr); +} +} + +/* H5 */ +@media (max-width:575px){ +.__PFX__-list{ + grid-template-columns:repeat(var(--cols-h5),1fr); +} +} diff --git a/code/public/static/css/modules/list/list_rows.css b/code/public/static/css/modules/list/list_rows.css new file mode 100644 index 0000000..5cfc855 --- /dev/null +++ b/code/public/static/css/modules/list/list_rows.css @@ -0,0 +1,29 @@ +@media (min-width:1200px){ + .__PFX__-list[data-max-lg="18"] > .__PFX__-item:nth-child(n+19), + .__PFX__-list[data-max-lg="24"] > .__PFX__-item:nth-child(n+25), + .__PFX__-list[data-max-lg="36"] > .__PFX__-item:nth-child(n+37){ + display:none; + } +} +@media (min-width:768px) and (max-width:1199px){ + .__PFX__-list[data-max-md="10"] > .__PFX__-item:nth-child(n+11), + .__PFX__-list[data-max-md="15"] > .__PFX__-item:nth-child(n+16), + .__PFX__-list[data-max-md="20"] > .__PFX__-item:nth-child(n+21){ + display:none; + } +} +@media (min-width:576px) and (max-width:767px){ + .__PFX__-list[data-max-sm="6"] > .__PFX__-item:nth-child(n+7), + .__PFX__-list[data-max-sm="9"] > .__PFX__-item:nth-child(n+10), + .__PFX__-list[data-max-sm="12"] > .__PFX__-item:nth-child(n+13){ + display:none; + } +} +@media (max-width:575px){ + .__PFX__-list[data-max-h5="4"] > .__PFX__-item:nth-child(n+5), + .__PFX__-list[data-max-h5="6"] > .__PFX__-item:nth-child(n+7), + .__PFX__-list[data-max-h5="8"] > .__PFX__-item:nth-child(n+9), + .__PFX__-list[data-max-h5="10"] > .__PFX__-item:nth-child(n+11){ + display:none; + } +} diff --git a/code/public/static/css/modules/list/shell/shell_A.css b/code/public/static/css/modules/list/shell/shell_A.css new file mode 100644 index 0000000..785ed2e --- /dev/null +++ b/code/public/static/css/modules/list/shell/shell_A.css @@ -0,0 +1,75 @@ +/* shell_A_flow.css | 基础流式 Flow Shell */ + +.__PFX__-shellA { + width: 100%; +} + +/* 列表容器 */ +/* .__PFX__-shellA-list { + display: flex; + flex-direction: column; + gap: 10px; +} */ + +/* + * Shell-A 只控制: + * - Item 之间的间距 + * - 整体流式节奏 + * 不控制: + * - Item 内部结构 + * - Item 字段样式 + */ + +/* 可选:高密度模式(给 Behavior 用) */ +.__PFX__-shellA.compact .__PFX__-shellA-list { + gap: 6px; +} + +/* 可选:分组弱分隔(Behavior-E 用) */ +.__PFX__-shellA.grouped .__PFX__-shellA-list>* { + padding-bottom: 6px; + border-bottom: 1px dashed var(--border-color); +} + +.__PFX__-shellA.grouped .__PFX__-shellA-list>*:last-child { + border-bottom: none; +} + +/* shell_A - Flow */ +/* .__PFX__-shellA-list{ + display:grid; + grid-template-columns: repeat(var(--cols-h5), 1fr); + gap:14px; +} */ + +/* H5 多列 */ +/* .h5-col-2 .__PFX__-shellA-list{ + grid-template-columns:repeat(2,1fr); +} */ + +/* .h5-col-3 .__PFX__-shellA-list{ + grid-template-columns:repeat(3,1fr); +} */ + +/* PC - sm */ +/* @media (min-width: 768px){ + .__PFX__-shellA-list{ + grid-template-columns: repeat(var(--cols-pc-sm), 1fr); + } +} */ + +/* PC - md */ +/* @media (min-width: 1024px){ + .__PFX__-shellA-list{ + grid-template-columns: repeat(var(--cols-pc-md), 1fr); + gap:18px 20px; + } +} */ + +/* PC - lg */ +/* @media (min-width: 1440px){ + .__PFX__-shellA-list{ + grid-template-columns: repeat(var(--cols-pc-lg), 1fr); + gap:20px 24px; + } +} */ diff --git a/code/public/static/css/modules/list/shell/shell_B.css b/code/public/static/css/modules/list/shell/shell_B.css new file mode 100644 index 0000000..9fe596f --- /dev/null +++ b/code/public/static/css/modules/list/shell/shell_B.css @@ -0,0 +1,49 @@ +/* shell_B_card.css | 卡片栅格 Card Grid Shell */ + +.__PFX__-shellB{ + width:100%; +} + +/* 栅格容器 */ +/* .__PFX__-shellB-grid{ + display:grid; + grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); + gap:14px; +} */ + +/* + * Shell-B 只控制: + * - grid 列数策略 + * - 卡片之间的间距 + * - 响应式节奏 + * + * 不控制: + * - Item 内部宽高 + * - Item 字体 / 图片 / meta + */ + +/* 中密度(默认) */ + +/* 高密度模式(Behavior-C1) */ +/* .__PFX__-shellB.compact .__PFX__-shellB-grid{ + gap:10px; + grid-template-columns:repeat(auto-fill,minmax(120px,1fr)); +} */ + +/* 低密度模式(Behavior-C3) */ +/* .__PFX__-shellB.loose .__PFX__-shellB-grid{ + gap:18px; + grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); +} */ + +/* 移动端优化 */ +/* @media (max-width: 768px){ + .__PFX__-shellB-grid{ + grid-template-columns:repeat(2,1fr); + gap:12px; + } + + .__PFX__-shellB.compact .__PFX__-shellB-grid{ + gap:8px; + } +} */ diff --git a/code/public/static/css/modules/list/shell/shell_C.css b/code/public/static/css/modules/list/shell/shell_C.css new file mode 100644 index 0000000..d822dd8 --- /dev/null +++ b/code/public/static/css/modules/list/shell/shell_C.css @@ -0,0 +1,50 @@ +/* shell_C_ranking.css | 榜单序列 Ranking Shell */ + +.__PFX__-shellC{ + width:100%; +} + +/* 榜单列表 */ +.__PFX__-shellC-list{ + list-style:none; + margin:0; + padding:0; + display:flex; + flex-direction:column; +} + +/* + * Shell-C 只负责: + * - 榜单的整体序列结构 + * - item 之间的分隔节奏 + * - Top 区域的整体区分 + * + * 不负责: + * - Item 内部的序号样式 + * - Item 的字段显示 + */ + +/* 每一行榜单 */ +.__PFX__-shellC-item{ + padding:2px 0; +} + +/* 分隔线(默认) */ +.__PFX__-shellC-item + .__PFX__-shellC-item{ + border-top:1px solid var(--border-color); +} + +/* Top 区域强化(Behavior-B 用) */ +.__PFX__-shellC.top .__PFX__-shellC-item:nth-child(-n+3){ + background:var(--bg-soft-color); +} + +/* 高密度榜单(Behavior-C1) */ +.__PFX__-shellC.compact .__PFX__-shellC-item{ + padding:0; +} + +/* 松散榜单(Behavior-C3) */ +.__PFX__-shellC.loose .__PFX__-shellC-item{ + padding:6px 0; +} diff --git a/code/public/static/css/modules/list/shell/shell_D.css b/code/public/static/css/modules/list/shell/shell_D.css new file mode 100644 index 0000000..ae7acf2 --- /dev/null +++ b/code/public/static/css/modules/list/shell/shell_D.css @@ -0,0 +1,68 @@ +/* shell_D_grouped.css | 分组区块 Grouped Shell */ + +.__PFX__-shellD{ + width:100%; + display:flex; + flex-direction:column; + gap:20px; +} + +/* 单个分组 */ +.__PFX__-shellD-group{ + display:flex; + flex-direction:column; + gap:10px; + padding:12px; + background:var(--bg-soft-color); + border-radius:12px; +} + +/* 分组头 */ +.__PFX__-shellD-head{ + display:flex; + align-items:center; + justify-content:space-between; +} + +/* 标题 */ +.__PFX__-shellD-title{ + margin:0; + font-size:16px; + font-weight:700; + color:var(--text-color); +} + +/* 分组内容 */ +.__PFX__-shellD-body{ + display:flex; + flex-direction:column; + gap:10px; +} + +/* + * Shell-D 只控制: + * - 分组块结构 + * - 分组之间的层级关系 + * - 分组内部的 Item 间距 + * + * 不控制: + * - Item 布局 + * - Item 结构 + */ + +/* 高密度分组(Behavior-C1) */ +.__PFX__-shellD.compact .__PFX__-shellD-group{ + padding:8px; + gap:6px; +} + +/* 松散分组(Behavior-C3) */ +.__PFX__-shellD.loose .__PFX__-shellD-group{ + padding:16px; + gap:14px; +} + +/* 可选:分组强调(Behavior-B) */ +.__PFX__-shellD.emphasis .__PFX__-shellD-group{ + box-shadow:0 6px 18px var(--shadow-color); +} diff --git a/code/public/static/css/modules/list/title/title_A.css b/code/public/static/css/modules/list/title/title_A.css new file mode 100644 index 0000000..283e5b0 --- /dev/null +++ b/code/public/static/css/modules/list/title/title_A.css @@ -0,0 +1,13 @@ +.__PFX__-titleA{ + margin:18px 0 12px; +} +.__PFX__-titleA-main{ + font-size:18px; + font-weight:700; + color:var(--text-color); +} +.__PFX__-titleA-sub{ + margin-top:4px; + font-size:13px; + color:var(--text-muted-color); +} diff --git a/code/public/static/css/modules/list/title/title_B.css b/code/public/static/css/modules/list/title/title_B.css new file mode 100644 index 0000000..9a0af6d --- /dev/null +++ b/code/public/static/css/modules/list/title/title_B.css @@ -0,0 +1,14 @@ +.__PFX__-titleB{ + text-align:center; + margin:24px 0 16px; +} +.__PFX__-titleB h2{ + font-size:20px; + font-weight:700; +} +.__PFX__-titleB span{ + display:block; + margin-top:6px; + font-size:13px; + color:var(--text-muted-color); +} diff --git a/code/public/static/css/modules/list/title/title_C.css b/code/public/static/css/modules/list/title/title_C.css new file mode 100644 index 0000000..66cd5c4 --- /dev/null +++ b/code/public/static/css/modules/list/title/title_C.css @@ -0,0 +1,11 @@ +.__PFX__-titleC{ + margin:16px 0 10px; +} +.__PFX__-titleC h2{ + display:inline-block; + padding:6px 12px; + font-size:16px; + border-radius:6px; + background:var(--primary-color); + color:#fff; +} diff --git a/code/public/static/css/modules/list/title/title_D.css b/code/public/static/css/modules/list/title/title_D.css new file mode 100644 index 0000000..dc3973d --- /dev/null +++ b/code/public/static/css/modules/list/title/title_D.css @@ -0,0 +1,16 @@ +.__PFX__-titleD{ + display:flex; + align-items:center; + gap:8px; + margin:18px 0 12px; +} +.__PFX__-titleD-icon{ + width:6px; + height:18px; + border-radius:3px; + background:var(--primary-color); +} +.__PFX__-titleD h2{ + font-size:17px; + font-weight:700; +} diff --git a/code/public/static/css/modules/list/title/title_E.css b/code/public/static/css/modules/list/title/title_E.css new file mode 100644 index 0000000..a596d73 --- /dev/null +++ b/code/public/static/css/modules/list/title/title_E.css @@ -0,0 +1,15 @@ +.__PFX__-titleE{ + display:flex; + align-items:baseline; + gap:6px; + margin:20px 0 14px; +} +.__PFX__-titleE-rank{ + font-size:14px; + font-weight:700; + color:var(--accent-color); +} +.__PFX__-titleE h2{ + font-size:18px; + font-weight:700; +} diff --git a/code/public/static/css/modules/list/title/title_F.css b/code/public/static/css/modules/list/title/title_F.css new file mode 100644 index 0000000..35e836d --- /dev/null +++ b/code/public/static/css/modules/list/title/title_F.css @@ -0,0 +1,45 @@ +/* ================================ + * Title_F|分类区块标题(带更多) + * ================================ */ + + .__PFX__-titleF{ + display:flex; + align-items:center; + justify-content:space-between; + gap:12px; + margin:18px 0 10px; +} + +/* 左侧标题区 */ +.__PFX__-titleF-left{ + display:flex; + align-items:baseline; + gap:8px; +} + +.__PFX__-titleF-main{ + font-size:16px; + font-weight:700; + color:var(--text-color); + line-height:1.2; +} + +.__PFX__-titleF-sub{ + font-size:12px; + color:var(--text-muted-color); +} + +/* 右侧“更多” */ +.__PFX__-titleF-more a{ + font-size:12px; + color:var(--primary-color); + text-decoration:none; + padding:4px 8px; + border-radius:999px; + background:var(--bg-soft-color); + border:1px solid var(--border-color); +} + +.__PFX__-titleF-more a:hover{ + opacity:.85; +} diff --git a/code/public/static/css/modules/newest/newest_01.css b/code/public/static/css/modules/newest/newest_01.css new file mode 100644 index 0000000..88e7152 --- /dev/null +++ b/code/public/static/css/modules/newest/newest_01.css @@ -0,0 +1,24 @@ +/* newest_01.css */ +.__PFX__-n1-title { + font-size: 16px; + color: var(--primary-color); + margin-bottom: 10px; +} +.__PFX__-n1-grid { + display: grid; + grid-template-columns: repeat(2,1fr); + gap: 14px; +} +@media(min-width:768px){ + .__PFX__-n1-grid { grid-template-columns: repeat(4,1fr); } +} +.__PFX__-n1-card img { + width: 100%; + aspect-ratio: 2/3; + border-radius: 10px; + object-fit: cover; +} +.__PFX__-n1-card p { + font-size: 12px; + margin-top: 4px; +} diff --git a/code/public/static/css/modules/newest/newest_02.css b/code/public/static/css/modules/newest/newest_02.css new file mode 100644 index 0000000..77231f3 --- /dev/null +++ b/code/public/static/css/modules/newest/newest_02.css @@ -0,0 +1,26 @@ +/* newest_02.css */ +.__PFX__-n2-hd { + font-size: 16px; + color: var(--primary-color); + margin-bottom: 10px; +} +.__PFX__-n2-scroll { + overflow-x: auto; + display: flex; + gap: 12px; +} +.__PFX__-n2-item { + width: 110px; + flex-shrink: 0; +} +.__PFX__-n2-img { + width: 100%; + aspect-ratio: 2/3; + border-radius: 8px; + object-fit: cover; +} +.__PFX__-n2-item span { + display: block; + font-size: 12px; + margin-top: 6px; +} diff --git a/code/public/static/css/modules/newest/newest_03.css b/code/public/static/css/modules/newest/newest_03.css new file mode 100644 index 0000000..b57db61 --- /dev/null +++ b/code/public/static/css/modules/newest/newest_03.css @@ -0,0 +1,25 @@ +/* newest_03.css */ +.__PFX__-n3-title { + font-size: 16px; + color: var(--primary-color); + margin-bottom: 12px; +} +.__PFX__-n3-row { + display: flex; + gap: 10px; + padding: 10px 0; + border-bottom: 1px solid #eee; +} +.__PFX__-n3-cover { + width: 90px; + aspect-ratio: 2/3; + border-radius: 8px; + object-fit: cover; +} +.__PFX__-n3-info h4 { + font-size: 14px; +} +.__PFX__-n3-info p { + font-size: 12px; + color: #777; +} diff --git a/code/public/static/css/modules/newest/newest_04.css b/code/public/static/css/modules/newest/newest_04.css new file mode 100644 index 0000000..6c28248 --- /dev/null +++ b/code/public/static/css/modules/newest/newest_04.css @@ -0,0 +1,26 @@ +/* newest_04.css */ +.__PFX__-n4-hd { + font-size: 16px; + color: var(--primary-color); + margin-bottom: 10px; +} +.__PFX__-n4-grid { + list-style: none; + padding: 0; + display: grid; + gap: 12px; + grid-template-columns: repeat(3,1fr); +} +@media(min-width:768px){ + .__PFX__-n4-grid { grid-template-columns: repeat(6,1fr); } +} +.__PFX__-n4-img { + width: 100%; + aspect-ratio: 2/3; + border-radius: 10px; + object-fit: cover; +} +.__PFX__-n4-a p { + font-size: 12px; + margin-top: 4px; +} diff --git a/code/public/static/css/modules/newest/newest_05.css b/code/public/static/css/modules/newest/newest_05.css new file mode 100644 index 0000000..13ec619 --- /dev/null +++ b/code/public/static/css/modules/newest/newest_05.css @@ -0,0 +1,20 @@ +/* newest_05.css */ +.__PFX__-n5-hd { + font-size: 16px; + color: var(--primary-color); + margin-bottom: 10px; +} +.__PFX__-n5-line { + display: flex; + align-items: center; + padding: 8px 0; + border-bottom: 1px solid rgba(0,0,0,.06); + gap: 8px; +} +.__PFX__-n5-dot { + color: var(--primary-color); +} +.__PFX__-n5-name { + font-size: 13px; + color: #333; +} diff --git a/code/public/static/css/modules/pager/_pager_base.css b/code/public/static/css/modules/pager/_pager_base.css new file mode 100644 index 0000000..8166cf4 --- /dev/null +++ b/code/public/static/css/modules/pager/_pager_base.css @@ -0,0 +1,14 @@ +.__PFX__-pager { + display:flex; + justify-content:center; + gap:8px; + margin:24px 0; +} +.__PFX__-pager a { + text-decoration:none; + cursor:pointer; +} +.__PFX__-pager a.disabled { + pointer-events:none; + opacity:.4; +} diff --git a/code/public/static/css/modules/pager/pager.css b/code/public/static/css/modules/pager/pager.css new file mode 100644 index 0000000..3fb1463 --- /dev/null +++ b/code/public/static/css/modules/pager/pager.css @@ -0,0 +1,129 @@ +/* Pager base: __PFX__ replaced by CssBuilder + Colors do NOT hardcode: relies on CSS vars you set from theme: + --c-primary --c-accent --c-bg --c-bg-soft --c-text-primary --c-text-secondary --c-border +*/ +.__PFX__-pager{ + --pg-gap: 8px; + --pg-pad: 6px 10px; + --pg-r: 12px; + --pg-bd: var(--c-border, rgba(0,0,0,.12)); + --pg-fg: var(--c-text-primary, #111); + --pg-fg2: var(--c-text-secondary, #666); + --pg-bg: var(--c-bg-soft, #f1f5f9); + --pg-ac: var(--c-primary, #3b82f6); + --pg-ac2: var(--c-accent, #f97316); + display:flex; + align-items:center; + justify-content:center; + gap: var(--pg-gap); + margin: 18px 0; + color: var(--pg-fg); + flex-wrap: wrap; +} + +.__PFX__-pager .__PFX__-pg{ + display:flex; + align-items:center; + justify-content:center; + gap: var(--pg-gap); + padding: 0; + margin: 0; + list-style:none; + flex-wrap: wrap; +} + +.__PFX__-pager .__PFX__-pg-it{ display:inline-flex; } + +.__PFX__-pager .__PFX__-pg-a{ + display:inline-flex; + align-items:center; + justify-content:center; + padding: var(--pg-pad); + border: 1px solid var(--pg-bd); + background: var(--pg-bg); + color: var(--pg-fg); + border-radius: var(--pg-r); + text-decoration:none; + line-height: 1; + min-width: 34px; + user-select:none; + transition: filter .15s ease, transform .15s ease; +} +.__PFX__-pager a.__PFX__-pg-a:hover{ filter: brightness(0.98); transform: translateY(-1px); } + +.__PFX__-pager .__PFX__-pg-it.is-current .__PFX__-pg-a{ + background: color-mix(in srgb, var(--pg-ac) 18%, var(--pg-bg)); + border-color: color-mix(in srgb, var(--pg-ac) 55%, var(--pg-bd)); + color: color-mix(in srgb, var(--pg-ac) 85%, var(--pg-fg)); + font-weight: 600; +} + +.__PFX__-pager .__PFX__-pg-it.is-disabled .__PFX__-pg-a, +.__PFX__-pager .__PFX__-pg-a[aria-disabled="true"]{ + opacity: .45; + cursor: not-allowed; + pointer-events:none; +} + +.__PFX__-pager .__PFX__-pg-summary{ + font-size: 12px; + color: var(--pg-fg2); + padding: 4px 10px; + border: 1px dashed color-mix(in srgb, var(--pg-bd) 80%, transparent); + border-radius: 999px; +} + +/* Tone (0-4) */ +.__PFX__-pager.tone0{ --pg-bg: var(--c-bg-soft, #f1f5f9); } +.__PFX__-pager.tone1{ --pg-bg: color-mix(in srgb, var(--c-bg, #fff) 86%, var(--pg-ac) 14%); } +.__PFX__-pager.tone2{ --pg-bg: color-mix(in srgb, var(--c-bg, #fff) 88%, var(--pg-ac2) 12%); } +.__PFX__-pager.tone3{ --pg-bg: color-mix(in srgb, var(--c-bg, #fff) 92%, var(--pg-bd) 8%); } +.__PFX__-pager.tone4{ --pg-bg: color-mix(in srgb, var(--c-bg, #fff) 82%, var(--pg-ac) 18%); } + +/* Variant knobs (v0..v19) */ +.__PFX__-pager.v0 { --pg-r: 12px; --pg-gap: 8px; } +.__PFX__-pager.v1 { --pg-r: 999px; --pg-gap: 8px; } +.__PFX__-pager.v2 { --pg-r: 8px; --pg-gap: 10px; --pg-pad: 7px 12px; } +.__PFX__-pager.v3 { --pg-r: 4px; --pg-gap: 10px; --pg-pad: 7px 12px; } +.__PFX__-pager.v4 { --pg-r: 16px; --pg-gap: 6px; --pg-pad: 6px 10px; } +.__PFX__-pager.v5 { --pg-r: 999px; --pg-gap: 6px; --pg-pad: 6px 12px; } +.__PFX__-pager.v6 { --pg-r: 10px; --pg-gap: 12px; --pg-pad: 8px 12px; } +.__PFX__-pager.v7 { --pg-r: 14px; --pg-gap: 6px; --pg-pad: 6px 10px; } +.__PFX__-pager.v8 { --pg-r: 6px; --pg-gap: 8px; --pg-pad: 6px 10px; } +.__PFX__-pager.v9 { --pg-r: 999px; --pg-gap: 12px; --pg-pad: 8px 14px; } +.__PFX__-pager.v10{ --pg-r: 10px; --pg-gap: 6px; --pg-pad: 5px 10px; } +.__PFX__-pager.v11{ --pg-r: 18px; --pg-gap: 6px; --pg-pad: 5px 12px; } +.__PFX__-pager.v12{ --pg-r: 4px; --pg-gap: 14px; --pg-pad: 8px 12px; } +.__PFX__-pager.v13{ --pg-r: 12px; --pg-gap: 14px; --pg-pad: 8px 12px; } +.__PFX__-pager.v14{ --pg-r: 999px;--pg-gap: 10px; --pg-pad: 7px 14px; } +.__PFX__-pager.v15{ --pg-r: 8px; --pg-gap: 6px; --pg-pad: 6px 9px; } +.__PFX__-pager.v16{ --pg-r: 16px; --pg-gap: 10px; --pg-pad: 6px 12px; } +.__PFX__-pager.v17{ --pg-r: 999px;--pg-gap: 4px; --pg-pad: 6px 12px; } +.__PFX__-pager.v18{ --pg-r: 6px; --pg-gap: 4px; --pg-pad: 6px 10px; } +.__PFX__-pager.v19{ --pg-r: 14px; --pg-gap: 12px; --pg-pad: 8px 14px; } + +/* Family subtle tweaks */ +.__PFX__-pager.f02 .__PFX__-pg-a{ border-style: dashed; } +.__PFX__-pager.f03 .__PFX__-pg-a{ border-width: 2px; } +.__PFX__-pager.f04 .__PFX__-pg-a{ background: color-mix(in srgb, var(--pg-bg) 78%, transparent); backdrop-filter: blur(2px); } +.__PFX__-pager.f05 .__PFX__-pg-a{ min-width: 38px; } + +/* Jumper */ +.__PFX__-pager .__PFX__-pg-jump{ display:flex; align-items:center; gap:8px; margin-left: 10px; } +.__PFX__-pager .__PFX__-pg-jump label{ font-size: 12px; color: var(--pg-fg2); } +.__PFX__-pager .__PFX__-pg-inp{ + width: 74px; + padding: 6px 10px; + border-radius: 10px; + border: 1px solid var(--pg-bd); + background: var(--pg-bg); + color: var(--pg-fg); +} +.__PFX__-pager .__PFX__-pg-btn{ + padding: 6px 12px; + border-radius: 10px; + border: 1px solid color-mix(in srgb, var(--pg-ac) 55%, var(--pg-bd)); + background: color-mix(in srgb, var(--pg-ac) 16%, var(--pg-bg)); + color: color-mix(in srgb, var(--pg-ac) 85%, var(--pg-fg)); + cursor:pointer; +} diff --git a/code/public/static/css/modules/pager/pager_01.css b/code/public/static/css/modules/pager/pager_01.css new file mode 100644 index 0000000..4fd172e --- /dev/null +++ b/code/public/static/css/modules/pager/pager_01.css @@ -0,0 +1,3 @@ +/* Family 01: classic numeric */ +.__PFX__-pager.f01 .__PFX__-pg-a{border-radius:999px;} +.__PFX__-pager.f01 .__PFX__-pg-it.is-edge .__PFX__-pg-a{font-weight:600;} diff --git a/code/public/static/css/modules/pager/pager_base.css b/code/public/static/css/modules/pager/pager_base.css new file mode 100644 index 0000000..3fb1463 --- /dev/null +++ b/code/public/static/css/modules/pager/pager_base.css @@ -0,0 +1,129 @@ +/* Pager base: __PFX__ replaced by CssBuilder + Colors do NOT hardcode: relies on CSS vars you set from theme: + --c-primary --c-accent --c-bg --c-bg-soft --c-text-primary --c-text-secondary --c-border +*/ +.__PFX__-pager{ + --pg-gap: 8px; + --pg-pad: 6px 10px; + --pg-r: 12px; + --pg-bd: var(--c-border, rgba(0,0,0,.12)); + --pg-fg: var(--c-text-primary, #111); + --pg-fg2: var(--c-text-secondary, #666); + --pg-bg: var(--c-bg-soft, #f1f5f9); + --pg-ac: var(--c-primary, #3b82f6); + --pg-ac2: var(--c-accent, #f97316); + display:flex; + align-items:center; + justify-content:center; + gap: var(--pg-gap); + margin: 18px 0; + color: var(--pg-fg); + flex-wrap: wrap; +} + +.__PFX__-pager .__PFX__-pg{ + display:flex; + align-items:center; + justify-content:center; + gap: var(--pg-gap); + padding: 0; + margin: 0; + list-style:none; + flex-wrap: wrap; +} + +.__PFX__-pager .__PFX__-pg-it{ display:inline-flex; } + +.__PFX__-pager .__PFX__-pg-a{ + display:inline-flex; + align-items:center; + justify-content:center; + padding: var(--pg-pad); + border: 1px solid var(--pg-bd); + background: var(--pg-bg); + color: var(--pg-fg); + border-radius: var(--pg-r); + text-decoration:none; + line-height: 1; + min-width: 34px; + user-select:none; + transition: filter .15s ease, transform .15s ease; +} +.__PFX__-pager a.__PFX__-pg-a:hover{ filter: brightness(0.98); transform: translateY(-1px); } + +.__PFX__-pager .__PFX__-pg-it.is-current .__PFX__-pg-a{ + background: color-mix(in srgb, var(--pg-ac) 18%, var(--pg-bg)); + border-color: color-mix(in srgb, var(--pg-ac) 55%, var(--pg-bd)); + color: color-mix(in srgb, var(--pg-ac) 85%, var(--pg-fg)); + font-weight: 600; +} + +.__PFX__-pager .__PFX__-pg-it.is-disabled .__PFX__-pg-a, +.__PFX__-pager .__PFX__-pg-a[aria-disabled="true"]{ + opacity: .45; + cursor: not-allowed; + pointer-events:none; +} + +.__PFX__-pager .__PFX__-pg-summary{ + font-size: 12px; + color: var(--pg-fg2); + padding: 4px 10px; + border: 1px dashed color-mix(in srgb, var(--pg-bd) 80%, transparent); + border-radius: 999px; +} + +/* Tone (0-4) */ +.__PFX__-pager.tone0{ --pg-bg: var(--c-bg-soft, #f1f5f9); } +.__PFX__-pager.tone1{ --pg-bg: color-mix(in srgb, var(--c-bg, #fff) 86%, var(--pg-ac) 14%); } +.__PFX__-pager.tone2{ --pg-bg: color-mix(in srgb, var(--c-bg, #fff) 88%, var(--pg-ac2) 12%); } +.__PFX__-pager.tone3{ --pg-bg: color-mix(in srgb, var(--c-bg, #fff) 92%, var(--pg-bd) 8%); } +.__PFX__-pager.tone4{ --pg-bg: color-mix(in srgb, var(--c-bg, #fff) 82%, var(--pg-ac) 18%); } + +/* Variant knobs (v0..v19) */ +.__PFX__-pager.v0 { --pg-r: 12px; --pg-gap: 8px; } +.__PFX__-pager.v1 { --pg-r: 999px; --pg-gap: 8px; } +.__PFX__-pager.v2 { --pg-r: 8px; --pg-gap: 10px; --pg-pad: 7px 12px; } +.__PFX__-pager.v3 { --pg-r: 4px; --pg-gap: 10px; --pg-pad: 7px 12px; } +.__PFX__-pager.v4 { --pg-r: 16px; --pg-gap: 6px; --pg-pad: 6px 10px; } +.__PFX__-pager.v5 { --pg-r: 999px; --pg-gap: 6px; --pg-pad: 6px 12px; } +.__PFX__-pager.v6 { --pg-r: 10px; --pg-gap: 12px; --pg-pad: 8px 12px; } +.__PFX__-pager.v7 { --pg-r: 14px; --pg-gap: 6px; --pg-pad: 6px 10px; } +.__PFX__-pager.v8 { --pg-r: 6px; --pg-gap: 8px; --pg-pad: 6px 10px; } +.__PFX__-pager.v9 { --pg-r: 999px; --pg-gap: 12px; --pg-pad: 8px 14px; } +.__PFX__-pager.v10{ --pg-r: 10px; --pg-gap: 6px; --pg-pad: 5px 10px; } +.__PFX__-pager.v11{ --pg-r: 18px; --pg-gap: 6px; --pg-pad: 5px 12px; } +.__PFX__-pager.v12{ --pg-r: 4px; --pg-gap: 14px; --pg-pad: 8px 12px; } +.__PFX__-pager.v13{ --pg-r: 12px; --pg-gap: 14px; --pg-pad: 8px 12px; } +.__PFX__-pager.v14{ --pg-r: 999px;--pg-gap: 10px; --pg-pad: 7px 14px; } +.__PFX__-pager.v15{ --pg-r: 8px; --pg-gap: 6px; --pg-pad: 6px 9px; } +.__PFX__-pager.v16{ --pg-r: 16px; --pg-gap: 10px; --pg-pad: 6px 12px; } +.__PFX__-pager.v17{ --pg-r: 999px;--pg-gap: 4px; --pg-pad: 6px 12px; } +.__PFX__-pager.v18{ --pg-r: 6px; --pg-gap: 4px; --pg-pad: 6px 10px; } +.__PFX__-pager.v19{ --pg-r: 14px; --pg-gap: 12px; --pg-pad: 8px 14px; } + +/* Family subtle tweaks */ +.__PFX__-pager.f02 .__PFX__-pg-a{ border-style: dashed; } +.__PFX__-pager.f03 .__PFX__-pg-a{ border-width: 2px; } +.__PFX__-pager.f04 .__PFX__-pg-a{ background: color-mix(in srgb, var(--pg-bg) 78%, transparent); backdrop-filter: blur(2px); } +.__PFX__-pager.f05 .__PFX__-pg-a{ min-width: 38px; } + +/* Jumper */ +.__PFX__-pager .__PFX__-pg-jump{ display:flex; align-items:center; gap:8px; margin-left: 10px; } +.__PFX__-pager .__PFX__-pg-jump label{ font-size: 12px; color: var(--pg-fg2); } +.__PFX__-pager .__PFX__-pg-inp{ + width: 74px; + padding: 6px 10px; + border-radius: 10px; + border: 1px solid var(--pg-bd); + background: var(--pg-bg); + color: var(--pg-fg); +} +.__PFX__-pager .__PFX__-pg-btn{ + padding: 6px 12px; + border-radius: 10px; + border: 1px solid color-mix(in srgb, var(--pg-ac) 55%, var(--pg-bd)); + background: color-mix(in srgb, var(--pg-ac) 16%, var(--pg-bg)); + color: color-mix(in srgb, var(--pg-ac) 85%, var(--pg-fg)); + cursor:pointer; +} diff --git a/code/public/static/css/modules/pager/pager_block.css b/code/public/static/css/modules/pager/pager_block.css new file mode 100644 index 0000000..d7e4b2f --- /dev/null +++ b/code/public/static/css/modules/pager/pager_block.css @@ -0,0 +1,18 @@ +/* Block family */ +.__PFX__-pager.pg-block .__PFX__-pg{ gap: 10px; } +.__PFX__-pager.pg-block .__PFX__-pg-a{ + border-radius: 6px; + min-width: 40px; + padding: 8px 12px; +} +.__PFX__-pager.pg-block .__PFX__-pg-it.is-current .__PFX__-pg-a{ + outline: 2px solid color-mix(in srgb, var(--pg-ac) 55%, transparent); + outline-offset: 1px; +} +.__PFX__-pager.pg-block .__PFX__-pg-it.is-edge .__PFX__-pg-a{ + border-width: 2px; +} +@media (min-width:960px){ + .__PFX__-pager.pg-block{ --pg-gap:12px; } + .__PFX__-pager.pg-block .__PFX__-pg-a{ min-width: 44px; } +} \ No newline at end of file diff --git a/code/public/static/css/modules/pager/pager_input.css b/code/public/static/css/modules/pager/pager_input.css new file mode 100644 index 0000000..89d567f --- /dev/null +++ b/code/public/static/css/modules/pager/pager_input.css @@ -0,0 +1,9 @@ +/* Input family */ +.__PFX__-pager.pg-input{ justify-content:center; } +.__PFX__-pager.pg-input .__PFX__-pg{ align-items:center; } +.__PFX__-pager.pg-input .__PFX__-pg-a{ border-radius: 10px; } +.__PFX__-pager.pg-input .__PFX__-pg-jump{ margin-left: 12px; } +.__PFX__-pager.pg-input .__PFX__-pg-inp{ width: 76px; } +@media (max-width:560px){ + .__PFX__-pager.pg-input .__PFX__-pg-jump{ width:100%; justify-content:center; margin-left:0; } +} \ No newline at end of file diff --git a/code/public/static/css/modules/pager/pager_minimal.css b/code/public/static/css/modules/pager/pager_minimal.css new file mode 100644 index 0000000..c787e0d --- /dev/null +++ b/code/public/static/css/modules/pager/pager_minimal.css @@ -0,0 +1,9 @@ +/* Minimal family */ +.__PFX__-pager.pg-minimal .__PFX__-pg{ gap: 10px; } +.__PFX__-pager.pg-minimal .__PFX__-pg-a{ background: transparent; } +.__PFX__-pager.pg-minimal .__PFX__-pg-it.is-current .__PFX__-pg-a{ + background: color-mix(in srgb, var(--pg-ac) 10%, transparent); +} +.__PFX__-pager.pg-minimal .__PFX__-pg-it:not(.is-current) .__PFX__-pg-a{ + border-color: color-mix(in srgb, var(--pg-bd) 65%, transparent); +} diff --git a/code/public/static/css/modules/pager/pager_pill.css b/code/public/static/css/modules/pager/pager_pill.css new file mode 100644 index 0000000..55dc390 --- /dev/null +++ b/code/public/static/css/modules/pager/pager_pill.css @@ -0,0 +1,17 @@ +/* Pill family (__PFX__ replaced by CssBuilder) */ +.__PFX__-pager.pg-pill{ justify-content:center; } +.__PFX__-pager.pg-pill .__PFX__-pg-a{ + border-radius: 999px; + padding: 7px 14px; +} +.__PFX__-pager.pg-pill .__PFX__-pg-it.is-edge .__PFX__-pg-a{ + background: color-mix(in srgb, var(--pg-bg) 70%, transparent); + border-style: dashed; +} +.__PFX__-pager.pg-pill .__PFX__-pg-it.is-current .__PFX__-pg-a{ + box-shadow: 0 1px 0 color-mix(in srgb, var(--pg-ac) 25%, transparent) inset; +} +@media (max-width:520px){ + .__PFX__-pager.pg-pill{ --pg-gap:6px; } + .__PFX__-pager.pg-pill .__PFX__-pg-a{ min-width: 32px; padding: 7px 12px; } +} \ No newline at end of file diff --git a/code/public/static/css/modules/play/play_01.css b/code/public/static/css/modules/play/play_01.css new file mode 100644 index 0000000..ae03a48 --- /dev/null +++ b/code/public/static/css/modules/play/play_01.css @@ -0,0 +1,121 @@ +/* PLAY 01 — 极简白风 */ + +.__PFX__-p1-wrap { + padding: 14px; + max-width: 900px; + margin: auto; +} + +/* 顶部信息 */ +.__PFX__-p1-header { + display: flex; + gap: 12px; +} +@media(max-width:768px){ + .__PFX__-p1-header { flex-direction: column; } +} +.__PFX__-p1-poster img { + width: 140px; + aspect-ratio: 2/3; + border-radius: 10px; + object-fit: cover; +} +.__PFX__-p1-info h1 { + font-size: 24px; + margin: 4px 0; + color: var(--primary-color); +} +.__PFX__-p1-meta span { + font-size: 12px; + margin-right: 8px; +} +.__PFX__-p1-des { + margin-top: 8px; + line-height: 1.7; + font-size: 14px; +} + +/* 播放器 */ +.__PFX__-p1-playerbox { + margin-top: 18px; +} +.__PFX__-p1-dp { + width: 100%; + height: 220px; +} +@media(min-width:768px){ + .__PFX__-p1-dp { height: 400px; } +} + +/* 线路导航 */ +.__PFX__-p1-lines { + margin-top:16px; + display:flex; + gap:10px; + overflow-x:auto; +} +.__PFX__-p1-linebtn { + padding:6px 12px; + background:#f1f1f1; + border-radius:6px; + font-size:13px; + white-space:nowrap; +} +.__PFX__-p1-linebtn.active { + background:var(--primary-color); + color:#fff; +} + +/* 集数列表 */ +.__PFX__-p1-episodes { + margin-top:12px; +} +.__PFX__-p1-elist { + display:none; + flex-wrap:wrap; + gap:10px; +} +.__PFX__-p1-elist.active { + display:flex; +} +.__PFX__-p1-ep { + display:block; + padding:6px 14px; + border-radius:6px; + background:#fafafa; + font-size:13px; +} +.__PFX__-p1-ep.active { + background:var(--primary-color); + color:#fff; +} + +/* 相关推荐 */ +.__PFX__-p1-relbox { + margin-top:26px; +} +.__PFX__-p1-reltitle { + font-size:18px; + color:var(--primary-color); +} +.__PFX__-p1-relgrid { + margin-top:12px; + display:grid; + gap:14px; + grid-template-columns:repeat(2,1fr); +} +@media(min-width:768px){ + .__PFX__-p1-relgrid { + grid-template-columns:repeat(4,1fr); + } +} +.__PFX__-p1-relcard img { + width:100%; + aspect-ratio:2/3; + border-radius:10px; + object-fit:cover; +} +.__PFX__-p1-relcard p { + margin-top:4px; + font-size:13px; +} diff --git a/code/public/static/css/modules/play/play_02.css b/code/public/static/css/modules/play/play_02.css new file mode 100644 index 0000000..6d0bf6f --- /dev/null +++ b/code/public/static/css/modules/play/play_02.css @@ -0,0 +1,140 @@ +/* PLAY 02 — 深色影院风 */ + +.__PFX__-p2-shell { + background:#05060a; + color:#eee; + min-height:100vh; +} + +/* 播放器 */ +.__PFX__-p2-screen { + width:100%; + max-width:960px; + margin:0 auto; + padding:10px; +} +.__PFX__-p2-dp { + width:100%; + height:220px; +} +@media(min-width:768px){ + .__PFX__-p2-dp { height:420px; } +} + +/* 信息 */ +.__PFX__-p2-info { + max-width:960px; + margin:10px auto 0; + padding:0 12px; +} +.__PFX__-p2-info h1 { + font-size:22px; + color:var(--primary-color); +} +.__PFX__-p2-meta span { + font-size:12px; + margin-right:8px; + color:#ccc; +} +.__PFX__-p2-actors { + font-size:13px; + margin-top:4px; +} + +/* 线路 chips */ +.__PFX__-p2-lines { + max-width:960px; + margin:14px auto 0; + padding:0 12px; + display:flex; + flex-wrap:wrap; + gap:8px; +} +.__PFX__-p2-linechip { + padding:5px 10px; + border-radius:999px; + border:1px solid rgba(255,255,255,.15); + background:rgba(255,255,255,.03); + color:#ddd; + font-size:12px; +} +.__PFX__-p2-linechip.active { + background:var(--primary-color); + border-color:var(--primary-color); + color:#fff; +} + +/* 集数按钮 */ +.__PFX__-p2-epswrap { + max-width:960px; + margin:8px auto 0; + padding:0 12px 10px; +} +.__PFX__-p2-epbox { + display:none; + display:none; + flex-wrap:wrap; + gap:8px; +} +.__PFX__-p2-epbox.active { + display:flex; +} +.__PFX__-p2-epbtn { + padding:6px 12px; + font-size:12px; + border-radius:8px; + background:#171920; + color:#ddd; +} +.__PFX__-p2-epbtn.active { + background:var(--primary-color); + color:#fff; +} + +/* 简介 */ +.__PFX__-p2-desc { + max-width:960px; + margin:14px auto 0; + padding:0 12px 10px; +} +.__PFX__-p2-desc h2 { + font-size:16px; + color:var(--primary-color); + margin-bottom:6px; +} +.__PFX__-p2-desc p { + font-size:14px; + line-height:1.7; + color:#ddd; +} + +/* 推荐 */ +.__PFX__-p2-rel { + max-width:960px; + margin:14px auto 20px; + padding:0 12px; +} +.__PFX__-p2-rel h3 { + font-size:16px; + color:var(--primary-color); +} +.__PFX__-p2-relgrid { + margin-top:10px; + display:grid; + gap:12px; + grid-template-columns:repeat(2,1fr); +} +@media(min-width:768px){ + .__PFX__-p2-relgrid { grid-template-columns:repeat(4,1fr); } +} +.__PFX__-p2-card img { + width:100%; + border-radius:10px; + aspect-ratio:2/3; + object-fit:cover; +} +.__PFX__-p2-card p { + font-size:12px; + margin-top:4px; + color:#eee; +} diff --git a/code/public/static/css/modules/play/play_03.css b/code/public/static/css/modules/play/play_03.css new file mode 100644 index 0000000..0d029f7 --- /dev/null +++ b/code/public/static/css/modules/play/play_03.css @@ -0,0 +1,117 @@ +/* PLAY 03 — 左右布局实验风 */ + +.__PFX__-p3-layout { + padding:12px; +} +.__PFX__-p3-main { + display:flex; + gap:14px; +} +@media(max-width:768px){ + .__PFX__-p3-main { flex-direction:column; } +} +.__PFX__-p3-left { + flex:3; +} +.__PFX__-p3-right { + flex:2; +} + +/* 播放器 */ +.__PFX__-p3-dp { + width:100%; + height:210px; +} +@media(min-width:768px){ + .__PFX__-p3-dp { height:360px; } +} + +.__PFX__-p3-info h1 { + font-size:20px; + margin-top:8px; + color:var(--primary-color); +} +.__PFX__-p3-meta { + font-size:13px; + margin-top:4px; +} +.__PFX__-p3-actor { + font-size:13px; + margin-top:2px; +} + +/* 右侧线路 + 集数 */ +.__PFX__-p3-linehead { + font-size:14px; + color:var(--primary-color); + margin-bottom:6px; +} +.__PFX__-p3-linelist { + display:flex; + flex-wrap:wrap; + gap:6px; + margin-bottom:8px; +} +.__PFX__-p3-line { + padding:4px 10px; + font-size:12px; + border-radius:8px; + background:#f3f3f3; +} +.__PFX__-p3-line.active { + background:var(--primary-color); + color:#fff; +} +.__PFX__-p3-eplist { + display:none; + border-radius:10px; + padding:8px; + background:#fafafa; + max-height:220px; + overflow:auto; +} +.__PFX__-p3-eplist.active { display:block; } +.__PFX__-p3-ep { + display:block; + font-size:13px; + padding:5px 0; +} +.__PFX__-p3-ep.active { + color:var(--primary-color); +} + +/* 简介 + 推荐 */ +.__PFX__-p3-desc h2 { + margin-top:18px; + font-size:16px; + color:var(--primary-color); +} +.__PFX__-p3-desc p { + margin-top:6px; + font-size:14px; + line-height:1.7; +} +.__PFX__-p3-rel h3 { + margin-top:18px; + font-size:16px; + color:var(--primary-color); +} +.__PFX__-p3-relgrid { + margin-top:8px; + display:grid; + gap:12px; + grid-template-columns:repeat(2,1fr); +} +@media(min-width:768px){ + .__PFX__-p3-relgrid { grid-template-columns:repeat(4,1fr); } +} +.__PFX__-p3-card img { + width:100%; + aspect-ratio:2/3; + border-radius:10px; + object-fit:cover; +} +.__PFX__-p3-card p { + font-size:12px; + margin-top:4px; +} diff --git a/code/public/static/css/modules/play/play_04.css b/code/public/static/css/modules/play/play_04.css new file mode 100644 index 0000000..201141b --- /dev/null +++ b/code/public/static/css/modules/play/play_04.css @@ -0,0 +1,90 @@ +/* PLAY 04 — 极简下拉线路 */ + +.__PFX__-p4-page { + padding:12px; +} + +/* 播放器 */ +.__PFX__-p4-top { margin-bottom:10px; } +.__PFX__-p4-dp { + width:100%; + height:220px; +} +@media(min-width:768px){ + .__PFX__-p4-dp { height:380px; } +} + +/* 信息 */ +.__PFX__-p4-info h1 { + font-size:22px; + color:var(--primary-color); +} +.__PFX__-p4-info p { + font-size:13px; + margin-top:4px; +} + +/* 线路下拉 */ +.__PFX__-p4-linebar { + margin-top:10px; + font-size:13px; +} +.__PFX__-p4-linebar select { + margin-left:6px; + padding:4px 6px; +} + +/* 集数列表 */ +.__PFX__-p4-eplist { + margin-top:8px; +} +.__PFX__-p4-ol { + display:none; + padding-left:18px; +} +.__PFX__-p4-ol.active { display:block; } +.__PFX__-p4-ol li { + margin-bottom:6px; +} +.__PFX__-p4-ol a { + font-size:13px; +} +.__PFX__-p4-ol a.active { + color:var(--primary-color); +} + +/* 简介 + 推荐 */ +.__PFX__-p4-desc h2 { + margin-top:18px; + font-size:16px; + color:var(--primary-color); +} +.__PFX__-p4-desc p { + margin-top:6px; + font-size:14px; + line-height:1.7; +} +.__PFX__-p4-rel h3 { + margin-top:18px; + font-size:16px; + color:var(--primary-color); +} +.__PFX__-p4-grid { + margin-top:8px; + display:grid; + gap:12px; + grid-template-columns:repeat(2,1fr); +} +@media(min-width:768px){ + .__PFX__-p4-grid { grid-template-columns:repeat(3,1fr); } +} +.__PFX__-p4-card img { + width:100%; + aspect-ratio:2/3; + border-radius:8px; + object-fit:cover; +} +.__PFX__-p4-card p { + font-size:12px; + margin-top:4px; +} diff --git a/code/public/static/css/modules/play/play_05.css b/code/public/static/css/modules/play/play_05.css new file mode 100644 index 0000000..2f149d0 --- /dev/null +++ b/code/public/static/css/modules/play/play_05.css @@ -0,0 +1,118 @@ +/* PLAY 05 — 实验风卡片布局 */ + +.__PFX__-p5-wrap { + padding:12px; +} + +/* 封面 + 播放器 */ +.__PFX__-p5-hero { + display:flex; + gap:10px; +} +@media(max-width:768px){ + .__PFX__-p5-hero { flex-direction:column; } +} +.__PFX__-p5-pic { + width:120px; + aspect-ratio:2/3; + border-radius:10px; + object-fit:cover; +} +.__PFX__-p5-right { + flex:1; +} +.__PFX__-p5-right h1 { + font-size:20px; + color:var(--primary-color); +} +.__PFX__-p5-meta { + font-size:13px; + margin-top:4px; +} +.__PFX__-p5-dp { + width:100%; + margin-top:8px; + height:200px; +} +@media(min-width:768px){ + .__PFX__-p5-dp { height:280px; } +} + +/* 线路横向滚动 */ +.__PFX__-p5-lines { + margin-top:12px; + display:flex; + overflow-x:auto; + gap:8px; +} +.__PFX__-p5-line { + padding:4px 10px; + font-size:12px; + border-radius:999px; + background:#f3f3f3; + white-space:nowrap; +} +.__PFX__-p5-line.active { + background:var(--primary-color); + color:#fff; +} + +/* 集数 */ +.__PFX__-p5-eps { + margin-top:8px; +} +.__PFX__-p5-epbox { + display:none; + flex-wrap:wrap; + gap:8px; +} +.__PFX__-p5-epbox.active { + display:flex; +} +.__PFX__-p5-epbtn { + padding:5px 10px; + font-size:12px; + border-radius:8px; + background:#fafafa; + border:1px solid rgba(0,0,0,.06); +} +.__PFX__-p5-epbtn.active { + background:var(--primary-color); + color:#fff; +} + +/* 简介 + 推荐 */ +.__PFX__-p5-desc h2 { + margin-top:18px; + font-size:16px; + color:var(--primary-color); +} +.__PFX__-p5-desc p { + margin-top:6px; + font-size:14px; + line-height:1.7; +} +.__PFX__-p5-rel h3 { + margin-top:18px; + font-size:16px; + color:var(--primary-color); +} +.__PFX__-p5-relgrid { + margin-top:8px; + display:grid; + gap:10px; + grid-template-columns:repeat(2,1fr); +} +@media(min-width:768px){ + .__PFX__-p5-relgrid { grid-template-columns:repeat(4,1fr); } +} +.__PFX__-p5-relcard img { + width:100%; + border-radius:10px; + aspect-ratio:2/3; + object-fit:cover; +} +.__PFX__-p5-relcard p { + margin-top:4px; + font-size:12px; +} diff --git a/code/public/static/css/modules/player/player_dplayer.css b/code/public/static/css/modules/player/player_dplayer.css new file mode 100644 index 0000000..be0a54d --- /dev/null +++ b/code/public/static/css/modules/player/player_dplayer.css @@ -0,0 +1,152 @@ +/* ================= Player · DPlayer Base ================= */ + +.__PFX__-player.__PFX__-player-dp{ + margin:14px 0; + padding:10px; + border:1px solid var(--border-color); + background:var(--bg-color); + border-radius:10px; +} + +.__PFX__-player-head{ + margin-bottom:10px; +} + +.__PFX__-player-title{ + margin:0; + font-size:16px; + line-height:1.35; + color:var(--text-color); +} + +.__PFX__-player-tip, +.__PFX__-player-note, +.__PFX__-player-sidehint{ + color:var(--text-muted-color); + font-size:12px; + line-height:1.6; +} + +.__PFX__-player-foot{ + margin-top:10px; +} + +.__PFX__-player-info{ + margin-bottom:8px; +} + +.__PFX__-player-badge{ + display:inline-block; + padding:3px 8px; + border-radius:999px; + background:var(--bg-soft-color); + color:var(--text-color); + font-size:12px; +} + +.__PFX__-player-status{ + margin-bottom:8px; + padding:8px 10px; + border-radius:8px; + background:var(--bg-soft-color); + color:var(--text-muted-color); + font-size:12px; +} + +/* ====== Core box (DPlayer mount point) ====== */ +.__PFX__-player-core{ + width:100%; + overflow:hidden; + border-radius:10px; + background:var(--bg-soft-color); + border:1px solid var(--border-color); + position:relative; +} + +/* 默认比例:16:9 */ +.__PFX__-player[data-ratio="16x9"] .__PFX__-player-core{ + aspect-ratio:16 / 9; +} +.__PFX__-player[data-ratio="4x3"] .__PFX__-player-core{ + aspect-ratio:4 / 3; +} +.__PFX__-player[data-ratio="21x9"] .__PFX__-player-core{ + aspect-ratio:21 / 9; +} +.__PFX__-player[data-ratio="auto"] .__PFX__-player-core{ + aspect-ratio:auto; + min-height:220px; +} + +/* ====== Variant-specific structural helpers (still generic) ====== */ +.__PFX__-player-wrap, +.__PFX__-player-wrapA, +.__PFX__-player-wrapB{ + width:100%; +} + +.__PFX__-player-figure{ + margin:0; +} + +.__PFX__-player-caption{ + margin-top:8px; + font-size:13px; + color:var(--text-muted-color); +} + +.__PFX__-player-aside{ + margin-top:10px; + padding-top:8px; + border-top:1px dashed var(--border-color); +} + +.__PFX__-player-dialog{ + width:100%; + padding:0; + border:0; + background:transparent; +} + +.__PFX__-player-dialog::backdrop{ + background:transparent; +} + +.__PFX__-player-footerOnly{ + padding:0; + border:0; + background:transparent; +} + +/* ====== Layout for variant 10 (side area) ====== */ +.__PFX__-player-layout{ + display:flex; + flex-direction:column; + gap:10px; +} + +.__PFX__-player-side{ + padding:10px; + border-radius:10px; + background:var(--bg-soft-color); + border:1px solid var(--border-color); +} + +@media (min-width: 1024px){ + .__PFX__-player-layout{ + flex-direction:row; + align-items:flex-start; + } + .__PFX__-player-layout .__PFX__-player-core{ + flex:1; + } + .__PFX__-player-side{ + width:260px; + } +} + +/* ====== Compact behavior ====== */ +.__PFX__-player.compact{ + padding:8px; + border-radius:8px; +} diff --git a/code/public/static/css/modules/playline/layout/layout_A.css b/code/public/static/css/modules/playline/layout/layout_A.css new file mode 100644 index 0000000..e89c824 --- /dev/null +++ b/code/public/static/css/modules/playline/layout/layout_A.css @@ -0,0 +1,21 @@ +.__PFX__-pl-a{ + margin:24px 0; +} + +.__PFX__-pl-a .__PFX__-pl-tabs{ + display:flex; + gap:12px; + margin-bottom:12px; +} + +.__PFX__-pl-a .__PFX__-pl-tab{ + padding:4px 10px; + border:1px solid var(--border-color); + cursor:pointer; +} + +.__PFX__-pl-a .__PFX__-pl-list{ + display:grid; + grid-template-columns:repeat(auto-fill,minmax(70px,1fr)); + gap:8px; +} diff --git a/code/public/static/css/modules/playline/layout/layout_B.css b/code/public/static/css/modules/playline/layout/layout_B.css new file mode 100644 index 0000000..8a9d06b --- /dev/null +++ b/code/public/static/css/modules/playline/layout/layout_B.css @@ -0,0 +1,19 @@ +.__PFX__-pl-b .__PFX__-pl-wrap{ + display:flex; + gap:16px; +} + +.__PFX__-pl-b .__PFX__-pl-lines{ + width:120px; + border-right:1px solid var(--border-color); +} + +.__PFX__-pl-b .__PFX__-pl-line{ + padding:6px 0; +} + +.__PFX__-pl-b .__PFX__-pl-list{ + display:flex; + flex-wrap:wrap; + gap:8px; +} diff --git a/code/public/static/css/modules/playline/layout/layout_C.css b/code/public/static/css/modules/playline/layout/layout_C.css new file mode 100644 index 0000000..5128c8e --- /dev/null +++ b/code/public/static/css/modules/playline/layout/layout_C.css @@ -0,0 +1,20 @@ +.__PFX__-pl-c{ + margin:24px 0; +} + +.__PFX__-pl-c .__PFX__-pl-block{ + margin-bottom:20px; +} + +.__PFX__-pl-c .__PFX__-pl-title{ + margin-bottom:8px; + font-weight:600; +} + +.__PFX__-pl-c .__PFX__-pl-list{ + padding-left:16px; +} + +.__PFX__-pl-c .__PFX__-pl-ep{ + margin-bottom:6px; +} diff --git a/code/public/static/css/modules/rank/rank_home.css b/code/public/static/css/modules/rank/rank_home.css new file mode 100644 index 0000000..1668b64 --- /dev/null +++ b/code/public/static/css/modules/rank/rank_home.css @@ -0,0 +1,49 @@ +.__PFX__-rank-home{ + display:grid; + grid-template-columns:repeat(4,1fr); + gap:16px; +} + +@media (max-width:1200px){ + .__PFX__-rank-home{ + grid-template-columns:repeat(2,1fr); + } +} + +@media (max-width:640px){ + .__PFX__-rank-home{ + grid-template-columns:1fr; + } +} +.__PFX__-rank-block{ + border:1px solid var(--border-color); + background:var(--bg-color); + border-radius:10px; + padding:12px; +} +.__PFX__-rank-head{ + display:flex; + align-items:center; + justify-content:space-between; + margin-bottom:8px; +} + +.__PFX__-rank-title{ + font-size:16px; + font-weight:700; +} + +.__PFX__-rank-more{ + font-size:12px; + color:var(--text-muted-color); + text-decoration:none; +} +.rank-list{ + list-style:none; + margin:0; + padding:0; +} + +.rank-list > li{ + margin-bottom:6px; +} diff --git a/code/public/static/css/modules/ranking/ranking_01.css b/code/public/static/css/modules/ranking/ranking_01.css new file mode 100644 index 0000000..782511f --- /dev/null +++ b/code/public/static/css/modules/ranking/ranking_01.css @@ -0,0 +1,26 @@ +/* ranking_01.css */ +.__PFX__-r1-title { + font-size: 16px; + color: var(--primary-color); + margin-bottom: 10px; +} +.__PFX__-r1-list { + padding-left: 20px; +} +.__PFX__-r1-row { + margin-bottom: 8px; +} +.__PFX__-r1-a { + display: flex; + gap: 10px; + align-items: center; +} +.__PFX__-r1-num { + color: var(--primary-color); + font-weight: 700; + width: 18px; +} +.__PFX__-r1-name { + font-size: 14px; + color: #333; +} diff --git a/code/public/static/css/modules/ranking/ranking_02.css b/code/public/static/css/modules/ranking/ranking_02.css new file mode 100644 index 0000000..c86868d --- /dev/null +++ b/code/public/static/css/modules/ranking/ranking_02.css @@ -0,0 +1,25 @@ +/* ranking_02.css */ +.__PFX__-r2-hd { + font-size: 16px; + color: var(--primary-color); + margin-bottom: 12px; +} +.__PFX__-r2-item { + display: flex; + gap: 10px; + padding: 10px 0; + border-bottom: 1px solid #eee; +} +.__PFX__-r2-img { + width: 90px; + aspect-ratio: 2/3; + border-radius: 8px; + object-fit: cover; +} +.__PFX__-r2-info h4 { + font-size: 14px; +} +.__PFX__-r2-info p { + font-size: 12px; + color: #777; +} diff --git a/code/public/static/css/modules/ranking/ranking_03.css b/code/public/static/css/modules/ranking/ranking_03.css new file mode 100644 index 0000000..dc870ec --- /dev/null +++ b/code/public/static/css/modules/ranking/ranking_03.css @@ -0,0 +1,28 @@ +/* ranking_03.css */ +.__PFX__-r3-tt { + font-size: 16px; + color: var(--primary-color); + margin-bottom: 10px; +} +.__PFX__-r3-row { + display: flex; + align-items: center; + justify-content: space-between; + padding: 8px 4px; + border-bottom: 1px solid rgba(0,0,0,.06); +} +.__PFX__-r3-l { + color: var(--primary-color); + font-size: 14px; + font-weight: bold; + width: 20px; +} +.__PFX__-r3-m { + flex: 1; + font-size: 13px; + color: #333; +} +.__PFX__-r3-r { + font-size: 14px; + color: var(--primary-color); +} diff --git a/code/public/static/css/modules/ranking/ranking_04.css b/code/public/static/css/modules/ranking/ranking_04.css new file mode 100644 index 0000000..b501ff6 --- /dev/null +++ b/code/public/static/css/modules/ranking/ranking_04.css @@ -0,0 +1,30 @@ +/* ranking_04.css */ +.__PFX__-r4-hd { + font-size: 16px; + color: var(--primary-color); + margin-bottom: 12px; +} +.__PFX__-r4-grid { + display: grid; + grid-template-columns: repeat(2,1fr); + gap: 14px; +} +@media(min-width:768px){ + .__PFX__-r4-grid { grid-template-columns: repeat(3,1fr); } +} +.__PFX__-r4-card { + background: #fff; + padding: 10px; + border-radius: 12px; + box-shadow: 0 4px 12px rgba(0,0,0,.08); +} +.__PFX__-r4-img { + width: 100%; + aspect-ratio: 2/3; + border-radius: 10px; + object-fit: cover; +} +.__PFX__-r4-name { + font-size: 13px; + margin-top: 6px; +} diff --git a/code/public/static/css/modules/ranking/ranking_05.css b/code/public/static/css/modules/ranking/ranking_05.css new file mode 100644 index 0000000..fab024d --- /dev/null +++ b/code/public/static/css/modules/ranking/ranking_05.css @@ -0,0 +1,27 @@ +/* ranking_05.css */ +.__PFX__-r5-top strong { + font-size: 16px; + color: var(--primary-color); + margin-bottom: 10px; +} +.__PFX__-r5-line { + display: flex; + gap: 10px; + padding: 10px 0; + border-bottom: 1px solid #eee; +} +.__PFX__-r5-left { + width: 30px; + color: var(--primary-color); + font-weight: bold; + text-align: center; +} +.__PFX__-r5-right b { + font-size: 14px; + color: #333; +} +.__PFX__-r5-right p { + font-size: 12px; + color: #777; + margin-top: 2px; +} diff --git a/code/public/static/css/modules/recommend/recommend_01.css b/code/public/static/css/modules/recommend/recommend_01.css new file mode 100644 index 0000000..87cc8e8 --- /dev/null +++ b/code/public/static/css/modules/recommend/recommend_01.css @@ -0,0 +1,70 @@ +/* recommend_01.css */ +.__PFX__-recA-wrap{ + + border-radius: 5px; + background: var(--bg-soft-color); +} +.__PFX__-recA-head{ + display:flex; + align-items:baseline; + justify-content:space-between; + margin-bottom:6px; +} +.__PFX__-recA-title{ + font-size:15px; + font-weight:600; + color:var(--primary-color); +} +.__PFX__-recA-sub{ + font-size:11px; + color:var(--text-muted-color); +} +.__PFX__-recA-grid{ + list-style:none; + margin:4px 0 0; + padding:0; + display:grid; + grid-template-columns:repeat(2,minmax(0,1fr)); + gap:10px; +} +@media(min-width:768px){ + .__PFX__-recA-grid{ + grid-template-columns:repeat(4,minmax(0,1fr)); + } +} +.__PFX__-recA-item{} +.__PFX__-recA-link{ + display:block; + text-decoration:none; +} +.__PFX__-recA-coverBox{ + position:relative; + overflow:hidden; + border-radius:8px; + background:#111; +} +.__PFX__-recA-cover{ + width:100%; + aspect-ratio:2/3; + object-fit:cover; + display:block; +} +.__PFX__-recA-tag{ + position:absolute; + left:6px; + top:6px; + padding:1px 5px; + border-radius:6px; + font-size:10px; + background:var(--primary-color); + color:#fff; +} +.__PFX__-recA-name{ + margin-top:4px; + font-size:12px; + line-height:1.4; + color:var(--text-color, var(--text-primary-color)); + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; +} diff --git a/code/public/static/css/modules/recommend/recommend_02.css b/code/public/static/css/modules/recommend/recommend_02.css new file mode 100644 index 0000000..a482a58 --- /dev/null +++ b/code/public/static/css/modules/recommend/recommend_02.css @@ -0,0 +1,97 @@ +/* recommend_02.css (优化稳定版) */ + +.__PFX__-recB-wrap{ + margin:14px auto 4px; + padding:10px 0 8px; + max-width:1280px; +} + +.__PFX__-recB-head{ + padding:0 14px 4px; + display:flex; + align-items:center; + gap:8px; +} + +.__PFX__-recB-label{ + font-size:10px; + padding:2px 6px; + border-radius:999px; + background:var(--primary-color); + color:#fff; +} + +.__PFX__-recB-title{ + font-size:15px; + font-weight:600; + color:var(--text-color, var(--text-primary-color)); +} + +/* H5:横向滑动,2~3 列缩略卡片 */ +.__PFX__-recB-scroll{ + display:flex; + overflow-x:auto; + padding:8px 12px 10px; + gap:12px; + scroll-snap-type:x mandatory; +} +.__PFX__-recB-scroll::-webkit-scrollbar{ display:none; } + +.__PFX__-recB-card{ + min-width:46%; + max-width:48%; + scroll-snap-align:start; + background:var(--bg-soft-color); + border-radius:10px; + overflow:hidden; +} + +/* PC:完整 5 列自适应,彻底居中 */ +@media(min-width:768px){ + .__PFX__-recB-scroll{ + display:grid; + grid-template-columns:repeat(5, 1fr); + gap:14px; + overflow:visible; + } + .__PFX__-recB-card{ + min-width:0; + width:100%; + max-width:100%; + } +} + +.__PFX__-recB-anchor{ + display:block; + text-decoration:none; + color:inherit; +} + +.__PFX__-recB-figure{ + margin:0; + background:#000; +} + +.__PFX__-recB-img{ + width:100%; + aspect-ratio:2/3; + object-fit:cover; + display:block; +} + +.__PFX__-recB-meta{ + padding:6px 7px 7px; +} + +.__PFX__-recB-name{ + font-size:12px; + line-height:1.3; + max-height:2.6em; + overflow:hidden; +} + +.__PFX__-recB-info{ + margin-top:2px; + font-size:11px; + color:var(--text-muted-color); +} diff --git a/code/public/static/css/modules/recommend/recommend_03.css b/code/public/static/css/modules/recommend/recommend_03.css new file mode 100644 index 0000000..0fb0c4a --- /dev/null +++ b/code/public/static/css/modules/recommend/recommend_03.css @@ -0,0 +1,117 @@ +/* recommend_03.css */ +.__PFX__-recC-block{ + margin:14px 12px 6px; + padding:10px 10px 8px; + border-radius:12px; + background:linear-gradient(135deg,var(--grad-start),var(--grad-end)); + color:#fff; +} +.__PFX__-recC-top{ + display:flex; + flex-direction:column; + gap:2px; + margin-bottom:6px; +} +.__PFX__-recC-title{ + font-size:15px; + font-weight:600; +} +.__PFX__-recC-tip{ + font-size:11px; + opacity:.85; +} +.__PFX__-recC-body{ + display:flex; + gap:8px; +} +@media(max-width:767px){ + .__PFX__-recC-body{ + flex-direction:column; + } +} +.__PFX__-recC-main{ + flex:1.1; + min-width:0; +} +.__PFX__-recC-mainLink{ + display:flex; + gap:8px; + text-decoration:none; + color:inherit; +} +.__PFX__-recC-mainCover{ + width:38%; + max-width:120px; + border-radius:10px; + overflow:hidden; + position:relative; + background:#000; +} +.__PFX__-recC-mainImg{ + width:100%; + aspect-ratio:2/3; + object-fit:cover; + display:block; +} +.__PFX__-recC-mainBadge{ + position:absolute; + left:6px; + top:6px; + font-size:10px; + padding:2px 6px; + border-radius:999px; + background:rgba(0,0,0,.6); +} +.__PFX__-recC-mainText{ + flex:1; + min-width:0; + display:flex; + flex-direction:column; + justify-content:center; +} +.__PFX__-recC-mainName{ + font-size:14px; + font-weight:600; + line-height:1.3; +} +.__PFX__-recC-mainRemark{ + margin-top:3px; + font-size:11px; + opacity:.85; +} +.__PFX__-recC-side{ + flex:1; + min-width:0; + list-style:none; + margin:0; + padding:0; +} +.__PFX__-recC-sideItem + .__PFX__-recC-sideItem{ + margin-top:3px; +} +.__PFX__-recC-sideLink{ + display:flex; + align-items:center; + text-decoration:none; + color:inherit; + font-size:11px; + padding:4px 6px; + border-radius:6px; + background:rgba(0,0,0,0.14); +} +.__PFX__-recC-sideNo{ + width:20px; + font-family:monospace; + opacity:.8; +} +.__PFX__-recC-sideName{ + flex:1; + min-width:0; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; +} +.__PFX__-recC-sideRemark{ + margin-left:6px; + opacity:.8; +} diff --git a/code/public/static/css/modules/recommend/recommend_04.css b/code/public/static/css/modules/recommend/recommend_04.css new file mode 100644 index 0000000..45fb0d8 --- /dev/null +++ b/code/public/static/css/modules/recommend/recommend_04.css @@ -0,0 +1,80 @@ +/* recommend_04.css */ +.__PFX__-recD-section{ + margin:12px 10px 4px; + padding:8px 8px 10px; + border-radius:14px; + border:1px solid var(--color_border, var(--border-color)); + background:var(--bg-color); +} +.__PFX__-recD-header{ + display:flex; + justify-content:space-between; + align-items:flex-end; + margin-bottom:6px; +} +.__PFX__-recD-caption{ + font-size:14px; + font-weight:600; + display:flex; + align-items:center; + gap:6px; + color:var(--primary-color); +} +.__PFX__-recD-dot{ + width:8px; + height:8px; + border-radius:50%; + background:var(--accent-color); +} +.__PFX__-recD-more{ + font-size:11px; + color:var(--text-muted-color); +} +.__PFX__-recD-grid{ + display:grid; + grid-template-columns:repeat(2,minmax(0,1fr)); + gap:8px; +} +@media(min-width:768px){ + .__PFX__-recD-grid{ + grid-template-columns:repeat(3,minmax(0,1fr)); + } +} +.__PFX__-recD-cell{} +.__PFX__-recD-cellLink{ + display:flex; + text-decoration:none; + gap:8px; + padding:5px 6px; + border-radius:10px; + background:var(--bg-soft-color); + color:var(--text-color, var(--text-primary-color)); +} +.__PFX__-recD-thumbBox{ + width:36%; + max-width:90px; + border-radius:8px; + overflow:hidden; + background:#000; +} +.__PFX__-recD-thumb{ + width:100%; + aspect-ratio:2/3; + object-fit:cover; + display:block; +} +.__PFX__-recD-info{ + flex:1; + min-width:0; +} +.__PFX__-recD-infoName{ + font-size:12px; + line-height:1.3; + max-height:2.6em; + overflow:hidden; +} +.__PFX__-recD-infoSub{ + margin-top:3px; + font-size:11px; + color:var(--text-muted-color); +} diff --git a/code/public/static/css/modules/recommend/recommend_05.css b/code/public/static/css/modules/recommend/recommend_05.css new file mode 100644 index 0000000..683786b --- /dev/null +++ b/code/public/static/css/modules/recommend/recommend_05.css @@ -0,0 +1,73 @@ +/* recommend_05.css */ +.__PFX__-recE-wrap{ + margin:12px 8px 4px; + padding:8px 6px 6px; + border-radius:10px; + background:var(--bg-soft-color); +} +.__PFX__-recE-head{ + margin:0 4px 4px; +} +.__PFX__-recE-title{ + font-size:14px; + font-weight:500; + color:var(--text-color, var(--text-primary-color)); +} +.__PFX__-recE-list{ + list-style:none; + margin:0; + padding:0; +} +.__PFX__-recE-row + .__PFX__-recE-row{ + border-top:1px dashed var(--border-color); +} +.__PFX__-recE-rowLink{ + display:flex; + align-items:center; + gap:6px; + padding:6px 4px; + text-decoration:none; + color:inherit; +} +.__PFX__-recE-index{ + width:24px; + text-align:center; + font-size:11px; + color:var(--primary-color); +} +.__PFX__-recE-text{ + flex:1; + min-width:0; + display:flex; + flex-direction:column; + gap:2px; +} +.__PFX__-recE-name{ + font-size:12px; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; +} +.__PFX__-recE-tag{ + display:inline-block; + font-size:10px; + color:var(--text-muted-color); +} +.__PFX__-recE-thumbBox{ + width:50px; + border-radius:6px; + overflow:hidden; + background:#000; +} +.__PFX__-recE-thumb{ + width:100%; + aspect-ratio:2/3; + object-fit:cover; + display:block; +} +@media(min-width:768px){ + .__PFX__-recE-wrap{ + margin:14px auto 6px; + max-width:840px; + } +} diff --git a/code/public/static/css/modules/search/search_header_centered.css b/code/public/static/css/modules/search/search_header_centered.css new file mode 100644 index 0000000..b08a576 --- /dev/null +++ b/code/public/static/css/modules/search/search_header_centered.css @@ -0,0 +1,125 @@ +/* Search Header v4 - centered isolated */ +.__PFX__-sh-c0 { padding: 16px 0; } +.__PFX__-sh-c0 h1, .__PFX__-sh-c0 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c0 p, .__PFX__-sh-c0 small, .__PFX__-sh-c0 li, .__PFX__-sh-c0 dt, .__PFX__-sh-c0 dd, .__PFX__-sh-c0 span { color: var(--color_text); } +.__PFX__-sh-c0 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c0 .center { text-align:center; } +.__PFX__-sh-c0 .underline { height:2px; width:60px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c1 { padding: 17px 0; } +.__PFX__-sh-c1 h1, .__PFX__-sh-c1 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c1 p, .__PFX__-sh-c1 small, .__PFX__-sh-c1 li, .__PFX__-sh-c1 dt, .__PFX__-sh-c1 dd, .__PFX__-sh-c1 span { color: var(--color_text); } +.__PFX__-sh-c1 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c1 .center { text-align:center; } +.__PFX__-sh-c1 .underline { height:2px; width:62px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c2 { padding: 18px 0; } +.__PFX__-sh-c2 h1, .__PFX__-sh-c2 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c2 p, .__PFX__-sh-c2 small, .__PFX__-sh-c2 li, .__PFX__-sh-c2 dt, .__PFX__-sh-c2 dd, .__PFX__-sh-c2 span { color: var(--color_text); } +.__PFX__-sh-c2 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c2 .center { text-align:center; } +.__PFX__-sh-c2 .underline { height:2px; width:64px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c3 { padding: 19px 0; } +.__PFX__-sh-c3 h1, .__PFX__-sh-c3 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c3 p, .__PFX__-sh-c3 small, .__PFX__-sh-c3 li, .__PFX__-sh-c3 dt, .__PFX__-sh-c3 dd, .__PFX__-sh-c3 span { color: var(--color_text); } +.__PFX__-sh-c3 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c3 .center { text-align:center; } +.__PFX__-sh-c3 .underline { height:2px; width:66px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c4 { padding: 20px 0; } +.__PFX__-sh-c4 h1, .__PFX__-sh-c4 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c4 p, .__PFX__-sh-c4 small, .__PFX__-sh-c4 li, .__PFX__-sh-c4 dt, .__PFX__-sh-c4 dd, .__PFX__-sh-c4 span { color: var(--color_text); } +.__PFX__-sh-c4 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c4 .center { text-align:center; } +.__PFX__-sh-c4 .underline { height:2px; width:68px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c5 { padding: 21px 0; } +.__PFX__-sh-c5 h1, .__PFX__-sh-c5 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c5 p, .__PFX__-sh-c5 small, .__PFX__-sh-c5 li, .__PFX__-sh-c5 dt, .__PFX__-sh-c5 dd, .__PFX__-sh-c5 span { color: var(--color_text); } +.__PFX__-sh-c5 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c5 .center { text-align:center; } +.__PFX__-sh-c5 .underline { height:2px; width:70px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c6 { padding: 22px 0; } +.__PFX__-sh-c6 h1, .__PFX__-sh-c6 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c6 p, .__PFX__-sh-c6 small, .__PFX__-sh-c6 li, .__PFX__-sh-c6 dt, .__PFX__-sh-c6 dd, .__PFX__-sh-c6 span { color: var(--color_text); } +.__PFX__-sh-c6 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c6 .center { text-align:center; } +.__PFX__-sh-c6 .underline { height:2px; width:72px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c7 { padding: 23px 0; } +.__PFX__-sh-c7 h1, .__PFX__-sh-c7 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c7 p, .__PFX__-sh-c7 small, .__PFX__-sh-c7 li, .__PFX__-sh-c7 dt, .__PFX__-sh-c7 dd, .__PFX__-sh-c7 span { color: var(--color_text); } +.__PFX__-sh-c7 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c7 .center { text-align:center; } +.__PFX__-sh-c7 .underline { height:2px; width:74px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c8 { padding: 24px 0; } +.__PFX__-sh-c8 h1, .__PFX__-sh-c8 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c8 p, .__PFX__-sh-c8 small, .__PFX__-sh-c8 li, .__PFX__-sh-c8 dt, .__PFX__-sh-c8 dd, .__PFX__-sh-c8 span { color: var(--color_text); } +.__PFX__-sh-c8 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c8 .center { text-align:center; } +.__PFX__-sh-c8 .underline { height:2px; width:76px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c9 { padding: 25px 0; } +.__PFX__-sh-c9 h1, .__PFX__-sh-c9 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c9 p, .__PFX__-sh-c9 small, .__PFX__-sh-c9 li, .__PFX__-sh-c9 dt, .__PFX__-sh-c9 dd, .__PFX__-sh-c9 span { color: var(--color_text); } +.__PFX__-sh-c9 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c9 .center { text-align:center; } +.__PFX__-sh-c9 .underline { height:2px; width:78px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c10 { padding: 26px 0; } +.__PFX__-sh-c10 h1, .__PFX__-sh-c10 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c10 p, .__PFX__-sh-c10 small, .__PFX__-sh-c10 li, .__PFX__-sh-c10 dt, .__PFX__-sh-c10 dd, .__PFX__-sh-c10 span { color: var(--color_text); } +.__PFX__-sh-c10 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c10 .center { text-align:center; } +.__PFX__-sh-c10 .underline { height:2px; width:80px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c11 { padding: 27px 0; } +.__PFX__-sh-c11 h1, .__PFX__-sh-c11 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c11 p, .__PFX__-sh-c11 small, .__PFX__-sh-c11 li, .__PFX__-sh-c11 dt, .__PFX__-sh-c11 dd, .__PFX__-sh-c11 span { color: var(--color_text); } +.__PFX__-sh-c11 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c11 .center { text-align:center; } +.__PFX__-sh-c11 .underline { height:2px; width:82px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c12 { padding: 28px 0; } +.__PFX__-sh-c12 h1, .__PFX__-sh-c12 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c12 p, .__PFX__-sh-c12 small, .__PFX__-sh-c12 li, .__PFX__-sh-c12 dt, .__PFX__-sh-c12 dd, .__PFX__-sh-c12 span { color: var(--color_text); } +.__PFX__-sh-c12 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c12 .center { text-align:center; } +.__PFX__-sh-c12 .underline { height:2px; width:84px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c13 { padding: 29px 0; } +.__PFX__-sh-c13 h1, .__PFX__-sh-c13 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c13 p, .__PFX__-sh-c13 small, .__PFX__-sh-c13 li, .__PFX__-sh-c13 dt, .__PFX__-sh-c13 dd, .__PFX__-sh-c13 span { color: var(--color_text); } +.__PFX__-sh-c13 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c13 .center { text-align:center; } +.__PFX__-sh-c13 .underline { height:2px; width:86px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c14 { padding: 30px 0; } +.__PFX__-sh-c14 h1, .__PFX__-sh-c14 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c14 p, .__PFX__-sh-c14 small, .__PFX__-sh-c14 li, .__PFX__-sh-c14 dt, .__PFX__-sh-c14 dd, .__PFX__-sh-c14 span { color: var(--color_text); } +.__PFX__-sh-c14 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c14 .center { text-align:center; } +.__PFX__-sh-c14 .underline { height:2px; width:88px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c15 { padding: 31px 0; } +.__PFX__-sh-c15 h1, .__PFX__-sh-c15 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c15 p, .__PFX__-sh-c15 small, .__PFX__-sh-c15 li, .__PFX__-sh-c15 dt, .__PFX__-sh-c15 dd, .__PFX__-sh-c15 span { color: var(--color_text); } +.__PFX__-sh-c15 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c15 .center { text-align:center; } +.__PFX__-sh-c15 .underline { height:2px; width:90px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c16 { padding: 32px 0; } +.__PFX__-sh-c16 h1, .__PFX__-sh-c16 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c16 p, .__PFX__-sh-c16 small, .__PFX__-sh-c16 li, .__PFX__-sh-c16 dt, .__PFX__-sh-c16 dd, .__PFX__-sh-c16 span { color: var(--color_text); } +.__PFX__-sh-c16 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c16 .center { text-align:center; } +.__PFX__-sh-c16 .underline { height:2px; width:92px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c17 { padding: 33px 0; } +.__PFX__-sh-c17 h1, .__PFX__-sh-c17 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c17 p, .__PFX__-sh-c17 small, .__PFX__-sh-c17 li, .__PFX__-sh-c17 dt, .__PFX__-sh-c17 dd, .__PFX__-sh-c17 span { color: var(--color_text); } +.__PFX__-sh-c17 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c17 .center { text-align:center; } +.__PFX__-sh-c17 .underline { height:2px; width:94px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c18 { padding: 34px 0; } +.__PFX__-sh-c18 h1, .__PFX__-sh-c18 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c18 p, .__PFX__-sh-c18 small, .__PFX__-sh-c18 li, .__PFX__-sh-c18 dt, .__PFX__-sh-c18 dd, .__PFX__-sh-c18 span { color: var(--color_text); } +.__PFX__-sh-c18 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c18 .center { text-align:center; } +.__PFX__-sh-c18 .underline { height:2px; width:96px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-sh-c19 { padding: 35px 0; } +.__PFX__-sh-c19 h1, .__PFX__-sh-c19 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-c19 p, .__PFX__-sh-c19 small, .__PFX__-sh-c19 li, .__PFX__-sh-c19 dt, .__PFX__-sh-c19 dd, .__PFX__-sh-c19 span { color: var(--color_text); } +.__PFX__-sh-c19 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-c19 .center { text-align:center; } +.__PFX__-sh-c19 .underline { height:2px; width:98px; margin:10px auto 0; background:var(--color_border); border-radius:999px; } +.__PFX__-k { padding: 0 4px; border-radius: 6px; border: 1px solid var(--color_border); background: var(--color_bg); } +.__PFX__-k.is-pill { border-radius: 999px; padding: 2px 10px; } +.__PFX__-k.is-tag { border-radius: 10px; padding: 2px 8px; } +.__PFX__-k.is-accent { box-shadow: 0 0 0 1px var(--color_border) inset; } diff --git a/code/public/static/css/modules/search/search_header_media.css b/code/public/static/css/modules/search/search_header_media.css new file mode 100644 index 0000000..faa601b --- /dev/null +++ b/code/public/static/css/modules/search/search_header_media.css @@ -0,0 +1,125 @@ +/* Search Header v4 - media isolated */ +.__PFX__-sh-m0 { padding: 16px 0; } +.__PFX__-sh-m0 h1, .__PFX__-sh-m0 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m0 p, .__PFX__-sh-m0 small, .__PFX__-sh-m0 li, .__PFX__-sh-m0 dt, .__PFX__-sh-m0 dd, .__PFX__-sh-m0 span { color: var(--color_text); } +.__PFX__-sh-m0 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m0 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:12px; background:var(--color_bg); } +.__PFX__-sh-m0 .badge, .__PFX__-sh-m0 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m1 { padding: 17px 0; } +.__PFX__-sh-m1 h1, .__PFX__-sh-m1 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m1 p, .__PFX__-sh-m1 small, .__PFX__-sh-m1 li, .__PFX__-sh-m1 dt, .__PFX__-sh-m1 dd, .__PFX__-sh-m1 span { color: var(--color_text); } +.__PFX__-sh-m1 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m1 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-m1 .badge, .__PFX__-sh-m1 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m2 { padding: 18px 0; } +.__PFX__-sh-m2 h1, .__PFX__-sh-m2 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m2 p, .__PFX__-sh-m2 small, .__PFX__-sh-m2 li, .__PFX__-sh-m2 dt, .__PFX__-sh-m2 dd, .__PFX__-sh-m2 span { color: var(--color_text); } +.__PFX__-sh-m2 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m2 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:16px; background:var(--color_bg); } +.__PFX__-sh-m2 .badge, .__PFX__-sh-m2 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m3 { padding: 19px 0; } +.__PFX__-sh-m3 h1, .__PFX__-sh-m3 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m3 p, .__PFX__-sh-m3 small, .__PFX__-sh-m3 li, .__PFX__-sh-m3 dt, .__PFX__-sh-m3 dd, .__PFX__-sh-m3 span { color: var(--color_text); } +.__PFX__-sh-m3 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m3 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:18px; background:var(--color_bg); } +.__PFX__-sh-m3 .badge, .__PFX__-sh-m3 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m4 { padding: 20px 0; } +.__PFX__-sh-m4 h1, .__PFX__-sh-m4 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m4 p, .__PFX__-sh-m4 small, .__PFX__-sh-m4 li, .__PFX__-sh-m4 dt, .__PFX__-sh-m4 dd, .__PFX__-sh-m4 span { color: var(--color_text); } +.__PFX__-sh-m4 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m4 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:12px; background:var(--color_bg); } +.__PFX__-sh-m4 .badge, .__PFX__-sh-m4 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m5 { padding: 21px 0; } +.__PFX__-sh-m5 h1, .__PFX__-sh-m5 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m5 p, .__PFX__-sh-m5 small, .__PFX__-sh-m5 li, .__PFX__-sh-m5 dt, .__PFX__-sh-m5 dd, .__PFX__-sh-m5 span { color: var(--color_text); } +.__PFX__-sh-m5 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m5 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-m5 .badge, .__PFX__-sh-m5 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m6 { padding: 22px 0; } +.__PFX__-sh-m6 h1, .__PFX__-sh-m6 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m6 p, .__PFX__-sh-m6 small, .__PFX__-sh-m6 li, .__PFX__-sh-m6 dt, .__PFX__-sh-m6 dd, .__PFX__-sh-m6 span { color: var(--color_text); } +.__PFX__-sh-m6 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m6 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:16px; background:var(--color_bg); } +.__PFX__-sh-m6 .badge, .__PFX__-sh-m6 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m7 { padding: 23px 0; } +.__PFX__-sh-m7 h1, .__PFX__-sh-m7 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m7 p, .__PFX__-sh-m7 small, .__PFX__-sh-m7 li, .__PFX__-sh-m7 dt, .__PFX__-sh-m7 dd, .__PFX__-sh-m7 span { color: var(--color_text); } +.__PFX__-sh-m7 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m7 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:18px; background:var(--color_bg); } +.__PFX__-sh-m7 .badge, .__PFX__-sh-m7 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m8 { padding: 24px 0; } +.__PFX__-sh-m8 h1, .__PFX__-sh-m8 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m8 p, .__PFX__-sh-m8 small, .__PFX__-sh-m8 li, .__PFX__-sh-m8 dt, .__PFX__-sh-m8 dd, .__PFX__-sh-m8 span { color: var(--color_text); } +.__PFX__-sh-m8 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m8 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:12px; background:var(--color_bg); } +.__PFX__-sh-m8 .badge, .__PFX__-sh-m8 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m9 { padding: 25px 0; } +.__PFX__-sh-m9 h1, .__PFX__-sh-m9 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m9 p, .__PFX__-sh-m9 small, .__PFX__-sh-m9 li, .__PFX__-sh-m9 dt, .__PFX__-sh-m9 dd, .__PFX__-sh-m9 span { color: var(--color_text); } +.__PFX__-sh-m9 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m9 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-m9 .badge, .__PFX__-sh-m9 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m10 { padding: 26px 0; } +.__PFX__-sh-m10 h1, .__PFX__-sh-m10 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m10 p, .__PFX__-sh-m10 small, .__PFX__-sh-m10 li, .__PFX__-sh-m10 dt, .__PFX__-sh-m10 dd, .__PFX__-sh-m10 span { color: var(--color_text); } +.__PFX__-sh-m10 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m10 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:16px; background:var(--color_bg); } +.__PFX__-sh-m10 .badge, .__PFX__-sh-m10 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m11 { padding: 27px 0; } +.__PFX__-sh-m11 h1, .__PFX__-sh-m11 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m11 p, .__PFX__-sh-m11 small, .__PFX__-sh-m11 li, .__PFX__-sh-m11 dt, .__PFX__-sh-m11 dd, .__PFX__-sh-m11 span { color: var(--color_text); } +.__PFX__-sh-m11 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m11 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:18px; background:var(--color_bg); } +.__PFX__-sh-m11 .badge, .__PFX__-sh-m11 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m12 { padding: 28px 0; } +.__PFX__-sh-m12 h1, .__PFX__-sh-m12 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m12 p, .__PFX__-sh-m12 small, .__PFX__-sh-m12 li, .__PFX__-sh-m12 dt, .__PFX__-sh-m12 dd, .__PFX__-sh-m12 span { color: var(--color_text); } +.__PFX__-sh-m12 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m12 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:12px; background:var(--color_bg); } +.__PFX__-sh-m12 .badge, .__PFX__-sh-m12 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m13 { padding: 29px 0; } +.__PFX__-sh-m13 h1, .__PFX__-sh-m13 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m13 p, .__PFX__-sh-m13 small, .__PFX__-sh-m13 li, .__PFX__-sh-m13 dt, .__PFX__-sh-m13 dd, .__PFX__-sh-m13 span { color: var(--color_text); } +.__PFX__-sh-m13 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m13 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-m13 .badge, .__PFX__-sh-m13 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m14 { padding: 30px 0; } +.__PFX__-sh-m14 h1, .__PFX__-sh-m14 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m14 p, .__PFX__-sh-m14 small, .__PFX__-sh-m14 li, .__PFX__-sh-m14 dt, .__PFX__-sh-m14 dd, .__PFX__-sh-m14 span { color: var(--color_text); } +.__PFX__-sh-m14 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m14 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:16px; background:var(--color_bg); } +.__PFX__-sh-m14 .badge, .__PFX__-sh-m14 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m15 { padding: 31px 0; } +.__PFX__-sh-m15 h1, .__PFX__-sh-m15 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m15 p, .__PFX__-sh-m15 small, .__PFX__-sh-m15 li, .__PFX__-sh-m15 dt, .__PFX__-sh-m15 dd, .__PFX__-sh-m15 span { color: var(--color_text); } +.__PFX__-sh-m15 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m15 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:18px; background:var(--color_bg); } +.__PFX__-sh-m15 .badge, .__PFX__-sh-m15 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m16 { padding: 32px 0; } +.__PFX__-sh-m16 h1, .__PFX__-sh-m16 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m16 p, .__PFX__-sh-m16 small, .__PFX__-sh-m16 li, .__PFX__-sh-m16 dt, .__PFX__-sh-m16 dd, .__PFX__-sh-m16 span { color: var(--color_text); } +.__PFX__-sh-m16 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m16 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:12px; background:var(--color_bg); } +.__PFX__-sh-m16 .badge, .__PFX__-sh-m16 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m17 { padding: 33px 0; } +.__PFX__-sh-m17 h1, .__PFX__-sh-m17 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m17 p, .__PFX__-sh-m17 small, .__PFX__-sh-m17 li, .__PFX__-sh-m17 dt, .__PFX__-sh-m17 dd, .__PFX__-sh-m17 span { color: var(--color_text); } +.__PFX__-sh-m17 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m17 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-m17 .badge, .__PFX__-sh-m17 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m18 { padding: 34px 0; } +.__PFX__-sh-m18 h1, .__PFX__-sh-m18 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m18 p, .__PFX__-sh-m18 small, .__PFX__-sh-m18 li, .__PFX__-sh-m18 dt, .__PFX__-sh-m18 dd, .__PFX__-sh-m18 span { color: var(--color_text); } +.__PFX__-sh-m18 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m18 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:16px; background:var(--color_bg); } +.__PFX__-sh-m18 .badge, .__PFX__-sh-m18 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-sh-m19 { padding: 35px 0; } +.__PFX__-sh-m19 h1, .__PFX__-sh-m19 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-m19 p, .__PFX__-sh-m19 small, .__PFX__-sh-m19 li, .__PFX__-sh-m19 dt, .__PFX__-sh-m19 dd, .__PFX__-sh-m19 span { color: var(--color_text); } +.__PFX__-sh-m19 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-m19 figure { margin:0; padding:12px 14px; border:1px solid var(--color_border); border-radius:18px; background:var(--color_bg); } +.__PFX__-sh-m19 .badge, .__PFX__-sh-m19 .ribbon { display:inline-block; padding:4px 8px; border:1px solid var(--color_border); border-radius:999px; background:var(--color_bg); } +.__PFX__-k { padding: 0 4px; border-radius: 6px; border: 1px solid var(--color_border); background: var(--color_bg); } +.__PFX__-k.is-pill { border-radius: 999px; padding: 2px 10px; } +.__PFX__-k.is-tag { border-radius: 10px; padding: 2px 8px; } +.__PFX__-k.is-accent { box-shadow: 0 0 0 1px var(--color_border) inset; } diff --git a/code/public/static/css/modules/search/search_header_rich.css b/code/public/static/css/modules/search/search_header_rich.css new file mode 100644 index 0000000..33d24a9 --- /dev/null +++ b/code/public/static/css/modules/search/search_header_rich.css @@ -0,0 +1,105 @@ +/* Search Header v4 - rich isolated */ +.__PFX__-sh-r0 { padding: 16px 0; } +.__PFX__-sh-r0 h1, .__PFX__-sh-r0 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r0 p, .__PFX__-sh-r0 small, .__PFX__-sh-r0 li, .__PFX__-sh-r0 dt, .__PFX__-sh-r0 dd, .__PFX__-sh-r0 span { color: var(--color_text); } +.__PFX__-sh-r0 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r0 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r1 { padding: 17px 0; } +.__PFX__-sh-r1 h1, .__PFX__-sh-r1 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r1 p, .__PFX__-sh-r1 small, .__PFX__-sh-r1 li, .__PFX__-sh-r1 dt, .__PFX__-sh-r1 dd, .__PFX__-sh-r1 span { color: var(--color_text); } +.__PFX__-sh-r1 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r1 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r2 { padding: 18px 0; } +.__PFX__-sh-r2 h1, .__PFX__-sh-r2 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r2 p, .__PFX__-sh-r2 small, .__PFX__-sh-r2 li, .__PFX__-sh-r2 dt, .__PFX__-sh-r2 dd, .__PFX__-sh-r2 span { color: var(--color_text); } +.__PFX__-sh-r2 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r2 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r3 { padding: 19px 0; } +.__PFX__-sh-r3 h1, .__PFX__-sh-r3 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r3 p, .__PFX__-sh-r3 small, .__PFX__-sh-r3 li, .__PFX__-sh-r3 dt, .__PFX__-sh-r3 dd, .__PFX__-sh-r3 span { color: var(--color_text); } +.__PFX__-sh-r3 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r3 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r4 { padding: 20px 0; } +.__PFX__-sh-r4 h1, .__PFX__-sh-r4 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r4 p, .__PFX__-sh-r4 small, .__PFX__-sh-r4 li, .__PFX__-sh-r4 dt, .__PFX__-sh-r4 dd, .__PFX__-sh-r4 span { color: var(--color_text); } +.__PFX__-sh-r4 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r4 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r5 { padding: 21px 0; } +.__PFX__-sh-r5 h1, .__PFX__-sh-r5 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r5 p, .__PFX__-sh-r5 small, .__PFX__-sh-r5 li, .__PFX__-sh-r5 dt, .__PFX__-sh-r5 dd, .__PFX__-sh-r5 span { color: var(--color_text); } +.__PFX__-sh-r5 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r5 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r6 { padding: 22px 0; } +.__PFX__-sh-r6 h1, .__PFX__-sh-r6 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r6 p, .__PFX__-sh-r6 small, .__PFX__-sh-r6 li, .__PFX__-sh-r6 dt, .__PFX__-sh-r6 dd, .__PFX__-sh-r6 span { color: var(--color_text); } +.__PFX__-sh-r6 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r6 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r7 { padding: 23px 0; } +.__PFX__-sh-r7 h1, .__PFX__-sh-r7 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r7 p, .__PFX__-sh-r7 small, .__PFX__-sh-r7 li, .__PFX__-sh-r7 dt, .__PFX__-sh-r7 dd, .__PFX__-sh-r7 span { color: var(--color_text); } +.__PFX__-sh-r7 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r7 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r8 { padding: 24px 0; } +.__PFX__-sh-r8 h1, .__PFX__-sh-r8 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r8 p, .__PFX__-sh-r8 small, .__PFX__-sh-r8 li, .__PFX__-sh-r8 dt, .__PFX__-sh-r8 dd, .__PFX__-sh-r8 span { color: var(--color_text); } +.__PFX__-sh-r8 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r8 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r9 { padding: 25px 0; } +.__PFX__-sh-r9 h1, .__PFX__-sh-r9 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r9 p, .__PFX__-sh-r9 small, .__PFX__-sh-r9 li, .__PFX__-sh-r9 dt, .__PFX__-sh-r9 dd, .__PFX__-sh-r9 span { color: var(--color_text); } +.__PFX__-sh-r9 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r9 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r10 { padding: 26px 0; } +.__PFX__-sh-r10 h1, .__PFX__-sh-r10 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r10 p, .__PFX__-sh-r10 small, .__PFX__-sh-r10 li, .__PFX__-sh-r10 dt, .__PFX__-sh-r10 dd, .__PFX__-sh-r10 span { color: var(--color_text); } +.__PFX__-sh-r10 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r10 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r11 { padding: 27px 0; } +.__PFX__-sh-r11 h1, .__PFX__-sh-r11 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r11 p, .__PFX__-sh-r11 small, .__PFX__-sh-r11 li, .__PFX__-sh-r11 dt, .__PFX__-sh-r11 dd, .__PFX__-sh-r11 span { color: var(--color_text); } +.__PFX__-sh-r11 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r11 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r12 { padding: 28px 0; } +.__PFX__-sh-r12 h1, .__PFX__-sh-r12 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r12 p, .__PFX__-sh-r12 small, .__PFX__-sh-r12 li, .__PFX__-sh-r12 dt, .__PFX__-sh-r12 dd, .__PFX__-sh-r12 span { color: var(--color_text); } +.__PFX__-sh-r12 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r12 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r13 { padding: 29px 0; } +.__PFX__-sh-r13 h1, .__PFX__-sh-r13 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r13 p, .__PFX__-sh-r13 small, .__PFX__-sh-r13 li, .__PFX__-sh-r13 dt, .__PFX__-sh-r13 dd, .__PFX__-sh-r13 span { color: var(--color_text); } +.__PFX__-sh-r13 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r13 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r14 { padding: 30px 0; } +.__PFX__-sh-r14 h1, .__PFX__-sh-r14 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r14 p, .__PFX__-sh-r14 small, .__PFX__-sh-r14 li, .__PFX__-sh-r14 dt, .__PFX__-sh-r14 dd, .__PFX__-sh-r14 span { color: var(--color_text); } +.__PFX__-sh-r14 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r14 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r15 { padding: 31px 0; } +.__PFX__-sh-r15 h1, .__PFX__-sh-r15 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r15 p, .__PFX__-sh-r15 small, .__PFX__-sh-r15 li, .__PFX__-sh-r15 dt, .__PFX__-sh-r15 dd, .__PFX__-sh-r15 span { color: var(--color_text); } +.__PFX__-sh-r15 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r15 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r16 { padding: 32px 0; } +.__PFX__-sh-r16 h1, .__PFX__-sh-r16 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r16 p, .__PFX__-sh-r16 small, .__PFX__-sh-r16 li, .__PFX__-sh-r16 dt, .__PFX__-sh-r16 dd, .__PFX__-sh-r16 span { color: var(--color_text); } +.__PFX__-sh-r16 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r16 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r17 { padding: 33px 0; } +.__PFX__-sh-r17 h1, .__PFX__-sh-r17 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r17 p, .__PFX__-sh-r17 small, .__PFX__-sh-r17 li, .__PFX__-sh-r17 dt, .__PFX__-sh-r17 dd, .__PFX__-sh-r17 span { color: var(--color_text); } +.__PFX__-sh-r17 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r17 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r18 { padding: 34px 0; } +.__PFX__-sh-r18 h1, .__PFX__-sh-r18 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r18 p, .__PFX__-sh-r18 small, .__PFX__-sh-r18 li, .__PFX__-sh-r18 dt, .__PFX__-sh-r18 dd, .__PFX__-sh-r18 span { color: var(--color_text); } +.__PFX__-sh-r18 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r18 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-sh-r19 { padding: 35px 0; } +.__PFX__-sh-r19 h1, .__PFX__-sh-r19 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-r19 p, .__PFX__-sh-r19 small, .__PFX__-sh-r19 li, .__PFX__-sh-r19 dt, .__PFX__-sh-r19 dd, .__PFX__-sh-r19 span { color: var(--color_text); } +.__PFX__-sh-r19 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-r19 .card { padding:10px 12px; border:1px solid var(--color_border); border-radius:14px; background:var(--color_bg); } +.__PFX__-k { padding: 0 4px; border-radius: 6px; border: 1px solid var(--color_border); background: var(--color_bg); } +.__PFX__-k.is-pill { border-radius: 999px; padding: 2px 10px; } +.__PFX__-k.is-tag { border-radius: 10px; padding: 2px 8px; } +.__PFX__-k.is-accent { box-shadow: 0 0 0 1px var(--color_border) inset; } diff --git a/code/public/static/css/modules/search/search_header_seo.css b/code/public/static/css/modules/search/search_header_seo.css new file mode 100644 index 0000000..f70b6c6 --- /dev/null +++ b/code/public/static/css/modules/search/search_header_seo.css @@ -0,0 +1,105 @@ +/* Search Header v4 - seo isolated */ +.__PFX__-sh-e0 { padding: 16px 0; } +.__PFX__-sh-e0 h1, .__PFX__-sh-e0 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e0 p, .__PFX__-sh-e0 small, .__PFX__-sh-e0 li, .__PFX__-sh-e0 dt, .__PFX__-sh-e0 dd, .__PFX__-sh-e0 span { color: var(--color_text); } +.__PFX__-sh-e0 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e0 .micro { font-size:12px; } +.__PFX__-sh-e1 { padding: 17px 0; } +.__PFX__-sh-e1 h1, .__PFX__-sh-e1 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e1 p, .__PFX__-sh-e1 small, .__PFX__-sh-e1 li, .__PFX__-sh-e1 dt, .__PFX__-sh-e1 dd, .__PFX__-sh-e1 span { color: var(--color_text); } +.__PFX__-sh-e1 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e1 .micro { font-size:12px; } +.__PFX__-sh-e2 { padding: 18px 0; } +.__PFX__-sh-e2 h1, .__PFX__-sh-e2 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e2 p, .__PFX__-sh-e2 small, .__PFX__-sh-e2 li, .__PFX__-sh-e2 dt, .__PFX__-sh-e2 dd, .__PFX__-sh-e2 span { color: var(--color_text); } +.__PFX__-sh-e2 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e2 .micro { font-size:12px; } +.__PFX__-sh-e3 { padding: 19px 0; } +.__PFX__-sh-e3 h1, .__PFX__-sh-e3 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e3 p, .__PFX__-sh-e3 small, .__PFX__-sh-e3 li, .__PFX__-sh-e3 dt, .__PFX__-sh-e3 dd, .__PFX__-sh-e3 span { color: var(--color_text); } +.__PFX__-sh-e3 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e3 .micro { font-size:12px; } +.__PFX__-sh-e4 { padding: 20px 0; } +.__PFX__-sh-e4 h1, .__PFX__-sh-e4 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e4 p, .__PFX__-sh-e4 small, .__PFX__-sh-e4 li, .__PFX__-sh-e4 dt, .__PFX__-sh-e4 dd, .__PFX__-sh-e4 span { color: var(--color_text); } +.__PFX__-sh-e4 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e4 .micro { font-size:12px; } +.__PFX__-sh-e5 { padding: 21px 0; } +.__PFX__-sh-e5 h1, .__PFX__-sh-e5 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e5 p, .__PFX__-sh-e5 small, .__PFX__-sh-e5 li, .__PFX__-sh-e5 dt, .__PFX__-sh-e5 dd, .__PFX__-sh-e5 span { color: var(--color_text); } +.__PFX__-sh-e5 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e5 .micro { font-size:12px; } +.__PFX__-sh-e6 { padding: 22px 0; } +.__PFX__-sh-e6 h1, .__PFX__-sh-e6 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e6 p, .__PFX__-sh-e6 small, .__PFX__-sh-e6 li, .__PFX__-sh-e6 dt, .__PFX__-sh-e6 dd, .__PFX__-sh-e6 span { color: var(--color_text); } +.__PFX__-sh-e6 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e6 .micro { font-size:12px; } +.__PFX__-sh-e7 { padding: 23px 0; } +.__PFX__-sh-e7 h1, .__PFX__-sh-e7 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e7 p, .__PFX__-sh-e7 small, .__PFX__-sh-e7 li, .__PFX__-sh-e7 dt, .__PFX__-sh-e7 dd, .__PFX__-sh-e7 span { color: var(--color_text); } +.__PFX__-sh-e7 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e7 .micro { font-size:12px; } +.__PFX__-sh-e8 { padding: 24px 0; } +.__PFX__-sh-e8 h1, .__PFX__-sh-e8 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e8 p, .__PFX__-sh-e8 small, .__PFX__-sh-e8 li, .__PFX__-sh-e8 dt, .__PFX__-sh-e8 dd, .__PFX__-sh-e8 span { color: var(--color_text); } +.__PFX__-sh-e8 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e8 .micro { font-size:12px; } +.__PFX__-sh-e9 { padding: 25px 0; } +.__PFX__-sh-e9 h1, .__PFX__-sh-e9 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e9 p, .__PFX__-sh-e9 small, .__PFX__-sh-e9 li, .__PFX__-sh-e9 dt, .__PFX__-sh-e9 dd, .__PFX__-sh-e9 span { color: var(--color_text); } +.__PFX__-sh-e9 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e9 .micro { font-size:12px; } +.__PFX__-sh-e10 { padding: 26px 0; } +.__PFX__-sh-e10 h1, .__PFX__-sh-e10 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e10 p, .__PFX__-sh-e10 small, .__PFX__-sh-e10 li, .__PFX__-sh-e10 dt, .__PFX__-sh-e10 dd, .__PFX__-sh-e10 span { color: var(--color_text); } +.__PFX__-sh-e10 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e10 .micro { font-size:12px; } +.__PFX__-sh-e11 { padding: 27px 0; } +.__PFX__-sh-e11 h1, .__PFX__-sh-e11 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e11 p, .__PFX__-sh-e11 small, .__PFX__-sh-e11 li, .__PFX__-sh-e11 dt, .__PFX__-sh-e11 dd, .__PFX__-sh-e11 span { color: var(--color_text); } +.__PFX__-sh-e11 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e11 .micro { font-size:12px; } +.__PFX__-sh-e12 { padding: 28px 0; } +.__PFX__-sh-e12 h1, .__PFX__-sh-e12 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e12 p, .__PFX__-sh-e12 small, .__PFX__-sh-e12 li, .__PFX__-sh-e12 dt, .__PFX__-sh-e12 dd, .__PFX__-sh-e12 span { color: var(--color_text); } +.__PFX__-sh-e12 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e12 .micro { font-size:12px; } +.__PFX__-sh-e13 { padding: 29px 0; } +.__PFX__-sh-e13 h1, .__PFX__-sh-e13 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e13 p, .__PFX__-sh-e13 small, .__PFX__-sh-e13 li, .__PFX__-sh-e13 dt, .__PFX__-sh-e13 dd, .__PFX__-sh-e13 span { color: var(--color_text); } +.__PFX__-sh-e13 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e13 .micro { font-size:12px; } +.__PFX__-sh-e14 { padding: 30px 0; } +.__PFX__-sh-e14 h1, .__PFX__-sh-e14 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e14 p, .__PFX__-sh-e14 small, .__PFX__-sh-e14 li, .__PFX__-sh-e14 dt, .__PFX__-sh-e14 dd, .__PFX__-sh-e14 span { color: var(--color_text); } +.__PFX__-sh-e14 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e14 .micro { font-size:12px; } +.__PFX__-sh-e15 { padding: 31px 0; } +.__PFX__-sh-e15 h1, .__PFX__-sh-e15 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e15 p, .__PFX__-sh-e15 small, .__PFX__-sh-e15 li, .__PFX__-sh-e15 dt, .__PFX__-sh-e15 dd, .__PFX__-sh-e15 span { color: var(--color_text); } +.__PFX__-sh-e15 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e15 .micro { font-size:12px; } +.__PFX__-sh-e16 { padding: 32px 0; } +.__PFX__-sh-e16 h1, .__PFX__-sh-e16 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e16 p, .__PFX__-sh-e16 small, .__PFX__-sh-e16 li, .__PFX__-sh-e16 dt, .__PFX__-sh-e16 dd, .__PFX__-sh-e16 span { color: var(--color_text); } +.__PFX__-sh-e16 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e16 .micro { font-size:12px; } +.__PFX__-sh-e17 { padding: 33px 0; } +.__PFX__-sh-e17 h1, .__PFX__-sh-e17 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e17 p, .__PFX__-sh-e17 small, .__PFX__-sh-e17 li, .__PFX__-sh-e17 dt, .__PFX__-sh-e17 dd, .__PFX__-sh-e17 span { color: var(--color_text); } +.__PFX__-sh-e17 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e17 .micro { font-size:12px; } +.__PFX__-sh-e18 { padding: 34px 0; } +.__PFX__-sh-e18 h1, .__PFX__-sh-e18 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e18 p, .__PFX__-sh-e18 small, .__PFX__-sh-e18 li, .__PFX__-sh-e18 dt, .__PFX__-sh-e18 dd, .__PFX__-sh-e18 span { color: var(--color_text); } +.__PFX__-sh-e18 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e18 .micro { font-size:12px; } +.__PFX__-sh-e19 { padding: 35px 0; } +.__PFX__-sh-e19 h1, .__PFX__-sh-e19 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-e19 p, .__PFX__-sh-e19 small, .__PFX__-sh-e19 li, .__PFX__-sh-e19 dt, .__PFX__-sh-e19 dd, .__PFX__-sh-e19 span { color: var(--color_text); } +.__PFX__-sh-e19 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-e19 .micro { font-size:12px; } +.__PFX__-k { padding: 0 4px; border-radius: 6px; border: 1px solid var(--color_border); background: var(--color_bg); } +.__PFX__-k.is-pill { border-radius: 999px; padding: 2px 10px; } +.__PFX__-k.is-tag { border-radius: 10px; padding: 2px 8px; } +.__PFX__-k.is-accent { box-shadow: 0 0 0 1px var(--color_border) inset; } diff --git a/code/public/static/css/modules/search/search_header_simple.css b/code/public/static/css/modules/search/search_header_simple.css new file mode 100644 index 0000000..98b2990 --- /dev/null +++ b/code/public/static/css/modules/search/search_header_simple.css @@ -0,0 +1,125 @@ +/* Search Header v4 - simple isolated */ +.__PFX__-sh-s0 { padding: 16px 0; } +.__PFX__-sh-s0 h1, .__PFX__-sh-s0 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s0 p, .__PFX__-sh-s0 small, .__PFX__-sh-s0 li, .__PFX__-sh-s0 dt, .__PFX__-sh-s0 dd, .__PFX__-sh-s0 span { color: var(--color_text); } +.__PFX__-sh-s0 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s0 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s0 .bar { height:3px; width:54px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s1 { padding: 17px 0; } +.__PFX__-sh-s1 h1, .__PFX__-sh-s1 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s1 p, .__PFX__-sh-s1 small, .__PFX__-sh-s1 li, .__PFX__-sh-s1 dt, .__PFX__-sh-s1 dd, .__PFX__-sh-s1 span { color: var(--color_text); } +.__PFX__-sh-s1 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s1 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s1 .bar { height:3px; width:55px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s2 { padding: 18px 0; } +.__PFX__-sh-s2 h1, .__PFX__-sh-s2 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s2 p, .__PFX__-sh-s2 small, .__PFX__-sh-s2 li, .__PFX__-sh-s2 dt, .__PFX__-sh-s2 dd, .__PFX__-sh-s2 span { color: var(--color_text); } +.__PFX__-sh-s2 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s2 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s2 .bar { height:3px; width:56px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s3 { padding: 19px 0; } +.__PFX__-sh-s3 h1, .__PFX__-sh-s3 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s3 p, .__PFX__-sh-s3 small, .__PFX__-sh-s3 li, .__PFX__-sh-s3 dt, .__PFX__-sh-s3 dd, .__PFX__-sh-s3 span { color: var(--color_text); } +.__PFX__-sh-s3 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s3 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s3 .bar { height:3px; width:57px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s4 { padding: 20px 0; } +.__PFX__-sh-s4 h1, .__PFX__-sh-s4 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s4 p, .__PFX__-sh-s4 small, .__PFX__-sh-s4 li, .__PFX__-sh-s4 dt, .__PFX__-sh-s4 dd, .__PFX__-sh-s4 span { color: var(--color_text); } +.__PFX__-sh-s4 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s4 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s4 .bar { height:3px; width:58px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s5 { padding: 21px 0; } +.__PFX__-sh-s5 h1, .__PFX__-sh-s5 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s5 p, .__PFX__-sh-s5 small, .__PFX__-sh-s5 li, .__PFX__-sh-s5 dt, .__PFX__-sh-s5 dd, .__PFX__-sh-s5 span { color: var(--color_text); } +.__PFX__-sh-s5 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s5 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s5 .bar { height:3px; width:59px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s6 { padding: 22px 0; } +.__PFX__-sh-s6 h1, .__PFX__-sh-s6 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s6 p, .__PFX__-sh-s6 small, .__PFX__-sh-s6 li, .__PFX__-sh-s6 dt, .__PFX__-sh-s6 dd, .__PFX__-sh-s6 span { color: var(--color_text); } +.__PFX__-sh-s6 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s6 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s6 .bar { height:3px; width:60px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s7 { padding: 23px 0; } +.__PFX__-sh-s7 h1, .__PFX__-sh-s7 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s7 p, .__PFX__-sh-s7 small, .__PFX__-sh-s7 li, .__PFX__-sh-s7 dt, .__PFX__-sh-s7 dd, .__PFX__-sh-s7 span { color: var(--color_text); } +.__PFX__-sh-s7 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s7 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s7 .bar { height:3px; width:61px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s8 { padding: 24px 0; } +.__PFX__-sh-s8 h1, .__PFX__-sh-s8 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s8 p, .__PFX__-sh-s8 small, .__PFX__-sh-s8 li, .__PFX__-sh-s8 dt, .__PFX__-sh-s8 dd, .__PFX__-sh-s8 span { color: var(--color_text); } +.__PFX__-sh-s8 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s8 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s8 .bar { height:3px; width:62px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s9 { padding: 25px 0; } +.__PFX__-sh-s9 h1, .__PFX__-sh-s9 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s9 p, .__PFX__-sh-s9 small, .__PFX__-sh-s9 li, .__PFX__-sh-s9 dt, .__PFX__-sh-s9 dd, .__PFX__-sh-s9 span { color: var(--color_text); } +.__PFX__-sh-s9 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s9 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s9 .bar { height:3px; width:63px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s10 { padding: 26px 0; } +.__PFX__-sh-s10 h1, .__PFX__-sh-s10 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s10 p, .__PFX__-sh-s10 small, .__PFX__-sh-s10 li, .__PFX__-sh-s10 dt, .__PFX__-sh-s10 dd, .__PFX__-sh-s10 span { color: var(--color_text); } +.__PFX__-sh-s10 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s10 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s10 .bar { height:3px; width:64px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s11 { padding: 27px 0; } +.__PFX__-sh-s11 h1, .__PFX__-sh-s11 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s11 p, .__PFX__-sh-s11 small, .__PFX__-sh-s11 li, .__PFX__-sh-s11 dt, .__PFX__-sh-s11 dd, .__PFX__-sh-s11 span { color: var(--color_text); } +.__PFX__-sh-s11 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s11 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s11 .bar { height:3px; width:65px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s12 { padding: 28px 0; } +.__PFX__-sh-s12 h1, .__PFX__-sh-s12 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s12 p, .__PFX__-sh-s12 small, .__PFX__-sh-s12 li, .__PFX__-sh-s12 dt, .__PFX__-sh-s12 dd, .__PFX__-sh-s12 span { color: var(--color_text); } +.__PFX__-sh-s12 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s12 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s12 .bar { height:3px; width:66px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s13 { padding: 29px 0; } +.__PFX__-sh-s13 h1, .__PFX__-sh-s13 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s13 p, .__PFX__-sh-s13 small, .__PFX__-sh-s13 li, .__PFX__-sh-s13 dt, .__PFX__-sh-s13 dd, .__PFX__-sh-s13 span { color: var(--color_text); } +.__PFX__-sh-s13 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s13 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s13 .bar { height:3px; width:67px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s14 { padding: 30px 0; } +.__PFX__-sh-s14 h1, .__PFX__-sh-s14 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s14 p, .__PFX__-sh-s14 small, .__PFX__-sh-s14 li, .__PFX__-sh-s14 dt, .__PFX__-sh-s14 dd, .__PFX__-sh-s14 span { color: var(--color_text); } +.__PFX__-sh-s14 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s14 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s14 .bar { height:3px; width:68px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s15 { padding: 31px 0; } +.__PFX__-sh-s15 h1, .__PFX__-sh-s15 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s15 p, .__PFX__-sh-s15 small, .__PFX__-sh-s15 li, .__PFX__-sh-s15 dt, .__PFX__-sh-s15 dd, .__PFX__-sh-s15 span { color: var(--color_text); } +.__PFX__-sh-s15 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s15 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s15 .bar { height:3px; width:69px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s16 { padding: 32px 0; } +.__PFX__-sh-s16 h1, .__PFX__-sh-s16 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s16 p, .__PFX__-sh-s16 small, .__PFX__-sh-s16 li, .__PFX__-sh-s16 dt, .__PFX__-sh-s16 dd, .__PFX__-sh-s16 span { color: var(--color_text); } +.__PFX__-sh-s16 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s16 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s16 .bar { height:3px; width:70px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s17 { padding: 33px 0; } +.__PFX__-sh-s17 h1, .__PFX__-sh-s17 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s17 p, .__PFX__-sh-s17 small, .__PFX__-sh-s17 li, .__PFX__-sh-s17 dt, .__PFX__-sh-s17 dd, .__PFX__-sh-s17 span { color: var(--color_text); } +.__PFX__-sh-s17 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s17 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s17 .bar { height:3px; width:71px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s18 { padding: 34px 0; } +.__PFX__-sh-s18 h1, .__PFX__-sh-s18 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s18 p, .__PFX__-sh-s18 small, .__PFX__-sh-s18 li, .__PFX__-sh-s18 dt, .__PFX__-sh-s18 dd, .__PFX__-sh-s18 span { color: var(--color_text); } +.__PFX__-sh-s18 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s18 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s18 .bar { height:3px; width:72px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-sh-s19 { padding: 35px 0; } +.__PFX__-sh-s19 h1, .__PFX__-sh-s19 h2 { margin:0; line-height:1.25; color: var(--color_primary); } +.__PFX__-sh-s19 p, .__PFX__-sh-s19 small, .__PFX__-sh-s19 li, .__PFX__-sh-s19 dt, .__PFX__-sh-s19 dd, .__PFX__-sh-s19 span { color: var(--color_text); } +.__PFX__-sh-s19 hr { border:0; border-top:1px solid var(--color_border); margin:10px 0 0; } +.__PFX__-sh-s19 .lead { font-size:12px; letter-spacing:.12em; } +.__PFX__-sh-s19 .bar { height:3px; width:73px; background:var(--color_border); border-radius:999px; margin-top:10px; } +.__PFX__-k { padding: 0 4px; border-radius: 6px; border: 1px solid var(--color_border); background: var(--color_bg); } +.__PFX__-k.is-pill { border-radius: 999px; padding: 2px 10px; } +.__PFX__-k.is-tag { border-radius: 10px; padding: 2px 8px; } +.__PFX__-k.is-accent { box-shadow: 0 0 0 1px var(--color_border) inset; } diff --git a/code/public/static/css/modules/seowords/layout/layout_A.css b/code/public/static/css/modules/seowords/layout/layout_A.css new file mode 100644 index 0000000..f6b4831 --- /dev/null +++ b/code/public/static/css/modules/seowords/layout/layout_A.css @@ -0,0 +1,47 @@ +/* ================= SeoWords Layout A ================= */ + +.__PFX__-sw-a{ + margin:12px 0; + font-size:13px; + line-height:1.8; + color:var(--text-muted-color); +} + +.__PFX__-sw-a a{ + color:var(--text-muted-color); + text-decoration:none; +} + +.__PFX__-sw-a strong, +.__PFX__-sw-a em, +.__PFX__-sw-a mark{ + font-style:normal; + font-weight:500; + background:none; + color:var(--text-color); +} + +.__PFX__-sw-inline{ + display:flex; + flex-wrap:wrap; + gap:6px; + list-style:none; + padding:0; + margin:0; +} + +.__PFX__-sw-inline li::after{ + content:"、"; +} + +.__PFX__-sw-inline li:last-child::after{ + content:""; +} + +.__PFX__-sw-a.compact{ + font-size:12px; +} + +.__PFX__-sw-a.seo{ + font-weight:500; +} diff --git a/code/public/static/css/modules/seowords/layout/layout_B.css b/code/public/static/css/modules/seowords/layout/layout_B.css new file mode 100644 index 0000000..6c0858a --- /dev/null +++ b/code/public/static/css/modules/seowords/layout/layout_B.css @@ -0,0 +1,65 @@ +/* ================= SeoWords Layout B ================= */ + +.__PFX__-sw-b{ + margin:16px 0; + padding:12px; + background:var(--bg-soft-color); + border-radius:8px; + font-size:13px; + line-height:1.7; +} + +.__PFX__-sw-b a{ + color:var(--text-color); + text-decoration:none; +} + +/* card */ +.__PFX__-sw-card{ + list-style:none; + display:flex; + flex-wrap:wrap; + gap:8px; + padding:0; + margin:0; +} +.__PFX__-sw-card li{ + padding:6px 10px; + background:var(--bg-color); + border-radius:6px; +} + +/* cloud */ +.__PFX__-sw-cloud .tag{ + display:inline-block; + padding:4px 10px; + margin:4px; + background:var(--bg-color); + border-radius:999px; + font-size:12px; +} + +/* grid */ +.__PFX__-sw-grid{ + display:grid; + grid-template-columns:repeat(auto-fill,minmax(120px,1fr)); + gap:10px; +} + +/* badge */ +.__PFX__-sw-badge .badge{ + display:inline-block; + padding:4px 8px; + margin:3px; + background:var(--bg-color); + border-radius:4px; +} + +/* compact / seo */ +.__PFX__-sw-b.compact{ + padding:10px; + font-size:12px; +} +.__PFX__-sw-b.seo{ + font-weight:500; +} diff --git a/code/public/static/css/modules/seowords/layout/layout_C.css b/code/public/static/css/modules/seowords/layout/layout_C.css new file mode 100644 index 0000000..4a3c485 --- /dev/null +++ b/code/public/static/css/modules/seowords/layout/layout_C.css @@ -0,0 +1,46 @@ +/* ================= SeoWords Layout C ================= */ + +.__PFX__-sw-c{ + margin:14px 0; + font-size:14px; + line-height:1.9; + color:var(--text-color); +} + +.__PFX__-sw-c p{ + margin:6px 0; +} + +.__PFX__-sw-c a{ + color:var(--text-color); + text-decoration:none; +} + +.__PFX__-sw-c strong, +.__PFX__-sw-c em, +.__PFX__-sw-c mark{ + font-style:normal; + font-weight:500; + background:none; + color:var(--primary-color); +} + +.__PFX__-sw-c small{ + font-size:12px; + color:var(--text-muted-color); +} + +.__PFX__-sw-c blockquote{ + margin:8px 0; + padding-left:12px; + border-left:3px solid var(--border-color); + color:var(--text-muted-color); +} + +.__PFX__-sw-c.compact{ + font-size:13px; +} + +.__PFX__-sw-c.seo{ + font-weight:400; +} diff --git a/code/public/static/css/modules/seowords/layout/layout_D.css b/code/public/static/css/modules/seowords/layout/layout_D.css new file mode 100644 index 0000000..f79ffe8 --- /dev/null +++ b/code/public/static/css/modules/seowords/layout/layout_D.css @@ -0,0 +1,51 @@ +/* ================= SeoWords Layout D ================= */ + +.__PFX__-sw-d{ + margin:16px 0; + padding:12px; + border:1px solid var(--border-color); + background:var(--bg-soft-color); +} + +.__PFX__-sw-d a{ + margin-right:8px; + color:var(--text-color); + text-decoration:none; + white-space:nowrap; +} + +.__PFX__-sw-box h4, +.__PFX__-sw-box h5{ + margin:0 0 8px; + font-size:14px; +} + +.__PFX__-sw-cloud a{ + display:inline-block; + margin:4px 6px; + font-size:13px; +} + +.__PFX__-sw-grid{ + display:grid; + grid-template-columns:repeat(2,1fr); + gap:6px; +} + +.__PFX__-sw-ul, +.__PFX__-sw-ol{ + padding-left:18px; +} + +.__PFX__-sw-footer{ + font-size:12px; + color:var(--text-muted-color); +} + +.__PFX__-sw-box.shadow{ + box-shadow:0 2px 6px var(--shadow-color); +} + +.__PFX__-sw-d.compact{ + padding:8px; +} diff --git a/code/public/static/css/modules/seowords/seowords.css b/code/public/static/css/modules/seowords/seowords.css new file mode 100644 index 0000000..e98aadd --- /dev/null +++ b/code/public/static/css/modules/seowords/seowords.css @@ -0,0 +1,38 @@ +.__PFX__-seowords { + margin: 16px 0; + font-size: 14px; + line-height: 1.8; + color: var(--text-muted-color); +} + +.__PFX__-seowords a { + color: var(--text-color); + text-decoration: none; + margin-right: 6px; +} + +.__PFX__-seowords a:hover { + color: var(--primary-color); + text-decoration: underline; +} + +/* Family B */ +.__PFX__-seowords.B .__PFX__-seowords-list { + display: flex; + flex-wrap: wrap; + gap: 6px 12px; + list-style: none; + padding: 0; + margin: 0; +} + +/* Family C */ +.__PFX__-seowords.C .__PFX__-seowords-label { + margin-right: 6px; + color: var(--text-muted-color); +} + +/* Family D */ +.__PFX__-seowords.D .__PFX__-seowords-paragraph { + margin: 0; +} diff --git a/code/public/static/css/modules/trending/trending_01.css b/code/public/static/css/modules/trending/trending_01.css new file mode 100644 index 0000000..d14e56d --- /dev/null +++ b/code/public/static/css/modules/trending/trending_01.css @@ -0,0 +1,29 @@ +/* trending_01.css */ +.__PFX__-t1-block { margin: 20px 0; } +.__PFX__-t1-hd h3 { + font-size: 16px; + color: var(--primary-color); + margin-bottom: 10px; +} +.__PFX__-t1-list { + padding-left: 18px; +} +.__PFX__-t1-row { + margin-bottom: 10px; +} +.__PFX__-t1-a { + display: flex; + gap: 10px; + align-items: center; +} +.__PFX__-t1-num { + width: 20px; + text-align: center; + font-size: 14px; + color: var(--primary-color); + font-weight: 600; +} +.__PFX__-t1-name { + font-size: 14px; + color: #333; +} diff --git a/code/public/static/css/modules/trending/trending_02.css b/code/public/static/css/modules/trending/trending_02.css new file mode 100644 index 0000000..868b4f1 --- /dev/null +++ b/code/public/static/css/modules/trending/trending_02.css @@ -0,0 +1,26 @@ +/* trending_02.css */ +.__PFX__-t2-title { + font-size: 16px; + color: var(--primary-color); + margin-bottom: 10px; +} +.__PFX__-t2-scroll { + overflow-x: auto; + display: flex; + gap: 12px; +} +.__PFX__-t2-card { + width: 120px; + flex-shrink: 0; +} +.__PFX__-t2-img { + width: 100%; + aspect-ratio: 2/3; + border-radius: 10px; + object-fit: cover; +} +.__PFX__-t2-card span { + display: block; + font-size: 12px; + margin-top: 4px; +} diff --git a/code/public/static/css/modules/trending/trending_03.css b/code/public/static/css/modules/trending/trending_03.css new file mode 100644 index 0000000..0c2f2c8 --- /dev/null +++ b/code/public/static/css/modules/trending/trending_03.css @@ -0,0 +1,25 @@ +/* trending_03.css */ +.__PFX__-t3-area { margin: 20px 0; } +.__PFX__-t3-hd strong { + font-size: 16px; + color: var(--primary-color); +} +.__PFX__-t3-item { + display: flex; + gap: 10px; + padding: 12px 0; + border-bottom: 1px solid #eee; +} +.__PFX__-t3-pic { + width: 90px; + aspect-ratio: 2/3; + border-radius: 8px; + object-fit: cover; +} +.__PFX__-t3-r h4 { + font-size: 14px; +} +.__PFX__-t3-r p { + font-size: 12px; + color: #777; +} diff --git a/code/public/static/css/modules/trending/trending_04.css b/code/public/static/css/modules/trending/trending_04.css new file mode 100644 index 0000000..b085c49 --- /dev/null +++ b/code/public/static/css/modules/trending/trending_04.css @@ -0,0 +1,24 @@ +/* trending_04.css */ +.__PFX__-t4-tt { + font-size: 16px; + color: var(--primary-color); + margin-bottom: 12px; +} +.__PFX__-t4-grid { + display: grid; + grid-template-columns: repeat(2,1fr); + gap: 14px; +} +@media(min-width:768px){ + .__PFX__-t4-grid { grid-template-columns: repeat(4,1fr); } +} +.__PFX__-t4-img { + width: 100%; + aspect-ratio: 2/3; + border-radius: 10px; + object-fit: cover; +} +.__PFX__-t4-cap { + margin-top: 6px; + font-size: 13px; +} diff --git a/code/public/static/css/modules/trending/trending_05.css b/code/public/static/css/modules/trending/trending_05.css new file mode 100644 index 0000000..9b49dd5 --- /dev/null +++ b/code/public/static/css/modules/trending/trending_05.css @@ -0,0 +1,24 @@ +/* trending_05.css */ +.__PFX__-t5-wrap { + margin: 22px 0; +} +.__PFX__-t5-hd { + font-size: 16px; + color: var(--primary-color); + margin-bottom: 12px; +} +.__PFX__-t5-line { + display: flex; + align-items: center; + gap: 6px; + padding: 8px 0; + border-bottom: 1px solid rgba(0,0,0,.06); +} +.__PFX__-t5-dot { + color: var(--primary-color); + font-size: 14px; +} +.__PFX__-t5-name { + font-size: 13px; + color: #333; +} diff --git a/code/public/static/css2/compiled/dom_30ced0f793.css b/code/public/static/css2/compiled/dom_30ced0f793.css new file mode 100644 index 0000000..01b957b --- /dev/null +++ b/code/public/static/css2/compiled/dom_30ced0f793.css @@ -0,0 +1 @@ +/* global_base.css *//* ------------------------------------------------- GLOBAL BASE CSS (专业影视站通用框架) 提供稳定、统一的视觉骨架 + 响应式结构 --------------------------------------------------*/ /* RESET — 全局重置,保证不同模块视觉一致 */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, img, strong, sub, sup, small, dl, dt, dd, ol, ul, li, form, label, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; } /* 防止文字因字号继承导致布局挤爆 */ html { font-size: 16px; } /* BODY 通用布局 */ body { font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", Arial, sans-serif; line-height: 1.5; background: #f5f6fa; color: #333; -webkit-font-smoothing: antialiased; } /* 所有元素 box-sizing,避免模块撑破布局 */ *, *::before, *::after { box-sizing: border-box; } /* 链接默认清爽样式 */ a { text-decoration: none; color: inherit; } /* 图片不变形,自适应裁剪 */ img { display: block; width: 100%; height: auto; object-fit: cover; } /* 防止某些模块 img 写了宽高 style 导致拉伸 */ img[style] { height: auto !important; } /* 全局容器:放所有模块(首页 main) */ .a85576-main { width: 100%; padding-bottom: 20px; } /* 模块之间的默认间距(让页面不拥挤) */ .a85576-module-block { margin: 16px; } /* 标题统一样式(模块标题) */ .a85576-title { font-size: 18px; font-weight: bold; color: var(--primary-color); margin-bottom: 12px; } /* 统一卡片 hover 效果(柔和缩放) */ .a85576-card:hover { transform: translateY(-2px); transition: all .25s; } /* 防止卡片在 PC 放大时错位 */ .a85576-card { transition: all .25s; } /* 全局 Flex 工具类 */ .a85576-flex { display: flex; } .a85576-flex-center { display: flex; justify-content: center; align-items: center; } .a85576-flex-between { display: flex; justify-content: space-between; align-items: center; } /* 全局 Grid 工具类 */ .a85576-grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; } .a85576-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; } .a85576-grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; } /* H5 → PC 全局响应式布局 */ @media (min-width: 768px) { body { max-width: 960px; margin: 0 auto; background: #f5f6fa; } .a85576-main { padding: 20px 0; } } /* Footer 基础结构(不覆盖各模板样式) */ .a85576-footer-base { padding: 20px 10px; text-align: center; font-size: 13px; color: #666; } /* Header 基础结构 */ .a85576-header-base { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; background: #fff; border-bottom: 1px solid rgba(0,0,0,0.05); } /* 搜索框基础样式,适配所有模板 */ .a85576-search-box input { width: 100%; padding: 10px 12px; background: #fff; border: 1px solid #ddd; border-radius: 8px; font-size: 14px; } /* 按钮基础样式 */ .a85576-btn { padding: 8px 14px; border-radius: 6px; background: var(--primary-color); color: #fff; font-size: 14px; display: inline-flex; align-items: center; } /* 动画:淡入 */ .a85576-fadein { animation: fadein .3s ease; } @keyframes fadein { from { opacity: 0; } to { opacity: 1; } } /* 避免模块撑满左右,所有模块内部使用相同内边距 */ .a85576-module-wrapper { padding: 0 16px; } /* head_05.css */.a85576-nav5 { padding:16px; background:rgba(255,255,255,0.85); backdrop-filter:blur(8px); } .a85576-logo5 { font-size:22px; font-weight:bold; color:var(--primary-color); } /* banner_05.css */.a85576-bn5 { display:flex; margin:16px; gap:12px; } .a85576-bn5-img { width:100px; height:60px; border-radius:8px; object-fit:cover; } .a85576-bn5-right h3 { font-size:16px; color:var(--primary-color); } .a85576-bn5-right p { font-size:13px; color:#666; } /* list_05.css */.a85576-list5-grid{ margin:16px; display:grid; grid-template-columns:repeat(2,1fr); gap:14px; } @media(min-width:768px){ .a85576-list5-grid{ grid-template-columns:repeat(4,1fr); } } .a85576-list5-card img{ width:100%; aspect-ratio:2/3; object-fit:cover; border-radius:8px; } .a85576-list5-card p{ margin-top:4px; font-size:13px; color:#333; } \ No newline at end of file diff --git a/code/public/static/css2/modules/banner_01.css b/code/public/static/css2/modules/banner_01.css new file mode 100644 index 0000000..79d1bf2 --- /dev/null +++ b/code/public/static/css2/modules/banner_01.css @@ -0,0 +1,10 @@ +.__PFX__-bn1 { + padding:40px 20px; + color:#fff; + background:linear-gradient(135deg,var(--primary-color),var(--secondary-color)); + border-radius:12px; + margin:16px; + text-align:center; +} +.__PFX__-bn1-t1 { font-size:22px; margin-bottom:6px; } +.__PFX__-bn1-t2 { font-size:14px; opacity:.9; } diff --git a/code/public/static/css2/modules/banner_02.css b/code/public/static/css2/modules/banner_02.css new file mode 100644 index 0000000..dea1a41 --- /dev/null +++ b/code/public/static/css2/modules/banner_02.css @@ -0,0 +1,19 @@ +.__PFX__-bn2 { + display:flex; + gap:12px; + margin:16px; +} +.__PFX__-bn2-img { + width:40%; + height:100px; + object-fit:cover; + border-radius:10px; +} +.__PFX__-bn2-info h2 { + font-size:18px; + color:var(--primary-color); +} +.__PFX__-bn2-info p { + font-size:13px; + color:#666; +} diff --git a/code/public/static/css2/modules/banner_03.css b/code/public/static/css2/modules/banner_03.css new file mode 100644 index 0000000..98c949b --- /dev/null +++ b/code/public/static/css2/modules/banner_03.css @@ -0,0 +1,10 @@ +.__PFX__-bn3 { margin:16px; } +.__PFX__-bn3-img { + width:100%; + height:160px; + object-fit:cover; + border-radius:12px; +} +@media(min-width:768px){ + .__PFX__-bn3-img { height:240px; } +} diff --git a/code/public/static/css2/modules/banner_04.css b/code/public/static/css2/modules/banner_04.css new file mode 100644 index 0000000..26433e7 --- /dev/null +++ b/code/public/static/css2/modules/banner_04.css @@ -0,0 +1,11 @@ +.__PFX__-bn4 { + background:#fafafa; + padding:22px 16px; + border-radius:10px; + margin:16px; +} +.__PFX__-bn4 h2 { + font-size:20px; + color:var(--primary-color); +} +.__PFX__-bn4 p { color:#666; font-size:13px; } diff --git a/code/public/static/css2/modules/banner_05.css b/code/public/static/css2/modules/banner_05.css new file mode 100644 index 0000000..9218c14 --- /dev/null +++ b/code/public/static/css2/modules/banner_05.css @@ -0,0 +1,19 @@ +.__PFX__-bn5 { + display:flex; + margin:16px; + gap:12px; +} +.__PFX__-bn5-img { + width:100px; + height:60px; + border-radius:8px; + object-fit:cover; +} +.__PFX__-bn5-right h3 { + font-size:16px; + color:var(--primary-color); +} +.__PFX__-bn5-right p { + font-size:13px; + color:#666; +} diff --git a/code/public/static/css2/modules/global_base.css b/code/public/static/css2/modules/global_base.css new file mode 100644 index 0000000..9b90ff6 --- /dev/null +++ b/code/public/static/css2/modules/global_base.css @@ -0,0 +1,181 @@ +/* ------------------------------------------------- + GLOBAL BASE CSS (专业影视站通用框架) + 提供稳定、统一的视觉骨架 + 响应式结构 +--------------------------------------------------*/ + +/* RESET — 全局重置,保证不同模块视觉一致 */ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, img, strong, sub, sup, small, +dl, dt, dd, ol, ul, li, form, label, +table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + border: 0; +} + +/* 防止文字因字号继承导致布局挤爆 */ +html { + font-size: 16px; +} + +/* BODY 通用布局 */ +body { + font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", Arial, sans-serif; + line-height: 1.5; + background: #f5f6fa; + color: #333; + -webkit-font-smoothing: antialiased; +} + +/* 所有元素 box-sizing,避免模块撑破布局 */ +*, *::before, *::after { + box-sizing: border-box; +} + +/* 链接默认清爽样式 */ +a { + text-decoration: none; + color: inherit; +} + +/* 图片不变形,自适应裁剪 */ +img { + display: block; + width: 100%; + height: auto; + object-fit: cover; +} + +/* 防止某些模块 img 写了宽高 style 导致拉伸 */ +img[style] { + height: auto !important; +} + +/* 全局容器:放所有模块(首页 main) */ +.__PFX__-main { + width: 100%; + padding-bottom: 20px; +} + +/* 模块之间的默认间距(让页面不拥挤) */ +.__PFX__-module-block { + margin: 16px; +} + +/* 标题统一样式(模块标题) */ +.__PFX__-title { + font-size: 18px; + font-weight: bold; + color: var(--primary-color); + margin-bottom: 12px; +} + +/* 统一卡片 hover 效果(柔和缩放) */ +.__PFX__-card:hover { + transform: translateY(-2px); + transition: all .25s; +} + +/* 防止卡片在 PC 放大时错位 */ +.__PFX__-card { + transition: all .25s; +} + +/* 全局 Flex 工具类 */ +.__PFX__-flex { + display: flex; +} +.__PFX__-flex-center { + display: flex; + justify-content: center; + align-items: center; +} +.__PFX__-flex-between { + display: flex; + justify-content: space-between; + align-items: center; +} + +/* 全局 Grid 工具类 */ +.__PFX__-grid-2 { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 12px; +} +.__PFX__-grid-3 { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 12px; +} +.__PFX__-grid-4 { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 12px; +} + +/* H5 → PC 全局响应式布局 */ +@media (min-width: 768px) { + body { + max-width: 960px; + margin: 0 auto; + background: #f5f6fa; + } + + .__PFX__-main { + padding: 20px 0; + } +} + +/* Footer 基础结构(不覆盖各模板样式) */ +.__PFX__-footer-base { + padding: 20px 10px; + text-align: center; + font-size: 13px; + color: #666; +} + +/* Header 基础结构 */ +.__PFX__-header-base { + display: flex; + align-items: center; + justify-content: space-between; + padding: 12px 16px; + background: #fff; + border-bottom: 1px solid rgba(0,0,0,0.05); +} + +/* 搜索框基础样式,适配所有模板 */ +.__PFX__-search-box input { + width: 100%; + padding: 10px 12px; + background: #fff; + border: 1px solid #ddd; + border-radius: 8px; + font-size: 14px; +} + +/* 按钮基础样式 */ +.__PFX__-btn { + padding: 8px 14px; + border-radius: 6px; + background: var(--primary-color); + color: #fff; + font-size: 14px; + display: inline-flex; + align-items: center; +} + +/* 动画:淡入 */ +.__PFX__-fadein { + animation: fadein .3s ease; +} +@keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} + +/* 避免模块撑满左右,所有模块内部使用相同内边距 */ +.__PFX__-module-wrapper { + padding: 0 16px; +} diff --git a/code/public/static/css2/modules/head_01.css b/code/public/static/css2/modules/head_01.css new file mode 100644 index 0000000..a822a5d --- /dev/null +++ b/code/public/static/css2/modules/head_01.css @@ -0,0 +1,25 @@ +.__PFX__-nav { + background:#fff; + padding:10px 12px; + border-bottom:1px solid #eee; +} +.__PFX__-nav-inner { + display:flex; + align-items:center; + justify-content:space-between; +} +.__PFX__-logo { + font-size:22px; + font-weight:600; + color:var(--primary-color); +} +.__PFX__-search input { + height:32px; + padding:0 12px; + border-radius:6px; + border:1px solid #ddd; + width:140px; +} +@media(min-width:768px){ + .__PFX__-search input { width:240px; } +} diff --git a/code/public/static/css2/modules/head_02.css b/code/public/static/css2/modules/head_02.css new file mode 100644 index 0000000..367a43a --- /dev/null +++ b/code/public/static/css2/modules/head_02.css @@ -0,0 +1,21 @@ +.__PFX__-nav2 { + display:flex; + align-items:center; + justify-content:space-between; + padding:12px; + background:#fff; + border-bottom:1px solid #eee; +} +.__PFX__-logo2 { + font-size:20px; + font-weight:bold; + color:var(--primary-color); +} +.__PFX__-menu2 a { + margin-left:16px; + font-size:14px; + color:#333; +} +@media(max-width:640px){ + .__PFX__-menu2 a { margin-left:10px; } +} diff --git a/code/public/static/css2/modules/head_03.css b/code/public/static/css2/modules/head_03.css new file mode 100644 index 0000000..e1e1506 --- /dev/null +++ b/code/public/static/css2/modules/head_03.css @@ -0,0 +1,21 @@ +.__PFX__-nav3 { + padding:16px 10px; + border-bottom:1px solid #eee; + background:#fff; + text-align:center; +} +.__PFX__-logo3 { + font-size:24px; + font-weight:600; + margin-bottom:8px; + color:var(--primary-color); +} +.__PFX__-menu3 a { + margin:0 10px; + padding-bottom:6px; + border-bottom:2px solid transparent; + font-size:14px; +} +.__PFX__-menu3 a:hover { + border-color:var(--primary-color); +} diff --git a/code/public/static/css2/modules/head_04.css b/code/public/static/css2/modules/head_04.css new file mode 100644 index 0000000..65e29b8 --- /dev/null +++ b/code/public/static/css2/modules/head_04.css @@ -0,0 +1,9 @@ +.__PFX__-nav4 { + padding:18px 20px; + border-bottom:1px solid #eee; +} +.__PFX__-logo4 { + font-size:26px; + font-weight:bold; + color:var(--primary-color); +} diff --git a/code/public/static/css2/modules/head_05.css b/code/public/static/css2/modules/head_05.css new file mode 100644 index 0000000..71afdff --- /dev/null +++ b/code/public/static/css2/modules/head_05.css @@ -0,0 +1,10 @@ +.__PFX__-nav5 { + padding:16px; + background:rgba(255,255,255,0.85); + backdrop-filter:blur(8px); +} +.__PFX__-logo5 { + font-size:22px; + font-weight:bold; + color:var(--primary-color); +} diff --git a/code/public/static/css2/modules/list_01.css b/code/public/static/css2/modules/list_01.css new file mode 100644 index 0000000..1e2be8c --- /dev/null +++ b/code/public/static/css2/modules/list_01.css @@ -0,0 +1,30 @@ +.__PFX__-list1 { margin:16px; } +.__PFX__-list1-title { + font-size:16px; + margin-bottom:12px; + color:var(--primary-color); +} + +.__PFX__-list1-grid { + display:grid; + grid-template-columns:repeat(2,1fr); + gap:10px; +} +@media(min-width:768px){ + .__PFX__-list1-grid { + grid-template-columns:repeat(4,1fr); + } +} + +.__PFX__-list1-card img { + width:100%; + aspect-ratio:2 / 3; + object-fit:cover; + border-radius:10px; +} + +.__PFX__-list1-card p { + margin-top:6px; + font-size:13px; + color:#333; +} diff --git a/code/public/static/css2/modules/list_02.css b/code/public/static/css2/modules/list_02.css new file mode 100644 index 0000000..0f5bd5a --- /dev/null +++ b/code/public/static/css2/modules/list_02.css @@ -0,0 +1,23 @@ +.__PFX__-list2 { margin:16px; } +.__PFX__-list2-title { font-size:16px; color:var(--primary-color); margin-bottom:10px; } + +.__PFX__-list2-grid { + display:grid; + grid-template-columns:repeat(3,1fr); + gap:8px; +} +@media(min-width:768px){ + .__PFX__-list2-grid { grid-template-columns:repeat(5,1fr); } +} + +.__PFX__-list2-card img { + width:100%; + aspect-ratio:2 / 3; + object-fit:cover; + border-radius:8px; +} +.__PFX__-list2-card span { + display:block; + font-size:13px; + margin-top:4px; +} diff --git a/code/public/static/css2/modules/list_03.css b/code/public/static/css2/modules/list_03.css new file mode 100644 index 0000000..7cd86ff --- /dev/null +++ b/code/public/static/css2/modules/list_03.css @@ -0,0 +1,19 @@ +.__PFX__-list3 { margin:16px; } +.__PFX__-list3-title { font-size:16px; margin-bottom:12px; color:var(--primary-color); } + +.__PFX__-list3-wrap { + display:grid; + grid-template-columns:repeat(2,1fr); + gap:12px; +} +@media(min-width:768px){ + .__PFX__-list3-wrap { grid-template-columns:repeat(4,1fr); } +} + +.__PFX__-list3-card img { + width:100%; + aspect-ratio:2/3; + object-fit:cover; + border-radius:12px; + box-shadow:0 4px 14px rgba(0,0,0,.1); +} diff --git a/code/public/static/css2/modules/list_04.css b/code/public/static/css2/modules/list_04.css new file mode 100644 index 0000000..8221600 --- /dev/null +++ b/code/public/static/css2/modules/list_04.css @@ -0,0 +1,29 @@ +.__PFX__-list4-grid{ + margin:16px; + display:grid; + grid-template-columns:repeat(2,1fr); + gap:12px; +} +@media(min-width:768px){ + .__PFX__-list4-grid{ grid-template-columns:repeat(4,1fr); } +} +.__PFX__-list4-card { + position:relative; +} +.__PFX__-list4-card img{ + width:100%; + aspect-ratio:2/3; + object-fit:cover; + border-radius:10px; +} +.__PFX__-list4-title{ + position:absolute; + bottom:6px; + left:6px; + right:6px; + background:rgba(0,0,0,.4); + padding:4px 6px; + font-size:12px; + color:#fff; + border-radius:6px; +} diff --git a/code/public/static/css2/modules/list_05.css b/code/public/static/css2/modules/list_05.css new file mode 100644 index 0000000..6d3aeaf --- /dev/null +++ b/code/public/static/css2/modules/list_05.css @@ -0,0 +1,20 @@ +.__PFX__-list5-grid{ + margin:16px; + display:grid; + grid-template-columns:repeat(2,1fr); + gap:14px; +} +@media(min-width:768px){ + .__PFX__-list5-grid{ grid-template-columns:repeat(4,1fr); } +} +.__PFX__-list5-card img{ + width:100%; + aspect-ratio:2/3; + object-fit:cover; + border-radius:8px; +} +.__PFX__-list5-card p{ + margin-top:4px; + font-size:13px; + color:#333; +} diff --git a/code/public/static/js/lazy.js b/code/public/static/js/lazy.js new file mode 100644 index 0000000..9f66a96 --- /dev/null +++ b/code/public/static/js/lazy.js @@ -0,0 +1,72 @@ +(function () { + if (window.__LAZY_LOADER_READY__) return; + + const hasIO = "IntersectionObserver" in window; + + function applyBg(el) { + const src = el.getAttribute("data-src"); + if (src) el.style.backgroundImage = `url(${src})`; + el.classList.remove("lazyload-bg"); + el.removeAttribute("data-src"); + } + + function applyImg(img) { + const src = img.getAttribute("data-src"); + const srcset = img.getAttribute("data-srcset"); + const sizes = img.getAttribute("data-sizes"); + + if (sizes) img.setAttribute("sizes", sizes); + if (srcset) img.setAttribute("srcset", srcset); + if (src) img.setAttribute("src", src); + + img.classList.remove("lazyload-img"); + img.removeAttribute("data-src"); + img.removeAttribute("data-srcset"); + img.removeAttribute("data-sizes"); + } + + function observe(elements, callback, options) { + if (!elements || elements.length === 0) return; + + // 兜底:不支持 IO 直接加载 + if (!hasIO) { + elements.forEach(callback); + return; + } + + const obs = new IntersectionObserver((entries, observer) => { + entries.forEach(entry => { + if (!entry.isIntersecting) return; + callback(entry.target); + observer.unobserve(entry.target); + }); + }, options); + + elements.forEach(el => obs.observe(el)); + } + + function scan(root) { + const ctx = root || document; + + observe( + ctx.querySelectorAll(".lazyload-bg"), + applyBg, + { rootMargin: "400px 0px", threshold: 0.01 } + ); + + observe( + ctx.querySelectorAll(".lazyload-img"), + applyImg, + { rootMargin: "200px 0px", threshold: 0.01 } + ); + } + + document.addEventListener("DOMContentLoaded", function () { + scan(document); + }); + + // 给“加载更多/分页追加 DOM”使用 + window.lazyScan = scan; + + window.__LAZY_LOADER_READY__ = true; +})(); diff --git a/code/public/static/js/player/dplayer.init.js b/code/public/static/js/player/dplayer.init.js new file mode 100644 index 0000000..0c1c595 --- /dev/null +++ b/code/public/static/js/player/dplayer.init.js @@ -0,0 +1,154 @@ +;(function () { + /** + * ===================================================== + * DPlayer Initializer (Scoped by dom_prefix) + * ----------------------------------------------------- + * - 不使用全局变量 + * - 支持一个页面多个播放器 + * - 只初始化 data-engine="dplayer" 的模块 + * ===================================================== + */ + + function initDPlayer(strPlayUrl) { + // if (!root) return; + // var root = document.querySelector('[data-engine="dplayer"]'); + // console.log(root) + // if (!root) return; + // var domPrefix = document.body.dataset.class; + + // // 防御 + // if (!domPrefix) { + // console.error('[Player] dom_prefix missing on body'); + // return; + // } + // var core = root.querySelector('.' + domPrefix + '-player-core'); + + // if (!core) return; + // console.log(core) + + console.log('strPlayUrl') + let DomDPlayer = document.getElementById('dplayer') + // ---- 创建 DPlayer 实例 ---- + try { + videoPlayer = new DPlayer({ + container: DomDPlayer, + autoplay: true, + screenshot: false, + //logo: dplayerLogo, + video: { + url: strPlayUrl, + type: 'hls', + }, + pluginOptions: { + hls: { + maxBufferLength: 600, + }, + }, + }); + + videoPlayer.play() + + // ---- 错误处理(兜底)---- + videoPlayer.on('error', function () { + showError(root, '播放失败,请尝试切换线路'); + }); + + } catch (e) { + console.log(e) + showError(root, '播放器初始化失败'); + } + } + + function showError(root, msg) { + var err = root.querySelector('.' + root.dataset.prefix + '-player-status'); + if (!err) { + err = document.createElement('div'); + err.className = root.dataset.prefix + '-player-status is-error'; + root.appendChild(err); + } + err.innerText = msg; + } + + function boot() { + var players = document.querySelectorAll('[data-engine="dplayer"]'); + if (!players.length) return; + + players.forEach(function (root) { + // dom_prefix 注入(防串) + if (!root.dataset.prefix) { + var cls = root.className || ''; + var m = cls.match(/([a-z0-9]{4,8})-player/); + if (m) { + root.dataset.prefix = m[1]; + } + } + console.log(root) + initDPlayer(root); + }); + } + + // 获取第一个线路 key(带容错) + function getDefaultLine() { + if (typeof arrPlayUrl === "undefined" || !arrPlayUrl || typeof arrPlayUrl !== "object" ) { + console.warn("arrPlayUrl 无效:"); + return null; + } + + const keys = Object.keys(arrPlayUrl); + if (keys.length === 0) { + console.warn("没有任何播放线路"); + return null; + } + + return keys[0]; // 后端排序,第一位为默认 + } + + // 获取某个线路的第一个 url + function getFirstPlayUrl(playLine) { + if (!arrPlayUrl || !arrPlayUrl[playLine] || !arrPlayUrl[playLine][0]) { + console.warn("播放线路不存在:", playLine, arrPlayUrl); + return null; + } + return arrPlayUrl[playLine][0].url || null; + } + + // DOM Ready + document.addEventListener("DOMContentLoaded", function () { + // boot(); + console.log(strPlayType) + console.log(boolIsPlayPage) + if (typeof strPlayType !== "undefined" && boolIsPlayPage) { + + // 用户指定线路 + if (strPlayType !== "default") { + const activeUrl = arrPlayUrl[strPlayType][intPlayUrlIndex - 1]; + strPlayUrl = activeUrl.url; + // checkLine(strPlayType); + + // 默认播放第一个线路的第一个 URL + } else { + const defaultLine = getDefaultLine(); + strPlayUrl = getFirstPlayUrl(defaultLine); + // checkLine(defaultLine); + } + console.log('strPlayUrlstrPlayUrl') + initDPlayer(strPlayUrl); + + } else if (strPlayType == "default" && !boolIsPlayPage) { + + const defaultLine = getDefaultLine(); + strPlayUrl = getFirstPlayUrl(defaultLine); + // checkLine(defaultLine); + + initDPlayer(strPlayUrl); + } + }) + // if (document.readyState === 'loading') { + // document.addEventListener('DOMContentLoaded', boot); + // } else { + // boot(); + // } +})(); + + + diff --git a/code/storage/theme_cache/video8.com.json b/code/storage/theme_cache/video8.com.json new file mode 100644 index 0000000..c37632a --- /dev/null +++ b/code/storage/theme_cache/video8.com.json @@ -0,0 +1,738 @@ +{ + "meta": { + "host": "video8.com", + "seed": 3604737636, + "dom_prefix": "gkjpcv", + "static_hash": "6ac636961e", + "version": 1 + }, + "global": { + "page_max_width_pc": 1080, + "grid": { + "cols_h5": 1, + "cols_pc_sm": 3, + "cols_pc_md": 4, + "cols_pc_lg": 6 + }, + "theme": { + "mode": "A", + "variant": 1 + } + }, + "pages": { + "home": { + "modules": [ + "news", + "rank" + ] + }, + "category_index": { + "top_block": { + "module": "piaofang" + }, + "sections_pool": [ + { + "shell": "B", + "item": "02", + "class": "loose" + }, + { + "shell": "D", + "item": "04", + "class": "" + }, + { + "shell": "B", + "item": "01", + "class": "" + } + ] + }, + "category": [], + "search": { + "top_block": { + "family": "centered", + "variant": 6, + "tone": 1 + } + }, + "rank_home": { + "modules": [ + { + "module": "rank_daily", + "title": "日排行榜", + "sort_type": "daily", + "item": "05", + "item_type": "rank", + "item_variant": 7, + "shell": "C", + "class": "rank compact top", + "grid": { + "cols_h5": 3, + "cols_pc_sm": 4, + "cols_pc_md": 6, + "cols_pc_lg": 9 + }, + "layout": { + "rows": { + "lg": 3, + "md": 3, + "sm": 3, + "h5": 4 + }, + "max_items": 27, + "max": { + "lg": 27, + "md": 18, + "sm": 12, + "h5": 12 + } + }, + "limit": 7, + "more_url": "\/rank\/daily" + }, + { + "module": "rank_weekly", + "title": "周排行榜", + "sort_type": "weekly", + "item": "03", + "item_type": "rank", + "item_variant": 14, + "shell": "C", + "class": "rank compact top", + "grid": { + "cols_h5": 1, + "cols_pc_sm": 3, + "cols_pc_md": 4, + "cols_pc_lg": 8 + }, + "layout": { + "rows": { + "lg": 2, + "md": 2, + "sm": 2, + "h5": 2 + }, + "max_items": 16, + "max": { + "lg": 16, + "md": 8, + "sm": 6, + "h5": 2 + } + }, + "limit": 7, + "more_url": "\/rank\/weekly" + }, + { + "module": "rank_monthly", + "title": "月排行榜", + "sort_type": "monthly", + "item": "03", + "item_type": "rank", + "item_variant": 6, + "shell": "C", + "class": "rank compact top", + "grid": { + "cols_h5": 1, + "cols_pc_sm": 3, + "cols_pc_md": 4, + "cols_pc_lg": 8 + }, + "layout": { + "rows": { + "lg": 2, + "md": 2, + "sm": 2, + "h5": 2 + }, + "max_items": 16, + "max": { + "lg": 16, + "md": 8, + "sm": 6, + "h5": 2 + } + }, + "limit": 7, + "more_url": "\/rank\/monthly" + }, + { + "module": "rank_total", + "title": "总排行榜", + "sort_type": "total", + "item": "05", + "item_type": "rank", + "item_variant": 7, + "shell": "C", + "class": "rank compact top", + "grid": { + "cols_h5": 1, + "cols_pc_sm": 4, + "cols_pc_md": 4, + "cols_pc_lg": 9 + }, + "layout": { + "rows": { + "lg": 3, + "md": 3, + "sm": 3, + "h5": 2 + }, + "max_items": 27, + "max": { + "lg": 27, + "md": 12, + "sm": 12, + "h5": 2 + } + }, + "limit": 7, + "more_url": "\/rank\/total" + } + ] + }, + "detail": { + "modules": [ + "breadcrumb", + "detail_main", + "playline", + "seowords", + "pinlun", + "list" + ], + "detail_main": { + "order": [ + "title", + "cover", + "meta", + "desc", + "action" + ], + "layout": "B", + "title": 16, + "cover": 9, + "meta": 2, + "desc": 5, + "action": 6 + }, + "playline": { + "layout": "A", + "variant": 2 + }, + "pinlun": { + "layout": "A", + "variant": 2 + }, + "breadcrumb": { + "layout": "A", + "variant": 2, + "class": "breadcrumb compact seo" + }, + "seowords": { + "layout": "B", + "variant": 6, + "rewrite": 1, + "class": "inline seo" + }, + "list": { + "modules": [ + "news" + ] + } + }, + "play": { + "modules": [ + "breadcrumb", + "player", + "playline", + "seowords", + "pinlun", + "list" + ], + "detail_main": { + "order": [ + "title", + "cover", + "meta", + "desc", + "action" + ], + "layout": "B", + "title": 16, + "cover": 9, + "meta": 2, + "desc": 5, + "action": 6 + }, + "player": { + "engine": "dplayer", + "variant": 5, + "class": "player focus", + "opt": { + "autoplay": false, + "muted": false, + "preload": "metadata", + "ratio": "16x9" + } + }, + "playline": { + "layout": "A", + "variant": 2 + }, + "pinlun": { + "layout": "A", + "variant": 2 + }, + "breadcrumb": { + "layout": "A", + "variant": 2, + "class": "breadcrumb compact seo" + }, + "seowords": { + "layout": "B", + "variant": 6, + "rewrite": 1, + "class": "inline seo" + }, + "list": { + "modules": [ + "news" + ] + } + } + }, + "components": { + "templates": { + "head_tpl": 37, + "foot_tpl": 19, + "banner_tpl": 10, + "list_tpl": 5, + "detail_tpl": 3, + "play_tpl": 52 + }, + "list": { + "item_variants": { + "01": 20, + "02": 20, + "03": 20, + "04": 20, + "05": 20 + }, + "semantic_map": { + "news": { + "primary": [ + "01", + "04" + ], + "secondary": [ + "02" + ], + "fallback": [ + "01" + ] + }, + "piaofang": { + "primary": [ + "01", + "04" + ], + "secondary": [ + "02" + ], + "fallback": [ + "01" + ] + }, + "rank": { + "primary": [ + "05" + ], + "secondary": [ + "03" + ], + "fallback": [ + "05" + ] + }, + "tuijian": { + "primary": [ + "01" + ], + "secondary": [ + "02" + ], + "fallback": [ + "01" + ] + }, + "update": { + "primary": [ + "01" + ], + "secondary": [ + "02" + ], + "fallback": [ + "01" + ] + }, + "category_list": { + "primary": [ + "01" + ], + "secondary": [ + "02" + ], + "fallback": [ + "01" + ] + }, + "search_list": { + "primary": [ + "02" + ], + "secondary": [ + "01" + ], + "fallback": [ + "02" + ] + } + }, + "shell_rules": { + "poster": [ + "B" + ], + "media": [ + "A" + ], + "rank": [ + "C" + ] + } + }, + "pager": { + "family": "pill", + "variant": 2, + "tone": 3 + } + }, + "list_layout": { + "news": { + "module": "news", + "item": "01", + "item_type": "poster", + "item_variant": 5, + "shell": "B", + "title": "B", + "class": "compact gkjpcv-tclamp gkjpcv-tclamp-p4 gkjpcv-tclamp-l3", + "title_text": { + "primary": "今日更新", + "secondary": "每日持续更新", + "seo": "新上线影视内容合集" + }, + "grid": { + "cols_h5": 3, + "cols_pc_sm": 3, + "cols_pc_md": 6, + "cols_pc_lg": 6 + }, + "layout": { + "rows": { + "lg": 2, + "md": 2, + "sm": 2, + "h5": 4 + }, + "max_items": 12, + "max": { + "lg": 12, + "md": 12, + "sm": 6, + "h5": 12 + } + } + }, + "piaofang": { + "module": "piaofang", + "item": "01", + "item_type": "poster", + "item_variant": 14, + "shell": "B", + "title": "B", + "class": "loose emphasis gkjpcv-tclamp gkjpcv-tclamp-p4 gkjpcv-tclamp-l3", + "title_text": { + "primary": "热播精选", + "secondary": "当前最受欢迎内容", + "seo": "热门影视作品推荐" + }, + "grid": { + "cols_h5": 1, + "cols_pc_sm": 3, + "cols_pc_md": 4, + "cols_pc_lg": 8 + }, + "layout": { + "rows": { + "lg": 2, + "md": 2, + "sm": 2, + "h5": 2 + }, + "max_items": 16, + "max": { + "lg": 16, + "md": 8, + "sm": 6, + "h5": 2 + } + } + }, + "rank": { + "module": "rank", + "item": "05", + "item_type": "rank", + "item_variant": 9, + "shell": "C", + "title": "E", + "class": "top compact gkjpcv-tclamp gkjpcv-tclamp-p4 gkjpcv-tclamp-l3", + "title_text": { + "primary": "排行榜", + "secondary": "高人气作品排行", + "seo": "高播放量影视榜单" + }, + "grid": { + "cols_h5": 2, + "cols_pc_sm": 4, + "cols_pc_md": 5, + "cols_pc_lg": 7 + }, + "layout": { + "rows": { + "lg": 3, + "md": 3, + "sm": 3, + "h5": 3 + }, + "max_items": 21, + "max": { + "lg": 21, + "md": 15, + "sm": 12, + "h5": 6 + } + } + }, + "tuijian": { + "module": "tuijian", + "item": "01", + "item_type": "poster", + "item_variant": 5, + "shell": "B", + "title": "C", + "class": "loose gkjpcv-tclamp gkjpcv-tclamp-p4 gkjpcv-tclamp-l3", + "title_text": { + "primary": "新内容推荐", + "secondary": "第一时间为你呈现", + "seo": "今日最新影视资源" + }, + "grid": { + "cols_h5": 1, + "cols_pc_sm": 4, + "cols_pc_md": 4, + "cols_pc_lg": 7 + }, + "layout": { + "rows": { + "lg": 3, + "md": 3, + "sm": 3, + "h5": 2 + }, + "max_items": 21, + "max": { + "lg": 21, + "md": 12, + "sm": 12, + "h5": 2 + } + } + }, + "update": { + "module": "update", + "item": "01", + "item_type": "poster", + "item_variant": 8, + "shell": "B", + "title": "C", + "class": "emphasis gkjpcv-tclamp gkjpcv-tclamp-p4 gkjpcv-tclamp-l3", + "title_text": { + "primary": "新片速递", + "secondary": "刚刚上线,抢先观看", + "seo": "最新电影电视剧更新" + }, + "grid": { + "cols_h5": 3, + "cols_pc_sm": 3, + "cols_pc_md": 6, + "cols_pc_lg": 6 + }, + "layout": { + "rows": { + "lg": 2, + "md": 2, + "sm": 2, + "h5": 4 + }, + "max_items": 12, + "max": { + "lg": 12, + "md": 12, + "sm": 6, + "h5": 12 + } + } + }, + "category_list_index": { + "module": "category_list_index", + "item": "01", + "item_type": "poster", + "item_variant": 4, + "shell": "B", + "title": "A", + "class": "compact gkjpcv-tclamp gkjpcv-tclamp-p4 gkjpcv-tclamp-l3", + "title_text": { + "primary": "今日更新", + "secondary": "第一时间为你呈现", + "seo": "最新电影电视剧更新" + }, + "grid": { + "cols_h5": 3, + "cols_pc_sm": 3, + "cols_pc_md": 6, + "cols_pc_lg": 6 + }, + "layout": { + "rows": { + "lg": 2, + "md": 2, + "sm": 2, + "h5": 4 + }, + "max_items": 12, + "max": { + "lg": 12, + "md": 12, + "sm": 6, + "h5": 12 + } + } + }, + "rank_list_index": { + "module": "rank_list_index", + "item": "01", + "item_type": "poster", + "item_variant": 19, + "shell": "B", + "title": "A", + "class": "gkjpcv-tclamp gkjpcv-tclamp-p4 gkjpcv-tclamp-l3", + "title_text": { + "primary": "今日更新", + "secondary": "第一时间为你呈现", + "seo": "新上线影视内容合集" + }, + "grid": { + "cols_h5": 1, + "cols_pc_sm": 4, + "cols_pc_md": 4, + "cols_pc_lg": 9 + }, + "layout": { + "rows": { + "lg": 3, + "md": 3, + "sm": 3, + "h5": 2 + }, + "max_items": 27, + "max": { + "lg": 27, + "md": 12, + "sm": 12, + "h5": 2 + } + } + }, + "category_list": { + "module": "category_list", + "item": "01", + "item_type": "poster", + "item_variant": 11, + "shell": "B", + "title": "F", + "class": "gkjpcv-tclamp gkjpcv-tclamp-p4 gkjpcv-tclamp-l3", + "title_text": { + "primary": "最近更新", + "secondary": "每日持续更新", + "seo": "最新电影电视剧更新" + }, + "grid": { + "cols_h5": 3, + "cols_pc_sm": 4, + "cols_pc_md": 6, + "cols_pc_lg": 9 + }, + "layout": { + "rows": { + "lg": 5, + "md": 7, + "sm": 5, + "h5": 5 + }, + "max_items": 45, + "max": { + "lg": 45, + "md": 42, + "sm": 20, + "h5": 15 + } + } + }, + "search_list": { + "module": "search_list", + "item": "02", + "item_type": "media", + "item_variant": 17, + "shell": "A", + "title": "A", + "class": "gkjpcv-tclamp gkjpcv-tclamp-p4 gkjpcv-tclamp-l3", + "title_text": { + "primary": "最新上线", + "secondary": "不错过任何新片", + "seo": "新上线影视内容合集" + }, + "grid": { + "cols_h5": 1, + "cols_pc_sm": 4, + "cols_pc_md": 4, + "cols_pc_lg": 7 + }, + "layout": { + "rows": { + "lg": 6, + "md": 6, + "sm": 6, + "h5": 6 + }, + "max_items": 42, + "max": { + "lg": 42, + "md": 24, + "sm": 24, + "h5": 6 + } + } + } + } +} \ No newline at end of file diff --git a/doc/TemplateTag.md b/doc/TemplateTag.md index cdb1441..54927f9 100644 --- a/doc/TemplateTag.md +++ b/doc/TemplateTag.md @@ -64,6 +64,7 @@ d_key="d_key" d_val="Ad" cache_life="86400"} # 视频分类 首页 url {site:vciurl parent_category="dianying" /} +{site:vciurl parent_category="dianying" export_name="strVciurl" /} # 视频详情 url {site:vurl v_id="$Video.v_id" v_py="$Video.v_name_en"/} @@ -78,7 +79,7 @@ d_key="d_key" d_val="Ad" cache_life="86400"} 'vclurl' => ['attr' => 'category,class,area,lang,year,order,page', 'close' => 0], # 样例 {site:vclurl parent_category="dianying" category="all" area="all" lang="all" year="all" order="all" page="1"/} -{site:vclurl parent_category="$Request.route.strClass" category="$arrChildrenCategory.v_category_en" area="all" lang="all" year="all" order="all" page="1"/} +{site:vclurl parent_category="$Request.route.strClass" category="$arrChildrenCategory.v_category_en" area="all" lang="all" year="all" order="all" page="1" export_name="strVclurl"/} # 视频排行榜 列表 url @@ -686,6 +687,7 @@ v_category_en="$arrChildrenCategory.v_category_en" sort_type="weekly" d_key="key" d_val="Video" cache_life="86400"} {/video:ranklist} + # 样例2 {video:ranklist count="10" sort_type="total" v_status="wanjie" v_category_en="分类拼音" v_parent_category_en="父分类拼音" d_key="key" d_val="Video" cache_life="86400"}
  • diff --git a/doc/gpt1/Pager 母型「设计规范表」.md b/doc/gpt1/Pager 母型「设计规范表」.md new file mode 100644 index 0000000..c5eef5d --- /dev/null +++ b/doc/gpt1/Pager 母型「设计规范表」.md @@ -0,0 +1,165 @@ + + +# 二、Pager 母型「设计规范表」(以后你扩 20×5 不会再炸) + +这是**核心内容**,你以后所有 pager 都应该**严格遵守**。 + +--- + +## ① Pager 的“冻结粒度”设计(非常关键) + +### ✅ 正确冻结方式(你刚才已经悟对了) + +> **分页只绑定域名,不绑定页面、不绑定页码** + +```php +pagerCfg = [ + family => 'numeric' | 'pill' | 'block' | 'input' | 'minimal', + variant => 0~19, // 子变体 + tone => 1~N // 色调 / 强弱 +] +``` + +* category / search **共用一套 pagerCfg** +* 不同域名 = 不同 pager +* 翻页时 HTML **不变化**(SEO + F12 都稳定) + +❌ 错误方式: + +* 每一页重新随机 +* pager 跟随页码变化 +* 搜索和分类用不同 pagerCfg(没必要) + +--- + +## ② Pager 母型(Family)定义标准(5 个) + +| 母型 | family | 结构特征 | 适用 | +| --- | ------- | -------------- | ----- | +| 数字型 | numeric | 页码 + prev/next | 绝大多数 | +| 药丸型 | pill | 圆角 / 胶囊 | 移动端 | +| 块状型 | block | 方块 / 网格 | PC | +| 输入型 | input | 页码输入框 | 高级站 | +| 极简型 | minimal | prev / next | SEO 页 | + +**每个 family = 1 个文件** +例如:`pager_01.html`、`pager_02.html` + +--- + +## ③ 每个母型必须包含的「功能元素」(硬性) + +任何 pager(无论多花哨),**必须全部考虑**: + +| 元素 | 必须 | +| --------------- | -- | +| 上一页 prev | ✅ | +| 下一页 next | ✅ | +| 首页 first | 推荐 | +| 末页 last | 推荐 | +| 当前页 current | ✅ | +| disabled 状态 | ✅ | +| aria-current | ✅ | +| rel="prev/next" | 推荐 | + +❌ 不允许再出现: + +* 没有 prev/next +* 只有页码 +* 没有 current 高亮 + +--- + +## ④ 子变体(Variant)的**正确扩展方式** + +**Variant ≠ 改逻辑** +**Variant 只改结构 + 视觉** + +### ✅ 允许变的(安全) + +* 外层标签:`nav / section / footer / aside` +* 容器结构:`ul/li` ↔ `div/span` +* 顺序:`prev → pages → next` / `pages → prev/next` +* 视觉: + + * 圆角 / 方角 + * 边框 / 无边框 + * 实心 / outline / ghost +* 信息增强: + + * “第 X / Y 页” + * “共 N 页” + +### ❌ 不允许变的(会炸) + +* `$pagerArr` 的遍历方式 +* prev / next 的判断逻辑 +* current / disabled 的语义判断 + +--- + +## ⑤ 安全数据规则(你这次踩坑的核心) + +### ❌ 禁止写法 + +```tpl +$pagerArr[1]['url'] +$pagerArr[3]['url'] +``` + +### ✅ 唯一允许 + +```php +foreach ($pagerArr as $it) { + if ($it['type'] === 'page') { + if ($first_url === null) $first_url = $it['url']; + $last_url = $it['url']; + } +} +``` + +然后模板里只用: + +```tpl +{:$first_url ?? '#'} +{:$last_url ?? '#'} +``` + +--- + +## ⑥ CSS 规范(和你 CssBuilder 完全兼容) + +### 必须遵守 + +* **所有 class 带 `$TpStyle.dom_prefix`** +* CSS 用 `__PFX__`,由 CssBuilder 替换 +* 不写死颜色,只用: + + * `var(--color_primary)` + * `var(--color_bg)` + * `var(--color_border)` + +### 推荐结构 + +``` +pager_base.css // 所有 pager 共用 +pager_01_numeric.css // 仅 numeric +pager_02_pill.css +... +``` + +--- + +## 七、你现在处在什么阶段(实话) + +你现在已经做到: + +* ✅ 架构方向完全正确 +* ✅ 冻结逻辑清晰 +* ✅ item / pager 思路统一 +* ❌ 之前炸的都是 **模板语法 + PHP/TP 边界问题** + +这一轮修完后,**不会再出现那种“越改越乱”的情况了**。 + +--- + diff --git a/doc/gpt1/gpt-gen-html.md b/doc/gpt1/gpt-gen-html.md new file mode 100644 index 0000000..3998764 --- /dev/null +++ b/doc/gpt1/gpt-gen-html.md @@ -0,0 +1,13 @@ +这些模板: + +结构差异极大 + +标签组合完全不同 + +类名随机 + +theme 色深入参与 + +H5/PC 完美适配 + +完全可以直接部署 \ No newline at end of file diff --git a/doc/gpt1/item_01~05「继承母型 CSS 协议」(终版规则).md b/doc/gpt1/item_01~05「继承母型 CSS 协议」(终版规则).md new file mode 100644 index 0000000..f6fab0e --- /dev/null +++ b/doc/gpt1/item_01~05「继承母型 CSS 协议」(终版规则).md @@ -0,0 +1,212 @@ +下面给你 **A:item_01~05「继承母型 CSS 协议」(终版规则)**。 +目标是:以后你再加 item_06/07… 或做子变体,只需要“挂 class + 少量覆写”,不再复制粘贴一堆 CSS、也不会互相污染。 + +--- + +# 1)目录与加载顺序协议(必须固定) + +> 关键:**先 base,再 type,再 item,再 behavior(可选)** + +推荐文件结构: + +``` +/static/css/list/ + item_base.css (所有 item 的共用基础,必须) + item_poster.css (poster 母型:item_01 / item_04) + item_media.css (media 母型:item_02) + item_rank.css (rank/text 母型:item_03 / item_05) + + item_01.css (可选:仅做微差异) + item_02.css (可选) + item_03.css (可选) + item_04.css (可选) + item_05.css (可选) + + behavior.css (可选:通用行为兜底) +``` + +CSS 合并时顺序建议: + +1. `item_base.css` +2. `item_poster.css / item_media.css / item_rank.css` +3. `item_01~05.css`(若存在) +4. `behavior.css`(若你还需要通用兜底) + +--- + +# 2)Class 命名协议(决定“继承关系”) + +每个 item 根节点必须同时包含: + +* **通用根类**:`{$TpStyle.dom_prefix}-item` +* **母型类(必须)**:`poster` / `media` / `rank` +* **编号类(可选但推荐)**:`item01` / `item02`… +* **行为类(来自 cfg.class)**:`compact loose emphasis top collapsed grouped` + +示例(poster 强化): + +```html +
    +``` + +示例(榜单 Top 强化): + +```html +
    +``` + +--- + +# 3)CSS 分层协议(禁止越界) + +## 3.1 item_base.css(只做“骨架”,不做形态) + +允许写: + +* link 基础 +* 标题/元信息基础字体 +* cover img 通用 object-fit +* 通用截断/间距(轻) + +禁止写: + +* grid 列数 +* poster/media/rank 的布局(这些归 type) +* 任何写死颜色(只用主题变量) + +--- + +## 3.2 type CSS(母型决定“形态”) + +### item_poster.css(封面型) + +只负责: + +* `.poster` 的 cover 比例 +* poster 信息区排布 +* poster 的角标位置规范 + +### item_media.css(横向信息流) + +只负责: + +* `.media` 使用 flex row +* media cover 宽度/比例 +* info 区垂直居中 + +### item_rank.css(榜单型) + +只负责: + +* `.rank` 的序号/标题/meta 横向布局 +* Top 强化钩子(`top`) + +--- + +## 3.3 item_0X.css(编号层:微差异,不允许改母型核心) + +允许: + +* 字体大小微调 +* border-radius 微调 +* meta 显示/隐藏(通过 class) +* badge 形态 + +禁止: + +* 改 poster/media/rank 的整体布局方式 +* 写通用选择器污染其他 item(例如 `.poster .__PFX__-item-cover{}` 这种应该在 type) + +--- + +## 3.4 behavior.css(行为兜底层,可选) + +如果你已经在 type 里适配了 `compact/loose/emphasis/top`,这里可以很薄。 + +允许: + +* `.collapsed` 隐藏第 N 条后内容 +* `.emphasis` 容器弱装饰兜底 +* `.grouped` 兜底边框背景 + +禁止: + +* 具体 item 的细节样式(那属于 item_0X 或 type) + +--- + +# 4)选择器范围协议(避免串样) + +必须遵守“前缀+组件域”: + +* ✅ `.__PFX__-item ...` +* ✅ `.__PFX__-item.poster ...` +* ✅ `.__PFX__-item.media ...` +* ✅ `.__PFX__-item.rank ...` + +禁止: + +* ❌ `.poster .__PFX__-item-cover`(范围太大,可能影响别的模块) +* ❌ `img{}` / `a{}` / `.title{}` 这类全局污染 + +--- + +# 5)主题色协议(v1.4 已定,这里重申到 item) + +item CSS 禁止写死颜色,只能用: + +* `var(--primary-color)` +* `var(--secondary-color)` +* `var(--accent-color)` +* `var(--bg-color)` +* `var(--bg-soft-color)` +* `var(--text-color)` +* `var(--text-muted-color)` +* `var(--border-color)` +* `var(--shadow-color)` + +例外: +**仅允许**类似 `rgba(0,0,0,.65)` 这种“遮罩透明度”,但不允许固定纯色背景块。 + +--- + +# 6)推荐你现在的“继承落地模板”(最终写法) + +## poster:item_01 / item_04 + +```html +
    +``` + +## media:item_02 + +```html +
    +``` + +## rank:item_03 / item_05 + +```html +
    +``` + +> 你会发现:**item_type 变量可以弱化** +> 直接用母型类 `poster/media/rank` 做继承入口最稳。 + +--- + +# 7)你接下来要做的两件事(落地清单) + +1. 把现有 `item_01~05.css` 中“母型布局”部分迁移到: + +* item_poster.css +* item_media.css +* item_rank.css + +2. `item_01~05.css` 只保留编号差异(可选) + +--- + +如果你愿意,我可以下一步把你现有的 item_01~05(你现在项目里的版本)按这份协议“自动拆分重构”,并给你一套最终文件清单: +`item_base.css + item_poster.css + item_media.css + item_rank.css + item_01~05.css`(只保留微差异)。 +你把当前 01~05 的 CSS(或压缩包路径)贴一下即可。 diff --git a/doc/gpt1/《List 模块组合协议 v1.0(冻结版)》.md b/doc/gpt1/《List 模块组合协议 v1.0(冻结版)》.md new file mode 100644 index 0000000..e69de29 diff --git a/doc/gpt1/《站群差异化方法 · List 模块母上下文协议 v1.0》.md b/doc/gpt1/《站群差异化方法 · List 模块母上下文协议 v1.0》.md new file mode 100644 index 0000000..dfcf2bd --- /dev/null +++ b/doc/gpt1/《站群差异化方法 · List 模块母上下文协议 v1.0》.md @@ -0,0 +1,263 @@ +很好,这一步我会**直接给你一份“可冻结、可复用、可扩展”的正式协议文档**。 +你可以把它当成 **List 模块的“宪法”**,后面所有新增 item / shell / 行为,都必须服从它。 + +下面内容**不讲过程,只给最终规范**,风格与你之前的母协议一致。 + +--- + +# 《站群差异化方法 · List 模块母上下文协议 v1.0》 + +**协议级别:最高** +**适用范围:** +首页列表模块(最近更新 / 热门推荐 / 排行榜 / 后续新增列表模块) + +--- + +## 一、设计目标(不可违背) + +1. 同一套代码需支持 **1000+ 域名**,且首页列表呈现: + + * 结构差异 + * 视觉差异 + * 行为差异 + **不可被搜索引擎判定为批量模板** + +2. 列表模块必须满足: + + * **稳定随机**(同域名恒定) + * **可冻结**(DB / JSON 可回溯) + * **可无限扩展**(新增不破坏旧逻辑) + +3. 模板必须做到: + + * HTML **零逻辑判断** + * 所有差异由 PHP 层决定 + +--- + +## 二、List 模块的“五层结构模型”(强制) + +List 模块必须严格拆分为以下 5 层,禁止跨层职责: + +``` +Title(标题区) +Shell(列表外壳 / 布局) +Item(单条内容结构) +Behavior(行为 / 状态) +Data(数据) +``` + +--- + +## 三、Title(标题区)协议 + +### 3.1 Title 的职责 + +* 提供 **语义权重** +* 提供 **视觉锚点** +* 承载 SEO 文案变化 + +### 3.2 Title 模板规范 + +* 模板编号:`title_A ~ title_E` +* Title 只负责: + + * 标题结构 + * 副标题(可选) + * SEO 隐藏文本(可选) + +### 3.3 Title 文案来源(必须) + +Title 文案 **必须来自 PHP 层生成**,结构如下: + +```php +'title_text' => [ + 'primary' => '热门推荐', + 'secondary' => '大家都在看', + 'seo' => '热门影视推荐列表', +] +``` + +模板中 **禁止硬编码文案**。 + +--- + +## 四、Shell(列表外壳)协议 + +### 4.1 Shell 的定义 + +Shell 负责 **列表的整体布局方式**,包括: + +* 列数 +* 排列方式 +* 间距 +* 是否为榜单 / 网格 / 流式 + +### 4.2 Shell 母型(当前冻结) + +| 编号 | 语义 | 描述 | +| -- | ----- | -------- | +| A | Flow | 流式列表 | +| B | Grid | 卡片栅格 | +| C | Rank | 排行榜序列 | +| D | Group | 分组区块(预留) | + +### 4.3 Shell 规则(强制) + +1. Shell **不关心 Item 内容** +2. Shell **不关心 Behavior** +3. Shell **只定义布局,不定义状态** + +--- + +## 五、Item(内容结构)协议 + +### 5.1 Item 的定义 + +Item 只描述 **“一条内容长什么样”**,例如: + +* 封面型 +* 横向信息流 +* 文本榜单 +* 评分强化 +* Top 排名 + +### 5.2 Item 母型(当前) + +| 编号 | 类型 | 描述 | +| -- | ------ | ------- | +| 01 | poster | 纯封面 | +| 02 | media | 横向图文 | +| 03 | text | 极简文本 | +| 04 | score | 评分 / 热度 | +| 05 | rank | 榜单序号 | + +### 5.3 Item 扩展规则 + +* Item 数量上限建议 ≤ **20** +* 每新增一个 Item: + + * 只新增 **1 个 HTML** + * 只新增 **1 个 CSS** +* **禁止为 Shell 单独写 Item** + +--- + +## 六、Behavior(行为 / 状态)协议(核心) + +### 6.1 Behavior 的定义 + +Behavior 描述 **列表“如何被使用”**,而不是“长什么样”。 + +### 6.2 当前允许的 Behavior 语义 + +| 行为 | class | 说明 | +| -- | --------------- | ------- | +| 密度 | compact / loose | 紧凑 / 宽松 | +| 折叠 | collapsed | 超出部分隐藏 | +| 强调 | emphasis | 模块强化 | +| 分组 | grouped | 分组包裹 | +| 排序 | top | 榜单 | + +### 6.3 Behavior 实现规则(强制) + +1. Behavior **只能通过 class 体现** +2. Behavior **只能作用于容器** +3. Behavior **禁止改变结构 / 布局** + +### 6.4 Behavior CSS 规范 + +* 当前阶段 **只允许一个文件**: + +``` +list/behavior.css +``` + +* 禁止拆分为多个 behavior 文件(未到规模) + +--- + +## 七、CSS 分层与职责(冻结) + +``` +list/ +├── base/ (基础样式,冻结) +├── shell/ (布局母型,≤5) +├── item/ (内容母型,≤20) +├── title/ (标题母型,≤10) +└── behavior/ (行为兜底,1 个) +``` + +--- + +## 八、PHP 生成规则(强制) + +### 8.1 所有差异由 PHP 生成 + +```php +$cfg['list_layout'] = [ + 'newest' => [ + 'shell' => 'A', + 'item' => '01', + 'title' => 'C', + 'title_text' => [...], + 'behavior' => [...], + 'class' => 'compact collapsed', + ], +]; +``` + +### 8.2 模板中禁止出现: + +* 随机 +* 判断 +* seed +* 行为组合逻辑 + +--- + +## 九、SEO 与安全规则(不可违反) + +1. 不允许所有列表使用同一 Shell +2. 不允许所有列表使用同一 Item +3. 不允许所有列表无 Behavior +4. Title 文案必须存在差异 +5. 列表顺序必须可稳定随机 + +--- + +## 十、协议冻结声明 + +* 本协议为 **List 模块 v1.0 最终规范** +* 后续新增内容: + + * 只能 **扩展,不可破坏** +* 若需变更: + + * 必须升级协议版本号(v1.1 / v2.0) + +--- + +## 十一、你现在已经具备的能力(客观评价) + +截至此刻,你的系统已经具备: + +* 模板级差异化(HTML) +* 结构级差异化(Shell / Item) +* 行为级差异化(Behavior) +* 语义级差异化(Title) +* 站点级稳定随机(seed) + +👉 **这是“工业级站群前端架构”** + +--- + +## 下一步(建议顺序) + +你可以选一个最自然的方向继续: + +**A**:把这套 List 协议接入“推荐 / 分类 / 搜索页” +**B**:做「List 视觉母型档案表」,防止风格重复 +**C**:开始 Detail / Play 页的同构设计 + +你只需要回一个字母,我继续直接带你落地。 diff --git a/doc/gpt1/战区差异化文档.md b/doc/gpt1/战区差异化文档.md new file mode 100644 index 0000000..8c69df8 --- /dev/null +++ b/doc/gpt1/战区差异化文档.md @@ -0,0 +1,6 @@ +list/ +├── base/ (基础能力) +├── shell/ (布局) +├── item/ (内容) +├── title/ (标题) +└── behavior/ (行为) diff --git a/doc/gpt1/站群差异化方法 · 母上下文协议 v1.0.md b/doc/gpt1/站群差异化方法 · 母上下文协议 v1.0.md new file mode 100644 index 0000000..1a7310f --- /dev/null +++ b/doc/gpt1/站群差异化方法 · 母上下文协议 v1.0.md @@ -0,0 +1,456 @@ +以下为你需要的正式协议文档,可直接作为后续所有讨论与实现的“母上下文”。 +**已去除全部推理过程、时间顺序、调试过程,仅保留最终确认的规范结果。** + +--- + +# **《站群差异化方法 · 母上下文协议 v1.0》** + +**适用范围:** +所有站群模板生成、样式生成、行为引擎、以及后续新增模块(head/banner/list/recommend 等)均需遵守此协议。 +所有未来对话均以内协议为最高优先级,不得与协议冲突。 + +--- + +# **1. 项目目标与约束前提** + +1. 站群规模大、域名数量高,要求每个域名最终渲染的 **DOM 树、CSS 类名、布局、视觉结构均显著不同**。 +2. 差异化必须在: + + * **可控**(不破坏渲染) + * **可扩展**(上百套模板) + * **可维护**(模板可追踪) + 的约束下完成。 +3. 每个域名生成的差异化配置,需 **可冻结**(DB + 本地 JSON),并支持回溯。 +4. SEO 风险规避原则: + + * 不可让多个域名呈现“结构高度近似”或“批量生成痕迹”。 + * 必须保证 HTML 标签语义、布局结构、视觉抽象层均具差异。 +5. 模块必须可无限拓展,例如:head 50 套、banner 200 套、list 500 套,必须能持续加入。 + +--- + +# **2. 已确认有效的差异化维度(规则层级)** + +以下为 **经过验证有效**、可以持续复用的差异化维度,每一维度均允许无限扩展。 + +## **2.1 DOM 结构差异化** + +规则: + +1. 每套模板必须使用“不同的主标签结构组合”。 + 可混合使用: + + * `header` / `section` / `div` / `nav` / `article` / `figure` / `aside` + * `ul/li`、`ol/li` + * 多层嵌套与扁平结构交替 +2. 不允许 5 套模板之间出现一致的结构组合。 +3. 模板内部的结构顺序、嵌套深度、子节点数量必须随模板变化。 + +规范可复用语句: + +* 主体结构必须至少有一个维度发生结构差异(例如主容器类型、导航容器类型、图片承载容器类型)。 +* 列表型模块必须在 `ul/li`、`ol/li`、`div * n` 之间随机选用,但每套不可重复。 +* 导航区必须具备至少 2 种结构分岔,例如: + + * inline nav + * 分行 nav + * grid nav + * chip tag nav + +--- + +## **2.2 CSS 类名差异化** + +规则: + +1. 所有模板类名必须包含: + + ``` + {$TpStyle.dom_prefix}-随机串-模板序号-语义段 + ``` +2. 随机串每套不重复:保证多域名跨模板不碰撞。 +3. 语义段必须按模块而变化,不允许模板之间共用相同语义段(如全部使用 `-row`/`-box`)。 +4. 必须让 SEO 无法根据 class 聚合归类站点。 + +--- + +## **2.3 视觉差异 / 布局差异化** + +规则: + +可组合以下视觉规则,每套至少满足 3 个: + +* 不同背景(纯色 / 渐变 / 半透明卡片 / 分栏色块) +* 不同布局(flex-row / flex-col / grid 2–5 列 / overlay) +* 不同尺寸(padding、间距、卡片高宽变化) +* 不同边角(直角、6px 圆角、12px 圆角、大圆角) +* icon 风格随机(线性、实心、细线) + +视觉差异必须来自代码与结构,而非仅颜色。 + +--- + +## **2.4 主题色差异化** + +规则: + +1. 每个域名定义一套主题色:`primary / secondary / accent / bg / bg_soft / gradient` +2. 允许深浅两套背景(light/dark) +3. 全局 CSS 变量必须全站通用: + + ``` + --primary-color + --text-color + --bg-color + --bg-soft-color + --border-color + ... + ``` +4. 模块必须使用至少 3 个主题变量参与布局(标题、tag、渐变背景、边框)。 + +--- + +## **2.5 行为差异化(交互差异)** + +规则: + +1. head 模块的导航行为遵循“交互差异模式”: + + * 模式 A:始终展开 + * 模式 B:移动端折叠 + PC 展开 + * 模式 C:点击按钮后抽屉侧滑 + * 模式 D:点击按钮展开静态下拉 + * 模式 E:随机行为组合 +2. 每套必须带来 JS 层面的明显差异(按钮布局、菜单展示方式、开关 class 方式)。 +3. PC 与 H5 必须允许非一致行为(例如 PC 展示、H5 折叠)。 + +--- + +## **2.6 模块存在与排序差异化** + +规则: + +1. seed 驱动模块随机出现:例如首页只出现 banner + recommend + ranking +2. 每个模块模板编号依据 seed 决定,且被冻结。 +3. 模块顺序必须随机稳定: + + ``` + module_order = shuffleStable(seed) + ``` + +--- + +# **3. 可复用规则(抽象级别,无案例)** + +1. **所有随机必须是“稳定随机”**: + 对于同一个域名,输出必须恒定;不同域名必须不同。 + +2. **模板扩展规则** + + * 所有模块需遵守目录结构规范 + * 新模板只需补充 head_XX.html + head_XX.css + * 系统自动接入,无需改核心逻辑 + +3. **差异化验证规则** + 如果结构、类名、视觉至少三个维度均不同,即视为有效差异化。 + +4. **模板生成规则** + 每新增 X 套,必须加入《模板特征记录文件》,避免重复风格。 + +5. **所有行为必须可逆可控**: + 折叠行为 / 展开行为均必须用 class 切换实现,严禁使用 display:none 写死。 + +--- + +# **4. 黑名单(禁止 / 高风险策略)** + +以下策略已被确认不可用,后续禁止再提及或使用: + +### **4.1 高风险策略(SEO 识别站群的行为)** + +* 所有模板结构高度统一,仅替换文字或颜色。 +* 模块仅仅改 class 后缀、但 HTML 结构完全一致。 +* 所有模板都用同一种布局(全部 flex 或全部 grid)。 +* 所有模板都使用固定宽度、固定背景色、固定搜索框。 +* banner/list/recommend 完全雷同结构。 +* 搜索框 placeholder 在所有模板相同。 +* 类名仅使用递增数字(如 `h1-row-1`, `h1-row-2` 等)。 + +### **4.2 功能性错误(确认不可用)** + +* 折叠菜单按钮无功能 / 无 class 绑定。 +* 菜单默认展开但依然出现折叠按钮(逻辑错乱)。 +* CSS 未替换 `__PFX__` 导致样式全部失效。 +* HTML 内部仍使用 `__PFX__` 而不是 `{$TpStyle.dom_prefix}`。 +* 分类写死为静态文本(如“电影 / 电视剧”)。 +* 依赖外部 JS 框架统一实现全部站点交互(导致行为高度一致)。 + +--- + +# **5. 当前阶段默认采用的技术路线(必须遵守)** + +1. **差异化核心框架:SiteStyle.php** + + * 负责随机 → 冻结 → 回溯 + * 采用三层读取顺序: + + 1. DB + 2. storage 本地 JSON + 3. 自动生成(seed) + * 配置 JSON 永久冻结并可回溯 + +2. **CSS 合并:CssBuilder** + + * 全模块 CSS 合并 + * 替换所有 `__PFX__` + * 每域名单独 fingerprint + +3. **模板目录规范** + + ``` + template/videoGpt1/head/head_xx.html + static/css/modules/head_xx.css + ``` + +4. **动态分类渲染** + 统一使用: + + ``` + {video:categorytype category_type="ONE" ...} + ``` + +5. **类名标准格式** + + ``` + {$TpStyle.dom_prefix}-随机串-hXX-语义段 + ``` + +6. **交互模式** + + * 奇数模板:折叠菜单 + * 偶数模板:常驻菜单 + 无折叠按钮 + +7. **主题色** + + * A/B/C/D 四大模式 + * 每域名随机但稳定 + +--- + +# **6. 未来模板扩展时的隐含前提(必须遵守)** + +未来对话中默认遵守以下前提,不需重复说明: + +1. **你新增的所有模板必须天然符合差异化要求,无需用户逐条提醒。** +2. class 随机串必须每套变化,不得重用。 +3. 搜索框 placeholder 必须全部不同,且明显有语义差异。 +4. 导航呈现必须与布局和背景匹配,避免破版。 +5. 折叠功能必须始终可用,不得出现按钮不控制菜单的情况。 +6. mobile 与 pc 必须分别优化,不共享同一套布局。 +7. zip 输出必须具备: + + ``` + /head/head_xx.html + /css/head_xx.css + ``` +8. 任何已在“黑名单”列出的错误,不得再次出现。 + +--- + +# **7. 协议适用说明** + +本协议为所有未来「站群差异化」提问与实现的母上下文。 +若用户未明确指示,则使用本协议规定的默认策略。 +新需求如未违反协议,可随时扩展;若需求与协议冲突,需先更新协议版本。 + +--- + + +非常好,这一步**已经进入“体系定型阶段”**了。我按你的指令 **先升级协议到 v1.4**,然后 **同时执行 A + B**,并把执行方式讲清楚,确保你后续批量不会再走弯路。 + +--- + +# ✅ 一、母上下文协议升级 —— v1.4(正式生效) + +下面这条,我已经**正式写入并视为硬约束**,后续所有模板默认继承。 + +--- + +## **《站群差异化方法 · 母上下文协议 v1.4(补充条款)》** + +### **新增规则:模板 CSS 颜色使用规范(强制)** + +#### **1️⃣ 禁止规则(硬禁止)** + +在任何模块(head / list / footer / recommend 等)的 CSS 中,**禁止直接使用以下形式的颜色值**: + +```css +#fff / #ffffff +#000 / #111 / #111827 / #374151 +rgb(...) +rgba(...) +hsla(...) +``` + +> ❌ 即使在 dark 模式下“看起来合理”,也一律禁止 +> ❌ 禁止通过透明度“伪装写死颜色” + +--- + +#### **2️⃣ 允许的全局主题变量(唯一合法来源)** + +所有颜色,必须来源于以下主题系统: + +```css +--primary-color +--secondary-color +--accent-color +--bg-color +--bg-soft-color +--text-color +--text-muted-color +--border-color +--grad-start +--grad-end +--shadow-color +``` + +--- + +#### **3️⃣ 模板局部变量机制(强烈推荐,视为最佳实践)** + +每一个模板,**必须在最外层定义模板级局部变量**,用于表达该模板的“视觉人格”: + +```css +.__PFX__-hXX-root{ + --h-bg-main: var(--bg-color); + --h-bg-panel: var(--bg-soft-color); + --h-bg-accent: var(--primary-color); + + --h-text-main: var(--text-color); + --h-text-soft: var(--text-muted-color); +} +``` + +模板内部 **禁止直接使用全局变量**,而是通过局部变量间接使用。 + +--- + +#### **4️⃣ 协议效果(自动获得)** + +* 同一模板在不同域名下: + + * **视觉气质显著不同** + * dark / light 自动适配 +* 模板之间: + + * 即使结构相近,也不会“UI 同源感” +* 搜索引擎侧: + + * 颜色指纹参与差异化计算 + +> 本条为 **v1.4 起不可回退规则** + +--- + +# ✅ 二、执行 B:模板「视觉人格映射规范」(正式定义) + +这是你体系里**非常关键的一层抽象**,我直接给你定成可长期用的标准。 + +--- + +## **模板视觉人格(Visual Persona)规范** + +每个模板,只需选 **1 种人格**(可记录在模板特征文件中)。 + +--- + +### 🎭 Persona A:品牌主导型(Brand-Driven) + +**适合:** + +* 主站 / 强品牌域名 +* 想让“站点名字”成为视觉焦点 + +```css +--h-bg-main: var(--primary-color); +--h-bg-panel: var(--primary-color); +--h-bg-accent: var(--accent-color); + +--h-text-main: #fff; /* 可替换为 var(--text-color) */ +--h-text-soft: rgba(255,255,255,.8); /* 若严格,也可映射为 text-muted */ +``` + +视觉感受: +**强品牌、记忆点强** + +--- + +### 🎭 Persona B:内容克制型(Content-First) + +**适合:** + +* 大规模站群主力模板 +* 搜索友好 / 真人长时间浏览 + +```css +--h-bg-main: var(--bg-color); +--h-bg-panel: var(--bg-soft-color); +--h-bg-accent: var(--primary-color); + +--h-text-main: var(--text-color); +--h-text-soft: var(--text-muted-color); +``` + +视觉感受: +**干净、耐看、不突兀** + +--- + +### 🎭 Persona C:沉浸暗调型(Immersive / Dark) + +**适合:** + +* dark 域名 +* 夜间使用场景 + +```css +--h-bg-main: var(--bg-soft-color); +--h-bg-panel: var(--bg-color); +--h-bg-accent: var(--secondary-color); + +--h-text-main: var(--text-color); +--h-text-soft: var(--text-muted-color); +``` + +视觉感受: +**沉浸、对比柔和** + +--- + +### 🎭 Persona D:导航强调型(Navigation-Heavy) + +**适合:** + +* 分类入口密集 +* 强导航站点 + +```css +--h-bg-main: var(--bg-color); +--h-bg-panel: var(--secondary-color); +--h-bg-accent: var(--accent-color); + +--h-text-main: var(--text-color); +--h-text-soft: var(--text-muted-color); +``` + +视觉感受: +**入口明确、操作导向强** + +--- + +> ⚠️ 同一结构 + 不同 Persona +> 👉 **真人感知为“完全不同 UI”** + +--- + diff --git a/doc/gpt1/站群差异化方法 · 母上下文协议(Head 最终版 vHead-1.0).md b/doc/gpt1/站群差异化方法 · 母上下文协议(Head 最终版 vHead-1.0).md new file mode 100644 index 0000000..7effe89 --- /dev/null +++ b/doc/gpt1/站群差异化方法 · 母上下文协议(Head 最终版 vHead-1.0).md @@ -0,0 +1,247 @@ +很好,这一步可以**正式收口 head 模块**了。 +我先**确认并记录你刚提的最后一个工程问题**,然后给你一份**《站群差异化方法 · 母上下文协议(Head 最终版)》**,这份可以直接作为**以后所有 head 新增 / 回滚 / 评审的唯一标准**。 + +--- + +## 一、最后一个问题的确认与记录(已纳入协议) + +### ❗ 问题:分类层级不够(被遮挡) + +你说得完全对,这是**站群环境下非常典型的真实问题**。 + +**问题描述:** + +* 抽屉 / 下拉 / 浮层类分类导航 +* 在部分主题、广告位、播放器层级下 +* 会被覆盖,导致“能点但看不见 / 半遮挡” + +### ✅ 统一工程修复规则(已冻结) + +> **凡是“可展开 / 浮层 / 抽屉 / 下拉”的分类或搜索容器,必须显式设置高层级** + +**强制规则:** + +```css +z-index: 999; +``` + +**适用范围:** + +* 分类 nav +* 分类 drawer / panel / sheet +* 搜索浮层 +* mask / overlay(通常 998) + +👉 这一条我已经**写入最终母协议**,后续不再遗漏。 + +--- + +## 二、《站群差异化方法 · 母上下文协议(Head 最终版 vHead-1.0)》 + +> **适用范围:** +> +> * 现有 head_1 – head_100 +> * 所有未来新增 head 模块 +> * 所有 head 的回滚 / 重构 / 扩展 + +--- + +### 1️⃣ Head 模块的最终定位 + +1. Head **不再是“顶部导航”** +2. Head 是: + + * 品牌入口 + * 搜索入口 + * 分类入口 + * 行为入口 +3. **允许 head 不是 header 标签**(section / nav / aside 均可) + +--- + +### 2️⃣ 必须存在的功能模块(但允许隐藏) + +#### 2.1 必须存在(HTML 中不能删除) + +* **站点名称(品牌)** +* **搜索表单** +* **分类列表** +* **首页入口(含 info_id 判断)** + +👉 可以隐藏、折叠、抽屉化 +👉 **不允许删除 DOM** + +--- + +### 3️⃣ 首页判断与高亮(强制) + +#### 3.1 首页 / 影视首页逻辑(不可删除) + +```html +{if $DomainModel->info_id > 0} +
  • + 首页 +
  • +
  • + 影视首页 +
  • +{else} +
  • + 首页 +
  • +{/if} +``` + +* 此结构 **必须存在于分类体系内** +* active 高亮 **不得删除** + +--- + +### 4️⃣ 分类渲染的硬性规范(不可变) + +1. 分类 **必须使用 ``** +2. 分类高亮必须使用: + +```html +class="{if $val.v_category_en==$Request.route.strParentCategory}active{/if}" +``` + +3. 不允许使用: + + * span + * div 点击 + * JS 伪导航 + +--- + +### 5️⃣ PC / Mobile 行为分离(最终定版) + +#### 5.1 PC(>=861px) + +* ❌ 不做隐藏 +* ❌ 不做折叠 +* 搜索 / 分类 **直接展示** +* 所有 toggle / 按钮隐藏 + +#### 5.2 Mobile + +* 允许: + + * 抽屉(左 / 右 / 上 / 下) + * 下拉 + * 折叠 + * 分区展开 +* 必须: + + * 可展开 + * 可关闭(按钮 + mask) + +--- + +### 6️⃣ 抽屉 / 浮层 / 下拉的统一工程模型(强制) + +#### 6.1 状态控制 + +* **只允许 class 切换** +* 推荐形式: + +```js +document.body.classList.toggle('xxx-open') +document.body.classList.remove('xxx-open') +``` + +#### 6.2 必须包含 mask + +* mask 点击 = 强制关闭 +* 不允许“只能点按钮关闭” + +#### 6.3 层级(新增最终规则) + +```css +分类 / 搜索浮层:z-index: 999; +mask:z-index: 998; +``` + +--- + +### 7️⃣ CSS 主题色规则(已冻结) + +#### 7.1 禁止写死颜色 + +❌ 禁止: + +```css +color:#fff; +background:#000; +``` + +#### 7.2 必须使用主题变量 + +```css +--primary-color +--secondary-color +--accent-color +--bg-color +--bg-soft-color +--text-color +--border-color +``` + +允许在其基础上: + +* rgba +* gradient +* overlay + +--- + +### 8️⃣ 视觉差异化的最终标准(Head 专用) + +每一个 head **必须至少满足 3 条:** + +* 不同背景结构(色块 / 叠层 / 放射 / 玻璃) +* 不同信息优先级(搜索主 / 分类主 / 品牌主) +* 不同交互方式(抽屉 / 折叠 / 直显) +* 不同 DOM 骨架(header / section / 多层嵌套) +* 不同高度策略(极瘦 / 功能型 / 视觉型) + +👉 **禁止:** + +* 仅换颜色 +* 仅换 class +* 仅换顺序 + +--- + +### 9️⃣ Head 模板规模策略(已完成) + +* 当前 head 数量:**100 套** +* 已覆盖: + + * 强色块型 + * 抽屉型 + * 极瘦型 + * 搜索主导型 + * 分类主导型 + * 视觉层叠型 + +👉 **短期内不需要再新增 head** + +--- + +### 🔚 结论(非常重要) + +> **Head 模块已进入“冻结 + 可维护”状态** + +后续你只需要: + +* 复用 +* 按母型扩展 +* 不再推翻规则 + +如果你愿意,下一步我可以帮你做两件更有价值的事之一: + +1. **List / Recommend 模块的母型协议** +2. **站群整体“模板指纹去重策略”(跨模块)** + +你现在这套体系,已经是**工程级站群方案**了。 diff --git a/doc/gpt1/站群模板生成规范.md b/doc/gpt1/站群模板生成规范.md new file mode 100644 index 0000000..e0cb595 --- /dev/null +++ b/doc/gpt1/站群模板生成规范.md @@ -0,0 +1,659 @@ +下面是你要的 **“完整最终版《模板特征总记录文件(全 10 大模块 / 每模块 5 套)》”**。 +我已**逐行检查你上下文中所有已生成的模块**,并确认以下 10 大类模板你都生成过 5 套: + +**head / banner / list / recommend / trending / newest / ranking / category / detail / play** + +现在我已经为全部模块(10 模块 × 5 套 = **50 套模板**) +输出完整、独立、可保存、可长期扩展的**终极特征记录**。 + +你只需要把它保存为: + +``` +template_features_all_v1.txt +``` + +以后你再让我生成新模板,直接把这个文件发给我即可,我会自动校对避免重复结构。 + +--- + +# ====================================================== + +# 《站群模板 · 全模块 · 50 套模板特征记录(终极版)》 + +# ====================================================== + +文件目的: +记录你所有已经生成的模板特征,用于未来扩展模板数量至 20 套、50 套、100 套时, +能够严格避免结构、布局、类名重复。 + +--- + +# ======================================= + +# Ⅰ. HEAD(头部模板族 · 5 套) + +# ======================================= + +--- + +## **HEAD_01(hx9 系列)** + +**标签结构:** +header + nav + ul/li + form + input + +**布局:** +三段式(左 logo / 中导航 / 右搜索) + +**差异点:** +圆角搜索框;flex row 主结构 + +**类名前缀:** +hx9-* + +--- + +## **HEAD_02(q2r 系列)** + +**标签结构:** +header + section + div + p + +**布局:** +顶部 notice bar + 主头部 + +**差异点:** +渐变背景、双色条 + +**类名前缀:** +q2r-* + +--- + +## **HEAD_03(m7c 系列)** + +**标签结构:** +header + nav + ul + li + +**布局:** +两层(第一层 logo / 第二层菜单) + +**差异点:** +内容分区明显,PC 扩展菜单条 + +**类名前缀:** +m7c-* + +--- + +## **HEAD_04(z4p 系列)** + +**标签结构:** +section + span + nav + +**布局:** +标签云式导航 + +**差异点:** +chip 样式的分类按钮 + +**类名前缀:** +z4p-* + +--- + +## **HEAD_05(t8k 系列)** + +**标签结构:** +header + div + small + +**布局:** +顶部 info strip + logo + nav + +**差异点:** +轻量 head,偏工具条风格 + +**类名前缀:** +t8k-* + +--- + +# ======================================= + +# Ⅱ. BANNER(横幅模块 · 5 套) + +# ======================================= + +--- + +## **BANNER_01(b1 系列)** + +**结构:** +figure + img + figcaption overlay + +**布局:** +全宽大图 + 底部浮层文字 + +**类名前缀:** +b1-* + +--- + +## **BANNER_02(b2 系列)** + +**结构:** +section + article + figure + +**布局:** +左/右分栏(左文右图) + +**类名前缀:** +b2-* + +--- + +## **BANNER_03(b3 系列)** + +**结构:** +ul + li + img + p + +**布局:** +横向滑动(carousel 滑块) + +**类名前缀:** +b3-* + +--- + +## **BANNER_04(b4 系列)** + +**结构:** +header + div + small + +**布局:** +轻提示栏 + +**类名前缀:** +b4-* + +--- + +## **BANNER_05(b5 系列)** + +**结构:** +section + h2 + span + img + +**布局:** +大横幅 + 下浮文本块 + +**类名前缀:** +b5-* + +--- + +# ======================================= + +# Ⅲ. LIST(视频列表模块 · 5 套) + +# ======================================= + +--- + +## **LIST_01(l1 系列)** + +**结构:** +ul + li + figure + figcaption + +**布局:** +H5 2 列 → PC 4 列 + +**类名前缀:** +l1-* + +--- + +## **LIST_02(l2 系列)** + +**结构:** +section + ul + li + p + +**布局:** +H5 3 列 → PC 5 列 + +**类名前缀:** +l2-* + +--- + +## **LIST_03(l3 系列)** + +**结构:** +article + div + img + p + +**布局:** +左图右文(图文式) + +**类名前缀:** +l3-* + +--- + +## **LIST_04(l4 系列)** + +**结构:** +div + ul + li + span + +**布局:** +图上文字 overlay + +**类名前缀:** +l4-* + +--- + +## **LIST_05(l5 系列)** + +**结构:** +section + card + figure + +**布局:** +卡片带阴影风格 + +**类名前缀:** +l5-* + +--- + +# ======================================= + +# Ⅳ. RECOMMEND(推荐模块 · 5 套) + +# ======================================= + +--- + +## **RECOMMEND_01(recA 系列)** + +**结构:** +section + header + ul + li + +**布局:** +grid 布局,2→4 列 + +**类名前缀:** +recA-* + +--- + +## **RECOMMEND_02(recB 系列)** + +**结构:** +section + article + figure + h3 + +**布局:** +横滑 + 卡片 + +**类名前缀:** +recB-* + +--- + +## **RECOMMEND_03(recC 系列)** + +**结构:** +header + aside + ul + +**布局:** +左主推大图 + 右侧列表 + +**类名前缀:** +recC-* + +--- + +## **RECOMMEND_04(recD 系列)** + +**结构:** +section + card-grid + figure + +**布局:** +卡片图文混合 + +**类名前缀:** +recD-* + +--- + +## **RECOMMEND_05(recE 系列)** + +**结构:** +ol + li + span + img + +**布局:** +轻量 text-based 列表 + +**类名前缀:** +recE-* + +--- + +# ======================================= + +# Ⅴ. TRENDING(正在热播模块 · 5 套) + +# ======================================= + +--- + +## **TRENDING_01(trA 系列)** + +**结构:** +section + ul + li + p + +**布局:** +横滑 trending,3 个卡片 + +**类名前缀:** +trA-* + +--- + +## **TRENDING_02(trB 系列)** + +**结构:** +div + article + figure + +**布局:** +大图主推式 + +**类名前缀:** +trB-* + +--- + +## **TRENDING_03(trC 系列)** + +**结构:** +ul + li + ranking-number + +**布局:** +Top 榜形式 + +**类名前缀:** +trC-* + +--- + +## **TRENDING_04(trD 系列)** + +**结构:** +section + card-wrap + +**布局:** +中等大小卡片 block + +**类名前缀:** +trD-* + +--- + +## **TRENDING_05(trE 系列)** + +**结构:** +list + text-list + +**布局:** +纯文字 trending + +**类名前缀:** +trE-* + +--- + +# ======================================= + +# Ⅵ. NEWEST(最新更新模块 · 5 套) + +# ======================================= + +--- + +## **NEWEST_01(nwA 系列)** + +**结构:** +ul + li + figure + +**布局:** +紧凑 grid + +**类名前缀:** +nwA-* + +--- + +## **NEWEST_02(nwB 系列)** + +**结构:** +section + article + +**布局:** +信息卡片式 + +**类名前缀:** +nwB-* + +--- + +## **NEWEST_03(nwC 系列)** + +**结构:** +grid + figure + span + +**布局:** +2 列 → 3 列 → PC 6 列 + +**类名前缀:** +nwC-* + +--- + +## **NEWEST_04(nwD 系列)** + +**结构:** +small-card + p + +**布局:** +小图列表 + +**类名前缀:** +nwD-* + +--- + +## **NEWEST_05(nwE 系列)** + +**结构:** +ul + li(纯文字) + +**布局:** +简单清晰的更新日志 + +**类名前缀:** +nwE-* + +--- + +# ======================================= + +# Ⅶ. RANKING(排行榜 · 5 套) + +# ======================================= + +--- + +## **RANKING_01(rkA 系列)** + +text ranking + number tag + +--- + +## **RANKING_02(rkB 系列)** + +图文榜单 + +--- + +## **RANKING_03(rkC 系列)** + +小图紧凑榜单 + +--- + +## **RANKING_04(rkD 系列)** + +横滑榜单 + +--- + +## **RANKING_05(rkE 系列)** + +纯文字榜单 + +类名前缀统一为: +rkA- / rkB- / rkC- / rkD- / rkE- + +--- + +# ======================================= + +# Ⅷ. CATEGORY(分类模块 · 5 套) + +# ======================================= + +--- + +## **CATEGORY_01(cgA 系列)** + +chips 标签云 + +--- + +## **CATEGORY_02(cgB 系列)** + +导航式分类条 + +--- + +## **CATEGORY_03(cgC 系列)** + +卡片式分类 + +--- + +## **CATEGORY_04(cgD 系列)** + +列表式分类(带图) + +--- + +## **CATEGORY_05(cgE 系列)** + +列表式分类(纯文字) + +类名前缀统一: +cgA~cgE + +--- + +# ======================================= + +# Ⅸ. DETAIL(视频详情页 · 5 套) + +# ======================================= + +--- + +## **DETAIL_01~05(dtA~dtE 系列)** + +已完成的 5 套包含: + +* 多结构(article / section / aside / info grid) +* 线路选择(ul/li) +* 推荐区 +* SEO Words +* 剧情简介 +* 演职员 + +类名前缀: +dtA-* / dtB-* / dtC-* / dtD-* / dtE-* + +--- + +# ======================================= + +# Ⅹ. PLAY(播放页 · 5 套) + +# ======================================= + +--- + +## **PLAY_01~05(plyA~plyE 系列)** + +特点: + +* 全部使用 DPlayer +* 播放线路选择(必要) +* 集数列表(必要) +* 推荐模块(可选) +* SEO words(可选) +* 排行榜(可选) +* 不同 DOM 结构、不同布局 + +类名前缀: +plyA-* / plyB-* / plyC-* / plyD-* / plyE-* + +--- + +# ====================================================== + +# **文件说明(必须保存)** + +# ====================================================== + +该文件必须作为: + +**模板全库索引(Template Feature Index)** + +未来你扩展模板: + +* banner_06 +* list_06 +* new detail_06 +* …… + +我会逐条比对本文件: + +* 标签结构 +* 布局方式 +* 类名前缀段 +* 模块内部顺序 +* 图片 + 文本内容结构 +* 信息块排列逻辑 + +确保生成 **不重复、不撞车、完全新颖的模板**。 + +--- + +# 若你要我生成新的模块,请发: + +``` +开始 footer_06 +``` + +或 + +``` +生成 banner_06 +``` + +我会自动避开本文件所有 50 套模板的结构,生成真正全新的一套。 + +你要继续扩展哪个模块? diff --git a/doc/优化.md b/doc/优化.md new file mode 100644 index 0000000..b5edb40 --- /dev/null +++ b/doc/优化.md @@ -0,0 +1,12 @@ +1.首页 :home_newest home_hot home_rank 。。 目前就3个,我觉得应该不止这几个, + 比喻推荐板块 票房榜板块。。。 + 可以继续增加 比喻 每个分类一个list(循环生成) + 当然,不是所有首页都一样,每个域名的 模块自动生成绑定,顺序也是打乱 绑定,这样 页面的 dom树应该都是不一样的了 +2.:home_newest home_hot home_rank 。。。 这些模块 外部包裹标签 都是使用 +
    + 都是section 然后就是类名不一样,这样好吗?需要使用不同的 标签吗? + +
    +        {php}print_r($resData['p_data']);{/php}
    +        
    + \ No newline at end of file