/**
 * AI 资讯左栏视图切换 + 归档壳 + 今日概览 + 本周精选 + 专题占位。
 * 品牌红对齐主题 primary-500 #E03030；字号走 caption/subhead/body 语义档。
 */

/* —— 归档页：左壳右内容铺满 —— */
.daily-archive-page {
	min-height: 0;
}

/*
 * 宽屏自适应：正常笔记本/桌面屏幕基本维持全站统一宽度（后台「页面宽度」，默认约 1350px）；
 * 超宽屏（如 34 寸带鱼屏）按「侧栏之外可用宽度」的百分比放大，避免左右留白随屏幕变宽而失控地夸张，
 * 同时用 max-width 封顶（1900px，沿用 mytheme_page_width_clamp() 里已定的全站宽度上限），
 * 不让整行内容在超宽屏上被拉得过长影响阅读。仅作用于 /daily/ 归档页，不改动其它页面的全站宽度设置。
 * 用 width: 94%（相对父级 .mytheme-page-main 的剩余宽度，天然已扣掉左侧图标栏）而非 vw，
 * 避免侧栏展开/收起时用 vw 算错可用空间。
 */
@media (min-width: 1024px) {
	.container-main.daily-archive-page {
		width: 94%;
		max-width: 1900px;
	}
}

/*
 * 「今日」沉浸态实测发现上面这条 94%/1900px 规则被 assets/css/content-frame.css 的
 * `.mytheme-page-main .container-main { width: var(--mytheme-content-max) }`（全站居中
 * 用，2026-07-23 加）同优先级顶掉了：那条按 hook 顺序在 daily-views.css 之前入队、
 * 却先输出，等优先级下最后输出的赢，实际渲染宽度被锁死成全站页面宽度（默认 1350px），
 * 宽屏下右侧空出一大截、内容详情栏的滚动条看着像飘在空白里跟模块脱节（用户反馈实测）。
 * 「今日」沉浸态左右栏本身都各自限了宽（左栏 280~360px、右侧正文 max-w-3xl），
 * 外层壳子多宽都不影响单行阅读宽度，这里在 daily-views.css 里补一条同选择器优先级、
 * 但入队更晚必赢的规则，让沉浸态真正铺满，不再限 1900px 的上限。
 *
 * 另外：.container-main 自带 px-4/sm:px-6/lg:px-8 左右 gutter。宽度拉满后若不清掉，
 * 右侧详情栏的滚动条会停在「内容区右缘」而不是「主栏视口右缘」，看起来像强行留了一条
 * 白边（2026-07-24 用户反馈）。滚动条本身是自定义细条（webkit），不是系统默认条；
 * 贴边靠的是去掉外层 gutter，不是换成系统条。
 */
.container-main.daily-archive-page--today {
	padding-left: 0;
	padding-right: 0;
}

@media (min-width: 1024px) {
	.container-main.daily-archive-page--today {
		width: 100%;
		max-width: none;
	}
}

/*
 * 外层壳子 .daily-archive-shell 还带着通用 .card 工具类的一圈描边 + 圆角（main.css
 * `.card { border border-line-soft; rounded-lg md:rounded-card }`）。之前只清了内层
 * .daily-reader-shell 的边框，忘了这层外壳自己也有一圈——沉浸态高度贴着 100vh，顶部只隔
 * pt-2/pt-3 一点点 padding，这圈描边贴着顶部、底部各画出一条突兀的横线（2026-07-24
 * 用户截图反馈"顶部/底部不要有线"）。圆角 + overflow:hidden 还会裁掉右侧内容，导致内部
 * 滚动条贴不到真正的视口右边缘（配合上面 100% 铺满一起改，滚动条才能真正贴边）。
 */
.daily-archive-shell.daily-archive-shell--today {
	border: 0;
	border-radius: 0;
}

/*
 * 卡片高度＝视口高度减去「壳子之上」真实占用的空间。桌面端 .container-main 顶部只有
 * pt-2/pt-3（8~12px）的 padding，之前用 7.5rem(120px) 是拍脑袋的旧值，比实际占用多了
 * 近 100px，正文/列表填满内部高度后，卡片自己却比可视区矮一大截，底部露出一整条空白
 * （2026-07-24 用户反馈实测）。这里改成贴近真实值的 2rem，再用 body.admin-bar 单独
 * 减去 WP 顶部工具条的 32px（桌面端固定高度，登录态才会出现）。
 */
.daily-archive-shell {
	display: grid;
	grid-template-columns: minmax(280px, 360px) minmax(0, 1fr);
	align-items: stretch;
	width: 100%;
	min-height: calc(100vh - 2rem);
	height: calc(100vh - 2rem);
	max-height: calc(100vh - 2rem);
	overflow: hidden;
	padding: 0;
}

body.admin-bar .daily-archive-shell {
	min-height: calc(100vh - 2rem - 32px);
	height: calc(100vh - 2rem - 32px);
	max-height: calc(100vh - 2rem - 32px);
}

/*
 * 沉浸态顶部仍留着 .container-main 自带的 pt-2/md:pt-3（8~12px）外边距，上方露出一小截
 * 跟侧栏 F9F8F9 底色不一致的页面本色，用户反馈"顶部没到顶、看着奇怪"（2026-07-24 截图）。
 * 不动 container-main 的 padding（其它状态、height 基准仍依赖它），改用等量负 margin-top
 * 把壳子顶上去正好吃掉这段 padding，同时把 height 加回等量高度——底边位置完全不变，之前
 * 调过的 calc(100vh - 2rem) 基准不受影响。
 */
.daily-archive-shell--today {
	display: block;
	padding: 0;
	margin-top: -0.5rem;
	height: calc(100vh - 2rem + 0.5rem);
	min-height: calc(100vh - 2rem + 0.5rem);
	max-height: calc(100vh - 2rem + 0.5rem);
}

@media (min-width: 768px) {
	.daily-archive-shell--today {
		margin-top: -0.75rem;
		height: calc(100vh - 2rem + 0.75rem);
		min-height: calc(100vh - 2rem + 0.75rem);
		max-height: calc(100vh - 2rem + 0.75rem);
	}
}

body.admin-bar .daily-archive-shell--today {
	height: calc(100vh - 2rem - 32px + 0.5rem);
	min-height: calc(100vh - 2rem - 32px + 0.5rem);
	max-height: calc(100vh - 2rem - 32px + 0.5rem);
}

@media (min-width: 768px) {
	body.admin-bar .daily-archive-shell--today {
		height: calc(100vh - 2rem - 32px + 0.75rem);
		min-height: calc(100vh - 2rem - 32px + 0.75rem);
		max-height: calc(100vh - 2rem - 32px + 0.75rem);
	}
}

.daily-archive-shell--today .daily-day-module,
.daily-archive-shell--today .daily-report,
.daily-archive-shell--today .daily-reader-shell {
	height: 100%;
	min-height: 0;
}

.daily-archive-rail {
	display: flex;
	flex-direction: column;
	min-height: 0;
	height: 100%;
	overflow: hidden;
	border-right: 1px solid #e5e7eb;
	background: rgba(249, 250, 251, 0.85);
	padding: 0.85rem 0.75rem;
}

.daily-archive-stage {
	min-width: 0;
	min-height: 0;
	height: 100%;
	overflow: auto;
	overscroll-behavior: contain;
	padding: 1.25rem 1.5rem;
	background: #fff;
}

.daily-archive-empty {
	max-width: 28rem;
	margin: 0 auto;
}

.daily-view-tabs {
	display: flex;
	width: 100%;
	max-width: 100%;
	margin: 0 0 0.75rem;
	padding: 3px;
	gap: 0;
	border-radius: 9999px;
	background: #f3f4f6;
	border: 1px solid #e5e7eb;
	flex-shrink: 0;
}

.daily-view-tab {
	display: inline-flex;
	flex: 1 1 0;
	align-items: center;
	justify-content: center;
	min-height: 36px;
	padding: 0 0.65rem;
	border-radius: 9999px;
	font-size: 15px;
	font-weight: 500;
	line-height: 1.5;
	color: #666;
	text-decoration: none;
	transition: color 0.15s ease, background-color 0.15s ease;
}

.daily-view-tab:hover {
	color: #222;
}

.daily-view-tab.is-active {
	background: #E03030;
	color: #fff;
}

.daily-view-tab:focus-visible {
	outline: 2px solid #111;
	outline-offset: 2px;
}

.daily-reader-rail-head {
	flex-shrink: 0;
	padding: 1rem 1rem 0;
}

.daily-reader-rail-head .daily-view-tabs {
	margin-bottom: 0.85rem;
}

.daily-reader-list-wrap > .daily-category-tabs {
	flex-shrink: 0;
	flex-wrap: nowrap;
	margin: 0 1rem 0.85rem;
	max-width: calc(100% - 2rem);
	overflow-x: auto;
	overscroll-behavior-x: contain;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
}

.daily-reader-list-wrap > .daily-category-tabs::-webkit-scrollbar {
	display: none;
}

/*
 * 分类切换条比全站默认「大 pill」紧凑一档，避免 4 个分类挤不下、露半个字（用户反馈）。
 * 字号已经是 13px（设计系统里最小档，text-footnote，硬性规则不能再往下压），2026-07-24
 * 用户还是觉得「大」，只能从内边距上再收紧一档，视觉上更小巧。
 * 2026-07-25：禁止 flex 压缩按钮（否则「高质量文章」会被挤成半截而不是横滑出去），
 * 配合 click 时 scrollTabIntoBarView 把选中项滚进视野。
 */
.daily-reader-list-wrap .daily-category-tab {
	flex-shrink: 0;
	padding: 0.25rem 0.5rem;
	gap: 0.25rem;
}

.daily-reader-list-wrap .daily-category-tab-label {
	font-size: 13px; /* text-footnote，设计系统最小档，禁止再往下压 */
}

.daily-reader-list-wrap .daily-category-tab-dot {
	width: 5px;
	height: 5px;
}

/*
 * 列表卡片原来贴边到底（左右都是 0），卡片自己的 0.9rem 内边距一到滚动条/右边分割线
 * 那侧就被滚动条槽吃掉大半，看着像贴着条、贴着线（2026-07-24 用户反馈）。列表容器自己
 * 补一圈横向内边距，把滚动条槽和分割线都让到内边距区，卡片内容跟两者都留出实打实的空隙。
 */
.daily-reader-list {
	padding: 0.5rem 0.65rem;
}

/*
 * 左栏跟右侧详情肉眼分不清是不是同一块（2026-07-24 用户反馈"整个还像一个整体"）：
 * main.css 编译出的 border-line-soft(#EDEDED) 描边 + bg-surface/80 半透明灰，叠在
 * 近乎纯白的详情区上对比度太低，等于没画线。daily-views.css 依赖里排在 main.css
 * 之后（见 templates.php 的 style_deps），同选择器优先级靠后者赢，这里直接换成
 * 更深一档的 line 主色 + 不透明底色（都还是设计系统已有 token 的值，不是新发明的
 * 颜色），不用等服务器跑不了的 npm run build 就能生效。
 */
.daily-reader-list-wrap {
	border-right-color: #DEDEDE;
	background: #F9F8F9;
}

/*
 * 侧栏（时间轴列表）比正文栏窄一档，长标题几乎每条都要截断，用户反馈"再稍微宽一点"
 * （2026-07-24）。这里覆盖 main.css 编译产物里 .daily-reader-layout 的列宽
 * （daily-views.css 依赖排在 main.css 之后，同选择器优先级靠后者赢），不用等构建生效。
 */
.daily-reader-layout {
	grid-template-columns: minmax(300px, 380px) minmax(0, 1fr);
}

/*
 * 阅读正文居中基准＝列表右侧的详情区（2026-07-25 纠偏）：
 * 上一版误做成「整屏 50vw 居中 + 列表绝对叠层」，宽屏正文往列表上压、窄屏像往里塞，
 * 用户反馈不对。正确做法：保持两栏 grid；正文 max-width + margin 左右 auto，
 * 只在详情栏里水平居中，拖浏览器时左右留白跟着详情栏变宽变窄对称适配。
 */
.daily-archive-page--today .daily-reader-layout {
	position: static;
	grid-template-columns: minmax(300px, 380px) minmax(0, 1fr);
}

/* 顶栏相对原位下移 15px，左右栏一起动（2026-07-25） */
@media (min-width: 768px) {
	.daily-archive-page--today .daily-reader-rail-head {
		padding-top: calc(1rem + 15px);
	}

	.daily-archive-page--today .daily-reader-detail-wrap > .daily-reader-panel > .daily-reader-panel-body {
		padding-top: calc(2rem + 15px); /* 原 sm:py-8 = 2rem */
	}
}

.daily-archive-page--today .daily-reader-list-wrap,
.daily-archive-page--today .daily-reader-detail-wrap {
	position: static;
	left: auto;
	top: auto;
	bottom: auto;
	width: auto;
	z-index: auto;
	box-shadow: none;
}

.daily-archive-page--today .daily-reader-panel-body,
.daily-overview-body {
	max-width: 48rem;
	width: 100%;
	margin-left: auto;
	margin-right: auto;
	position: static;
	z-index: auto;
	background: transparent;
	box-shadow: none;
	box-sizing: border-box;
}

/* 详情栏略加左右内边距，避免正文贴列表分割线；栏变宽时仍靠上面 mx-auto 居中 */
@media (min-width: 768px) {
	.daily-archive-page--today .daily-reader-panel {
		padding-left: 1.5rem;
		padding-right: 1.5rem;
	}
}

@media (min-width: 1280px) {
	.daily-archive-page--today .daily-reader-panel {
		padding-left: 2.5rem;
		padding-right: 2.5rem;
	}
}

/*
 * 时间轴列表（2026-07-24 改版，同日按用户反馈多次调整）：左栏原是「文字 + 配图」的
 * 堆叠卡片，配图占地大、扫读效率低。改成钟点 + 分类色点 + 单行标题的时间条形式，
 * 不再显示任何配图/来源文字（来源、分类、补充说明仍保留在 title 悬浮提示里，不丢信息）。
 * 第二次反馈：去掉分割线后又变成看不出彼此独立、像一整块文字；这次按用户给的参考图
 * 补一条贯穿全列表的竖线，串起每一行的色点，行与行之间靠这条线分隔，而不是水平分割线。
 */
.daily-reader-card--timeline {
	position: relative;
	align-items: center;
	gap: 0.625rem;
	border-bottom: 0;
	padding: 0.95rem 0.9rem;
}

.daily-reader-card--timeline .daily-reader-card-time {
	flex-shrink: 0;
	width: 2.5rem;
	font-size: 13px; /* text-footnote，设计系统里字号最小档，不再往下压 */
	font-weight: 400;
	color: #999;
	font-variant-numeric: tabular-nums;
}

.daily-reader-card--timeline .daily-reader-card-dot {
	position: relative;
	z-index: 1;
	flex-shrink: 0;
	width: 6px;
	height: 6px;
	border-radius: 999px;
}

/*
 * 竖线本身：每一行各画一条贯穿自己整行高度的线，行挨着行，线自然首尾相接连成一条
 * 完整竖线，色点叠在线上方（z-index）盖住线段。「今日综合」卡片左右带独立外边距，
 * 不套这条线，避免线的横坐标跟其它行对不齐、断开一截。
 */
.daily-reader-card--timeline:not(.daily-reader-card--overview)::before {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	left: calc(0.9rem + 2.5rem + 0.625rem + 3px);
	width: 1px;
	background: #DEDEDE; /* line-DEFAULT，跟上面加强的列表/详情分隔线同色，同一套 token */
}

.daily-reader-card--overview + .daily-reader-card--timeline::before {
	top: 50%;
}

.daily-reader-list .daily-reader-card--timeline:not(.daily-reader-card--overview):last-child::before {
	bottom: 50%;
}

/*
 * 选中态原先走 main.css 的 border-l-2：border-box 下左边框会挤掉 2px 内容宽，
 * 本行 ::before 竖线跟着左移，跟上下行对不齐，看起来像「选中后连接线断了」
 * （2026-07-24 用户反馈）。改成 inset 红条，不占布局，竖线连续不断。
 */
.daily-reader-list .daily-reader-card--timeline.is-active {
	border-left-width: 0;
	border-left-color: transparent;
	box-shadow: inset 2px 0 0 #E03030;
}

.daily-reader-card--timeline .daily-reader-card-title {
	flex: 1 1 auto;
	min-width: 0;
	margin: 0;
	display: block;
	-webkit-line-clamp: unset;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
	font-size: 13px; /* 原来继承 text-caption 14px，用户反馈偏大，压到 text-footnote 13px（设计系统最小档，不能再往下压） */
	font-weight: 400; /* 基类 .daily-reader-card-title 是 font-semibold(600)，字号已到底，改用更轻的字重让视觉上更小巧 */
}

/*
 * 分类色点实锤查出来是没生效的（2026-07-24 排查）：颜色类名（bg-pink-500 / bg-amber-500 /
 * bg-blue-500 / bg-emerald-500）只写在 includes/daily-render.php 里，但 tailwind.config.js
 * 的 content 只扫了本插件的 templates/**（不含 includes/**），Tailwind 编译时根本没见过
 * 这几个类名字符串，最终 8 份 assets/dist/css/main.*.css 里都查不到 .bg-pink-500 这类规则
 * ——所以点一直是没有颜色的透明圆点，只有「今日综合」那颗写死内联色的红点看得见，用户截图
 * 反馈"就前面一个红点"说的就是这个。服务器编不了 Tailwind（见 CLAUDE 规则），治本要在
 * tailwind.config.js 加 includes/**/*.php 到 content 再重新 npm run build；这里先在不用
 * 构建的 daily-views.css 里把这四个类名的颜色直接写死（跟 Tailwind 官方 500 色值一致），
 * 立刻让色点亮起来。作用域限定在日报的点上，不动全站其它地方可能用到的同名类。
 */
.daily-reader-card-dot.bg-pink-500,
.daily-category-tab-dot.bg-pink-500 {
	background-color: #ec4899;
}

.daily-reader-card-dot.bg-amber-500,
.daily-category-tab-dot.bg-amber-500 {
	background-color: #f59e0b;
}

.daily-reader-card-dot.bg-blue-500,
.daily-category-tab-dot.bg-blue-500 {
	background-color: #3b82f6;
}

.daily-reader-card-dot.bg-emerald-500,
.daily-category-tab-dot.bg-emerald-500 {
	background-color: #10b981;
}

.daily-reader-card--timeline::after {
	content: "";
	flex-shrink: 0;
	width: 7px;
	height: 7px;
	margin-left: 0.15rem;
	border-top: 1.5px solid #ccc;
	border-right: 1.5px solid #ccc;
	transform: rotate(45deg);
}

.daily-reader-card--backfilled .daily-reader-card-title {
	color: #999;
}

/* 「今日综合」：跟文章共用同一套卡片/面板机制，仅样式上做区分（品牌红调），
   不再是结构独立、常驻显示的固定块。 */
.daily-reader-card--overview {
	margin: 0 0.5rem 0.25rem;
	border: 1px solid #fecaca;
	border-radius: 10px;
	background: #fff7f7;
}

.daily-reader-card--overview:hover {
	background: #fef2f2;
}

.daily-reader-card--overview.is-active {
	background: #fee2e2;
	border-color: #E03030;
}

.daily-reader-card-time--overview {
	color: #E03030;
	font-weight: 700;
}

.daily-reader-card-dot--overview {
	background: #E03030;
}

.daily-reader-card--overview .daily-reader-card-title,
.daily-reader-card--overview:hover .daily-reader-card-title {
	color: #E03030;
}

.daily-overview-body {
	max-width: 48rem;
}

.daily-overview-header {
	margin-bottom: 1.25rem;
}

.daily-overview-header-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: flex-start;
	gap: 0.55rem 0.75rem;
	margin-bottom: 0.65rem;
}

.daily-overview-title {
	margin: 0;
	font-size: 32px; /* text-largetitle */
	font-weight: 600;
	line-height: 1.25;
	color: #222;
}

.daily-overview-lead {
	margin: 0;
	font-size: 15px; /* text-subhead */
	line-height: 1.6;
	color: #666;
}

.daily-overview-summary-block {
	margin: 0 0 1.5rem;
	padding: 1rem 1.1rem;
	border-left: 3px solid #E03030;
	background: #fafafa;
	border-radius: 0 12px 12px 0;
}

.daily-overview-section-label {
	margin: 0 0 0.55rem;
	font-size: 13px; /* text-footnote */
	font-weight: 600;
	line-height: 1.4;
	color: #999;
	letter-spacing: 0.02em;
}

.daily-overview-summary {
	margin: 0;
	font-size: 16px; /* text-body */
	font-weight: 400;
	line-height: 1.7;
	color: #222;
}

.daily-overview-summary .daily-report-summary-sent {
	opacity: 1;
}

.daily-overview-stats {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(6.5rem, 1fr));
	gap: 0.75rem;
	margin: 0 0 1.75rem;
}

.daily-overview-stat {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	padding: 0.85rem 1rem;
	border: 1px solid #e5e7eb;
	border-radius: 12px;
	background: #fff;
}

.daily-overview-stat-value {
	font-size: 24px; /* text-page */
	font-weight: 600;
	line-height: 1.2;
	color: #222;
}

.daily-overview-stat-label {
	font-size: 13px; /* text-footnote */
	font-weight: 400;
	line-height: 1.4;
	color: #999;
}

.daily-overview-highlights {
	margin: 0 0 1.5rem;
}

.daily-overview-highlight-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0.45rem;
}

.daily-overview-highlight {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.2rem;
	width: 100%;
	text-align: left;
	padding: 0.75rem 0.9rem;
	border: 1px solid #e5e7eb;
	border-radius: 10px;
	background: #fff;
	cursor: pointer;
	transition:
		border-color 0.15s ease,
		background-color 0.15s ease;
}

.daily-overview-highlight:hover {
	border-color: #fECACA;
	background: #fef2f2;
}

.daily-overview-highlight:focus-visible {
	outline: 2px solid #111;
	outline-offset: 2px;
}

.daily-overview-highlight-cat {
	font-size: 13px; /* text-footnote */
	font-weight: 500;
	line-height: 1.4;
	color: #E03030;
}

.daily-overview-highlight-title {
	font-size: 15px; /* text-subhead */
	font-weight: 500;
	line-height: 1.45;
	color: #222;
}

.daily-overview-hint {
	margin: 0;
	font-size: 13px; /* text-footnote */
	line-height: 1.5;
	color: #999;
}

.daily-reader-panel-toolbar {
	margin: 0 0 1rem;
}

/*
 * 滚动条极简（2026-07-24）：曾给 track 加浅底 + 圆角，想让短滑块不「悬空」，
 * 结果整条轨道像凹槽/阴影，用户反馈「阴影重、不极简」。改回透明轨道，只留细滑块。
 */
.daily-reader-list::-webkit-scrollbar-track,
.daily-reader-panel::-webkit-scrollbar-track {
	background: transparent;
	border-radius: 0;
}

.daily-reader-list::-webkit-scrollbar-thumb,
.daily-reader-panel::-webkit-scrollbar-thumb {
	background: rgba(156, 163, 175, 0.32);
	border-radius: 999px;
	box-shadow: none;
}

.daily-reader-list,
.daily-reader-panel {
	scrollbar-width: thin;
	scrollbar-color: rgba(156, 163, 175, 0.32) transparent;
}

/*
 * 侧栏滚动条二次反馈（2026-07-24 截图标红）：
 * 1) 上下各画了一颗三角箭头按钮——main.css 里其实早写了 display:none，但那是 Tailwind
 *    源文件，服务器编不了 npm run build，线上跑的 dist 产物是旧版本没这条，箭头一直在。
 *    这里在不用构建的 daily-views.css 补一条更靠后的同选择器规则，箭头才真的会消失。
 * 2) 滑块本身偏细、贴着顶/底到头——加宽一点更好点按，且用 track 的 margin 让它跟顶/底
 *    都留出空隙（track 本身仍是透明的，不会重新画出被吐槽过的「凹槽」）。
 */
.daily-reader-list::-webkit-scrollbar-button {
	display: none;
	width: 0;
	height: 0;
}

.daily-reader-list::-webkit-scrollbar {
	width: 7px;
}

.daily-reader-list::-webkit-scrollbar-track {
	margin: 10px 0;
}

@media (max-width: 900px) {
	.daily-archive-shell:not(.daily-archive-shell--today) {
		grid-template-columns: 1fr;
		height: auto;
		max-height: none;
		min-height: 0;
	}

	.daily-archive-rail {
		border-right: 0;
		border-bottom: 1px solid #e5e7eb;
		height: auto;
		padding: 0.75rem;
	}

	.daily-archive-stage {
		height: auto;
		padding: 1rem;
	}
}

@media (max-width: 767px) {
	.daily-archive-shell,
	.daily-archive-shell--today {
		height: auto;
		max-height: none;
		min-height: 0;
	}

	.daily-reader-rail-head {
		padding: 0.75rem 0.75rem 0;
	}

	.daily-reader-card--overview {
		margin: 0 0.75rem 0.5rem;
	}
}

/* —— 本周 —— */
.weekly-report-header {
	margin-bottom: 1rem;
	padding-bottom: 0.75rem;
	border-bottom: 1px solid #eee;
}

.weekly-report-title {
	font-size: 32px;
	font-weight: 600;
	color: #222;
	line-height: 1.25;
}

.weekly-report-range {
	margin-top: 0.35rem;
	font-size: 14px;
	color: #999;
}

.weekly-report-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
	gap: 1.35rem;
	align-items: stretch;
	/* 两栏同高上限；右侧列表超出在栏内滚 */
	--weekly-pane-max: min(82vh, 740px);
	--weekly-ease: cubic-bezier(0.22, 1, 0.36, 1);
}

@media (max-width: 900px) {
	.weekly-report-layout {
		grid-template-columns: 1fr;
		--weekly-pane-max: min(62vh, 520px);
	}
}

.weekly-summary-panel,
.weekly-items-panel {
	min-height: 0;
	height: var(--weekly-pane-max);
	max-height: var(--weekly-pane-max);
	overflow-x: hidden;
	overflow-y: auto;
	overscroll-behavior: contain;
	-webkit-overflow-scrolling: touch;
	scrollbar-gutter: stable;
}

/* 右侧推荐：固定栏高 + 细滚动条 */
.weekly-items-panel {
	scrollbar-width: thin;
	scrollbar-color: #cccccc transparent;
}

.weekly-items-panel::-webkit-scrollbar {
	width: 8px;
}

.weekly-items-panel::-webkit-scrollbar-thumb {
	background: #cccccc;
	border-radius: 9999px;
}

.weekly-items-panel::-webkit-scrollbar-track {
	background: transparent;
}

.weekly-summary-panel {
	display: flex;
	flex-direction: column;
}

/* 无红框：只留内容区，圆钮居中 */
.weekly-summary-card {
	border: none;
	border-radius: 0;
	padding: 0.5rem 0.25rem;
	background: transparent;
	flex: 1 1 auto;
	min-height: 100%;
	display: flex;
	flex-direction: column;
	box-sizing: border-box;
}

.weekly-summary-gate {
	flex: 1 1 auto;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 14rem;
	transition: opacity 0.4s var(--weekly-ease), transform 0.4s var(--weekly-ease);
}

.weekly-summary-gate.is-leaving {
	opacity: 0;
	transform: scale(0.86);
	pointer-events: none;
}

.weekly-summary-gate[hidden] {
	display: none !important;
}

.weekly-summary-orb {
	position: relative;
	width: 8.5rem;
	height: 8.5rem;
	border: none;
	border-radius: 50%;
	background: #E03030;
	color: #fff;
	cursor: pointer;
	appearance: none;
	-webkit-appearance: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 10px 28px rgba(224, 48, 48, 0.28);
	transition: transform 0.35s var(--weekly-ease), box-shadow 0.35s var(--weekly-ease), filter 0.2s ease;
}

.weekly-summary-orb-ring {
	position: absolute;
	inset: -10px;
	border-radius: 50%;
	border: 2px solid rgba(224, 48, 48, 0.35);
	pointer-events: none;
	animation: weekly-orb-pulse 2.4s var(--weekly-ease) infinite;
}

.weekly-summary-orb-label {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.15rem;
	font-size: 15px; /* text-subhead */
	font-weight: 500;
	line-height: 1.35;
	letter-spacing: 0.02em;
}

.weekly-summary-orb:hover {
	transform: scale(1.06);
	box-shadow: 0 14px 34px rgba(224, 48, 48, 0.34);
	filter: brightness(1.02);
}

.weekly-summary-orb:active {
	transform: scale(0.96);
}

.weekly-summary-orb:focus-visible {
	outline: 2px solid #111;
	outline-offset: 4px;
}

.weekly-summary-orb:disabled {
	cursor: wait;
	filter: brightness(0.95);
}

.weekly-summary-body {
	font-size: 16px; /* text-body */
	line-height: 1.75;
	color: #222;
	flex: 1 1 auto;
	padding: 0.35rem 0.15rem;
	opacity: 0;
	transform: translateY(10px);
	transition: opacity 0.45s var(--weekly-ease), transform 0.45s var(--weekly-ease);
}

.weekly-summary-body.is-visible {
	opacity: 1;
	transform: translateY(0);
}

.weekly-summary-body[hidden] {
	display: none !important;
}

.weekly-summary-body p + p {
	margin-top: 0.85rem;
}

.weekly-summary-body.is-streaming::after {
	content: '';
	display: inline-block;
	width: 0.55em;
	height: 1em;
	margin-left: 2px;
	vertical-align: -0.12em;
	background: #E03030;
	animation: weekly-summary-caret 0.9s steps(1) infinite;
}

@keyframes weekly-orb-pulse {
	0% { transform: scale(1); opacity: 0.7; }
	70% { transform: scale(1.12); opacity: 0; }
	100% { transform: scale(1.12); opacity: 0; }
}

@keyframes weekly-summary-caret {
	50% { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
	.weekly-summary-orb-ring,
	.weekly-summary-body.is-streaming::after {
		animation: none;
	}
	.weekly-summary-gate,
	.weekly-summary-orb,
	.weekly-summary-body,
	.weekly-item,
	.weekly-item-expand {
		transition: none !important;
	}
}

.weekly-summary-empty,
.weekly-items-empty {
	font-size: 14px;
	color: #999;
	align-self: center;
	margin: auto;
}

.weekly-item-list {
	list-style: none;
	margin: 0;
	padding: 0 0.15rem 0 0;
	display: flex;
	flex-direction: column;
	gap: 0.85rem;
}

.weekly-item {
	border: 1px solid #eee;
	border-radius: 14px;
	background: #fff;
	padding: 1rem 1.1rem;
	transition:
		box-shadow 0.4s var(--weekly-ease),
		border-color 0.4s var(--weekly-ease),
		transform 0.4s var(--weekly-ease);
}

.weekly-item.is-open,
.weekly-item:hover {
	border-color: #e8e8e8;
	box-shadow: 0 8px 22px rgba(17, 17, 17, 0.08);
	transform: translateY(-2px);
}

.weekly-item-main {
	display: flex;
	align-items: center;
	gap: 0.95rem;
	cursor: pointer;
	min-height: 44px;
}

.weekly-item-thumb {
	width: 72px;
	height: 72px;
	border-radius: 10px;
	overflow: hidden;
	flex-shrink: 0;
	background: #f3f4f6;
	transition: transform 0.4s var(--weekly-ease);
}

.weekly-item.is-open .weekly-item-thumb,
.weekly-item:hover .weekly-item-thumb {
	transform: scale(1.03);
}

.weekly-item-thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.weekly-item-title {
	font-size: 16px; /* text-body */
	font-weight: 600;
	color: #222;
	line-height: 1.45;
	margin: 0;
}

.weekly-item-source {
	margin: 0.3rem 0 0;
	font-size: 13px; /* text-footnote */
	color: #999;
}

/* 展开区：grid 0fr→1fr 缓动，收起不再生硬跳切 */
.weekly-item-expand {
	display: grid;
	grid-template-rows: 0fr;
	opacity: 0;
	margin-top: 0;
	transition:
		grid-template-rows 0.45s var(--weekly-ease),
		opacity 0.35s ease,
		margin-top 0.45s var(--weekly-ease);
}

.weekly-item.is-open .weekly-item-expand {
	grid-template-rows: 1fr;
	opacity: 1;
	margin-top: 0.9rem;
}

.weekly-item-expand-inner {
	overflow: hidden;
	min-height: 0;
	border-top: 1px solid transparent;
	padding-top: 0;
	transition:
		border-color 0.35s ease,
		padding-top 0.45s var(--weekly-ease);
}

.weekly-item.is-open .weekly-item-expand-inner {
	border-top-color: #f0f0f0;
	padding-top: 0.85rem;
}

.weekly-item-blurb {
	font-size: 14px; /* text-caption */
	line-height: 1.7;
	color: #666;
	background: #f7f5ff;
	border-radius: 10px;
	padding: 0.9rem 1rem;
	margin-bottom: 0.85rem;
}

.weekly-item-cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 40px;
	padding: 0 1.15rem;
	border-radius: 8px;
	background: #E03030;
	color: #fff !important;
	font-size: 14px;
	font-weight: 500;
	text-decoration: none !important;
	transition: filter 0.2s ease, transform 0.25s var(--weekly-ease);
}

.weekly-item-cta:hover {
	filter: brightness(0.95);
	transform: translateY(-1px);
}

.weekly-item-cta:focus-visible {
	outline: 2px solid #111;
	outline-offset: 2px;
}

/* —— 专题占位 —— */
.daily-topics-placeholder {
	padding: 2.5rem 1rem;
}

.daily-topics-card {
	max-width: 36rem;
	margin: 0 auto;
	text-align: center;
	padding: 2rem 1.5rem;
	border: 1px dashed #ddd;
	border-radius: 12px;
	background: #fafafa;
}

.daily-topics-title {
	font-size: 24px;
	font-weight: 600;
	color: #222;
	margin: 0 0 0.75rem;
}

.daily-topics-desc {
	font-size: 15px;
	line-height: 1.6;
	color: #666;
	margin: 0;
}

/* —— 今日阅读器详情头：标题 / 摘要竖杠 / 查看原文+元信息一行 —— */
.daily-reader-lede {
	margin: 0 0 1rem;
	padding-left: 0.85rem;
	border-left: 3px solid #E03030;
}

.daily-reader-lede-label {
	margin: 0 0 0.35rem;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.4;
	color: #E03030;
}

.daily-reader-lede-text {
	margin: 0;
	font-size: 15px;
	font-weight: 400;
	line-height: 1.65;
	color: #666;
}

.daily-reader-stats-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.85rem 1.25rem;
	margin: 0 0 1.5rem;
	padding: 1rem 0 0;
	border-top: 1px solid #e5e7eb;
}

.daily-reader-stats-row .daily-reader-panel-source-link {
	flex-shrink: 0;
	align-self: center;
}

.daily-reader-stats {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0.75rem 1.25rem;
	flex: 1 1 14rem;
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

.daily-reader-stat {
	min-width: 0;
}

.daily-reader-stat-label {
	display: block;
	margin: 0 0 0.25rem;
	font-size: 13px;
	font-weight: 400;
	line-height: 1.4;
	color: #999;
}

.daily-reader-stat-value {
	margin: 0;
	font-size: 14px;
	font-weight: 500;
	line-height: 1.45;
	color: #666;
	word-break: break-word;
}

.daily-reader-stat-relative {
	margin-left: 0.35rem;
	font-size: 13px;
	font-weight: 400;
	color: #999;
}

.daily-reader-backfill-note {
	margin: -0.75rem 0 1.25rem;
	font-size: 13px;
	font-weight: 400;
	line-height: 1.4;
	color: #999;
}

@media (max-width: 520px) {
	.daily-reader-stats {
		grid-template-columns: 1fr;
		flex-basis: 100%;
	}
}

/* 详情标题 → 原文（与「查看原文」同链；继承标题字号色，不另起链接蓝） */
.daily-reader-panel-title-link {
	color: inherit;
	text-decoration: none;
	transition: opacity 0.15s ease;
}

.daily-reader-panel-title-link:hover {
	opacity: 0.82;
	text-decoration: underline;
	text-underline-offset: 0.18em;
}

.daily-reader-panel-title-link:focus-visible {
	outline: 2px solid #111;
	outline-offset: 3px;
	border-radius: 2px;
}

@media (prefers-reduced-motion: reduce) {
	.daily-reader-panel-title-link {
		transition: none;
	}
}

/*
 * 抓取正文：排版完全跟合集/文章 .entry-content（主题 main.css）
 * 字号 16 / 行高 1.5 / 色 #222 / 标题 32·24 / code·mark 等同款
 * 禁止在此再写 font-size / line-height / letter-spacing / color，以免盖掉合集约定
 */
.daily-reader-panel-body-text.entry-content {
	word-break: break-word;
}

.daily-reader-panel-body-text.entry-content > *:first-child {
	margin-top: 0;
}

/* 表格：主题 .entry-content 未覆盖，阅读器内横向滚动兜底（继承正文色/字号） */
.daily-reader-panel-body-text.entry-content table {
	display: block;
	width: 100%;
	overflow-x: auto;
	border-collapse: collapse;
	margin: 1rem 0;
}

.daily-reader-panel-body-text.entry-content th,
.daily-reader-panel-body-text.entry-content td {
	border: 1px solid #e5e7eb;
	padding: 0.45rem 0.65rem;
	text-align: left;
}

@media (prefers-reduced-motion: reduce) {
	.daily-view-tab,
	.weekly-item {
		transition: none;
	}
}

/* —— 今日标题旁：切换日期 / 查看总结 —— */
.daily-report-header-row {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
	justify-content: flex-start;
	gap: 0.55rem 0.75rem;
}

.daily-report-header-actions {
	display: inline-flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.45rem;
}

.daily-report-action-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 32px;
	padding: 0 0.85rem;
	border: 1px solid #e5e7eb;
	border-radius: 9999px;
	background: #fff;
	color: #666;
	font-size: 14px; /* text-caption */
	font-weight: 500;
	line-height: 1.4;
	cursor: pointer;
	transition:
		color 0.15s ease,
		background-color 0.15s ease,
		border-color 0.15s ease;
}

.daily-report-action-btn:hover {
	color: #222;
	border-color: #d1d5db;
	background: #f9fafb;
}

.daily-report-action-btn.is-active,
.daily-report-date-menu.is-open .daily-report-action-btn[data-daily-date-toggle] {
	color: #fff;
	background: #E03030;
	border-color: #E03030;
}

.daily-report-action-btn:focus-visible {
	outline: 2px solid #111;
	outline-offset: 2px;
}

.daily-report-date-menu {
	position: relative;
}

.daily-report-date-popover {
	position: absolute;
	top: calc(100% + 6px);
	left: 0;
	z-index: 30;
	display: flex;
	flex-direction: column;
	min-width: 11.5rem;
	max-height: min(50vh, 280px);
	overflow-y: auto;
	overscroll-behavior: contain;
	padding: 0.35rem;
	border: 1px solid #e5e7eb;
	border-radius: 12px;
	background: #fff;
	box-shadow: 0 8px 24px rgba(17, 17, 17, 0.08);
}

.daily-report-date-popover[hidden] {
	display: none;
}

.daily-report-date-option {
	display: block;
	padding: 0.55rem 0.75rem;
	border-radius: 8px;
	color: #666;
	font-size: 14px; /* text-caption */
	font-weight: 500;
	line-height: 1.4;
	text-decoration: none;
	white-space: nowrap;
	transition:
		color 0.15s ease,
		background-color 0.15s ease;
}

.daily-report-date-option:hover {
	color: #222;
	background: #f3f4f6;
}

.daily-report-date-option.is-active {
	color: #E03030;
	background: #fef2f2;
	font-weight: 600;
}

.daily-report-date-option:focus-visible {
	outline: 2px solid #111;
	outline-offset: 1px;
}

/* 导读展开：grid 0fr→1fr，收起时下方内容上推 */
.daily-report-summary-wrap:not(.is-open) {
	pointer-events: none;
}

.daily-report-summary-wrap {
	display: grid;
	grid-template-rows: 0fr;
	opacity: 0;
	margin-top: 0;
	transition:
		grid-template-rows 0.4s cubic-bezier(0.22, 1, 0.36, 1),
		opacity 0.28s ease,
		margin-top 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

.daily-report-summary-wrap.is-open {
	grid-template-rows: 1fr;
	opacity: 1;
	margin-top: 0.75rem;
}

.daily-report-summary-slot {
	overflow: hidden;
	min-height: 0;
}

.daily-report-summary-wrap .daily-report-summary {
	margin-top: 0;
}

.daily-report-summary-sent {
	display: inline;
	opacity: 0;
	transition: opacity 0.32s ease;
}

.daily-report-summary-sent.is-in,
.daily-report-summary-wrap.is-played .daily-report-summary-sent {
	opacity: 1;
}

.daily-report-summary-sent + .daily-report-summary-sent::before {
	content: '';
}

@media (prefers-reduced-motion: reduce) {
	.daily-report-action-btn,
	.daily-report-date-option,
	.daily-report-summary-wrap,
	.daily-report-summary-sent {
		transition: none !important;
	}

	.daily-report-summary-sent {
		opacity: 1;
	}
}

/* ---- 资讯机器人 FAB：对齐顶部 AiFaceAvatar（primary-500 #e03030 / 36px） ---- */
.daily-reader-bot {
	position: fixed;
	/* 再往左、往上一点；与 float-card 右下角对齐，开卡时正好盖住 */
	right: max(2.75rem, calc(env(safe-area-inset-right) + 1.75rem));
	bottom: max(3.5rem, calc(env(safe-area-inset-bottom) + 2.25rem));
	z-index: 45;
	pointer-events: none;
}

.daily-reader-bot.is-chat-open {
	visibility: hidden;
	opacity: 0;
	pointer-events: none;
}

.daily-reader-bot-fab {
	/* 与 theme AiFaceAvatar：h-9 w-9 = 36px、bg-primary-500 */
	position: relative;
	pointer-events: auto;
	width: 36px;
	height: 36px;
	border: 0;
	border-radius: 999px;
	background: #e03030;
	box-shadow: 0 1px 2px rgba(17, 17, 17, 0.08);
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	user-select: none;
	-webkit-appearance: none;
	appearance: none;
	transition: transform 0.1s ease, box-shadow 0.1s ease, background-color 0.1s ease, opacity 0.15s ease;
}

.daily-reader-bot-fab:hover {
	background: #c52a2a; /* primary-600 */
	box-shadow: 0 4px 6px rgba(17, 17, 17, 0.1);
}

.daily-reader-bot-fab:active {
	transform: scale(0.98);
}

.daily-reader-bot-fab:focus-visible {
	outline: none;
	box-shadow: 0 0 0 2px #fff, 0 0 0 4px rgba(224, 48, 48, 0.4);
}

.daily-reader-bot-fab.is-busy {
	opacity: 0.9;
	cursor: pointer;
}

/* 白竖条眼：定位用 top/left，transform 留给跟鼠标（同 AiFaceAvatar） */
.daily-reader-bot-fab-eye {
	position: absolute;
	top: 12px;
	width: 5px;
	height: 12px;
	border-radius: 999px;
	background: #fff;
	transition: height 0.1s ease-out;
	will-change: transform;
}

.daily-reader-bot-fab-eye--left {
	left: 10px;
}

.daily-reader-bot-fab-eye--right {
	right: 10px;
}

.daily-reader-bot-fab-eye.is-blink {
	height: 2px;
}

@media (max-width: 767px) {
	.daily-reader-bot {
		right: max(1.75rem, calc(env(safe-area-inset-right) + 1rem));
		bottom: max(5.75rem, calc(env(safe-area-inset-bottom) + 4.75rem));
	}
}

@media (prefers-reduced-motion: reduce) {
	.daily-reader-bot-fab,
	.daily-reader-bot-fab-eye {
		transition: none !important;
	}
}
