/* LỊCH VẠN NIÊN — styles tách từ theme Lịch Việt (chỉ .lv-* + biến :root), an toàn với TechPulse */
:root {
	--lv-red: #c8102e;
	--lv-red-dark: #9c0c23;
	--lv-cream: #fef7e6;
	--lv-cream-2: #fbeecb;
	--lv-gold: #d4a017;
	--lv-ink: #2a2118;
	--lv-muted: #7a6f60;
	--lv-line: #ecdfc2;
	--lv-white: #fffdf8;
	--lv-green: #1f7a4d;
	--lv-shadow: 0 6px 24px rgba(120, 80, 20, .12);
	--lv-radius: 16px;
	--lv-maxw: 1140px;
	--lv-font: "Be Vietnam Pro", "Segoe UI", system-ui, -apple-system, sans-serif;
	--lv-display: "Playfair Display", Georgia, serif;
}

.lv-container { max-width: var(--lv-maxw); margin: 0 auto; padding: 0 20px; }

/* ===== Header ===== */
.lv-header {
	background: linear-gradient(180deg, var(--lv-red), var(--lv-red-dark));
	color: #fff;
	position: sticky;
	top: 0;
	z-index: 50;
	box-shadow: 0 2px 14px rgba(156, 12, 35, .35);
}
.lv-header-inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	min-height: 64px;
}
.lv-logo {
	display: flex;
	align-items: center;
	gap: 10px;
	color: #fff;
	font-weight: 800;
	font-size: 1.25rem;
	letter-spacing: .3px;
}
.lv-logo .lv-logo-mark {
	width: 36px; height: 36px;
	background: var(--lv-gold);
	color: var(--lv-red-dark);
	border-radius: 9px;
	display: grid; place-items: center;
	font-family: var(--lv-display);
	font-weight: 900;
	font-size: 1.1rem;
}
.lv-nav { display: flex; }
.lv-nav ul { list-style: none; margin: 0; padding: 0; display: flex; gap: 4px; flex-wrap: wrap; }
.lv-nav li { margin: 0; }
.lv-nav a {
	color: #fff;
	padding: 8px 12px;
	border-radius: 999px;
	font-size: .9rem;
	font-weight: 600;
	opacity: .92;
	display: inline-block;
}
.lv-nav a:hover, .lv-nav .current-menu-item > a {
	background: rgba(255, 255, 255, .16);
	opacity: 1;
}
.lv-menu-toggle {
	display: none;
	background: rgba(255,255,255,.15);
	border: 0; color: #fff;
	width: 42px; height: 42px; border-radius: 10px;
	font-size: 1.3rem; cursor: pointer;
}

/* ===== Layout ===== */
.lv-main { padding: 28px 0 50px; }
.lv-grid {
	display: grid;
	grid-template-columns: 1fr 340px;
	gap: 28px;
	align-items: start;
}
.lv-section { margin-bottom: 34px; }
.lv-section-head {
	display: flex; align-items: baseline; justify-content: space-between;
	gap: 12px; margin-bottom: 16px;
}
.lv-section-head h2 {
	font-family: var(--lv-display);
	font-size: 1.5rem;
	margin: 0;
	color: var(--lv-red-dark);
	position: relative;
	padding-left: 14px;
}
.lv-section-head h2::before {
	content: "";
	position: absolute; left: 0; top: 6px; bottom: 6px;
	width: 5px; border-radius: 3px;
	background: linear-gradient(var(--lv-gold), var(--lv-red));
}
.lv-seeall { font-size: .9rem; font-weight: 700; white-space: nowrap; }

/* ===== Card lịch hôm nay ===== */
.lv-today {
	background: var(--lv-white);
	border: 1px solid var(--lv-line);
	border-radius: var(--lv-radius);
	box-shadow: var(--lv-shadow);
	overflow: hidden;
}
.lv-today-grid { display: grid; grid-template-columns: 1fr 1fr; }
.lv-today-side { padding: 22px 24px; text-align: center; }
.lv-today-side.solar { background: linear-gradient(180deg, #fff, var(--lv-cream)); }
.lv-today-side.lunar { background: linear-gradient(180deg, var(--lv-red), var(--lv-red-dark)); color: #fff; }
.lv-today-tag {
	display: inline-flex; align-items: center; gap: 6px;
	font-size: .78rem; font-weight: 800; letter-spacing: 1px;
	text-transform: uppercase; opacity: .85; margin-bottom: 4px;
}
.lv-today-num {
	font-family: var(--lv-display);
	font-size: 5.2rem; line-height: 1; font-weight: 900;
	margin: 6px 0;
}
.lv-today-side.solar .lv-today-num { color: var(--lv-red); }
.lv-today-weekday { font-weight: 700; font-size: 1.05rem; }
.lv-today-sub { font-size: .92rem; opacity: .9; }
.lv-today-canchi {
	border-top: 1px dashed var(--lv-line);
	padding: 14px 24px;
	display: flex; justify-content: space-around; gap: 10px;
	flex-wrap: wrap; text-align: center;
}
.lv-canchi-item .k { font-size: .76rem; color: var(--lv-muted); font-weight: 700; }
.lv-canchi-item .v { font-weight: 800; color: var(--lv-red-dark); }

/* ===== Giờ tốt ===== */
.lv-hours {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 10px;
	margin-top: 4px;
}
.lv-hour {
	background: var(--lv-white);
	border: 1px solid var(--lv-line);
	border-left: 4px solid var(--lv-green);
	border-radius: 12px;
	padding: 11px 14px;
}
.lv-hour .n { font-weight: 800; color: var(--lv-green); font-size: .95rem; }
.lv-hour .n .r { font-weight: 500; color: var(--lv-muted); font-size: .8rem; }
.lv-stars { display: inline-flex; gap: 1px; margin-top: 4px; font-size: .95rem; line-height: 1; }
.lv-stars span { color: #d9d2c2; }
.lv-stars span.on { color: var(--lv-gold); }

/* ===== Đồng hồ thời gian thực ===== */
.lv-clock {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 18px;
	flex-wrap: wrap;
	background:
		radial-gradient(140% 120% at 0% 0%, rgba(212,160,23,.22), transparent 55%),
		linear-gradient(135deg, #2a1216 0%, #7a0f1f 55%, #9c0c23 100%);
	border: 1px solid rgba(212,160,23,.4);
	border-radius: var(--lv-radius);
	box-shadow: 0 10px 30px rgba(120,10,30,.35), inset 0 1px 0 rgba(255,255,255,.08);
	padding: 16px 22px;
	margin-bottom: 18px;
	color: #fff;
	overflow: hidden;
}
.lv-clock::after {
	content: "";
	position: absolute; right: -40px; top: -60px;
	width: 180px; height: 180px; border-radius: 50%;
	background: radial-gradient(circle, rgba(212,160,23,.18), transparent 70%);
	pointer-events: none;
}
.lv-clock-left { display: flex; flex-direction: column; gap: 4px; z-index: 1; }
.lv-clock-label {
	font-size: .8rem; font-weight: 800; letter-spacing: 1.5px; text-transform: uppercase;
	color: var(--lv-gold);
}
.lv-clock-date { font-size: 1.05rem; font-weight: 600; color: #fdeede; }
.lv-clock-time {
	display: flex; align-items: center; gap: 8px; z-index: 1;
	font-variant-numeric: tabular-nums;
}
.lv-cl-box {
	background: rgba(0,0,0,.32);
	border: 1px solid rgba(255,255,255,.14);
	border-radius: 12px;
	padding: 8px 14px;
	min-width: 1.7em;
	text-align: center;
	font-size: 2.7rem;
	font-weight: 800;
	line-height: 1;
	color: #ffd97a;
	text-shadow: 0 2px 10px rgba(0,0,0,.35);
	font-feature-settings: "tnum";
}
.lv-clock-time i {
	font-style: normal;
	font-size: 2rem;
	font-weight: 800;
	color: rgba(255,255,255,.65);
	animation: lv-blink 1s steps(1, end) infinite;
}
@keyframes lv-blink { 50% { opacity: .25; } }

/* ===== Day panel (lịch âm hôm nay / chi tiết ngày) ===== */
.lv-daypanel {
	background: var(--lv-white);
	border: 1px solid var(--lv-line);
	border-radius: var(--lv-radius);
	box-shadow: var(--lv-shadow);
	overflow: hidden;
}
.lv-daypanel-head { display: grid; grid-template-columns: 1fr 1fr; }
.lv-dp-half {
	background: linear-gradient(180deg, var(--lv-green), #186040);
	color: #fff; text-align: center; padding: 12px; font-weight: 800;
	letter-spacing: .5px; text-transform: uppercase; font-size: .88rem;
}
.lv-dp-half:first-child { border-right: 1px solid rgba(255,255,255,.25); }
.lv-daypanel-body {
	position: relative; display: grid; grid-template-columns: 1fr 1fr;
	align-items: center; padding: 22px 56px;
}
.lv-dp-col { text-align: center; padding: 0 10px; }
.lv-dp-col.solar { border-right: 1px solid var(--lv-line); }
.lv-dp-weekday { font-weight: 800; color: var(--lv-red); font-size: 1.15rem; margin-bottom: 4px; }
.lv-dp-num { font-family: var(--lv-display); font-size: 4.6rem; line-height: 1; font-weight: 900; color: var(--lv-ink); margin: 2px 0 8px; }
.lv-dp-col.solar .lv-dp-num { color: var(--lv-green); }
.lv-dp-sub { font-size: .92rem; color: var(--lv-muted); }
.lv-dp-meta { font-size: .92rem; margin-top: 2px; }
.lv-dp-meta b { color: var(--lv-red-dark); }
.lv-day-prev, .lv-day-next {
	position: absolute; top: 50%; transform: translateY(-50%);
	width: 42px; height: 42px; border-radius: 50%;
	border: 1px solid var(--lv-line); background: var(--lv-white);
	cursor: pointer; font-size: 1.3rem; color: var(--lv-muted); font-weight: 800;
	display: grid; place-items: center; transition: .15s; z-index: 2;
}
.lv-day-prev { left: 10px; }
.lv-day-next { right: 10px; }
.lv-day-prev:hover, .lv-day-next:hover { background: var(--lv-green); color: #fff; border-color: var(--lv-green); }
.lv-dp-tags { display: flex; gap: 8px; flex-wrap: wrap; padding: 0 22px 14px; border-bottom: 1px dashed var(--lv-line); }
.lv-tag { font-size: .82rem; font-weight: 800; padding: 5px 12px; border-radius: 999px; }
.lv-tag.good { background: #fdecef; color: var(--lv-red); }
.lv-tag.bad { background: #f1e9f7; color: #7a3ea8; }
.lv-tag.truc { background: var(--lv-cream-2); color: var(--lv-red-dark); }
.lv-dp-section { padding: 16px 22px 4px; }
.lv-dp-section h3 { font-family: var(--lv-display); color: var(--lv-red-dark); margin: 0 0 12px; font-size: 1.2rem; }
.lv-daypanel .lv-do {
	margin: 4px 22px 20px; background: var(--lv-cream);
	border: 1px solid var(--lv-line); border-radius: 12px; padding: 14px 16px;
}
.lv-do p { margin: 6px 0; font-size: .95rem; }
.lv-do .nen b { color: var(--lv-green); }
.lv-do .khong b { color: var(--lv-red); }

/* ===== Lịch tháng ===== */
.lv-month {
	background: var(--lv-white);
	border: 1px solid var(--lv-line);
	border-radius: var(--lv-radius);
	box-shadow: var(--lv-shadow);
	padding: 18px;
}
.lv-month-bar {
	display: flex; align-items: center; justify-content: space-between;
	margin-bottom: 10px; gap: 10px;
	background: linear-gradient(180deg, var(--lv-green), #186040);
	border-radius: 12px; padding: 10px 14px;
}
.lv-month-title { font-family: var(--lv-display); font-size: 1.3rem; font-weight: 800; color: #fff; text-align: center; flex: 1; }
.lv-month-bar .lv-prev, .lv-month-bar .lv-next {
	border: 0; background: rgba(255,255,255,.18); color: #fff;
	width: 40px; height: 40px; border-radius: 10px; cursor: pointer;
	font-size: 1.3rem; font-weight: 800; flex: none; transition: .15s;
}
.lv-month-bar .lv-prev:hover, .lv-month-bar .lv-next:hover { background: rgba(255,255,255,.34); }
.lv-month-tools { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; flex-wrap: wrap; gap: 8px; }
.lv-today-btn {
	border: 1px solid var(--lv-line); background: var(--lv-cream);
	padding: 7px 16px; border-radius: 999px; cursor: pointer;
	font-size: .85rem; font-weight: 700; color: var(--lv-red-dark);
}
.lv-today-btn:hover { background: var(--lv-red); color: #fff; border-color: var(--lv-red); }
.lv-legend { display: flex; gap: 16px; font-size: .85rem; color: var(--lv-muted); font-weight: 600; }
.lv-legend i.dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 4px; vertical-align: middle; }
.lv-legend i.dot.good { background: var(--lv-red); }
.lv-legend i.dot.bad { background: #7a3ea8; }
.lv-month-hint { font-size: .85rem; color: var(--lv-muted); margin-top: 10px; text-align: center; font-style: italic; }
.lv-month-table { width: 100%; border-collapse: collapse; }
.lv-month-table th {
	font-size: .72rem; color: var(--lv-muted); font-weight: 700;
	padding: 8px 0; text-transform: uppercase; letter-spacing: .3px;
}
.lv-month-table th.sun { color: var(--lv-red); }
.lv-cell {
	position: relative; text-align: center; vertical-align: top;
	border: 1px solid var(--lv-line);
	height: 78px; width: 14.28%;
	padding: 8px 2px 4px; cursor: pointer; transition: .12s; outline: none;
}
.lv-cell.empty { background: #eef6ee; border-color: #e2efe2; cursor: default; }
.lv-cell:not(.empty):hover, .lv-cell:focus-visible { background: var(--lv-cream-2); box-shadow: inset 0 0 0 2px var(--lv-gold); }
.lv-cell .dot { position: absolute; top: 6px; right: 7px; width: 8px; height: 8px; border-radius: 50%; }
.lv-cell .dot.good { background: var(--lv-red); }
.lv-cell .dot.bad { background: #7a3ea8; }
.lv-d-solar { font-weight: 800; font-size: 1.15rem; }
.lv-d-lunar { font-size: .72rem; color: var(--lv-muted); }
.lv-d-canchi { font-size: .64rem; color: #9b8f7c; margin-top: 1px; line-height: 1.2; }
.lv-month-table td.sun .lv-d-solar { color: var(--lv-red); }
.lv-cell.today { background: #d8f3d8; border-color: var(--lv-green); box-shadow: inset 0 0 0 2px var(--lv-green); }
.lv-cell .lv-d-lunar.first { color: var(--lv-red); font-weight: 700; }

/* ===== Quick links ===== */
.lv-quick { display: flex; flex-wrap: wrap; gap: 10px; }
.lv-quick a {
	background: var(--lv-white); border: 1px solid var(--lv-line);
	padding: 9px 14px; border-radius: 999px; font-weight: 600; font-size: .9rem;
	color: var(--lv-ink);
}
.lv-quick a:hover { border-color: var(--lv-red); color: var(--lv-red); }

/* ===== Bài viết / card ===== */
.lv-posts {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 18px;
}
.lv-card {
	background: var(--lv-white);
	border: 1px solid var(--lv-line);
	border-radius: var(--lv-radius);
	overflow: hidden;
	box-shadow: 0 2px 10px rgba(120,80,20,.06);
	transition: .18s;
	display: flex; flex-direction: column;
}
.lv-card:hover { transform: translateY(-3px); box-shadow: var(--lv-shadow); }
.lv-card-thumb { aspect-ratio: 16/9; background: var(--lv-cream-2); overflow: hidden; }
.lv-card-thumb img { width: 100%; height: 100%; object-fit: cover; }
.lv-card-body { padding: 14px 16px; flex: 1; display: flex; flex-direction: column; }
.lv-card-cat {
	font-size: .74rem; font-weight: 800; text-transform: uppercase;
	letter-spacing: .5px; color: var(--lv-gold); margin-bottom: 6px;
}
.lv-card-title { font-size: 1.05rem; font-weight: 700; line-height: 1.35; margin: 0 0 8px; }
.lv-card-title a { color: var(--lv-ink); }
.lv-card-title a:hover { color: var(--lv-red); }
.lv-card-excerpt { font-size: .9rem; color: var(--lv-muted); margin: 0 0 12px; flex: 1; }
.lv-card-meta {
	font-size: .82rem; color: var(--lv-muted);
	display: flex; gap: 10px; align-items: center; flex-wrap: wrap;
	border-top: 1px solid var(--lv-line); padding-top: 10px;
}
.lv-card-meta a { font-weight: 700; }

/* ===== Load more ===== */
.lv-loadmore-wrap { text-align: center; margin-top: 24px; }
.lv-loadmore {
	background: linear-gradient(180deg, var(--lv-red), var(--lv-red-dark));
	color: #fff; border: 0; cursor: pointer;
	padding: 13px 34px; border-radius: 999px;
	font-weight: 800; font-size: .95rem; letter-spacing: .3px;
	box-shadow: 0 6px 18px rgba(200,16,46,.3);
	transition: .15s;
}
.lv-loadmore:hover { transform: translateY(-2px); }
.lv-loadmore:disabled { opacity: .6; cursor: default; transform: none; }
.lv-loadmore.is-loading { color: transparent; position: relative; }
.lv-loadmore.is-loading::after {
	content: ""; position: absolute; inset: 0; margin: auto;
	width: 18px; height: 18px; border-radius: 50%;
	border: 3px solid rgba(255,255,255,.4); border-top-color: #fff;
	animation: lv-spin .7s linear infinite;
}
@keyframes lv-spin { to { transform: rotate(360deg); } }
.lv-loadmore-end { color: var(--lv-muted); font-size: .88rem; }

/* ===== Sidebar ===== */
.lv-side-box {
	background: var(--lv-white); border: 1px solid var(--lv-line);
	border-radius: var(--lv-radius); padding: 16px 18px; margin-bottom: 22px;
}
.lv-side-box h3 {
	font-family: var(--lv-display); font-size: 1.15rem; color: var(--lv-red-dark);
	margin: 0 0 12px;
}
.lv-side-list { list-style: none; margin: 0; padding: 0; }
.lv-side-list li { padding: 9px 0; border-bottom: 1px dashed var(--lv-line); }
.lv-side-list li:last-child { border-bottom: 0; }
.lv-side-list a { color: var(--lv-ink); font-weight: 600; font-size: .94rem; }
.lv-side-list a:hover { color: var(--lv-red); }

/* ===== Single ===== */
.lv-article { background: var(--lv-white); border: 1px solid var(--lv-line); border-radius: var(--lv-radius); padding: 28px 32px; box-shadow: var(--lv-shadow); }
.lv-breadcrumb { font-size: .85rem; color: var(--lv-muted); margin-bottom: 14px; }
.lv-breadcrumb a { font-weight: 600; }
.lv-article h1 { font-family: var(--lv-display); font-size: 2.1rem; line-height: 1.2; color: var(--lv-ink); margin: 0 0 14px; }
.lv-article-meta { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; color: var(--lv-muted); font-size: .9rem; margin-bottom: 20px; padding-bottom: 18px; border-bottom: 1px solid var(--lv-line); }
.lv-article-content { font-size: 1.05rem; line-height: 1.8; }
.lv-article-content h2 { font-family: var(--lv-display); color: var(--lv-red-dark); margin-top: 1.6em; }
.lv-article-content img { border-radius: 12px; margin: 18px 0; }
.lv-article-content blockquote { border-left: 4px solid var(--lv-gold); margin: 18px 0; padding: 8px 18px; background: var(--lv-cream); border-radius: 0 10px 10px 0; }

/* Author box */
.lv-authorbox {
	display: flex; gap: 16px; align-items: flex-start;
	background: var(--lv-cream); border: 1px solid var(--lv-line);
	border-radius: var(--lv-radius); padding: 18px 20px; margin: 30px 0;
}
.lv-authorbox img { width: 64px; height: 64px; border-radius: 50%; flex: none; }
.lv-authorbox .name { font-weight: 800; font-size: 1.1rem; }
.lv-authorbox .name a { color: var(--lv-red-dark); }
.lv-authorbox .bio { font-size: .92rem; color: var(--lv-muted); margin: 4px 0 0; }

/* Author header */
.lv-author-hero {
	background: var(--lv-white); border: 1px solid var(--lv-line);
	border-radius: var(--lv-radius); padding: 26px 28px; margin-bottom: 28px;
	display: flex; gap: 20px; align-items: center; box-shadow: var(--lv-shadow);
}
.lv-author-hero img { width: 92px; height: 92px; border-radius: 50%; border: 3px solid var(--lv-gold); }
.lv-author-hero h1 { font-family: var(--lv-display); margin: 0 0 6px; color: var(--lv-red-dark); font-size: 1.8rem; }
.lv-author-hero .count { color: var(--lv-muted); font-size: .9rem; }
.lv-author-hero .bio { margin: 8px 0 0; color: var(--lv-ink); }

/* ===== Footer ===== */
.lv-footer {
	background: var(--lv-ink); color: #d9cfbf; margin-top: 40px;
	padding: 40px 0 20px;
}
.lv-footer-cols { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 30px; }
.lv-footer h4 { color: #fff; font-family: var(--lv-display); margin: 0 0 12px; }
.lv-footer ul { list-style: none; padding: 0; margin: 0; }
.lv-footer li { padding: 5px 0; }
.lv-footer a { color: #d9cfbf; font-size: .92rem; }
.lv-footer a:hover { color: var(--lv-gold); }
.lv-footer-bottom { border-top: 1px solid #3a3026; margin-top: 26px; padding-top: 16px; text-align: center; font-size: .85rem; color: #9c8f7c; }

/* ===== Pagination fallback (ẩn vì dùng load more) ===== */
.lv-empty { background: var(--lv-white); border: 1px dashed var(--lv-line); border-radius: var(--lv-radius); padding: 40px; text-align: center; color: var(--lv-muted); }

/* ===== Responsive ===== */
@media (max-width: 980px) {
	.lv-grid { grid-template-columns: 1fr; }
	.lv-footer-cols { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px) {
	.lv-nav { display: none; position: absolute; top: 64px; left: 0; right: 0; background: var(--lv-red-dark); padding: 10px; }
	.lv-nav.open { display: block; }
	.lv-nav ul { flex-direction: column; }
	.lv-menu-toggle { display: block; }
	.lv-posts { grid-template-columns: 1fr; }
	.lv-hours { grid-template-columns: repeat(2, 1fr); }
	.lv-today-num { font-size: 4rem; }
	.lv-article { padding: 20px 18px; }
	.lv-article h1 { font-size: 1.6rem; }
	.lv-footer-cols { grid-template-columns: 1fr; }
	.lv-author-hero { flex-direction: column; text-align: center; }
}

/* ===== Responsive bổ sung cho panel ngày & lịch tháng ===== */
@media (max-width: 640px) {
	.lv-daypanel-body { padding: 18px 44px; }
	.lv-dp-num { font-size: 3.4rem; }
	.lv-day-prev, .lv-day-next { width: 36px; height: 36px; font-size: 1.1rem; }
	.lv-dp-col { padding: 0 4px; }
	.lv-dp-sub, .lv-dp-meta { font-size: .82rem; }
	.lv-cell { height: 62px; padding: 6px 1px 3px; }
	.lv-d-solar { font-size: .98rem; }
	.lv-d-lunar { font-size: .64rem; }
	.lv-d-canchi { font-size: .56rem; }
	.lv-month-table th { font-size: .6rem; }
	.lv-month-title { font-size: 1.05rem; }
	.lv-legend { width: 100%; justify-content: center; }
	.lv-hour { padding: 9px 10px; }
}
@media (max-width: 380px) {
	.lv-d-canchi { display: none; }
}

/* Đồng hồ trên mobile */
@media (max-width: 640px) {
	.lv-clock { justify-content: center; text-align: center; gap: 12px; padding: 14px; }
	.lv-clock-left { align-items: center; }
	.lv-cl-box { font-size: 2.1rem; padding: 6px 10px; }
	.lv-clock-time i { font-size: 1.6rem; }
}

/* ===================== THỜI TIẾT ===================== */
.lv-weather {
	background: var(--lv-white);
	border: 1px solid var(--lv-line);
	border-radius: var(--lv-radius);
	box-shadow: var(--lv-shadow);
	padding: 16px;
}
.lv-weather-bar {
	display: flex; align-items: center; justify-content: space-between;
	gap: 12px; flex-wrap: wrap; margin-bottom: 14px;
}
.lv-weather-loc { display: flex; align-items: center; gap: 8px; }
.lv-weather-pin { font-size: 1.1rem; }
#lv-weather-province {
	font-family: var(--lv-font); font-size: .95rem; font-weight: 600;
	color: var(--lv-ink); background: var(--lv-cream);
	border: 1px solid var(--lv-line); border-radius: 10px;
	padding: 9px 14px; cursor: pointer; min-width: 220px;
}
#lv-weather-province:focus { outline: 2px solid var(--lv-gold); }
.lv-weather-updated { font-size: .85rem; color: var(--lv-muted); font-weight: 600; }
.lv-weather-loading { padding: 40px; text-align: center; color: var(--lv-muted); }
.lv-weather-credit { margin-top: 12px; font-size: .78rem; color: #a99e8b; text-align: right; }

/* Card hôm nay */
.lv-wx-today {
	border-radius: 14px; padding: 20px 22px; color: #fff; margin-bottom: 16px;
	background: linear-gradient(135deg, #5a6b7a, #3c4a57);
	box-shadow: 0 8px 22px rgba(0,0,0,.12);
}
.lv-wx-today.wx-sun   { background: linear-gradient(135deg, #ff9d2f, #ff6f3c); }
.lv-wx-today.wx-cloud { background: linear-gradient(135deg, #7d8ea0, #54616f); }
.lv-wx-today.wx-rain  { background: linear-gradient(135deg, #3a7bd5, #2b5876); }
.lv-wx-today.wx-storm { background: linear-gradient(135deg, #485563, #29323c); }
.lv-wx-today.wx-fog   { background: linear-gradient(135deg, #9099a2, #6c757d); }
.lv-wx-today.wx-snow  { background: linear-gradient(135deg, #83a4d4, #5f8bc4); }
.lv-wx-today-main { display: flex; align-items: center; gap: 16px; }
.lv-wx-ico { font-size: 3.6rem; line-height: 1; }
.lv-wx-temp { font-family: var(--lv-display); font-size: 3.6rem; font-weight: 900; line-height: 1; }
.lv-wx-temp sup { font-size: 1.2rem; font-weight: 700; vertical-align: super; }
.lv-wx-now-info { margin-left: 4px; }
.lv-wx-cond { font-size: 1.2rem; font-weight: 800; }
.lv-wx-loc { font-size: .95rem; opacity: .9; }
.lv-wx-meta {
	display: flex; flex-wrap: wrap; gap: 8px 18px; margin-top: 16px;
	padding-top: 14px; border-top: 1px solid rgba(255,255,255,.25);
	font-size: .9rem; font-weight: 600;
}

/* Lưới 7 ngày */
.lv-wx-week {
	display: grid; grid-template-columns: repeat(7, 1fr); gap: 10px;
}
.lv-wx-day {
	background: var(--lv-cream); border: 1px solid var(--lv-line);
	border-radius: 12px; padding: 12px 6px; text-align: center;
}
.lv-wx-day.is-today { border-color: var(--lv-red); box-shadow: inset 0 0 0 2px rgba(200,16,46,.25); background: #fff; }
.lv-wx-day-name { font-weight: 800; font-size: .9rem; color: var(--lv-red-dark); }
.lv-wx-day-date { font-size: .76rem; color: var(--lv-muted); margin-bottom: 6px; }
.lv-wx-day-ico { font-size: 2rem; line-height: 1.2; }
.lv-wx-day-cond { font-size: .72rem; color: var(--lv-muted); min-height: 2.2em; display: flex; align-items: center; justify-content: center; }
.lv-wx-day-temp { font-size: .95rem; margin-top: 4px; }
.lv-wx-day-temp b { color: var(--lv-ink); }
.lv-wx-day-temp span { color: var(--lv-muted); margin-left: 4px; }
.lv-wx-day-rain { font-size: .74rem; color: #3a7bd5; margin-top: 4px; font-weight: 600; }

/* ===================== TRANG HẸP (mẫu trang) ===================== */
.lv-page-narrow { max-width: 980px; margin: 0 auto; }

/* Đồng hồ lớn cho trang riêng */
.lv-clock--lg { padding: 30px 32px; }
.lv-clock--lg .lv-cl-box { font-size: 4.5rem; padding: 12px 22px; border-radius: 16px; }
.lv-clock--lg .lv-clock-time i { font-size: 3rem; }
.lv-clock--lg .lv-clock-label { font-size: 1rem; }
.lv-clock--lg .lv-clock-date { font-size: 1.4rem; }

/* ===================== Responsive thời tiết & đồng hồ lớn ===================== */
@media (max-width: 860px) {
	.lv-wx-week { grid-template-columns: repeat(4, 1fr); }
}
@media (max-width: 640px) {
	.lv-wx-week { grid-template-columns: repeat(3, 1fr); }
	.lv-wx-temp { font-size: 2.8rem; }
	.lv-wx-ico { font-size: 2.8rem; }
	#lv-weather-province { min-width: 0; flex: 1; }
	.lv-weather-loc { width: 100%; }
	.lv-clock--lg .lv-cl-box { font-size: 2.8rem; padding: 8px 12px; }
	.lv-clock--lg .lv-clock-time i { font-size: 2rem; }
}
@media (max-width: 420px) {
	.lv-wx-week { grid-template-columns: repeat(2, 1fr); }
}

/* Khung trang Lịch vạn niên trong TechPulse (nền kem giống bản gốc) */
.lv-vannien-page{font-family:var(--lv-font);color:var(--lv-ink);background:radial-gradient(1200px 400px at 50% -120px,var(--lv-cream-2),transparent 70%),var(--lv-cream);border:1px solid var(--lv-line);border-radius:var(--lv-radius);padding:22px 20px 28px;margin-top:16px}
.lv-vannien-page .lv-section:last-of-type{margin-bottom:0}
.lv-vannien-desc{color:var(--lv-ink)}
