From 90b3ccb0061afd390302cf1cef75ed5dc3fc0f42 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 26 Aug 2026 11:36:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E4=BA=86=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E5=B0=8F=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/css/frontend/footer.css | 5 +- assets/css/frontend/footer/part-1.css | 34 - assets/css/frontend/footer/part-2.css | 302 ------- assets/css/frontend/footer/part-3.css | 344 -------- assets/css/frontend/footer/part-4.css | 52 -- assets/css/frontend/footer/part.css | 732 +++++++++++++++++ assets/css/frontend/homepage-fixed/base-1.css | 424 ---------- assets/css/frontend/homepage-fixed/base-2.css | 101 --- assets/css/frontend/homepage-fixed/base-3.css | 210 ----- assets/css/frontend/homepage-fixed/base.css | 739 +++++++++++++++++- src/Core/ScriptsPart1b.php | 8 +- 11 files changed, 1471 insertions(+), 1480 deletions(-) delete mode 100644 assets/css/frontend/footer/part-1.css delete mode 100644 assets/css/frontend/footer/part-2.css delete mode 100644 assets/css/frontend/footer/part-3.css delete mode 100644 assets/css/frontend/footer/part-4.css create mode 100644 assets/css/frontend/footer/part.css delete mode 100644 assets/css/frontend/homepage-fixed/base-1.css delete mode 100644 assets/css/frontend/homepage-fixed/base-2.css delete mode 100644 assets/css/frontend/homepage-fixed/base-3.css diff --git a/assets/css/frontend/footer.css b/assets/css/frontend/footer.css index a01fdbfa..d7685144 100644 --- a/assets/css/frontend/footer.css +++ b/assets/css/frontend/footer.css @@ -1,5 +1,2 @@ -@import url("footer/part-1.css"); -@import url("footer/part-2.css"); -@import url("footer/part-3.css"); -@import url("footer/part-4.css"); +@import url("footer/part.css"); @import url("footer/shell.css"); diff --git a/assets/css/frontend/footer/part-1.css b/assets/css/frontend/footer/part-1.css deleted file mode 100644 index df13a453..00000000 --- a/assets/css/frontend/footer/part-1.css +++ /dev/null @@ -1,34 +0,0 @@ -/* ============================================================ - * AKSRT Footer utilities — float buttons start + device helpers - * Main template_1 shell: shell.css - * Tabbar / float details: part-2.css+ - * ============================================================ */ - -:root { - --aksrt-footer-tabbar-height: 49px; -} - -/* Device visibility utility classes */ -@media (max-width: 767px) { - .hide-on-mobile { display: none !important; } - .hidden-xs { display: none !important; } -} -@media (min-width: 768px) { - .hide-on-desktop { display: none !important; } - .hide-on-pc { display: none !important; } -} - -/* ============================================================ - * 浮动右侧按钮组(模仿 legacy float-right)— continued in part-2 - * ============================================================ */ -/* 对齐 legacy: bottom 60px, z-index 1030 */ -.float-right-btns { - position: fixed; - right: 20px; - bottom: 60px; - z-index: 1030; - display: flex; - flex-direction: column; - gap: 8px; - transition: opacity 0.3s ease; -} diff --git a/assets/css/frontend/footer/part-2.css b/assets/css/frontend/footer/part-2.css deleted file mode 100644 index 7397c9c7..00000000 --- a/assets/css/frontend/footer/part-2.css +++ /dev/null @@ -1,302 +0,0 @@ -} - -/* 对齐 legacy: 40px, 1.4em icon */ -.float-btn { - display: flex; - align-items: center; - justify-content: center; - width: 40px; - min-height: 40px; - border-radius: 50%; - border: none; - background: var(--float-btn-bg); - color: var(--color-ink-3); - box-shadow: var(--shadow-sm); - cursor: pointer; - transition: transform var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease); - font-size: 1.4em; - text-decoration: none; -} - -.float-btn:hover { - transform: translateY(-2px); - box-shadow: var(--shadow); - color: var(--color-primary); - background: var(--surface-page); - text-decoration: none; -} - -.float-btn:active { - transform: scale(0.95); -} - -/* 回到顶部按钮 — 滚动后显示 */ -.float-btn--top { - opacity: 0; - visibility: hidden; - transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.2s ease; -} - -.float-btn--top.is-visible { - opacity: 1; - visibility: visible; - display: flex; -} - -/* 主题切换按钮 */ -#float-theme-toggle .float-btn__icon-moon { - display: none !important; -} - -#float-theme-toggle .float-btn__icon-sun { - display: inline-block !important; -} - -#float-theme-toggle[aria-pressed="true"] .float-btn__icon-moon, -.theme-dark #float-theme-toggle .float-btn__icon-moon, -html.dark #float-theme-toggle .float-btn__icon-moon, -body.dark-theme #float-theme-toggle .float-btn__icon-moon { - display: inline-block !important; -} - -#float-theme-toggle[aria-pressed="true"] .float-btn__icon-sun, -.theme-dark #float-theme-toggle .float-btn__icon-sun, -html.dark #float-theme-toggle .float-btn__icon-sun, -body.dark-theme #float-theme-toggle .float-btn__icon-sun { - display: none !important; -} - -/* 移动端隐藏浮动按钮(用 tabbar 代替) */ -@media (max-width: 767px) { - .float-right-btns { - right: 12px; - bottom: 80px; - } - - .float-btn { - width: 38px; - height: 38px; - font-size: 14px; - } -} - -/* ============================================================ - * 移动端底部 Tab 栏(模仿 legacy footer-tabbar) - * ============================================================ */ -.footer-tabbar { - display: none; - position: fixed; - bottom: 0; - left: 0; - right: 0; - z-index: 1035; - min-height: var(--aksrt-footer-tabbar-height); - background: var(--blur-bg); - border-top: 1px solid var(--color-line-soft); - padding: 0 0 env(safe-area-inset-bottom, 0px); - justify-content: space-around; - align-items: center; - box-shadow: 0 -4px 5px var(--main-shadow, rgba(0, 0, 0, 0.06)); - -webkit-backdrop-filter: saturate(5) blur(20px); - backdrop-filter: saturate(5) blur(20px); - --tabbar-active-color: #f04494; - --tabbar-icon-size: 24px; - --tabbar-text-size: 10px; -} - -.footer-tabbar.no-border { - border-top: none; -} - -.footer-tabbar.no-shadow { - box-shadow: none; -} - -.footer-tabbar.hide-text .tabbar-item span { - display: none; -} - -.footer-tabbar.has-animation .tabbar-item { - transition: color 0.15s ease, transform 0.15s ease; -} - -.footer-tabbar.has-animation .tabbar-item:active { - transform: scale(0.9); -} - -.footer-tabbar-placeholder { - display: none; - height: calc(var(--aksrt-footer-tabbar-height) + env(safe-area-inset-bottom, 0px)); -} - -@media (max-width: 767px) { - .footer-tabbar { - display: flex; - } - - .footer-tabbar-placeholder { - display: block; - } - - /* 有 tabbar 时页脚需要额外底部间距 */ - .footer, - .site-footer { - padding-bottom: calc(var(--aksrt-footer-tabbar-height) + env(safe-area-inset-bottom, 0px)); - } -} - -.tabbar-item { - display: flex; - flex: 1 1 0; - min-width: 0; - flex-direction: column; - align-items: center; - justify-content: center; - gap: 1px; - min-height: 49px; - padding: 4px 0 3px; - color: var(--muted-color, var(--color-ink-3)); - font-size: 13px; - text-decoration: none; - border: none; - background: none; - cursor: pointer; - transition: color 0.15s ease; - -webkit-tap-highlight-color: transparent; - position: relative; -} - -/* 对齐 legacy: 24px 图标 */ -.tabbar-item i { - font-size: var(--tabbar-icon-size, 24px); - line-height: 1; -} - -.tabbar-item span { - display: block; - font-size: var(--tabbar-text-size, 10px); - font-weight: 500; - line-height: 1; - transform: scale(0.8); - transform-origin: center top; -} - -.tabbar-item:hover, -.tabbar-item.active { - color: var(--tabbar-active-color, var(--color-primary)); - text-decoration: none; -} - -.tabbar-item.active i { - font-weight: 900; -} - -.tabbar-badge { - position: absolute; - top: 2px; - right: 8px; - min-width: 16px; - height: 16px; - padding: 0 4px; - border-radius: 999px; - background: var(--color-error); - color: #fff; - font-size: 10px; - line-height: 16px; - font-style: normal; - font-weight: 700; - text-align: center; - box-shadow: 0 2px 8px rgba(239, 68, 68, 0.20); -} - -.tabbar-badge--dot { - min-width: 0; - width: 8px; - height: 8px; - padding: 0; - top: 4px; - right: 10px; - font-size: 0; - line-height: 1; - box-shadow: 0 0 0 2px var(--blur-bg); -} - -.tabbar-item--add { - margin-top: -22px; - width: 62px; - height: 62px; - min-height: 62px; - border-radius: 50%; - background: var(--color-accent); - color: #fff; - box-shadow: 0 12px 24px var(--color-accent-shadow); - flex: 0 0 62px; - z-index: 1; -} - -.tabbar-item--add i { - font-size: 22px; -} - -.tabbar-item--add span { - font-size: 11px; -} - -.tabbar-item--add:hover, -.tabbar-item--add.active { - color: #fff; -} - -.tabbar-add-backdrop { - position: fixed; - inset: 0; - z-index: 951; - background: rgba(15, 23, 42, 0.38); -} - -.tabbar-add-panel { - position: fixed; - left: 0; - right: 0; - bottom: 0; - z-index: 952; - padding: 0 12px calc(84px + env(safe-area-inset-bottom, 0px)); -} - -.tabbar-add-panel__sheet { - border-radius: 20px; - background: var(--surface-1); - border: none; - box-shadow: var(--shadow-drawer); - overflow: hidden; -} - -.tabbar-add-panel__head { - display: flex; - align-items: center; - justify-content: space-between; - padding: 16px 18px 12px; - border-bottom: 1px solid var(--color-line); -} - -.tabbar-add-panel__close { - width: 32px; - height: 32px; - border: 0; - border-radius: 50%; - background: var(--surface-2); - color: var(--color-ink-3); -} - -.tabbar-add-panel__list { - display: grid; - grid-template-columns: repeat(3, minmax(0, 1fr)); - gap: 12px; - padding: 18px; -} - -.tabbar-add-panel__item { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; diff --git a/assets/css/frontend/footer/part-3.css b/assets/css/frontend/footer/part-3.css deleted file mode 100644 index 1a197b7f..00000000 --- a/assets/css/frontend/footer/part-3.css +++ /dev/null @@ -1,344 +0,0 @@ - gap: 8px; - min-height: 88px; - border-radius: 18px; - background: var(--surface-2); - color: var(--color-ink-3); - text-decoration: none; -} - -.tabbar-add-panel__item i { - font-size: 22px; - color: var(--color-accent); -} - -.tabbar-add-panel__item span { - font-size: 13px; - font-weight: 600; -} - -.tabbar-search-overlay { - position: fixed; - inset: 0; - z-index: 953; - background: rgba(15, 23, 42, 0.58); - display: flex; - align-items: stretch; - justify-content: center; -} - -.tabbar-search-overlay__dialog { - width: 100%; - min-height: 100%; - background: var(--surface-1); - padding: 18px 16px calc(24px + env(safe-area-inset-bottom, 0px)); -} - -.tabbar-search-overlay__head { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 16px; -} - -.tabbar-search-overlay__close { - width: 36px; - height: 36px; - border: 0; - border-radius: 50%; - background: var(--surface-2); - color: var(--color-ink-3); -} - -.tabbar-search-overlay__form { - display: grid; - grid-template-columns: 20px 1fr auto; - gap: 10px; - align-items: center; - padding: 14px 14px 14px 12px; - border-radius: 18px; - border: none; - box-shadow: var(--shadow-sm); - background: var(--surface-4); -} - -.tabbar-search-overlay__icon { - color: var(--color-ink-4); -} - -.tabbar-search-overlay__form input { - min-width: 0; - border: 0; - background: transparent; - color: var(--color-ink); - font-size: 15px; - outline: none; -} - -.tabbar-search-overlay__submit { - border: 0; - border-radius: 12px; - padding: 10px 14px; - background: var(--color-accent); - color: #fff; - font-weight: 700; -} - -.tabbar-search-overlay__types { - display: flex; - gap: 8px; - margin-top: 14px; -} - -.tabbar-search-overlay__type { - border: 0; - border-radius: 999px; - padding: 9px 14px; - background: var(--surface-2); - color: var(--color-ink-3); - font-size: 13px; - font-weight: 600; -} - -.tabbar-search-overlay__type.is-active { - background: var(--color-accent-soft); - color: var(--color-accent); -} - -.tabbar-search-overlay__section { - margin-top: 20px; -} - -.tabbar-search-overlay__section-head { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 12px; -} - -.tabbar-search-overlay__label { - color: var(--color-ink-3); - font-size: 13px; - font-weight: 700; -} - -.tabbar-search-overlay__clear { - border: 0; - background: transparent; - color: var(--color-accent); - font-size: 12px; - font-weight: 700; -} - -.tabbar-search-overlay__history, -.tabbar-search-overlay__suggestions { - display: flex; - flex-direction: column; - gap: 10px; -} - -.tabbar-search-overlay__history-item, -.tabbar-search-overlay__suggestion-item { - display: flex; - align-items: center; - justify-content: space-between; - gap: 12px; - width: 100%; - border: none; - border-radius: 16px; - padding: 12px 14px; - background: var(--surface-4); - box-shadow: var(--shadow-sm); - color: var(--color-ink-3); - text-decoration: none; - text-align: left; -} - -.tabbar-search-overlay__history-item i { - color: var(--color-accent); -} - -.tabbar-search-overlay__history-item span, -.tabbar-search-overlay__suggestion-item span { - flex: 1; - min-width: 0; - font-size: 14px; - font-weight: 600; -} - -.tabbar-search-overlay__suggestion-item small { - color: var(--color-ink-4); - font-size: 12px; -} - -.tabbar-search-overlay__empty { - padding: 14px; - border-radius: 16px; - background: var(--surface-2); - color: var(--color-ink-4); - font-size: 13px; - text-align: center; -} - -.tabbar-search-overlay__tags { - display: flex; - flex-wrap: wrap; - gap: 10px; -} - -.tabbar-search-overlay__tag { - padding: 10px 14px; - border-radius: 999px; - background: var(--surface-2); - color: var(--color-ink-3); - text-decoration: none; - font-size: 13px; -} - -body.tabbar-search-open, -body.tabbar-add-open { - overflow: hidden; -} - -/* 滚动时隐藏 tabbar(可选,通过 JS 添加 class) */ -.footer-tabbar.scrolling-hide { - transform: translateY(100%); - transition: transform 0.3s ease; -} - -/* 向下滚动隐藏,向上滚动显示 */ -.footer-tabbar.scroll-down-hide { - transition: transform 0.3s ease; -} - -.footer-tabbar.scroll-down-hide.is-hidden { - transform: translateY(120%); -} - -/* 返回顶部包裹项(首页按钮 + 返回顶部切换) */ -.tabbar-ontop-wrap { - position: relative; -} - -.tabbar-ontop-wrap .tabbar-ontop-btn { - display: none; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - flex-direction: column; - align-items: center; - justify-content: center; - gap: 2px; - padding: 4px 12px; - color: var(--color-primary); - font-size: 13px; - text-decoration: none; - cursor: pointer; - -webkit-tap-highlight-color: transparent; -} - -.tabbar-ontop-wrap .tabbar-ontop-btn i { - font-size: 18px; - line-height: 1; -} - -.tabbar-ontop-wrap .tabbar-ontop-btn span { - font-weight: 500; - line-height: 1; - transform: scale(0.8); - transform-origin: center top; -} - -.tabbar-ontop-wrap.is-scrolled .tabbar-ontop-btn { - display: flex; -} - -.tabbar-ontop-wrap.is-scrolled > .tabbar-item:not(.tabbar-ontop-btn) { - opacity: 0; - pointer-events: none; -} - -/* ============================================================ - * 暗色模式适配 - * ============================================================ */ -.theme-dark .site-footer, -html.dark .site-footer { - background: var(--surface-1); -} - -.theme-dark .float-btn, -html.dark .float-btn { - background: var(--float-btn-bg); - box-shadow: var(--shadow-sm); -} - -.theme-dark .footer-tabbar, -html.dark .footer-tabbar { - background: var(--blur-bg); - box-shadow: 0 -1px 3px rgba(0, 0, 0, 0.20); -} - -/* ============================================================ - * 旧版 back-to-top 按钮兼容(隐藏,用浮动按钮代替) - * ============================================================ */ -.back-to-top { - display: none !important; -} - -/* ============================================================ - * 页脚布局模板变体 - * ============================================================ */ - -/* 紧凑模板:单行版权 + 链接 */ -.site-footer--compact .site-footer__grid { - display: flex; - flex-wrap: wrap; - align-items: center; - gap: 16px; -} - -.site-footer--compact .site-footer__brand { - flex: 1 1 100%; -} - - -/* Full-viewport search panel open state (desktop + mobile) */ -.tabbar-search-overlay[hidden] { - display: none !important; -} -.tabbar-search-overlay.is-open, -.tabbar-search-overlay.show:not([hidden]) { - display: flex; -} -.tabbar-search-overlay__dialog { - max-width: 720px; - margin: 0 auto; -} -@media (min-width: 768px) { - .tabbar-search-overlay { - align-items: flex-start; - padding-top: 8vh; - background: rgba(15, 23, 42, 0.45); - } - .tabbar-search-overlay__dialog { - min-height: auto; - max-height: min(84vh, 860px); - overflow: auto; - border-radius: 20px; - box-shadow: var(--shadow-lg, 0 20px 50px rgba(15, 23, 42, 0.22)); - } - .nav-searchbox--desktop { - display: none; - } - .main-search-btn.nav-search-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - } -} -@media (max-width: 767.98px) { - .main-search-btn.nav-search-toggle { - display: none; - } -} diff --git a/assets/css/frontend/footer/part-4.css b/assets/css/frontend/footer/part-4.css deleted file mode 100644 index a540d1c9..00000000 --- a/assets/css/frontend/footer/part-4.css +++ /dev/null @@ -1,52 +0,0 @@ - -.site-footer--compact .site-footer__brand .site-footer__desc, -.site-footer--compact .site-footer__brand .social-row, -.site-footer--compact .site-footer__brand .site-footer__friends { - display: none; -} - -.site-footer--compact .site-footer__col { - flex: 0 0 auto; -} - -.site-footer--compact .site-footer__col ul { - display: flex; - flex-wrap: wrap; - gap: 12px; - list-style: none; - padding: 0; - margin: 0; -} - -.site-footer--compact .site-footer__bottom { - border-top: 1px solid var(--color-line); - padding-top: 12px; - margin-top: 12px; -} - -/* 中央模板:居中品牌 + 链接 */ -.site-footer--centered .site-footer__grid { - text-align: center; -} - -.site-footer--centered .site-footer__brand { - flex: 1 1 100%; - display: flex; - flex-direction: column; - align-items: center; -} - -.site-footer--centered .site-footer__col { - flex: 1 1 auto; -} - -.site-footer--centered .site-footer__col ul { - list-style: none; - padding: 0; - margin: 0; - display: flex; - flex-wrap: wrap; - justify-content: center; - gap: 16px; -} - diff --git a/assets/css/frontend/footer/part.css b/assets/css/frontend/footer/part.css new file mode 100644 index 00000000..cbd114c9 --- /dev/null +++ b/assets/css/frontend/footer/part.css @@ -0,0 +1,732 @@ +/* ============================================================ + * AKSRT Footer utilities — float buttons start + device helpers + * Main template_1 shell: shell.css + * Tabbar / float details continue below. + * ============================================================ */ + +:root { + --aksrt-footer-tabbar-height: 49px; +} + +/* Device visibility utility classes */ +@media (max-width: 767px) { + .hide-on-mobile { display: none !important; } + .hidden-xs { display: none !important; } +} +@media (min-width: 768px) { + .hide-on-desktop { display: none !important; } + .hide-on-pc { display: none !important; } +} + +/* ============================================================ + * 浮动右侧按钮组(模仿 legacy float-right) + * ============================================================ */ +/* 对齐 legacy: bottom 60px, z-index 1030 */ +.float-right-btns { + position: fixed; + right: 20px; + bottom: 60px; + z-index: 1030; + display: flex; + flex-direction: column; + gap: 8px; + transition: opacity 0.3s ease; +} + +/* 对齐 legacy: 40px, 1.4em icon */ +.float-btn { + display: flex; + align-items: center; + justify-content: center; + width: 40px; + min-height: 40px; + border-radius: 50%; + border: none; + background: var(--float-btn-bg); + color: var(--color-ink-3); + box-shadow: var(--shadow-sm); + cursor: pointer; + transition: transform var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease); + font-size: 1.4em; + text-decoration: none; +} + +.float-btn:hover { + transform: translateY(-2px); + box-shadow: var(--shadow); + color: var(--color-primary); + background: var(--surface-page); + text-decoration: none; +} + +.float-btn:active { + transform: scale(0.95); +} + +/* 回到顶部按钮 — 滚动后显示 */ +.float-btn--top { + opacity: 0; + visibility: hidden; + transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.2s ease; +} + +.float-btn--top.is-visible { + opacity: 1; + visibility: visible; + display: flex; +} + +/* 主题切换按钮 */ +#float-theme-toggle .float-btn__icon-moon { + display: none !important; +} + +#float-theme-toggle .float-btn__icon-sun { + display: inline-block !important; +} + +#float-theme-toggle[aria-pressed="true"] .float-btn__icon-moon, +.theme-dark #float-theme-toggle .float-btn__icon-moon, +html.dark #float-theme-toggle .float-btn__icon-moon, +body.dark-theme #float-theme-toggle .float-btn__icon-moon { + display: inline-block !important; +} + +#float-theme-toggle[aria-pressed="true"] .float-btn__icon-sun, +.theme-dark #float-theme-toggle .float-btn__icon-sun, +html.dark #float-theme-toggle .float-btn__icon-sun, +body.dark-theme #float-theme-toggle .float-btn__icon-sun { + display: none !important; +} + +/* 移动端隐藏浮动按钮(用 tabbar 代替) */ +@media (max-width: 767px) { + .float-right-btns { + right: 12px; + bottom: 80px; + } + + .float-btn { + width: 38px; + height: 38px; + font-size: 14px; + } +} + +/* ============================================================ + * 移动端底部 Tab 栏(模仿 legacy footer-tabbar) + * ============================================================ */ +.footer-tabbar { + display: none; + position: fixed; + bottom: 0; + left: 0; + right: 0; + z-index: 1035; + min-height: var(--aksrt-footer-tabbar-height); + background: var(--blur-bg); + border-top: 1px solid var(--color-line-soft); + padding: 0 0 env(safe-area-inset-bottom, 0px); + justify-content: space-around; + align-items: center; + box-shadow: 0 -4px 5px var(--main-shadow, rgba(0, 0, 0, 0.06)); + -webkit-backdrop-filter: saturate(5) blur(20px); + backdrop-filter: saturate(5) blur(20px); + --tabbar-active-color: #f04494; + --tabbar-icon-size: 24px; + --tabbar-text-size: 10px; +} + +.footer-tabbar.no-border { + border-top: none; +} + +.footer-tabbar.no-shadow { + box-shadow: none; +} + +.footer-tabbar.hide-text .tabbar-item span { + display: none; +} + +.footer-tabbar.has-animation .tabbar-item { + transition: color 0.15s ease, transform 0.15s ease; +} + +.footer-tabbar.has-animation .tabbar-item:active { + transform: scale(0.9); +} + +.footer-tabbar-placeholder { + display: none; + height: calc(var(--aksrt-footer-tabbar-height) + env(safe-area-inset-bottom, 0px)); +} + +@media (max-width: 767px) { + .footer-tabbar { + display: flex; + } + + .footer-tabbar-placeholder { + display: block; + } + + /* 有 tabbar 时页脚需要额外底部间距 */ + .footer, + .site-footer { + padding-bottom: calc(var(--aksrt-footer-tabbar-height) + env(safe-area-inset-bottom, 0px)); + } +} + +.tabbar-item { + display: flex; + flex: 1 1 0; + min-width: 0; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 1px; + min-height: 49px; + padding: 4px 0 3px; + color: var(--muted-color, var(--color-ink-3)); + font-size: 13px; + text-decoration: none; + border: none; + background: none; + cursor: pointer; + transition: color 0.15s ease; + -webkit-tap-highlight-color: transparent; + position: relative; +} + +/* 对齐 legacy: 24px 图标 */ +.tabbar-item i { + font-size: var(--tabbar-icon-size, 24px); + line-height: 1; +} + +.tabbar-item span { + display: block; + font-size: var(--tabbar-text-size, 10px); + font-weight: 500; + line-height: 1; + transform: scale(0.8); + transform-origin: center top; +} + +.tabbar-item:hover, +.tabbar-item.active { + color: var(--tabbar-active-color, var(--color-primary)); + text-decoration: none; +} + +.tabbar-item.active i { + font-weight: 900; +} + +.tabbar-badge { + position: absolute; + top: 2px; + right: 8px; + min-width: 16px; + height: 16px; + padding: 0 4px; + border-radius: 999px; + background: var(--color-error); + color: #fff; + font-size: 10px; + line-height: 16px; + font-style: normal; + font-weight: 700; + text-align: center; + box-shadow: 0 2px 8px rgba(239, 68, 68, 0.20); +} + +.tabbar-badge--dot { + min-width: 0; + width: 8px; + height: 8px; + padding: 0; + top: 4px; + right: 10px; + font-size: 0; + line-height: 1; + box-shadow: 0 0 0 2px var(--blur-bg); +} + +.tabbar-item--add { + margin-top: -22px; + width: 62px; + height: 62px; + min-height: 62px; + border-radius: 50%; + background: var(--color-accent); + color: #fff; + box-shadow: 0 12px 24px var(--color-accent-shadow); + flex: 0 0 62px; + z-index: 1; +} + +.tabbar-item--add i { + font-size: 22px; +} + +.tabbar-item--add span { + font-size: 11px; +} + +.tabbar-item--add:hover, +.tabbar-item--add.active { + color: #fff; +} + +.tabbar-add-backdrop { + position: fixed; + inset: 0; + z-index: 951; + background: rgba(15, 23, 42, 0.38); +} + +.tabbar-add-panel { + position: fixed; + left: 0; + right: 0; + bottom: 0; + z-index: 952; + padding: 0 12px calc(84px + env(safe-area-inset-bottom, 0px)); +} + +.tabbar-add-panel__sheet { + border-radius: 20px; + background: var(--surface-1); + border: none; + box-shadow: var(--shadow-drawer); + overflow: hidden; +} + +.tabbar-add-panel__head { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px 18px 12px; + border-bottom: 1px solid var(--color-line); +} + +.tabbar-add-panel__close { + width: 32px; + height: 32px; + border: 0; + border-radius: 50%; + background: var(--surface-2); + color: var(--color-ink-3); +} + +.tabbar-add-panel__list { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 12px; + padding: 18px; +} + +.tabbar-add-panel__item { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + gap: 8px; + min-height: 88px; + border-radius: 18px; + background: var(--surface-2); + color: var(--color-ink-3); + text-decoration: none; +} + +.tabbar-add-panel__item i { + font-size: 22px; + color: var(--color-accent); +} + +.tabbar-add-panel__item span { + font-size: 13px; + font-weight: 600; +} + +.tabbar-search-overlay { + position: fixed; + inset: 0; + z-index: 953; + background: rgba(15, 23, 42, 0.58); + display: flex; + align-items: stretch; + justify-content: center; +} + +.tabbar-search-overlay__dialog { + width: 100%; + min-height: 100%; + background: var(--surface-1); + padding: 18px 16px calc(24px + env(safe-area-inset-bottom, 0px)); +} + +.tabbar-search-overlay__head { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 16px; +} + +.tabbar-search-overlay__close { + width: 36px; + height: 36px; + border: 0; + border-radius: 50%; + background: var(--surface-2); + color: var(--color-ink-3); +} + +.tabbar-search-overlay__form { + display: grid; + grid-template-columns: 20px 1fr auto; + gap: 10px; + align-items: center; + padding: 14px 14px 14px 12px; + border-radius: 18px; + border: none; + box-shadow: var(--shadow-sm); + background: var(--surface-4); +} + +.tabbar-search-overlay__icon { + color: var(--color-ink-4); +} + +.tabbar-search-overlay__form input { + min-width: 0; + border: 0; + background: transparent; + color: var(--color-ink); + font-size: 15px; + outline: none; +} + +.tabbar-search-overlay__submit { + border: 0; + border-radius: 12px; + padding: 10px 14px; + background: var(--color-accent); + color: #fff; + font-weight: 700; +} + +.tabbar-search-overlay__types { + display: flex; + gap: 8px; + margin-top: 14px; +} + +.tabbar-search-overlay__type { + border: 0; + border-radius: 999px; + padding: 9px 14px; + background: var(--surface-2); + color: var(--color-ink-3); + font-size: 13px; + font-weight: 600; +} + +.tabbar-search-overlay__type.is-active { + background: var(--color-accent-soft); + color: var(--color-accent); +} + +.tabbar-search-overlay__section { + margin-top: 20px; +} + +.tabbar-search-overlay__section-head { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 12px; +} + +.tabbar-search-overlay__label { + color: var(--color-ink-3); + font-size: 13px; + font-weight: 700; +} + +.tabbar-search-overlay__clear { + border: 0; + background: transparent; + color: var(--color-accent); + font-size: 12px; + font-weight: 700; +} + +.tabbar-search-overlay__history, +.tabbar-search-overlay__suggestions { + display: flex; + flex-direction: column; + gap: 10px; +} + +.tabbar-search-overlay__history-item, +.tabbar-search-overlay__suggestion-item { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + width: 100%; + border: none; + border-radius: 16px; + padding: 12px 14px; + background: var(--surface-4); + box-shadow: var(--shadow-sm); + color: var(--color-ink-3); + text-decoration: none; + text-align: left; +} + +.tabbar-search-overlay__history-item i { + color: var(--color-accent); +} + +.tabbar-search-overlay__history-item span, +.tabbar-search-overlay__suggestion-item span { + flex: 1; + min-width: 0; + font-size: 14px; + font-weight: 600; +} + +.tabbar-search-overlay__suggestion-item small { + color: var(--color-ink-4); + font-size: 12px; +} + +.tabbar-search-overlay__empty { + padding: 14px; + border-radius: 16px; + background: var(--surface-2); + color: var(--color-ink-4); + font-size: 13px; + text-align: center; +} + +.tabbar-search-overlay__tags { + display: flex; + flex-wrap: wrap; + gap: 10px; +} + +.tabbar-search-overlay__tag { + padding: 10px 14px; + border-radius: 999px; + background: var(--surface-2); + color: var(--color-ink-3); + text-decoration: none; + font-size: 13px; +} + +body.tabbar-search-open, +body.tabbar-add-open { + overflow: hidden; +} + +/* 滚动时隐藏 tabbar(可选,通过 JS 添加 class) */ +.footer-tabbar.scrolling-hide { + transform: translateY(100%); + transition: transform 0.3s ease; +} + +/* 向下滚动隐藏,向上滚动显示 */ +.footer-tabbar.scroll-down-hide { + transition: transform 0.3s ease; +} + +.footer-tabbar.scroll-down-hide.is-hidden { + transform: translateY(120%); +} + +/* 返回顶部包裹项(首页按钮 + 返回顶部切换) */ +.tabbar-ontop-wrap { + position: relative; +} + +.tabbar-ontop-wrap .tabbar-ontop-btn { + display: none; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 2px; + padding: 4px 12px; + color: var(--color-primary); + font-size: 13px; + text-decoration: none; + cursor: pointer; + -webkit-tap-highlight-color: transparent; +} + +.tabbar-ontop-wrap .tabbar-ontop-btn i { + font-size: 18px; + line-height: 1; +} + +.tabbar-ontop-wrap .tabbar-ontop-btn span { + font-weight: 500; + line-height: 1; + transform: scale(0.8); + transform-origin: center top; +} + +.tabbar-ontop-wrap.is-scrolled .tabbar-ontop-btn { + display: flex; +} + +.tabbar-ontop-wrap.is-scrolled > .tabbar-item:not(.tabbar-ontop-btn) { + opacity: 0; + pointer-events: none; +} + +/* ============================================================ + * 暗色模式适配 + * ============================================================ */ +.theme-dark .site-footer, +html.dark .site-footer { + background: var(--surface-1); +} + +.theme-dark .float-btn, +html.dark .float-btn { + background: var(--float-btn-bg); + box-shadow: var(--shadow-sm); +} + +.theme-dark .footer-tabbar, +html.dark .footer-tabbar { + background: var(--blur-bg); + box-shadow: 0 -1px 3px rgba(0, 0, 0, 0.20); +} + +/* ============================================================ + * 旧版 back-to-top 按钮兼容(隐藏,用浮动按钮代替) + * ============================================================ */ +.back-to-top { + display: none !important; +} + +/* ============================================================ + * 页脚布局模板变体 + * ============================================================ */ + +/* 紧凑模板:单行版权 + 链接 */ +.site-footer--compact .site-footer__grid { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 16px; +} + +.site-footer--compact .site-footer__brand { + flex: 1 1 100%; +} + + +/* Full-viewport search panel open state (desktop + mobile) */ +.tabbar-search-overlay[hidden] { + display: none !important; +} +.tabbar-search-overlay.is-open, +.tabbar-search-overlay.show:not([hidden]) { + display: flex; +} +.tabbar-search-overlay__dialog { + max-width: 720px; + margin: 0 auto; +} +@media (min-width: 768px) { + .tabbar-search-overlay { + align-items: flex-start; + padding-top: 8vh; + background: rgba(15, 23, 42, 0.45); + } + .tabbar-search-overlay__dialog { + min-height: auto; + max-height: min(84vh, 860px); + overflow: auto; + border-radius: 20px; + box-shadow: var(--shadow-lg, 0 20px 50px rgba(15, 23, 42, 0.22)); + } + .nav-searchbox--desktop { + display: none; + } + .main-search-btn.nav-search-toggle { + display: inline-flex; + align-items: center; + justify-content: center; + } +} +@media (max-width: 767.98px) { + .main-search-btn.nav-search-toggle { + display: none; + } +} + + +.site-footer--compact .site-footer__brand .site-footer__desc, +.site-footer--compact .site-footer__brand .social-row, +.site-footer--compact .site-footer__brand .site-footer__friends { + display: none; +} + +.site-footer--compact .site-footer__col { + flex: 0 0 auto; +} + +.site-footer--compact .site-footer__col ul { + display: flex; + flex-wrap: wrap; + gap: 12px; + list-style: none; + padding: 0; + margin: 0; +} + +.site-footer--compact .site-footer__bottom { + border-top: 1px solid var(--color-line); + padding-top: 12px; + margin-top: 12px; +} + +/* 中央模板:居中品牌 + 链接 */ +.site-footer--centered .site-footer__grid { + text-align: center; +} + +.site-footer--centered .site-footer__brand { + flex: 1 1 100%; + display: flex; + flex-direction: column; + align-items: center; +} + +.site-footer--centered .site-footer__col { + flex: 1 1 auto; +} + +.site-footer--centered .site-footer__col ul { + list-style: none; + padding: 0; + margin: 0; + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 16px; +} diff --git a/assets/css/frontend/homepage-fixed/base-1.css b/assets/css/frontend/homepage-fixed/base-1.css deleted file mode 100644 index a5c9253f..00000000 --- a/assets/css/frontend/homepage-fixed/base-1.css +++ /dev/null @@ -1,424 +0,0 @@ -/** - * Homepage Fixed Layout — legacy Visual Parity - * - * Implements legacy's homepage visual language: - * - System font stack with Chinese fallbacks - * - 1200px container, 311px sidebar - * - Post cards: list mode (190px thumb) + card mode (3-col grid) - * - legacy shadow/radius/spacing values - * - scale(1.02) thumbnail hover - * - Lazy-load animations (blur/fade/scale) - * - Full responsive: 1200/991/767/640px breakpoints - */ - -/* ================================================================ - 0. ANIMATIONS - ================================================================ */ - -@keyframes aksrt-skeleton-pulse { - 0%, 100% { opacity: 1; } - 50% { opacity: 0.4; } -} - -/* ================================================================ - 1. HOMEPAGE CONTAINER & TYPOGRAPHY - ================================================================ */ - -.aksrt-homepage { - font-family: "Helvetica Neue", Helvetica, Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif; - font-size: 16px; - line-height: 1.42857143; - color: var(--main-color, #4e5358); - background: transparent; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - /* Slightly looser than stock legacy short pages: air between stream and footer */ - padding-bottom: 28px; -} - -.aksrt-homepage a[href] { - transition: color 0.2s, background 0.3s, opacity 0.3s, box-shadow 0.3s, transform 0.3s; -} - -.aksrt-homepage .aksrt-skeleton { - animation: aksrt-skeleton-pulse 1.5s ease-in-out infinite; -} - -/* ================================================================ - 2. LAYOUT SHELL - ================================================================ */ - -.aksrt-homepage__fluid-zone.content-shell, -.aksrt-homepage__shell.content-shell { - max-width: min(100%, var(--container, 1200px)); -} - -.aksrt-homepage__fluid-zone.content-shell { - padding-top: 18px; - padding-bottom: 0; -} - -.aksrt-homepage__hero { - width: 100vw; - max-width: 100vw; - margin: 0 calc(-50vw + 50%) 24px; -} - -.aksrt-homepage__hero .header-components-container { - margin-bottom: 0; -} - -.aksrt-homepage__shell.content-shell { - padding-top: 0; - /* 36px + a bit more breathing room before footer */ - padding-bottom: 56px; -} - -/* Bottom fluid zone (if any) keeps a little gap above footer */ -.aksrt-homepage__fluid-zone--bottom { - margin-bottom: 12px; -} - -@media (max-width: 767px) { - .aksrt-homepage { - padding-bottom: 20px; - } - - .aksrt-homepage__shell.content-shell { - padding-bottom: 40px; - } -} - -/* Dual-column geometry is owned by body.site-layout-* float rules in layout.css. */ -.aksrt-homepage__content-layout { - display: block; - gap: 0; -} - -@media (max-width: 1200px) { - .aksrt-homepage__fluid-zone.content-shell, - .aksrt-homepage__shell.content-shell { - max-width: 95%; - } -} - -.aksrt-homepage__content-zone, -.aksrt-homepage__fluid-zone, -.aksrt-homepage__aside { - display: block; -} - -.aksrt-homepage__system-modules { - gap: 0; - padding-bottom: 0; -} - -.aksrt-homepage__content-zone.aksrt-homepage__system-modules { - margin-bottom: 20px; -} - -.aksrt-homepage__content-zone--featured { - margin-bottom: 20px; -} - -.aksrt-homepage__content-zone--operated, -.aksrt-homepage__content-zone--mid, -.aksrt-homepage__content-zone--supplement { - margin-bottom: 20px; -} - -.aksrt-homepage__content-zone--supplement { - padding-top: 4px; -} - -.aksrt-homepage__content-zone .widget-card:last-child, -.aksrt-homepage__aside .widget:last-child, -.aksrt-homepage__fluid-zone .widget-fluid:last-child { - margin-bottom: 0; -} - -/* ================================================================ - 3. FLUID WIDGETS - ================================================================ */ - -.aksrt-homepage__fluid-zone .widget-fluid { - margin-bottom: 20px; - background: transparent; - padding: 0; - border: 0; - box-shadow: none; -} - -.aksrt-homepage .widget-fluid.widget_aksrt_tab_posts, -.aksrt-homepage .widget-fluid.widget_aksrt_category_block, -.aksrt-homepage .widget-fluid.widget_aksrt_category_tabs, -.aksrt-homepage .widget-fluid.widget_aksrt_category_recommend { - padding: 15px; - background: var(--surface-1, #fff); - border: none; - border-radius: var(--main-radius, var(--radius, 8px)); - box-shadow: var(--shadow-sm); -} - -.aksrt-homepage__content-zone .widget-card, -.aksrt-homepage__aside .widget { - background: var(--surface-1, #fff); - padding: 15px; - border: none; - border-radius: var(--main-radius, var(--radius, 8px)); - box-shadow: var(--shadow-sm); -} - -/* ================================================================ - 4. STREAM CONTAINER - ================================================================ */ - -.aksrt-homepage__stream-header { - display: flex; - align-items: flex-end; - justify-content: space-between; - gap: 12px; - margin-bottom: 10px; - padding: 0; -} - -.aksrt-homepage__stream-intro { - min-width: 0; - display: flex; - flex-direction: column; - gap: 4px; -} - -.aksrt-homepage__stream-title { - margin: 0; - color: var(--color-ink); - font-size: 20px; - font-weight: 700; - line-height: 1.25; -} - -.aksrt-homepage__stream-subtitle { - margin: 0; - color: var(--color-ink-3, #777); - font-size: 13px; - line-height: 1.5; -} - -.aksrt-homepage__stream, -.aksrt-homepage__stream.widget-card { - overflow: visible; - padding: 0; - background: transparent; - border: 0; - border-radius: 0; - box-shadow: none; - margin-bottom: 0; -} - -/* ================================================================ - 5. TABS - ================================================================ */ - -.aksrt-homepage__tabs, -.aksrt-homepage__titlebox { - margin-bottom: 6px; - padding-bottom: 0; - border-bottom: 0; -} - -.aksrt-homepage__tabs.box-body, -.aksrt-homepage__titlebox.box-body { - padding: 0; -} - -.aksrt-homepage__tabs-sentinel { - width: 100%; - height: 1px; - margin: 0; - pointer-events: none; -} - -.aksrt-homepage__tabs.home-tab-nav-box { - position: static; - z-index: auto; - background: transparent; -} - -.aksrt-homepage__tabs.home-tab-nav-box[data-sticky-tabs="true"] { - position: sticky; - top: var(--nav-height, 60px); - z-index: 995; - background: transparent; - transition: background-color 0.2s ease, - box-shadow 0.2s ease, - border-radius 0.2s ease, - padding 0.2s ease, - margin 0.2s ease, - backdrop-filter 0.2s ease, - -webkit-backdrop-filter 0.2s ease; -} - -.aksrt-homepage__tabs.home-tab-nav-box[data-sticky-tabs="true"].is-stuck, -.aksrt-homepage__tabs.home-tab-nav-box[data-sticky-tabs="true"].is-affixed { - margin-bottom: 14px; - padding: 10px 16px; - background: rgba(255, 255, 255, 0.92); - border: none; - border-radius: var(--radius-2xl, 16px); - box-shadow: var(--shadow); - backdrop-filter: saturate(1.6) blur(20px); - -webkit-backdrop-filter: saturate(1.6) blur(20px); -} - -.aksrt-homepage__tabs.home-tab-nav-box[data-sticky-tabs="true"].is-affixed { - position: fixed; -} - -html.dark .aksrt-homepage__tabs.home-tab-nav-box[data-sticky-tabs="true"].is-stuck, -html.dark .aksrt-homepage__tabs.home-tab-nav-box[data-sticky-tabs="true"].is-affixed, -html.dark .aksrt-homepage__tabs.home-tab-nav-box[data-sticky-tabs="true"].is-stuck, -html.dark .aksrt-homepage__tabs.home-tab-nav-box[data-sticky-tabs="true"].is-affixed { - background: rgba(24, 24, 24, 0.82); - box-shadow: 0 12px 30px rgba(0, 0, 0, 0.24); -} - -.aksrt-homepage__tab-list { - list-style: none; - display: flex; - align-items: center; - gap: 4px; - margin: 0; - padding: 0; -} - -.aksrt-homepage__admin-link { - margin-left: auto; -} - -.scroll-x { - overflow-x: auto; - overflow-y: hidden; -} - -.no-scrollbar { - -ms-overflow-style: none; - scrollbar-width: none; -} - -.no-scrollbar::-webkit-scrollbar { - display: none; -} - -.aksrt-homepage__tab-item { - display: inline-flex; - flex: 0 0 auto; - padding: 0; - margin: 0; - border-radius: 20px; - font-weight: 500; - transition: background 0.2s ease, color 0.2s ease; -} - -.aksrt-homepage__tab-button { - padding: 6px 14px; - border: 0; - background: transparent; - color: var(--color-ink); - font-family: inherit; - font-size: 14px; - font-weight: inherit; - line-height: 1.2; - white-space: nowrap; - border-radius: inherit; - cursor: pointer; -} - -.aksrt-homepage__tab-button:hover { - color: var(--color-primary, var(--color-primary)); -} - -.aksrt-homepage__tab-item.is-active { - background: var(--color-primary, var(--color-primary)); -} - -.aksrt-homepage__tab-item.is-active .aksrt-homepage__tab-button, -.aksrt-homepage__tab-button[aria-selected="true"] { - color: #fff !important; -} - -/* ================================================================ - 6. SORTBAR + VIEW TOGGLE - ================================================================ */ - -.aksrt-homepage__sortbar { - display: flex; - align-items: center; - gap: 10px; - margin-bottom: 10px; - padding: 0 0 8px; - border-bottom: 1px solid var(--color-line, rgba(50, 50, 50, 0.06)); - color: var(--color-ink-3, #777); - font-size: 13px; -} - -.aksrt-homepage__sortbar-links { - display: flex; - align-items: center; - flex-wrap: wrap; - gap: 0; - flex: 1 1 auto; -} - -.aksrt-homepage__sortbar-link { - position: relative; - display: inline-flex; - align-items: center; - padding: 0 12px; - color: var(--color-ink-3, #777); - text-decoration: none; - line-height: 1.4; -} - -.aksrt-homepage__sortbar-link:first-child { - padding-left: 0; -} - -.aksrt-homepage__sortbar-link + .aksrt-homepage__sortbar-link::before { - content: "\00b7"; - position: absolute; - left: -2px; - color: var(--color-ink-4, #b1b1b1); -} - -.aksrt-homepage__sortbar-link:hover, -.aksrt-homepage__sortbar-link.is-active { - color: var(--color-ink); -} - -.aksrt-homepage__view-toggle { - display: inline-flex; - align-items: center; - gap: 6px; - margin-left: auto; - flex: 0 0 auto; -} - -.aksrt-homepage__view-btn { - display: inline-flex; - align-items: center; - justify-content: center; - width: 28px; - height: 28px; - padding: 0; - border: 0; - background: transparent; - color: var(--color-ink-4, #999); - border-radius: 4px; - cursor: pointer; - transition: color 0.2s, background 0.2s; -} - -.aksrt-homepage__view-btn:hover { - color: var(--color-ink); - background: var(--surface-2, #eee); -} diff --git a/assets/css/frontend/homepage-fixed/base-2.css b/assets/css/frontend/homepage-fixed/base-2.css deleted file mode 100644 index 2adccb66..00000000 --- a/assets/css/frontend/homepage-fixed/base-2.css +++ /dev/null @@ -1,101 +0,0 @@ -.aksrt-homepage__view-btn.is-active { - color: var(--color-primary); -} - -.aksrt-homepage__view-btn svg { - width: 16px; - height: 16px; - fill: currentColor; -} - -.title-theme { - position: relative; - padding-left: 1.2em; - font-size: 15px; - font-weight: 700; - line-height: 1.4; -} - -.title-theme::before { - position: absolute; - top: 10%; - bottom: 10%; - left: 2px; - width: 4px; - content: ""; - background: var(--color-primary); - border-radius: 5px; - box-shadow: 1px 1px 3px -1px var(--color-primary); -} - -.aksrt-homepage__page-indicator { - margin-left: 10px; - font-size: 80%; - font-weight: 400; - opacity: 0.7; -} - -.aksrt-homepage__panel[hidden], -.index-tab-main .tab-pane[hidden], -.home-tab-content .tab-pane[hidden] { - display: none !important; -} - -.aksrt-homepage__panels, -.home-tab-content { - display: block; -} - -.aksrt-homepage__panel { - opacity: 0; - transition: opacity 0.3s ease; -} - -.aksrt-homepage__panel.is-active, -.aksrt-homepage__panel.active, -.aksrt-homepage__panel.fade.in, -.aksrt-homepage__panel.tab-pane.active, -#index-tab-main.aksrt-homepage__panel, -.home-tab-content .tab-pane.is-active, -.home-tab-content .tab-pane.show, -.home-tab-content .tab-pane.active, -.aksrt-homepage__panel.show { - display: block !important; - visibility: visible !important; - opacity: 1 !important; -} - -.home-tab-content .tab-pane.fade.is-active, -.home-tab-content .tab-pane.fade.show, -.home-tab-content .tab-pane.fade.active, -#index-tab-main.fade { - opacity: 1 !important; -} - -.aksrt-homepage__panel-contract { - display: none; -} - -.flex { - display: flex !important; -} - -.flex.xx, -.xx { - flex-direction: column; -} - -.flex1, -.flex-1 { - flex: 1 1 auto; - min-width: 0; -} - -.jsb, -.jb { - justify-content: space-between; -} - -.ac { - align-items: center; -} diff --git a/assets/css/frontend/homepage-fixed/base-3.css b/assets/css/frontend/homepage-fixed/base-3.css deleted file mode 100644 index c423c60e..00000000 --- a/assets/css/frontend/homepage-fixed/base-3.css +++ /dev/null @@ -1,210 +0,0 @@ -/* ================================================================ - 11. PAGINATION - ================================================================ */ - -.aksrt-homepage__panel-footer { - display: flex; - justify-content: center; - margin-top: 18px; -} - -.aksrt-homepage__more, -.aksrt-homepage .aksrt-load-more-btn { - display: inline-flex; - align-items: center; - justify-content: center; - min-height: 34px; - padding: 0 14px; - border: 1px solid var(--color-line, rgba(50, 50, 50, 0.06)); - border-radius: var(--radius, 8px); - background: var(--surface-1, #fff); - color: var(--color-ink-3, #777); - font-size: 13px; - font-weight: 500; - transition: border-color 0.2s ease, color 0.2s ease, background 0.2s ease; -} - -.aksrt-homepage__more:hover, -.aksrt-homepage .aksrt-load-more-btn:hover { - color: var(--color-primary, var(--color-primary)); - border-color: var(--color-primary, var(--color-primary)); - box-shadow: none; - transform: none; -} - -.aksrt-homepage .ajax-pagination { - display: flex; - flex-direction: column; - align-items: center; - gap: 10px; - margin-top: 20px; -} - -.aksrt-homepage .navigation.pagination .nav-links, -.aksrt-homepage .pagination { - gap: 0; - margin: 20px 0 10px; -} - -.aksrt-homepage .navigation.pagination .page-numbers, -.aksrt-homepage .pagination .page-numbers { - min-width: 34px; - height: 34px; - padding: 0 10px; - margin: 3px; - border: 1px solid transparent; - border-radius: var(--radius-xs, 3px); - background: var(--surface-4, #eee); - color: var(--color-ink-3, #777); - font-size: 13px; - line-height: 1.4; -} - -.aksrt-homepage .navigation.pagination .page-numbers:hover, -.aksrt-homepage .pagination .page-numbers:hover { - opacity: 1; - background: var(--color-primary-soft); - color: var(--color-primary); -} - -.aksrt-homepage .navigation.pagination .current, -.aksrt-homepage .pagination .current { - background: var(--color-primary, var(--color-primary)) !important; - color: #fff !important; -} - -/* ================================================================ - 12. SIDEBAR - ================================================================ */ - -.aksrt-homepage__aside > .aksrt-panel, -.aksrt-homepage__aside > .widget { - margin-bottom: 15px; - padding: 15px; - background: var(--surface-1, #fff); - border: 0; - border-radius: var(--main-radius, var(--radius, 8px)); - box-shadow: var(--shadow-sm); -} - -.aksrt-homepage__aside > .aksrt-panel:last-child, -.aksrt-homepage__aside > .widget:last-child { - margin-bottom: 0; -} - -.aksrt-homepage__aside .widget-list li, -.aksrt-homepage__aside .widget_recent_entries li, -.aksrt-homepage__aside .recent-posts-row { - padding-top: 8px; - padding-bottom: 8px; -} - -.aksrt-homepage__aside .widget-title, -.aksrt-homepage__content-zone .widget-title { - margin-bottom: 12px; -} - -.aksrt-homepage__aside .widget-title { - position: relative; - margin: 0 0 10px; - padding-left: 1.2em; - padding-bottom: 8px; - font-size: 15px; - font-weight: 700; - line-height: 1.4; -} - -.aksrt-homepage__aside .widget-title::before { - content: ""; - position: absolute; - top: 10%; - bottom: 10%; - left: 2px; - width: 4px; - height: auto; - background: var(--color-primary, var(--color-primary)); - border-radius: 5px; - box-shadow: 1px 1px 3px -1px var(--color-primary, var(--color-primary)); - transition: transform 0.4s ease; - transform-origin: left; -} - -.aksrt-homepage__aside .widget_recent_entries li a, -.aksrt-homepage__aside .widget-list li a { - font-size: 13px; - font-weight: 500; - line-height: 1.5; -} - -.aksrt-homepage__aside .widget_recent_entries li { - display: block; -} - -.aksrt-homepage__aside .widget_search .search-field { - height: 40px; - border-radius: 30px; - background: var(--surface-2, #eee); -} - -.aksrt-homepage__aside .widget_search .search-submit { - top: 4px; - right: 4px; - height: 32px; - padding: 0 12px; - border-radius: 30px; - font-size: 12px; -} - -.aksrt-homepage__aside .tag-cloud { - gap: 6px; -} - -.aksrt-homepage__aside .tag-cloud a { - padding: 4px 10px; - border-radius: 20px; - font-size: 12px; - border: 0; - background: var(--surface-2, #eee); - transition: background 0.2s, color 0.2s; -} - -.aksrt-homepage__aside .tag-cloud a:hover { - background: var(--color-primary, var(--color-primary)); - color: #fff; -} - -.aksrt-homepage .widget.notop, -.aksrt-homepage .box-body.notop { - padding-top: 0; -} - -.aksrt-homepage .widget.nobottom, -.aksrt-homepage .box-body.nobottom { - padding-bottom: 0; -} - -.aksrt-homepage .widget.widget_custom_html { - padding: 0; - background: transparent; - box-shadow: none; - border-radius: 0; -} - -/* ================================================================ - 13. LOADING & EMPTY STATES - ================================================================ */ - -.aksrt-homepage .aksrt-loading-indicator { - display: flex; - align-items: center; - gap: 8px; - color: var(--color-ink-3, #777); - font-size: 13px; -} - -.aksrt-homepage__stream .no-results { - padding: 32px 16px; - text-align: center; - color: var(--color-ink-4, #999); -} - diff --git a/assets/css/frontend/homepage-fixed/base.css b/assets/css/frontend/homepage-fixed/base.css index 4e615659..26141769 100644 --- a/assets/css/frontend/homepage-fixed/base.css +++ b/assets/css/frontend/homepage-fixed/base.css @@ -1,3 +1,736 @@ -@import url("base-1.css"); -@import url("base-2.css"); -@import url("base-3.css"); +/** + * Homepage Fixed Layout — legacy Visual Parity + * + * Implements legacy's homepage visual language: + * - System font stack with Chinese fallbacks + * - 1200px container, 311px sidebar + * - Post cards: list mode (190px thumb) + card mode (3-col grid) + * - legacy shadow/radius/spacing values + * - scale(1.02) thumbnail hover + * - Lazy-load animations (blur/fade/scale) + * - Full responsive: 1200/991/767/640px breakpoints + */ + +/* ================================================================ + 0. ANIMATIONS + ================================================================ */ + +@keyframes aksrt-skeleton-pulse { + 0%, 100% { opacity: 1; } + 50% { opacity: 0.4; } +} + +/* ================================================================ + 1. HOMEPAGE CONTAINER & TYPOGRAPHY + ================================================================ */ + +.aksrt-homepage { + font-family: "Helvetica Neue", Helvetica, Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif; + font-size: 16px; + line-height: 1.42857143; + color: var(--main-color, #4e5358); + background: transparent; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + /* Slightly looser than stock legacy short pages: air between stream and footer */ + padding-bottom: 28px; +} + +.aksrt-homepage a[href] { + transition: color 0.2s, background 0.3s, opacity 0.3s, box-shadow 0.3s, transform 0.3s; +} + +.aksrt-homepage .aksrt-skeleton { + animation: aksrt-skeleton-pulse 1.5s ease-in-out infinite; +} + +/* ================================================================ + 2. LAYOUT SHELL + ================================================================ */ + +.aksrt-homepage__fluid-zone.content-shell, +.aksrt-homepage__shell.content-shell { + max-width: min(100%, var(--container, 1200px)); +} + +.aksrt-homepage__fluid-zone.content-shell { + padding-top: 18px; + padding-bottom: 0; +} + +.aksrt-homepage__hero { + width: 100vw; + max-width: 100vw; + margin: 0 calc(-50vw + 50%) 24px; +} + +.aksrt-homepage__hero .header-components-container { + margin-bottom: 0; +} + +.aksrt-homepage__shell.content-shell { + padding-top: 0; + /* 36px + a bit more breathing room before footer */ + padding-bottom: 56px; +} + +/* Bottom fluid zone (if any) keeps a little gap above footer */ +.aksrt-homepage__fluid-zone--bottom { + margin-bottom: 12px; +} + +@media (max-width: 767px) { + .aksrt-homepage { + padding-bottom: 20px; + } + + .aksrt-homepage__shell.content-shell { + padding-bottom: 40px; + } +} + +/* Dual-column geometry is owned by body.site-layout-* float rules in layout.css. */ +.aksrt-homepage__content-layout { + display: block; + gap: 0; +} + +@media (max-width: 1200px) { + .aksrt-homepage__fluid-zone.content-shell, + .aksrt-homepage__shell.content-shell { + max-width: 95%; + } +} + +.aksrt-homepage__content-zone, +.aksrt-homepage__fluid-zone, +.aksrt-homepage__aside { + display: block; +} + +.aksrt-homepage__system-modules { + gap: 0; + padding-bottom: 0; +} + +.aksrt-homepage__content-zone.aksrt-homepage__system-modules { + margin-bottom: 20px; +} + +.aksrt-homepage__content-zone--featured { + margin-bottom: 20px; +} + +.aksrt-homepage__content-zone--operated, +.aksrt-homepage__content-zone--mid, +.aksrt-homepage__content-zone--supplement { + margin-bottom: 20px; +} + +.aksrt-homepage__content-zone--supplement { + padding-top: 4px; +} + +.aksrt-homepage__content-zone .widget-card:last-child, +.aksrt-homepage__aside .widget:last-child, +.aksrt-homepage__fluid-zone .widget-fluid:last-child { + margin-bottom: 0; +} + +/* ================================================================ + 3. FLUID WIDGETS + ================================================================ */ + +.aksrt-homepage__fluid-zone .widget-fluid { + margin-bottom: 20px; + background: transparent; + padding: 0; + border: 0; + box-shadow: none; +} + +.aksrt-homepage .widget-fluid.widget_aksrt_tab_posts, +.aksrt-homepage .widget-fluid.widget_aksrt_category_block, +.aksrt-homepage .widget-fluid.widget_aksrt_category_tabs, +.aksrt-homepage .widget-fluid.widget_aksrt_category_recommend { + padding: 15px; + background: var(--surface-1, #fff); + border: none; + border-radius: var(--main-radius, var(--radius, 8px)); + box-shadow: var(--shadow-sm); +} + +.aksrt-homepage__content-zone .widget-card, +.aksrt-homepage__aside .widget { + background: var(--surface-1, #fff); + padding: 15px; + border: none; + border-radius: var(--main-radius, var(--radius, 8px)); + box-shadow: var(--shadow-sm); +} + +/* ================================================================ + 4. STREAM CONTAINER + ================================================================ */ + +.aksrt-homepage__stream-header { + display: flex; + align-items: flex-end; + justify-content: space-between; + gap: 12px; + margin-bottom: 10px; + padding: 0; +} + +.aksrt-homepage__stream-intro { + min-width: 0; + display: flex; + flex-direction: column; + gap: 4px; +} + +.aksrt-homepage__stream-title { + margin: 0; + color: var(--color-ink); + font-size: 20px; + font-weight: 700; + line-height: 1.25; +} + +.aksrt-homepage__stream-subtitle { + margin: 0; + color: var(--color-ink-3, #777); + font-size: 13px; + line-height: 1.5; +} + +.aksrt-homepage__stream, +.aksrt-homepage__stream.widget-card { + overflow: visible; + padding: 0; + background: transparent; + border: 0; + border-radius: 0; + box-shadow: none; + margin-bottom: 0; +} + +/* ================================================================ + 5. TABS + ================================================================ */ + +.aksrt-homepage__tabs, +.aksrt-homepage__titlebox { + margin-bottom: 6px; + padding-bottom: 0; + border-bottom: 0; +} + +.aksrt-homepage__tabs.box-body, +.aksrt-homepage__titlebox.box-body { + padding: 0; +} + +.aksrt-homepage__tabs-sentinel { + width: 100%; + height: 1px; + margin: 0; + pointer-events: none; +} + +.aksrt-homepage__tabs.home-tab-nav-box { + position: static; + z-index: auto; + background: transparent; +} + +.aksrt-homepage__tabs.home-tab-nav-box[data-sticky-tabs="true"] { + position: sticky; + top: var(--nav-height, 60px); + z-index: 995; + background: transparent; + transition: background-color 0.2s ease, + box-shadow 0.2s ease, + border-radius 0.2s ease, + padding 0.2s ease, + margin 0.2s ease, + backdrop-filter 0.2s ease, + -webkit-backdrop-filter 0.2s ease; +} + +.aksrt-homepage__tabs.home-tab-nav-box[data-sticky-tabs="true"].is-stuck, +.aksrt-homepage__tabs.home-tab-nav-box[data-sticky-tabs="true"].is-affixed { + margin-bottom: 14px; + padding: 10px 16px; + background: rgba(255, 255, 255, 0.92); + border: none; + border-radius: var(--radius-2xl, 16px); + box-shadow: var(--shadow); + backdrop-filter: saturate(1.6) blur(20px); + -webkit-backdrop-filter: saturate(1.6) blur(20px); +} + +.aksrt-homepage__tabs.home-tab-nav-box[data-sticky-tabs="true"].is-affixed { + position: fixed; +} + +html.dark .aksrt-homepage__tabs.home-tab-nav-box[data-sticky-tabs="true"].is-stuck, +html.dark .aksrt-homepage__tabs.home-tab-nav-box[data-sticky-tabs="true"].is-affixed, +html.dark .aksrt-homepage__tabs.home-tab-nav-box[data-sticky-tabs="true"].is-stuck, +html.dark .aksrt-homepage__tabs.home-tab-nav-box[data-sticky-tabs="true"].is-affixed { + background: rgba(24, 24, 24, 0.82); + box-shadow: 0 12px 30px rgba(0, 0, 0, 0.24); +} + +.aksrt-homepage__tab-list { + list-style: none; + display: flex; + align-items: center; + gap: 4px; + margin: 0; + padding: 0; +} + +.aksrt-homepage__admin-link { + margin-left: auto; +} + +.scroll-x { + overflow-x: auto; + overflow-y: hidden; +} + +.no-scrollbar { + -ms-overflow-style: none; + scrollbar-width: none; +} + +.no-scrollbar::-webkit-scrollbar { + display: none; +} + +.aksrt-homepage__tab-item { + display: inline-flex; + flex: 0 0 auto; + padding: 0; + margin: 0; + border-radius: 20px; + font-weight: 500; + transition: background 0.2s ease, color 0.2s ease; +} + +.aksrt-homepage__tab-button { + padding: 6px 14px; + border: 0; + background: transparent; + color: var(--color-ink); + font-family: inherit; + font-size: 14px; + font-weight: inherit; + line-height: 1.2; + white-space: nowrap; + border-radius: inherit; + cursor: pointer; +} + +.aksrt-homepage__tab-button:hover { + color: var(--color-primary, var(--color-primary)); +} + +.aksrt-homepage__tab-item.is-active { + background: var(--color-primary, var(--color-primary)); +} + +.aksrt-homepage__tab-item.is-active .aksrt-homepage__tab-button, +.aksrt-homepage__tab-button[aria-selected="true"] { + color: #fff !important; +} + +/* ================================================================ + 6. SORTBAR + VIEW TOGGLE + ================================================================ */ + +.aksrt-homepage__sortbar { + display: flex; + align-items: center; + gap: 10px; + margin-bottom: 10px; + padding: 0 0 8px; + border-bottom: 1px solid var(--color-line, rgba(50, 50, 50, 0.06)); + color: var(--color-ink-3, #777); + font-size: 13px; +} + +.aksrt-homepage__sortbar-links { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 0; + flex: 1 1 auto; +} + +.aksrt-homepage__sortbar-link { + position: relative; + display: inline-flex; + align-items: center; + padding: 0 12px; + color: var(--color-ink-3, #777); + text-decoration: none; + line-height: 1.4; +} + +.aksrt-homepage__sortbar-link:first-child { + padding-left: 0; +} + +.aksrt-homepage__sortbar-link + .aksrt-homepage__sortbar-link::before { + content: "\00b7"; + position: absolute; + left: -2px; + color: var(--color-ink-4, #b1b1b1); +} + +.aksrt-homepage__sortbar-link:hover, +.aksrt-homepage__sortbar-link.is-active { + color: var(--color-ink); +} + +.aksrt-homepage__view-toggle { + display: inline-flex; + align-items: center; + gap: 6px; + margin-left: auto; + flex: 0 0 auto; +} + +.aksrt-homepage__view-btn { + display: inline-flex; + align-items: center; + justify-content: center; + width: 28px; + height: 28px; + padding: 0; + border: 0; + background: transparent; + color: var(--color-ink-4, #999); + border-radius: 4px; + cursor: pointer; + transition: color 0.2s, background 0.2s; +} + +.aksrt-homepage__view-btn:hover { + color: var(--color-ink); + background: var(--surface-2, #eee); +} + +.aksrt-homepage__view-btn.is-active { + color: var(--color-primary); +} + +.aksrt-homepage__view-btn svg { + width: 16px; + height: 16px; + fill: currentColor; +} + +.title-theme { + position: relative; + padding-left: 1.2em; + font-size: 15px; + font-weight: 700; + line-height: 1.4; +} + +.title-theme::before { + position: absolute; + top: 10%; + bottom: 10%; + left: 2px; + width: 4px; + content: ""; + background: var(--color-primary); + border-radius: 5px; + box-shadow: 1px 1px 3px -1px var(--color-primary); +} + +.aksrt-homepage__page-indicator { + margin-left: 10px; + font-size: 80%; + font-weight: 400; + opacity: 0.7; +} + +.aksrt-homepage__panel[hidden], +.index-tab-main .tab-pane[hidden], +.home-tab-content .tab-pane[hidden] { + display: none !important; +} + +.aksrt-homepage__panels, +.home-tab-content { + display: block; +} + +.aksrt-homepage__panel { + opacity: 0; + transition: opacity 0.3s ease; +} + +.aksrt-homepage__panel.is-active, +.aksrt-homepage__panel.active, +.aksrt-homepage__panel.fade.in, +.aksrt-homepage__panel.tab-pane.active, +#index-tab-main.aksrt-homepage__panel, +.home-tab-content .tab-pane.is-active, +.home-tab-content .tab-pane.show, +.home-tab-content .tab-pane.active, +.aksrt-homepage__panel.show { + display: block !important; + visibility: visible !important; + opacity: 1 !important; +} + +.home-tab-content .tab-pane.fade.is-active, +.home-tab-content .tab-pane.fade.show, +.home-tab-content .tab-pane.fade.active, +#index-tab-main.fade { + opacity: 1 !important; +} + +.aksrt-homepage__panel-contract { + display: none; +} + +.flex { + display: flex !important; +} + +.flex.xx, +.xx { + flex-direction: column; +} + +.flex1, +.flex-1 { + flex: 1 1 auto; + min-width: 0; +} + +.jsb, +.jb { + justify-content: space-between; +} + +.ac { + align-items: center; +} + +/* ================================================================ + 11. PAGINATION + ================================================================ */ + +.aksrt-homepage__panel-footer { + display: flex; + justify-content: center; + margin-top: 18px; +} + +.aksrt-homepage__more, +.aksrt-homepage .aksrt-load-more-btn { + display: inline-flex; + align-items: center; + justify-content: center; + min-height: 34px; + padding: 0 14px; + border: 1px solid var(--color-line, rgba(50, 50, 50, 0.06)); + border-radius: var(--radius, 8px); + background: var(--surface-1, #fff); + color: var(--color-ink-3, #777); + font-size: 13px; + font-weight: 500; + transition: border-color 0.2s ease, color 0.2s ease, background 0.2s ease; +} + +.aksrt-homepage__more:hover, +.aksrt-homepage .aksrt-load-more-btn:hover { + color: var(--color-primary, var(--color-primary)); + border-color: var(--color-primary, var(--color-primary)); + box-shadow: none; + transform: none; +} + +.aksrt-homepage .ajax-pagination { + display: flex; + flex-direction: column; + align-items: center; + gap: 10px; + margin-top: 20px; +} + +.aksrt-homepage .navigation.pagination .nav-links, +.aksrt-homepage .pagination { + gap: 0; + margin: 20px 0 10px; +} + +.aksrt-homepage .navigation.pagination .page-numbers, +.aksrt-homepage .pagination .page-numbers { + min-width: 34px; + height: 34px; + padding: 0 10px; + margin: 3px; + border: 1px solid transparent; + border-radius: var(--radius-xs, 3px); + background: var(--surface-4, #eee); + color: var(--color-ink-3, #777); + font-size: 13px; + line-height: 1.4; +} + +.aksrt-homepage .navigation.pagination .page-numbers:hover, +.aksrt-homepage .pagination .page-numbers:hover { + opacity: 1; + background: var(--color-primary-soft); + color: var(--color-primary); +} + +.aksrt-homepage .navigation.pagination .current, +.aksrt-homepage .pagination .current { + background: var(--color-primary, var(--color-primary)) !important; + color: #fff !important; +} + +/* ================================================================ + 12. SIDEBAR + ================================================================ */ + +.aksrt-homepage__aside > .aksrt-panel, +.aksrt-homepage__aside > .widget { + margin-bottom: 15px; + padding: 15px; + background: var(--surface-1, #fff); + border: 0; + border-radius: var(--main-radius, var(--radius, 8px)); + box-shadow: var(--shadow-sm); +} + +.aksrt-homepage__aside > .aksrt-panel:last-child, +.aksrt-homepage__aside > .widget:last-child { + margin-bottom: 0; +} + +.aksrt-homepage__aside .widget-list li, +.aksrt-homepage__aside .widget_recent_entries li, +.aksrt-homepage__aside .recent-posts-row { + padding-top: 8px; + padding-bottom: 8px; +} + +.aksrt-homepage__aside .widget-title, +.aksrt-homepage__content-zone .widget-title { + margin-bottom: 12px; +} + +.aksrt-homepage__aside .widget-title { + position: relative; + margin: 0 0 10px; + padding-left: 1.2em; + padding-bottom: 8px; + font-size: 15px; + font-weight: 700; + line-height: 1.4; +} + +.aksrt-homepage__aside .widget-title::before { + content: ""; + position: absolute; + top: 10%; + bottom: 10%; + left: 2px; + width: 4px; + height: auto; + background: var(--color-primary, var(--color-primary)); + border-radius: 5px; + box-shadow: 1px 1px 3px -1px var(--color-primary, var(--color-primary)); + transition: transform 0.4s ease; + transform-origin: left; +} + +.aksrt-homepage__aside .widget_recent_entries li a, +.aksrt-homepage__aside .widget-list li a { + font-size: 13px; + font-weight: 500; + line-height: 1.5; +} + +.aksrt-homepage__aside .widget_recent_entries li { + display: block; +} + +.aksrt-homepage__aside .widget_search .search-field { + height: 40px; + border-radius: 30px; + background: var(--surface-2, #eee); +} + +.aksrt-homepage__aside .widget_search .search-submit { + top: 4px; + right: 4px; + height: 32px; + padding: 0 12px; + border-radius: 30px; + font-size: 12px; +} + +.aksrt-homepage__aside .tag-cloud { + gap: 6px; +} + +.aksrt-homepage__aside .tag-cloud a { + padding: 4px 10px; + border-radius: 20px; + font-size: 12px; + border: 0; + background: var(--surface-2, #eee); + transition: background 0.2s, color 0.2s; +} + +.aksrt-homepage__aside .tag-cloud a:hover { + background: var(--color-primary, var(--color-primary)); + color: #fff; +} + +.aksrt-homepage .widget.notop, +.aksrt-homepage .box-body.notop { + padding-top: 0; +} + +.aksrt-homepage .widget.nobottom, +.aksrt-homepage .box-body.nobottom { + padding-bottom: 0; +} + +.aksrt-homepage .widget.widget_custom_html { + padding: 0; + background: transparent; + box-shadow: none; + border-radius: 0; +} + +/* ================================================================ + 13. LOADING & EMPTY STATES + ================================================================ */ + +.aksrt-homepage .aksrt-loading-indicator { + display: flex; + align-items: center; + gap: 8px; + color: var(--color-ink-3, #777); + font-size: 13px; +} + +.aksrt-homepage__stream .no-results { + padding: 32px 16px; + text-align: center; + color: var(--color-ink-4, #999); +} diff --git a/src/Core/ScriptsPart1b.php b/src/Core/ScriptsPart1b.php index c11930e3..f85f56ec 100644 --- a/src/Core/ScriptsPart1b.php +++ b/src/Core/ScriptsPart1b.php @@ -665,13 +665,9 @@ trait ScriptsPart1b { static fn(string $handle): bool => wp_style_is($handle, 'registered') )); - // Enqueue split files directly so every leaf stylesheet receives its own - // cache version. A version on homepage-fixed.css cannot invalidate the - // unversioned nested @imports used by that legacy aggregate file. + // Enqueue leaf stylesheets directly so each file receives its own cache version. $homepage_style_parts = [ - 'base-1', - 'base-2', - 'base-3', + 'base', 'ajax-tab-skeleton-placeholder', 'ajax-tab-error-state', ];