/* H5 authored styles(非 Tailwind 生成物,勿被构建覆盖)。ADR-0001 换皮 / ADR-0002 orb 球。 */

/* ---------- 号码球:49095 orb PNG(本地化)+ 数字叠加 + 生肖 ---------- */
/* orb 为空心彩环白心,数字用深色居中 */
.orb{
  display:inline-flex;align-items:center;justify-content:center;
  width:38px;height:38px;flex:0 0 auto;
  background:no-repeat center/contain;
  color:#1c2126;font-weight:800;font-size:15px;line-height:1;
  position:relative;vertical-align:top;
}
.orb-red{background-image:url(/static/h5/ball-red.png)}
.orb-blue{background-image:url(/static/h5/ball-blue.png)}
.orb-green{background-image:url(/static/h5/ball-green.png)}
.orb-gray{background-image:url(/static/h5/ball-gray.png)}
.orb[data-zodiac]{margin-bottom:15px}
.orb[data-zodiac]::after{
  content:attr(data-zodiac);
  position:absolute;top:calc(100% + 2px);left:50%;transform:translateX(-50%);
  font-size:10px;font-weight:400;color:#8a93a0;white-space:nowrap;
}
.orb-special{filter:drop-shadow(0 0 3px rgba(212,160,40,.95))}
/* 小尺寸(近期列表):不带生肖 */
.orb-sm{width:26px;height:26px;font-size:12px;margin-bottom:0}
.orb-sm[data-zodiac]::after{display:none}

/* ---------- 顶栏 AppBar ---------- */
.appbar{position:sticky;top:0;z-index:20;background:#fff;border-bottom:1px solid #edf0f3}
.appbar .inner{max-width:28rem;margin:0 auto;height:48px;display:flex;align-items:center;justify-content:space-between;padding:0 14px}
.appbar .logo{font-weight:800;font-size:18px;color:#16a34a;letter-spacing:.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:62%}
.appbar .acts{display:flex;gap:16px;flex-shrink:0}
.appbar .acts a{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;color:#8a93a0;text-decoration:none}
.appbar .acts svg{width:18px;height:18px;stroke:#8a93a0;fill:none;stroke-width:1.8}

/* ---------- 底部 TabBar ---------- */
/* 高度含 safe-area:iPhone 全面屏 home indicator 会压在 fixed 底栏上,不补这段就点不到最下面一行图标 */
.tabbar{position:fixed;left:50%;bottom:0;transform:translateX(-50%);width:100%;max-width:28rem;height:56px;background:#fff;border-top:1px solid #edf0f3;display:flex;z-index:20}
/* 不支持 env() 的内核会整条 calc 失效,故先留纯 px 兜底再覆盖 */
.tabbar{height:calc(56px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom)}
.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11px;color:#8a93a0;text-decoration:none}
.tabbar a .icn{width:22px;height:22px;stroke:#8a93a0;fill:none;stroke-width:1.8}
.tabbar a.on{color:#16a34a}
.tabbar a.on .icn{stroke:#16a34a}

/* 给 fixed tabbar 让位(同样要算进 safe-area,否则末条列表被 home indicator 吃掉) */
.has-tabbar{padding-bottom:64px;padding-bottom:calc(64px + env(safe-area-inset-bottom) + var(--kb-h, 0px))}

/* ---------- 分段控件(历史页:开奖记录 | 走势统计,iOS 式 pill 导航) ---------- */
.seg{display:flex;background:#eef1f4;border-radius:10px;padding:3px;margin-bottom:14px}
.seg a{flex:1;text-align:center;padding:8px 0;font-size:14px;font-weight:600;color:#8a93a0;text-decoration:none;border-radius:8px}
.seg a.on{background:#fff;color:#16a34a;box-shadow:0 1px 2px rgba(20,30,50,.08)}

/* ---------- 首页变体 D:封盘倒计时 Hero ---------- */
.cd-hero{background:linear-gradient(160deg,#1f8f52,#16713f);border-radius:16px;padding:20px;text-align:center;color:#fff;box-shadow:0 1px 3px rgba(20,30,50,.06)}
.cd-hero .lbl{font-size:13px;opacity:.85}
.cd-hero .clock{font-size:40px;font-weight:800;letter-spacing:2px;margin:6px 0;font-variant-numeric:tabular-nums;line-height:1.1}
.cd-hero .pno{font-size:13px;opacity:.9}

/* ---------- 首页变体 D:近期开奖列表 ---------- */
.recent{background:#fff;border-radius:12px;margin-top:16px;overflow:hidden;box-shadow:0 1px 3px rgba(20,30,50,.05)}
.recent .hd{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid #f1f3f5;font-size:14px;font-weight:600}
.recent .hd a{font-size:12px;color:#8a93a0;text-decoration:none;font-weight:400}
.recent .row{display:flex;align-items:center;gap:8px;padding:11px 14px;border-bottom:1px solid #f6f7f9;text-decoration:none;color:inherit}
.recent .row:last-child{border-bottom:0}
.recent .row .no{font-size:12px;color:#8a93a0;width:64px;flex:0 0 auto}
.recent .row .bs{display:flex;align-items:center;gap:5px;flex-wrap:wrap}

/* ---------- 通用主按钮(登录 / 改密) ---------- */
.btn-primary{display:block;width:100%;background:#16a34a;color:#fff;border:0;border-radius:10px;padding:11px 0;font-size:15px;font-weight:600;cursor:pointer}
.btn-primary:active{background:#12833c}

/* ---------- 我的:个人中心 ---------- */
.profile{background:linear-gradient(160deg,#1f8f52,#16713f);border-radius:16px;padding:18px;color:#fff;box-shadow:0 1px 3px rgba(20,30,50,.06)}
.profile .top{display:flex;justify-content:space-between;align-items:flex-start}
.profile .nm{font-size:16px;font-weight:700}
.profile .nm small{font-weight:400;opacity:.85;font-size:13px}
.profile .sub{font-size:12px;opacity:.85;margin-top:3px}
.profile .out{font-size:12px;color:#fff;opacity:.85;background:none;border:0;cursor:pointer}
.profile .bal-lbl{font-size:12px;opacity:.85;margin-top:14px}
.profile .bal{font-size:30px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.15}
.quick{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}
.quick a{background:#fff;border-radius:12px;padding:14px 0;text-align:center;font-size:13px;color:#374151;text-decoration:none;box-shadow:0 1px 3px rgba(20,30,50,.05)}
.a-green{color:#16a34a;font-weight:600}

/* ---------- 首页开奖卡:逆向 49095 border-box-body(绿框白底 + 3 栏头 + 环球 + 红脚注) ---------- */
.lottery-card{border:2px solid #16a34a;background:#fff;border-radius:12px;margin-top:16px;overflow:hidden;box-shadow:0 1px 3px rgba(20,30,50,.05)}
.lottery-card .lc-hd{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:12px 12px 8px;font-size:13px}
.lottery-card .lc-no{color:#374151;white-space:nowrap}
.lottery-card .lc-no b{color:#16a34a;font-weight:700}
.lottery-card .lc-cd{color:#e21607;display:flex;align-items:center;gap:4px;font-size:12px;white-space:nowrap}
.lottery-card .lc-cd .clk{font-weight:700;font-variant-numeric:tabular-nums}
.lottery-card .lc-more{color:#16a34a;text-decoration:none;white-space:nowrap}
.lottery-card .lc-bd{display:flex;align-items:flex-start;justify-content:center;gap:6px;flex-wrap:wrap;padding:6px 8px 12px}
.lottery-card .lc-bd .plus{align-self:center;color:#c8ced6;font-size:18px;line-height:38px;padding:0 1px}
.lottery-card .lc-ft{text-align:center;padding:8px 10px 10px;color:#e21607;font-size:12px}

/* ---------- 首页自助下注入口(开关开 + 有收单中期才渲染,复用 .btn-primary 观感) ---------- */
.bet-cta{display:block;width:100%;text-align:center;background:#16a34a;color:#fff;border-radius:10px;padding:11px 0;font-size:15px;font-weight:600;text-decoration:none;margin-top:12px}
.bet-cta:active{background:#12833c}

/* ---------- 我的:金色余额横幅 + 我的频道宫格(逆向 49095 mine) ---------- */
.member-banner{display:flex;align-items:center;justify-content:space-between;gap:10px;background:linear-gradient(120deg,#f6c96b,#e5a13a);border-radius:14px;padding:16px 18px;margin-top:12px;color:#5a3a00;box-shadow:0 1px 3px rgba(20,30,50,.08)}
.member-banner .mb-lbl{font-size:12px;opacity:.9}
.member-banner .mb-bal{font-size:24px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.2}
.member-banner .mb-btn{background:#fff;color:#c0791a;border-radius:20px;padding:8px 18px;font-size:14px;font-weight:700;text-decoration:none;flex:0 0 auto}
.sec-title{font-size:15px;font-weight:700;color:#1c2126;margin:16px 2px 8px}
.mgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;background:#fff;border-radius:12px;padding:14px 6px;box-shadow:0 1px 3px rgba(20,30,50,.05)}
.mgrid a{display:flex;flex-direction:column;align-items:center;gap:7px;padding:8px 0;font-size:12px;color:#374151;text-decoration:none}
.mgrid a .ico{width:44px;height:44px;border-radius:14px;background:#eafaf1;display:flex;align-items:center;justify-content:center}
.mgrid a svg{width:24px;height:24px;stroke:#16a34a;fill:none;stroke-width:1.7}

/* ---------- 登录/注册:独立全屏页(逆向 49095 login/register) ---------- */
/* dvh 跟随移动端地址栏收放,vh 留作旧内核兜底(顺序不能反) */
/* --kb-h 由 kbfit.js 写入软键盘高度:把页面撑得比视口高,否则"刚好一屏"的表单页在键盘弹起后
   仍不可滚动,被盖住的提交按钮永远够不到 */
.auth-page{min-height:100vh;min-height:100dvh;background:#16a34a;display:flex;flex-direction:column;padding-bottom:var(--kb-h, 0px)}
.auth-top{padding:54px 0 28px;text-align:center;color:#fff}
.auth-top .a-logo{font-size:26px;font-weight:800;letter-spacing:1px}
.auth-top .a-sub{font-size:13px;opacity:.85;margin-top:6px}
.auth-sheet{flex:1;background:#fff;border-radius:22px 22px 0 0;padding:26px 22px 34px}
.auth-title{font-size:18px;font-weight:700;color:#16a34a;border-bottom:2px solid #16a34a;display:inline-block;padding-bottom:4px;margin-bottom:6px}
.field-row{display:flex;align-items:center;gap:14px;padding:16px 0;border-bottom:1px solid #eef1f4}
.field-ico{width:46px;height:46px;border-radius:12px;background:#f4f6f8;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.field-ico svg{width:22px;height:22px;stroke:#16a34a;fill:none;stroke-width:1.8}
.field-main{flex:1;min-width:0}
.field-main label{display:block;font-size:15px;font-weight:600;color:#1c2126;margin-bottom:5px}
.field-main input{width:100%;border:0;outline:0;font-size:14px;padding:2px 0;background:transparent;color:#1c2126}
.field-main input::placeholder{color:#b6bcc4}
.auth-btn{display:block;width:100%;background:#16a34a;color:#fff;border:0;border-radius:26px;padding:14px 0;font-size:16px;font-weight:700;margin-top:28px;cursor:pointer}
.auth-btn:active{background:#12833c}
.auth-links{display:flex;justify-content:space-between;margin-top:16px;font-size:13px}
.auth-links a{color:#16a34a;text-decoration:none}
.auth-msg{color:#e21607;font-size:13px;min-height:1.1rem;margin-top:10px}
/* 注册页:绿 nav + label 左置行(白底) */
.reg-page{min-height:100vh;min-height:100dvh;background:#fff;padding-bottom:var(--kb-h, 0px)}
.auth-nav{background:#16a34a;color:#fff;height:48px;display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:600;position:relative}
.auth-nav .back{position:absolute;left:6px;top:0;height:48px;display:flex;align-items:center;padding:0 12px;color:#fff;font-size:22px;text-decoration:none;line-height:1}
.rform{padding:8px 18px 34px}
.rfield{display:flex;align-items:center;gap:12px;padding:16px 0;border-bottom:1px solid #eef1f4}
.rfield label{width:80px;flex:0 0 auto;font-size:15px;font-weight:700;color:#1c2126}
.rfield input{flex:1;min-width:0;border:0;outline:0;font-size:14px;background:transparent;color:#1c2126}
.rfield input::placeholder{color:#b6bcc4}

/* ---------- 下注页:独立全屏页(绿 nav + 单页滚动分区 + 底部固定投注单) ---------- */
.bet-page{min-height:100vh;min-height:100dvh;background:#fff}
.bet-nav{background:#16a34a;color:#fff;height:48px;display:flex;align-items:center;justify-content:space-between;padding:0 4px;position:sticky;top:0;z-index:20}
.bet-nav .back{color:#fff;font-size:22px;text-decoration:none;padding:0 10px;line-height:1}
.bn-title{font-size:16px;font-weight:600}
.bn-cd{font-size:12px;opacity:.92;display:flex;align-items:center;gap:4px;white-space:nowrap;padding-right:8px;min-width:60px;justify-content:flex-end}
.bn-cd b{font-variant-numeric:tabular-nums;font-weight:700}
.bet-content{padding-bottom:calc(var(--slip-h, 280px) + 16px)} /* --slip-h 由 bet.html JS 按投注单实际渲染高度写入,280px 为 JS 未跑前的兜底 */
.bet-bal{padding:10px 14px 0;font-size:13px;color:#6b7280}
.bet-board{display:grid;grid-template-columns:repeat(7,1fr);gap:6px 2px;padding:8px 10px 4px;max-width:28rem;margin:0 auto}
.bet-orb-btn{background:none;border:0;padding:2px 0;cursor:pointer}
.bet-opt-row{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:0 10px 8px;max-width:28rem;margin:0 auto}
.bet-opt{background:#f4f6f8;border:0;border-radius:10px;padding:8px 4px;font-size:13px;color:#1c2126;text-align:center;cursor:pointer}
.bet-opt i{display:block;font-style:normal;font-size:11px;color:#16a34a;margin-top:2px}
/* --kb-h:键盘占据的高度,由 bet.html 按 visualViewport 实测写入(iOS 不缩 layout viewport,
   不上移这层 fixed 浮层就会整个被键盘盖住,金额输入框看不见)。safe-area 同理避开 home indicator。 */
.bet-slip{position:fixed;left:50%;bottom:0;transform:translateX(-50%) translateY(calc(-1 * var(--kb-h, 0px)));width:100%;max-width:28rem;background:#fff;border-top:1px solid #edf0f3;box-shadow:0 -2px 6px rgba(20,30,50,.06);padding:10px 14px;padding-bottom:calc(10px + env(safe-area-inset-bottom));z-index:20}
.bs-hd{font-size:13px;font-weight:700;color:#1c2126;margin-bottom:6px}
/* 键盘弹起后可视区只剩一半,26vh(基于 layout viewport,键盘不影响它)会让浮层高得盖住整页;
   --bs-max 由 JS 按实测可视高度压到更小值,腾出空间给"下一条待填订单"。 */
.bs-list{max-height:var(--bs-max, 26vh);overflow-y:auto;-webkit-overflow-scrolling:touch}
.bs-item{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid #f6f7f9}
.bi-label{flex:1;font-size:12px;color:#374151}
.bi-amt{width:84px;border:1px solid #e5e7eb;border-radius:8px;padding:5px 8px;font-size:13px}
.bi-rm{background:none;border:0;color:#c8ced6;font-size:18px;line-height:1;cursor:pointer;padding:0 4px;flex:0 0 auto}
.bs-ft{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px}
.bs-total{font-size:13px;color:#374151}
.bs-total b{font-size:16px;color:#16a34a}
.bs-ft .btn-primary{width:auto;flex:0 0 auto;padding:9px 22px}

/* ---------- 全局跑马灯公告(子项目 B) ---------- */
.marquee{display:flex;align-items:center;gap:8px;max-width:28rem;margin:0 auto;padding:8px 14px;background:#fff;border-bottom:1px solid #eef0f2;font-size:13px;color:#374151;overflow:hidden}
.marquee .mq-ico{flex:0 0 auto;font-size:14px;line-height:1}
.marquee-vp{flex:1 1 auto;overflow:hidden;white-space:nowrap}
.marquee-track{display:inline-block;padding-left:100%;white-space:nowrap;animation:mq-scroll 18s linear infinite}
.marquee .mq-item{display:inline-block}
.marquee .mq-item::after{content:"·";margin:0 22px;color:#c8ced6}
.marquee .mq-item:last-child::after{content:"";margin:0}
@keyframes mq-scroll{from{transform:translateX(0)}to{transform:translateX(-100%)}}
@media (prefers-reduced-motion:reduce){.marquee-track{animation:none;padding-left:0}.marquee-vp{overflow:auto}}

/* ---------- iOS 输入框自动放大规避 ---------- */
/* Safari 聚焦 font-size<16px 的输入框时会自动放大整个页面,visual viewport 随之缩小 ——
   既让布局错位,也会被键盘高度的计算逻辑(kbfit.js / bet.html 的 --kb-h)当成键盘弹起。
   提到 16px 从源头掐掉;放文件末尾靠层叠覆盖上面各节的 14px/13px 声明。 */
.field-main input,.rfield input,.bi-amt{font-size:16px}
