/* ============ 评委手机端样式 ============ */
* { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
:root {
  --ink:#26221d;
  --red:#b13a2e;
  --red-dark:#8c2f26;
  --gold:#b8945f;
  --paper:#f6f3ed;
  --line:#e6dfd3;
  --muted:#8f8676;
}
html, body { height:100%; }
body { font-family:"PingFang SC","Microsoft YaHei",sans-serif; background:var(--paper); color:var(--ink); font-size:15px; }
.serif { font-family:"Noto Serif SC","Source Han Serif SC","STSong","SimSun",serif; }
a { color:var(--red); text-decoration:none; }

/* ---------- 登录页：整屏背景图 + 输入框 ---------- */
.login-bgwrap { min-height:100vh; min-height:100dvh; background-size:cover; background-position:center top; background-repeat:no-repeat;
  display:flex; flex-direction:column; justify-content:flex-end; padding:24px 22px calc(12vh + env(safe-area-inset-bottom)); }
.login-bgwrap.nobg { background:radial-gradient(900px 500px at 50% 0%, rgba(177,58,46,.35), transparent 60%), #221d18; }
.login-panel { width:100%; max-width:400px; margin:0 auto; background:rgba(255,255,255,.92); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
  border-radius:18px; box-shadow:0 18px 60px rgba(30,20,10,.35); padding:22px 20px; }
.code-input { width:100%; padding:15px; font-size:22px; letter-spacing:6px; text-align:center; border:1.5px solid #d9d2c7; border-radius:12px; outline:none; background:#fff; }
.code-input:focus { border-color:var(--red); box-shadow:0 0 0 4px rgba(177,58,46,.12); }
.code-input::placeholder { font-size:16px; letter-spacing:2px; color:#b6ad9d; }
.login-btn { width:100%; margin-top:14px; padding:15px; background:var(--red); color:#fff; border:none; border-radius:12px; font-size:17px; letter-spacing:8px; font-weight:700; }
.login-btn:active { background:var(--red-dark); }
.login-err { margin-top:12px; background:#fdecea; color:#c62828; font-size:13px; padding:10px; border-radius:9px; text-align:center; }

/* ---------- 首页 ---------- */
.home { max-width:560px; margin:0 auto; padding:0 16px 40px; }
.home-head { padding:26px 4px 18px; display:flex; align-items:center; justify-content:space-between; }
.home-head .hi { font-size:20px; font-weight:700; }
.home-head .hi small { display:block; font-size:12px; color:var(--muted); font-weight:400; margin-top:4px; letter-spacing:1px; }
.home-head a { font-size:13px; color:var(--muted); }
.task-card { background:#fff; border-radius:16px; padding:20px; margin-bottom:14px; box-shadow:0 4px 18px rgba(60,40,20,.06); border:1px solid var(--line); }
.task-card .tt { font-size:16px; font-weight:700; display:flex; align-items:center; justify-content:space-between; gap:10px; }
.task-card .meta { font-size:13px; color:var(--muted); margin-top:8px; }
.task-prog { background:#efeae1; border-radius:20px; height:8px; overflow:hidden; margin-top:14px; }
.task-prog i { display:block; height:100%; background:linear-gradient(90deg,#c9584a,var(--red)); }
.task-prog.full i { background:#2e7d32; }
.task-btn { display:block; text-align:center; margin-top:14px; padding:13px; border-radius:11px; background:var(--red); color:#fff !important; font-size:15px; font-weight:700; letter-spacing:2px; }
.task-btn:active { background:var(--red-dark); }
.task-btn.gray { background:#efeae1; color:#8f8676 !important; }
.task-btn.orange { background:#d97b0d; }
.badge { display:inline-block; padding:3px 10px; border-radius:20px; font-size:12px; white-space:nowrap; }
.badge-gray { background:#eeeae2; color:#7a7264; }
.badge-blue { background:#e3eefc; color:#1c5fae; }
.badge-green { background:#e5f4e6; color:#2e7d32; }
.badge-orange { background:#fdf0dd; color:#b26a00; }

/* ---------- 评审页 ---------- */
.rv { display:flex; flex-direction:column; height:100vh; height:100dvh; overflow:hidden; }
.rv-top { background:#fff; border-bottom:1px solid var(--line); padding:12px 16px 10px; flex-shrink:0; }
.rv-top .r1 { display:flex; align-items:center; justify-content:space-between; }
.rv-top .gname { font-size:14px; font-weight:700; max-width:60%; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rv-top .cnt { font-size:13px; color:var(--muted); }
.rv-top .cnt b { color:var(--red); font-size:16px; }
.rv-prog { background:#efeae1; height:5px; border-radius:5px; margin-top:9px; overflow:hidden; }
.rv-prog i { display:block; height:100%; background:var(--red); transition:width .25s; }
.rv-stage { flex:1; min-height:0; display:flex; align-items:center; justify-content:center; padding:12px; position:relative; }
.rv-stage img { max-width:100%; max-height:100%; object-fit:contain; border-radius:6px; box-shadow:0 6px 30px rgba(50,35,20,.18); background:#fff; }
.rv-stage .tap-hint { position:absolute; right:18px; bottom:14px; background:rgba(0,0,0,.45); color:#fff; font-size:11px; padding:4px 10px; border-radius:14px; pointer-events:none; }
.rv-info { flex-shrink:0; text-align:center; padding:2px 16px 8px; }
.rv-info .cd { font-size:17px; font-weight:700; color:var(--red-dark); letter-spacing:1px; }
.rv-info .tt { font-size:14px; color:var(--ink); margin-top:3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rv-meta { font-size:12px; color:var(--muted); margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rv-state { height:24px; font-size:13px; font-weight:700; margin-top:2px; }
.rv-state .yes { color:var(--red); }
.rv-state .no { color:#7a7264; }
.rv-bottom { flex-shrink:0; background:#fff; border-top:1px solid var(--line); padding:10px 12px calc(12px + env(safe-area-inset-bottom)); }
.rv-vote { display:flex; gap:10px; }
.rv-vote button { flex:1; padding:16px 0; border-radius:13px; font-size:17px; font-weight:700; letter-spacing:3px; border:1.5px solid transparent; }
.btn-no { background:#f1ede5; color:#6b6257; border-color:#ddd5c7 !important; }
.btn-no.on { background:#6b6257; color:#fff; border-color:#6b6257 !important; }
.btn-yes { background:#fdf1ef; color:var(--red); border-color:#eec7c2 !important; }
.btn-yes.on { background:var(--red); color:#fff; border-color:var(--red) !important; }
.rv-vote-tip { text-align:center; font-size:11px; color:var(--muted); margin-top:8px; line-height:1.5; }
.rv-nav { display:flex; align-items:center; gap:10px; margin-top:10px; }
.rv-nav button { background:#fff; border:1px solid #ddd5c7; border-radius:10px; padding:10px 0; flex:1; font-size:14px; color:var(--ink); }
.rv-nav button:active { background:#f6f3ed; }
.rv-nav .submit-btn { background:#2e7d32; color:#fff; border-color:#2e7d32; font-weight:700; }
.rv-nav .submit-btn[disabled] { background:#c9c2b4; border-color:#c9c2b4; }

/* ---------- 作品网格总览（进组默认视图） ---------- */
.gv { min-height:100vh; padding-bottom:40px; }
.gv-top { position:sticky; top:0; z-index:30; background:#fff; border-bottom:1px solid var(--line); padding:12px 14px 10px; }
.gv-top .r1 { display:flex; align-items:center; gap:10px; }
.gv-back { font-size:22px; color:var(--ink) !important; line-height:1; padding:0 6px 3px 0; }
.gv-top .gname { font-size:15px; font-weight:700; flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.gv-top .cnt { font-size:13px; color:var(--muted); }
.gv-top .cnt b { color:var(--red); font-size:16px; }
.gv-top .gname .gcount { font-weight:400; color:var(--muted); font-size:12px; }
.gv-actions { display:flex; align-items:center; gap:8px; margin-top:10px; }
/* 三个可点击筛选（推荐 / 不推荐 / 未评），再点一次取消筛选 */
.gv-filters { flex:1; display:flex; gap:6px; align-items:center; flex-wrap:wrap; }
.chip { display:inline-flex; align-items:center; gap:4px; border:1px solid #ddd5c7; background:#fff; color:#6b6257;
  border-radius:18px; padding:6px 10px; font-size:12px; line-height:1; }
.chip b { font-size:12px; }
.chip:active { background:#f6f3ed; }
.chip.on { border-color:var(--red); color:var(--red); background:#fdf1ef; font-weight:700; }
.dot { display:inline-block; width:10px; height:10px; border-radius:3px; margin-right:3px; vertical-align:-1px; }
.dot-yes { background:var(--red); }
.dot-no { background:#a99f8d; }
.dot-none { background:#fff; border:1px solid #c9c2b4; }
.gv-btn { border:none; border-radius:9px; padding:9px 14px; font-size:13px; font-weight:700; background:var(--red); color:#fff; }
.gv-btn:active { background:var(--red-dark); }
.gv-btn.submit { background:#2e7d32; }
.gv-btn.submit[disabled] { background:#c9c2b4; }
.gv-grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:8px; padding:10px; }
@media (min-width:600px) { .gv-grid { grid-template-columns:repeat(5, 1fr); } }
.gv-cell { background:#fff; border-radius:10px; overflow:hidden; border:2px solid transparent; box-shadow:0 2px 8px rgba(60,40,20,.06); }
.gv-cell:active { transform:scale(.97); }
.gv-cell.yes { border-color:var(--red); }
.gv-cell.no { border-color:#a99f8d; opacity:.72; }
.gv-imwrap { position:relative; aspect-ratio:1/1; background:#efeae1; }
.gv-imwrap img { width:100%; height:100%; object-fit:cover; display:block; }
/* 图片多次加载失败：给个可见提示，点一下可重试 */
.img-bad { background:#f3ede3 url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='40'><text x='50%' y='55%' font-size='13' fill='%23a99f8d' text-anchor='middle' font-family='sans-serif'>图片加载失败 点击重试</text></svg>") center/contain no-repeat; min-height:60px; }
.gv-multi { position:absolute; top:5px; right:5px; background:rgba(0,0,0,.6); color:#fff; font-size:10px; padding:2px 7px; border-radius:9px; }
.gv-tag { position:absolute; left:0; bottom:0; font-size:10px; padding:2px 8px; border-radius:0 9px 0 0; color:#fff; }
.gv-cell.yes .gv-tag { background:var(--red); }
.gv-cell.no .gv-tag { background:#a99f8d; }
.gv-code { font-size:11px; text-align:center; padding:5px 3px; color:#6b6257; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* ---------- 单件视图：多图切换 ---------- */
.ichev { position:absolute; top:50%; transform:translateY(-50%); width:38px; height:56px; border:none; border-radius:10px;
  background:rgba(0,0,0,.38); color:#fff; font-size:24px; display:none; align-items:center; justify-content:center; z-index:5; }
.ichev.left { left:10px; }
.ichev.right { right:10px; }
.icount { position:absolute; top:12px; left:50%; transform:translateX(-50%); background:rgba(0,0,0,.5); color:#fff; font-size:12px; padding:3px 12px; border-radius:14px; display:none; z-index:5; }

/* 全屏大图（双指缩放 / 双击放大 / 拖动） */
.fullimg { position:fixed; inset:0; background:#0d0b09; z-index:80; display:none; align-items:center; justify-content:center; overflow:hidden; touch-action:none; }
.fullimg.show { display:flex; }
.fullimg img { max-width:100%; max-height:100%; will-change:transform; transform-origin:center center; }
.fullimg .close { position:fixed; top:calc(14px + env(safe-area-inset-top)); right:16px; background:rgba(255,255,255,.14); color:#fff; border:none; width:40px; height:40px; border-radius:50%; font-size:20px; z-index:81; }
.fullimg .fz-hint { position:fixed; bottom:calc(16px + env(safe-area-inset-bottom)); left:50%; transform:translateX(-50%); color:rgba(255,255,255,.55); font-size:11px; z-index:81; pointer-events:none; white-space:nowrap; }

/* ---------- 加选页 ---------- */
.tb { max-width:560px; margin:0 auto; padding:0 14px 130px; }
.tb-head { padding:22px 4px 6px; }
.tb-head h2 { font-size:19px; }
.tb-head p { font-size:13px; color:var(--muted); margin-top:8px; line-height:1.8; }
.tb-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:16px; }
.tb-card { background:#fff; border-radius:13px; overflow:hidden; border:2.5px solid transparent; box-shadow:0 3px 14px rgba(60,40,20,.07); position:relative; }
.tb-card img { width:100%; aspect-ratio:4/3; object-fit:cover; display:block; }
.tb-card .cd { padding:8px 10px; font-size:12px; color:#6b6257; text-align:center; }
.tb-card.sel { border-color:var(--red); }
.tb-card.sel::after { content:"✓"; position:absolute; top:8px; right:8px; width:26px; height:26px; background:var(--red); color:#fff; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:14px; font-weight:700; }
.tb-bar { position:fixed; left:0; right:0; bottom:0; background:#fff; border-top:1px solid var(--line); padding:12px 16px calc(14px + env(safe-area-inset-bottom)); display:flex; align-items:center; gap:14px; z-index:50; }
.tb-bar .st { font-size:14px; flex:1; }
.tb-bar .st b { color:var(--red); font-size:19px; }
.tb-bar button { flex:1; padding:14px 0; border-radius:12px; border:none; background:var(--red); color:#fff; font-size:16px; font-weight:700; letter-spacing:3px; }
.tb-bar button[disabled] { background:#c9c2b4; }

.center-tip { text-align:center; color:var(--muted); padding:60px 20px; font-size:14px; line-height:2; }
.toast { position:fixed; left:50%; top:46%; transform:translate(-50%,-50%); background:rgba(30,24,18,.88); color:#fff; font-size:14px; padding:12px 22px; border-radius:12px; z-index:99; display:none; text-align:center; }
