:root{/* 变量全部由 themes.css 定义，此处不再写死色值 */}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{font-family:var(--font-base,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif);background:var(--body-bg);color:var(--txt);font-size:14px;line-height:1.55;overflow:hidden}
img{display:block;max-width:100%}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,select{font-family:inherit;outline:none}
::-webkit-scrollbar{width:0;height:0}

/* 手机外壳（PC访问时居中显示） */
.phone{position:relative;width:100%;max-width:480px;height:100%;margin:0 auto;background:var(--app-bg);display:flex;flex-direction:column;box-shadow:0 0 60px rgba(0,0,0,.6);overflow:hidden}
.view{flex:1;overflow-y:auto;overflow-x:hidden;padding-bottom:84px;-webkit-overflow-scrolling:touch}
.page{display:none;animation:fade .25s ease}
.page.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* 顶部 */
.topbar{position:sticky;top:0;z-index:20;padding:14px 16px 10px;background:var(--topbar-bg);backdrop-filter:blur(8px)}
.topbar .brand{display:flex;align-items:center;gap:10px}
.topbar .brand.brand-col{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;text-align:left;width:auto;gap:10px}
.brand-mark{display:flex;flex-direction:column;align-items:center;gap:4px;flex:0 0 auto}
.brand-mark img{width:46px;height:46px;object-fit:contain;border-radius:12px;display:block}
.brand-mark h1#home-shop{font-size:13px;line-height:1;margin:0;letter-spacing:1px;font-weight:700;white-space:nowrap}
.brand.brand-col > p#home-slogan{font-size:12px;color:var(--gold);letter-spacing:0;margin:0;white-space:nowrap}
.brand .brand-mark .bd-dark{display:none}
:root[data-theme="2"] .brand .brand-mark .bd-light{display:none}
:root[data-theme="2"] .brand .brand-mark .bd-dark{display:block}
.logo-dot{width:34px;height:34px;border-radius:11px;background:linear-gradient(135deg,var(--gold),var(--gold2));display:flex;align-items:center;justify-content:center;font-size:19px}
.shop-meta{margin-top:8px;font-size:11px;color:var(--txt3)}
.notice{margin-top:10px;display:flex;align-items:center;gap:8px;background:var(--notice-bg);border:1px solid var(--notice-line);color:var(--notice-fg);padding:7px 10px;border-radius:10px;font-size:12px;overflow:hidden}
.notice .ic{flex:0 0 auto}
.notice span{white-space:nowrap;display:inline-block}

.section{padding:16px 16px 4px}
.sec-head{display:flex;align-items:center;justify-content:space-between;margin:18px 16px 10px}
.sec-head h2{font-size:16px;display:flex;align-items:center;gap:7px}
.sec-head h2::before{content:"";width:4px;height:15px;border-radius:2px;background:linear-gradient(var(--gold),var(--gold2))}
.sec-head .more{font-size:12px;color:var(--txt3)}

/* banner */
.banner{margin:14px 16px 0;border-radius:18px;padding:20px 18px;background:var(--banner-bg);position:relative;overflow:hidden;box-shadow:var(--shadow)}
.banner::after{content:"🎭";position:absolute;right:-6px;bottom:-16px;font-size:96px;opacity:.16}
.banner .t{font-size:20px;font-weight:700;letter-spacing:1px;color:var(--banner-t)}
.banner .s{font-size:12px;margin:5px 0 12px;letter-spacing:1px;color:var(--banner-s)}
.banner .bts{display:flex;gap:10px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 16px;border-radius:999px;font-size:13px;font-weight:600;transition:transform .1s,opacity .2s}
.btn:active{transform:scale(.96)}
.btn-gold{background:linear-gradient(135deg,var(--gold),var(--gold2));color:var(--gold-fg)}
.btn-ghost{background:var(--ghost-bg);color:var(--txt);border:1px solid var(--ghost-line)}
.btn-red{background:linear-gradient(135deg,var(--red),var(--red2));color:var(--red-fg)}
.btn-line{background:transparent;border:1px solid var(--line);color:var(--txt2)}
.btn-wechat{background:linear-gradient(135deg,#07c160,#05a34f);color:#fff}
.btn[disabled]{opacity:.45;pointer-events:none}
.divider-line{display:flex;align-items:center;gap:10px;color:var(--txt3);font-size:11px;margin:12px 0}
.divider-line::before,.divider-line::after{content:"";flex:1;height:1px;background:var(--line)}
.btn.block{width:100%;padding:13px;font-size:15px;border-radius:12px}

/* 快捷入口 */
.quick{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:16px}
.quick a{display:flex;flex-direction:column;align-items:center;gap:7px;text-decoration:none;color:var(--txt2);font-size:12px}
.quick .qi{width:50px;height:50px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:24px;background:var(--card2);border:1px solid var(--line)}

/* 剧本卡片 */
.hscroll{display:flex;gap:12px;overflow-x:auto;padding:0 16px 4px;scroll-snap-type:x mandatory}
.script-mini{flex:0 0 150px;scroll-snap-align:start;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.cover{position:relative;border-radius:13px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.cover .em{font-size:40px;filter:drop-shadow(0 4px 10px rgba(0,0,0,.4));z-index:1}
.cover::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 30% 20%,rgba(255,255,255,.22),transparent 60%)}
.cover-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:2;display:block}
.char-list{display:flex;flex-direction:column;gap:8px}
.char-item{display:flex;gap:10px;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-radius:11px;padding:10px 12px}
.char-name{flex:0 0 auto;min-width:64px;font-weight:700;font-size:13px;color:var(--gold);padding-top:1px}
.char-desc{flex:1;font-size:12.5px;color:var(--txt2);line-height:1.6}
.script-mini .cover{height:120px;border-radius:0}
.script-mini .info{padding:9px 10px}
.script-mini .tt{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.script-mini .meta{font-size:11px;color:var(--txt3);margin-top:3px}
.script-mini .pr{color:var(--gold);font-size:12px;margin-top:3px}

.chips{display:flex;gap:8px;overflow-x:auto;padding:4px 16px 10px;position:sticky;top:0;background:var(--bg);z-index:5}
.chip{flex:0 0 auto;padding:6px 14px;border-radius:999px;background:var(--card);border:1px solid var(--line);color:var(--txt2);font-size:13px}
.chip.on{background:linear-gradient(135deg,var(--red),var(--red2));color:var(--red-fg);border-color:transparent}
.searchbar{margin:12px 16px 4px;display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:9px 12px}
.searchbar input{flex:1;background:transparent;border:none;color:var(--txt);font-size:14px}
.filterrow{display:flex;gap:8px;margin:8px 16px 2px;font-size:12px;color:var(--txt3)}
.filterrow select{background:var(--card);color:var(--txt2);border:1px solid var(--line);border-radius:8px;padding:4px 6px;font-size:12px}

.list{padding:6px 16px 20px;display:flex;flex-direction:column;gap:12px}
.script-card{display:flex;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px}
.script-card .cover{flex:0 0 96px;height:118px;border-radius:11px;font-size:40px}
.script-card .sc-info{flex:1;min-width:0;display:flex;flex-direction:column}
.script-card .tt{font-size:15px;font-weight:700;display:flex;align-items:center;gap:6px}
.script-card .cat{font-size:11px;color:var(--gold)}
.tagline{display:flex;flex-wrap:wrap;gap:5px;margin:6px 0}
.tag{font-size:10px;padding:2px 7px;border-radius:6px;background:var(--tag-bg);color:var(--txt2);border:1px solid var(--tag-line)}
.tag.hot{color:var(--danger);border-color:var(--tint-red);background:var(--tint-red)}
.sc-meta{display:flex;gap:12px;font-size:11px;color:var(--txt3);margin-top:auto}
.sc-foot{display:flex;align-items:center;justify-content:space-between;margin-top:6px}
.price{color:var(--gold);font-weight:700}
.price small{font-size:10px;color:var(--txt3);font-weight:400}
.badge{position:absolute;top:6px;left:6px;z-index:2;font-size:10px;padding:2px 7px;border-radius:7px;font-weight:700}
.badge.hot{background:linear-gradient(135deg,var(--red),var(--red2));color:var(--red-fg)}
.badge.new{background:linear-gradient(135deg,var(--green),#3a8f5c);color:#fff}
.badge.rec{background:linear-gradient(135deg,var(--gold),var(--gold2));color:var(--gold-fg)}

/* 拼车卡片 */
.date-strip{display:flex;gap:8px;overflow-x:auto;padding:12px 16px 8px}
.date-cell{flex:0 0 auto;width:58px;padding:9px 0;text-align:center;border-radius:13px;background:var(--card);border:1px solid var(--line)}
.date-cell .wd{font-size:11px;color:var(--txt3)}
.date-cell .dd{font-size:17px;font-weight:700;margin-top:2px}
.date-cell.on{background:linear-gradient(135deg,var(--red),var(--red2));border-color:transparent}
.date-cell.on .wd,.date-cell.on .dd{color:var(--red-fg)}
.car-list{padding:4px 16px 20px;display:flex;flex-direction:column;gap:12px}
.car{background:var(--card);border:1px solid var(--line);border-radius:15px;overflow:hidden}
.car-main{display:flex;gap:12px;padding:12px}
.car .cover{flex:0 0 66px;height:66px;font-size:30px;border-radius:12px}
.car .ci{flex:1;min-width:0}
.car .tt{font-size:15px;font-weight:700}
.car .sub{font-size:11.5px;color:var(--txt3);margin-top:4px;display:flex;flex-wrap:wrap;gap:4px 10px}
.car .sub b{color:var(--txt2);font-weight:600}
.car-progress{padding:0 12px 12px}
.prog-row{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--txt2)}
.prog{flex:1;height:6px;border-radius:3px;background:var(--prog-bg);overflow:hidden}
.prog i{display:block;height:100%;background:linear-gradient(90deg,var(--gold),var(--gold2));border-radius:3px}
.prog.full i{background:linear-gradient(90deg,var(--green),#3a8f5c)}
.car-act{padding:0 12px 12px;display:flex;gap:8px;align-items:center}
.pill{font-size:10px;padding:2px 8px;border-radius:999px}
.pill.open{background:var(--tint-blue);color:var(--blue)}
.pill.full{background:var(--tint-green);color:var(--green)}
.pill.playing{background:var(--tint-gold);color:var(--gold)}
.pill.done{background:var(--tag-bg);color:var(--txt3)}
.pill.canceled{background:var(--tint-red);color:var(--danger)}

/* 我的 */
.me-head{margin:14px 16px;padding:18px;border-radius:18px;background:var(--mehead-bg);border:1px solid var(--line);position:relative;overflow:hidden}
.me-head::after{content:"🎖️";position:absolute;right:10px;bottom:-10px;font-size:80px;opacity:.12}
.me-top{display:flex;align-items:center;gap:13px}
.avatar{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,var(--gold),var(--gold2));display:flex;align-items:center;justify-content:center;font-size:28px}
.me-top .nm{font-size:18px;font-weight:700}
.lv{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:2px 9px;border-radius:999px;margin-top:5px;background:var(--tint-gold);color:var(--gold);border:1px solid var(--tint-gold)}
.me-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:16px}
.me-stat{background:var(--me-stat-bg);border-radius:12px;padding:10px;text-align:center}
.me-stat .v{font-size:18px;font-weight:700;color:var(--gold)}
.me-stat .k{font-size:11px;color:var(--txt3);margin-top:2px}
.login-prompt{margin:14px 16px;padding:30px 20px;text-align:center;background:var(--card);border:1px dashed var(--line);border-radius:18px}
.login-prompt .big{font-size:40px}
.login-prompt p{color:var(--txt2);margin:10px 0 16px;font-size:13px}
.menu{margin:14px 16px;background:var(--card);border:1px solid var(--line);border-radius:15px;overflow:hidden}
.menu-item{display:flex;align-items:center;gap:12px;padding:14px 15px;border-bottom:1px solid var(--line);font-size:14px}
.menu-item:last-child{border-bottom:none}
.menu-item .mi-ic{width:30px;height:30px;border-radius:9px;background:var(--card2);display:flex;align-items:center;justify-content:center;font-size:16px}
.menu-item .arrow{margin-left:auto;color:var(--txt3)}
.menu-item .val{margin-left:auto;color:var(--txt3);font-size:12px}

/* 底部Tab */
.tabbar{position:absolute;bottom:0;left:0;right:0;z-index:30;height:68px;background:var(--tabbar-bg);backdrop-filter:blur(12px);border-top:1px solid var(--line);display:flex;padding-bottom:env(safe-area-inset-bottom)}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--txt3);font-size:11px}
.tab .tic{font-size:21px;line-height:1}
.tab.on{color:var(--gold)}

/* 弹层 */
.mask{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:60;display:none;align-items:flex-end;justify-content:center}
.mask.show{display:flex;animation:fade .2s}
.sheet{width:100%;max-width:480px;max-height:88vh;overflow-y:auto;background:var(--bg2);border-radius:20px 20px 0 0;border-top:1px solid var(--line);animation:up .28s cubic-bezier(.2,.8,.2,1)}
.mask.center{align-items:center}
.mask.center .sheet{border-radius:20px;max-width:420px;width:calc(100% - 40px)}
@keyframes up{from{transform:translateY(100%)}to{transform:none}}
.sheet-head{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;padding:16px 18px;background:var(--bg2);border-bottom:1px solid var(--line);z-index:2}
.sheet-head h3{font-size:16px}
.sheet-head .x{font-size:22px;color:var(--txt3);line-height:1}
.sheet-body{padding:16px 18px 26px}

.field{margin-bottom:14px}
.field label{display:block;font-size:12px;color:var(--txt2);margin-bottom:6px}
.field input,.field select,.field textarea{width:100%;background:var(--card);border:1px solid var(--line);border-radius:11px;padding:12px 13px;color:var(--txt);font-size:14px}
.field textarea{resize:vertical;min-height:70px}
.tabs-switch{display:flex;background:var(--card);border-radius:11px;padding:4px;margin-bottom:16px}
.tabs-switch button{flex:1;padding:9px;border-radius:8px;font-size:14px;color:var(--txt2)}
.tabs-switch button.on{background:linear-gradient(135deg,var(--red),var(--red2));color:var(--red-fg)}

/* 剧本详情 */
.detail-cover{height:180px;border-radius:14px;display:flex;align-items:center;justify-content:center;margin-bottom:14px;position:relative;overflow:hidden}
.detail-cover .em{font-size:72px;z-index:1;filter:drop-shadow(0 6px 16px rgba(0,0,0,.5))}
.detail-cover::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 30% 20%,rgba(255,255,255,.2),transparent 60%)}
.detail-title{font-size:21px;font-weight:800}
.info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;margin:14px 0}
.info-cell{background:var(--card);border:1px solid var(--line);border-radius:11px;padding:10px 12px}
.info-cell .k{font-size:11px;color:var(--txt3)}
.info-cell .v{font-size:14px;font-weight:600;margin-top:2px}
.story-box{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:13px;font-size:13px;color:var(--txt2);line-height:1.8;white-space:pre-wrap}
.dm-line{display:flex;align-items:center;gap:9px;background:var(--tint-gold);border:1px solid var(--tint-gold);border-radius:11px;padding:10px 12px;font-size:12.5px;color:var(--gold);margin:12px 0}
.session-pick{display:flex;align-items:center;justify-content:space-between;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:9px}
.session-pick .d{font-weight:700}.session-pick .t{font-size:12px;color:var(--txt3)}

/* 名单 */
.roster{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 4px}
.roster .p{display:flex;align-items:center;gap:5px;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:5px 11px 5px 6px;font-size:12px}
.roster .p.checked{border-color:var(--tint-green);background:var(--tint-green)}
.roster .pa{width:22px;height:22px;border-radius:50%;background:var(--card2);display:flex;align-items:center;justify-content:center;font-size:12px}
.empty{text-align:center;color:var(--txt3);padding:50px 20px;font-size:13px}
.empty .e{font-size:46px;display:block;margin-bottom:10px;opacity:.6}
.toast{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);background:var(--toast-bg);border:1px solid var(--line);color:var(--txt);padding:12px 20px;border-radius:12px;font-size:13px;z-index:200;max-width:80%;text-align:center;display:none;box-shadow:var(--shadow)}
.rule-box{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:13px;font-size:12.5px;color:var(--txt2);line-height:1.9;white-space:pre-wrap}
.recharge-opt{display:flex;flex-direction:column;align-items:center;gap:2px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--card);flex:1}
.recharge-opt.on{border-color:var(--gold);background:var(--tint-gold)}
.recharge-opt .amt{font-size:18px;font-weight:800;color:var(--gold)}.recharge-opt .gift{font-size:11px;color:var(--green)}
.recharge-row{display:flex;gap:10px;margin-bottom:12px}

/* 主题选择器（门店设置） */
.theme-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:6px 0 4px}
.theme-cell{padding:10px 4px;border:2px solid var(--line);border-radius:12px;text-align:center;cursor:pointer;background:var(--card)}
.theme-cell .sw{width:100%;height:34px;border-radius:8px;margin-bottom:6px}
.theme-cell .nm{font-size:10.5px;color:var(--txt2);line-height:1.2}
.theme-cell.on{border-color:var(--gold)}
.theme-hint{font-size:11px;color:var(--txt3);line-height:1.6;margin:4px 0 4px}

@media(min-width:481px){body{background:var(--body-bg)}}

/* ============ 品牌 logo（浅/深两版，按 data-theme 切 src 显隐）============ */
.bd-dark{display:none}
:root[data-theme="2"] .bd-light{display:none}
:root[data-theme="2"] .bd-dark{display:block}
/* 首页 topbar 图形徽标：白卡承托浅版，深版融入炭黑 */
.logo-dot.brand-mark{background:transparent;padding:0;overflow:hidden}
.logo-dot.brand-mark img{width:100%;height:100%;object-fit:contain;border-radius:11px;display:block}
/* 登录/关于门店 完整竖版 */
.login-logo{display:flex;justify-content:center;margin:2px 0 14px}
.login-logo img{height:92px;width:auto;object-fit:contain;border-radius:12px;box-shadow:var(--shadow)}
/* 我的 未登录大徽标 */
.brand-mark-me{display:flex;align-items:center;justify-content:center}
.brand-mark-me img{width:96px;height:96px;object-fit:contain;border-radius:16px}
.brand-me-h{display:flex;flex-direction:column;align-items:center;gap:6px;margin-bottom:6px}
.brand-me-h .brand-mark{width:54px;height:54px;border-radius:14px;display:flex;align-items:center;justify-content:center;overflow:hidden;flex:none}
.brand-me-h .brand-mark img{width:54px;height:54px;object-fit:contain;display:block}
.brand-me-h .brand-txt{display:flex;flex-direction:column;align-items:center;gap:3px}
.brand-me-h .me-shop{font-size:20px;letter-spacing:1px}
.brand-me-h .me-slogan{font-size:12px;color:var(--gold);letter-spacing:2px}
.brand-me-h .brand-mark .bd-dark{display:none}
:root[data-theme="2"] .brand-me-h .brand-mark .bd-light{display:none}
:root[data-theme="2"] .brand-me-h .brand-mark .bd-dark{display:block}
.brand-me-h .bd-dark{display:none}
:root[data-theme="2"] .brand-me-h .bd-light{display:none}
:root[data-theme="2"] .brand-me-h .bd-dark{display:block}

/* ============ 剧本详情 · 融合版（版1沉浸顶 + 版2戏票下半）============ */
.dt-hero{position:relative;height:430px;overflow:hidden;background:#2a2520;margin:-18px -16px 0}
.dt-hero .dt-blur{position:absolute;inset:0;background-size:cover;background-position:center;filter:blur(28px) brightness(.72) scale(1.15)}
.dt-hero .dt-veil{position:absolute;inset:0;background:linear-gradient(to bottom,rgba(20,17,14,.25),rgba(0,0,0,0) 42%,var(--bg) 97%)}
.dt-hero .dt-poster{position:absolute;left:50%;bottom:6px;transform:translateX(-50%);height:370px;max-width:86%;display:flex;align-items:flex-end;justify-content:center}
.dt-hero .dt-poster img{height:370px;width:auto;max-width:100%;object-fit:contain;border-radius:6px;box-shadow:0 18px 40px rgba(0,0,0,.45)}
.dt-pf{height:370px;width:280px;border-radius:6px;background:linear-gradient(160deg,#3a332b,#191512);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#e9e2d4;gap:10px}
.dt-pf .t{font-size:30px;letter-spacing:5px;font-weight:800}
.dt-pf .s{font-size:12px;opacity:.7}
.dt-info{margin:-46px 2px 0;position:relative;z-index:5}
.dt-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:18px 16px;box-shadow:var(--shadow)}
.dt-title{font-size:24px;font-weight:800;letter-spacing:.5px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;color:var(--txt)}
.dt-title .dt-price{font-size:15px;color:var(--red);font-weight:800}
.dt-lead{font-size:13px;color:var(--txt2);margin-top:7px;line-height:1.6}
.dt-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:13px}
.dt-tag{font-size:12px;color:var(--txt);background:var(--bg);border:1px solid var(--line);padding:5px 10px;border-radius:999px}
.dt-tag.hot{background:var(--tint-red);color:var(--red);border-color:transparent;font-weight:700}
.dt-pref{display:flex;gap:10px;margin-top:14px}
.dt-pref-btn{flex:1;padding:9px 0;border-radius:12px;border:1px solid var(--line);background:var(--bg);color:var(--txt);font-size:13px;font-weight:600}
.dt-pref-btn.on-like{background:var(--tint-red);color:var(--red);border-color:transparent}
.dt-pref-btn.on-dis{background:var(--line);color:var(--txt3);border-color:transparent}
.dt-sect{margin-top:20px}
.dt-sect-h{margin-bottom:11px}
.dt-sect-h .dt-rule{display:inline-flex;align-items:center;gap:10px;color:var(--red);font-weight:800;letter-spacing:3px;font-size:13px}
.dt-sect-h .dt-rule::before,.dt-sect-h .dt-rule::after{content:"";width:24px;height:1px;background:var(--red);opacity:.5}
.dt-storycard{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px 17px;
  background-image:radial-gradient(circle at 12px 50%,transparent 5px,var(--card) 6px),radial-gradient(circle at calc(100% - 12px) 50%,transparent 5px,var(--card) 6px)}
.dt-story{font-size:13.5px;line-height:1.9;color:var(--txt2);text-align:justify}
/* 人物横向滑动大卡 */
.dt-chscroll{display:flex;gap:12px;overflow-x:auto;padding:4px 2px 14px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}
.dt-chscroll::-webkit-scrollbar{display:none}
.dt-ch{flex:0 0 158px;scroll-snap-align:start;background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.dt-ch .dt-chart{height:180px;background:var(--bg);display:flex;align-items:center;justify-content:center;overflow:hidden}
.dt-ch .dt-chart img{height:180px;width:100%;object-fit:contain}
.dt-cbody{padding:11px 13px 14px}
.dt-cname{font-size:15px;font-weight:800;color:var(--txt)}
.dt-cdesc{font-size:12px;color:var(--txt3);line-height:1.6;margin-top:6px}
.dt-muted{font-size:12px;color:var(--txt3);background:var(--card);border:1px dashed var(--line);border-radius:12px;padding:16px;text-align:center}
/* 票根场次卡 */
.dt-sess{display:flex;flex-direction:column;gap:11px}
.dt-se{display:flex;align-items:center;gap:13px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:13px 14px}
.dt-when{width:52px;flex:0 0 52px}
.dt-when .d{font-size:14px;font-weight:800;color:var(--txt)}
.dt-when .t{font-size:11px;color:var(--txt3);margin-top:2px}
.dt-mid{flex:1;min-width:0}
.dt-room{font-size:13.5px;font-weight:700;color:var(--txt)}
.dt-pbar{height:5px;background:var(--prog-bg);border-radius:99px;margin-top:7px;overflow:hidden}
.dt-pbar i{display:block;height:100%;background:var(--red);border-radius:99px}
.dt-p{font-size:11px;color:var(--txt3);margin-top:5px}
.dt-join{font-size:12px;color:var(--bg);background:var(--txt);padding:7px 12px;border-radius:999px;white-space:nowrap;border:0}
.dt-se.full .dt-join{background:var(--line);color:var(--txt3)}
.dt-join.done{background:var(--ok);color:#fff}
.dm-line,.dt-dmline{font-size:12px;color:var(--txt2);margin-top:14px}
/* 底部固定报名条（fixed 贴底，不随滚动重叠内容） */
.mask .sheet:has(.dt-cta){padding-bottom:calc(108px + env(safe-area-inset-bottom,0px))}
.dt-cta{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;align-items:center;gap:12px;
  max-width:420px;margin:0 auto;background:var(--card);
  border:1px solid var(--line);border-radius:16px 16px 0 0;padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));box-shadow:0 -8px 24px rgba(0,0,0,.12)}
.dt-cta-l{flex:1;min-width:0}
.dt-cta .p1{font-size:14.5px;font-weight:800;color:var(--txt)}
.dt-cta .p2{font-size:11.5px;color:var(--txt3);margin-top:3px}
.dt-cta-btn{margin-left:auto;background:var(--red);color:var(--red-fg);border:0;border-radius:999px;padding:12px 22px;font-size:14.5px;font-weight:800;white-space:nowrap}
.dt-cta-btn.ghost{background:var(--ghost-bg);color:var(--txt)}
/* 图标通用 */
.tic svg,.qi svg{width:22px;height:22px}
.qi{display:flex;align-items:center;justify-content:center}

/* 登录弹层：协议同意行 */
.agree-row{display:flex;align-items:center;flex-wrap:wrap;gap:2px;
  margin:2px 2px 13px;font-size:11.5px;color:var(--txt2);line-height:1.5}
.agree-row input[type="checkbox"]{width:15px;height:15px;margin:0 6px 0 0;accent-color:var(--gold);cursor:pointer;flex:0 0 auto}
.agree-row label{margin:0;cursor:pointer}
.agree-row a{color:var(--gold);text-decoration:none}

/* 首页底部备案/协议页脚 */
.site-foot{text-align:center;padding:24px 16px calc(96px + env(safe-area-inset-bottom,0px));
  color:var(--txt3);font-size:11px;line-height:2}
.site-foot a{color:var(--txt2);text-decoration:none}
.site-foot a.beian{display:block;margin-top:7px}
.site-foot .sep{margin:0 7px;color:var(--line)}
