/* ===== 爱情拼桌 · 皮肤层（真源对齐 ai.ws.hi.cn 生产令牌：莓酱红 × 深海绿 × 暖米纸 × 古铜金）=====
   H1 浅色为体（无黑底）· H2 零装饰阴影 · H4 禁原生弹窗 · 最小字号 10px · 强色单屏 ≤1 主 CTA */
:root{
  /* 通用皮肤令牌已上移至 ai 站单一真源 shared/tokens-ai.css（2026-10-16 · Task-170）：
     莓酱红 --berry-* / 深海绿 --abyss-* / 暖米纸 --paper-* / 古铜金 --gold / 字号 --fs-* 等 62 项。
     改主色请改真源，本站只读消费。以下仅保留「爱情拼桌」域自有令牌（真源中不存在的扩展项）。 */
  --r-full:999px;          /* 域自有：胶囊圆角（真源无） */
  --fs-22:22px;            /* 域自有：22px 字号档（真源无） */
  --shadow:none;           /* H2 铁律：零装饰阴影 */
  --x-font-serif:"Noto Serif SC","Songti SC","SimSun",serif;
  --x-font-sans:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;}
body{
  font-family:var(--x-font-sans);background:var(--paper-2);color:var(--ink-700);
  font-size:var(--fs-14);line-height:var(--lh-base);-webkit-font-smoothing:antialiased;
}

/* ===== 手机框（桌面预览居中，移动端满宽）===== */
#app{height:100vh;height:100dvh;display:flex;justify-content:center;overflow:hidden;}
.phone{
  position:relative;width:100%;max-width:430px;height:100%;background:var(--paper);
  border-left:1px solid var(--hair);border-right:1px solid var(--hair);
  display:flex;flex-direction:column;overflow:hidden;
}

/* ===== 手机内屏通用 ===== */
.screen{flex:1 1 auto;display:flex;flex-direction:column;overflow:hidden;background:var(--paper);}
.p-scroll{flex:1 1 auto;overflow-y:auto;padding:0 18px 14px;}
.p-scroll::-webkit-scrollbar{width:0;}

.nav-top{display:flex;align-items:center;gap:10px;padding:calc(14px + env(safe-area-inset-top,0px)) 18px 10px;flex:none;}
.nav-top .back{width:28px;height:28px;border-radius:var(--r-full);border:1px solid var(--hair);display:flex;align-items:center;justify-content:center;background:transparent;cursor:pointer;color:var(--ink-700);font-size:var(--fs-14);line-height:1;}
.nav-top .ttl{font-family:var(--x-font-serif);font-size:var(--fs-16);color:var(--ink-900);letter-spacing:var(--ls-md);}
.nav-top .right{margin-left:auto;font-size:var(--fs-10);color:var(--ink-500);letter-spacing:var(--ls-sm);}

.masthead{padding:calc(20px + env(safe-area-inset-top,0px)) 22px 0;text-align:center;flex:none;}
.mh-meta{font-size:var(--fs-10);letter-spacing:var(--ls-sm);color:var(--ink-500);}
.mh-title{font-family:var(--x-font-serif);font-size:var(--fs-26);font-weight:700;letter-spacing:var(--ls-lg);color:var(--ink-900);margin-top:6px;line-height:1.3;}
.mh-a2a{margin-top:5px;font-size:var(--fs-10);letter-spacing:var(--ls-md);color:var(--abyss);}
.mh-rule{margin:12px 0 0;border-top:1px solid var(--ink-900);border-bottom:1px solid var(--hair);height:3px;}

.card{background:var(--paper-3);border:1px solid var(--hair);border-radius:var(--r-lg);padding:18px;margin-top:14px;}
.card--ghost{background:var(--paper-2);border-color:transparent;color:var(--ink-300);font-size:var(--fs-12);text-align:center;padding:22px 18px;letter-spacing:var(--ls-sm);}
.card--gold{background:var(--paper-3);border:1px solid var(--gold);}
.card--sunken{background:var(--paper-2);border-color:transparent;}

.kicker{display:flex;align-items:center;gap:8px;font-size:var(--fs-10);font-weight:600;letter-spacing:var(--ls-2xl);color:var(--octo-red-600);justify-content:center;}
.kicker::before,.kicker::after{content:'';width:18px;height:1px;background:rgba(var(--octo-red-rgb),.4);}
.h-lg{font-family:var(--x-font-serif);font-size:var(--fs-26);font-weight:700;color:var(--abyss);letter-spacing:var(--ls-lg);text-align:center;margin:12px 0 0;line-height:1.35;}
.h-md{font-family:var(--x-font-serif);font-size:var(--fs-16);font-weight:700;color:var(--ink-900);letter-spacing:var(--ls-sm);margin:0;}
.sub{font-size:var(--fs-12);color:var(--ink-500);text-align:center;letter-spacing:var(--ls-xs);line-height:var(--lh-relaxed);margin:10px auto 0;max-width:280px;}
.hair{height:1px;background:var(--hair);margin:16px 0;border:none;}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:46px;padding:0 26px;
  background:var(--octo-red-600);color:var(--on-red);font-family:var(--x-font-serif);font-size:var(--fs-16);
  font-weight:700;letter-spacing:var(--ls-md);border:none;border-radius:var(--r-full);cursor:pointer;width:100%;}
.btn:hover{filter:brightness(1.04);} .btn:active{transform:scale(.98);}
.btn--ghost{background:transparent;border:1px solid var(--hair);color:var(--ink-700);font-size:var(--fs-14);}
.btn--ghost:hover{border-color:rgba(var(--octo-red-rgb),.3);background:var(--paper-2);}
.btn--block{margin-top:14px;}
.btn--federal{margin-top:10px;background:linear-gradient(135deg,#ff5a7e,#ff8a5b);color:#fff;border:none;font-weight:600;text-decoration:none;}
.btn--federal:hover{filter:brightness(1.05);color:#fff;}
.btn--sm{height:38px;font-size:var(--fs-12);padding:0 16px;letter-spacing:var(--ls-sm);}
.btn[disabled]{background:var(--paper-2);color:var(--ink-300);cursor:not-allowed;}

.chip{display:inline-flex;align-items:center;height:32px;padding:0 14px;border-radius:var(--r-full);border:1px solid var(--hair);
  background:var(--paper-3);color:var(--ink-700);font-size:var(--fs-12);letter-spacing:var(--ls-xs);cursor:pointer;user-select:none;}
.chip.on{background:var(--abyss-700);border-color:var(--abyss-700);color:var(--on-red);}
.chip--gold.on{background:var(--berry-600);border-color:var(--berry-600);}
.chips{display:flex;flex-wrap:wrap;gap:8px;}

.label{font-size:var(--fs-12);color:var(--ink-900);letter-spacing:var(--ls-sm);margin:18px 0 8px;display:flex;align-items:center;gap:6px;}
.label .req{color:var(--octo-red-600);font-size:var(--fs-10);}
.field{height:46px;border:1px solid var(--hair);border-radius:var(--r-md);background:var(--paper-3);display:flex;align-items:center;padding:0 14px;
  font-size:var(--fs-14);color:var(--ink-700);letter-spacing:var(--ls-xs);width:100%;font-family:inherit;}
.field--muted{color:var(--ink-500);}
.field::placeholder{color:var(--ink-300);}
.hint{font-size:var(--fs-10);color:var(--ink-500);margin-top:6px;line-height:var(--lh-relaxed);letter-spacing:var(--ls-xs);}
.hint--red{color:var(--octo-red-600);}
.hint b{color:var(--ink-700);font-weight:500;}

.steps{display:flex;align-items:center;justify-content:center;gap:6px;margin:2px 0 10px;}
.step-dot{width:7px;height:7px;border-radius:50%;background:rgba(var(--gold-rgb),.4);}
.step-dot.on{background:var(--octo-red);}
.step-line{width:26px;height:1px;background:var(--hair);}

.tag{display:inline-block;font-size:var(--fs-10);letter-spacing:var(--ls-sm);padding:3px 10px;border-radius:var(--r-full);
  border:1px solid var(--hair);color:var(--gold);background:var(--paper-3);}
.tag--abyss{color:var(--abyss);border-color:rgba(var(--abyss-rgb),.28);background:var(--abyss-50);}
.tag--red{color:var(--octo-red-600);border-color:rgba(var(--octo-red-rgb),.3);background:var(--berry-50);}
.tag--gold{border-color:var(--gold);}
.tag-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;justify-content:center;margin-top:12px;}
.tag-row--left{justify-content:flex-start;}

.seal{width:52px;height:52px;border-radius:var(--r-sm);border:1.5px solid var(--octo-red-600);color:var(--octo-red-600);
  font-family:var(--x-font-serif);font-size:var(--fs-20);font-weight:700;display:flex;align-items:center;justify-content:center;
  letter-spacing:0;background:var(--berry-50);}
.seal--lg{width:64px;height:64px;font-size:var(--fs-24);}
.seal--abyss{border-color:var(--abyss-600);color:var(--abyss);background:var(--abyss-50);}

.fan{display:block;margin:14px auto 0;}
.fan path{stroke:var(--gold);fill:none;}
.fan .diamond{fill:var(--octo-red-600);}

.ring-wrap{position:relative;width:200px;height:200px;margin:8px auto 0;}
.ring-wrap svg{width:100%;height:100%;display:block;}
.ring-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;}
.ring-time{font-family:var(--x-font-serif);font-size:var(--fs-28);color:var(--ink-900);letter-spacing:var(--ls-sm);font-variant-numeric:tabular-nums;}
.ring-cap{font-size:var(--fs-10);color:var(--ink-500);letter-spacing:var(--ls-md);}

.tbl{width:100%;height:auto;}
.tbl .seat{stroke-width:1;}
.tbl text{font-size:10px;font-family:var(--x-font-sans);}

.box{position:relative;width:132px;height:132px;margin:24px auto 8px;cursor:pointer;}
.box .b-base{position:absolute;left:16px;bottom:6px;width:100px;height:64px;background:var(--paper-2);border:1px solid var(--hair);border-radius:var(--r-sm);}
.box .b-lid{position:absolute;left:8px;bottom:66px;width:116px;height:26px;background:var(--paper-3);border:1px solid var(--gold);border-radius:var(--r-sm);transition:transform .6s ease;}
.box .b-rib{position:absolute;left:64px;bottom:6px;width:6px;height:88px;background:var(--gold);border-radius:var(--r-tag);transition:opacity .4s ease;}
.box .b-glow{position:absolute;left:26px;bottom:16px;width:80px;height:56px;border-radius:50%;background:var(--berry-100);opacity:0;transition:opacity .5s ease;}
.box.open .b-lid{transform:translateY(-34px) rotate(-9deg);}
.box.open .b-rib{opacity:0;}
.box.open .b-glow{opacity:.9;}
.box-hint{font-size:var(--fs-12);color:var(--ink-500);text-align:center;letter-spacing:var(--ls-xs);margin-top:6px;}

.rows{border:1px solid var(--hair);border-radius:var(--r-md);overflow:hidden;background:var(--paper-3);}
.row{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-bottom:1px solid var(--hair-soft);}
.row:last-child{border-bottom:none;}
.row .k{font-size:var(--fs-12);color:var(--ink-500);min-width:74px;letter-spacing:var(--ls-xs);flex:none;}
.row .v{font-size:var(--fs-12);color:var(--ink-800);flex:1;letter-spacing:var(--ls-xs);line-height:var(--lh-base);}
.row .v b{font-family:var(--x-font-serif);font-size:var(--fs-14);color:var(--ink-900);}

.slip{border:1px solid var(--gold);border-radius:var(--r-sm);background:var(--paper-3);padding:12px 14px;margin-top:10px;display:flex;gap:12px;align-items:center;cursor:pointer;}
.slip .no{font-family:var(--x-font-serif);font-size:var(--fs-14);color:var(--gold);letter-spacing:var(--ls-md);flex:none;}
.slip .txt{font-size:var(--fs-12);color:var(--ink-700);letter-spacing:var(--ls-xs);line-height:var(--lh-base);}
.slip.on{border-color:var(--octo-red-600);background:var(--berry-50);}
.slip--dashed{border-style:dashed;border-color:var(--hair);}

.tabbar{flex:none;display:flex;border-top:1px solid var(--hair);background:var(--paper);padding:8px 0 calc(8px + env(safe-area-inset-bottom,0px));}
.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;text-decoration:none;color:var(--ink-500);font-size:var(--fs-10);letter-spacing:var(--ls-xs);cursor:pointer;}
.tabbar a svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;}
.tabbar a.active{color:var(--octo-red-600);}

.legal{font-size:var(--fs-10);color:var(--ink-500);line-height:var(--lh-relaxed);letter-spacing:var(--ls-xs);
  border-top:1px solid var(--hair-soft);padding:10px 18px calc(10px + env(safe-area-inset-bottom,0px));flex:none;background:var(--paper);}
.legal b{color:var(--ink-700);font-weight:500;}

.modal{position:absolute;inset:0;background:rgba(251,245,234,.86);display:flex;align-items:center;justify-content:center;padding:26px;z-index:40;}
.modal .box-in{width:100%;background:var(--paper-3);border:1px solid var(--gold);border-radius:var(--r-lg);padding:20px;text-align:center;}
.modal h4{font-family:var(--x-font-serif);font-size:var(--fs-16);color:var(--ink-900);margin:0 0 8px;letter-spacing:var(--ls-sm);}
.modal p{font-size:var(--fs-12);color:var(--ink-500);margin:0 0 14px;line-height:var(--lh-relaxed);}
.modal .acts{display:flex;gap:10px;}
.modal .acts .btn{flex:1;}
.hidden{display:none!important;}

/* ===== 登录 ===== */
.login-wrap{flex:1 1 auto;display:flex;flex-direction:column;justify-content:center;padding:32px 26px;text-align:center;}
.login-brand{font-family:var(--x-font-serif);font-size:var(--fs-32);font-weight:700;letter-spacing:var(--ls-2xl);color:var(--ink-900);margin:18px 0 4px;}
.login-sub{font-size:var(--fs-12);color:var(--ink-500);letter-spacing:var(--ls-sm);}
.login-form{margin-top:28px;text-align:left;}
.login-demo{margin-top:18px;font-size:var(--fs-10);color:var(--ink-500);letter-spacing:var(--ls-xs);line-height:var(--lh-relaxed);text-align:center;}

/* ===== 演示控制条 ===== */
.demo-bar{flex:none;border-top:1px dashed var(--hair);background:var(--paper-2);padding:8px 14px calc(8px + env(safe-area-inset-bottom,0px));}
.demo-bar .demo-toggle{display:flex;align-items:center;gap:8px;font-size:var(--fs-10);color:var(--ink-500);letter-spacing:var(--ls-sm);cursor:pointer;}
.demo-bar .demo-toggle .dot{width:7px;height:7px;border-radius:50%;background:var(--abyss-500);}
.demo-panel{margin-top:10px;display:flex;flex-direction:column;gap:10px;}
.demo-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.demo-row .demo-k{font-size:var(--fs-10);color:var(--ink-500);letter-spacing:var(--ls-sm);min-width:56px;}
.demo-chip{height:26px;padding:0 10px;border-radius:var(--r-full);border:1px solid var(--hair);background:var(--paper-3);
  font-size:var(--fs-10);color:var(--ink-700);letter-spacing:var(--ls-xs);cursor:pointer;}
.demo-chip.on{background:var(--abyss-700);border-color:var(--abyss-700);color:var(--on-red);}

/* ===== 结果 / 报告 / 商户 ===== */
.result-card{text-align:center;}
.report-inner{border:1px solid var(--gold);border-radius:var(--r-sm);background:var(--paper-3);padding:16px 14px;text-align:center;}
.report-pair{font-family:var(--x-font-serif);font-size:var(--fs-20);color:var(--abyss);letter-spacing:var(--ls-lg);margin:10px 0 0;}
.m-row{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-bottom:1px solid var(--hair-soft);}
.m-row:last-child{border-bottom:none;}
.m-row .k{font-size:var(--fs-12);color:var(--ink-500);min-width:74px;letter-spacing:var(--ls-xs);flex:none;}
.m-row .v{font-size:var(--fs-12);color:var(--ink-800);flex:1;letter-spacing:var(--ls-xs);line-height:var(--lh-base);}
.m-row .v b{font-family:var(--x-font-serif);font-size:var(--fs-14);color:var(--ink-900);}
.m-card{background:var(--paper-3);border:1px solid var(--hair);border-radius:var(--r-lg);padding:4px 14px;margin-top:12px;}
.m-status{font-size:var(--fs-10);padding:2px 8px;border-radius:var(--r-full);letter-spacing:var(--ls-xs);white-space:nowrap;}
.m-status--ok{color:var(--abyss-600);background:var(--abyss-50);border:1px solid rgba(var(--abyss-rgb),.28);}
.m-status--wait{color:var(--octo-red-600);background:var(--berry-50);border:1px solid rgba(var(--octo-red-rgb),.3);}
.m-status--idle{color:var(--ink-500);background:var(--paper-2);border:1px solid var(--hair);}
.seat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:10px;}
.seat-cell{border:1px solid var(--hair);border-radius:var(--r-sm);background:var(--paper-3);padding:8px 10px;font-size:var(--fs-12);color:var(--ink-700);letter-spacing:var(--ls-xs);}
.seat-cell b{font-family:var(--x-font-serif);color:var(--gold);margin-right:6px;}

/* ===== Toast ===== */
.toast{position:absolute;left:50%;top:14%;transform:translateX(-50%);z-index:60;background:var(--ink-900);color:var(--paper);
  font-size:var(--fs-12);letter-spacing:var(--ls-xs);padding:9px 16px;border-radius:var(--r-full);max-width:82%;text-align:center;}

/* ===== 动效 ===== */
@media(prefers-reduced-motion:no-preference){
  .fan path{animation:fanIn .6s ease both;}
  .fan path:nth-child(2){animation-delay:.08s;} .fan path:nth-child(3){animation-delay:.16s;}
  .fan .diamond{animation:sealIn .5s ease .24s both;}
  @keyframes fanIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
  @keyframes sealIn{from{opacity:0;transform:scale(.6);}to{opacity:1;transform:scale(1);}}
  .fade-in{animation:fadeIn .25s ease both;}
  @keyframes fadeIn{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:none;}}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;}}

/* ===== 20261018 · signup-a11y-20261018 · 注册页无障碍与移动端打磨 ===== */
.fs{border:0;margin:0;padding:0;min-width:0;}
.fs>legend{display:block;padding:0;float:none;}
.bd-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;}
.field--sel{appearance:none;-webkit-appearance:none;font-family:inherit;cursor:pointer;padding-right:34px;
  background-image:linear-gradient(45deg,transparent 50%,var(--ink-500) 50%),linear-gradient(135deg,var(--ink-500) 50%,transparent 50%);
  background-position:calc(100% - 18px) 20px,calc(100% - 13px) 20px;background-size:5px 5px,5px 5px;background-repeat:no-repeat;}
.field--sel:focus-visible{outline:2px solid var(--abyss-700);outline-offset:2px;}
.chip:focus-visible{outline:2px solid var(--abyss-700);outline-offset:2px;}
.chip:disabled{cursor:not-allowed;}
.lnk{color:var(--octo-red-600);text-decoration:underline;cursor:pointer;font:inherit;border:0;background:transparent;padding:0;}
.hint--err{color:var(--octo-red-600);}
@media (prefers-reduced-motion: reduce){*{transition:none !important;animation:none !important;}}
