*{box-sizing:border-box}
a{color:inherit;text-decoration:none}

.app{
  max-width: 520px;
  margin: 0 auto;
  min-height: 100%;
  padding-bottom: 74px; /* bottom nav */
}
.app.navBarHidden{
  padding-bottom: 0;
}

.top{
  padding: 10px 12px 0 12px;
}
#homeHeader{
  position: sticky;
  top: 0;
  z-index: 50;
  background: #fff;
}
.pageTitleBar{
  margin-top:2px;
  margin-bottom:10px;
  border:1px solid var(--line);
  border-radius:16px;
  background:rgba(255,255,255,.85);
  box-shadow:var(--shadow);
  padding:12px 12px;
}
.pageTitleText{
  font-weight:900;
  letter-spacing:.3px;
}
.brandRow{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.logo{
  display:flex;
  align-items:center;
  gap:10px;
}
.mark{
  height:36px;min-width:36px;border-radius:12px;
  background:conic-gradient(from 210deg, var(--brand), #ff9f43, #34d399, #60a5fa, var(--brand));
  box-shadow:0 10px 20px rgba(230,58,58,.20);
  overflow:hidden;
}
.markLogo{
  display:none;
  height:100%;
  width:auto;
  object-fit:contain;
  border-radius:12px;
}
.siteName{
  font-weight:900;
  letter-spacing:.3px;
  line-height:1.05;
}
.domains{
  font-size:11px;
  color:var(--muted);
  line-height:1.25;
  text-align:right;
}

.banner{
  margin-top:10px;
  border-radius:14px;
  overflow:hidden;
  border:1px solid var(--line);
  box-shadow:var(--shadow);
  background:linear-gradient(180deg, rgba(230,58,58,.08), rgba(230,58,58,.02));
}
.bannerTop{
  padding:10px 12px;
  background:linear-gradient(90deg, var(--brand), #ff5b5b);
  color:#fff;
  font-weight:800;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.bannerTop small{font-weight:700;opacity:.92}
.bannerMid{
  padding:10px 12px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.ad{
  flex:1;
  background:linear-gradient(90deg, rgba(59,130,246,.12), rgba(34,197,94,.10));
  border:1px dashed rgba(201,154,46,.35);
  border-radius:12px;
  padding:10px 10px;
  min-height:46px;
}
.adTitle{font-weight:900;color:#1f3b7a}
.adSub{font-size:12px;color:var(--muted);margin-top:2px}

.lotteryTabs{
  margin-top:10px;
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  gap:10px;
}
.lotteryTab{
  border:1px solid var(--line);
  background:rgba(255,255,255,.75);
  border-radius:14px;
  padding:10px 10px;
  text-align:center;
  box-shadow:0 10px 18px rgba(18,18,18,.06);
}
.lotteryTab .name{font-weight:900}
.lotteryTab .time{font-size:12px;color:var(--muted);margin-top:4px}
.lotteryTab.active{
  border-color:rgba(230,58,58,.50);
  background:linear-gradient(180deg, rgba(230,58,58,.14), rgba(230,58,58,.06));
}

.section{
  padding: 10px 12px;
}
#pageHome .section,
#pageMaterialHistory .section{
  padding-left:0;
  padding-right:0;
}
.rowBetween{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.linkGold{
  color:var(--gold);
  font-weight:800;
  font-size:13px;
}
.issueLine{
  font-size:15px;
  color:#1f2937;
}
.issueLine .issue{
  color:#f59e0b;
  font-weight:700;
}
.refreshIcon{
  display:inline-block;
  margin-left:6px;
  font-size:14px;
  color:#9ca3af;
  vertical-align:middle;
}
.prevResultWrap{
  margin-bottom:8px;
}

.balls{
  margin-top:10px;
  display:flex;
  align-items:flex-end;
  justify-content:center;
  gap:2px;
  flex-wrap:nowrap;
}
.ballCol{display:flex;flex-direction:column;align-items:center;gap:8px}
.ball{
  width:clamp(28px,8.5vw,46px);height:clamp(28px,8.5vw,46px);border-radius:999px;
  display:grid;place-items:center;
  font-weight:900;
  color:#111827 !important;
  overflow:hidden;
  background:url('/assets/materials/%E8%89%B2%E6%B3%A2%E5%BA%95%E5%9B%BE/green.png') center/100% 100% no-repeat;
  text-shadow:none;
}
.ball.red{background-image:url('/assets/materials/%E8%89%B2%E6%B3%A2%E5%BA%95%E5%9B%BE/red.png')}
.ball.blue{background-image:url('/assets/materials/%E8%89%B2%E6%B3%A2%E5%BA%95%E5%9B%BE/blue.png')}
.ball.green{background-image:url('/assets/materials/%E8%89%B2%E6%B3%A2%E5%BA%95%E5%9B%BE/green.png')}
.zodiac{font-size:12px;color:var(--muted)}
.plus{
  font-weight:900;
  font-size:22px;
  color:#111827;
  margin:0 2px 10px 2px;
}

.countdownCard{
  margin-top:10px;
  border:1px solid var(--line);
  border-radius:16px;
  background:rgba(255,255,255,.85);
  box-shadow:var(--shadow);
  padding:14px 16px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.cdLeft{
  display:flex;
  flex-direction:column;
  gap:4px;
  flex:1;
  min-width:0;
}
.cdTitle{font-weight:900;white-space:nowrap;font-size:15px;color:#1f2937}
.cdTitle .nextIssue{color:#f59e0b}
.cdSub{font-size:12px;color:var(--muted);white-space:nowrap}
.cdTime{
  font-variant-numeric: tabular-nums;
  font-weight:900;
  font-size:32px;
  letter-spacing:2px;
  color:#1f2937;
}

.actions{
  margin-top:10px;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
.btn{
  border:1px solid var(--line);
  background:rgba(255,255,255,.9);
  border-radius:14px;
  padding:12px 10px;
  font-weight:900;
  cursor:pointer;
  box-shadow:0 10px 18px rgba(18,18,18,.06);
}
.btn.primary{
  border-color:rgba(230,58,58,.55);
  background:linear-gradient(180deg, rgba(230,58,58,.18), rgba(230,58,58,.06));
}
.notice{
  margin-top:10px;
  border-radius:16px;
  border:1px solid var(--line);
  background:linear-gradient(90deg, rgba(230,58,58,.08), rgba(255,255,255,.65));
  padding:12px 12px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  box-shadow:var(--shadow);
}
.notice .notice-title{font-weight:900}
.notice .notice-content{font-size:12px;color:var(--muted);margin-top:2px}

.card{
  margin-top:10px;
  border:1px solid var(--line);
  border-radius:16px;
  background:rgba(255,255,255,.85);
  box-shadow:var(--shadow);
  overflow:hidden;
}
#pageMaterialHistory .card{
  border:0;
  border-radius:0;
  box-shadow:none;
  background:transparent;
}
.cardHead{
  padding:10px 12px;
  background:linear-gradient(90deg, rgba(230,58,58,.12), rgba(255,255,255,.2));
  font-weight:900;
  text-align:center;
}

/* Homepage material block: tabs + list sit on page bg (no outer white card) */
.homeMaterialShell{
  margin-top:10px;
}

/* 资料详情：返回在「彩种 + 规则名」左侧，标题区居中占满剩余宽度 */
.materialHistoryCardHead{
  display:flex;
  align-items:center;
  gap:8px;
  text-align:center;
  padding:10px 10px;
  background:rgba(253,231,217,.95);
}
.materialHistoryBackBtn{
  flex-shrink:0;
}
.materialHistoryTitleInner{
  flex:1;
  min-width:0;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-wrap:wrap;
  gap:6px;
  font-weight:900;
}
.drawHistoryYearSelect{
  padding:4px 8px;
  font-size:13px;
  font-weight:700;
  border:1px solid rgba(234,217,209,.9);
  border-radius:4px;
  background:#fff;
  color:#333;
  cursor:pointer;
  flex-shrink:0;
}

.drawHistoryList{
  padding:0 12px 12px 12px;
}
.drawHistoryBlock{
  margin-top:14px;
  padding-bottom:14px;
  border-bottom:1px solid rgba(234,217,209,.9);
}
.drawHistoryBlock:first-child{
  margin-top:8px;
}
.drawHistoryBlock:last-child{
  border-bottom:0;
  padding-bottom:4px;
}
.drawHistoryIssueLine{
  margin-bottom:8px;
}

/* 首页顶部全局标题不需要时隐藏（每个资料类型由子卡片标题负责） */
.homeTopCardHead{
  display:none;
}

/* 每个资料类型子卡片（收起/展开、独立标题） */
.materialSubCard{
  margin-top:10px;
  border:1px solid var(--line);
  border-radius:16px;
  background:transparent;
  box-shadow:var(--shadow);
  overflow:hidden;
}

/* Custom homepage cards: no title bar, no frame — image flush to content width */
.materialSubCard.materialSubCard--customCard{
  margin-top:10px;
  border:0;
  border-radius:0;
  box-shadow:none;
  background:transparent;
  overflow:visible;
}
.materialSubBody.materialSubBody--customCard{
  padding:0;
  background:transparent;
  overflow:visible;
}
.homeCustomCardComposite{
  position:relative;
  width:100%;
  line-height:0;
  container-type:inline-size;
  container-name:homecard;
  overflow:visible;
}
.homeCustomCardCompositeImg,
.homeCustomCardComposite .matTruthRenderedImg{
  width:100%;
  height:100%;
  display:block;
  vertical-align:top;
  object-fit:fill;
}
.homeCustomCardQuickNavHost--above{
  margin-bottom:10px;
  container-type:inline-size;
  width:100%;
}
/* Global .ruleNavWrap has horizontal padding; custom-card button grid uses layer.box width exactly (e.g. 2*168+gap). Padding would shrink inner width and cause overflow/scroll vs preview. */
.homeCustomCardQuickNavHost .ruleNavWrap{
  padding:0;
}
.homeCustomCardQuickNavHost--above .ruleNavWrap{
  margin-bottom:0;
  max-width:100%;
  overflow-x:hidden;
}
.homeCustomCardQuickNavHost--above .ruleNavRow{
  min-width:min-content;
}
/* Same coordinate system as layers in the JPEG: box is a fixed rect on canvas; no flex shrink / no inner scroll. */
.homeCustomCardQuickNavHost--overlay{
  position:absolute;
  z-index:2;
  margin:0;
  box-sizing:border-box;
  display:block;
  pointer-events:auto;
  overflow:visible;
  /* So cqw in .homeQuickNavCardStrip--fromCard resolves vs overlay width (matches JPEG box), not viewport */
  container-type:inline-size;
}
.homeCustomCardQuickNavHost--overlay .ruleNavWrap{
  width:100%;
  margin-bottom:0;
  max-width:100%;
  overflow:visible;
}
.homeCustomCardQuickNavHost--overlay .ruleNavRow{
  min-width:0;
}
/*
 * button_component overlay host: no extra chrome; each <button> paints editor-matched pills.
 */
.homeCustomCardQuickNavHost--overlay[data-is-button-component="true"]{
  background:transparent;
  border-radius:0;
  padding:0;
  display:flex;
  align-items:flex-start;
  justify-content:flex-start;
  overflow:visible;
}
.homeCustomCardPrevDrawResultHost{
  position:absolute;
  z-index:2;
  margin:0;
  box-sizing:border-box;
  display:block;
  pointer-events:auto;
  overflow:visible;
  background:#ffffff;
  border-radius:14px;
  padding:12px 16px;
  box-shadow:0 4px 12px rgba(0,0,0,.08);
}
.homeCustomCardPrevDrawResultHost .rowBetween{
  display:flex;
  justify-content:space-between;
  align-items:center;
  margin-bottom:16px;
}
.homeCustomCardPrevDrawResultHost .issueLine{
  font-size:15px;
  font-weight:600;
  color:#1f2937;
}
.homeCustomCardPrevDrawResultHost .issue{
  color:#f59e0b;
  font-weight:700;
}
.homeCustomCardPrevDrawResultHost .linkGold{
  font-size:12px;
  color:#f59e0b;
  text-decoration:none;
  cursor:pointer;
}
.homeCustomCardPrevDrawResultHost .linkGold:hover{
  text-decoration:underline;
}
.homeCustomCardPrevDrawResultHost .balls{
  margin-top:0;
}
.homeCustomCardCountdownHost{
  position:absolute;
  z-index:2;
  margin:0;
  box-sizing:border-box;
  display:block;
  pointer-events:auto;
  overflow:visible;
}
.homeCustomCardCountdownHost .countdownCard{
  margin-top:0;
  width:100%;
  height:100%;
  box-sizing:border-box;
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:12px;
  padding:12px;
}
.homeCustomCardCountdownHost .cdLeft{
  display:flex !important;
  flex-direction:column !important;
  gap:4px;
  flex:1;
  min-width:0;
  align-items:flex-start;
}
.homeCustomCardCountdownHost .cdTitle{
  font-weight:900;
  white-space:normal !important;
  word-break:break-word;
  overflow-wrap:break-word;
  line-height:1.3;
}
.homeCustomCardCountdownHost .cdSub{
  font-size:12px;
  color:var(--muted);
  white-space:normal !important;
  word-break:break-word;
  overflow-wrap:break-word;
  line-height:1.3;
}
.homeCustomCardCountdownHost .cdTime{
  font-variant-numeric:tabular-nums;
  font-weight:900;
  font-size:32px;
  letter-spacing:2px;
  color:#1f2937;
  flex-shrink:0;
}
.homeCustomCardNoticeHost{
  position:absolute;
  z-index:2;
  margin:0;
  box-sizing:border-box;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  pointer-events:auto;
  overflow:visible;
  background:linear-gradient(90deg, rgba(230,58,58,.06), rgba(255,255,255,.9));
  border-radius:14px;
  padding:12px 16px;
  border:1px solid rgba(230,58,58,.15);
  box-shadow:0 4px 12px rgba(0,0,0,.06);
}
.homeCustomCardNoticeHost::after{
  content:'';
  position:absolute;
  bottom:0;
  left:20%;
  right:20%;
  height:2px;
  background:linear-gradient(90deg, transparent, rgba(230,58,58,.3), transparent);
  border-radius:1px;
}
.homeCustomCardNoticeHost .notice-text{
  flex:1;
  min-width:0;
}
.homeCustomCardNoticeHost .notice-title{
  font-size:16px;
  font-weight:700;
  color:#1f2937;
  margin-bottom:8px;
}
.homeCustomCardNoticeHost .notice-content{
  font-size:14px;
  color:#6b7280;
  line-height:1.5;
  display:block;
}
.homeCustomCardNoticeHost .notice-arrow{
  font-size:24px;
  color:#9ca3af;
  flex-shrink:0;
}
.homeCustomCardBannerHost,
.homeCustomCardBannerHost--overlay,
.homeCustomCardBannerHost--above{
  position:absolute;
  z-index:2;
  margin:0;
  box-sizing:border-box;
  pointer-events:auto;
  overflow:visible;
  border-radius:12px;
}
.homeCustomCardBannerHost--above{
  position:relative;
  margin-top:10px;
}
.homeCustomCardBannerHost .banner{
  margin-top:0;
  border-radius:14px;
  overflow:hidden;
  border:1px solid var(--line);
  box-shadow:var(--shadow);
  background:linear-gradient(180deg, rgba(230,58,58,.08), rgba(230,58,58,.02));
  display:flex;
  flex-direction:column;
  gap:0;
  padding:0;
}
.homeCustomCardBannerHost .bannerTop{
  padding:10px 12px;
  background:linear-gradient(90deg, var(--brand), #ff5b5b);
  color:#fff;
  font-weight:800;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.homeCustomCardBannerHost .bannerTop small{
  font-weight:700;
  opacity:.92;
}
.homeCustomCardBannerHost .bannerMid{
  padding:10px 12px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.homeCustomCardBannerHost .ad{
  flex:1;
  background:linear-gradient(90deg, rgba(59,130,246,.12), rgba(34,197,94,.10));
  border:1px dashed rgba(201,154,46,.35);
  border-radius:12px;
  padding:10px 10px;
  min-height:46px;
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.homeCustomCardBannerHost .adTitle{
  font-weight:900;
  color:#1f3b7a;
  display:block;
  line-height:1.4;
}
.homeCustomCardBannerHost .adSub{
  font-size:12px;
  color:var(--muted);
  margin-top:2px;
  display:block;
  line-height:1.4;
}
.homeCustomCardOverlaySpacer{
  width:100%;
  height:0;
  margin:0;
  padding:0;
  border:0;
  flex-shrink:0;
  pointer-events:none;
}

/*
 * button_component strips: layout fontSize is in canvas px; do not use --fromCard + cqw (needs container;
 * without it, font-size can explode while .ruleNavBtn still applies 12px — double “ghost + tiny” text).
 */
.homeQuickNavCardStrip--buttonText .ruleNavBtn--hqCard{
  box-sizing:border-box;
  -webkit-appearance:none;
  appearance:none;
  margin:0;
  padding:max(4px, calc(var(--btn-font-px, 14px) * 0.28)) max(8px, calc(var(--btn-font-px, 14px) * 0.45));
  font-size:var(--btn-font-px, 14px);
  font-weight:var(--hq-fw, 600);
  color:var(--hq-color, #111827);
  font-family:var(--btn-ff, system-ui, sans-serif);
  background:#ffffff;
  border:1px solid #d1d5db;
  cursor:pointer;
  line-height:1.25;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:100%;
  outline:none;
  box-shadow:none;
  border-radius:8px;
}
.homeQuickNavCardStrip--buttonText .ruleNavBtn--hqCard:not(.ruleNavBtn--thumbRow){
  display:inline-flex;
  align-items:center;
  justify-content:center;
  text-align:center;
}
/* Firefox: inner focus ring/padding otherwise stacks with our border (double pill) */
.homeQuickNavCardStrip--buttonText .ruleNavBtn--hqCard::-moz-focus-inner{
  border:0;
  padding:0;
}
.homeQuickNavCardStrip--buttonText .ruleNavBtn--hqCard:focus:not(:focus-visible){
  outline:none;
}
.homeQuickNavCardStrip--buttonText .ruleNavBtn--hqCard.active[data-as="outline_red"]{
  border-color:#ef4444;
  color:#dc2626;
  background:#fef2f2;
}
.homeQuickNavCardStrip--buttonText .ruleNavBtn--hqCard.active[data-as="text_highlight"]{
  border-color:#ef4444;
  color:#dc2626;
  background:#ffffff;
}
.homeQuickNavCardStrip--buttonText .ruleNavBtn--hqCard.active[data-as="solid_blue"]{
  background:#2563eb;
  border-color:#1d4ed8;
  color:#fff;
}
.homeQuickNavCardStrip--buttonText .ruleNavBtn--hqCard.active[data-as="gradient_warm"]{
  background-image:linear-gradient(180deg,#fb923c,#ef4444);
  background-color:transparent;
  border-color:#dc2626;
  color:#fff;
}
.homeQuickNavCardStrip--buttonText .ruleNavBtn--hqCard.active[data-as="gradient_ocean"]{
  background-image:linear-gradient(90deg,#0ea5e9,#6366f1);
  background-color:transparent;
  border-color:#4338ca;
  color:#fff;
}
.homeQuickNavCardStrip--buttonText .ruleNavBtn--hqCard.ruleNavBtn--thumbRow{
  display:flex;
  flex-direction:row;
  align-items:center;
  white-space:normal;
  justify-content:flex-start;
  text-align:left;
  gap:max(6px, calc(var(--btn-font-px, 14px) * 0.22));
  padding:max(4px, calc(var(--btn-font-px, 14px) * 0.18)) max(8px, calc(var(--btn-font-px, 14px) * 0.28)) max(4px, calc(var(--btn-font-px, 14px) * 0.18)) max(4px, calc(var(--btn-font-px, 14px) * 0.1)) !important;
}
.homeQuickNavCardStrip--buttonText .ruleNavBtn__thumbImg{
  width:max(36px, calc(var(--btn-font-px, 14px) * 2.6));
  height:max(36px, calc(var(--btn-font-px, 14px) * 2.6));
}
.homeQuickNavCardStrip--buttonText .ruleNavBtn__title{
  font-weight:600;
  color:var(--hq-color, #111827);
  line-height:1.25;
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  font-size:max(10px, calc(var(--btn-font-px, 14px) * 0.42));
}
.homeQuickNavCardStrip--buttonText .ruleNavBtn__issue{
  font-size:max(9px, calc(var(--btn-font-px, 14px) * 0.34));
  font-weight:500;
  color:rgba(100,116,139,.98);
}
.homeQuickNavCardStrip--buttonText .ruleNavBtn--hqCard{
  font-size:var(--btn-font-px, 14px);
  font-weight:var(--hq-fw, 600);
  font-family:var(--btn-ff, system-ui, sans-serif);
}
.homeQuickNavCardStrip--buttonText .ruleNavBtn--hqToggle{
  flex-shrink:0;
  color:var(--hq-color, #2563eb);
  border-color:rgba(37,99,235,.35);
  background:rgba(255,255,255,.95);
}
.homeQuickNavCardStrip--buttonText .ruleNavBtn--hqCard.active.actionBtnDynamic{
  animation:hqActionBtnPulse 1.2s ease-in-out infinite;
  transform-origin:center center;
}
.homeQuickNavCardStrip--buttonText.homeQuickNavCardStrip--opaqueOnBitmap .ruleNavBtn--hqCard.active.actionBtnDynamic{
  animation:hqActionBtnPulseOpaque 1.2s ease-in-out infinite;
  transform-origin:center center;
}
/* Card overlay: match editor (top-aligned in layer.box); no scale transform on pulse */
.homeCustomCardQuickNavHost--overlay .homeQuickNavCardStrip--buttonText .ruleNavBtn--hqCard.active.actionBtnDynamic{
  animation:hqActionBtnPulseBorder 1.2s ease-in-out infinite;
}
@keyframes hqActionBtnPulseBorder{
  0%,100%{ filter:none; }
  50%{ filter:drop-shadow(0 0 6px rgba(14,165,233,.45)); }
}

/*
 * Button strip over custom-card JPEG: semi-transparent pills let bitmap / DCT blocks / under-paint read through
 * as square artifacts behind glyphs. Opaque fills + system font in DOM (see home.js) keep only the real <button> text visible.
 */
.homeQuickNavCardStrip--buttonText.homeQuickNavCardStrip--opaqueOnBitmap .ruleNavBtn--hqCard:not(.active){
  text-shadow:none;
  background-color:#ffffff;
  background-image:none;
  border:1px solid #d1d5db;
  box-shadow:none;
  color:var(--hq-color,#111827);
}
.homeQuickNavCardStrip--buttonText.homeQuickNavCardStrip--opaqueOnBitmap .ruleNavBtn--hqCard.active[data-as="outline_red"]{
  text-shadow:none;
  background-color:#fef2f2;
  background-image:none;
  color:#dc2626;
  border:1px solid #ef4444;
  box-shadow:none;
}
.homeQuickNavCardStrip--buttonText.homeQuickNavCardStrip--opaqueOnBitmap .ruleNavBtn--hqCard.active[data-as="text_highlight"]{
  text-shadow:none;
  background-color:#ffffff;
  color:#dc2626;
  border:1px solid #ef4444;
  box-shadow:none;
}
.homeQuickNavCardStrip--buttonText.homeQuickNavCardStrip--opaqueOnBitmap .ruleNavBtn--hqCard.active[data-as="solid_blue"]{
  background:#2563eb;
  background-image:none;
  border-color:#1d4ed8;
  color:#fff;
  box-shadow:none;
}
.homeQuickNavCardStrip--buttonText.homeQuickNavCardStrip--opaqueOnBitmap .ruleNavBtn--hqCard.active[data-as="gradient_warm"]{
  background-image:linear-gradient(180deg,#fb923c,#ef4444);
  background-color:transparent;
  border-color:#dc2626;
  color:#fff;
  box-shadow:none;
}
.homeQuickNavCardStrip--buttonText.homeQuickNavCardStrip--opaqueOnBitmap .ruleNavBtn--hqCard.active[data-as="gradient_ocean"]{
  background-image:linear-gradient(90deg,#0ea5e9,#6366f1);
  background-color:transparent;
  border-color:#4338ca;
  color:#fff;
  box-shadow:none;
}
.homeQuickNavCardStrip--buttonText.homeQuickNavCardStrip--opaqueOnBitmap .ruleNavBtn__thumbImg{
  background-color:#cbd5e1;
}

/* Custom card: match editor fontSize/color (scaled with card width via cqw) */
.homeQuickNavCardStrip--fromCard .ruleNavBtn--hqCard{
  padding:max(4px, calc(var(--hq-fs-frac, 0.064) * 32cqw)) max(8px, calc(var(--hq-fs-frac, 0.064) * 50cqw));
  font-size:max(11px, calc(var(--hq-fs-frac, 0.064) * 100cqw));
  font-weight:var(--hq-fw, 600);
  color:var(--hq-color, #111827);
  font-family:var(--hq-ff, system-ui, sans-serif);
  background:rgba(255,255,255,.92);
  border:1px solid rgba(17,24,39,.18);
  cursor:pointer;
  line-height:1.25;
  white-space:nowrap;
}
.homeQuickNavCardStrip--fromCard .ruleNavBtn--hqCard.active{
  border-color:rgba(230,58,58,.55);
  color:var(--hq-color, #111827);
  background:rgba(255,255,255,.88);
}
/* Image-material: left thumb + right two-line text (title / 第N期) */
.homeQuickNavCardStrip--fromCard .ruleNavBtn--hqCard.ruleNavBtn--thumbRow{
  display:flex;
  flex-direction:row;
  align-items:center;
  white-space:normal;
  justify-content:flex-start;
  text-align:left;
  gap:max(6px, calc(var(--hq-fs-frac, 0.064) * 24cqw));
  padding:max(4px, calc(var(--hq-fs-frac, 0.064) * 20cqw)) max(8px, calc(var(--hq-fs-frac, 0.064) * 32cqw)) max(4px, calc(var(--hq-fs-frac, 0.064) * 20cqw)) max(4px, calc(var(--hq-fs-frac, 0.064) * 10cqw)) !important;
}
.homeQuickNavCardStrip--fromCard .ruleNavBtn--hqCard.ruleNavBtn--thumbRow.active{
  background:rgba(255,255,255,.95);
}
/* Default size; custom-card `button_component` strips set width/height inline from ruleOptions.thumbWidth/thumbHeight (same math as tool.js overlay). */
.ruleNavBtn__thumbImg{
  flex-shrink:0;
  width:max(36px, calc(var(--hq-fs-frac, 0.064) * 105cqw));
  height:max(36px, calc(var(--hq-fs-frac, 0.064) * 105cqw));
  border-radius:8px;
  background-size:cover;
  background-position:center;
  background-color:rgba(148,163,184,.3);
}
.ruleNavBtn__textCol{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:center;
  min-width:0;
  flex:1 1 auto;
  gap:2px;
}
.homeQuickNavCardStrip--fromCard .ruleNavBtn__title{
  font-weight:600;
  color:var(--hq-color, #111827);
  line-height:1.25;
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
}
.homeQuickNavCardStrip--fromCard .ruleNavBtn__issue{
  font-size:max(10px, calc(var(--hq-fs-frac, 0.064) * 82cqw));
  font-weight:500;
  color:rgba(100,116,139,.98);
}

@keyframes hqActionBtnPulse{
  0%{ transform:scale(1); box-shadow:0 0 0 0 rgba(230,58,58,0); }
  50%{ transform:scale(1.02); box-shadow:0 0 16px rgba(230,58,58,.4); }
  100%{ transform:scale(1); box-shadow:0 0 0 0 rgba(230,58,58,0); }
}
@keyframes hqActionBtnPulseOpaque{
  0%{ transform:scale(1); box-shadow:0 0 0 1px rgba(230,58,58,.52), 0 0 0 0 rgba(230,58,58,0); }
  50%{ transform:scale(1.02); box-shadow:0 0 0 1px rgba(230,58,58,.52), 0 0 16px rgba(230,58,58,.4); }
  100%{ transform:scale(1); box-shadow:0 0 0 1px rgba(230,58,58,.52), 0 0 0 0 rgba(230,58,58,0); }
}

.homeQuickNavCardStrip--fromCard .ruleNavBtn--hqCard.active.actionBtnDynamic{
  animation:hqActionBtnPulse 1.2s ease-in-out infinite;
}
/* Beat .ruleNavBtn.active font-size/color for card-driven typography */
.homeQuickNavCardStrip--fromCard .ruleNavBtn--hqCard,
.homeQuickNavCardStrip--fromCard .ruleNavBtn--hqCard.active{
  font-size:max(11px, calc(var(--hq-fs-frac, 0.064) * 100cqw));
  font-weight:var(--hq-fw, 600);
  color:var(--hq-color, #111827);
  font-family:var(--hq-ff, system-ui, sans-serif);
}
.homeQuickNavCardStrip--fromCard .ruleNavBtn--hqToggle{
  flex-shrink:0;
  color:var(--hq-color, #2563eb);
  border-color:rgba(37,99,235,.35);
  background:rgba(255,255,255,.95);
}

.materialSubCardHead{
  padding:12px 12px;
}

/* 子卡片标题居中 + 淡橙背景 */
.materialCardHead{
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  gap:8px;
  background:rgba(253,231,217,.95);
}

.materialCardLotteryName{
  color:#f97316;
  font-weight:900;
}

.materialSubActionRow{
  background:rgba(253,231,217,.95);
  padding:10px 12px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  border-top:0;
  border-bottom:1px solid rgba(249,115,22,.25);
}

.materialSubHistoryLink{
  color:#f97316;
  font-weight:900;
  cursor:pointer;
}

.materialSubHistoryBtn{
  background:transparent;
  border:0;
  padding:0;
  margin:0;
  color:#f97316;
  font-weight:900;
  cursor:pointer;
  white-space:nowrap;
}

.materialSubToggleBtn{
  border-color:rgba(249,115,22,.35);
  background:rgba(253,231,217,.95);
  color:#f97316;
  box-shadow:none;
}

/* 首页“查看更多/收起”按钮淡橙底色 */
.materialExpandBtn{
  border-color:rgba(249,115,22,.35);
  background:rgba(253,231,217,.95);
  color:#f97316;
  box-shadow:none;
}

.materialSubBody{
  background:rgba(255,255,255,.98);
  padding:0 12px 12px 12px;
}
/* Image materials: flush rendered JPEG to the orange action row (no bottom gutter). */
.materialSubBody.matImageTruthHost,
.list.matImageTruthHost{
  padding-bottom:0;
}

/* 统一“资料标题”样式：规则名胶囊底色 + 同色括号 */
.materialTitleRule{
  display:inline-block;
  padding:2px 10px;
  border-radius:999px;
  border:1px solid var(--line);
  background:rgba(255,255,255,.75);
  color:#111827;
  font-weight:900;
}
.materialTitleSep{
  color:rgba(107,114,128,1);
  font-weight:900;
  margin:0 2px;
}
.subTabs{
  display:flex;
  gap:0;
  border-top:1px solid var(--line);
}
.subTab{
  flex:1;
  padding:10px 6px;
  font-weight:800;
  text-align:center;
  cursor:pointer;
  background:rgba(255,255,255,.8);
}
.subTab.active{
  background:linear-gradient(180deg, rgba(230,58,58,.12), rgba(230,58,58,.04));
  border-bottom:2px solid rgba(230,58,58,.60);
}
.subBar{
  padding:10px 10px;
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  border-top:1px solid var(--line);
}
.chip{
  border:1px solid var(--line);
  background:rgba(255,255,255,.9);
  border-radius:999px;
  padding:6px 10px;
  font-size:12px;
  color:var(--muted);
}
.list{
  border-top:1px solid var(--line);
  padding:10px 12px 12px 12px;
  color:var(--muted);
  font-size:12px;
  line-height:1.45;
}

.materialHomeList{
  border-top:1px solid var(--line);
  padding:10px 0 12px 0;
}

.ruleNavWrap{
  padding:10px 10px 0 10px;
}

.ruleNavRow{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}

.ruleNavBtn{
  border:1px solid var(--line);
  background:rgba(255,255,255,.92);
  padding:6px 10px;
  font-weight:900;
  font-size:12px;
  color:var(--muted);
  cursor:pointer;
  border-radius:8px;
}

.ruleNavBtn.active{
  border-color:rgba(230,58,58,.55);
  color:rgba(230,58,58,1);
  background:rgba(230,58,58,.10);
}
.homeCustomCardQuickNavHost--overlay .homeQuickNavCardStrip--buttonText .ruleNavBtn--hqCard.active[data-as="gradient_ocean"]{
  background-image:linear-gradient(90deg,#0ea5e9,#6366f1);
  background-color:transparent;
  border-color:#4338ca;
  color:#fff;
}
.homeCustomCardQuickNavHost--overlay .homeQuickNavCardStrip--buttonText .ruleNavBtn--hqCard.active[data-as="gradient_warm"]{
  background-image:linear-gradient(180deg,#fb923c,#ef4444);
  background-color:transparent;
  border-color:#dc2626;
  color:#fff;
}
.homeCustomCardQuickNavHost--overlay .homeQuickNavCardStrip--buttonText .ruleNavBtn--hqCard.active[data-as="solid_blue"]{
  background:#2563eb;
  background-image:none;
  border-color:#1d4ed8;
  color:#fff;
}
.homeCustomCardQuickNavHost--overlay .homeQuickNavCardStrip--buttonText .ruleNavBtn--hqCard.active[data-as="outline_red"]{
  background:#fef2f2;
  background-image:none;
  border-color:#ef4444;
  color:#dc2626;
}
.homeCustomCardQuickNavHost--overlay .homeQuickNavCardStrip--buttonText .ruleNavBtn--hqCard:not(.active){
  background:#ffffff;
  border-color:#d1d5db;
  color:var(--hq-color,#111827);
}

.ruleNavBtn.active[data-as="solid_blue"]{
  background:#2563eb;border-color:#1d4ed8;color:#fff;
}
.ruleNavBtn.active[data-as="gradient_warm"]{
  background-image:linear-gradient(180deg,#fb923c,#ef4444);border-color:#dc2626;color:#fff;
}
.ruleNavBtn.active[data-as="gradient_ocean"]{
  background-image:linear-gradient(90deg,#0ea5e9,#6366f1);border-color:#4338ca;color:#fff;
}
.ruleNavBtn.active[data-as="text_highlight"]{
  color:#d97706;border-color:rgba(245,158,11,.8);
}
.ruleNavBtn.active[data-as="outline_red"]{
  background:transparent;border-color:rgba(230,58,58,.85);
}

.ruleNavBtn.active[data-as="solid_blue"].ruleNavBtn--thumbRow{
  border-color:#1d4ed8;box-shadow:0 0 0 2px rgba(37,99,235,.55);
}
.ruleNavBtn.active[data-as="gradient_warm"].ruleNavBtn--thumbRow{
  border-color:#dc2626;box-shadow:0 0 0 2px rgba(220,38,38,.5);
}
.ruleNavBtn.active[data-as="gradient_ocean"].ruleNavBtn--thumbRow{
  border-color:#4338ca;box-shadow:0 0 0 2px rgba(67,56,202,.5);
}
.ruleNavBtn.active[data-as="text_highlight"].ruleNavBtn--thumbRow{
  border-color:rgba(245,158,11,.95);box-shadow:0 0 0 2px rgba(245,158,11,.45);
}
.ruleNavBtn.active[data-as="outline_red"].ruleNavBtn--thumbRow{
  border-color:rgba(230,58,58,.85);box-shadow:0 0 0 2px rgba(230,58,58,.45);
}

.ruleNavMoreRow{
  margin-top:10px;
}

.homeRuleSection{
  border-top:1px solid var(--line);
  padding:12px 0;
}

.homeRuleSection:first-child{
  border-top:0;
  padding-top:0;
}

.homeRuleSectionHead{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
  margin-bottom:8px;
}

.homeRuleName{
  font-weight:900;
  color:#111827;
  display:inline-block;
  padding:6px 10px;
  border-radius:999px;
  border:1px solid rgba(249,115,22,.35);
  background:rgba(253,231,217,.95);
  white-space:nowrap;
}

.homeRuleCodeHint{
  font-size:12px;
  color:var(--muted);
}

.homeRuleList{
  display:flex;
  flex-direction:column;
  gap:0;
}

.materialPager{
  padding: 10px 12px 14px 12px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}

.materialPager .pagerInfo{
  color:var(--muted);
  font-weight:800;
  font-size:12px;
}

.matRow{
  display:flex;
  align-items:stretch;
  justify-content:space-between;
  gap:10px;
  /* 上下留白放在子列上，否则 border-right 画在子项上够不着行顶/行底，竖线会“断” */
  padding:0;
  border-bottom:1px solid var(--line);
}

.matIssue{
  min-width:64px;
  font-weight:900;
  color:var(--gold);
  font-size:12px;
  border-right:1px solid var(--line);
  padding:8px 8px 8px 0;
  box-sizing:border-box;
}

.matContent{
  flex:1;
  min-width:0; /* 允许 flex 子项在手机窄屏下正确收缩，避免把右侧挤出屏幕 */
  white-space:pre-line;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  color:var(--text);
  font-size:12px;
  line-height:1.45;
  word-break:break-word;
  text-align:center;
  border-right:1px solid var(--line);
  padding:8px 6px;
  box-sizing:border-box;
}

/* 布局类文字资料：与编辑器分段预览一致（segments 内联字号/颜色；保留换行与行首空格） */
.matContent.matContentLayoutSegments{
  container-type:inline-size;
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;
  /* 换行由 <br> 元素控制（换行组件）；不在逗号/空格处自动折行 */
  white-space:pre;
  word-break:normal;
  overflow-wrap:normal;
  text-align:left;
}
.matContent.matContentLayoutSegments .matSeg{
  display:inline;
  vertical-align:baseline;
  white-space:inherit;
}

/* 36码大包特：绿色字体 + 每行8个号码 */
.matContent36{
  color:#16a34a;
  font-size:11px;
  font-weight:900;
  line-height:1.15;
  text-align:left;
  /* 强制严格按 app.js 的换行显示，不允许移动端再自动折行 */
  white-space:pre;
  word-break:normal;
  overflow-wrap:normal;
  max-width:100%;
  overflow:hidden;
}

/* 四肖十五码：黑色数字 + 两行排版 */
.matContent15{
  color:#111827;
  font-size:11px;
  font-weight:900;
  line-height:1.15;
  text-align:left;
  /* 防止四肖十五码在同一行内被浏览器自动换行（否则会从2行变3行） */
  white-space:pre;
  word-break:normal;
  overflow-wrap:normal;
  max-width:100%;
  overflow:hidden;
}

/* 单双中特：按图2的“精准(橙色) + 【单数/双数】(黑色)”风格 */
.matOddEvenContent{
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;
  color:#111827;
  font-size:16px;
  font-weight:900;
  line-height:1.35;
  white-space:pre-line;
  text-align:center;
}
.matOddEvenPrefix{
  color:#f97316;
}
.matOddEvenBody{
  color:#dc2626;
}

/* 三头中特：按你截图的“绿色前缀 + 【红数字 + 蓝色头】”样式 */
.matThreeHeadContent{
  font-size:14px;
  font-weight:900;
  line-height:1.2;
  white-space:pre;
  text-align:center;
}
.matThreeHeadPrefix{
  color:#16a34a;
  margin-right:8px;
}
.matThreeHeadBody{
  color:#dc2626;
}
.matThreeHeadDigit{
  color:#dc2626;
}
.matThreeHeadHead{
  color:#dc2626;
}

/* 一句爆平特：成语平特黄 + 【成语】绿 */
.matIdiomContent{
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;
  font-weight:900;
  font-size:14px;
  white-space:pre-line;
}
.matIdiomPrefix{
  color:#eab308;
}
.matIdiomBracket{
  color:#16a34a;
}

/* 图片资料：底图 + 叠字；layout 来自 dbc_material_categories.cfg_json + materials/layoutNormalize.js */
.matContent.matContentTruth{
  font-family: "Microsoft YaHei","PingFang SC",SimHei,"Noto Sans SC",sans-serif;
  white-space:normal;
  text-align:left;
  padding:10px 6px;
}
.matTruthCanvasRoot{
  width:100%;
  max-width:none;
  margin:0 auto;
  min-width:0;
}
.matTruthCanvasRoot img.matTruthRenderedImg{
  width:100%;
  max-width:100%;
  height:auto;
  display:block;
}
.matTruthCanvas{
  position:relative;
  width:100%;
  min-width:0;
  overflow:hidden;
  background:transparent;
}
/* aspect-ratio set inline: 800/600 fallback, or photo iw/ih when .matTruthCanvasPhoto */
.matTruthCanvasPhoto{
  display:block;
}
/* Photo anchor: same rect as tool image layer; text is positioned in % of this box so scaling matches one bitmap */
.matTruthAnchor{
  position:absolute;
  z-index:0;
  box-sizing:border-box;
}
.matTruthAnchor .matTruthLayerImg{
  position:absolute;
  left:0;
  top:0;
  width:100%;
  height:100%;
  object-fit:fill;
  transform:none;
  display:block;
  pointer-events:none;
  user-select:none;
}
.matTruthLayerImg{
  position:absolute;
  object-fit:fill;
  display:block;
  pointer-events:none;
  user-select:none;
}
.matTruthLayerText{
  position:absolute;
  z-index:1;
  font-weight:900;
  line-height:1;
  white-space:nowrap;
  pointer-events:none;
  user-select:none;
}

/* Image material layout: issue badge + full-width image + hit footer (non-3-column matRow) */
.matTruthFigure1{
  display:flex;
  flex-direction:column;
  gap:10px;
  width:100%;
  min-width:0;
}
/* Undo parent horizontal padding so the composite fills the white/content area edge-to-edge */
.materialSubBody .matTruthFigure1,
.list .matTruthFigure1{
  box-sizing:border-box;
  margin-left:-12px;
  margin-right:-12px;
  width:calc(100% + 24px);
  max-width:none;
  padding-top:4px;
}
.matTruthIssueTabs{
  display:flex;
  flex-wrap:nowrap;
  gap:8px;
  overflow-x:auto;
  overflow-y:hidden;
  -webkit-overflow-scrolling:touch;
  padding:2px 12px 6px;
  scrollbar-width:thin;
}
.matTruthTabBtn{
  flex:0 0 auto;
  padding:8px 14px;
  border-radius:999px;
  border:1px solid rgba(0,0,0,.08);
  background:#f8f8f8;
  color:#374151;
  font-weight:800;
  font-size:13px;
  font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  cursor:pointer;
}
.matTruthTabBtn.active{
  background:linear-gradient(180deg,#fde68a,#fcd34d);
  border-color:rgba(245,158,11,.45);
  color:#78350f;
  box-shadow:0 1px 0 rgba(255,255,255,.6) inset;
}
.matTruthTabPanel{
  width:100%;
  min-width:0;
}
.matTruthTabPanel .matTruthCanvasRoot{
  margin:0 auto;
}
.matTruthHitBar{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  padding:4px 12px 0;
}

/* 精准六尾：前缀黑 + 【数据】红 */
.matSixTailContent{
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;
  font-weight:900;
  font-size:14px;
}
.matSixTailPrefix{
  color:#111827;
}
.matSixTailBracket{
  color:#dc2626;
}

/* 一肖一码：多行全红 */
.matOneNineZodiacContent{
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;
  font-weight:900;
  font-size:14px;
  color:#dc2626;
  white-space:pre-line;
  text-align:left;
}

/* 稳杀5码：前缀紫 + 【数据】红 */
.matKillFiveContent{
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;
  font-weight:900;
  font-size:14px;
}
.matKillFivePrefix{
  color:#9333ea;
}
.matKillFiveBracket{
  color:#dc2626;
}

/* 必中两波：前缀黑 + 【数据】红 */
.matTwoWaveContent{
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;
  font-weight:900;
  font-size:14px;
}
.matTwoWavePrefix{
  color:#111827;
}
.matTwoWaveBracket{
  color:#dc2626;
}

/* 平特一肖：前缀蓝 + 【三同肖】紫 */
.matFlatZodiacContent{
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;
  font-weight:900;
  font-size:14px;
}
.matFlatZodiacPrefix{
  color:#2563eb;
}
.matFlatZodiacBracket{
  color:#9333ea;
}

.matHit{
  min-width:96px;
  flex:0 0 96px;
  text-align:right;
  font-weight:900;
  font-size:12px;
  white-space:nowrap;
  padding:8px 0;
  box-sizing:border-box;
  display:flex;
  align-items:center;
  justify-content:flex-end;
}

.matHitTag{
  display:inline-block;
  padding:3px 6px;
  border-radius:999px;
  border:1px solid var(--line);
  background:rgba(255,255,255,.85);
  font-size:12px;
  white-space:nowrap;
  max-width:100%;
}

@media (max-width:520px){
  .matRow{gap:4px}
  .backTopBtn{
    right:14px;
    bottom:calc(90px + env(safe-area-inset-bottom));
    width:60px;
    height:60px;
  }
  .backTopBtn.navBarHiddenPosition{
    bottom:calc(24px + env(safe-area-inset-bottom));
  }
  .materialSubBody.materialSubBody--customCard{
    padding:0;
  }
  .materialSubBody{
    padding:0 8px 10px 8px;
  }
  .materialSubBody.matImageTruthHost{
    padding-bottom:0;
  }
  .materialSubBody .matTruthFigure1{
    margin-left:-8px;
    margin-right:-8px;
    width:calc(100% + 16px);
  }
  .matIssue{
    min-width:52px;
    font-size:11px;
    padding:6px 8px 6px 0;
  }
  .matContent{
    font-size:11px;
    line-height:1.25;
    padding:6px 6px;
    max-width:100%;
    overflow:hidden;
  }
  .matHit{
    min-width:72px;
    flex:0 0 72px;
    font-size:10px;
    padding:6px 0;
  }
  .matHitTag{
    max-width:100%;
    overflow:hidden;
    text-overflow:clip;
  }
  .matHitTag{
    padding:2px 4px;
    font-size:10px;
  }
}

.matHitTag.ok{
  color:#16a34a;
  border-color:rgba(22,163,74,.35);
  background:rgba(22,163,74,.08);
}

.matHitTag.bad{
  color:#dc2626;
  border-color:rgba(220,38,38,.35);
  background:rgba(220,38,38,.08);
}

.matHitTag.wait{
  color:var(--muted);
}

.page{
  display:none;
}
.page.active{display:block}

.bottomNav{
  position:fixed;
  left:0;right:0;bottom:0;
  padding: 10px 10px calc(10px + env(safe-area-inset-bottom));
  background:linear-gradient(180deg, rgba(255,255,255,.55), rgba(255,255,255,.98));
  border-top:1px solid var(--line);
  box-shadow:0 -10px 22px rgba(18,18,18,.08);
  z-index:30;
}
.navInner{
  max-width:520px;
  margin:0 auto;
  display:flex;
  justify-content:space-around;
  gap:10px;
}
.navBtn{
  border:0;
  background:transparent;
  padding:6px 4px;
  border-radius:12px;
  cursor:pointer;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:4px;
  color:var(--muted);
  font-weight:800;
  font-size:12px;
  flex:1;
  max-width:80px;
}
.navBtn.active{
  color:var(--brand);
  background:rgba(230,58,58,.10);
}
.ico{
  width:22px;height:22px;
  display:block;
}

.backTopBtn{
  position:fixed;
  right:max(16px, calc(50vw - 260px + 16px));
  bottom:calc(192px + env(safe-area-inset-bottom));
  width:64px;
  height:64px;
  padding:0;
  border:0;
  background:transparent;
  cursor:pointer;
  opacity:0;
  visibility:hidden;
  transform:translateY(12px);
  transition:opacity .2s ease, transform .2s ease, visibility .2s ease;
  z-index:40;
}
.backTopBtn.navBarHiddenPosition{
  bottom:calc(24px + env(safe-area-inset-bottom));
}
.backTopBtn.visible{
  opacity:1;
  visibility:visible;
  transform:translateY(0);
}
.backTopBtn img{
  width:100%;
  height:100%;
  display:block;
  object-fit:contain;
}
.backTopBtn:hover{
  transform:translateY(-2px);
}
.backTopBtn.visible:hover{
  transform:translateY(-2px);
}
.backTopBtn:focus-visible{
  outline:2px solid rgba(230,58,58,.55);
  outline-offset:4px;
  border-radius:50%;
}

.meCard{
  margin-top:10px;
  border:1px solid var(--line);
  border-radius:16px;
  background:rgba(255,255,255,.85);
  box-shadow:var(--shadow);
  padding:12px 12px;
}
.meTop{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.meName{font-weight:900}
.meMeta{color:var(--muted);font-size:12px;margin-top:2px}
.meMeta.clickable{
  cursor:pointer;
  text-decoration:underline;
  text-underline-offset:3px;
}
.meMeta.clickable:hover{filter:brightness(.9)}
.meBtns{
  margin-top:10px;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
.meBtn{
  border:1px solid var(--line);
  background:rgba(255,255,255,.95);
  border-radius:14px;
  padding:12px 10px;
  font-weight:900;
  cursor:pointer;
}
.meBtn.danger{
  border-color:rgba(239,68,68,.45);
  color:rgba(239,68,68,1);
  background:rgba(239,68,68,.06);
}

.galleryContainer{
  padding:12px;
}
.gallerySearchBox{
  margin-bottom:12px;
  position:relative;
}
.gallerySearchInput{
  width:100%;
  padding:10px 40px 10px 16px;
  border:1px solid var(--line);
  border-radius:24px;
  font-size:14px;
  outline:none;
  transition:border-color 0.2s, box-shadow 0.2s;
  background:#fff;
}
.gallerySearchInput:focus{
  border-color:rgba(230,58,58,.5);
  box-shadow:0 0 0 3px rgba(230,58,58,.1);
}
.gallerySearchIcon{
  position:absolute;
  right:14px;
  top:50%;
  transform:translateY(-50%);
  color:#94a3b8;
  pointer-events:none;
}
.galleryAlphabetNav{
  display:flex;
  gap:6px;
  margin-bottom:16px;
  overflow-x:auto;
  padding-bottom:4px;
  -webkit-overflow-scrolling:touch;
}
.galleryAlphabetBtn{
  flex-shrink:0;
  min-width:36px;
  height:32px;
  padding:0 8px;
  border:1px solid var(--line);
  border-radius:16px;
  background:#fff;
  font-size:13px;
  font-weight:600;
  color:#64748b;
  cursor:pointer;
  transition:all 0.2s;
}
.galleryAlphabetBtn:hover{
  border-color:rgba(230,58,58,.4);
  color:#e63a3a;
}
.galleryAlphabetBtn.active{
  background:#e63a3a;
  border-color:#e63a3a;
  color:#fff;
}
.galleryMaterialGrid{
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  gap:10px;
}
.galleryMaterialCard{
  display:flex;
  flex-direction:row;
  align-items:center;
  gap:10px;
  padding:10px 12px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:12px;
  box-shadow:var(--shadow);
  cursor:pointer;
  transition:transform 0.15s, box-shadow 0.15s;
  -webkit-tap-highlight-color:transparent;
}
.galleryMaterialCard:hover{
  transform:translateY(-1px);
  box-shadow:0 4px 12px rgba(0,0,0,.08);
}
.galleryMaterialCard:active{
  transform:scale(0.98);
}
.galleryMaterialCard .ruleNavBtn__thumbImg{
  flex-shrink:0;
  width:70px;
  height:70px;
  border-radius:8px;
  background-size:cover;
  background-position:center;
  background-color:rgba(148,163,184,.3);
}
.galleryMaterialCard .ruleNavBtn__textCol{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:center;
  min-width:0;
  flex:1 1 auto;
  gap:4px;
}
.galleryMaterialCard .ruleNavBtn__title{
  font-weight:600;
  font-size:14px;
  color:#111827;
  line-height:1.25;
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.galleryMaterialCard .ruleNavBtn__issue{
  font-size:12px;
  font-weight:500;
  color:rgba(100,116,139,.98);
}
.galleryLoading,
.galleryEmpty{
  grid-column:1 / -1;
  text-align:center;
  padding:40px 12px;
  color:var(--muted);
  font-size:14px;
}
.galleryScrollSentinel{
  grid-column:1 / -1;
  height:1px;
}

