/* =========================================================
   奉节日出日落与火烧云预报 — 样式表
   设计方向：暮光渐变 Hero（深色）+ 浅色通透内容区
   · 主色：暮光渐变（琥珀 → 珊瑚 → 品红 → 紫）
   · 卡片：大圆角 / 柔和彩色阴影 / 玻璃质感
   ========================================================= */

:root{
  /* 全站统一暖暮色基调：与 Hero 天空的暖橙地平线同族，页面上下一体。
     层次只有三级，越往内越亮：页面 --bg → 板块框 --panel → 卡片 --surface */
  --bg:#f6ead9;      /* 页面：略深的暖米，让板块框能浮出来 */
  --bg-tint:#f6ead9;
  --panel:#fffcf8;   /* 板块框 */
  --surface:#ffffff; /* 框内的卡片 */
  --line:#ecdac4;
  --line-strong:#dfc5a8;
  --ink:#2b2320;
  --ink-2:#5c5049;
  --ink-3:#8d7f76;

  --brand:#ee6a45;
  --brand-2:#f2a94b;
  --brand-3:#d95f74;
  --brand-4:#8b6fb0;
  --gold:#e8b26a;

  --ok:#4a9464;
  --mid:#e08a1e;
  --bad:#8b8b8b;

  /* 全站主渐变：一处定义，多处复用（暖琥珀 → 珊瑚 → 玫瑰，不用高饱和紫） */
  --grad:linear-gradient(96deg,#f7ab4e 0%,#f2764a 48%,#d95f74 100%);
  --grad-soft:linear-gradient(96deg,#ffd9a8 0%,#f0b096 45%,#e3a8b4 100%);

  --r:22px;
  --r-s:14px;
  --shadow:0 18px 40px -20px rgba(120,60,30,.30), 0 2px 8px rgba(120,60,30,.05);
  --shadow-s:0 10px 24px -16px rgba(120,60,30,.28), 0 1px 3px rgba(120,60,30,.05);

  --maxw:1180px;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:84px}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Source Han Sans SC",system-ui,-apple-system,"Segoe UI",sans-serif;
  font-size:15px;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{margin:0;font-weight:800;letter-spacing:.01em}
p{margin:0}
ul{margin:0;padding:0;list-style:none}
a{color:inherit;text-decoration:none}
b{font-weight:700}

.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 24px}

/* =========================================================
   顶栏：Hero 上为透明深色，滚过 Hero 后切浅色毛玻璃
   （fixed 悬浮，Hero 渐变从页面最顶端延伸到它后面）
   ========================================================= */
.topbar{
  position:fixed;top:0;left:0;right:0;z-index:60;
  background:transparent;border-bottom:1px solid transparent;
  transition:background .3s ease, border-color .3s ease, backdrop-filter .3s ease;
}
.topbar__inner{display:flex;align-items:center;justify-content:space-between;gap:18px;height:68px}

.brand{display:flex;align-items:center;gap:12px;min-width:0}
.brand__sun{
  width:28px;height:28px;border-radius:50%;flex:none;
  background:radial-gradient(circle at 50% 50%, #ffe0a8 0%, #f0a95c 52%, #dd6b48 100%);
  box-shadow:0 0 0 6px rgba(224,140,90,.14), 0 0 18px rgba(210,130,80,.28);
}
.brand__text{display:flex;flex-direction:column;line-height:1.22;min-width:0}
.brand__text strong{
  font-size:15.5px;letter-spacing:.01em;color:#fff;white-space:nowrap;
  transition:color .3s ease;
}
.brand__text em{
  font-style:normal;font-size:10px;color:rgba(255,255,255,.6);
  letter-spacing:.16em;text-transform:uppercase;transition:color .3s ease;
}

.nav{display:flex;gap:4px;font-size:14px}
.nav a{
  padding:7px 13px;border-radius:999px;color:rgba(255,255,255,.8);
  transition:background .2s ease, color .2s ease;
}
.nav a:hover{color:#fff;background:rgba(255,255,255,.14)}
.nav a.is-on{color:#fff;background:rgba(255,255,255,.22);font-weight:600}

.topbar--light{
  background:rgba(251,243,234,.88);
  backdrop-filter:saturate(160%) blur(14px);
  border-bottom:1px solid var(--line);
}
.topbar--light .brand__text strong{color:var(--ink)}
.topbar--light .brand__text em{color:var(--ink-3)}
.topbar--light .nav a{color:var(--ink-2)}
.topbar--light .nav a:hover{color:var(--brand);background:#f7e6d2}
.topbar--light .nav a.is-on{color:var(--brand);background:#f4e0c8;font-weight:600}

@media(max-width:900px){
  .nav{display:none}
  .brand__text strong{font-size:14px;white-space:normal}
}

/* =========================================================
   Hero：暮光渐变 + 光晕 + 山脊剪影
   ========================================================= */
.hero{
  position:relative;overflow:hidden;color:#fff;
  padding:124px 0 96px;   /* 顶部给 fixed 顶栏留出空间 */
  /* 暮色：深靛蓝 → 暗紫 → 哑光琥珀地平线。刻意压低饱和与亮度，避免顶部刺眼 */
  background:#4a3340;
}
.hero__sky{position:absolute;inset:0;z-index:0;overflow:hidden}

.hero__orb{position:absolute;border-radius:50%;filter:blur(70px);opacity:.26}
.hero__orb--1{
  width:520px;height:520px;left:-8%;top:-24%;
  background:radial-gradient(circle,#4a41a8 0%,rgba(74,65,168,0) 68%);
  animation:orbA 24s ease-in-out infinite;
}
.hero__orb--2{
  width:460px;height:460px;right:-6%;top:8%;
  background:radial-gradient(circle,#8f4257 0%,rgba(143,66,87,0) 70%);
  animation:orbB 28s ease-in-out infinite;
}
.hero__orb--3{
  width:440px;height:440px;left:44%;bottom:-16%;
  background:radial-gradient(circle,#b5764a 0%,rgba(181,118,74,0) 70%);
  opacity:.2;animation:orbA 32s ease-in-out infinite reverse;
}
@keyframes orbA{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(40px,26px) scale(1.08)}}
@keyframes orbB{0%,100%{transform:translate(0,0) scale(1.05)}50%{transform:translate(-34px,20px) scale(.95)}}

/* 落日日盘已移除——顶部改由「实时天气层」承担氛围（见 .hwx） */

/* 山脊剪影：夔门意象（纯 CSS，不依赖任何图片） */
.hero__ridge{
  position:absolute;left:0;right:0;bottom:-1px;height:210px;
  background:rgba(11,8,18,.90);
  clip-path:polygon(0 100%,0 66%,7% 60%,13% 74%,20% 42%,27% 68%,34% 54%,42% 80%,50% 46%,
                    57% 72%,65% 44%,72% 70%,79% 55%,86% 76%,93% 62%,100% 80%,100% 100%);
}

.hero__inner{position:relative;z-index:2}

/* =========================================================
   实时天气层 .hwx
   ---------------------------------------------------------
   结构上只有三层，非常干净：
     ① .hwx 自身 = 天空底色（CSS 渐变，随 data-wx 切换）
     ② canvas   = 云 / 雾 / 雨 / 雪（逐帧粒子，绝不平铺）
     ③ 叠加层   = 夜间压暗 + 闪电 + 压角

   配色原则（用户要求：顶部不要渐变，其余区域底色统一）：
     · 顶部是纯色 —— 每种天气一个单色（取原暮色渐变的中段），
       天气之间的差异靠色相/明度体现，不靠渐变层次；
     · 所有单色都是低饱和深色，与页面暖米底色同一调性，且保证
       白色标题与卡片的对比度；
     · 夜间统一叠一层冷压暗（同为纯色），不另外定义一套色板；
     · 压角晕影、底部过渡层一并去掉，否则纯色顶部会被这些
       叠加的渐变重新「染」出层次，等于没改。
   ========================================================= */
.hwx{
  position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden;
  /* 默认（晴）天空 */
  background:#6b4048;   /* 纯色，不再做渐变 */
}
.hwx > *{position:absolute}

/* 粒子画布：铺满，位于天空之上、压角之下。
   左右 5% 用 mask 渐隐：云/雾/雨/雪飘出画布侧缘时不再被硬切出竖直边，
   canvas 透明处露出的正是同一片 CSS 天空渐变，视觉无缝 */
.hwx__cv{
  inset:0;width:100%;height:100%;display:block;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 5%,#000 95%,transparent 100%);
          mask-image:linear-gradient(90deg,transparent 0,#000 5%,#000 95%,transparent 100%);
}

/* 夜间：统一压暗并收一点饱和，让暮色成为主调 */
.hwx__night{
  inset:0;opacity:0;transition:opacity 1.1s ease;
  background:rgba(5,4,14,.46);
}

/* 闪电：整片天空的短促提亮（透明度由 JS 按随机间隔写入） */
.hwx__bolt{
  inset:0;opacity:0;mix-blend-mode:screen;transition:opacity .06s linear;
  background:radial-gradient(120% 78% at 60% 6%,rgba(255,244,228,.40),rgba(238,214,224,.10) 46%,rgba(0,0,0,0) 74%);
}

/* 压角：顶部改为纯色后不再需要晕影（否则四角会发暗），保留元素以兼容 JS */
.hwx__vig{inset:0;background:none}

/* =========================================================
   各天气的天空底色
   ========================================================= */
/* 晴：通透暮光，地平线最暖最亮 */
.hwx[data-wx="clear"]{
  background:#6b4048;
}
/* 少云 / 多云：暖调稍退，云感上来 */
.hwx[data-wx="partly"]{
  background:#5f3d47;
}
/* 阴：整体压成中性灰褐，地平线只剩一点暖 */
.hwx[data-wx="cloud"]{
  background:#45424a;
}
/* 毛毛雨：介于阴与雨之间 */
.hwx[data-wx="drizzle"]{
  background:#3a3f49;
}
/* 雨：上方转冷灰蓝，地平线保留微弱暖意 */
.hwx[data-wx="rain"]{
  background:#2f3742;
}
/* 雷阵雨：比雨更沉，为闪电留出对比 */
.hwx[data-wx="storm"]{
  background:#232a36;
}
/* 雪：冷灰蓝，但提亮一档，雪天本来就比雨天亮 */
.hwx[data-wx="snow"]{
  background:#3a4354;
}
/* 雾：灰白扁平，明度最高、对比最低 */
.hwx[data-wx="fog"]{
  background:#45444b;
}
.hwx[data-day="0"] .hwx__night{opacity:1}


/* —— 右上角「天气实况」小标：玻璃质感，跟随天气文字给出实况 —— */
.hwx__label{
  position:absolute;right:24px;top:86px;z-index:3;
  display:inline-flex;align-items:center;gap:9px;
  padding:7px 14px 7px 11px;border-radius:999px;
  font-size:12.5px;letter-spacing:.02em;
  color:rgba(255,255,255,.9);
  background:rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.16);
  backdrop-filter:blur(14px) saturate(130%);
  box-shadow:0 8px 24px -14px rgba(0,0,0,.5);
  transition:opacity .5s ease,transform .5s ease;
}
.hwx__label i{
  font-style:normal;font-size:15px;line-height:1;
  filter:drop-shadow(0 1px 4px rgba(0,0,0,.35));
}
.hwx__label b{font-weight:700}
.hwx__label span{color:rgba(255,255,255,.62);font-size:11.5px}
.hwx__label.is-empty{opacity:0;transform:translateY(-6px)}
@media(max-width:760px){
  /* 小屏右上角被导航与刷新按钮占满，改挂到左下角、山脊之上 */
  .hwx__label{
    top:auto;right:auto;bottom:18px;left:14px;
    padding:5px 10px;font-size:11.5px;gap:6px;
  }
  .hwx__label i{font-size:13px}
  .hwx__label span{display:none}
}

/* 顶部文字在「阴/雨/雾」这类天空变亮变灰的状态下，靠阴影稳住对比度 */
.hero__title{text-shadow:0 2px 6px rgba(10,8,20,.30), 0 12px 38px rgba(10,8,20,.28)}
.hero__sub{text-shadow:0 1px 6px rgba(10,8,20,.34)}
.hero__loc{text-shadow:0 1px 6px rgba(10,8,20,.42)}
.hero__head{
  display:flex;align-items:flex-end;justify-content:space-between;gap:30px;
  flex-wrap:wrap;margin-bottom:34px;
}
.hero__loc{
  display:inline-flex;align-items:center;gap:7px;
  font-size:12px;font-weight:700;letter-spacing:.16em;color:#e8c79c;
}
.hero__loc::before{
  content:"";width:6px;height:6px;border-radius:50%;background:#e0a05c;
  box-shadow:0 0 8px rgba(224,160,92,.7);
}
.hero__title{
  font-size:clamp(30px,4.6vw,46px);line-height:1.22;margin:10px 0 10px;font-weight:800;
  background:linear-gradient(180deg,#ffffff 0%,#f0ddc8 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  text-shadow:0 8px 30px rgba(0,0,0,.18);
}
.hero__sub{color:rgba(255,255,255,.72);font-size:15px;max-width:640px}

.picker{display:flex;align-items:center;gap:10px;min-width:0;flex-wrap:wrap}
/* 窄屏：标题与选择器改为上下堆叠，选择器占满一行，避免右端溢出屏幕 */
@media(max-width:760px){
  .hero__head{flex-direction:column;align-items:stretch;gap:18px}
  .picker{width:100%}
  .picker__sel{flex:1 1 120px;min-width:0;max-width:100%}
  .picker .btn{flex:none}
}
.picker__label{font-size:13px;color:rgba(255,255,255,.7)}
.picker__sel{
  appearance:none;
  border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.14);
  color:#fff;border-radius:999px;padding:10px 36px 10px 16px;font-size:14px;cursor:pointer;
  font-family:inherit;backdrop-filter:blur(8px);
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8'><path d='M1 1l5 5 5-5' fill='none' stroke='%23ffffff' stroke-width='1.6' stroke-linecap='round'/></svg>");
  background-repeat:no-repeat;background-position:right 15px center;
}
.picker__sel option{color:#2b2320}
.picker__sel:focus{outline:2px solid rgba(255,255,255,.5);outline-offset:1px}

.btn{
  border:1px solid var(--line-strong);background:var(--surface);color:var(--ink-2);
  border-radius:999px;padding:10px 18px;font-size:14px;cursor:pointer;
  font-family:inherit;font-weight:600;transition:.2s ease;
}
.btn:hover{color:var(--brand);border-color:var(--brand);box-shadow:var(--shadow-s);transform:translateY(-1px)}
.btn--ghost.spin span{display:inline-block;animation:spin .9s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.btn--sm{padding:6px 14px;font-size:12.5px;margin-top:10px}

/* Hero 里的按钮/下拉走玻璃质感 */
.hero .btn{
  background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.3);color:#fff;
  backdrop-filter:blur(8px);
}
.hero .btn:hover{background:rgba(255,255,255,.24);border-color:#fff;color:#fff;box-shadow:0 8px 20px -8px rgba(0,0,0,.4)}

.hero__grid{display:grid;grid-template-columns:1.12fr .98fr;gap:20px}
@media(max-width:920px){.hero__grid{grid-template-columns:1fr}}
/* ★ grid/flex 子项默认 min-width:auto，会被内部内容的最小宽度撑开：
   窄屏下卡片被撑到 385px 而容器只有 327px，右侧被 hero 的 overflow:hidden
   裁掉 —— 手机上「顶部显示不完全」就是这个。显式归零让子项可收缩 */
.hero__grid > *{min-width:0}
.card,.card *{min-width:0}
.sunrow > *,.facts > *{min-width:0}

/* =========================================================
   卡片（内容区为浅色；Hero 内自动转玻璃质感）
   ========================================================= */
.card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--r);
  box-shadow:var(--shadow);
  padding:26px 28px 28px;
  transition:transform .25s ease, box-shadow .25s ease;
}
.card__hd{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}
.card__hd h2{font-size:17px}
.card__hd h3{font-size:16px}
.chip{
  font-size:12px;color:var(--ink-2);background:var(--bg-tint);
  border:1px solid var(--line);border-radius:999px;padding:4px 13px;white-space:nowrap;
}
.chip--warn{color:#a4551c;background:#fff1e0;border-color:#f7dcc0}

.hero .card{
  background:rgba(255,255,255,.075);
  border:1px solid rgba(255,255,255,.14);
  backdrop-filter:blur(18px) saturate(130%);
  box-shadow:0 26px 60px -30px rgba(0,0,0,.55);
  color:#fff;
}
.hero .card:hover{transform:translateY(-2px)}
.hero .chip{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.18);color:#f3e3d2}

/* 太阳时刻行 */
.sunrow{display:flex;align-items:stretch;gap:6px}
.sunrow__item{flex:1;display:flex;align-items:center;gap:14px}
.sunrow__ico{
  width:42px;height:42px;border-radius:50%;flex:none;position:relative;
  box-shadow:0 6px 18px -6px rgba(0,0,0,.4);
}
.sunrow__ico--rise{background:linear-gradient(160deg,#ffe08a,#ff8a3d)}
.sunrow__ico--set{background:linear-gradient(160deg,#ff9a5a,#d2486f)}
.sunrow__ico::after{
  content:"";position:absolute;left:11%;right:11%;bottom:-9px;height:8px;border-radius:8px;
  background:rgba(120,70,40,.16);filter:blur(1px);
}
.sunrow__k{font-size:12.5px;letter-spacing:.08em}
.sunrow__v{font-size:33px;font-weight:800;line-height:1.12;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.sunrow__x{font-size:12.5px}
.hero .sunrow__k,.hero .sunrow__x{color:rgba(255,255,255,.72)}
.hero .sunrow__v{color:#fff}
.sunrow__sep{width:1px;background:rgba(255,255,255,.24);margin:4px 12px}

.countdown{
  margin:22px 0 18px;padding:16px 20px;border-radius:var(--r-s);
  background:linear-gradient(120deg,rgba(226,158,96,.20),rgba(190,96,116,.18));
  border:1px solid rgba(255,255,255,.18);
}
.countdown__label{font-size:12.5px;color:#e9c9a8;letter-spacing:.08em}
.countdown__time{
  font-size:31px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.01em;color:#fff;
  text-shadow:0 4px 18px rgba(0,0,0,.22);
}

.facts{display:grid;grid-template-columns:repeat(2,1fr);gap:11px 20px;border-top:1px dashed rgba(255,255,255,.24);padding-top:18px}
.facts li{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:13.5px}
.facts span{color:rgba(255,255,255,.66)}
.facts b{font-variant-numeric:tabular-nums;color:#fff}

/* 霞光仪表 */
.hero .card--glow{
  background:linear-gradient(180deg,rgba(255,255,255,.10) 0%,rgba(206,140,110,.13) 100%);
}
.gauges{display:flex;gap:16px;justify-content:space-around;flex-wrap:wrap}
.gauge{position:relative;width:158px;text-align:center}
.gauge__svg{width:142px;height:142px;display:block;margin:0 auto;transform:rotate(-90deg)}
.gauge__track{fill:none;stroke:rgba(255,255,255,.18);stroke-width:11}
.gauge__bar{
  fill:none;stroke:var(--brand);stroke-width:11;stroke-linecap:round;
  stroke-dasharray:326.7;stroke-dashoffset:326.7;
  transition:stroke-dashoffset .9s cubic-bezier(.4,0,.2,1), stroke .5s;
  filter:drop-shadow(0 0 7px rgba(232,150,110,.45));
}
.gauge__mid{position:absolute;top:44px;left:0;right:0;pointer-events:none}
.gauge__mid b{font-size:38px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1;color:#fff}
.gauge__mid i{font-style:normal;font-size:12px;color:rgba(255,255,255,.7);margin-left:2px}
.gauge__name{font-size:13px;color:rgba(255,255,255,.8);margin-top:6px}
.gauge__lv{font-size:14px;font-weight:800;margin-top:2px}
/* 深色 Hero 里，JS 按分数写入的中低亮度颜色（灰、暗橙）会偏暗，整体提亮 */
.hero .gauge__lv{filter:brightness(1.35) saturate(1.1)}
.hero .verdict b{filter:brightness(1.4) saturate(1.05)}
.verdict{
  margin-top:18px;padding:15px 17px;border-radius:var(--r-s);
  font-size:14px;line-height:1.75;
}
.hero .verdict{background:rgba(14,7,22,.30);border:1px solid rgba(255,255,255,.18);color:rgba(255,255,255,.92)}

.hero__note{margin-top:18px;font-size:12.5px;color:rgba(255,255,255,.68)}

/* =========================================================
   区块
   ========================================================= */
/* =========================================================
   板块分区框：每个 section 的内容包在一个独立的圆角区域里，
   板块之间靠「框 + 留白」分隔，不再散在页面上
   ========================================================= */
.section{padding:30px 0}
.section:first-of-type{padding-top:46px}
.section > .wrap{
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:26px;
  padding:32px 38px 36px;
  box-shadow:var(--shadow-s);
}
.section--tint{background:var(--bg-tint);border:0}

@media(max-width:760px){
  /* 左右 14px 让板块框不贴到屏幕边缘 */
  .section{padding:20px 14px}
  .section:first-of-type{padding-top:26px}
  .section > .wrap{border-radius:18px;padding:20px 16px 22px}
}
.sec__hd{position:relative;max-width:780px;margin-bottom:28px;padding-left:16px}
.sec__hd::before{
  content:"";position:absolute;left:0;top:7px;bottom:7px;width:4px;border-radius:4px;
  background:var(--grad);
}
.sec__title{
  font-size:clamp(22px,2.8vw,29px);line-height:1.35;font-weight:800;
  background:var(--grad);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.sec__desc{margin-top:10px;color:var(--ink-2);font-size:14.5px;line-height:1.78}
.sec__desc br+.sec__caveat,.sec__caveat{color:var(--ink-3);font-size:13px;line-height:1.72}

/* 七日卡片 */
.days{display:grid;grid-template-columns:repeat(7,1fr);gap:13px}
@media(max-width:1080px){.days{grid-template-columns:repeat(4,1fr)}}
@media(max-width:680px){.days{grid-template-columns:repeat(2,1fr)}}
.day{
  background:var(--surface);border:1px solid var(--line);border-radius:18px;
  padding:16px 15px 17px;box-shadow:var(--shadow-s);display:flex;flex-direction:column;gap:11px;
  transition:transform .22s ease, box-shadow .22s ease;
}
.day:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
/* 今日：渐变描边（padding-box + border-box 双层背景实现） */
.day--today{
  border:1.5px solid transparent;
  background:linear-gradient(#fff,#fff) padding-box, var(--grad) border-box;
  box-shadow:0 14px 30px -18px rgba(203,104,120,.34), var(--shadow-s);
}
.day__top{display:flex;align-items:center;justify-content:space-between}
.day__d{font-size:16px;font-weight:800}
.day__w{font-size:12px;color:var(--ink-3)}
.tag{
  font-size:10.5px;color:#fff;border-radius:999px;padding:2px 9px;font-weight:800;
  background:var(--grad);letter-spacing:.02em;
}
.day__sun{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.day__sun i{font-style:normal;font-size:14px}
.day__len{font-size:11.5px;color:var(--ink-3)}
.day__wx{font-size:12px;color:var(--ink-2);display:flex;justify-content:space-between;gap:6px}
.day__wx em{font-style:normal;color:var(--ink-3)}

.glowbar{margin-top:2px}
.glowbar__hd{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;margin-bottom:5px}
.glowbar__hd span{color:var(--ink-3)}
.glowbar__hd b{font-variant-numeric:tabular-nums}
.glowbar__track{height:8px;border-radius:99px;background:linear-gradient(90deg,#f6e7da,#f1dccb);overflow:hidden}
.glowbar__fill{height:100%;border-radius:99px;transition:width .8s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 8px -2px rgba(232,120,90,.38)}

.day__tip{font-size:11.5px;color:var(--ink-3);line-height:1.55;border-top:1px dashed var(--line-strong);padding-top:8px;min-height:34px}

/* =========================================================
   今日光线时间轴
   ========================================================= */
.tl{margin-bottom:24px}
.tl__bar{
  position:relative;height:58px;border-radius:18px;overflow:hidden;
  border:1px solid rgba(255,255,255,.6);display:flex;
  box-shadow:var(--shadow);
}
.tl__seg{height:100%;position:relative}
.tl__seg span{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:10.5px;color:rgba(255,255,255,.96);font-weight:700;letter-spacing:.04em;
  text-shadow:0 1px 3px rgba(0,0,0,.3);white-space:nowrap;overflow:hidden;
}
.tl__axis{display:flex;justify-content:space-between;margin-top:8px;font-size:11px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.tl__legend{display:flex;flex-wrap:wrap;gap:9px 20px;margin-top:16px}
.tl__lg{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-2)}
.tl__lg i{width:13px;height:13px;border-radius:4px;flex:none;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.tl__lg b{font-variant-numeric:tabular-nums;color:var(--ink-3);font-weight:600}

.tl__list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:13px}

/* 今日光线时段：紧凑信息卡，仅当前时间点使用天气色动态提示 */
#timeline .tl{margin-bottom:20px}
#timeline .tl__list{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
#timeline .tlitem{position:relative;isolation:isolate;display:flex;min-height:0;flex-direction:column;align-items:flex-start;overflow:hidden;gap:0;padding:13px 15px;border:1px solid #e9e2da;border-left:1px solid #e9e2da;border-radius:13px;background:#fffdfa;box-shadow:0 3px 12px -10px rgba(54,46,65,.25);transition:border-color .25s ease,background-color .25s ease,box-shadow .25s ease}
#timeline .tlitem::after{display:none}
#timeline .tlitem[data-active="true"]{border-color:#e5c49b;box-shadow:0 5px 15px -11px rgba(148,99,56,.35);animation:tl-active-tint 3.4s ease-in-out infinite alternate}
#timeline .tlitem[data-active="true"][data-weather="clear"]{background-color:#fff3dc}
#timeline .tlitem[data-active="true"][data-weather="cloud"]{background-color:#f0f1f4;border-color:#d9dce4}
#timeline .tlitem[data-active="true"][data-weather="rain"]{background-color:#eaf1f7;border-color:#d0dce8}
#timeline .tlitem[data-active="true"][data-weather="unknown"]{background-color:#f3efff;border-color:#ded8ee}
#timeline .tlitem__time{font-size:21px;line-height:1.05;font-weight:750;letter-spacing:-.025em;font-variant-numeric:tabular-nums;color:#342c36}
#timeline .tlitem__title{margin-top:5px;font-size:12.5px;font-weight:700;color:#51464b}
#timeline .tlitem__desc{margin:4px 0 8px;font-size:11px;line-height:1.45;color:#746a68}
#timeline .tlitem__weather{display:flex;align-items:center;gap:7px;margin-top:auto;color:#514b49}
#timeline .tlitem__icon{display:grid;width:25px;height:25px;place-items:center;border-radius:8px;background:rgba(255,255,255,.68);font-size:14px}
#timeline .tlitem__weather>span:last-child{display:flex;flex-direction:column;gap:1px}
#timeline .tlitem__weather b{font-size:11px;font-weight:700}
#timeline .tlitem__weather small{font-size:9.5px;color:#807772}
@keyframes tl-active-tint{from{filter:saturate(.92)}to{filter:saturate(1.12)}}
@media(max-width:900px){#timeline .tl__list{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* =========================================================
   实时云层动态剖面
   ========================================================= */
.sky{display:grid;grid-template-columns:1fr 300px;gap:18px;align-items:stretch}
@media(max-width:960px){.sky{grid-template-columns:1fr}}
.sky__updateMeta{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:-10px 0 18px;padding:11px 14px;border:1px solid #ebdfd1;border-radius:14px;background:linear-gradient(105deg,#fffaf3,#fff)}
.sky__updateMeta-main{display:flex;align-items:center;gap:10px;min-width:0}
.sky__updateMeta-main>i{width:9px;height:9px;flex:none;border-radius:50%;background:#6aa780;box-shadow:0 0 0 4px rgba(106,167,128,.13)}
.sky__updateMeta-main>span{display:flex;align-items:baseline;gap:9px;min-width:0}
.sky__updateMeta-main b{font-size:12px;color:var(--ink)}
.sky__updateMeta-main span span{font-size:11.5px;color:var(--ink-3)}
.sky__updateMeta-state{flex:none;font-size:11.5px;font-weight:700;color:#6f5e4e;font-variant-numeric:tabular-nums}
@media(max-width:680px){.sky__updateMeta{align-items:flex-start;flex-direction:column;gap:7px;margin:-7px 0 14px;padding:10px 12px}.sky__updateMeta-main{align-items:flex-start}.sky__updateMeta-main>span{align-items:flex-start;flex-direction:column;gap:1px}.sky__updateMeta-main span span{line-height:1.5}.sky__updateMeta-state{padding-left:19px;font-size:11px}}

.sky__stage{
  position:relative;border-radius:var(--r);overflow:hidden;
  border:1px solid var(--line-strong);
  box-shadow:0 24px 50px -26px rgba(30,40,70,.5), var(--shadow);
  background:#24314c;min-height:430px;
}
@media(max-width:560px){.sky__stage{min-height:320px}}
/* 绝对定位铺满舞台，避免 height:100% 与父容器高度形成循环依赖 */
#skyCanvas{position:absolute;inset:0;display:block;width:100%;height:100%}
.sky__dataBadge{
  position:absolute;left:50%;bottom:13px;z-index:2;transform:translateX(-50%);
  max-width:calc(100% - 24px);padding:6px 10px;border:1px solid rgba(255,255,255,.2);
  border-radius:999px;background:rgba(12,14,24,.58);backdrop-filter:blur(8px);
  color:rgba(255,255,255,.82);font-size:10.5px;line-height:1.35;text-align:center;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;
}
.sky__terrainLegend{
  position:absolute;left:13px;bottom:13px;z-index:2;display:flex;gap:10px;
  padding:6px 9px;border:1px solid rgba(255,255,255,.18);border-radius:999px;
  background:rgba(12,14,24,.48);color:rgba(255,255,255,.78);font-size:10px;
  backdrop-filter:blur(8px);pointer-events:none;
}
.sky__terrainLegend span{display:flex;align-items:center;gap:4px;white-space:nowrap}
.sky__terrainLegend i{width:8px;height:8px;border-radius:50%;background:#34303b}
.sky__terrainLegend i.is-mid{background:#4a5264}
.sky__terrainLegend i.is-far{background:#68788d}
@media(max-width:560px){.sky__terrainLegend{left:8px;bottom:10px;gap:6px;padding:5px 7px;font-size:9px}.sky__dataBadge{bottom:43px;font-size:9px}}

.sky__clock{
  position:absolute;left:16px;top:14px;z-index:2;
  background:rgba(16,12,26,.45);backdrop-filter:blur(10px);
  border:1px solid rgba(255,255,255,.2);border-radius:12px;padding:7px 13px;
  display:flex;flex-direction:column;line-height:1.3;pointer-events:none;
}
.sky__clock b{font-size:21px;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.sky__clock span{font-size:11px;color:rgba(255,255,255,.72)}

.sky__sun{
  position:absolute;right:16px;top:14px;z-index:2;
  background:rgba(16,12,26,.45);backdrop-filter:blur(10px);
  border:1px solid rgba(255,255,255,.2);border-radius:12px;padding:7px 13px;
  font-size:12px;color:#ffd9a8;pointer-events:none;font-variant-numeric:tabular-nums;
}

.sky__empty{
  position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;
  color:#fff;font-size:14px;background:rgba(24,18,32,.6);backdrop-filter:blur(3px);
}
/* 关键：.sky__empty 自带 display:flex，而 [hidden] 的 display:none 来自 UA 默认样式，
   作者样式优先级更高 —— 不写这条兜底，JS 里 el.hidden = true 会被完全无视。 */
[hidden]{display:none !important}

.sky__notice{
  margin-bottom:16px;padding:14px 17px;font-size:13px;line-height:1.75;color:var(--ink-2);
  background:#fff8ef;border:1px solid #f3ddc4;border-radius:14px;
}
.sky__notice b{color:#8a4413}

/* 连接诊断 */
.dg{margin-top:10px;font-size:12.5px;text-align:left}
.dg summary{cursor:pointer;color:var(--brand);font-weight:700;outline:none}
.dg__list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:5px}
.dg__list li{display:flex;align-items:center;gap:8px;font-variant-numeric:tabular-nums}
.dg__n{flex:1;color:var(--ink-2)}
.dg__ms{color:var(--ink-3);min-width:58px;text-align:right}
.dg__r{min-width:56px;text-align:right;font-weight:700}
.dg__r.is-ok{color:#2f7d4f}
.dg__r.is-bad{color:#bb3a2a}
.dg__hint{margin-top:10px;color:var(--ink-3);line-height:1.75}
.dg__hint code{
  font-family:ui-monospace,Consolas,monospace;font-size:12px;
  background:var(--bg-tint);border:1px solid var(--line);border-radius:6px;padding:1px 6px;
}
.dg__out{
  margin-top:10px;padding:10px 12px;font-size:11.5px;line-height:1.7;
  font-family:ui-monospace,Consolas,monospace;color:var(--ink-2);
  background:var(--bg-tint);border:1px solid var(--line);border-radius:10px;
  white-space:pre-wrap;word-break:break-all;
}
.dg__out:empty{display:none}

/* 诊断区嵌在深色空态遮罩里，颜色要反过来，否则黑底黑字看不见 */
.sky__emptyBox{display:flex;flex-direction:column;align-items:center;gap:12px;padding:0 24px;text-align:center}
.sky__emptyBox p{font-size:13.5px;line-height:1.7}
.sky__empty .sky__emptyBox{max-width:580px;max-height:100%;overflow:auto}
.sky__empty .dg summary{color:#ffd9a8}
.sky__empty .dg__n,.sky__empty .dg__hint{color:rgba(255,255,255,.86)}
.sky__empty .dg__ms{color:rgba(255,255,255,.6)}
.sky__empty .dg__r.is-ok{color:#9ce2b4}
.sky__empty .dg__r.is-bad{color:#ffb3a3}
.sky__empty .dg__hint code{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.26);color:#fff}
.sky__empty .dg__out{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);color:rgba(255,255,255,.92)}
.sky__empty .btn{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.32);color:#fff}
.sky__empty .btn:hover{background:rgba(255,255,255,.22);border-color:#fff;color:#fff}

.sky__panel{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow-s);padding:20px;display:flex;flex-direction:column;gap:16px;
}
.sky__ctrl{display:flex;flex-wrap:wrap;gap:8px}
.btn--play{
  min-width:92px;font-weight:800;color:#fff;border-color:transparent;
  background:var(--grad);box-shadow:0 10px 22px -12px rgba(203,104,120,.45);
}
.btn--play:hover{color:#fff;background:linear-gradient(96deg,#f08350,#c9556e);box-shadow:0 14px 26px -12px rgba(203,104,120,.5)}
.btn.is-on{color:var(--brand);border-color:var(--brand);background:#fff1e8}

.sky__slider input[type=range]{
  width:100%;-webkit-appearance:none;appearance:none;height:8px;border-radius:99px;
  background:linear-gradient(90deg,#5b7fd8,#f9b64e,#e0407a);outline:none;margin:10px 0 0;cursor:pointer;
  touch-action:pan-y;
}
.sky__slider input[type=range]:focus-visible{box-shadow:0 0 0 4px rgba(203,104,120,.2)}
.sky__slider input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;width:20px;height:20px;border-radius:50%;background:#fff;
  border:3px solid var(--brand);cursor:grab;box-shadow:0 2px 8px rgba(24,30,50,.3);
}
.sky__slider input[type=range]:active::-webkit-slider-thumb{cursor:grabbing}
.sky__slider input[type=range]::-moz-range-thumb{
  width:20px;height:20px;border-radius:50%;background:#fff;border:3px solid var(--brand);cursor:grab;
}
.sky__ticks{display:flex;justify-content:space-between;font-size:11px;color:var(--ink-3);margin-top:6px;font-variant-numeric:tabular-nums}
.sky__ticks span:nth-child(2){color:var(--brand)}

.sky__layers{display:flex;flex-direction:column;gap:8px}
.lchip{
  display:flex;align-items:center;gap:9px;width:100%;
  border:1px solid var(--line-strong);background:var(--bg-tint);border-radius:12px;
  padding:9px 13px;font-size:13px;color:var(--ink-2);cursor:pointer;font-family:inherit;
  transition:background .18s,border-color .18s,box-shadow .18s,transform .18s;text-align:left;
}
.lchip:hover{transform:translateY(-1px);background:#fff}
.lchip:focus-visible,.sky__ctrl .btn:focus-visible{outline:3px solid rgba(203,104,120,.32);outline-offset:2px}
.lchip i{width:14px;height:14px;border-radius:5px;flex:none;opacity:.35;transition:.18s}
.lchip__n{white-space:nowrap}
.lchip b{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--ink-3);font-weight:700}
.lchip__tag{
  font-style:normal;font-size:10.5px;font-weight:700;line-height:1;padding:3px 7px;border-radius:99px;
  background:#eedfd2;color:#8d7a6c;flex:none;
}
.lchip.is-lit .lchip__tag{background:#fbe0c4;color:#a8562a}
.lchip.is-on{border-color:var(--brand);background:#fff5ec;color:var(--ink)}
.lchip.is-on i{opacity:1}
.lchip.is-on b{color:var(--brand)}
.lchip.is-hov{border-color:var(--brand);box-shadow:0 0 0 3px rgba(247,171,78,.16)}
.lchip[data-layer=low] i{background:#7fd0c9}
.lchip[data-layer=mid] i{background:#9dc0f2}
.lchip[data-layer=high] i{background:#cbb0ee}
.lchip[data-layer=low].is-on{border-color:#7fd0c9;background:#effaf8}
.lchip[data-layer=mid].is-on{border-color:#9dc0f2;background:#f1f6ff}
.lchip[data-layer=high].is-on{border-color:#cbb0ee;background:#f8f4ff}


/* 提示条：把「此刻发生了什么」写成一句话，随太阳高度自动变化 */
.skynote{
  margin-top:14px;padding:12px 16px;font-size:13px;line-height:1.7;color:var(--ink-2);
  background:#fffcf6;border:1px solid var(--line);border-left:3px solid var(--line-strong);
  border-radius:12px;transition:.25s;
}
.skynote.is-glow{background:#fff7ef;border-color:#f3ddc4;border-left-color:var(--brand);color:#8a4413}
.skynote.is-off{background:#f7f5f4;border-left-color:#c9c0b8;color:var(--ink-3)}

.sky__readout{display:flex;flex-direction:column;gap:8px;border-top:1px dashed var(--line-strong);padding-top:15px}
.sky__readout-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:2px}
.sky__readout-head b{font-size:12px;color:var(--ink)}
.sky__readout-head span{font-size:10.5px;color:var(--ink-3)}
.ro{display:flex;align-items:baseline;justify-content:space-between;font-size:13px}
.ro span{color:var(--ink-3)}
.ro b{font-variant-numeric:tabular-nums;font-weight:700}
.ro--glow span{color:var(--ink)}
.ro--glow{padding:10px 13px;background:linear-gradient(120deg,#fdf3e6,#fbeedd);border-radius:12px;border:1px solid var(--line)}

.sky__note{margin-top:14px;font-size:12.5px;color:var(--ink-3);line-height:1.72}

/* =========================================================
   火烧云呈现方位图（真实底图）
   ========================================================= */
.gmap{display:grid;grid-template-columns:minmax(272px,43%) 1fr;gap:20px;align-items:start}
@media(max-width:980px){.gmap{grid-template-columns:1fr}}

.gmap__chart{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow);padding:14px;
}
/* 用 padding-top 比例撑出县域长宽比，canvas 与 SVG 覆盖层共用同一坐标系 */
.gmap__stack{
  position:relative;width:100%;border-radius:14px;overflow:hidden;
  border:1px solid var(--line-strong);background:#fbf5ec;
}
.gmap__stack canvas,.gmap__overlay{position:absolute;left:0;top:0;width:100%;height:100%;display:block}
.gmap__overlay svg{display:block;width:100%;height:100%}

.gmap__side{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow-s);padding:22px 24px;
}
.gmap__hero{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.gmap__when{font-size:12.5px;color:var(--ink-3)}
.gmap__hero b{
  font-size:42px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums;
  background:linear-gradient(96deg,#e8722f,#cf5568);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.gmap__lv{font-size:13px;font-weight:800}

.gmap__verdict{
  margin-top:14px;font-size:13.5px;color:var(--ink-2);line-height:1.78;
  background:linear-gradient(120deg,#fdf3e6,#fbeedd);
  border:1px solid var(--line);border-radius:14px;padding:13px 15px;
}
.gmap__verdict b{color:var(--ink)}
.gmap__hit{display:inline-block;margin-top:7px;font-size:12.5px;font-weight:700;color:#8a3a10}

.gmap__facts{margin-top:18px;display:grid;grid-template-columns:1fr 1fr;gap:9px 22px}
.gmap__facts li{display:flex;justify-content:space-between;gap:10px;font-size:13px;border-bottom:1px dashed var(--line);padding-bottom:7px}
.gmap__facts span{color:var(--ink-3)}
.gmap__facts b{font-variant-numeric:tabular-nums;font-weight:700;text-align:right}
.gmap__facts--wide{grid-column:1/-1}

.gmap__legend{margin-top:18px;display:grid;grid-template-columns:1fr 1fr;gap:8px 18px}
.gmap__legend li{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--ink-2)}
.lg{width:14px;height:14px;border-radius:4px;flex:none;border:1px solid rgba(0,0,0,.08)}
.lg--glow{background:linear-gradient(90deg,rgba(240,154,28,.25),#ef6c22)}
.lg--terrain{background:linear-gradient(135deg,#b7cbae,#d8d1a8,#c9a482,#e2ded8)}
.lg--river{background:#9ccbe8}
.lg--border{background:#fbf5ec;border:1.5px solid #c99a6d}
.lg--spot{width:9px;height:9px;border-radius:50%;background:#3a3128;border:2px solid #fff;
  box-shadow:0 0 0 1px rgba(0,0,0,.15)}

.gmap__note{margin-top:18px;border-top:1px dashed var(--line-strong);padding-top:13px;
  font-size:12px;color:var(--ink-3);line-height:1.72}
@media(max-width:560px){.gmap__facts,.gmap__legend{grid-template-columns:1fr}}

/* =========================================================
   当日火烧云指数图（hsy.fjwrj.cn 图片调用）
   ========================================================= */
.gpics{
  margin-top:22px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r);box-shadow:var(--shadow-s);padding:20px 22px 22px;
}
.gpics__hd{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}
.gpics__t{font-size:16.5px;font-weight:800}
.gpics__t span{font-size:12.5px;font-weight:400;color:var(--ink-3);margin-left:8px}
.gpics__t a{color:var(--brand);text-decoration:none}
.gpics__t a:hover{text-decoration:underline}
.gpics__hint{font-size:12px;color:var(--ink-3)}
.gpics__grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
@media(max-width:860px){.gpics__grid{grid-template-columns:1fr}}
.gpics__fig{
  margin:0;background:var(--bg-tint);border:1px solid var(--line);
  border-radius:var(--r-s);padding:13px 15px 15px;
}
.gpics__fig figcaption{display:flex;align-items:center;gap:8px;font-size:13.5px}
.gpics__fig figcaption b{font-size:14px}
.gpics__fig figcaption span{color:var(--ink-3);font-variant-numeric:tabular-nums}
.gpics__dot{width:9px;height:9px;border-radius:50%;flex:none}
.gpics__dot--rise{background:linear-gradient(135deg,#ffd07a,#ff8a3d)}
.gpics__dot--set{background:linear-gradient(135deg,#ff9a5a,#d2486f)}
.gpics__btn{
  display:block;width:100%;margin-top:11px;padding:0;border:0;background:none;
  cursor:zoom-in;border-radius:12px;overflow:hidden;
}
.gpics__btn.is-idle{display:none}
.gpics__btn img{display:block;width:100%;height:auto;border-radius:12px;transition:transform .3s ease}
.gpics__btn:hover img{transform:scale(1.02)}
.gpics__empty{
  margin:14px 0 4px;padding:34px 0;font-size:13px;color:var(--ink-3);text-align:center;
  border:1px dashed var(--line-strong);border-radius:12px;
}
.gpics__note{
  margin-top:15px;border-top:1px dashed var(--line-strong);padding-top:12px;
  font-size:12px;color:var(--ink-3);line-height:1.72;
}

/* 灯箱（点击放大） */
.lightbox{
  position:fixed;inset:0;z-index:999;display:none;align-items:center;justify-content:center;
  background:rgba(12,8,18,.92);backdrop-filter:blur(6px);padding:24px;cursor:zoom-out;
}
.lightbox.is-open{display:flex}
.lightbox__fig{margin:0;max-width:min(1400px,96vw);text-align:center}
.lightbox__fig img{
  max-width:96vw;max-height:84vh;width:auto;height:auto;
  border-radius:14px;box-shadow:0 30px 90px rgba(0,0,0,.6);
}
.lightbox__fig figcaption{margin-top:14px;font-size:13.5px;color:#e8ddd6}
.lightbox__x{
  position:fixed;top:18px;right:22px;width:42px;height:42px;border-radius:50%;
  border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.12);
  color:#fff;font-size:22px;line-height:1;cursor:pointer;
}
.lightbox__x:hover{background:rgba(255,255,255,.24)}

/* =========================================================
   页脚
   ========================================================= */
.footer{
  /* 与 Hero 暮色同族的暖深色，避免页脚冷黑与全站暖调脱节 */
  background:linear-gradient(172deg,#2b2028 0%,#1f171d 52%,#150f13 100%);
  color:#ddd4cd;padding:44px 0 38px;
}
.footer__inner{display:flex;justify-content:space-between;gap:32px;flex-wrap:wrap}
.footer__t{font-size:17px;font-weight:800;color:#fff;letter-spacing:.02em}
.footer__s{font-size:12.5px;color:#b3aaa4;margin-top:8px;max-width:640px;line-height:1.78}
.footer__meta{font-size:12.5px;color:#b3aaa4;text-align:right}
.footer__meta b{color:#e8bb90;font-weight:600}
@media(max-width:700px){.footer__meta{text-align:left}}

/* =========================================================
   状态 / 入场动画
   ========================================================= */
.loading,.empty{grid-column:1/-1;text-align:center;color:var(--ink-3);padding:34px 0;font-size:14px}
.err{
  margin-left:auto;margin-right:auto;max-width:680px;text-align:center;
  background:#fff3e9;border:1px solid #f7cfae;color:#9c4d16;
  border-radius:var(--r-s);padding:14px 18px;font-size:13.5px;
}

.reveal{opacity:0;transform:translateY(16px)}
.reveal.is-in{opacity:1;transform:none;transition:opacity .6s ease, transform .6s cubic-bezier(.2,.7,.3,1)}

/* =========================================================
   未来 24 小时天气实况曲线（hourly.js）
   ========================================================= */
.wx24{padding:20px 22px 18px;overflow:hidden}
.wx24__bar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.wx24__legend{display:flex;flex-wrap:wrap;gap:6px 16px}
.wx24__legend li{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2)}
.wx24__legend b{font-weight:600;color:var(--ink-3);font-size:11.5px}
.lgx{width:13px;height:13px;border-radius:4px;flex:none;box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}
.lgx--temp{background:linear-gradient(135deg,#ffb03a,#ff5f3d)}
.lgx--rh{background:linear-gradient(135deg,#7fc9dd,#3a9bb5)}
.lgx--prec{background:linear-gradient(180deg,#b9c9de,#7d97bd)}
.wx24__sum{
  font-size:12.5px;color:var(--ink-2);background:linear-gradient(120deg,#fdf3e6,#fbeedd);
  border:1px solid var(--line);border-radius:999px;padding:5px 15px;
}
.wx24__sum b{font-variant-numeric:tabular-nums;color:var(--ink)}

/* 实时天气动态图：当前小时的实况大图标。
   图标本身是 32 viewBox 的 SVG，放大到 68px 后位移类动画（雨落/雪飘/云移）
   会同比放大，动态感比小图标明显得多 */
.wxnow{
  display:flex;align-items:center;gap:16px;
  margin:14px 0 4px;padding:13px 20px;border-radius:18px;
  background:var(--bg-tint);border:1px solid var(--line);
}
.wxnow__ico{flex:none;width:68px;height:68px}
.wxnow__ico .wxi{width:68px;height:68px}
.wxnow__txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.wxnow__txt b{font-size:16px;font-weight:800;color:var(--ink);letter-spacing:.01em}
.wxnow__txt em{font-style:normal;font-size:12.5px;color:var(--ink-3)}

@media(max-width:760px){
  .wxnow{gap:12px;padding:11px 14px}
  .wxnow__ico,.wxnow__ico .wxi{width:56px;height:56px}
  .wxnow__txt b{font-size:15px}
}

/* 横向滚动容器：列宽不足时出现滚动条 */
.wx24__scroll{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}
.wx24__scroll::-webkit-scrollbar{height:8px}
.wx24__scroll::-webkit-scrollbar-track{background:transparent}
.wx24__scroll::-webkit-scrollbar-thumb{background:#ecd9c6;border-radius:99px}
.wx24__inner{min-width:100%}

/* 列首图标行：左右内边距必须与 hourly.js 的 PADX 一致，才能和画布列对齐 */
.wx24__head{display:grid;grid-template-columns:repeat(24,1fr);padding:0 38px}
.wxc{
  display:flex;flex-direction:column;align-items:center;gap:1px;
  padding:2px 0 3px;border-radius:12px;cursor:pointer;transition:background .18s,box-shadow .18s;
  min-width:0;
}
.wxc__t{font-size:10.5px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.wxc__i{height:32px;display:flex;align-items:center;justify-content:center}
.wxc__n{font-size:10px;color:var(--ink-2);white-space:nowrap;line-height:1.2}
.wxc.is-now{background:linear-gradient(180deg,#fff3e6,#fff8f2)}
.wxc.is-now .wxc__t{color:var(--brand);font-weight:800}
.wxc.is-on{background:#fff1e2;box-shadow:inset 0 0 0 1px #f2d5b8}

/* 画布 */
.wx24__plot{position:relative;height:300px;margin-top:2px}
#wxCanvas{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:crosshair;touch-action:pan-x}

/* 读数条 */
.wx24__readout{
  margin-top:14px;padding:11px 16px;border-radius:14px;min-height:44px;
  background:linear-gradient(120deg,#fdf3e6,#fbeedd);border:1px solid var(--line);
  display:flex;flex-wrap:wrap;align-items:center;gap:5px 16px;
  font-size:13px;color:var(--ink-2);
}
.wx24__readout>b{font-variant-numeric:tabular-nums;color:var(--ink);font-size:13.5px}
.wx24__readout b{font-variant-numeric:tabular-nums}
.wxro{display:inline-flex;align-items:center;gap:5px;color:var(--ink);font-weight:600}
.wx24__note{font-size:11.5px;color:var(--ink-3);margin-top:10px;line-height:1.72}
.wx24__empty{
  margin-top:12px;padding:16px;border-radius:14px;text-align:center;
  background:var(--surface);border:1px dashed var(--line-strong);font-size:13.5px;color:var(--ink-2);
}

/* ---------- 动态天气图标 ---------- */
.wxi{width:30px;height:30px;display:block;overflow:visible}
.wxi--sm{width:19px;height:19px;display:inline-block;vertical-align:-4px}

.wxi__rays{transform-box:view-box;animation:wxiSpin 16s linear infinite}
.wxi__core{transform-box:view-box;animation:wxiPulse 2.8s ease-in-out infinite}
.wxi__moon{transform-box:view-box;transform-origin:16px 16px;animation:wxiBob 5.5s ease-in-out infinite}
.wxi__star{animation:wxiTwinkle 2.4s ease-in-out infinite}
.wxi__cloud{animation:wxiDrift 5.6s ease-in-out infinite}
.wxi__cloud--b{animation:wxiDrift2 7.4s ease-in-out infinite}
.wxi__drop{animation:wxiFall 1.25s linear infinite}
.wxi__flake{animation:wxiFlake 2.8s linear infinite}
.wxi__fogline{animation:wxiFogSlide 4.2s ease-in-out infinite}
.wxi__bolt{transform-box:view-box;animation:wxiFlash 3.8s ease-in-out infinite}

@keyframes wxiSpin{to{transform:rotate(360deg)}}
@keyframes wxiPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}
@keyframes wxiBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-1.6px)}}
@keyframes wxiTwinkle{0%,100%{opacity:.3}50%{opacity:1}}
@keyframes wxiDrift{0%,100%{transform:translateX(-1.4px)}50%{transform:translateX(1.4px)}}
@keyframes wxiDrift2{0%,100%{transform:translateX(1.6px)}50%{transform:translateX(-1.6px)}}
@keyframes wxiFall{0%{transform:translateY(-2px);opacity:0}22%{opacity:1}100%{transform:translateY(8px);opacity:0}}
@keyframes wxiFlake{0%{transform:translateY(-2px) rotate(0);opacity:0}25%{opacity:.95}100%{transform:translateY(9px) rotate(140deg);opacity:0}}
@keyframes wxiFogSlide{0%,100%{transform:translateX(-1.8px)}50%{transform:translateX(1.8px)}}
@keyframes wxiFlash{0%,84%,100%{opacity:.3}88%{opacity:1}92%{opacity:.45}95%{opacity:1}}

@media(max-width:560px){
  .wxi{width:26px;height:26px}
  .wxc__i{height:28px}
  .wxc__n{font-size:9.5px}
  .wxc__t{font-size:10px}
}
/* 尊重「减少动效」偏好：图标停止动画；天气层由 JS 只画一帧静态天空
   （canvas 粒子不再推进，但云/雾/雨的静态分布仍然保留） */
@media(prefers-reduced-motion:reduce){
  .wxi *{animation:none !important}
  .hero__orb{animation:none !important}
  .reveal{opacity:1;transform:none}
}

/* =========================================================
   版面精修：更清晰的内容节奏、统一的卡片边界与移动导航
   ========================================================= */
:root{
  --bg:#f4eee7;
  --bg-tint:#f4eee7;
  --panel:#fffdf9;
  --line:#eadfd2;
  --line-strong:#ddcbbb;
  --ink:#29231f;
  --ink-2:#62564d;
  --ink-3:#8b7d72;
  --maxw:1240px;
  --r:20px;
  --shadow:0 18px 44px -28px rgba(76,48,30,.34),0 2px 8px rgba(76,48,30,.045);
  --shadow-s:0 10px 26px -20px rgba(76,48,30,.32),0 1px 3px rgba(76,48,30,.04);
}
::selection{background:#f5c48c;color:#3e2b20}
:focus-visible{outline:3px solid rgba(238,106,69,.58);outline-offset:3px}
.topbar__inner{height:72px}
.brand__sun{width:30px;height:30px}
.hero{padding-top:142px;padding-bottom:106px}
.hero__head{margin-bottom:30px}
.hero__title{letter-spacing:-.025em}
.hero__sub{font-size:15.5px}
.hero .card{border-color:rgba(255,255,255,.2);background:rgba(255,255,255,.09)}
.hero .card--glow{background:rgba(255,255,255,.075)}
.hero .card:hover{transform:translateY(-3px);box-shadow:0 30px 68px -32px rgba(0,0,0,.65)}
.countdown{background:rgba(255,255,255,.075);border-color:rgba(255,255,255,.14)}
.section{padding:34px 0}
.section:first-of-type{padding-top:48px}
.section > .wrap{padding:38px 42px 42px;border-radius:24px;box-shadow:0 16px 44px -34px rgba(76,48,30,.35),0 1px 3px rgba(76,48,30,.035)}
.sec__hd{margin-bottom:30px}
.sec__title{letter-spacing:-.018em}
.sec__desc{max-width:850px}
.day{border-radius:16px;box-shadow:0 5px 18px -16px rgba(76,48,30,.4);padding:16px 14px}
.day:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.card{box-shadow:0 7px 24px -20px rgba(76,48,30,.3)}
.gpics__fig{border-radius:16px}
.sky__panel{border-radius:18px}
.footer{margin-top:16px}

@media(max-width:900px){
  .topbar__inner{gap:10px}
  .brand__text em{letter-spacing:.12em}
  .nav a{padding:7px 10px}
}
@media(max-width:760px){
  .topbar{background:rgba(42,31,39,.38);backdrop-filter:blur(12px);border-bottom-color:rgba(255,255,255,.08)}
  .topbar__inner{height:auto;min-height:66px;padding-top:9px;padding-bottom:8px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 10px}
  .brand{grid-column:1;grid-row:1;gap:9px}
  .brand__sun{width:25px;height:25px;box-shadow:0 0 0 4px rgba(224,140,90,.13)}
  .brand__text strong{font-size:13px;line-height:1.3}
  .brand__text em{font-size:8px;letter-spacing:.1em}
  .nav{grid-column:1/-1;grid-row:2;display:flex;gap:5px;overflow-x:auto;scrollbar-width:none;padding:1px 0 2px;white-space:nowrap}
  .nav::-webkit-scrollbar{display:none}
  .nav a{flex:none;padding:5px 10px;font-size:11.5px;color:rgba(255,255,255,.82);background:rgba(255,255,255,.07)}
  .topbar--light{background:rgba(255,251,246,.94);border-bottom-color:var(--line)}
  .topbar--light .nav a{background:transparent}
  .topbar--light .nav a.is-on{background:#f4e0c8}
  .hero{padding:136px 0 82px}
  .hero__head{gap:16px;margin-bottom:24px}
  .hero__title{font-size:clamp(27px,7vw,36px);max-width:600px}
  .hero__sub{font-size:13.5px;line-height:1.65}
  .hero__grid{gap:13px}
  .hero .card{border-radius:18px;padding:20px 18px 21px}
  .card__hd{margin-bottom:15px}
  .sunrow__item{gap:10px}
  .sunrow__ico{width:34px;height:34px}
  .sunrow__v{font-size:clamp(25px,7vw,32px)}
  .countdown{margin:17px 0 15px;padding:13px 15px}
  .countdown__time{font-size:27px}
  .facts{gap:9px 12px;padding-top:14px}
  .facts li{font-size:12px}
  .gauge{width:132px}
  .gauge__svg{width:120px;height:120px}
  .gauge__mid{top:36px}
  .gauge__mid b{font-size:33px}
  .section{padding:15px 12px}
  .section:first-of-type{padding-top:20px}
  .section > .wrap{padding:22px 17px 24px;border-radius:18px}
  .sec__hd{margin-bottom:21px;padding-left:13px}
  .sec__title{font-size:clamp(20px,5.5vw,25px)}
  .sec__desc{font-size:13px;line-height:1.72}
  .days{gap:9px}
  .day{padding:13px 12px;border-radius:14px;gap:9px}
}
@media(max-width:420px){
  .wrap{padding-left:17px;padding-right:17px}
  .hero{padding-top:130px}
  .picker{gap:7px}
  .picker__label{font-size:12px}
  .picker__sel{padding:9px 30px 9px 12px;font-size:12.5px}
  .hero .btn{padding:9px 13px;font-size:12.5px}
  .hero .card{padding:18px 15px}
  .sunrow__sep{margin-left:5px;margin-right:5px}
  .facts li{font-size:11.5px}
  .section > .wrap{padding:20px 14px 22px}
  .wx24{padding:16px 14px}
}

/* 观霞指南：将评分转换为时段、到场时间与观测方位 */
.guide-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);gap:18px;align-items:stretch}
.guide-plan{position:relative;overflow:hidden;padding:27px 30px;border-radius:20px;color:#fff;background:linear-gradient(135deg,#483746 0%,#63424a 55%,#87554a 100%);box-shadow:0 18px 38px -25px rgba(63,41,48,.65)}
.guide-plan::after{content:"";position:absolute;width:260px;height:260px;right:-90px;top:-125px;border-radius:50%;background:radial-gradient(circle,rgba(255,191,125,.28),rgba(255,191,125,0) 70%);pointer-events:none}
.guide-plan__top{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:center;gap:12px}
.guide-eyebrow{font-size:10px;font-weight:700;letter-spacing:.16em;color:rgba(255,255,255,.62)}
.guide-status{padding:4px 10px;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:rgba(255,255,255,.1);font-size:11px;color:#ffe0b5}
.guide-plan__title{position:relative;z-index:1;margin-top:17px;font-size:clamp(24px,3vw,32px);line-height:1.25;font-weight:800;letter-spacing:-.02em}
.guide-plan__metrics{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:24px;padding:16px 0;border-top:1px solid rgba(255,255,255,.16);border-bottom:1px solid rgba(255,255,255,.16)}
.guide-plan__metrics div{display:flex;flex-direction:column;gap:5px;min-width:0}
.guide-plan__metrics span{font-size:11.5px;color:rgba(255,255,255,.62)}
.guide-plan__metrics b{font-size:16px;font-variant-numeric:tabular-nums;white-space:nowrap}
.guide-plan__note{position:relative;z-index:1;min-height:44px;margin-top:14px;font-size:12.5px;line-height:1.7;color:rgba(255,255,255,.77)}
.guide-link{position:relative;z-index:1;display:inline-flex;align-items:center;gap:8px;margin-top:12px;font-size:12.5px;font-weight:700;color:#ffd9a8}
.guide-link span{transition:transform .2s ease}.guide-link:hover span{transform:translate(2px,-2px)}
.guide-side{display:grid;grid-template-rows:1fr auto;gap:12px}
.guide-score-card{padding:20px 22px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--shadow-s)}
.guide-score-card h3{margin-bottom:12px;font-size:15px}
.guide-score-row{display:grid;grid-template-columns:9px 62px 1fr;align-items:center;gap:9px;padding:8px 0;border-top:1px solid #f2ebe4;font-size:12px}
.guide-score-row b{font-variant-numeric:tabular-nums;color:var(--ink)}
.guide-score-row>span:last-child{color:var(--ink-2)}
.guide-score-dot{width:8px;height:8px;border-radius:50%}
.guide-score-dot--high{background:#db744f}.guide-score-dot--mid{background:#e8a849}.guide-score-dot--low{background:#aaa39c}
.guide-caveat{padding:13px 16px;border-left:3px solid #e5b274;border-radius:0 12px 12px 0;background:#f8f1e8;color:var(--ink-2);font-size:11.5px;line-height:1.7}
.guide-caveat b{color:var(--ink);font-size:12px}
@media(max-width:900px){.guide-grid{grid-template-columns:1fr}.guide-side{grid-template-columns:1.15fr .85fr;grid-template-rows:1fr;align-items:stretch}}
@media(max-width:560px){
  .guide-grid{gap:12px}
  .guide-plan{padding:21px 19px;border-radius:16px}
  .guide-plan__title{margin-top:14px;font-size:25px}
  .guide-plan__metrics{gap:8px;margin-top:19px;padding:13px 0}
  .guide-plan__metrics span{font-size:10.5px}
  .guide-plan__metrics b{font-size:13px}
  .guide-plan__note{min-height:0}
  .guide-side{grid-template-columns:1fr;gap:10px}
  .guide-score-card{padding:17px 16px}
}

/* =========================================================
   视觉收束：让页面更像一份「出发前的天气简报」
   重点：降低面板感、提高留白与阅读层级，保留所有既有功能。
   ========================================================= */
:root{
  --bg:#f3f1ed;
  --bg-tint:#f3f1ed;
  --panel:#fbfaf7;
  --surface:#fffefa;
  --line:#e7e1d9;
  --line-strong:#d8cec2;
  --ink:#25242a;
  --ink-2:#625e5a;
  --ink-3:#918b83;
  --brand:#e46d4d;
  --brand-2:#f2af58;
  --brand-3:#d97080;
  --grad:linear-gradient(100deg,#ec9e50 0%,#e67052 48%,#ca7084 100%);
  --grad-soft:linear-gradient(100deg,#fff0d7 0%,#f9ddd2 52%,#f0dce0 100%);
  --shadow:0 22px 55px -36px rgba(46,37,30,.30),0 2px 7px rgba(46,37,30,.035);
  --shadow-s:0 12px 30px -24px rgba(46,37,30,.28),0 1px 3px rgba(46,37,30,.035);
}

body{background:var(--bg);letter-spacing:.005em}
.hero{background:#332c3d;padding-bottom:82px}
.hero__ridge{height:190px;background:rgba(13,14,24,.82)}
.hero__title{max-width:760px;font-size:clamp(32px,4.4vw,50px);line-height:1.16}
.hero__sub{max-width:560px;color:rgba(255,255,255,.67)}
.hero__grid,.clarity{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.hero .card{border-radius:24px;background:rgba(255,255,255,.085);box-shadow:0 30px 70px -38px rgba(0,0,0,.62)}
.hero .card--glow{background:linear-gradient(145deg,rgba(255,255,255,.12),rgba(206,140,110,.08))}
.hero .verdict{background:rgba(12,13,24,.28)}

/* 首屏通透度：作为两张主卡下方的全宽环境判断条，避免挤高右侧霞光卡片 */
.hero__insight{margin-top:16px}
.clarity{display:grid}
.insight-card{position:relative;min-width:0;padding:19px 22px 17px;border:1px solid rgba(255,255,255,.19);border-radius:24px;background:rgba(255,255,255,.085);backdrop-filter:blur(16px) saturate(125%);box-shadow:0 26px 60px -34px rgba(0,0,0,.52);transition:background .35s ease,border-color .35s ease,box-shadow .35s ease}
.insight-card--clarity{background:rgba(255,255,255,.085)}
.clarity[data-tone="high"] .insight-card--clarity{background:linear-gradient(130deg,rgba(105,177,139,.16),rgba(119,156,111,.085));border-color:rgba(176,224,186,.28)}
.clarity[data-tone="mid"] .insight-card--clarity{background:linear-gradient(130deg,rgba(217,160,88,.17),rgba(163,115,81,.09));border-color:rgba(244,202,137,.28)}
.clarity[data-tone="low"] .insight-card--clarity{background:linear-gradient(130deg,rgba(205,116,105,.17),rgba(148,78,92,.10));border-color:rgba(241,164,146,.29)}
.clarity[data-tone="idle"] .insight-card--clarity{background:rgba(255,255,255,.07)}
.insight-card--aod{background:rgba(255,255,255,.075)}
.insight-card--aod[data-tone="clean"]{background:linear-gradient(130deg,rgba(93,164,133,.15),rgba(100,136,120,.08));border-color:rgba(166,216,186,.27)}
.insight-card--aod[data-tone="light"]{background:linear-gradient(130deg,rgba(213,159,83,.16),rgba(162,120,72,.09));border-color:rgba(239,199,129,.28)}
.insight-card--aod[data-tone="hazy"]{background:linear-gradient(130deg,rgba(204,111,99,.18),rgba(148,72,83,.10));border-color:rgba(240,158,141,.30)}
.insight-card--aod[data-tone="idle"]{background:rgba(255,255,255,.07)}
.insight-card__head{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:42px}
.insight-card__head>div:first-child{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0}
.clarity__eyebrow{font-size:11px;letter-spacing:.04em;color:rgba(255,255,255,.59);white-space:nowrap}
.insight-card__head strong{font-size:18px;line-height:1.2;color:#ffe0a5;white-space:nowrap}
.clarity__score{display:flex;align-items:baseline;gap:4px;color:#fff;font-size:29px;line-height:1;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
.clarity__score small,.aod__reading small{font-size:10px;color:rgba(255,255,255,.56);font-weight:500}
.clarity__track{position:relative;height:8px;margin-top:15px;overflow:hidden;border-radius:99px;background:rgba(255,255,255,.14)}
.clarity__track i{display:block;width:0;height:100%;border-radius:inherit;background:#efbd68;transition:width .55s ease,background .3s ease}
.insight-card__foot{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-top:11px;min-width:0}
.insight-card__foot strong{font-size:12px;color:#f8dcae;white-space:nowrap}
.insight-card__foot span{font-size:11px;color:rgba(255,255,255,.67)}
.insight-card__foot small{min-width:0;font-size:10px;color:rgba(255,255,255,.48);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}
.clarity[data-tone="high"] .insight-card--clarity .insight-card__head strong{color:#b8e3be}.clarity[data-tone="high"] #clarityBar{background:#83c8a5}
.clarity[data-tone="mid"] .insight-card--clarity .insight-card__head strong{color:#ffd18b}
.clarity[data-tone="low"] .insight-card--clarity .insight-card__head strong{color:#ffab8f}.clarity[data-tone="low"] #clarityBar{background:#d78078}
.aod__reading{display:flex;align-items:baseline;gap:7px;white-space:nowrap}
.aod__reading b{font-size:29px;line-height:1;color:#fff;font-variant-numeric:tabular-nums}
.aod__scale{position:relative;height:9px;margin:15px 4px 0;border-radius:99px;background:linear-gradient(90deg,#78c69b 0%,#d9ca76 36%,#e9a45e 68%,#d97978 100%)}
.aod__scale::before{content:"0";position:absolute;left:0;top:12px;font-size:9px;color:rgba(255,255,255,.46)}
.aod__scale::after{content:"0.5+";position:absolute;right:0;top:12px;font-size:9px;color:rgba(255,255,255,.46)}
.aod__scale i{position:absolute;left:0;top:50%;width:13px;height:13px;border:2px solid #fff;border-radius:50%;background:#dc9a5f;box-shadow:0 1px 5px rgba(0,0,0,.35);transform:translate(-50%,-50%);transition:left .55s ease,background .3s ease}
.insight-card--aod[data-tone="clean"] .aod__reading b{color:#b8e3be}.insight-card--aod[data-tone="clean"] .aod__scale i{background:#78c69b}
.insight-card--aod[data-tone="light"] .aod__reading b{color:#ffd18b}.insight-card--aod[data-tone="light"] .aod__scale i{background:#e5b45f}
.insight-card--aod[data-tone="hazy"] .aod__reading b{color:#ffab8f}.insight-card--aod[data-tone="hazy"] .aod__scale i{background:#d97978}

@media(max-width:920px){.hero__grid,.clarity{grid-template-columns:1fr}}
@media(max-width:1050px) and (min-width:761px){.insight-card{padding:17px 18px;border-radius:21px}.insight-card__foot{align-items:flex-start;flex-direction:column;gap:3px}.insight-card__foot small{text-align:left}}

.section{padding:22px 0}
.section:first-of-type{padding-top:32px}
.section > .wrap{background:rgba(255,254,250,.72);border-color:rgba(218,209,199,.78);border-radius:28px;padding:34px 42px 38px;box-shadow:0 18px 48px -38px rgba(70,55,42,.25)}
.section--tint{background:transparent}
.sec__hd{max-width:900px;margin-bottom:25px;padding-left:18px}
.sec__hd::before{top:4px;bottom:4px;width:3px}
.sec__title{font-size:clamp(23px,2.8vw,31px);letter-spacing:-.03em}
.sec__desc{max-width:820px;color:#726b64;font-size:14px;line-height:1.85}

.field-guide > .wrap{background:linear-gradient(135deg,#fffaf1 0%,#fffdf9 52%,#f8f1ef 100%);border-color:#eaded0}
.field-guide .sec__title{background:linear-gradient(100deg,#b66444,#c86978);-webkit-background-clip:text;background-clip:text}
.guide-grid{gap:22px}
.guide-plan{min-height:278px;padding:31px 34px;border-radius:24px;background:linear-gradient(135deg,#302d3b 0%,#4c3543 54%,#8c574a 100%);box-shadow:0 22px 45px -28px rgba(61,40,47,.68)}
.guide-plan::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 82% 12%,rgba(255,214,145,.2),transparent 27%),linear-gradient(115deg,transparent 42%,rgba(255,255,255,.035) 42%,transparent 67%);pointer-events:none}
.guide-plan__title{font-size:clamp(27px,3vw,36px);letter-spacing:-.035em}
.guide-plan__metrics{margin-top:28px}
.guide-score-card{border-radius:20px;background:rgba(255,255,255,.84);box-shadow:none}
.guide-caveat{background:#f7efe5}

.day{background:rgba(255,255,255,.72);border-color:#e8e0d7;box-shadow:0 7px 22px -19px rgba(63,47,35,.45)}
.day--today{background:linear-gradient(#fffefa,#fffefa) padding-box,var(--grad) border-box;box-shadow:0 16px 32px -22px rgba(203,104,120,.4)}
.gpics,.wx24,.sky{border-color:#e7dfd6}
.card{border-color:#e7dfd6}
.tl__bar{box-shadow:0 10px 30px -22px rgba(78,56,37,.5)}
.footer{margin-top:22px;background:#24232c}

@media(max-width:760px){
  .hero{padding-bottom:70px}
  .hero__title{font-size:clamp(29px,7.5vw,39px)}
  .section{padding:13px 12px}
  .section:first-of-type{padding-top:18px}
  .section > .wrap{padding:24px 18px 26px;border-radius:22px}
  .sec__hd{margin-bottom:20px;padding-left:14px}
  .guide-plan{min-height:0;padding:24px 20px;border-radius:19px}
  .hero__insight{margin-top:13px}
  .clarity{grid-template-columns:1fr;gap:10px}
  .insight-card{padding:15px 16px 14px;border-radius:18px}
  .insight-card__head strong{font-size:16px}.clarity__score,.aod__reading b{font-size:25px}
  .clarity__track,.aod__scale{margin-top:12px}
  .insight-card__foot{margin-top:10px}
}

@media(max-width:560px){
  #timeline .tl__bar{height:48px;border-radius:14px}
  #timeline .tl__axis{font-size:9.5px}
  #timeline .tl__legend{gap:8px 12px;margin-top:12px}
  #timeline .tl__lg{font-size:11px}
  #timeline .tl__list{grid-template-columns:minmax(0,1fr);gap:9px}
  #timeline .tlitem{min-height:0;padding:13px 15px;border-radius:15px}
  #timeline .tlitem__time{font-size:22px}
  #timeline .tlitem__title{margin-top:4px}
  #timeline .tlitem__desc{margin:4px 0 9px;font-size:11px}
}
@media(prefers-reduced-motion:reduce){#timeline .tlitem[data-active="true"]{animation:none}}


