:root{
  --bg:#f0ede6;
  --paper:#fffdf7;
  --ink:#111;
  --ink-2:#333;
  --dim:#6b6b6b;
  --line:#111;
  --accent:#e85d4c;
  --accent-dark:#c94a3d;
  --purple:#5b4cc4;
  --purple-dark:#4a3da3;
  --green:#5fc89a;
  --green-dark:#4aa87d;
  --yellow:#f2c14e;
  --yellow-dark:#d4a52f;
  --good:#2a9d8f;
  --bad:#e85d4c;
  --warn:#d4a017;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  background:
    linear-gradient(90deg, rgba(17,17,17,.035) 1px, transparent 1px),
    linear-gradient(rgba(17,17,17,.035) 1px, transparent 1px),
    var(--bg);
  background-size: 36px 36px, 36px 36px, 100% 100%;
  color:var(--ink);line-height:1.5;-webkit-font-smoothing:antialiased;
}

.screen{position:fixed;inset:0;display:none;flex-direction:column;overflow:hidden}
.screen.active{display:flex;animation:fade .3s ease}
@keyframes fade{from{opacity:0}to{opacity:1}}

.page{flex:1;display:flex;flex-direction:column;align-items:center;text-align:center;padding:0 18px 18px;overflow-y:auto}
.page.center{justify-content:center;min-height:100%}

/* topbar */
.topbar{
  width:100%;height:56px;border-bottom:2px solid var(--line);display:flex;align-items:center;justify-content:space-between;
  padding:0 12px;background:var(--bg);flex-shrink:0;
}
.tb-left,.tb-right{display:flex;align-items:center;gap:8px}
.tb-title{font-size:12px;letter-spacing:1px;font-weight:700;color:var(--ink);white-space:nowrap}
.tb-title .red{color:var(--accent)}
.icon-btn{
  width:36px;height:36px;border:2px solid var(--line);background:var(--paper);font-size:18px;display:flex;align-items:center;justify-content:center;cursor:pointer;
}
.icon-btn:hover{background:var(--ink);color:var(--bg)}

.tag{
  display:inline-block;background:var(--ink);color:var(--bg);font-size:11px;font-weight:700;
  letter-spacing:1.5px;padding:6px 12px;border-radius:0;margin-bottom:18px;
}
.tag.red{background:transparent;color:var(--accent);border:2px solid var(--accent);padding:5px 10px;font-size:10px}

.hero-title{
  font-family:"Noto Serif SC","Songti SC","SimSun",serif;font-size:clamp(38px,10vw,62px);
  font-weight:900;line-height:1.05;color:var(--ink);margin-bottom:14px;
}
.hero-title .stroke{
  color:var(--ink);
  text-shadow:3px 3px 0 rgba(232,93,76,.55),6px 6px 0 rgba(232,93,76,.18);
}
.hero-title.small{font-size:clamp(26px,7vw,38px);margin-bottom:12px}

.hero-sub{color:var(--dim);font-size:14px;max-width:460px;margin-bottom:26px;line-height:1.7}

/* registration */
.reg-card{
  position:relative;width:min(460px,100%);background:var(--paper);border:2px solid var(--line);
  box-shadow:7px 7px 0 var(--line);padding:36px 24px 24px;text-align:left;margin-bottom:24px;
}
.reg-title{
  position:absolute;top:-12px;left:18px;background:var(--ink);color:var(--bg);
  font-size:10px;font-weight:800;letter-spacing:1.5px;padding:5px 10px;
}
.field-label{display:block;font-size:13px;font-weight:700;color:var(--ink-2);margin-bottom:8px}
.input-wrap{position:relative;margin-bottom:18px}
.input-wrap input{
  width:100%;background:#f5f3ed;border:1.5px solid var(--line);border-radius:10px;
  padding:14px 16px;font-size:15px;color:var(--ink);outline:none;transition:.2s;
}
.input-wrap input::placeholder{color:#999}
.input-wrap input:focus{border-color:var(--accent)}
.input-accent{
  position:absolute;right:12px;top:50%;transform:translateY(-50%);width:4px;height:24px;background:var(--accent);border-radius:2px;
}

button{
  width:100%;border:none;padding:15px;font-size:15px;font-weight:800;cursor:pointer;
  background:var(--accent);color:#fff;transition:.15s;letter-spacing:.5px;
}
button:hover{transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--line)}
button:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}
button.ghost{
  background:transparent;border:2px solid var(--line);color:var(--ink);font-weight:700;
}
button.ghost:hover{background:var(--ink);color:var(--bg);box-shadow:4px 4px 0 var(--line)}
button:disabled.ghost{opacity:.4;background:#e8e6e0}

/* rules */
.rules{
  width:min(520px,100%);display:grid;grid-template-columns:1fr 1fr;gap:0;border:2px solid var(--line);background:var(--paper);
  box-shadow:6px 6px 0 var(--line);margin-bottom:24px;
}
.rule{
  display:flex;gap:10px;align-items:flex-start;padding:16px 14px;text-align:left;
  border-right:2px solid var(--line);border-bottom:2px solid var(--line);
}
.rule:nth-child(2n){border-right:none}
.rule:nth-child(n+3){border-bottom:none}
.rule .num{
  font-family:"Noto Serif SC",serif;font-size:26px;font-weight:900;color:var(--accent);line-height:1;min-width:32px;
}
.rule b{display:block;font-size:13.5px;margin-bottom:3px}
.rule span{font-size:12px;color:var(--dim);line-height:1.45}

.page-foot{font-size:11px;color:var(--dim);letter-spacing:1px;margin-top:auto;padding-top:18px}

/* terms modal */
.modal{position:fixed;inset:0;background:rgba(17,17,17,.55);display:none;align-items:center;justify-content:center;z-index:30;padding:18px;overflow-y:auto}
.modal.active{display:flex;animation:fade .25s}
.terms-card{
  width:min(460px,100%);background:var(--paper);border:2px solid var(--line);box-shadow:10px 10px 0 var(--purple);
  padding:28px 24px 22px;text-align:left;position:relative;
}
.terms-kicker{
  display:inline-block;background:var(--purple);color:#fff;font-size:10px;font-weight:800;letter-spacing:1.5px;
  padding:5px 10px;margin-bottom:14px;
}
.terms-title{font-family:"Noto Serif SC",serif;font-size:34px;font-weight:900;margin-bottom:8px}
.terms-sub{color:var(--dim);font-size:13.5px;margin-bottom:18px}
.terms-box{
  background:#fff8f2;border:2px solid var(--line);box-shadow:5px 5px 0 var(--accent);padding:16px 18px;margin-bottom:18px;
}
.terms-box h4{color:var(--accent);font-size:15px;margin-bottom:12px}
.terms-box ul{list-style:none;display:flex;flex-direction:column;gap:8px}
.terms-box li{font-size:13.5px;color:var(--ink-2);padding-left:16px;position:relative}
.terms-box li::before{content:"·";position:absolute;left:2px;color:var(--accent);font-weight:900}
.check-row{
  display:flex;align-items:flex-start;gap:10px;margin-bottom:12px;cursor:pointer;font-size:13.5px;color:var(--ink-2);line-height:1.5;
}
.check-row input{position:absolute;opacity:0;width:0;height:0}
.check-box{
  width:20px;height:20px;border:2px solid var(--line);background:#fff;flex-shrink:0;margin-top:1px;display:flex;align-items:center;justify-content:center;transition:.15s;
}
.check-row input:checked + .check-box{background:var(--purple);border-color:var(--purple);color:#fff}
.check-row input:checked + .check-box::after{content:"✓";font-size:13px;font-weight:900}
.check-row a{color:var(--purple);text-decoration:underline}
.terms-hint{color:var(--dim);font-size:11.5px;line-height:1.6;margin:6px 0 18px}
.terms-actions{display:flex;gap:12px}
.terms-actions button{flex:1}
#btn-terms-agree{background:var(--purple);color:#fff}
#btn-terms-agree:disabled{background:#a098c8;opacity:.6}

/* queue */
.queue-page{padding-top:20px}
.queue-graphic{
  position:relative;width:140px;height:140px;margin:0 auto 22px;
}
.queue-ring{
  position:absolute;inset:0;border:3px solid var(--line);border-radius:50%;
  border-top-color:var(--accent);animation:spin 2s linear infinite;
}
.queue-ring.inner{inset:22px;border-width:2px;border-top-color:var(--accent);animation:spin 1.6s linear infinite reverse}
.queue-center{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:36px;
}
@keyframes spin{to{transform:rotate(360deg)}}
.queue-meta{
  width:min(360px,100%);display:flex;justify-content:space-between;font-size:13px;color:var(--dim);margin:14px 0 22px;
  padding:0 8px;
}
.queue-meta b{color:var(--ink);font-size:14px}
.text-link{
  background:none;border:none;color:var(--ink);font-size:13px;text-decoration:underline;cursor:pointer;width:auto;font-weight:600;
}
.text-link:hover{box-shadow:none;transform:none;color:var(--accent)}

/* fail */
.fail-page{padding-top:20px}
.fail-graphic{
  position:relative;width:140px;height:140px;margin:0 auto 24px;
}
.crosshair,.crosshair-v{position:absolute;background:var(--line)}
.crosshair{width:100%;height:2px;top:50%;left:0}
.crosshair-v{width:2px;height:100%;top:0;left:50%}
.fail-graphic::before,.fail-graphic::after{
  content:"";position:absolute;inset:0;border:3px solid var(--line);border-radius:50%;
}
.fail-graphic::after{inset:18px;border-width:2px;border-left-color:var(--accent);animation:spin 3s linear infinite}
.fail-box{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:44px;height:44px;border:3px solid var(--line);
  background:var(--paper);display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:900;color:var(--accent);
}
.fail-warn{color:var(--accent);font-size:13px;margin:-8px 0 22px}
#btn-retry{background:var(--accent);color:#fff;width:min(280px,100%)}

/* room */
#screen-room{background:var(--bg)}
.room-wrap{flex:1;display:flex;flex-direction:column;overflow:hidden;width:min(620px,100%);margin:0 auto}
.room-head{
  display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:2px solid var(--line);background:var(--paper);
}
.room-identity{display:flex;align-items:center;gap:12px}
.rid-avatar{
  width:40px;height:40px;border:2px solid var(--line);background:var(--ink);color:var(--bg);display:flex;align-items:center;justify-content:center;
  font-size:18px;font-weight:900;
}
.rid-name{font-weight:900;font-size:15px;letter-spacing:.5px}
.rid-sub{font-size:10px;color:var(--dim);letter-spacing:1px;margin-top:2px}
.room-total{font-family:"Noto Serif SC",serif;font-size:26px;font-weight:900}

.room-status-bar{
  display:flex;justify-content:space-between;align-items:center;padding:8px 16px;font-size:10px;letter-spacing:1px;color:var(--dim);
  border-bottom:1px solid rgba(17,17,17,.12);background:var(--bg);
}

.chat{
  flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:14px;background:var(--bg);
}
.chat::-webkit-scrollbar{width:6px}
.chat::-webkit-scrollbar-thumb{background:#ccc}
.msg{max-width:78%;padding:12px 16px;font-size:15px;word-break:break-word;animation:pop .25s ease}
@keyframes pop{from{opacity:0;transform:translateY(6px)}to{opacity:1}}
.msg.self{
  background:var(--ink);color:var(--bg);align-self:flex-end;box-shadow:4px 4px 0 var(--accent);
}
.msg.opp{
  background:var(--paper);border:2px solid var(--line);align-self:flex-start;box-shadow:4px 4px 0 rgba(17,17,17,.12);
}
.msg.sys{color:var(--dim);font-size:12.5px;text-align:center;align-self:center;max-width:90%;padding:0}
.msg .meta{font-size:10px;color:var(--dim);margin-bottom:4px;text-align:right}
.msg.self .meta{color:#aaa}

.composer{
  display:flex;gap:0;padding:0 16px;background:var(--paper);border-top:2px solid var(--line);
}
.composer input{
  flex:1;border:none;background:transparent;padding:14px 0;font-size:15px;color:var(--ink);outline:none;
}
.composer input::placeholder{color:#999}
.send-btn{
  width:52px;background:transparent;border-left:2px solid var(--line);color:var(--dim);font-size:20px;display:flex;align-items:center;justify-content:center;
}
.send-btn:hover{background:var(--ink);color:var(--bg);box-shadow:none;transform:none}

.lock-area{
  background:var(--ink);color:var(--bg);padding:12px 16px 16px;border-top:2px solid var(--line);
}
.lock-label{display:flex;justify-content:space-between;align-items:center;font-size:11px;letter-spacing:1px;margin-bottom:10px;color:#ccc}
.lock-label small{color:#888;font-size:10px}
.lock-btns{display:flex;gap:12px}
.lock-btns button{
  flex:1;display:flex;align-items:center;gap:10px;padding:12px 14px;border:2px solid var(--line);color:var(--ink);
}
.lock-btns button:disabled{opacity:.55;transform:none;box-shadow:none}
.lock-human{background:var(--green);border-color:var(--green-dark)!important}
.lock-ai{background:var(--yellow);border-color:var(--yellow-dark)!important}
.lock-icon{
  width:28px;height:28px;border:2px solid var(--ink);display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:900;background:rgba(255,255,255,.25);
}
.lock-txt{font-size:14px;font-weight:800}

/* reveal */
.verdict-badge{
  width:90px;height:90px;border:3px solid var(--line);background:var(--paper);box-shadow:5px 5px 0 var(--line);
  margin:0 auto 16px;display:flex;align-items:center;justify-content:center;font-size:34px;font-weight:900;color:var(--ink);
}
.verdict-badge.win{color:var(--good)}
.verdict-badge.lose{color:var(--bad)}
.reveal-grid{width:min(460px,100%);display:flex;flex-direction:column;gap:0;border:2px solid var(--line);background:var(--paper);box-shadow:6px 6px 0 var(--line);margin:16px 0}
.rv{display:flex;justify-content:space-between;padding:14px 16px;font-size:14px;border-bottom:1px solid var(--line)}
.rv:last-child{border-bottom:none}
.rv-k{color:var(--dim)}
.rv-v{font-weight:800}
.rv-v.ai{color:var(--accent)}
.rv-v.human{color:var(--good)}
.rv-v.ok{color:var(--good)}
.rv-v.no{color:var(--bad)}
.reveal-actions{width:min(360px,100%);display:flex;flex-direction:column;gap:8px;margin-top:6px}

/* 已被举报弹窗 */
.reported-card{
  width:min(420px,100%);background:var(--paper);border:2px solid var(--line);box-shadow:10px 10px 0 var(--bad);
  padding:32px 26px 26px;text-align:center;position:relative;
}
.reported-kicker{
  display:inline-block;background:var(--bad);color:#fff;font-size:10px;font-weight:800;letter-spacing:1.5px;
  padding:5px 10px;margin-bottom:18px;
}
.reported-icon{font-size:46px;margin-bottom:8px;color:var(--bad)}
.reported-title{font-family:"Noto Serif SC",serif;font-size:30px;font-weight:900;margin-bottom:12px}
.reported-sub{color:var(--dim);font-size:13.5px;line-height:1.7;margin-bottom:24px}
#btn-reported-close{background:var(--bad);color:#fff;width:100%}

/* banners */
.banner{
  position:fixed;top:0;left:0;right:0;z-index:50;
  background:var(--bad);color:#fff;padding:12px 18px;font-size:13.5px;line-height:1.4;
  display:flex;justify-content:space-between;align-items:center;gap:10px;animation:slideDown .3s ease;
}
.banner button{width:auto;padding:6px 14px;background:rgba(255,255,255,.2);font-size:12px;border:none;color:#fff}
@keyframes slideDown{from{transform:translateY(-100%)}to{transform:none}}
.banner.conn{background:var(--ink);color:var(--bg)}

@media(max-width:520px){
  .rules{grid-template-columns:1fr}
  .rule{border-right:none}
  .rule:nth-child(3){border-bottom:2px solid var(--line)}
  .hero-title{font-size:clamp(32px,12vw,48px)}
  .tb-title{font-size:10px}
  .room-total{font-size:22px}
  .lock-btns button{padding:10px}
  .lock-txt{font-size:12px}
}
