/* 20261024town 马桥幸福小镇 */
.town-lobby { margin: 10px 0 0; }
/* 20261026zt 手机竖屏：#splash 是 align-items:center 的纵向 flex，卡片原按内容收缩（比兄弟卡窄），一行不换行的长文字（小镇快报/提示/砖瓦）会把它撑出屏幕；与 .rk-cards 同宽并允许收缩 */
#splash .town-lobby { width: min(560px, 100%); min-width: 0; max-width: 100%; box-sizing: border-box; }
.town-card { min-width: 0; max-width: 100%; box-sizing: border-box; }
.town-hd > * { min-width: 0; }
.town-card { position: relative; border-radius: 14px; padding: 10px 12px 9px; cursor: pointer; color: #3b2a12; border: 1px solid #c9a24a;
  background: linear-gradient(180deg, #bfe3f5 0%, #e8f4dd 46%, #a7cf7f 100%); box-shadow: 0 4px 14px rgba(0,0,0,.25); overflow: hidden; }
.town-card:active { transform: scale(.99); }
.town-hd { display: flex; align-items: center; gap: 6px; }
.town-hd b { font: 700 16px "Noto Serif SC", serif; color: #6b2a10; letter-spacing: 1px; }
.town-lv, .town-lvb { font-size: 11px; font-weight: 700; color: #fff7d6; background: linear-gradient(180deg, #d9902b, #a55a12); border-radius: 9px; padding: 1px 7px; }
.town-go { margin-left: auto; font-size: 12px; color: #6b2a10; }
.town-row { display: flex; align-items: flex-end; justify-content: center; gap: 4px; margin: 4px 0 2px; min-height: 92px; }
.town-mh { margin: 0; flex: 1 1 0; max-width: 120px; text-align: center; position: relative; }
.town-mh img { width: 78%; aspect-ratio: 1 / .9; object-fit: contain; display: block; margin: 0 auto; filter: drop-shadow(0 3px 2px rgba(0,0,0,.25)); }
.town-mh.me img { width: 100%; }
.town-mh em { position: absolute; top: -2px; left: 50%; transform: translateX(-50%); font: 700 11px "Noto Serif SC", serif; font-style: normal; color: #ffe9a8; background: #8a1b10; border: 1px solid #ffd75e; border-radius: 8px; padding: 0 6px; box-shadow: 0 0 8px rgba(255,214,90,.8); }
.town-mh figcaption { font-size: 11px; color: #4a3517; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.town-mh.empty { align-self: center; color: rgba(60,45,20,.5); font-size: 11px; }
.town-tip { margin: 2px 0 4px; font-size: 13px; font-weight: 600; text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* 20261025tv 大厅卡片文字统一左对齐、一条一行 */
.town-bar { height: 6px; border-radius: 3px; background: rgba(0,0,0,.15); overflow: hidden; }
.town-bar i { display: block; height: 100%; background: linear-gradient(90deg, #f2c14e, #e0782b); border-radius: 3px; transition: width .6s ease; }
.town-bar.big { height: 9px; margin: 10px 0 4px; }
.town-sub { margin: 4px 0 0; font-size: 11px; color: #5a4628; text-align: left; }
.town-card .tm-chip { text-align: left; }
.town-settle { display: flex; align-items: center; gap: 6px; justify-content: center; margin: 6px auto 0; padding: 4px 10px; border-radius: 10px; background: rgba(120,190,90,.18); border: 1px solid rgba(160,210,120,.5); color: #e8f6d8; font-size: 13px; cursor: pointer; width: fit-content; max-width: 100%; }
.town-settle b { color: #ffe08a; }
.town-settle span:last-child { font-size: 12px; opacity: .9; }
/* 地图浮层 */
.town-ov { position: fixed; inset: 0; z-index: 140; background: #6fa553; display: flex; flex-direction: column; touch-action: none; user-select: none; -webkit-user-select: none; }
.town-top { display: flex; align-items: center; gap: 8px; padding: calc(env(safe-area-inset-top, 0px) + 8px) 10px 8px; background: linear-gradient(180deg, #4a2a12, #2f1a0a); color: #f3e0a6; z-index: 2; }
.town-top b { font: 700 16px "Noto Serif SC", serif; flex: 1; text-align: center; }
.town-top .town-back { background: none; border: 1px solid rgba(243,224,166,.5); color: #f3e0a6; border-radius: 8px; padding: 4px 9px; font-size: 13px; }
.town-bal { font-size: 12px; min-width: 64px; text-align: right; }
.town-shopbtn { display: inline-flex; align-items: center; gap: 4px; border: 0; border-radius: 999px; padding: 6px 12px; font-family: inherit; font-weight: 700; font-size: 14px; line-height: 1; color: #3a1d05; background: linear-gradient(180deg, #ffd96e, #e59a2b); box-shadow: 0 2px 0 #9a5a14, 0 0 0 2px rgba(255,236,170,.35); cursor: pointer; white-space: nowrap; animation: town-shop-glow 2.4s ease-in-out 3; } /* 20261026zx 顶栏商店：醒目 */
.town-shopbtn i { font-style: normal; font-size: 16px; }
.town-shopbtn:active { transform: translateY(1px); box-shadow: 0 1px 0 #9a5a14; }
@keyframes town-shop-glow { 50% { box-shadow: 0 2px 0 #9a5a14, 0 0 0 5px rgba(255,214,110,.45); } }
@media (max-width: 420px) { .town-top b { font-size: 14px; } .town-shopbtn { padding: 6px 10px; font-size: 13px; } .town-bal { min-width: 0; } }
.town-cv { flex: 1; width: 100%; min-height: 0; display: block; touch-action: none; cursor: grab; }
.town-dist { position: absolute; top: calc(env(safe-area-inset-top, 0px) + 54px); left: 10px; font: 700 13px "Noto Serif SC", serif; color: #fff8e0; background: rgba(60,35,15,.72); border-radius: 12px; padding: 3px 10px; pointer-events: none; }
.town-ctl { position: absolute; right: 10px; top: calc(env(safe-area-inset-top, 0px) + 54px); display: flex; flex-direction: column; gap: 6px; }
.town-ctl button { width: 38px; height: 38px; border-radius: 50%; border: 1px solid #c9a24a; background: rgba(40,24,10,.82); color: #f3e0a6; font-size: 18px; }
.town-mebar { position: absolute; left: 10px; right: 10px; bottom: calc(env(safe-area-inset-bottom, 0px) + 10px); display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-radius: 14px; background: rgba(40,24,10,.9); border: 1px solid #c9a24a; color: #f3e0a6; cursor: pointer; }
.town-mebar img { width: calc(54px * var(--tf, 1)); height: 48px; flex: 0 0 auto; object-fit: contain; } /* 20261027p 同档按 fill 变大改用 --tf（原内联 width:% 在 flex 行里按整行算，手机底栏图片撑满、文字挤成竖排） */
.town-mebar > div { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.town-mebar b { font-size: 14px; } .town-mebar span { font-size: 12px; opacity: .85; }
.town-mebar em { font-style: normal; font-size: 22px; opacity: .7; }
.town-load { margin: 0; padding: 6px; font-size: 13px; text-align: center; color: #f3e0a6; }
.town-sheet { position: absolute; inset: 0; z-index: 3; background: rgba(0,0,0,.45); display: flex; align-items: flex-end; }
.town-sheet.hidden { display: none; }
.town-sh-in { position: relative; width: 100%; max-height: 82%; overflow: auto; box-sizing: border-box; padding: 16px 14px calc(env(safe-area-inset-bottom, 0px) + 16px); border-radius: 18px 18px 0 0; background: linear-gradient(180deg, #2c1d0d, #170f06); color: #f3e0a6; border-top: 2px solid #c9a24a; animation: townUp .22s ease; touch-action: pan-y; }
@keyframes townUp { from { transform: translateY(40px); opacity: 0; } to { transform: none; opacity: 1; } }
.town-sh-x { position: absolute; right: 10px; top: 8px; width: 32px; height: 32px; border-radius: 50%; border: none; background: rgba(255,255,255,.1); color: #f3e0a6; font-size: 20px; }
.town-card-h { display: flex; gap: 10px; align-items: center; }
.town-av { width: 54px; height: 54px; border-radius: 50%; object-fit: cover; border: 2px solid #d4af37; }
.town-card-h b { font-size: 16px; }
.town-card-h p { margin: 4px 0 0; display: flex; flex-wrap: wrap; gap: 4px; }
.town-chip { font-size: 11px; padding: 1px 7px; border-radius: 9px; background: rgba(255,255,255,.08); border: 1px solid rgba(212,175,55,.4); display: inline-flex; align-items: center; gap: 4px; }
.town-chip i { width: 8px; height: 8px; border-radius: 2px; display: inline-block; }
.town-card-b { display: flex; gap: 10px; align-items: center; margin: 12px 0; padding: 8px; border-radius: 12px; background: linear-gradient(180deg, rgba(191,227,245,.15), rgba(167,207,127,.18)); }
.town-card-b img { width: calc(110px * var(--tf, 1)); height: 100px; flex: 0 0 auto; object-fit: contain; }
.town-card-b div { display: flex; flex-direction: column; gap: 3px; font-size: 13px; } .town-card-b b { font-size: 17px; color: #ffe08a; }
.town-acts { display: flex; gap: 10px; }
.town-btn { flex: 1; padding: 10px 0; border-radius: 12px; border: 1px solid #e0b94f; background: linear-gradient(180deg, #e3a83a, #a8641a); color: #fff8e0; font-size: 15px; font-weight: 700; }
.town-btn:disabled { opacity: .5; filter: grayscale(.4); }
.town-btn[data-short] { background: linear-gradient(180deg, #7a6a50, #4d4130); border-color: #8a7a5a; }
.town-btn.up { width: 100%; margin: 8px 0 4px; }
.town-mine-h { display: flex; gap: 12px; align-items: center; }
.town-mine-img { width: calc(130px * var(--tf, 1)); height: 118px; flex: 0 0 auto; object-fit: contain; filter: drop-shadow(0 4px 4px rgba(0,0,0,.4)); }
.town-mine-img.town-pop { animation: townPop 1.1s ease; }
@keyframes townPop { 0% { transform: scale(.4) translateY(20px); opacity: 0; filter: brightness(2.2) drop-shadow(0 0 18px #ffd75e); } 55% { transform: scale(1.14); opacity: 1; filter: brightness(1.5) drop-shadow(0 0 22px #ffd75e); } 100% { transform: none; filter: drop-shadow(0 4px 4px rgba(0,0,0,.4)); } }
.town-mine-h > div { display: flex; flex-direction: column; gap: 3px; font-size: 12px; } .town-mine-h b { font-size: 18px; color: #ffe08a; }
.town-need { margin: 0; font-size: 12px; }
.town-rules { margin: 8px 0; font-size: 12px; line-height: 1.6; } .town-rules summary { cursor: pointer; color: #ffe08a; }
.town-lvs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin: 8px 0; }
.town-lvs figure { margin: 0; text-align: center; opacity: .45; filter: grayscale(.7); } .town-lvs figure.got { opacity: 1; filter: none; }
.town-lvs figure.cur { outline: 1px solid #ffd75e; border-radius: 8px; }
.town-lvs img { width: 100%; aspect-ratio: 1 / .9; object-fit: contain; } .town-lvs figcaption { font-size: 10px; }
.town-hh { margin: 10px 0 4px; font-size: 13px; }
.town-hist { list-style: none; margin: 0; padding: 0; font-size: 12px; }
.town-hist li { display: flex; gap: 8px; padding: 4px 0; border-bottom: 1px dashed rgba(212,175,55,.2); } .town-hist time { opacity: .7; min-width: 86px; } .town-hist span { flex: 1; } .town-hist b { color: #9fe07a; }
.town-hist li.empty { opacity: .7; }
/* 20261024w 搬家：选地模式横幅 + 按钮 */
.town-btn.mv { width: 100%; margin: 4px 0 8px; background: linear-gradient(180deg, #5f8f4a, #36602a); border-color: #9fd27a; }
.town-btn.mv[data-short] { background: linear-gradient(180deg, #7a6a50, #4d4130); border-color: #8a7a5a; }
.town-pick { position: absolute; left: 50%; transform: translateX(-50%); top: calc(env(safe-area-inset-top, 0px) + 92px); display: flex; align-items: center; gap: 10px; max-width: calc(100% - 24px); padding: 8px 10px 8px 14px; border-radius: 16px; background: rgba(40,24,10,.9); border: 1px solid #ffe27a; color: #fff8e0; font-size: 13.5px; box-shadow: 0 4px 14px rgba(0,0,0,.35); z-index: 3; }
.town-pick b { color: #ffe27a; }
.town-pick button { flex: none; padding: 5px 12px; border-radius: 12px; border: 1px solid #c9a24a; background: #6b4a1e; color: #fff8e0; font-size: 13px; }
/* 20261024y 32 级 / 公共设施 / 小镇喜报 */
.town-lvs-h { margin: 10px 0 0; font-size: 11px; opacity: .75; }
.town-fac img { width: 130px; height: 110px; }
.town-fac-line { margin: 4px 2px 8px; font-size: 14px; line-height: 1.6; color: #f3e0a6; }
.hl-tag.hl-town { background: linear-gradient(90deg, #ffd75e, #ff9f43); color: #3a1004; }
.town-ctl button[data-a="all"] { font-size: 15px; }
.town-ctl button[data-a="rl"] { margin-top: 6px; } /* 20261025tv 转视角 */
/* 20261026zy 小镇界面统一规矩（设计稿 2026-10-26 第 4 节）：顶栏固定在最上面（面板打开也看得见）；底部卡片统一圆角 / 留白；
   只有按钮的那一行一律靠右并排（不再左一个右一个）；灰色说明默认最多两行，点一下展开 */
.town-top { position: relative; z-index: 5; }
.town-sh-in { border-radius: 20px 20px 0 0; padding: 18px 16px calc(env(safe-area-inset-bottom, 0px) + 18px); }
.town-sh-in h4 { font-size: 17px; margin: 0 40px 10px 0; line-height: 1.3; }
.town-sh-in h5 { font-size: 14px; }
.town-sh-in .tsoc-row:not(:has(> :not(button, .tsoc-b))) { justify-content: flex-end; }
.town-acts { justify-content: flex-end; }
.town-acts .town-btn { flex: 0 1 auto; min-width: 104px; padding: 10px 18px; }
.town-sh-in p.tsoc-mute { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; cursor: pointer; }
.town-sh-in p.tsoc-mute.open { display: block; -webkit-line-clamp: unset; }
/* 20261026zzc 小镇改版第 5 期：底部卡片统一奶油色（设计稿第 4 节）。只换卡片里的配色，地图上的浮条 / 顶栏不动。
   前缀 .town-sheet .town-sh-in 压过各模块运行时插的样式（tsoc / tes / tg / tm / tbz）；状态类（.sel / .on / :disabled）跟着重写一遍。
   对比度（WCAG）：正文 #3b2a17 / 底 #fbf6ea ≈ 13:1，灰字 #6b5535 ≈ 6.6:1，强调 #8a4e0a ≈ 6:1，主按钮深字 #3a1d05 / 金 #f0b44a ≈ 9:1 */
.town-sheet .town-sh-in { background: #fbf6ea; color: #3b2a17; border-top: 0; box-shadow: 0 -6px 24px rgba(40,24,10,.28); }
.town-sheet .town-sh-x { background: rgba(59,42,23,.08); color: #5a4126; }
.town-sheet .town-sh-in h4, .town-sheet .town-sh-in h5, .town-sheet .town-sh-in .tsoc-sec h5, .town-sheet .town-sh-in .tm-box h5 { color: #3b2a17; }
.town-sheet .town-sh-in b, .town-sheet .town-sh-in .town-card-b b, .town-sheet .town-sh-in .town-mine-h b, .town-sheet .town-sh-in .tes-q b, .town-sheet .town-sh-in .tbz-q b, .town-sheet .town-sh-in .tg-tier b { color: inherit; }
.town-sheet .town-sh-in em.n, .town-sheet .town-sh-in .town-need b, .town-sheet .town-sh-in .tes-shop-bal b, .town-sheet .town-sh-in .tes-th span, .town-sheet .town-sh-in .tm-top li.me { color: #8a4e0a; }
.town-sheet .town-sh-in .tsoc-mute, .town-sheet .town-sh-in .tes-bc-h, .town-sheet .town-sh-in .tes-shop-h, .town-sheet .town-sh-in .town-load, .town-sheet .town-sh-in .tm-rw, .town-sheet .town-sh-in .town-lvs-h { color: #6b5535; opacity: 1; }
.town-sheet .town-sh-in .town-fac-line, .town-sheet .town-sh-in .tg-tip, .town-sheet .town-sh-in .tsoc-hint { color: #4a3520; }
.town-sheet .town-sh-in a { color: #8a4e0a; }
/* 标题行：左标题 + 右边一句提示 */
.town-sheet .tc-h { display: flex; align-items: baseline; gap: 10px; margin: 0 40px 10px 0; }
.town-sheet .tc-h h4 { margin: 0; flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.town-sheet .tc-h > span { margin-left: auto; flex: 0 1 auto; font-size: 12px; color: #6b5535; text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* 分块 */
.town-sheet .town-sh-in .tsoc-sec, .town-sheet .town-sh-in .tm-box { background: #f4ecda; border: 1px solid #e6d6b2; border-radius: 14px; }
.town-sheet .town-sh-in .tes-q, .town-sheet .town-sh-in .tbz-q, .town-sheet .town-sh-in .tes-shop-bal span, .town-sheet .town-sh-in .tm-mats span { background: #f1e6cc; color: #3b2a17; }
.town-sheet .town-sh-in .town-card-b { background: linear-gradient(180deg, #eaf3f7, #eef4e2); }
.town-sheet .town-sh-in .town-chip { background: #f1e6cc; border-color: #dcc690; color: #5a4126; }
.town-sheet .town-sh-in .town-chip[style] { background: #3b2a17; border-color: #3b2a17; } /* 江湖色是给深底配的：放深色小牌子上 */
.town-sheet .town-sh-in .tes-li, .town-sheet .town-sh-in .tbz-li, .town-sheet .town-sh-in .tsoc-msgs li, .town-sheet .town-sh-in .tm-task, .town-sheet .town-sh-in .town-hist li { border-color: #e6d6b2; }
.town-sheet .town-sh-in .town-hist b, .town-sheet .town-sh-in .tm-need.ok b, .town-sheet .town-sh-in .tm-task.done em { color: #2f7a2f; }
.town-sheet .town-sh-in .tm-need b { color: #b0461a; }
.town-sheet .town-sh-in .tsoc-x { color: #b23a2a; }
.town-sheet .town-sh-in .tsoc-bar, .town-sheet .town-sh-in .tm-bar, .town-sheet .town-sh-in .town-bar { background: #e6d6b2; }
.town-sheet .town-sh-in .town-lvs figure.cur { outline-color: #c98a22; }
/* 按钮：主按钮金色深字；次按钮（.g / .mv / .ghost / 返回）白底描边 */
.town-sheet .town-sh-in .town-btn, .town-sheet .town-sh-in .tsoc-b, .town-sheet .town-sh-in .tes-go, .town-sheet .town-sh-in .tm-don button { background: linear-gradient(180deg, #ffd36a, #f0a93a); border: 1px solid #c98a22; color: #3a1d05; box-shadow: 0 2px 0 #b9781a; }
.town-sheet .town-sh-in .town-btn.mv, .town-sheet .town-sh-in .town-btn.ghost, .town-sheet .town-sh-in .tsoc-b.g, .town-sheet .town-sh-in .tf-go { background: #fff; border: 1px solid #d8c49a; color: #5a3f1c; box-shadow: none; }
.town-sheet .town-sh-in .town-btn[data-short], .town-sheet .town-sh-in .town-btn.mv[data-short] { background: #efe6d2; border-color: #d8c49a; color: #6b5535; box-shadow: none; }
.town-sheet .town-sh-in .town-btn:disabled, .town-sheet .town-sh-in .tsoc-b:disabled, .town-sheet .town-sh-in .tes-go:disabled { opacity: .5; filter: grayscale(.5); box-shadow: none; }
.town-sheet .town-sh-in .town-btn.like.on { background: #fff; border-color: #c98a22; color: #8a4e0a; box-shadow: none; }
.town-sheet .town-sh-in .town-btn.up, .town-sheet .town-sh-in .town-btn.mv { width: auto; margin: 0; }
.town-sheet .town-sh-in .town-acts { margin: 10px 0 4px; flex-wrap: wrap; }
/* 输入框 */
.town-sheet .town-sh-in input:not([type=checkbox]):not([type=radio]), .town-sheet .town-sh-in select, .town-sheet .town-sh-in .tsoc-in, .town-sheet .town-sh-in .tg-q input, .town-sheet .town-sh-in .tm-don input { background: #fff; color: #3b2a17; border: 1px solid #d8c49a; }
.town-sheet .town-sh-in input::placeholder { color: #9a8662; }
/* 选项卡 / 分类 / 横滑缩略图 / 格子 */
.town-sheet .town-sh-in .tsoc-tabs button, .town-sheet .town-sh-in .tg-cats button, .town-sheet .town-sh-in .tg-q button { background: #fff; border: 1px solid #d8c49a; color: #5a3f1c; }
.town-sheet .town-sh-in .tsoc-tabs button.on, .town-sheet .town-sh-in .tg-cats button.on { background: #f0c45a; border-color: #c98a22; color: #3a1d05; }
.town-sheet .town-sh-in .tes-th, .town-sheet .town-sh-in .tes-type, .town-sheet .town-sh-in .tg-inv button, .town-sheet .town-sh-in .tg-it, .town-sheet .town-sh-in .tsoc-item { background: #fff; border: 1px solid #e6d6b2; color: #3b2a17; }
.town-sheet .town-sh-in .tes-th.sel, .town-sheet .town-sh-in .tes-type.sel, .town-sheet .town-sh-in .tg-inv button.on { background: #fff3cf; border-color: #c98a22; }
.town-sheet .town-sh-in .tes-th:disabled, .town-sheet .town-sh-in .tes-type:disabled { filter: grayscale(1); opacity: .5; }
.town-sheet .town-sh-in .tes-th:disabled span { color: #6b5535; }
.town-sheet .town-sh-in .tg-tag { background: #f1e6cc; color: #5a4126; }
.town-sheet .town-sh-in .tg-tag.nu { background: #c8452f; color: #fff; }
.town-sheet .town-sh-in .tes-pads button, .town-sheet .town-sh-in .tsoc-grid button { background: #dcebc8; border-color: #c7d9a8; color: #2f3f1c; }
.town-sheet .town-sh-in .tes-pads button.has, .town-sheet .town-sh-in .tsoc-grid button.has { background: #f0c45a; color: #3a1d05; }
.town-sheet .town-sh-in .tes-pads button.lock, .town-sheet .town-sh-in .tsoc-grid button.no { background: #efe6d2; color: #8a7a5a; }
.town-sheet .town-sh-in .tes-pads button.sel, .town-sheet .town-sh-in .tsoc-grid button.sel { outline: 2px solid #8a4e0a; }
.town-sheet .town-sh-in .tes-pads .main { background: #f1e6cc; color: #5a4126; }
/* 名望铭牌（在卡片里） */
.town-sheet .town-sh-in .tf-uc { background: #f4ecda; border-color: #e6d6b2; color: #3b2a17; }
.town-sheet .town-sh-in .tf-uc b, .town-sheet .town-sh-in .tf-my { color: #8a4e0a; }
.town-sheet .town-sh-in .tf-pq-c { color: #7a3b12; }
/* 我家：收起来的「更多」 */
.town-sheet .town-more { margin: 10px 0 0; border-top: 1px solid #e6d6b2; padding-top: 6px; font-size: 12px; }
.town-sheet .town-more > summary { cursor: pointer; color: #8a4e0a; font-size: 13px; padding: 4px 0; }
.town-sheet .town-more p { line-height: 1.6; color: #4a3520; }
.town-sheet .town-mine-img { filter: drop-shadow(0 4px 4px rgba(60,40,10,.25)); }
/* 20261027g 同档逐级记号：花箱 ✿ · 壁灯 ● · 小旗 ⚑ · 门牌星 ★（和地图主屋一致） */
.town-orn { display: block; font-size: 10px; line-height: 1.3; letter-spacing: .5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: #8a6d3b; font-style: normal; }
.town-orn i { font-style: normal; margin-right: 2px; }
.town-orn .o-b { color: #d8435a; } .town-orn .o-l { color: #c08a1e; } .town-orn .o-f { color: #2f6fd0; } .town-orn .o-s { color: #e0a800; }
/* 20261029d 豪宅榜（大厅小镇卡正上方）：黑底血红边、金字，狂一点硬一点 */
.town-man { margin: 0 0 8px; padding: 8px 10px 6px; border-radius: 12px; background: linear-gradient(160deg, #2a0d0b 0%, #170807 70%); border: 1.5px solid #b3261e; box-shadow: 0 0 0 1px rgba(255,190,80,.18) inset, 0 4px 14px rgba(120,10,0,.35); color: #f8e6c4; }
.town-man-hd { display: flex; align-items: baseline; gap: 8px; }
.town-man-hd b { font-size: 17px; letter-spacing: 3px; color: #ffcf5a; font-weight: 900; }
.town-man-hd em { font-style: normal; font-size: 12px; color: #ff8a6a; font-weight: 700; flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.town-man-all { flex: none; border: 1px solid rgba(255,207,90,.6); background: rgba(255,207,90,.1); color: #ffdf8a; border-radius: 999px; padding: 2px 10px; font-size: 12px; font-weight: 700; cursor: pointer; }
.town-man ol { list-style: none; margin: 6px 0 0; padding: 0; }
.town-man li { display: flex; align-items: center; gap: 8px; padding: 3px 2px; border-bottom: 1px dashed rgba(255,140,90,.18); font-size: 13px; min-width: 0; }
.town-man li:last-child { border-bottom: 0; }
.town-man li i { flex: none; width: 22px; text-align: center; font-style: normal; font-weight: 900; color: #ffb347; }
.town-man li b { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-weight: 800; }
.town-man li span { flex: none; color: #ffcf5a; font-size: 12px; font-weight: 700; }
.town-man li.me { background: rgba(179,38,30,.28); border-radius: 6px; }
.town-man-me { margin: 4px 0 0; font-size: 12px; color: #ffb59c; font-weight: 700; }
.town-man-me b { color: #ffdf5a; font-size: 14px; }
