/* ============ 芙蓉律所掼蛋湖大校友会联赛数据查询平台 · 深海军蓝主题 ============ */
:root{
  --felt-900:#001040; --felt-700:#001040; --felt-600:#002080; --felt-100:#E8F0FB;
  /* v67 品牌色由绿改蓝（2026-09-14）：深海军蓝取自发起人宣传图
     server/test-results/human-trial/ad-sample.jpg，sharp 实测该图最深蓝 #03115a、
     主蓝带 #081868·#082888、亮蓝条纹 #1d80ea；与方案给定 #002080／#001040／#2f7fe0 同族。
     --ok-bg／--ok-ink 是「成功／已确认／已完成」的语义绿，按发起人取舍规则保留，与品牌蓝共存。 */
  --ok-bg:#E7F0E9; --ok-ink:#0F5132;
  --paper:#F1F4FA; --card:#FFFFFF;
  --ink:#1E2028; --ink-2:#5A6470; --ink-3:#8C94A2;
  --line:#E1E6EE; --line-2:#CFD6E2;
  --red:#C4402F; --red-bg:#FBEDEA;
  --gold:#B8892F; --gold-bg:#F6EEDA; --gold-deep:#8F6A1F;
  --blue:#2B5D8A; --blue-bg:#E8F0F7;
  --radius:14px; --radius-s:10px;
  --body-bg:#DCE0E8; --card-soft:#FBFCFE; --seg-bg:#E8ECF4;
  --topbar-bg:rgba(241,244,250,.92); --tabbar-bg:rgba(255,255,255,.96);
  --felt-a:#002080; --felt-glow:rgba(184,137,47,.16); --shadow-c:10,18,44;
  --shadow:0 1px 2px rgba(var(--shadow-c),.05),0 4px 14px rgba(var(--shadow-c),.06);
  --body-tint:rgba(0,32,128,.10);
  --hero-bg:
    radial-gradient(90% 55% at 82% -8%, rgba(214,175,90,.28), transparent 62%),
    radial-gradient(120% 80% at 50% -25%, rgba(255,255,255,.12), transparent 55%),
    radial-gradient(150% 120% at 50% 125%, rgba(0,0,0,.35), transparent 62%),
    linear-gradient(168deg,#002080,#001560 55%,#000C33);
  --card-grad:linear-gradient(180deg,#FFFFFF,#F7F9FD);
  --card-line:rgba(0,32,128,.08);
  --btn-grad:linear-gradient(180deg,#002080,#001040);
  --btn-glow:0 4px 14px rgba(0,32,128,.35);
  --todo-bg:#FFFDF6;
  --tab-h:calc(56px + env(safe-area-inset-bottom,0px));
  --font-body:-apple-system,BlinkMacSystemFont,"PingFang SC","HarmonyOS Sans SC","MiSans","Microsoft YaHei",sans-serif;
  --font-disp:"Noto Serif SC","Songti SC","STSong","SimSun",serif;
  /* ---------- v66 版式令牌（第 2 批 c 段）：三种卡片定式与统一间距字号 ----------
     基准 Open Props（vendor 子集 --size-*/--font-size-*），fallback 为本主题原值：
     主卡=毡面品牌区（.home-hero/.login-hero，padding 20px+）；
     次卡=.card（14px，tight=12px）；列表行=.list .li（13px 14px）。 */
  --card-pad-main:var(--size-4,1.25rem);
  --card-pad-sub:calc(var(--size-3,1rem) - 2px);
  --card-row-pad:13px 14px;
  --fs-h1:var(--font-size-4,1.5rem);
  --fs-h2:17px; --fs-body:15px; --fs-small:12.5px; --fs-tiny:11.5px;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{font-family:var(--font-body);background:var(--body-bg);color:var(--ink);font-size:15px;line-height:1.55;
  display:flex;justify-content:center}
#phone{width:100%;max-width:430px;min-height:100dvh;background:radial-gradient(900px 460px at 50% -8%, var(--body-tint), transparent 72%), var(--paper);display:flex;flex-direction:column;
  position:relative;box-shadow:0 0 0 1px rgba(0,0,0,.04),0 10px 40px rgba(8,16,40,.18)}
@media (min-width:520px){ body{padding:16px 0} #phone{min-height:calc(100dvh - 32px);border-radius:28px;overflow:hidden} }

#screen{flex:1;overflow-y:auto;overscroll-behavior:contain;padding-bottom:calc(var(--tab-h) + 16px)}
#screen.no-tab{padding-bottom:24px}

/* ---------- 顶栏 ---------- */
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;min-height:52px;
  padding:8px 14px;background:var(--topbar-bg);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.topbar .tb-title{font-size:17px;font-weight:700;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar.light{background:rgba(0,16,64,.92);color:#fff;border-bottom:none}
.topbar.light .tb-title{color:#fff}
.icon-btn{width:36px;height:36px;border:none;border-radius:10px;background:transparent;color:inherit;font-size:19px;
  display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.icon-btn:active{background:rgba(0,0,0,.07)}
.light .icon-btn:active{background:rgba(255,255,255,.15)}
a{color:var(--felt-700)}

/* ---------- 毡面首屏 ---------- */
.felt{background:var(--hero-bg);
  color:#fff;position:relative;overflow:hidden}
.felt::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.05;
  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='160' height='160' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E")}
.felt>*{position:relative;z-index:1}

/* ---------- 品牌区定式（v66：登录页与首页共享；金色黑桃标=毡面+牌的品牌语言） ----------
   v67（2026-09-14）平台改名「芙蓉律所掼蛋湖大校友会联赛数据查询平台」共 19 字，原 24px 衬线字号
   在 320/390 都会撑破视口。故：字号按宽度自适应（390 正常档、320 缩到最小档），
   一律 nowrap ＋ 省略号，完整名称放在 title 与 aria-label 里（读屏可读全，见 realm/views.js）。 */
.brand-mark{width:52px;height:52px;margin:0 auto 10px;border-radius:14px;background:rgba(255,255,255,.12);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.22);display:flex;align-items:center;justify-content:center}
.brand-mark .ico{width:28px;height:28px;color:#E8C878}
.brand-name{display:block;max-width:100%;font-family:var(--font-disp);font-size:14px;font-weight:800;
  letter-spacing:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (min-width:361px){ .brand-name{font-size:16px;letter-spacing:.01em} }
@media (min-width:430px){ .brand-name{font-size:17.5px;letter-spacing:.02em} }
.brand-tag{margin-top:6px;font-size:var(--fs-small);opacity:.85;letter-spacing:.02em}
.login-hero{padding:36px 20px 26px;text-align:center}
.home-hero{padding:26px 18px 24px;text-align:center}
.home-hero .hh-hello{font-family:var(--font-disp);font-size:var(--fs-h1);font-weight:800;letter-spacing:.04em}
.home-hero .brand-tag{margin-top:4px}
.hh-cta{display:flex;width:100%;min-height:48px;font-size:16px;margin-top:16px}
.hh-note{margin-top:8px;font-size:var(--fs-tiny);color:rgba(255,255,255,.78)}
.login-body{padding:16px 14px 8px}
.login-body .btn.block{min-height:48px;font-size:16px}

/* ---------- 排版工具 ---------- */
.pad{padding:0 14px}
.h1{font-size:var(--fs-h1);font-weight:800;letter-spacing:.5px}
.h2{font-size:var(--fs-h2);font-weight:700}
.sec{display:flex;align-items:baseline;justify-content:space-between;margin:20px 14px 10px}
.sec .h2::before{content:"";display:inline-block;width:4px;height:14px;border-radius:2px;background:var(--felt-600);margin-right:7px;vertical-align:-1px}
.sec a,.sec button{font-size:13px;color:var(--ink-3);background:none;border:none;cursor:pointer;font-family:inherit}
.muted{color:var(--ink-2)}.faint{color:var(--ink-3)}
.small{font-size:var(--fs-small)}.tiny{font-size:var(--fs-tiny)}
.disp{font-family:var(--font-disp)}
.row{display:flex;align-items:center;gap:8px}
.spread{display:flex;align-items:center;justify-content:space-between;gap:8px}
.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}
.hr{height:1px;background:var(--line);margin:12px 0}

/* ---------- 图标系统（v66：ICONS 工厂 · 单色 currentColor，尺寸/颜色随上下文） ---------- */
svg.ico{width:1em;height:1em;display:inline-block;flex:none;vertical-align:-.14em}
.li>.ico{width:20px;height:20px;color:var(--felt-600);align-self:center}
.btn .ico{width:16px;height:16px}
.btn.xs .ico{width:14px;height:14px}
.btn.sm .ico{width:15px;height:15px}
.fchip .ico{width:14px;height:14px;vertical-align:-.16em}
.empty .eico .ico{width:44px;height:44px;vertical-align:0}
#tabbar .tico .ico{width:22px;height:22px;vertical-align:0}

/* ---------- 卡片（v66 定式：主卡=毡面品牌区，次卡=.card，列表行=.list .li） ---------- */
.card{background:var(--card-grad);border-radius:var(--radius);
  box-shadow:inset 0 0 0 1px var(--card-line), var(--shadow-2, var(--shadow));padding:var(--card-pad-sub);margin:0 14px 12px}
.card.tight{padding:calc(var(--card-pad-sub) - 2px)}
.list{background:var(--card-grad);border-radius:var(--radius);
  box-shadow:inset 0 0 0 1px var(--card-line), var(--shadow-2, var(--shadow));margin:0 14px 12px;overflow:hidden}
.list .li{display:flex;align-items:center;gap:12px;padding:var(--card-row-pad);border-bottom:1px solid var(--line);cursor:pointer}
.list .li:last-child{border-bottom:none}
.list .li:active{background:#F6F8FC}
.li-main{flex:1;min-width:0}
.li-title{font-weight:600;font-size:var(--fs-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.li-sub{font-size:var(--fs-small);color:var(--ink-3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chev{color:var(--line-2);flex:none}

/* ---------- 状态标签 ---------- */
/* .pill.green 是「成功／已签到／已结算／有效／启用中」的状态色，2026-09-14 品牌改蓝时刻意
   脱离品牌令牌 --felt-*，改走 --ok-bg／--ok-ink，避免状态语义被品牌色改动带走；
   类名保留 green 不改（realm/*.js 有 26 处按类名渲染，改类名要同时改业务代码与既有测试）。 */
.pill{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:99px;white-space:nowrap;flex:none}
.pill.green{background:var(--ok-bg);color:var(--ok-ink)}
.pill.gold{background:var(--gold-bg);color:var(--gold-deep)}
.pill.red{background:var(--red-bg);color:var(--red)}
.pill.blue{background:var(--blue-bg);color:var(--blue)}
.pill.gray{background:#EDF0F7;color:var(--ink-2)}
.dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}

/* ---------- 活动类型标签（P1-4：系统标签，克制样式，只用既有主题变量） ---------- */
.act-type{display:inline-flex;align-items:center;font-size:10.5px;font-weight:600;color:var(--felt-700);
  background:var(--felt-100);border-radius:5px;padding:1px 6px;white-space:nowrap;flex:none;vertical-align:2px}

/* ---------- 正式赛事（B9-S3：四色类型标签 + 签到通道出示件） ---------- */
.fe-tag{display:inline-flex;align-items:center;font-size:10.5px;font-weight:700;border-radius:5px;padding:1px 6px;
  white-space:nowrap;flex:none;vertical-align:2px}
.fe-tag.standard{background:var(--felt-100);color:var(--felt-700)}
.fe-tag.invite{background:var(--gold-bg);color:var(--gold-deep)}
.fe-tag.promo{background:var(--blue-bg);color:var(--blue)}
.fe-tag.trial{background:#EDF0F7;color:var(--ink-2)}
.fe-code{font-family:var(--font-disp);font-size:30px;font-weight:800;letter-spacing:.18em;text-align:center;padding:6px 0 2px;color:var(--gold-deep)}

/* ---------- 管理台完整名单展开 / 出示签到码弹层（P1-4） ---------- */
.roster-dt{margin-top:10px;border-top:1px solid var(--line)}
.roster-dt summary{font-size:13px;color:var(--felt-700);cursor:pointer;padding:8px 2px}
.ck-qr-box{display:flex;justify-content:center;padding:8px 0 2px}
.ck-qr-box svg{width:190px;height:auto}

/* ---------- 级牌角标（签名元素） ---------- */
.lvl-card{width:34px;height:44px;border-radius:6px;background:#fff;border:1px solid var(--line-2);
  box-shadow:0 2px 6px rgba(10,20,45,.14);display:flex;flex-direction:column;align-items:center;justify-content:center;
  flex:none;font-family:var(--font-disp);position:relative;overflow:hidden}
.lvl-card::before{content:"";position:absolute;inset:3px;border:1px solid rgba(0,0,0,.06);border-radius:4px}
.lvl-card .rk{font-size:17px;font-weight:800;line-height:1}
.lvl-card .st{font-size:13px;line-height:1.1}
.lvl-card.lv-exp .rk,.lvl-card.lv-exp .st{color:var(--red)}
.lvl-card.lv-std .rk,.lvl-card.lv-std .st{color:var(--ink)}
.lvl-card.lv-fin{background:linear-gradient(160deg,#001A4D,#001040);border-color:#000B2E}
.lvl-card.lv-fin .rk,.lvl-card.lv-fin .st{color:#E8C878}

/* ---------- 按钮 ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;border-radius:12px;cursor:pointer;
  font-family:inherit;font-size:15px;font-weight:600;padding:11px 18px;min-height:44px;background:var(--btn-grad);color:#fff;
  box-shadow:var(--btn-glow);transition:filter .15s, box-shadow .15s}
.btn:active{filter:brightness(1.12)}
.btn:disabled{background:#C4C9D6;color:#F1F4FA;cursor:not-allowed;filter:none}
.btn.block{display:flex;width:calc(100% - 28px);margin:14px auto}
.btn.ghost{background:transparent;color:var(--felt-700);box-shadow:inset 0 0 0 1.5px var(--felt-600)}
.btn.ghost:disabled{background:transparent;color:#B4BAC4;box-shadow:inset 0 0 0 1.5px #CBD2E0}
.btn.gold{background:linear-gradient(160deg,#C99B3F,#A87B24)}
.btn.danger{background:var(--red)}
.btn.danger-ghost{background:transparent;color:var(--red);box-shadow:inset 0 0 0 1.5px #E3B1A9}
.btn.sm{min-height:32px;padding:5px 12px;font-size:13px;border-radius:9px}
.btn.xs{min-height:26px;padding:2px 10px;font-size:12px;border-radius:8px}

/* ---------- 表单 ---------- */
.field{margin-bottom:14px}
.field label{display:block;font-size:13px;font-weight:600;color:var(--ink-2);margin-bottom:6px}
.input,select.input,textarea.input{width:100%;border:1.5px solid var(--line-2);border-radius:11px;background:var(--card);
  padding:11px 12px;font-size:15px;font-family:inherit;color:var(--ink);outline:none;appearance:none}
.input:focus{border-color:var(--felt-600);box-shadow:0 0 0 3px rgba(0,32,128,.12)}
.input::placeholder{color:#AEB4C0}
textarea.input{min-height:70px;resize:vertical}
.seg{display:flex;background:var(--seg-bg);border-radius:11px;padding:3px;gap:2px}
.seg button{flex:1;border:none;background:transparent;border-radius:9px;padding:8px 4px;font-size:13.5px;font-weight:600;
  color:var(--ink-2);cursor:pointer;font-family:inherit;min-height:36px}
.seg button.on{background:#fff;color:var(--felt-700);box-shadow:0 1px 4px rgba(10,20,45,.14)}
.check-row{display:flex;align-items:center;gap:10px;padding:11px 12px;border:1.5px solid var(--line-2);border-radius:11px;
  margin-bottom:8px;cursor:pointer;background:var(--card)}
.check-row.on{border-color:var(--felt-600);background:var(--felt-100)}
.check-row .tick{width:20px;height:20px;border-radius:50%;border:1.5px solid var(--line-2);flex:none;
  display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px}
.check-row.on .tick{background:var(--felt-600);border-color:var(--felt-600)}

/* ---------- 赛事卡片 ---------- */
.ev-card{background:var(--card-grad);border-radius:var(--radius);box-shadow:inset 0 0 0 1px var(--card-line), var(--shadow-2, var(--shadow));margin:0 14px 12px;padding:13px 14px;
  display:flex;gap:12px;cursor:pointer;position:relative}
.ev-card:active{background:var(--card-soft)}
.ev-body{flex:1;min-width:0}
.ev-title{font-weight:700;font-size:15.5px;line-height:1.35}
.ev-meta{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12.5px;color:var(--ink-3);margin-top:6px}
.ev-foot{display:flex;align-items:center;gap:8px;margin-top:8px}
.quota-bar{height:5px;border-radius:3px;background:var(--seg-bg);flex:1;overflow:hidden}
.quota-bar i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,#2f7fe0,#1f63c0)}
.quota-bar i.full{background:linear-gradient(90deg,#D08A35,#B8722A)}

/* ---------- 底部 TabBar ---------- */
#tabbar{position:sticky;bottom:0;z-index:30;display:flex;background:var(--tabbar-bg);backdrop-filter:blur(10px);
  border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0px);height:var(--tab-h)}
#tabbar.hidden{display:none}
#tabbar button{flex:1;border:none;background:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:2px;font-family:inherit;color:var(--ink-3);font-size:10.5px;position:relative}
#tabbar button .tico{font-size:20px;line-height:1}
#tabbar button.on{color:var(--felt-700);font-weight:700}
#tabbar button .bdg{position:absolute;top:6px;right:calc(50% - 20px);min-width:16px;height:16px;border-radius:8px;
  background:var(--red);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 4px}

/* ---------- 头像 / 奖牌 ---------- */
.avatar{width:42px;height:42px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;
  font-weight:700;color:#fff;font-size:16px;background:var(--felt-600)}
.avatar.lg{width:56px;height:56px;font-size:20px}
.avatar.sm{width:30px;height:30px;font-size:12px}
.medal{width:30px;height:30px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;
  font-size:14px;font-weight:800;font-family:var(--font-disp)}
.medal.m1{background:linear-gradient(160deg,#F2CE6B,#C9992B);color:#6B4E0E}
.medal.m2{background:linear-gradient(160deg,#Dfe5e8,#AEBCC4);color:#4E5D66}
.medal.m3{background:linear-gradient(160deg,#E5B98A,#B97F45);color:#5E3711}
.medal.mx{background:#EEF0F7;color:var(--ink-3)}

/* ---------- 段位 ---------- */
.tier-badge{display:inline-flex;align-items:center;gap:5px;background:var(--gold-bg);color:var(--gold-deep);
  border-radius:8px;padding:2px 9px;font-weight:700;font-size:13px}
.tier-ladder{display:flex;gap:4px;margin-top:10px}
.tier-step{flex:1;height:8px;border-radius:4px;background:#E8EBF3}
.tier-step.done{background:linear-gradient(90deg,#C99B3F,#B8892F)}
.tier-step.cur{outline:2px solid rgba(184,137,47,.35);background:linear-gradient(90deg,#C99B3F,#B8892F)}

/* ---------- 排名列表 ---------- */
.rank-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line)}
.rank-row:last-child{border-bottom:none}
.rank-no{width:30px;text-align:center;font-family:var(--font-disp);font-size:17px;font-weight:800;color:var(--ink-2);flex:none}
.delta{font-size:11px;font-weight:700}
.delta.up{color:var(--ok-ink)}.delta.down{color:var(--red)}.delta.flat{color:var(--ink-3)}
.pts{font-family:var(--font-disp);font-weight:800;font-size:16px;color:var(--felt-700);flex:none;min-width:44px;text-align:right}

/* ---------- 牌桌编排 ---------- */
.table-card{border:1.5px solid var(--line);border-radius:var(--radius-s);padding:11px 12px;margin-bottom:10px;background:var(--card-soft)}
.table-card .tb-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.table-card .tb-head b{color:var(--felt-700)}
.seats{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.seat{display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:9px;padding:7px 9px}
.seat .avatar{width:28px;height:28px;font-size:11px}
.seat .pinfo{min-width:0}
.seat .pinfo b{display:block;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.seat .pinfo span{font-size:10.5px;color:var(--ink-3)}
.pair-tag{font-size:10px;color:#fff;background:var(--felt-600);border-radius:4px;padding:1px 5px}
.pair-tag.b{background:var(--gold)}

/* ---------- 游数提交 ---------- */
.pos-btns{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.pos-btns button{border:1.5px solid var(--line-2);background:var(--card);border-radius:11px;padding:10px 2px;cursor:pointer;
  font-family:inherit;font-size:13.5px;font-weight:700;color:var(--ink-2)}
.pos-btns button.on{border-color:var(--felt-600);background:var(--felt-100);color:var(--felt-700)}
.pos-btns button b{display:block;font-size:17px;font-family:var(--font-disp)}
.round-chip{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;border-radius:8px;
  background:var(--felt-100);color:var(--felt-700);font-weight:700;font-size:13px;padding:0 6px}

/* ---------- 筛选条 ---------- */
.filters{display:flex;gap:8px;overflow-x:auto;padding:10px 14px 4px;scrollbar-width:none}
.filters::-webkit-scrollbar{display:none}
.fchip{flex:none;border:1px solid var(--line-2);background:var(--card);border-radius:99px;padding:6px 13px;font-size:13px;
  color:var(--ink-2);cursor:pointer;font-family:inherit}
.fchip.on{background:var(--felt-700);border-color:var(--felt-700);color:#fff;font-weight:600}
/* 单场闭环批次第 4 条：发布门禁未就绪的承办场次标签（发布被 422 拒绝后按服务端 fieldErrors 标出） */
.fchip.is-error{border-color:var(--red);color:var(--red)}
.fchip.is-error.on{border-color:var(--red);background:var(--red);color:#fff}

/* ---------- 空态 ---------- */
.empty{text-align:center;padding:44px 30px;color:var(--ink-3)}
.empty .eico{font-size:40px;margin-bottom:10px;opacity:.7}
.empty p{font-size:var(--fs-small)}

/* ---------- Toast / Sheet / Modal ---------- */
#layer-toast{position:absolute;left:0;right:0;bottom:calc(var(--tab-h) + 24px);display:flex;justify-content:center;
  pointer-events:none;z-index:90}
.toast{background:rgba(20,24,36,.92);color:#fff;padding:10px 18px;border-radius:99px;font-size:13.5px;max-width:86%;
  animation:toastin .22s ease;box-shadow:0 6px 20px rgba(0,0,0,.25)}
.toast.err{background:rgba(150,40,28,.95)}
@keyframes toastin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* ---------- 演示数据角标（B8 切片 C；演示模式专用，真实模式不渲染） ---------- */
/* 只用既有主题令牌，不新增；置于内容层之上、弹层（80/90）之下，弹窗打开时被覆盖不打扰 */
.demo-badge{position:fixed;right:10px;bottom:calc(var(--tab-h) + 12px);z-index:40;pointer-events:none;
  background:var(--gold-bg);color:var(--gold-deep);border:1px solid var(--gold);border-radius:999px;
  padding:4px 12px;font-size:11px;font-weight:700;letter-spacing:.08em;box-shadow:var(--shadow);opacity:.94}
#layer-sheet,#layer-modal{position:absolute;inset:0;z-index:80;display:flex;flex-direction:column;justify-content:flex-end}
#layer-sheet[hidden],#layer-modal[hidden]{display:none}
#layer-modal{justify-content:center;padding:26px}
.mask{position:absolute;inset:0;background:rgba(12,16,30,.45);animation:fadein .2s ease}
@keyframes fadein{from{opacity:0}to{opacity:1}}
.sheet-box{position:relative;background:var(--card);border-radius:20px 20px 0 0;max-height:82%;display:flex;flex-direction:column;
  animation:sheetup .26s cubic-bezier(.2,.8,.25,1)}
@keyframes sheetup{from{transform:translateY(40%)}to{transform:none}}
.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:15px 18px 8px}
.sheet-head b{font-size:16.5px}
.sheet-body{overflow-y:auto;padding:6px 18px calc(20px + env(safe-area-inset-bottom,0px))}
.modal-box{position:relative;background:var(--card);border-radius:18px;padding:20px 18px;max-height:80%;overflow-y:auto;animation:modalin .2s ease}
@keyframes modalin{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
.modal-box h3{font-size:16.5px;margin-bottom:10px}

/* ---------- 公告横滑 ---------- */
.notice-strip{display:flex;gap:10px;overflow-x:auto;padding:2px 14px 6px;scroll-snap-type:x mandatory;scrollbar-width:none}
.notice-strip::-webkit-scrollbar{display:none}
.notice{flex:0 0 82%;scroll-snap-align:start;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);
  border-radius:12px;padding:11px 13px;color:#fff}
.notice b{font-size:13.5px;display:flex;gap:6px;align-items:center}
.notice p{font-size:12px;opacity:.82;margin-top:3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ---------- 进度/统计 ---------- */
.stat3{display:flex;text-align:center}
.stat3>div{flex:1}
.stat3 b{display:block;font-family:var(--font-disp);font-size:21px;font-weight:800}
.stat3 span{font-size:11.5px;color:var(--ink-3)}
.stat3>div+div{border-left:1px solid var(--line)}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
:focus-visible{outline:2px solid var(--felt-600);outline-offset:2px}

/* 修正：卡片与毡面同用时的背景优先级 */
.card.felt{background:var(--hero-bg)}

/* ---------- 主题系统（data-theme 覆盖令牌；默认深海军蓝见 :root） ---------- */
/* 只有默认主题跟随 2026-09-14 品牌改蓝；ink／bgold／xuan 三套主题自身配色与名称原样保留，
   但它们同样需要 --ok-bg／--ok-ink，否则 .pill.green 等语义药丸会回落到默认主题的绿色药丸。 */
html[data-theme="ink"]{
  --body-tint:rgba(201,155,63,.07);
  --hero-bg:
    radial-gradient(85% 55% at 80% -10%, rgba(201,155,63,.20), transparent 60%),
    radial-gradient(120% 80% at 50% -25%, rgba(255,255,255,.06), transparent 55%),
    radial-gradient(150% 120% at 50% 125%, rgba(0,0,0,.40), transparent 62%),
    linear-gradient(168deg,#1C252C,#131A20 55%,#0C1116);
  --card-grad:linear-gradient(180deg,#1F272E,#181F25);
  --card-line:rgba(255,255,255,.07);
  --btn-grad:linear-gradient(180deg,#27956A,#1F8158);
  --btn-glow:0 4px 14px rgba(31,129,88,.35);
  --todo-bg:#241F12;
  --paper:#12171A; --card:#1A2024; --card-soft:#20272C; --seg-bg:#242C31;
  --ink:#E6ECE8; --ink-2:#9FB0A6; --ink-3:#74867B;
  --line:#2A3237; --line-2:#3A444B;
  --felt-900:#0E1512; --felt-700:#1F8158; --felt-600:#27956A; --felt-100:#17352A;
  --ok-bg:#17352A; --ok-ink:#1F8158;
  --gold:#C99B3F; --gold-bg:#2E2718; --gold-deep:#D9B36A;
  --red:#D2604E; --red-bg:#3A211D; --blue:#6FA8D8; --blue-bg:#1C2C3A;
  --body-bg:#0C1012; --topbar-bg:rgba(18,23,26,.92); --tabbar-bg:rgba(26,32,36,.96);
  --felt-a:#14352A; --felt-glow:rgba(201,155,63,.18); --shadow-c:0,0,0;
}
html[data-theme="bgold"]{
  --body-tint:rgba(43,80,214,.20);
  --hero-bg:
    radial-gradient(70% 45% at 50% -12%, rgba(140,170,255,.40), transparent 62%),
    radial-gradient(85% 55% at 84% -8%, rgba(245,197,24,.24), transparent 60%),
    radial-gradient(150% 120% at 50% 125%, rgba(2,6,26,.55), transparent 62%),
    linear-gradient(168deg,#12309A,#0B1F6E 55%,#081542);
  --card-grad:linear-gradient(180deg,#172A7E,#12225E);
  --card-line:rgba(140,170,255,.15);
  --btn-grad:linear-gradient(180deg,#F6CD3C,#E3B50D);
  --btn-glow:0 4px 16px rgba(232,185,15,.40);
  --todo-bg:#2C260D;
  --paper:#0B1B4D; --card:#13256B; --card-soft:#182F7A; --seg-bg:#1D3580;
  --ink:#F2F6FF; --ink-2:#A8BCE8; --ink-3:#7286BC;
  --line:#233A85; --line-2:#2F4AA0;
  --felt-900:#081238; --felt-700:#E8B90F; --felt-600:#F6CD3C; --felt-100:#1B3480;
  --ok-bg:#1B3480; --ok-ink:#E8B90F;
  --gold:#E5C878; --gold-bg:#322B10; --gold-deep:#E5C878;
  --red:#FF6A55; --red-bg:#3D1E1E; --blue:#7FA8FF; --blue-bg:#1A2C5E;
  --body-bg:#071031; --topbar-bg:rgba(9,20,58,.92); --tabbar-bg:rgba(12,24,66,.96);
  --felt-a:#0E2B8A; --felt-glow:rgba(245,197,24,.22); --shadow-c:0,0,0;
}
/* 深蓝鎏金：金色主按钮配深蓝文字，勾选圆点同理 */
html[data-theme="bgold"] .felt::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.55;
  background-image:
    radial-gradient(1px 1px at 25px 35px, rgba(255,255,255,.55), transparent 60%),
    radial-gradient(1px 1px at 75px 80px, rgba(255,255,255,.32), transparent 60%),
    radial-gradient(1.5px 1.5px at 130px 50px, rgba(255,220,120,.5), transparent 60%),
    radial-gradient(1px 1px at 170px 120px, rgba(255,255,255,.28), transparent 60%);
  background-size:200px 150px}
html[data-theme="bgold"] .btn{color:#12225E}
html[data-theme="bgold"] .btn.ghost{color:#F6CD3C}
html[data-theme="bgold"] .check-row.on .tick{color:#12225E}
html[data-theme="bgold"] .pos-btns button.on{color:#F6CD3C}

html[data-theme="xuan"]{
  --body-tint:rgba(168,132,47,.09);
  --hero-bg:
    radial-gradient(85% 55% at 82% -8%, rgba(196,150,60,.20), transparent 60%),
    radial-gradient(120% 80% at 50% -25%, rgba(255,255,255,.50), transparent 55%),
    radial-gradient(150% 120% at 50% 125%, rgba(120,100,60,.18), transparent 62%),
    linear-gradient(168deg,#5F704F,#46543F 55%,#3A4633);
  --card-grad:linear-gradient(180deg,#FFFEFA,#FBF6EA);
  --card-line:rgba(120,100,60,.10);
  --btn-grad:linear-gradient(180deg,#5A6B52,#46543F);
  --btn-glow:0 4px 14px rgba(74,90,68,.35);
  --paper:#F5F1E8; --card:#FFFDF8; --card-soft:#FAF6ED; --seg-bg:#EFE9DC;
  --ink:#2B2A26; --ink-2:#6B675C; --ink-3:#9B958A;
  --line:#E5DFD2; --line-2:#D5CDBC;
  --felt-900:#39433A; --felt-700:#4A5A44; --felt-600:#5A6B52; --felt-100:#EDEAE0;
  --ok-bg:#EDEAE0; --ok-ink:#4A5A44;
  --gold:#A8842F; --gold-bg:#F3ECD9; --gold-deep:#8A6B22;
  --red:#B23A2A; --red-bg:#F7E9E5; --blue:#3A648A; --blue-bg:#E7EEF4;
  --body-bg:#E8E2D5; --topbar-bg:rgba(245,241,232,.92); --tabbar-bg:rgba(255,253,248,.96);
  --felt-a:#55654D; --felt-glow:rgba(168,132,47,.14); --shadow-c:60,55,40;
}

/* ---------- 成绩表格视图 ---------- */
.gtable{width:100%;border-collapse:collapse;font-size:12.5px;background:var(--card)}
.gtable th,.gtable td{border:1px solid var(--line);padding:6px 4px;text-align:center;white-space:nowrap}
.gtable th{background:var(--felt-100);color:var(--felt-700);font-weight:700}
.gtable td.nm{text-align:left;padding-left:8px;max-width:120px;overflow:hidden;text-overflow:ellipsis}
.gtable td.win{color:var(--felt-700);font-weight:700}
.gtable td.loss{color:var(--ink-3)}
.gtable td.total{background:#FBFCFE;font-weight:800;font-family:var(--font-disp)}
.gtable tr.me td{background:var(--felt-100)}
.tbl-wrap{overflow-x:auto;margin:0 14px 12px;border-radius:var(--radius);box-shadow:var(--shadow)}

/* ---------- FE-ROTATION-LIVE-001：轮转选手比赛页（桌台图 / 状态精简 / 完成顺序 / 奖品入口） ----------
   已确认设计图为 doc/前端修改意见.md 所述第二版修订图；此处沿用既有主题令牌
   （品牌蓝 --felt-*、黄铜 --gold-*、--radius、--fs-*），不新增配色体系。
   v67（2026-09-14 品牌改蓝）关键取舍：本页牌桌是真实牌桌的俯视表达，发起人明确要求
   「牌桌毡面保持绿色」，故 .mt-felt 的绿毡渐变与 .mt-board 木边在此写死为原绿色值，
   不再跟随 --felt-* 令牌；牌桌上的徽章/药丸/本人环等品牌装饰仍随令牌改蓝。
   视角换算在 realm/match.js 完成：本人在下方槽位，.mt-seat-top/right/bottom/left 四个槽位
   由真实方位旋转得到（南位视角＝左西右东，保持真实左右手关系）。 */
.mt-head-title{font-weight:700}
.mt-stage{position:relative;margin:0 14px;padding:42px 0 54px}
.mt-board{position:relative;margin:0 42px;padding:7px;border-radius:30px;
  background:linear-gradient(180deg,#9E6C39,#5E3C1D 60%,#4A2E14);
  box-shadow:0 10px 22px rgba(10,20,45,.22),inset 0 1px 0 rgba(255,255,255,.32),inset 0 -2px 5px rgba(0,0,0,.30)}
/* 俯视绿毡桌面：宽度随容器、高度按 1.6 比例（不能同时钉死 height，否则 aspect-ratio 会反过来
   撑宽桌面并造成横向溢出）；不支持 aspect-ratio 的环境用 @supports 兜底固定高度。
   v67 品牌改蓝时此处故意不动：真实牌桌就是绿毡，木边 #9E6C39 也保留（发起人明确要求）。 */
.mt-felt{position:relative;width:100%;aspect-ratio:1.6;border-radius:24px;
  background:
    radial-gradient(120% 130% at 50% -15%, rgba(255,255,255,.13), transparent 58%),
    radial-gradient(90% 120% at 50% 125%, rgba(0,0,0,.20), transparent 62%),
    linear-gradient(180deg,#178A56,#0A5E3C);
  box-shadow:inset 0 4px 14px rgba(0,0,0,.30)}
@supports not (aspect-ratio:1.6){ .mt-felt{height:150px} }

/* 四个座位槽位（头像 + 方位·关系标记 + 脱敏姓名 + 游数/阶段状态） */
.mt-seat{position:absolute;z-index:2;width:92px;display:flex;flex-direction:column;align-items:center;gap:2px}
.mt-seat-top{left:50%;top:-32px;transform:translateX(-50%)}
.mt-seat-bottom{left:50%;bottom:-34px;transform:translateX(-50%)}
.mt-seat-left{left:-42px;top:50%;transform:translateY(-50%)}
.mt-seat-right{right:-42px;top:50%;transform:translateY(-50%)}
.mt-avatar{width:46px;height:46px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;
  background:#F1F3F9;color:#9AA0AC;box-shadow:0 0 0 3px #fff,0 4px 10px rgba(10,20,45,.22)}
.mt-avatar .ico{width:24px;height:24px}
.mt-seat.is-me .mt-avatar{background:#E8F0FB;color:var(--felt-600);
  box-shadow:0 0 0 2px #fff,0 0 0 4px var(--felt-600),0 4px 10px rgba(10,20,45,.22)}
.mt-badge{max-width:104px;padding:1px 8px;border-radius:99px;font-size:10.5px;font-weight:700;color:#fff;
  background:#7C818A;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mt-badge.partner{background:var(--felt-600)}
.mt-badge.me{background:var(--felt-700)}
/* 上/下座位把方位标记放在头像右侧（同设计图）；左右座位放在头像上方，避免贴边溢出 */
.mt-seat-top .mt-badge,.mt-seat-bottom .mt-badge{position:absolute;top:3px;left:calc(50% + 13px)}
.mt-name{max-width:92px;padding:1px 9px;border-radius:99px;background:var(--card);color:var(--ink);
  font-size:12.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  box-shadow:0 1px 4px rgba(10,20,45,.16)}
.mt-value{padding:1px 9px;border-radius:99px;background:var(--felt-600);color:#fff;font-size:11px;font-weight:700;white-space:nowrap}
.mt-value.proxy{background:var(--blue)}
.mt-value.empty{background:#EDF0F7;color:var(--ink-3);font-weight:600}
.mt-tag{padding:1px 9px;border-radius:99px;background:var(--seg-bg);color:var(--ink-2);font-size:11px;font-weight:600;white-space:nowrap}
.mt-tag.ready{background:var(--felt-100);color:var(--felt-700)}

/* 桌面中央：第几副 / 共几副，以及真实阶段（不用假进度）。
   padding-bottom 把中央文案抬离底部座位的姓名/游数，窄屏同样留出净空。 */
.mt-center{position:absolute;inset:0;padding:0 10px 20px;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:7px;text-align:center;pointer-events:none}
.mt-center p{display:flex;flex-wrap:nowrap;align-items:baseline;justify-content:center;gap:6px;color:#fff;white-space:nowrap}
.mt-center b{font-family:var(--font-disp);font-size:19px;font-weight:800;letter-spacing:.02em}
.mt-center span{font-size:13px;color:rgba(255,255,255,.85)}
.mt-center i{width:58px;height:1px;background:rgba(255,255,255,.32)}
.mt-center em{font-size:12px;font-style:normal;color:rgba(255,255,255,.82)}

/* 本副出完顺序（只列服务端有效记录；撤销过的尝试不在这里） */
.mt-order{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 14px 12px}
.mt-order-label{font-size:12px;color:var(--ink-3)}

/* 我的本副记录 */
.mt-mine{padding-bottom:10px}
.mt-mine-state{display:block;padding:2px 2px 10px;font-size:var(--fs-body);font-weight:700;line-height:1.5}
.mt-mine-state.done{font-family:var(--font-disp);font-size:20px;color:var(--felt-700)}
.mt-check{display:inline-flex;align-items:center;margin-right:8px;vertical-align:-4px}
.mt-check .ico{width:22px;height:22px;color:var(--felt-600)}
.mt-mine .btn.block{width:100%;margin:0 0 10px}
.mt-mine-note{text-align:center;margin:-2px 0 2px}
.mt-mine-locked{margin-top:10px;padding:8px 10px;border-radius:var(--radius-s);background:var(--gold-bg);
  color:var(--gold-deep);font-size:11.5px;line-height:1.5}
.mt-mine-acts{margin-top:10px;border-top:1px solid var(--line)}
.mt-mine-row{display:flex;align-items:center;gap:8px;width:100%;padding:11px 2px;border:none;border-bottom:1px solid var(--line);
  background:none;font-family:inherit;font-size:14px;color:var(--ink);text-align:left;cursor:pointer}
.mt-mine-row:last-child{border-bottom:none}
.mt-mine-row .ico{width:18px;height:18px;color:var(--red);flex:none}
.mt-mine-row b{flex:1;font-weight:600}
.mt-mine-row .chev{font-size:16px}
.mt-pos-row{margin-top:0}

/* 本场奖品入口（活动确有奖品政策才出现；无奖品隐藏，加载失败另有提示） */
.mt-prize{display:flex;align-items:center;gap:9px;width:calc(100% - 28px);margin:0 14px 12px;padding:12px 14px;
  border:1px solid #E4D3A0;border-radius:var(--radius);background:linear-gradient(180deg,#FFF9E9,#FCF2DA);
  color:var(--gold-deep);font-family:inherit;font-size:14px;cursor:pointer;box-shadow:var(--shadow)}
.mt-prize .ico{width:20px;height:20px;flex:none}
.mt-prize b{font-weight:700}
.mt-prize-go{margin-left:auto;font-size:12.5px;font-weight:600;white-space:nowrap}
.mt-prize-failed{margin:0 14px 12px;padding:9px 12px;border-radius:var(--radius-s);background:var(--seg-bg);color:var(--ink-2)}
.mt-prize-retry{padding:0 2px;border:none;background:none;color:var(--felt-700);font-family:inherit;
  font-size:11.5px;font-weight:700;text-decoration:underline;cursor:pointer}

/* 五副成绩：副次 / 我方游数 / 对方游数 / 状态（我方=本人与搭档；未在座时按北南、东西） */
.mt-deals-wrap{margin:0 14px 8px;border-radius:var(--radius);overflow:hidden;background:var(--card);
  box-shadow:inset 0 0 0 1px var(--card-line),var(--shadow-2,var(--shadow))}
.mt-deals{width:100%;border-collapse:collapse;table-layout:fixed;font-size:12.5px}
.mt-deals th{padding:7px 4px;background:#F5F7FB;color:var(--ink-3);font-size:12px;font-weight:600;text-align:center}
.mt-deals td{padding:9px 4px;border-top:1px solid var(--line);text-align:center;color:var(--ink)}
.mt-deals th:first-child,.mt-deals td:first-child{width:64px;padding-left:12px;text-align:left}
.mt-deals th:last-child,.mt-deals td:last-child{width:84px}
.mt-deals tr.cur{background:var(--felt-100)}
.mt-deal-no{font-weight:700;white-space:nowrap}
.mt-deal-vals{font-family:var(--font-disp);font-weight:700}
.mt-deal-win{display:block;margin-top:3px;font-size:11px;font-weight:700;color:var(--felt-700)}
.mt-deals-empty{padding:18px 0!important;color:var(--ink-3)}
.mt-deals-note{margin:0 14px 12px}

@media (max-width:360px){
  .mt-board{margin:0 36px;padding:6px;border-radius:26px}
  .mt-felt{border-radius:20px;min-height:132px}
  .mt-seat{width:78px}
  .mt-seat-bottom{bottom:-30px}
  .mt-avatar{width:40px;height:40px}
  .mt-avatar .ico{width:21px;height:21px}
  .mt-seat-left{left:-36px}
  .mt-seat-right{right:-36px}
  .mt-name{max-width:78px;font-size:12px;padding:1px 7px}
  .mt-badge{max-width:88px;font-size:10px}
  .mt-value,.mt-tag{font-size:10.5px;padding:1px 7px}
  .mt-center{padding:0 8px 30px}
  .mt-center b{font-size:17px}
  .mt-center span,.mt-center em{font-size:11.5px}
  .mt-deals th:first-child,.mt-deals td:first-child{width:56px;padding-left:9px}
  .mt-deals th:last-child,.mt-deals td:last-child{width:76px}
  .mt-deals th{font-size:11px}
}

/* ---------- 打印：桌贴页（realm/venues.js 的 ss-* 结构）只输出一页四贴 ----------
   桌贴页此前在样式表里没有任何 ss-* 定义，点击「打印 / 另存 PDF（A4 一页四贴）」时，
   打印口径只剩 formal-score.css 的 body * 隐藏 → 出空白纸；即使显示出来，四贴也是
   430px 宽逐张纵排（约 2.3 页，贴纸被页边切断）。
   这里沿用既有打印口径（body * 隐藏 + .no-print 不打印 + 打印目标绝对定位），
   补上桌贴页自己的打印范围与 A4 一页四贴版式；屏幕态样式不在本批范围。
   外壳复位用 :has(.ss-print-area) 限定，只在桌贴页生效，不改成绩码等其它打印页。
   markup 契约：一桌四贴 = 服务端 seatLocators 的四个方位码（N/E/S/W），2×2 恰好一页。 */
@media print {
  @page{size:A4 portrait;margin:7mm}
  html,body{background:#fff}
  .no-print,.ss-topbar-hide,.ss-st-dl{display:none!important}

  /* 打印范围：应用外壳、导航、按钮与非桌贴区块一律不出现在纸上 */
  body *{visibility:hidden}
  .ss-print-area,.ss-print-area *{visibility:visible}
  .ss-print-area{position:absolute;left:0;top:0;width:100%;margin:0;padding:0;background:#fff}

  /* 外壳复位（仅桌贴页）：撤掉手机框居中/圆角/高度与 #screen 内滚动，避免被裁切或溢出到第二页 */
  body:has(.ss-print-area){display:block;padding:0}
  body:has(.ss-print-area) #phone{display:block;width:auto;max-width:none;min-height:0;border-radius:0;overflow:visible;background:#fff;box-shadow:none}
  body:has(.ss-print-area) #screen{overflow:visible;padding:0}
  body:has(.ss-print-area) #tabbar{display:none!important}

  /* A4 一页四贴：页边距 7mm → 196×283mm 可印区；纸张实测 194×280mm，留 3mm 余量 */
  .ss-sheet{width:194mm;height:280mm;margin:0 auto;padding:0;overflow:hidden}
  .ss-sheet-title{height:10mm;margin:0;color:#000;font-size:12pt;font-weight:700;line-height:10mm;text-align:center}
  .ss-stickers{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:4mm;height:243mm}
  .ss-sticker{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;padding:4mm;border:1px solid #9eb5d1;border-radius:3mm;background:#fff;color:#000;text-align:center;box-shadow:none;break-inside:avoid;page-break-inside:avoid}
  .ss-st-venue{font-size:8.5pt;line-height:1.4}
  .ss-st-table{margin-top:1mm;font-size:10.5pt;font-weight:700}
  .ss-st-dir{margin:2mm 0;font-size:21pt;font-weight:800;line-height:1.15}
  .ss-st-qr{width:42mm;margin:0 auto}
  .ss-st-qr svg{display:block;width:100%;height:auto;background:#fff}
  .ss-st-pair{margin-top:2mm;font-size:8pt;font-weight:700}
  .ss-st-tip{margin-top:1mm;font-size:8pt}

  /* 贴放示意：与四贴同页，不产生第二页 */
  .ss-map{display:flex;align-items:center;justify-content:center;gap:8mm;height:23mm;margin:2mm 0 0;padding:0 4mm;border:0;border-radius:0;background:#fff;color:#000}
  .ss-map-t{margin:0;font-size:8pt;font-weight:700}
  .ss-map-box{position:relative;width:42mm;height:20mm;border:1px solid #9eb5d1;border-radius:2mm;background:#fff;font-size:7.5pt;font-weight:700}
  .ss-map-n,.ss-map-e,.ss-map-s,.ss-map-w,.ss-map-c{position:absolute}
  .ss-map-n{top:1mm;left:50%;transform:translateX(-50%)}
  .ss-map-e{right:1.5mm;top:50%;transform:translateY(-50%)}
  .ss-map-s{bottom:1mm;left:50%;transform:translateX(-50%)}
  .ss-map-w{left:1.5mm;top:50%;transform:translateY(-50%)}
  .ss-map-c{left:50%;top:50%;transform:translate(-50%,-50%)}
}
