/* 花序 inflora 官网 · 纯静态版共用样式
   由 claude-design 模板内联样式转写。原则：凡带 :hover / 响应式 / JS 状态的元素，
   其可变属性必须整体放这里（内联样式优先级高于 class，混放会压掉悬停与断点）；
   一次性布局仍留在各页 HTML 的内联 style 里。断点：900 / 700 / 560（对应原模板 w>=900/700/560）。 */

/* ---- 基础（原 <helmet> 段搬运） ---- */
html, body { margin: 0; padding: 0; background: #FAFCFB; color: #1A2E26; font-family: -apple-system, "SF Pro Text", "PingFang SC", "HarmonyOS Sans SC", "Noto Sans SC", "Microsoft YaHei", system-ui, sans-serif; -webkit-font-smoothing: antialiased; font-size: 16px; line-height: 1.7; scroll-behavior: smooth; }
* { box-sizing: border-box; }
a { color: #007AFF; text-decoration: none; }
a:hover { color: #0062CC; }
section { scroll-margin-top: 72px; }
html, body { height: auto; min-height: 100%; }
body { min-height: 100vh; }
img { display: block; max-width: 100%; }

@keyframes leafDrift { 0%, 100% { transform: rotate(-12deg) translateY(0); } 50% { transform: rotate(-11.2deg) translateY(-14px); } }
@keyframes riseIn { from { opacity: 0; transform: translateY(72px) scale(.96); } 60% { opacity: 1; } to { opacity: 1; transform: none; } }

/* ---- 首页顶栏 ---- */
/* 底部描线初始透明，滚动过 4px 后 site.js 加 .scrolled 显出 */
.site-header { border-bottom: 1px solid transparent; transition: border-bottom-color .25s ease; }
.site-header.scrolled { border-bottom-color: rgba(26, 46, 38, .10); }

/* 桌面导航（窄于 900 整组隐藏，换汉堡钮） */
.d-nav { display: flex; gap: clamp(20px, 3vw, 36px); font-size: 15px; font-weight: 600; }
.nav-link { color: #495D55; padding-bottom: 4px; background-image: linear-gradient(#007AFF, #007AFF); background-repeat: no-repeat; background-position: 0 100%; background-size: 0% 1.5px; transition: background-size .3s cubic-bezier(.16, 1, .3, 1), color .2s ease; }
.nav-link:hover { color: #1A2E26; background-size: 100% 1.5px; }

/* 顶栏下载钮（v0.20.0 二改：实心墨色大胶囊→细边框幽灵胶囊，与 .lang-switch 同族同高，
   融进浅色磨砂顶栏；主操作感留在 hover——填充墨底白字。移动端菜单内下载钮（2026-09-29 起）
   同挂 .btn-pill——原实心墨底胶囊在菜单里过于突兀，统一幽灵胶囊风格（文案与顶栏同为「获取 APP/Get App」）。 */
.btn-pill { background: transparent; color: #1A2E26; border: 1px solid rgba(26, 46, 38, .22); font-size: 13.5px; font-weight: 600; padding: 0 16px; border-radius: 999px; min-height: 32px; display: inline-flex; align-items: center; transition: background .2s ease, color .2s ease, border-color .2s ease; }
.btn-pill:hover { background: #1A2E26; border-color: #1A2E26; color: #fff; }

/* 汉堡钮（900 以上隐藏；display 归 class 管） */
.m-menu-btn { display: grid; place-items: center; }

/* 移动端菜单（默认收起，site.js 切 .open） */
/* 新手三步骤：宽屏竖排，窄屏编号在左、标题与正文在右（省高度） */
.nb-item { display: grid; gap: 0; align-content: start; }
.nb-item > b { margin-top: 8px; }
.nb-item > span:last-child { margin-top: 3px; }

/* f07：宽屏图左文右，窄屏文上图下 */
.f07-fig { order: 1; }
.f07-text { order: 2; }

/* f09 两侧截图：宽屏三图并排，窄屏只留中间一张 */
.fold-side { display: grid; }

/* 移动端菜单：悬于内容之上的浮层（相对吸顶 header 绝对定位），不占文档流、不把内容往下顶 */
.m-menu { display: none; position: absolute; top: 100%; left: 0; right: 0; box-shadow: 0 16px 40px -12px rgba(26, 46, 38, .18); }
.m-menu.open { display: grid; }

/* ---- 首页区块 ---- */
/* 特性圆点列表行（f01–f10 反复出现） */
.point-li { display: grid; grid-template-columns: 6px 1fr; gap: 12px; font-size: 15px; }
.point-li > i { width: 6px; height: 6px; border-radius: 50%; background: #007AFF; margin-top: 8px; }
.point-li .pt { display: grid; gap: 2px; }
.point-li b { font-weight: 600; }
.point-li .pd { color: #7C8C86; font-size: 13.5px; line-height: 1.55; }

/* ---- 付费表（2026-09-29 自内联挪类：卡内距/行内模板与列距/h2 字号要在特窄屏差异化，
   内联声明压过媒体查询——断点要管的属性必须进类） ---- */
.price-card { padding: clamp(18px, 2.2vw, 26px); }
.price-h2 { font-size: clamp(26px, 3vw, 36px); }
.price-val { font-size: 13px; }
.price-row { display: grid; grid-template-columns: minmax(0, 1fr) clamp(64px, 10vw, 110px) clamp(86px, 12vw, 126px); gap: clamp(10px, 1.6vw, 20px); }
/* 宽屏（≥~1050px 生效）：高级值列上限 110→126（2026-10-05 用户令「宽屏基础版/高级版列间距太近、
   增加一点点列宽」）——值文字全部右对齐，列宽即列距：高级列每宽 1px、基础列文字左移 1px，
   两列文字间距 +16px（基础列上限不动：右对齐下其宽度不影响渲染）；窄屏 vw 斜率与 <360 断点不变 */
/* 特窄屏（<360，320px 实测）：第一列仅 ~72px，英文「Features」(26px 单词 111px) 与「Categories」
   (15px 单词 80px) 无断点可折、溢出压进第二列——卡内距 18→14、列距 10→7 让出 14px；
   h2 收 20px 仅英文态（中文「订阅」两字从不溢出，保持原字号）。
   2026-10-01 英文表头 Pricing→Features 更名复测：26px 单词 89→111px，各档仍不溢出；
   最紧=360px 档（26px、列宽 112px、实宽 111px 余 1.3px、未压第二列），320px 档 18px 实宽 77px/列宽 100px */
@media (max-width: 359.98px) {
  .price-card { padding: 14px; }
  .price-row { gap: 7px; }
  html[data-lang="en"] .price-h2 { font-size: 20px; }
}
/* 再陡一档（<340，桌面窗口拖到 300 以下仍不破）：高级值列 86→76（「Premium」~73px 仍容）、
   列距 7→5、英文 h2 18px；基础值列 64 不动（「20 plants」不折行）。
   2026-10-04 英文价格改 $19.99 / year（83px @13px）> 76px 列折两行——价格行字号自内联挪类
   .price-val（内联压过媒体查询，同 h2 教训），英文态收 11.5px 实宽 ~73px 回单行；
   中文「¥128 / 年」~60px 从不折行、保持 13px */
@media (max-width: 339.98px) {
  .price-row { grid-template-columns: minmax(0, 1fr) 64px 76px; gap: 5px; }
  html[data-lang="en"] .price-h2 { font-size: 18px; }
  html[data-lang="en"] .price-val { font-size: 11.5px; }
}

/* 要点列表宽屏两列化（f01）：与全站卡片网格同一 auto-fit 写法，容器 ≥ ~240*2+列距 才开两列，
   窄屏/中屏自动单列，不需断点。行距窄屏 10px＝与其他板块要点列表一致（2026-09-24 统一），
   宽屏两列 18px（下条媒体查询）；格子属性必须放 class——写在 ul 内联会被这里压不住。
   align-items:start 必带：默认 stretch 会把同行矮条拉到等高、余量摊进标题/说明两轨，
   矮条的说明被推离标题 ~10px；start 让两条同排顶对齐、说明各自贴住标题。 */
.point-cols { display: grid; gap: 10px clamp(20px, 3vw, 40px); grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); align-items: start; }
/* 宽屏两列下行距放宽（2026-09-24 用户令 14→18）：窄屏单列回 10px 与其他板块统一 */
@media (min-width: 1200px) {
  .point-cols { row-gap: 18px; }
}

/* 首屏右侧装饰植物（手机框后，三张）：定位尺寸走 class——窄屏断点要外探缩小，写内联会压掉断点 */
.deco-mon { position: absolute; left: -5%; top: 4%; width: clamp(165px, 42%, 290px); transform: rotate(-12deg); transform-origin: top left; z-index: 0; pointer-events: none; filter: drop-shadow(0 12px 24px rgba(26, 46, 38, .10)); animation: leafDrift 9s ease-in-out infinite; }
.deco-haw { position: absolute; right: 0; bottom: 18%; width: clamp(98px, 24%, 178px); z-index: 0; pointer-events: none; filter: drop-shadow(0 10px 22px rgba(26, 46, 38, .14)); }
.deco-ech { position: absolute; left: 4%; bottom: 5%; width: clamp(78px, 19%, 140px); z-index: 0; pointer-events: none; filter: drop-shadow(0 10px 22px rgba(26, 46, 38, .14)); }

/* 首屏手机框宽度走 class——窄屏断点要收窄给两侧装饰植物让位，写内联会压掉断点 */
.hero-phone { width: min(100%, 378px); }

/* 首屏下载大按钮（箭标悬停右移渐显） */
.dl-btn { display: grid; grid-template-columns: minmax(0, 1fr); align-items: center; gap: 12px; background: #1A2E26; color: #fff; padding: 12px clamp(14px, 4vw, 22px); border-radius: 14px; min-height: 56px; min-width: 0; transition: background .25s ease, transform .25s cubic-bezier(.16, 1, .3, 1), box-shadow .25s ease; }
.dl-btn:hover { background: #000; color: #fff; transform: translateY(-2px); box-shadow: 0 14px 30px -12px rgba(26, 46, 38, .5); }
.dl-btn [data-arrow] { display: inline-block; font-size: clamp(13px, 4vw, 17px); opacity: .75; transition: transform .3s cubic-bezier(.16, 1, .3, 1), opacity .25s ease; }
.dl-btn:hover [data-arrow] { transform: translateX(6px); opacity: 1; }

/* 首屏词源块（花序/inflorescence 释义，整块斜体）：字号行高与上边距走 class——窄屏断点要覆盖，写内联会压掉断点 */
.def-src { font-size: 14px; line-height: 1.6; margin-top: 28px; }

/* 手机外框滚动视口（01/03 板块长图示意）：长图在屏内滚动，滚动条隐藏保持整机观感。
   不设 overscroll-behavior：保留默认滚动链，内层滚到头后同一手势接着滚页面（触屏不困在框里）。 */
.device-screen { overflow-y: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.device-screen::-webkit-scrollbar { display: none; }

/* 手机示意图外框：白边与圆角按框宽等比（cqw 容器查询单位）——宽屏 401/378px 时合 7px/46px/37px，
   窄屏框变小则边薄角小，与屏内图片比例保持协调。
   注意 cqw 不能作用于容器自身：wrap 只做容器定尺寸，边框圆角挂在 shell（wrap 的后代）上。 */
.phone-wrap { container-type: inline-size; }
.phone-shell { background: #fff; padding: 1.75cqw; border-radius: 11.5cqw; }

/* 植物图库格（悬停轻浮起） */
.plant-cell { display: grid; place-items: center; aspect-ratio: 1; background: #fff; border-radius: 18px; border: 1px solid rgba(26, 46, 38, .08); padding: 12%; box-shadow: 0 1px 2px rgba(26, 46, 38, .04); transition: transform .25s ease, box-shadow .25s ease; }
.plant-cell:hover { transform: translateY(-2px); box-shadow: 0 4px 16px rgba(26, 46, 38, .08); }

/* 操作图标格：文字随格宽等比缩（cqw 容器查询单位，同 .phone-wrap 机制）。
   标准=最宽档比例（格 ~112px 时 13px ≈ 11.75% 格宽）：图标 38% 随格缩、文字若定死 13px，
   窄格上文字占比会涨到 16–20% 显得很大。cqw 按容器内容盒计（格宽 −2px 边框），系数=13/110.4 实测折算；
   clamp 上限 13px 与最宽档持平，下限 10px 保中文标签可读（触到下限的窄格占比略高于标准）。
   注意 cqw 不能作用于容器自身：字号挂在格内 span 上。 */
.op-grid { width: min(100%, 92%); }
.op-cell { container-type: inline-size; aspect-ratio: 1; background: #fff; border-radius: 16px; border: 1px solid rgba(26, 46, 38, .08); display: grid; place-items: center; align-content: center; gap: 5px; padding-top: 8px; box-shadow: 0 1px 2px rgba(26, 46, 38, .04); }
.op-cell span { font-size: clamp(10px, 11.75cqw, 13px); max-width: 100%; line-height: 1.25; text-align: center; }
/* ↑ max-width 必须：grid place-items:center 下 span 按内容宽（max-content）计不折行——英文长标签（Liquid/Slow-release fertilizer）靠它两行换行显示，中文短标签不受影响 */

/* 收口 CTA 双按钮 */
.cta-btn { display: flex; flex-direction: column; gap: 3px; min-width: 0; background: rgba(255, 255, 255, .07); border: 1px solid rgba(255, 255, 255, .14); border-radius: 18px; padding: 15px clamp(10px, 2.5vw, 22px); color: #F2F7F4; text-decoration: none; text-align: center; transition: transform .3s cubic-bezier(.16, 1, .3, 1), background .2s; }
.cta-btn:hover { background: rgba(255, 255, 255, .13); transform: translateY(-3px); color: #F2F7F4; }

/* 回到顶部按钮（滚过 600px 后 site.js 加 .show） */
.totop { position: fixed; right: 20px; bottom: 20px; z-index: 45; width: 44px; height: 44px; border: 0; border-radius: 50%; background: #1A2E26; color: #F2F7F4; display: grid; place-items: center; cursor: pointer; padding: 0; box-shadow: 0 10px 26px -8px rgba(26, 46, 38, .5); opacity: 0; transform: translateY(10px); pointer-events: none; transition: opacity .3s, transform .3s cubic-bezier(.16, 1, .3, 1), background .2s; }
.totop.show { opacity: 1; transform: none; pointer-events: auto; }
.totop:hover { background: #22382F; }

/* ---- 首页页脚 ---- */
.footer-link { color: rgba(242, 247, 244, .72); font-size: 14.5px; text-decoration: none; transition: color .2s; }
.footer-link:hover { color: #F2F7F4; }
.icp-link { color: rgba(242, 247, 244, .5); font-size: 12.5px; text-decoration: none; transition: color .2s; }
.icp-link:hover { color: #F2F7F4; }
.footer-grid { display: grid; gap: 28px 20px; grid-template-columns: 1fr 1fr; }
.footer-grid .span2 { grid-column: span 2; }

/* 图文配对区块的响应式顺序：桌面按 DOM 序，窄屏图沉到文后（原 imgFirst 绑定） */
.pair-fig { order: 1; }

/* 左列与编号对齐的响应式上移（原 offset03/07/09 绑定；ul 默认外边距一并归零） */
.offset-700 { margin: 0; }
.offset-900 { margin: 0; }

/* ---- 响应式断点 ---- */
@media (min-width: 560px) {
  .footer-grid { gap: 24px; grid-template-columns: 1.6fr 1fr 1fr 1.2fr; }
  .footer-grid .span2 { grid-column: auto; }
}
@media (min-width: 700px) {
  .offset-700 { margin: calc(clamp(44px, 5vw, 64px) + 14px) 0 0; }
}
/* 桌面门槛 900→720（2026-09-24）：折叠横屏 ~861 / iPad 竖屏 768–834 这类 mini 平板尺寸给桌面布局；
   .offset-900 等类名为历史标识、不随门槛改名（改名牵连 HTML 多处，语义以本注释为准） */
@media (min-width: 720px) {
  .dl-row { justify-content: start; }
  .pair-fig { order: 0; }
  .offset-900 { margin: calc(clamp(44px, 5vw, 64px) + 14px) 0 0; }
  .m-menu-btn { display: none; }
}
/* f09 三图对比行需 ~900+ 才舒展，例外维持原门槛：720–899 只显中间大图 */
@media (max-width: 899.98px) {
  .fold-side { display: none; }
}
@media (max-width: 719.98px) {
  .d-nav, .d-dl { display: none; }
  .op-grid { width: 100%; }
  .f07-fig { order: 2; }
  .f07-text { order: 1; }
  .nb-item { grid-template-columns: auto minmax(0, 1fr); column-gap: 12px; }
  .nb-item > b { margin-top: 0; }
  .nb-item > span:first-child { grid-row: span 2; }
}
/* why 导语的强制换行仅宽屏保留（加粗句独占一行）：窄屏并作一段连排 */
@media (max-width: 699.98px) {
  .br-wide { display: none; }
}
@media (max-width: 559.98px) {
  .def-src { font-size: 13px; line-height: 1.4; margin-top: 16px; }
  /* 窄屏手机框收窄让出两侧空隙，装饰植物从空隙里探出；左缘对齐版心（与屏幕左缘留 hero padding 间距，不触边） */
  .hero-phone { width: min(86%, 378px); }
  .deco-mon { left: -2%; top: -2%; width: 128px; }
  .deco-haw { right: 0; bottom: 14%; width: 88px; }
  .deco-ech { left: 0; bottom: 2%; width: 70px; }
}

/* ---- 法务页 ---- */
.legal-link { color: #495D55; font-weight: 600; transition: color .2s ease; }
.legal-link:hover { color: #1A2E26; }
.legal-card { background: #fff; border: 1px solid rgba(26, 46, 38, .10); border-radius: 16px; padding: 18px 20px; }

/* ---- 站点双语（v0.20.0）：同一 URL 按访客语言自适应 ----
   机制：head 内联脚本在渲染前给 <html> 打 data-lang（?lang= 参数 > cookie > 系统语言，
   默认中文兜底——无 JS/爬虫/脚本被禁恒见中文）。原文素加 .lang-zh、译文孪生元素带
   .lang-en，CSS 只显示其一；display:none 的孪生不参与 grid/flex 布局，间距由可见
   一侧原样式承载。!important 必须：大量元素带内联 display 样式，类选择器压不过。 */
html[data-lang="en"] .lang-zh { display: none !important; }
html:not([data-lang="en"]) .lang-en { display: none !important; }
/* 语言切换器（v0.20.0 二改：DeepSeek 式分段胶囊——容器 32px 高/3px 内距/1px 边框圆角胶囊，
   两枚分段钮「中文/EN」并排，当前语言=白底浮起圆片+微投影、另一枚灰字；
   激活态纯 CSS 随 html[data-lang] 走，点按 __langSet('zh'|'en') 定向设定（幂等）。 */
.lang-switch { display: flex; align-items: center; height: 32px; padding: 3px; border-radius: 999px; border: 1px solid rgba(26, 46, 38, .14); }
.lang-sw { display: flex; align-items: center; justify-content: center; height: 100%; padding: 0 12px; border: 0; background: transparent; border-radius: 999px; font: inherit; font-size: 12px; font-weight: 500; color: #7C8C86; cursor: pointer; transition: color .2s, background-color .2s, box-shadow .2s; white-space: nowrap; }
.lang-sw:hover { color: #495D55; }
html:not([data-lang="en"]) .ls-zh, html[data-lang="en"] .ls-en { background: #fff; color: #1A2E26; box-shadow: 0 1px 3px rgba(26, 46, 38, .10); }
/* 特窄屏（<360，如 320px 老机型）：切换器分段钮内距收一档。320px 下顶栏 [logo+切换器+汉堡]
   本就贴满，flex 挤压曾把 logo 文字与「中文」钮挤到换行（换行后 space-between 又把余量摊开，
   显得两头断行中间大空隙）；logo 已钉 nowrap，此处再让出 12px 作余量 */
@media (max-width: 359.98px) {
  .lang-sw { padding: 0 9px; }
}
