/* ===================== 视而非是 · 全局样式 ===================== */
:root{
  --g-blue:#1a73e8; --g-blue-d:#1558b0; --g-grey:#e8eaed; --g-line:#d3d6da;
  --cell-bg:#1E1E1E;            /* 格子底色（柯星瀚指定）*/
  --ink:#202124; --ok:#1e8e3e; --bad:#d93025;
  --shadow:0 2px 10px rgba(0,0,0,.18);
  --mono:"SF Mono",Consolas,"Cascadia Code",monospace;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;height:100%;}
/* 桌面端整体放大 1.5 倍（手机端保持原尺寸）*/
@media (min-width:768px){ html{ zoom:1.5; } }
body{
  font-family:"PingFang SC","Microsoft YaHei",Roboto,Arial,sans-serif;
  background:radial-gradient(120% 120% at 50% 0%,#f6f7f4 0%,#dfe3dc 100%);
  color:var(--ink);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  min-height:100%;padding:24px 16px;gap:22px;overflow-x:hidden;
}
/* 细点阵纹理：机器审视感，极淡 */
body::before{
  content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;
  background-image:radial-gradient(rgba(58,74,50,.07) 1px,transparent 1px);
  background-size:22px 22px;
}

/* 标题（衬线 + 青铜渐变，作品外壳的仪式感）*/
.brand{text-align:center;user-select:none;}
.brand h1{
  margin:0;font-size:clamp(26px,6vw,38px);font-weight:900;
  font-family:"Noto Serif SC","Source Han Serif SC","Songti SC",STSong,SimSun,serif;
  letter-spacing:.3em;text-indent:.3em;
  background:linear-gradient(165deg,#2e3a28 15%,#5d6f47 55%,#94a371 95%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  text-shadow:0 1px 0 rgba(255,255,255,.35);
}
.brand p{
  margin:10px 0 0;font-size:11px;color:#787f72;letter-spacing:.22em;text-indent:.22em;
  display:flex;align-items:center;justify-content:center;gap:12px;
}
.brand p::before,.brand p::after{content:'';width:34px;height:1px;background:linear-gradient(90deg,transparent,#a8b292);flex:0 0 auto;}
.brand p::after{background:linear-gradient(90deg,#a8b292,transparent);}

/* reCAPTCHA 复选框 */
.recaptcha{
  width:300px;max-width:90vw;background:#f9f9f9;border:1px solid var(--g-line);border-radius:3px;
  box-shadow:var(--shadow);display:flex;align-items:center;padding:0 12px;height:74px;gap:12px;
  transition:opacity .3s,box-shadow .25s,transform .25s;
}
.recaptcha:hover{box-shadow:0 5px 20px rgba(0,0,0,.22);transform:translateY(-1px);}
.cb-box{width:28px;height:28px;border:2px solid #c1c1c1;border-radius:2px;background:#fff;cursor:pointer;flex:0 0 auto;position:relative;transition:transform .1s;}
.cb-box:active{transform:scale(.92);}
.cb-spinner{width:28px;height:28px;border:3px solid #c1c1c1;border-top-color:var(--g-blue);border-radius:50%;display:none;animation:spin .8s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}
.cb-check{display:none;width:28px;height:28px;}
.cb-check svg{width:28px;height:28px;}
.cb-label{font-size:14px;color:#000;flex:1;}
.cb-logo{display:flex;flex-direction:column;align-items:center;gap:2px;opacity:.85;}
.cb-logo svg{width:30px;height:30px;}
.cb-logo small{font-size:8px;color:#9aa0a6;line-height:1;}

/* 验证挑战浮层 */
.overlay{position:fixed;inset:0;background:rgba(32,33,36,.55);display:none;align-items:center;justify-content:center;padding:16px;z-index:50;}
.overlay.show{display:flex;animation:fade .2s;}
@keyframes fade{from{opacity:0}to{opacity:1}}
.challenge{width:348px;max-width:96vw;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 8px 40px rgba(0,0,0,.4);animation:pop .25s cubic-bezier(.2,.9,.3,1.2);}
@keyframes pop{from{transform:scale(.9);opacity:.3}to{transform:scale(1);opacity:1}}
.ch-head{background:var(--g-blue);color:#fff;padding:16px 16px 18px;}
.ch-head .small{font-size:13px;opacity:.92;}
.ch-head .big{font-size:22px;font-weight:600;margin-top:2px;}
.ch-head .big b{font-weight:800;text-decoration:underline;text-underline-offset:3px;}

/* 关卡容器：各关卡 mount 到这里 */
.ch-body{background:#fff;min-height:60px;}

/* —— 九宫格关卡 —— */
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;background:#fff;padding:3px;}
.cell{position:relative;aspect-ratio:1/1;cursor:pointer;overflow:hidden;background:var(--cell-bg);display:flex;align-items:center;justify-content:center;transition:transform .12s,box-shadow .12s;animation:cellIn .32s both;}
/* 谷歌同款：格子逐个淡入 */
.cell:nth-child(2){animation-delay:.03s}.cell:nth-child(3){animation-delay:.06s}
.cell:nth-child(4){animation-delay:.09s}.cell:nth-child(5){animation-delay:.12s}
.cell:nth-child(6){animation-delay:.15s}.cell:nth-child(7){animation-delay:.18s}
.cell:nth-child(8){animation-delay:.21s}.cell:nth-child(9){animation-delay:.24s}
@keyframes cellIn{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}
.cell img{width:100%;height:100%;object-fit:cover;transition:transform .35s cubic-bezier(.4,0,.2,1),opacity .35s;}
.cell .emoji{font-size:clamp(34px,11vw,52px);filter:drop-shadow(0 2px 3px rgba(0,0,0,.35));transition:transform .12s;}
.cell:hover{box-shadow:inset 0 0 0 3px rgba(26,115,232,.6);}
.cell:active{transform:scale(.97);}
.cell .mark{position:absolute;inset:0;display:none;align-items:center;justify-content:center;font-size:46px;font-weight:900;color:#fff;}
.cell.wrong{animation:shake .4s;}
.cell.wrong .mark{display:flex;background:rgba(217,48,37,.78);}
.cell.right .mark{display:flex;background:rgba(30,142,62,.82);}
.cell.revealed .tag{position:absolute;left:0;right:0;bottom:0;font-size:10px;line-height:1.3;background:rgba(0,0,0,.72);color:#fff;padding:3px 4px;display:block;}
.cell .tag{display:none;}
@keyframes shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-6px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(4px)}}

/* —— v3 无感打分关卡 —— */
.v3{padding:22px 20px;}
.v3-log{font-size:12px;color:#5f6368;min-height:110px;line-height:2;font-family:var(--mono);}
.v3-log div{animation:fade .3s;}
.v3-bar{height:6px;background:#e8eaed;border-radius:3px;overflow:hidden;margin-top:12px;}
.v3-fill{height:100%;width:0;background:var(--g-blue);transition:width .5s ease;}
.v3-verdict{text-align:center;margin:20px 0 4px;}
.v3-score{font-size:22px;font-weight:800;color:var(--bad);}
.v3-sub{font-size:12.5px;color:#5f6368;margin-top:8px;line-height:1.7;}
.v3-btn{display:block;margin:16px auto 6px;}

/* 底部工具条 */
.ch-foot{display:flex;align-items:flex-end;gap:12px;padding:10px 14px;border-top:1px solid var(--g-grey);}
.ch-foot .icons{display:flex;gap:14px;flex:1;color:#9aa0a6;}
.ch-foot .icons button{background:none;border:none;color:#9aa0a6;cursor:pointer;padding:2px;font-size:18px;line-height:1;}
.ch-foot .icons button:hover{color:var(--g-blue);}
.ch-foot-right{text-align:right;}
.ch-progress{display:block;font-size:10px;color:#bbb;letter-spacing:.05em;margin-bottom:2px;}
.verify-hint{font-size:11px;color:#9aa0a6;}

/* 结果浮层 */
.result{position:fixed;inset:0;display:none;align-items:center;justify-content:center;padding:24px;z-index:60;background:rgba(20,22,18,.88);}
.result.show{display:flex;animation:fade .3s;}
.result .card{max-width:440px;width:100%;text-align:center;color:#fff;animation:pop .4s;}
.result .icon{font-size:60px;margin-bottom:8px;}
.result h2{font-size:26px;margin:.2em 0;font-weight:800;letter-spacing:.05em;}
.result p{font-size:15px;line-height:1.8;color:#d7dccf;margin:.4em 0 1.4em;}
.result .sig{font-size:13px;letter-spacing:.3em;color:#9fb083;margin-top:6px;}
/* 本局战报 */
.r-stats{margin:0 auto 20px;max-width:360px;border:1px solid rgba(255,255,255,.16);border-radius:10px;padding:12px 18px;font-size:13px;color:#cfd6c3;line-height:2;text-align:left;background:rgba(255,255,255,.05);}
.r-stats:empty{display:none;}
.r-stats b{color:#fff;}

/* —— 清除赝品关 —— */
.purge-bar{display:flex;align-items:center;gap:10px;padding:10px 12px;}
.purge-msg{flex:1;font-size:12.5px;color:#5f6368;line-height:1.5;transition:color .2s;}
.purge-verify{padding:9px 22px;font-size:14px;flex:0 0 auto;}
.purge-verify.ready{animation:pulse 1.2s infinite;}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(26,115,232,.45)}50%{box-shadow:0 0 0 9px rgba(26,115,232,0)}}
.cell.purging img{transform:scale(.05);opacity:0;}
.cell.arriving img{animation:tileIn .42s cubic-bezier(.2,.8,.3,1.1);}
@keyframes tileIn{from{transform:scale(1.18);opacity:0}to{transform:scale(1);opacity:1}}
.cell.cleared{cursor:default;background:#f6f7f9;animation:none;}
.purge-check{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:30px;font-weight:700;color:#1e8e3e;animation:fade .3s;}
.grid-shake{animation:shake .45s;}

/* —— 旋转拼回关 —— */
.jig-in{width:100%;height:100%;background-repeat:no-repeat;transition:transform .22s cubic-bezier(.3,.7,.4,1.1);}
.jig-cell:hover{box-shadow:inset 0 0 0 3px rgba(26,115,232,.6);}

/* 通用按钮 */
.btn{background:var(--g-blue);color:#fff;border:none;border-radius:6px;padding:12px 26px;font-size:15px;cursor:pointer;font-weight:600;transition:background .15s,transform .1s;}
.btn:hover{background:var(--g-blue-d);}
.btn:active{transform:scale(.96);}
.btn:disabled{opacity:.6;cursor:default;}

/* toast */
.toast{position:fixed;left:50%;top:24px;transform:translateX(-50%) translateY(-80px);background:#202124;color:#fff;padding:10px 18px;border-radius:30px;font-size:14px;box-shadow:var(--shadow);z-index:80;opacity:0;transition:.35s;max-width:90vw;text-align:center;}
.toast.show{transform:translateX(-50%) translateY(0);opacity:1;}
.toast.bad{background:#5c1d18;}
.toast.ok{background:#1b5e25;}

.footnote{font-size:11px;color:#9aa0a6;text-align:center;max-width:340px;line-height:1.6;}
.legal{font-size:10px;color:#b4b9ad;text-align:center;max-width:420px;line-height:1.7;margin-top:-6px;}

/* —— 旋转摆正关 —— */
.rot{padding:18px 20px;text-align:center;}
.rot-stage{width:170px;height:170px;margin:0 auto 16px;display:flex;align-items:center;justify-content:center;background:var(--cell-bg);border-radius:8px;overflow:hidden;}
.rot-stage img{width:100%;height:100%;object-fit:contain;transition:transform .05s linear;}
.rot-range{width:100%;}
.rot-msg{margin-top:10px;font-size:13px;line-height:1.6;color:#5f6368;min-height:20px;}

/* —— 人格证明关 —— */
.hum{padding:22px 20px;text-align:center;}
.hum-ring{position:relative;width:120px;height:120px;margin:0 auto 16px;border-radius:50%;background:#eceff3;overflow:hidden;display:flex;align-items:center;justify-content:center;}
.hum-fill{position:absolute;left:0;bottom:0;width:100%;height:0%;background:linear-gradient(180deg,#4a9eff,#1a73e8);transition:height .05s linear;}
.hum-core{position:relative;z-index:1;font-size:18px;font-weight:700;color:#fff;mix-blend-mode:difference;}
.hum-btn{background:var(--g-blue);color:#fff;border:none;border-radius:30px;padding:12px 24px;font-size:15px;font-weight:600;cursor:pointer;user-select:none;-webkit-user-select:none;}
.hum-btn:active{background:var(--g-blue-d);}
.hum-msg{margin-top:14px;font-size:13px;line-height:1.7;color:#5f6368;min-height:38px;}

/* —— 滑块拼图关 —— */
.slid{padding:18px 20px;}
.slid-stage{position:relative;width:100%;aspect-ratio:16/10;background:var(--cell-bg);border-radius:8px;overflow:hidden;margin-bottom:14px;}
.slid-bg{width:100%;height:100%;object-fit:cover;opacity:.45;}
.slid-gap{position:absolute;top:30%;width:22%;height:40%;transform:translateX(-50%);background:rgba(0,0,0,.45);border:2px dashed rgba(255,255,255,.6);border-radius:6px;}
.slid-piece{position:absolute;top:30%;width:22%;height:40%;transform:translateX(-50%);background-size:455% auto;background-repeat:no-repeat;border-radius:6px;box-shadow:0 2px 8px rgba(0,0,0,.5);border:2px solid #fff;}

/* —— 真伪二选一关 —— */
.duel{padding:16px 18px;}
.duel-info{display:flex;justify-content:space-between;font-size:13px;color:#5f6368;margin-bottom:10px;font-family:var(--mono);}
.duel-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.duel-card{aspect-ratio:1/1;background:var(--cell-bg);border-radius:8px;overflow:hidden;cursor:pointer;border:3px solid transparent;transition:.12s;}
.duel-card:hover{border-color:rgba(26,115,232,.6);}
.duel-card img{width:100%;height:100%;object-fit:cover;}
.duel-ok{border-color:var(--ok)!important;}
.duel-no{border-color:var(--bad)!important;animation:shake .4s;}
