/* home.css — 产线平台主页（匿名门户，index.ui 未登录分支）后现代风格样式。
   明暗双主题：默认亮色（纸上先锋），html[data-theme="dark"] 暗色（霓虹暗夜）。
   全部选择器以 .pl- 前缀 / --pl- 变量限定，不影响工作台页面。
   注入方式：header.tmpl cssfiles() 自动收集（需注册 any 权限，见 scripts/load_path.py）。
   注意：bricks 行内样式优先级高，覆盖行内值的规则一律带 !important。 */

/* ===== 主题变量 ===== */
html{
  --pl-bg:#f4f3ef; --pl-bg2:#eae9e3; --pl-ink:#0a0a0f; --pl-ink-soft:rgba(10,10,15,.62);
  --pl-ink-faint:rgba(10,10,15,.42); --pl-line:rgba(10,10,15,.12); --pl-line-soft:rgba(10,10,15,.07);
  --pl-glass:rgba(255,255,255,.62); --pl-glass-br:rgba(10,10,15,.10);
  --pl-cy:#0891b2; --pl-vi:#7c3aed; --pl-mg:#c026d3; --pl-ye:#ca8a04;
  --pl-cy-soft:rgba(8,145,178,.75); --pl-hi:#f4f5fb;
  --pl-header-bg:rgba(244,243,239,.72); --pl-orb-op:.20; --pl-noise-op:.05;
  --pl-marquee-bg:#0a0a0f; --pl-marquee-ink:#f4f3ef;
  --pl-btn-ink:#f8fafc; --pl-shadow:0 24px 60px -18px rgba(10,10,15,.25);
}
html[data-theme="dark"]{
  --pl-bg:#05060a; --pl-bg2:#0a0c14; --pl-ink:#e7e9f3; --pl-ink-soft:rgba(231,233,243,.62);
  --pl-ink-faint:rgba(231,233,243,.40); --pl-line:rgba(255,255,255,.14); --pl-line-soft:rgba(255,255,255,.07);
  --pl-glass:rgba(255,255,255,.035); --pl-glass-br:rgba(255,255,255,.09);
  --pl-cy:#22d3ee; --pl-vi:#a78bfa; --pl-mg:#d946ef; --pl-ye:#facc15;
  --pl-cy-soft:rgba(103,232,249,.85); --pl-hi:#f4f5fb;
  --pl-header-bg:rgba(5,6,10,.55); --pl-orb-op:.30; --pl-noise-op:.05;
  --pl-marquee-bg:rgba(255,255,255,.02); --pl-marquee-ink:rgba(231,233,243,.75);
  --pl-btn-ink:#05060a; --pl-shadow:0 24px 60px -18px rgba(34,211,238,.30);
}

/* ===== 页面基调 ===== */
.pl-page{background:var(--pl-bg)!important;color:var(--pl-ink)!important;font-family:"Inter","PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif!important}
.pl-rel{position:relative}
.pl-scroll::-webkit-scrollbar{width:8px}
.pl-scroll::-webkit-scrollbar-track{background:transparent}
.pl-scroll::-webkit-scrollbar-thumb{background:var(--pl-line);border-radius:8px}
.pl-scroll::-webkit-scrollbar-thumb:hover{background:var(--pl-cy-soft)}
/* flex 列容器子项默认 flex-shrink:1 会把内容压缩而不是溢出滚动（hero 被压扁的根因） */
.pl-scroll > *{flex-shrink:0!important}

/* ===== 顶部 header（sticky 吸顶） ===== */
.pl-header{position:sticky!important;top:0!important;background:var(--pl-header-bg)!important;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-bottom:1px solid var(--pl-line-soft)!important;z-index:50;flex-shrink:0}
.pl-logo{font-size:20px!important;font-weight:900!important;letter-spacing:.02em;color:var(--pl-ink)!important;text-align:left!important;cursor:pointer}
.pl-logo-sub{font-size:10px!important;letter-spacing:.42em;color:var(--pl-cy-soft)!important;text-transform:uppercase;text-align:left!important}
.pl-nav{font-size:13px!important;color:var(--pl-ink-soft)!important;letter-spacing:.06em;cursor:pointer;transition:color .2s}
.pl-nav:hover{color:var(--pl-cy)!important}

/* ===== 按钮 ===== */
.pl-btn{background:linear-gradient(92deg,var(--pl-cy),var(--pl-vi) 55%,var(--pl-mg))!important;border:none!important;border-radius:999px!important;padding:11px 26px!important;color:var(--pl-btn-ink)!important;font-size:14px!important;font-weight:800!important;letter-spacing:.04em;cursor:pointer!important;transition:transform .2s,box-shadow .2s;box-shadow:0 0 24px -8px var(--pl-cy)}
.pl-btn:hover{transform:translateY(-2px);box-shadow:0 0 34px -6px var(--pl-mg)}
.pl-btn div{color:inherit!important;font-weight:inherit!important}
.pl-btn-ghost{background:var(--pl-glass)!important;border:1px solid var(--pl-line)!important;border-radius:999px!important;padding:11px 26px!important;color:var(--pl-ink)!important;font-size:14px!important;font-weight:600!important;letter-spacing:.04em;cursor:pointer!important;backdrop-filter:blur(8px);transition:border-color .2s,transform .2s,box-shadow .2s}
.pl-btn-ghost:hover{border-color:var(--pl-cy-soft)!important;transform:translateY(-2px);box-shadow:0 0 22px -8px var(--pl-cy)}
.pl-btn-ghost div{color:inherit!important}
.pl-btn-sm{padding:7px 18px!important;font-size:12.5px!important}

/* ===== Hero ===== */
.pl-hero{position:relative!important;overflow:hidden!important;background:var(--pl-bg)!important;padding:clamp(56px,9vw,120px) clamp(20px,6vw,90px) clamp(48px,7vw,90px)!important}
.pl-hero-deco{position:absolute!important;top:0!important;left:0!important;right:0!important;bottom:0!important;pointer-events:none!important;z-index:0}
.pl-grid{position:absolute!important;top:0;bottom:0;left:0;right:0;background-image:linear-gradient(var(--pl-line-soft) 1px,transparent 1px),linear-gradient(90deg,var(--pl-line-soft) 1px,transparent 1px);background-size:56px 56px;-webkit-mask-image:radial-gradient(ellipse 90% 70% at 50% 35%,#000 35%,transparent 100%);mask-image:radial-gradient(ellipse 90% 70% at 50% 35%,#000 35%,transparent 100%)}
.pl-noise{position:absolute!important;top:0;bottom:0;left:0;right:0;opacity:var(--pl-noise-op);mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.pl-orb{position:absolute!important;border-radius:50%;filter:blur(90px);pointer-events:none;opacity:var(--pl-orb-op)}
.pl-orb-1{width:480px;height:480px;background:var(--pl-cy);top:-150px;left:-110px;animation:pl-drift1 19s ease-in-out infinite alternate}
.pl-orb-2{width:430px;height:430px;background:var(--pl-mg);top:4%;right:-130px;animation:pl-drift2 24s ease-in-out infinite alternate}
.pl-orb-3{width:320px;height:320px;background:var(--pl-ye);bottom:-130px;left:34%;opacity:calc(var(--pl-orb-op) * .45);animation:pl-drift1 28s ease-in-out infinite alternate-reverse}
@keyframes pl-drift1{from{transform:translate(0,0) scale(1)}to{transform:translate(70px,50px) scale(1.14)}}
@keyframes pl-drift2{from{transform:translate(0,0) scale(1.06)}to{transform:translate(-80px,60px) scale(.92)}}
.pl-hero-content{position:relative;z-index:1}

.pl-badge{border:1px solid var(--pl-cy-soft)!important;border-radius:999px!important;padding:6px 16px!important;color:var(--pl-cy)!important;font-size:11.5px!important;letter-spacing:.26em!important;text-transform:uppercase;background:var(--pl-glass)!important}
.pl-h1{font-size:clamp(2.6rem,7.4vw,5.4rem)!important;font-weight:900!important;line-height:1.06!important;letter-spacing:-.02em;text-align:left!important;color:var(--pl-ink)!important}
.pl-stroke{color:transparent!important;-webkit-text-stroke:1.4px var(--pl-ink-faint)}
.pl-grad{background:linear-gradient(92deg,var(--pl-cy),var(--pl-vi),var(--pl-mg),var(--pl-ye),var(--pl-cy));background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent!important;animation:pl-hue 9s linear infinite}
@keyframes pl-hue{to{background-position:300% 0}}
.pl-sub{font-size:clamp(14px,1.6vw,17px)!important;color:var(--pl-ink-soft)!important;line-height:1.8!important;text-align:left!important;max-width:640px}
.pl-stat-n{font-size:30px!important;font-weight:900!important;color:var(--pl-ink)!important;text-align:left!important;font-variant-numeric:tabular-nums}
.pl-stat-t{font-size:12px!important;color:var(--pl-ink-faint)!important;letter-spacing:.12em;text-align:left!important}

/* 入场动画（stagger） */
.pl-rise{animation:pl-rise .9s cubic-bezier(.2,.7,.2,1) both}
.pl-d1{animation-delay:.05s}.pl-d2{animation-delay:.15s}.pl-d3{animation-delay:.28s}.pl-d4{animation-delay:.42s}.pl-d5{animation-delay:.56s}
@keyframes pl-rise{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:translateY(0)}}

/* ===== 跑马灯带 ===== */
.pl-marquee{overflow:hidden!important;white-space:nowrap!important;border-top:1px solid var(--pl-line-soft)!important;border-bottom:1px solid var(--pl-line-soft)!important;background:var(--pl-marquee-bg)!important;padding:14px 0!important}
.pl-mq-track{display:flex!important;flex-wrap:nowrap!important;width:max-content!important;animation:pl-mq 36s linear infinite;will-change:transform}
.pl-mq-track:hover{animation-play-state:paused}
.pl-mq-item{font-size:14px!important;font-weight:700!important;letter-spacing:.14em;color:var(--pl-marquee-ink)!important;text-align:left!important;white-space:nowrap!important;padding:0 18px!important}
.pl-mq-item::after{content:"✦";margin-left:36px;color:var(--pl-cy);opacity:.9}
@keyframes pl-mq{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ===== 区块 ===== */
.pl-sec{position:relative!important;padding:84px clamp(20px,6vw,90px)!important;background:var(--pl-bg)!important}
.pl-kicker{font-size:11.5px!important;letter-spacing:.34em!important;color:var(--pl-cy)!important;text-transform:uppercase;text-align:left!important;font-family:ui-monospace,"SF Mono",Consolas,monospace}
.pl-h2{font-size:clamp(1.9rem,4.2vw,3rem)!important;font-weight:900!important;letter-spacing:-.01em;color:var(--pl-ink)!important;text-align:left!important;line-height:1.15!important}
.pl-sec-sub{font-size:15px!important;color:var(--pl-ink-soft)!important;text-align:left!important;line-height:1.7!important;max-width:620px}

/* ===== Bento 玻璃卡片 ===== */
.pl-card{position:relative!important;overflow:hidden!important;background:var(--pl-glass)!important;border:1px solid var(--pl-glass-br)!important;border-radius:22px!important;padding:26px!important;min-height:190px;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);transition:transform .28s cubic-bezier(.2,.7,.2,1),border-color .28s,box-shadow .28s}
.pl-card::before{content:"";position:absolute;top:0;left:0;right:0;height:120px;background:radial-gradient(420px 160px at 20% 0%,color-mix(in srgb,var(--pl-cy) 14%,transparent),transparent 70%);opacity:0;transition:opacity .3s;pointer-events:none}
.pl-card:hover{transform:translateY(-6px);border-color:var(--pl-cy-soft)!important;box-shadow:var(--pl-shadow)}
.pl-card:hover::before{opacity:1}
.pl-card-icon{font-size:30px!important;text-align:left!important;filter:saturate(1.25)}
.pl-card-t{font-size:17.5px!important;font-weight:800!important;color:var(--pl-ink)!important;text-align:left!important;letter-spacing:.01em}
.pl-card-d{font-size:13px!important;color:var(--pl-ink-soft)!important;text-align:left!important;line-height:1.75!important}
.pl-card-tag{align-self:flex-start;border:1px solid var(--pl-glass-br)!important;border-radius:999px!important;padding:3px 12px!important;font-size:10.5px!important;letter-spacing:.18em!important;color:var(--pl-mg)!important;text-transform:uppercase;font-family:ui-monospace,"SF Mono",Consolas,monospace}
.pl-card-lg{background:linear-gradient(135deg,color-mix(in srgb,var(--pl-cy) 9%,var(--pl-glass)),color-mix(in srgb,var(--pl-mg) 8%,var(--pl-glass)) 55%,color-mix(in srgb,var(--pl-ye) 5%,var(--pl-glass)))!important;border:1px solid color-mix(in srgb,var(--pl-vi) 32%,transparent)!important}
.pl-card-lg .pl-card-t{font-size:22px!important}

/* ===== 产线行 ===== */
.pl-step{position:relative!important;background:var(--pl-glass)!important;border:1px solid var(--pl-glass-br)!important;border-radius:20px!important;padding:24px 26px!important;transition:border-color .25s,transform .25s;backdrop-filter:blur(10px)}
.pl-step:hover{border-color:color-mix(in srgb,var(--pl-ye) 45%,transparent)!important;transform:translateY(-3px)}
.pl-step-n{font-size:42px!important;font-weight:900!important;color:transparent!important;-webkit-text-stroke:1.2px var(--pl-ink-faint);text-align:left!important;line-height:1!important;font-variant-numeric:tabular-nums;font-family:ui-monospace,"SF Mono",Consolas,monospace}
.pl-step-t{font-size:16.5px!important;font-weight:800!important;color:var(--pl-ink)!important;text-align:left!important}
.pl-step-d{font-size:12.5px!important;color:var(--pl-ink-soft)!important;text-align:left!important;line-height:1.7!important}
.pl-tag{align-self:center;border-radius:999px!important;padding:4px 14px!important;font-size:11px!important;letter-spacing:.14em!important;white-space:nowrap!important;text-align:center!important}
.pl-tag-live{background:color-mix(in srgb,#22c55e 16%,transparent)!important;border:1px solid rgba(34,197,94,.45)!important;color:#16a34a!important}
html[data-theme="dark"] .pl-tag-live{color:#4ade80!important}
.pl-tag-soon{background:var(--pl-glass)!important;border:1px solid var(--pl-line)!important;color:var(--pl-ink-faint)!important}

/* ===== CTA / Footer ===== */
.pl-cta{position:relative!important;overflow:hidden!important;margin:0 clamp(20px,6vw,90px) 84px!important;border-radius:28px!important;background:linear-gradient(120deg,color-mix(in srgb,var(--pl-cy) 13%,var(--pl-bg)),color-mix(in srgb,var(--pl-vi) 13%,var(--pl-bg)) 50%,color-mix(in srgb,var(--pl-mg) 13%,var(--pl-bg)))!important;border:1px solid color-mix(in srgb,var(--pl-vi) 30%,transparent)!important;padding:64px 40px!important}
.pl-cta-t{font-size:clamp(1.8rem,4vw,2.8rem)!important;font-weight:900!important;color:var(--pl-ink)!important;letter-spacing:-.01em;text-align:center!important}
.pl-cta-d{font-size:15px!important;color:var(--pl-ink-soft)!important;text-align:center!important}
.pl-footer{border-top:1px solid var(--pl-line-soft)!important;padding:26px clamp(20px,6vw,90px)!important;background:var(--pl-bg2)!important}
.pl-footer-t{font-size:12px!important;color:var(--pl-ink-faint)!important;letter-spacing:.08em;text-align:left!important}

/* ===== 响应式 ===== */
/* 窄桌面/平板横屏（761-900px，2026-09-17 实测 780 窗口）：header 预算紧，
   logo 与登录按钮曾各折两行。缩 logo 字号+按钮禁折行即够（实测余量 ~35px）。 */
@media (min-width:761px) and (max-width:900px){
  .pl-header{padding:0 16px!important;gap:10px!important}
  .pl-logo{font-size:17px!important;white-space:nowrap!important}
  .pl-logo-sub{font-size:9px!important}
  .pl-btn-sm{white-space:nowrap!important}
}
@media (max-width:760px){
  .pl-sec{padding:56px 20px!important}
  .pl-cta{margin:0 16px 56px!important;padding:44px 22px!important}
  .pl-card{min-height:0;padding:20px!important}
  .pl-orb{filter:blur(70px)}
  .pl-step{padding:18px!important}
  /* header 手机两行（2026-09-17 实测 390px）：行1=logo+登录，行2=三锚点+主题+语言。
     单行预算不够（jp 登录文案最宽），且 bricks Text 是 flex 容器 min-width:auto 不缩
     → logo 文字曾溢出叠到主题按钮上。两行后预算充足，ellipsis 仅作极端字体兜底。
     .pl-logo-box 为生成器加的 logo VBox class；语言切换=header 第 7 个子（urlwidget）。 */
  .pl-header{flex-wrap:wrap!important;padding:8px 12px!important;gap:6px!important}
  .pl-header > *{flex-shrink:0!important}
  .pl-header > .filler{display:none!important}
  .pl-logo-box{order:1;flex:1 1 auto;min-width:0!important}
  .pl-logo-box > *{min-width:0!important;max-width:100%!important}
  .pl-btn-sm{order:2;white-space:nowrap!important;padding:7px 14px!important;font-size:12px!important}
  /* 行2 预算实测：en 导航 12px 时 200px+主题60+语言80+gap32=372>366 折第三行；
     11px 导航(184)+gap24=348 ≤ 366，留 18px 余量 */
  .pl-nav{order:3;font-size:11px!important}
  .theme-icon-btn{order:4;margin-left:auto}
  .pl-header > *:nth-child(7){order:5}
  .pl-logo{font-size:15px!important;white-space:nowrap!important;overflow:hidden;text-overflow:ellipsis}
  .pl-logo-sub{font-size:9px!important}
  /* footer 竖排：版权行 381px+左padding 曾顶出 404px 造成 .pl-scroll 横向滚动 */
  .pl-footer{flex-direction:column!important;align-items:flex-start!important;gap:6px!important;padding:20px 16px!important}
  .pl-footer-t{width:100%!important;word-break:break-word!important}
}
