/* ============================================================
   科举答题器 · 科技炫酷霓虹风 主题（全站统一 · 升级版）
   深空蓝底 + 青/紫霓虹 + 玻璃拟态 + 精细动效
   ============================================================ */
:root{
    --bg:#070b1a;--bg-2:#0b1026;
    --neon:#00e5ff;--neon-2:#7c4dff;--neon-3:#ff2d95;
    --ok:#00e6a0;--warn:#ffb648;--err:#ff5d6e;
    --glass:rgba(255,255,255,.05);--glass-2:rgba(255,255,255,.02);
    --line:rgba(0,229,255,.22);--line-soft:rgba(0,229,255,.12);
    --txt:#e8eeff;--txt-sub:#8a97c4;--txt-dim:#3d4a75;
    --primary:#5aa7e0;--on-accent:#02121a;--primary-light:rgba(0,229,255,.12);
    --success:#00e6a0;--success-light:rgba(0,230,160,.12);
    --error:#ff5d6e;--error-light:rgba(255,93,110,.12);
    --warn:#ffb648;--warn-light:rgba(255,182,72,.12);
    --info:#00e5ff;--info-light:rgba(0,229,255,.10);
    --border:rgba(255,255,255,.10);
    --shadow-sm:0 0 12px rgba(0,229,255,.10);
    --shadow-md:0 6px 24px rgba(0,0,0,.45),0 0 18px rgba(0,229,255,.08);
    --shadow-lg:0 16px 48px rgba(0,0,0,.6),0 0 30px rgba(124,77,255,.12);
    --radius-sm:6px;--radius-md:10px;--radius-lg:14px;
    --font-mono:Consolas,Menlo,'Courier New',monospace;
    --card-grad:linear-gradient(160deg,rgba(255,255,255,.07),rgba(255,255,255,.02));
    --card-border:rgba(255,255,255,.10);
}
*{box-sizing:border-box;}

html,body{height:100%;}
body{
    margin:0;padding:0;
    font-family:'PingFang SC','Microsoft Yahei',system-ui,sans-serif;
    font-size:14px;color:var(--txt);min-height:100vh;
    background:
        radial-gradient(900px 460px at 88% -12%, rgba(124,77,255,.20), transparent 62%),
        radial-gradient(760px 420px at -5% 108%, rgba(0,229,255,.12), transparent 56%),
        radial-gradient(600px 320px at 55% 120%, rgba(255,45,149,.06), transparent 60%),
        var(--bg);
}
/* 网格底纹 */
body::before{
    content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.55;
    background-image:
        linear-gradient(rgba(0,229,255,.04) 1px,transparent 1px),
        linear-gradient(90deg,rgba(0,229,255,.04) 1px,transparent 1px);
    background-size:44px 44px;
    mask-image:radial-gradient(ellipse at 50% 0%,#000 0%,transparent 80%);
    -webkit-mask-image:radial-gradient(ellipse at 50% 0%,#000 0%,transparent 80%);
}
/* 顶部霓虹光带 */
body::after{
    content:"";position:fixed;top:0;left:0;right:0;height:2px;z-index:999;
    background:linear-gradient(90deg,transparent,var(--neon),var(--neon-2),var(--neon-3),transparent);
    opacity:.8;pointer-events:none;
}
::selection{background:rgba(0,229,255,.28);color:#fff;}
::-webkit-scrollbar{width:10px;height:10px;}
::-webkit-scrollbar-track{background:rgba(11,16,38,.6);}
::-webkit-scrollbar-thumb{
    background:linear-gradient(180deg,rgba(0,229,255,.35),rgba(124,77,255,.35));
    border-radius:8px;border:2px solid rgba(11,16,38,.8);
}
::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,rgba(0,229,255,.6),rgba(124,77,255,.6));}

/* ============ 通用控件 ============ */
button{
    padding:8px 15px;margin:0;cursor:pointer;
    border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.05);
    border-radius:var(--radius-sm);font-size:13px;color:var(--txt);
    transition:all .18s ease;
}
button:hover{border-color:var(--neon);color:var(--neon);box-shadow:0 0 14px rgba(0,229,255,.22);transform:translateY(-1px);}
button:active{transform:translateY(0);}
button.active{
    background:linear-gradient(135deg,var(--neon),var(--neon-2));color:#02121a;
    border-color:var(--neon);font-weight:700;box-shadow:0 0 20px rgba(0,229,255,.5);
}
button:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;}
button:disabled:hover{color:var(--txt);border-color:rgba(255,255,255,.14);box-shadow:none;transform:none;}

select,input[type=text],input[type=number],textarea{
    padding:6px 10px;font-size:14px;color:var(--txt);
    border:1px solid var(--line);border-radius:var(--radius-sm);
    background:rgba(7,11,26,.8);transition:border-color .2s,box-shadow .2s;
}
select:focus,input:focus,textarea:focus{
    outline:none;border-color:var(--neon);box-shadow:0 0 0 3px rgba(0,229,255,.14),0 0 16px rgba(0,229,255,.12);
}
select option{background:#0b1026;color:var(--txt);}
input[type=file]{display:none;}

.sub{color:var(--txt-sub);font-size:12px;}
h2{color:var(--txt);margin-bottom:4px;text-shadow:0 0 18px rgba(0,229,255,.3);}
h4{color:var(--txt);margin:16px 0 8px;text-shadow:0 0 14px rgba(0,229,255,.25);}
mark{background:rgba(0,229,255,.22);color:var(--neon);padding:0 2px;border-radius:3px;}

/* ============ 按钮系统 ============ */
.btn-primary{
    background:rgba(0,229,255,.10);color:#00e5ff;border-color:rgba(0,229,255,.55);font-weight:700;text-shadow:0 0 10px rgba(0,229,255,.55);
}
.btn-primary:hover{background:rgba(0,229,255,.18);color:#7feaff;box-shadow:0 0 20px rgba(0,229,255,.45);}
.btn-ghost{background:transparent;}
.btn-success{background:rgba(0,230,160,.10);color:#00e6a0;border-color:rgba(0,230,160,.55);font-weight:700;text-shadow:0 0 10px rgba(0,230,160,.5);}
.btn-success:hover{background:rgba(0,230,160,.18);color:#59f0bd;box-shadow:0 0 18px rgba(0,230,160,.45);}
.btn-danger{background:rgba(255,93,110,.12);color:#ff9aa5;border-color:rgba(255,93,110,.55);font-weight:600;text-shadow:0 0 10px rgba(255,93,110,.5);}
.btn-danger:hover{background:rgba(255,93,110,.20);color:#ffb3bb;box-shadow:0 0 18px rgba(255,93,110,.45);}
.btn-sm{padding:4px 11px;font-size:12px;border-radius:6px;}
.btn-lg{padding:10px 20px;font-size:15px;border-radius:8px;}

/* ============ 首页（landing） ============ */
body.landing .site-header{
    position:sticky;top:0;z-index:100;
    background:rgba(7,11,26,.78);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
    border-bottom:1px solid var(--line);padding:0 24px;height:62px;
    display:flex;align-items:center;
}
body.landing .header-inner{
    width:100%;max-width:1240px;margin:0 auto;
    display:flex;align-items:center;gap:18px;
}
body.landing .logo-chip{
    width:34px;height:34px;flex-shrink:0;border-radius:10px;position:relative;
    background:linear-gradient(135deg,var(--neon),var(--neon-2));
    display:flex;align-items:center;justify-content:center;font-size:16px;color:#02121a;
    box-shadow:0 0 18px rgba(0,229,255,.6);transition:transform .25s ease;
}
body.landing .logo-chip:hover{transform:rotate(-8deg) scale(1.06);}
body.landing .brand{font-size:18px;font-weight:800;color:#fff;letter-spacing:1px;text-shadow:0 0 16px rgba(0,229,255,.35);}
body.landing .brand b{background:linear-gradient(90deg,var(--neon),var(--neon-3));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
body.landing .header-sub{font-size:12px;color:var(--txt-sub);}
body.landing .header-sub em{color:var(--neon);font-style:normal;}
body.landing .header-right{margin-left:auto;display:flex;align-items:center;gap:10px;}
body.landing .chip{
    font-size:11.5px;padding:5px 13px;border-radius:8px;color:var(--txt-sub);
    border:1px solid var(--line);background:var(--glass);
}
body.landing .chip b{color:var(--neon);}
body.landing .chip.ok{
    color:var(--ok);border-color:rgba(0,230,160,.4);background:rgba(0,230,160,.08);
}
body.landing .chip.ok b{color:var(--ok);}
body.landing .chip.err{color:var(--err);border-color:rgba(255,93,110,.4);background:rgba(255,93,110,.08);}
body.landing .chip.err b{color:var(--err);}

body.landing .site-body{max-width:1240px;margin:0 auto;display:flex;min-height:calc(100vh - 62px);}

/* 左侧栏 */
body.landing .sidebar{
    width:250px;flex-shrink:0;padding:18px 12px;
    background:rgba(11,16,38,.6);border-right:1px solid var(--line);
    position:sticky;top:62px;height:calc(100vh - 62px);overflow-y:auto;
    backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
}
body.landing .sidebar-title{
    font-size:11px;font-weight:700;color:var(--neon);letter-spacing:3px;
    padding:0 12px 12px;border-bottom:1px solid var(--line);margin-bottom:10px;
    display:flex;align-items:center;gap:8px;
}
body.landing .sidebar-title::before{content:"";width:16px;height:2px;background:var(--neon);box-shadow:0 0 8px var(--neon);}
body.landing .nav-group-head{
    display:flex;align-items:center;gap:8px;padding:11px 12px;cursor:pointer;
    font-size:14px;font-weight:600;color:var(--txt);user-select:none;
    transition:all .16s ease;border-radius:9px;border:1px solid transparent;
    margin-bottom:3px;position:relative;
}
body.landing .nav-group-head:hover{background:var(--glass);border-color:var(--line);transform:translateX(2px);}
body.landing .nav-group-head.active{
    background:linear-gradient(90deg,rgba(0,229,255,.16),rgba(124,77,255,.06));
    border-color:var(--line);box-shadow:inset 3px 0 0 var(--neon),0 0 16px rgba(0,229,255,.08);
}
body.landing .nav-label{flex:1;}
body.landing .nav-count{
    font-size:10.5px;color:var(--neon);background:rgba(0,229,255,.1);
    padding:1px 8px;border-radius:8px;border:1px solid var(--line);
}

/* 右侧主内容 */
body.landing .main-content{flex:1;padding:28px 32px;min-width:0;}
body.landing .list-header{
    display:flex;align-items:center;gap:14px;margin-bottom:20px;padding-bottom:14px;
    border-bottom:1px solid var(--line);
}
body.landing .list-header h2{font-size:21px;font-weight:800;display:flex;align-items:center;gap:10px;text-shadow:0 0 22px rgba(0,229,255,.35);}
body.landing .list-header h2::before{content:"";width:5px;height:22px;background:linear-gradient(180deg,var(--neon),var(--neon-2));border-radius:2px;box-shadow:0 0 12px var(--neon);}
body.landing .list-count{
    font-size:12px;color:var(--txt-sub);border:1px solid var(--line);
    padding:3px 13px;border-radius:14px;background:var(--glass);
}
body.landing .activity-ul{
    list-style:none;padding:0;margin:0;
    display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;
}
body.landing .activity-li{list-style:none;}
body.landing .activity-link{
    display:flex;align-items:center;justify-content:space-between;
    padding:16px 18px;text-decoration:none;color:var(--txt);
    background:var(--card-grad);
    border:1px solid var(--card-border);border-radius:14px;
    position:relative;overflow:hidden;transition:all .22s ease;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
}
body.landing .activity-link::before{
    content:"";position:absolute;top:0;left:-60%;width:45%;height:100%;
    background:linear-gradient(100deg,transparent,rgba(0,229,255,.15),transparent);
    transform:skewX(-20deg);transition:left .55s ease;
}
body.landing .activity-link::after{
    content:"";position:absolute;inset:0;border-radius:14px;padding:1px;
    background:linear-gradient(135deg,rgba(0,229,255,.6),transparent 40%,rgba(124,77,255,.5));
    -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
    -webkit-mask-composite:xor;mask-composite:exclude;
    opacity:0;transition:opacity .25s ease;pointer-events:none;
}
body.landing .activity-link:hover{
    transform:translateY(-4px);border-color:rgba(0,229,255,.5);
    box-shadow:0 0 28px rgba(0,229,255,.18),0 16px 38px rgba(0,0,0,.45);
}
body.landing .activity-link:hover::before{left:120%;}
body.landing .activity-link:hover::after{opacity:1;}
body.landing .al-name{font-size:15px;font-weight:700;}
body.landing .al-meta{display:flex;align-items:center;gap:8px;font-size:12px;}
body.landing .al-bid{
    font-size:11px;color:var(--txt-dim);font-family:var(--font-mono);
    border:1px solid rgba(255,255,255,.12);padding:1px 9px;border-radius:8px;background:rgba(0,0,0,.25);
}
body.landing .al-tag{padding:2px 10px;border-radius:7px;font-size:10.5px;letter-spacing:.5px;font-weight:700;border:1px solid;}
body.landing .tag-img{color:var(--warn);border-color:rgba(255,182,72,.4);background:rgba(255,182,72,.1);}
body.landing .tag-ready{color:var(--ok);border-color:rgba(0,230,160,.4);background:rgba(0,230,160,.08);}
body.landing .tag-na{color:var(--err);border-color:rgba(255,93,110,.4);background:rgba(255,93,110,.08);}
body.landing .empty-hint{text-align:center;padding:70px 20px;color:var(--txt-dim);}
body.landing .empty-title{font-size:16px;color:var(--txt-sub);margin-bottom:8px;}
body.landing .empty-sub{font-size:13px;}

/* 首页底部 OCR 面板 */
.ocrp-panel{
    max-width:1152px;margin:0 auto 26px;padding:0 24px;
    border:1px solid var(--line);border-radius:14px;
    background:linear-gradient(90deg,rgba(0,229,255,.07),rgba(124,77,255,.05));
    backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);font-size:13px;overflow:hidden;
    box-shadow:var(--shadow-md);
}
.ocrp-toggle{
    display:flex;justify-content:space-between;align-items:center;
    padding:14px 18px;cursor:pointer;user-select:none;font-weight:700;letter-spacing:1px;color:#fff;
}
.ocrp-toggle:hover{background:rgba(0,229,255,.05);}
.ocrp-arrow{font-size:10px;color:var(--txt-sub);transition:transform .2s;width:12px;text-align:center;}
.ocrp-arrow::after{content:"▾";}
.ocrp-body{padding:14px 18px;border-top:1px solid var(--line);}
.ocrp-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.ocrp-row label{color:var(--txt);min-width:36px;}
.ocrp-row select{min-width:220px;}
.ocrp-info{color:var(--neon);font-size:12px;}
.ocrp-status{margin-top:8px;padding:9px 12px;background:rgba(0,229,255,.05);border-left:3px solid var(--neon);border-radius:6px;font-family:var(--font-mono);}

/* ============ 活动页 ============ */
.container{max-width:1120px;margin:0 auto;padding:22px;}

.topbar{
    display:flex;align-items:center;gap:14px;margin-bottom:18px;padding-bottom:14px;
    border-bottom:1px solid var(--line);flex-wrap:wrap;
}
.topbar a.back{
    color:var(--neon);text-decoration:none;font-size:13.5px;
    border:1px solid rgba(0,229,255,.4);padding:5px 14px;border-radius:8px;transition:all .15s;
}
.topbar a.back:hover{background:var(--neon);color:#02121a;box-shadow:0 0 16px rgba(0,229,255,.4);}
.topbar h2{margin:0;flex:1;font-size:21px;font-weight:800;text-shadow:0 0 20px rgba(0,229,255,.35);display:flex;align-items:center;gap:10px;}
.topbar h2::before{content:"";width:4px;height:20px;background:linear-gradient(180deg,var(--neon),var(--neon-2));border-radius:2px;box-shadow:0 0 10px var(--neon);}
.topbar .sub{border:1px solid var(--line);padding:3px 12px;border-radius:10px;font-size:12px;}
.live-chip{
    display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ok);
    border:1px solid rgba(0,230,160,.4);padding:3px 12px;border-radius:10px;background:rgba(0,230,160,.06);
}
.live-chip::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 8px var(--ok);animation:pulse 1.4s infinite;}
@keyframes pulse{50%{opacity:.3;}}

.btn-group{
    margin:12px 0;display:flex;gap:9px;flex-wrap:wrap;align-items:center;
    padding:14px 16px;background:linear-gradient(90deg,rgba(0,229,255,.06),rgba(124,77,255,.04));
    border:1px solid var(--line);border-radius:14px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
    box-shadow:var(--shadow-sm);
}
.btn-group input[type=text]{width:320px;padding:9px 14px;font-size:14px;border-radius:8px;}
.btn-group-divider{width:1px;height:22px;background:rgba(0,229,255,.2);margin:0 2px;flex-shrink:0;}
.cross-search{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:var(--txt-sub);cursor:pointer;user-select:none;margin-left:4px;}
.cross-search input{cursor:pointer;accent-color:var(--neon);}
.pic-btn{
    background:rgba(124,77,255,.16);color:#c4b5fd;
    border-color:transparent;font-weight:600;
}
.pic-btn:hover{background:rgba(124,77,255,.26);color:#d6ccff;box-shadow:0 0 18px rgba(124,77,255,.5);transform:translateY(-1px);}

/* 坐标信息条 */
.coord-box{
    margin:8px 0;padding:13px 16px;
    background:rgba(0,229,255,.04);border:1px solid var(--line);border-left:3px solid var(--neon);
    border-radius:10px;font-size:13px;line-height:1.8;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;
    transition:border-color .2s;
}
.coord-box:hover{border-color:rgba(0,229,255,.4);}
.coord-box span#coordOutput{color:var(--txt-sub);font-family:var(--font-mono);font-size:12.5px;}
.coord-edit-btn{font-size:12px;padding:4px 14px;background:transparent;border:1px solid var(--line);border-radius:7px;color:var(--txt-sub);}
.coord-edit-btn:hover{border-color:var(--neon);color:var(--neon);}

/* 坐标弹窗 */
.coord-modal-mask{
    display:none;position:fixed;inset:0;background:rgba(4,6,15,.78);z-index:1000;
    align-items:center;justify-content:center;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
    animation:maskIn .2s ease;
}
.coord-modal-box{
    background:linear-gradient(160deg,rgba(22,30,66,.94),rgba(11,16,38,.98));
    border:1px solid var(--line);border-radius:16px;padding:24px 28px;min-width:520px;max-width:92vw;
    box-shadow:0 0 44px rgba(0,229,255,.16),0 24px 64px rgba(0,0,0,.55);
    animation:modalIn .22s ease;
}
.coord-modal-title{font-weight:700;font-size:16px;margin-bottom:14px;text-shadow:0 0 14px rgba(0,229,255,.3);}
.coord-modal-sub{color:var(--txt-sub);font-weight:400;font-size:13px;}
.coord-modal-section{border-bottom:1px solid rgba(0,229,255,.12);padding-bottom:12px;margin-bottom:12px;}
.coord-form-label{font-size:13px;color:var(--txt);margin-bottom:6px;}
.coord-form{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;}
.coord-form label{font-size:13px;color:var(--txt-sub);}
.coord-form input[type=number]{width:100%;padding:8px 10px;font-family:var(--font-mono);font-size:14px;margin-top:3px;border:1px solid var(--line);border-radius:8px;background:rgba(7,11,26,.8);color:var(--txt);}
.coord-modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px;}

/* 活动页·返回搜索按钮 */
.back-search-btn{
    background:var(--glass);
    color:var(--txt);
    border:1px solid var(--line);
    padding:5px 12px;border-radius:6px;cursor:pointer;
    font-size:12px;font-weight:500;
    transition:all .15s;
}
.back-search-btn:hover{
    background:rgba(0,229,255,.12);
    border-color:var(--neon);
    color:var(--neon);
    box-shadow:0 0 10px rgba(0,229,255,.25);
}

/* 状态栏 */
.ocr-status-bar{
    display:flex;align-items:center;gap:10px;flex-wrap:wrap;
    padding:11px 16px;background:rgba(0,230,160,.05);
    border:1px solid var(--line);border-left:3px solid var(--ok);
    border-radius:10px;font-size:13px;margin:8px 0;color:var(--txt);
    transition:border-color .2s;
}
.ocr-status-bar:hover{border-color:rgba(0,230,160,.4);}
.ocr-status-bar span{color:var(--ok);}

/* 图标库框 */
.icon-box{
    margin:6px 0;padding:13px 16px;
    background:rgba(0,229,255,.05);border:1px solid var(--line);border-left:3px solid var(--info);
    border-radius:10px;font-size:13px;line-height:1.8;
}
.icon-crop-preview{
    display:inline-block;border:1px solid var(--line);background:#000;
    margin-left:8px;vertical-align:middle;border-radius:var(--radius-sm);
    box-shadow:0 0 12px rgba(0,229,255,.15);
}

/* 屏幕预览 */
.preview-panel .sub{margin-bottom:6px;}
#screenPreview{border:1px solid var(--line);border-radius:10px;background:#000;box-shadow:0 0 0 1px rgba(0,229,255,.08),inset 0 0 30px rgba(0,0,0,.4);}

/* OCR 信息 */
#ocrInfo{
    margin:12px 0;line-height:1.9;font-size:13px;padding:14px 16px;
    background:var(--card-grad);
    border:1px solid var(--card-border);border-radius:var(--radius-md);
    backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
}
#ocrInfo > div{margin:2px 0;}
#ocrInfo span{color:var(--txt);}
.diff-bar{font-size:11px;color:var(--neon-3);}

/* 结果列表 */
#resultList{
    border:1px solid var(--line);padding:12px;min-height:130px;max-height:420px;overflow-y:auto;
    background:var(--card-grad);
    border-radius:var(--radius-md);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
}
.placeholder-text{color:var(--txt-sub);padding:6px;}
.item{
    padding:11px 10px;border-bottom:1px solid rgba(0,229,255,.12);
    transition:background .2s;padding-left:12px;border-radius:6px;margin-bottom:2px;
}
.item:hover{background:rgba(0,229,255,.05);}
.item:last-child{border-bottom:none;}
.q{margin:2px 0;font-size:14px;line-height:1.7;color:var(--txt);display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.q .src-local,.q .src-daati,.q .src-dt,.q .src-tag{font-size:11px;border:1px solid;border-radius:4px;padding:0 7px;font-weight:600;}
.q .src-local{color:var(--ok);border-color:rgba(0,230,160,.45);background:rgba(0,230,160,.08);}
.q .src-daati{color:var(--warn);border-color:rgba(255,182,72,.45);background:rgba(255,182,72,.08);}
.q .src-dt{color:var(--neon);border-color:rgba(0,229,255,.45);background:rgba(0,229,255,.08);}
.q .src-tag{color:var(--neon-3);border-color:rgba(255,45,149,.4);background:rgba(255,45,149,.08);}
.a{color:var(--neon);font-weight:bold;font-size:15px;margin-top:4px;text-shadow:0 0 10px rgba(0,229,255,.25);}
.answer-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:6px;}
.answer-row .a{margin-top:0;}
.multi-answer-cell{
    display:inline-flex;align-items:center;gap:4px;
    border:1px solid var(--line);background:rgba(0,229,255,.05);
    border-radius:6px;padding:3px 8px 3px 4px;transition:all .15s;
}
.multi-answer-cell:hover{border-color:rgba(0,229,255,.4);box-shadow:0 0 10px rgba(0,229,255,.12);}
.answer-icon-preview{
    width:35px;height:35px;border-radius:6px;border:1px solid var(--line);
    background:rgba(0,0,0,.3);object-fit:contain;padding:2px;flex-shrink:0;
}
.answer-img-wrap{background:rgba(0,0,0,.3);border:1px solid var(--line);border-radius:6px;padding:2px;flex-shrink:0;}
.answer-main-img{display:block;width:35px;height:35px;object-fit:contain;border-radius:4px;}

/* 看图模式 */
.pic-answer-box{
    background:linear-gradient(135deg,rgba(0,230,160,.12),rgba(0,229,255,.05));
    border:1px solid rgba(0,230,160,.45);border-radius:12px;padding:16px;margin:8px 0;
    box-shadow:0 0 20px rgba(0,230,160,.08);
}
.pic-answer-box .skill{font-size:24px;font-weight:800;color:var(--ok);text-shadow:0 0 16px rgba(0,230,160,.5);margin-top:4px;}

/* 题库图片 */
.q-img-preview{display:block;max-width:140px;max-height:110px;border-radius:6px;border:1px solid var(--line);margin:4px 0 8px;background:rgba(0,0,0,.3);object-fit:contain;}

/* ============ Toast ============ */
.toast{
    position:fixed;top:22px;right:22px;padding:12px 22px;
    background:linear-gradient(135deg,rgba(0,229,255,.16),rgba(124,77,255,.16));
    color:var(--txt);border:1px solid var(--line);border-radius:var(--radius-md);
    font-size:13px;z-index:9999;opacity:0;transition:all .3s;pointer-events:none;
    box-shadow:0 0 20px rgba(0,229,255,.15);transform:translateY(-10px);
    backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
}
.toast.show{opacity:1;transform:translateY(0);}
.toast.success{border-color:var(--ok);color:var(--ok);box-shadow:0 0 20px rgba(0,230,160,.25);}
.toast.error{border-color:var(--err);color:var(--err);box-shadow:0 0 20px rgba(255,93,110,.25);}
.toast.info{border-color:var(--neon);color:var(--neon);}
.toast.warn{border-color:var(--warn);color:var(--warn);}

/* ============ 编辑弹窗（JS 注入） ============ */
.section-group{
    padding:12px 14px;margin:12px 0;
    background:rgba(255,255,255,.04);border-radius:8px;border:1px solid rgba(0,229,255,.14);
}
.section-title{font-size:13px;font-weight:600;color:var(--txt);margin:0 0 10px;display:flex;align-items:center;gap:6px;}
.hint-line{font-size:11px;color:var(--txt-sub);margin-top:6px;line-height:1.5;}
.img-edit-line{display:grid;grid-template-columns:96px 1fr 64px;gap:8px;align-items:center;margin:8px 0;}
.img-edit-label{font-size:12px;color:var(--txt);font-weight:500;}
.img-edit-line input[type=text]{width:100%;box-sizing:border-box;padding:6px 8px;font-size:13px;font-family:var(--font-mono);}
.img-preview-thumb{width:60px;height:60px;border-radius:8px;border:1px solid var(--line);background:rgba(0,0,0,.3);object-fit:contain;padding:3px;box-sizing:border-box;display:none;cursor:zoom-in;transition:transform .15s;}
.img-preview-thumb[src]{display:block;}
.img-preview-thumb:hover{transform:scale(1.08);}

/* ============ 管理工具 ============ */
.admin-h4{margin:18px 0 10px;font-size:18px;color:var(--txt);font-weight:700;}
.admin-tabs{display:flex;gap:4px;border-bottom:2px solid var(--line);margin-bottom:14px;flex-wrap:wrap;padding:0 4px;}
.admin-tab{
    padding:9px 18px;background:transparent;border:none;cursor:pointer;font-size:14px;font-weight:500;
    color:var(--txt-sub);border-radius:8px 8px 0 0;transition:all .15s;position:relative;top:2px;
}
.admin-tab:hover{background:var(--glass);color:var(--txt);}
.admin-tab.active{
    color:var(--neon);background:rgba(0,229,255,.08);
    border:1px solid var(--line);border-bottom:1px solid transparent;font-weight:600;
    box-shadow:inset 0 -2px 0 var(--neon),0 -4px 14px rgba(0,229,255,.06);
}
.admin-panel{padding:2px 2px 20px;}

/* ======================================================== */
/* 管理面板 · 暗色主题（唯一版本 · 升级） */
/* ======================================================== */

.admin-panel .adm-card{
    background:rgba(11,16,38,.6);
    border:1px solid var(--line);
    border-radius:12px;
    width:100%;
    box-sizing:border-box;
    padding:18px;
    margin-bottom:16px;
    box-shadow:var(--shadow-sm);
    transition:border-color .2s,box-shadow .2s;
}
.admin-panel .adm-card:hover{border-color:rgba(0,229,255,.3);}
.admin-panel .adm-card-title{
    font-weight:700;color:var(--txt) !important;
    margin-bottom:12px;font-size:15px;
}
.admin-panel .adm-card-title-sm{
    font-weight:600;color:var(--txt) !important;
    margin-bottom:6px;
}
.admin-panel .adm-thead{
    background:rgba(0,229,255,.10) !important;
    position:sticky;top:0;z-index:1;
}
.admin-panel .adm-thead th,
.admin-panel th[style*="color:#495057"]{
    color:var(--neon) !important;
    border-bottom:2px solid var(--line) !important;
}
.admin-panel td{
    color:var(--txt);
    border-bottom-color:rgba(0,229,255,.15);
}
.admin-panel tr:hover td{
    background:rgba(0,229,255,.04);
}

.admin-panel .adm-btn-ghost,
.admin-panel .adm-btn-ghost-sm{
    background:rgba(255,255,255,.06);
    color:var(--txt);
    border:1px solid var(--line);
    border-radius:6px;
    cursor:pointer;
    transition:all .15s;
}
.admin-panel .adm-btn-ghost{padding:6px 12px;font-size:12px;}
.admin-panel .adm-btn-ghost-sm{padding:4px 12px;font-size:12px;}
.admin-panel .adm-btn-ghost:hover,
.admin-panel .adm-btn-ghost-sm:hover{
    background:rgba(0,229,255,.12);
    border-color:var(--neon);
    color:var(--neon);
}

.admin-panel .adm-field{
    background:rgba(255,255,255,.04);
    color:var(--txt);
    border:1px solid var(--line);
    border-radius:6px;
}
.admin-panel .adm-field-sm{padding:4px 6px;font-size:13px;}
.admin-panel .adm-field-xs{padding:4px 8px;font-size:12px;}
.admin-panel .adm-field-lg{padding:6px 8px;font-size:13px;}
.admin-panel textarea.adm-field{font-family:inherit;}

.admin-panel .adm-ans-cell{
    display:inline-flex;align-items:center;gap:4px;
    background:rgba(0,229,255,.08) !important;
    border:1px solid rgba(0,229,255,.25) !important;
    border-radius:6px;padding:1px 6px 1px 2px;
    margin:1px 4px 1px 0;font-size:12px;
    color:var(--txt) !important;cursor:pointer;
    transition:all .15s;
}
.admin-panel .adm-ans-cell:hover{
    background:rgba(0,229,255,.15) !important;
    border-color:rgba(0,229,255,.5) !important;
}

/* === 对话框 #linkDialog === */
#linkDialog > div:first-child.adm-dialog{
    background:rgba(11,16,38,.96);
    border:1px solid var(--line);
    border-radius:14px;padding:22px;
    min-width:550px;max-width:650px;
    box-shadow:0 8px 36px rgba(0,0,0,.65),0 0 24px rgba(0,229,255,.1);
    color:var(--txt);
    animation:modalIn .22s ease;
}
#linkDialog .adm-dialog-info{
    background:rgba(255,255,255,.04) !important;
    border:1px solid var(--line);
    border-radius:8px;padding:10px;margin-bottom:10px;
    font-size:13px;color:var(--txt);
}
#linkDialog .adm-dialog-match{
    background:rgba(0,229,255,.12) !important;
    border:1px solid rgba(0,229,255,.3);
    border-radius:8px;padding:8px;margin-bottom:10px;
    font-size:12px;color:var(--txt);
}

/* === 管理工具 · 块级包裹与表格（补齐） ===
   题库全览 / OCR纠错规则 / 清洗规则 / 题库查重 四个 Tab 的布局 class 统一在此定义，
   提供卡片包裹、间距与表格样式，避免内容平铺错乱。 */
.admin-panel .admin-rules-intro{
    background:rgba(0,229,255,.05);
    border:1px solid var(--line);border-left:3px solid var(--neon);
    border-radius:8px;padding:10px 14px;margin:0 0 14px;
    font-size:13px;line-height:1.8;color:var(--txt);
}
.admin-panel .admin-toolbar{
    display:flex;align-items:center;gap:8px;flex-wrap:wrap;
    background:rgba(255,255,255,.04);
    border:1px solid var(--line);border-radius:8px;
    padding:10px 12px;margin:0 0 10px;
}
.admin-panel .admin-toolbar > input[type=text]{
    flex:1;min-width:160px;padding:6px 10px;font-size:13px;
    color:var(--txt);border:1px solid var(--line);border-radius:6px;
    background:rgba(7,11,26,.8);
}
.admin-panel .admin-toolbar > input[type=text]:focus{
    outline:none;border-color:var(--neon);box-shadow:0 0 0 2px rgba(0,229,255,.14);
}
.admin-panel .admin-meta{
    background:rgba(0,229,255,.04);border:1px solid var(--line);
    border-radius:6px;padding:8px 12px;margin:0 0 10px;font-size:13px;color:var(--txt);
}
.admin-panel .admin-rules-tester{
    background:rgba(255,255,255,.03);
    border:1px solid var(--line);border-radius:8px;padding:12px 14px;margin-top:14px;
}
.admin-panel .admin-card-body{
    background:rgba(255,255,255,.03);
    border:1px solid var(--line);border-radius:8px;padding:10px 12px;
    font-size:13px;color:var(--txt);
}
.admin-panel #adminBankTable,
.admin-panel #ruleListWrap,
.admin-panel #filterRegexList,
.admin-panel #filterGarbageList,
.admin-panel #dedupResult{margin:10px 0;}
.admin-panel #adminBankPager{margin-top:10px;display:flex;gap:6px;align-items:center;}

/* 管理表格 */
.admin-panel .admin-table{
    width:100%;border-collapse:separate;border-spacing:0;
    background:rgba(11,16,38,.45);
    border:1px solid var(--line);border-radius:10px;overflow:hidden;
    font-size:13px;
}
.admin-panel .admin-table thead{background:rgba(0,229,255,.08);}
.admin-panel .admin-table th{
    color:var(--neon);font-weight:600;text-align:left;
    padding:9px 12px;border-bottom:1px solid var(--line);white-space:nowrap;
}
.admin-panel .admin-table td{
    padding:8px 12px;color:var(--txt);
    border-bottom:1px solid rgba(0,229,255,.10);vertical-align:middle;
}
.admin-panel .admin-table tbody tr:hover td{background:rgba(0,229,255,.05);}
.admin-panel .admin-table tbody tr:last-child td{border-bottom:none;}
.admin-panel .admin-idx{color:var(--txt-dim);font-family:var(--font-mono);font-size:12px;}
.admin-panel .admin-q{line-height:1.6;color:var(--txt);}
.admin-panel .admin-a{line-height:1.9;}

/* 答案 tag：JS 实际输出 class="ans-cell"（adm-ans-cell 是冗余属性，不生效） */
.admin-panel .ans-cell{
    display:inline-flex;align-items:center;gap:4px;
    background:rgba(0,229,255,.08);border:1px solid rgba(0,229,255,.25);
    border-radius:6px;padding:2px 8px 2px 3px;margin:1px 4px 1px 0;
    font-size:13px;color:var(--txt);cursor:pointer;transition:all .15s;
}
.admin-panel .ans-cell:hover{background:rgba(0,229,255,.15);border-color:rgba(0,229,255,.5);}
.admin-panel .admin-thumb{
    width:22px;height:22px;object-fit:contain;border-radius:4px;
    background:rgba(0,0,0,.3);border:1px solid var(--line);
}
.admin-panel .admin-ans-img{
    max-width:110px;max-height:64px;object-fit:contain;border-radius:4px;
    background:rgba(0,0,0,.3);border:1px solid var(--line);
}

/* 规则模式标签 */
.admin-panel .badge-plain,
.admin-panel .badge-re{
    display:inline-block;font-size:11px;padding:1px 8px;border-radius:6px;border:1px solid;
}
.admin-panel .badge-plain{color:var(--txt-sub);border-color:rgba(255,255,255,.2);background:rgba(255,255,255,.06);}
.admin-panel .badge-re{color:var(--neon-3);border-color:rgba(255,45,149,.4);background:rgba(255,45,149,.08);}

/* 规则编辑输入框 */
.admin-panel .r-from,
.admin-panel .r-to{
    width:100%;box-sizing:border-box;padding:4px 8px;font-size:13px;
    font-family:var(--font-mono);color:var(--txt);
    background:rgba(7,11,26,.8);border:1px solid var(--line);border-radius:6px;
}
.admin-panel .r-from:focus,
.admin-panel .r-to:focus{outline:none;border-color:var(--neon);box-shadow:0 0 0 2px rgba(0,229,255,.14);}

/* 小按钮（管理工具通用） */
.admin-panel .btn-s{
    padding:3px 10px;font-size:12px;border-radius:5px;
    background:rgba(255,255,255,.06);color:var(--txt);
    border:1px solid var(--line);cursor:pointer;transition:all .15s;
}
.admin-panel .btn-s:hover{background:rgba(0,229,255,.12);border-color:var(--neon);color:var(--neon);}
.admin-panel .btn-s.danger:hover{background:rgba(255,93,110,.14);border-color:var(--err);color:var(--err);}

/* 查重组（已有内联底色，此处补间距） */
.admin-panel .dedup-group{margin-top:8px;}
.admin-panel .groupSelectAll,
.admin-panel .itemCheck{accent-color:var(--neon);}

/* === 覆盖 JS inline style 中的浅色 === */
.admin-panel [style*="color:#212529"],
.admin-panel [style*="color:#334155"],
.admin-panel [style*="color:#495057"],
.admin-panel [style*="color:#475569"],
.admin-panel [style*="color:#0f172a"]{color:var(--txt) !important;}
.admin-panel [style*="color:#6c757d"],
.admin-panel [style*="color:#888"]{color:var(--txt-dim) !important;}
.admin-panel [style*="color:#64748b"],
.admin-panel [style*="color:#94a3b8"]{color:var(--txt-sub) !important;}
.admin-panel [style*="border-bottom:1px solid #e9ecef"],
.admin-panel [style*="border-bottom:1px solid #dee2e6"],
.admin-panel [style*="border-bottom:1px solid #f0f0f0"],
.admin-panel [style*="border-top:1px solid #e9ecef"]{border-color:rgba(0,229,255,.15) !important;}
.admin-panel [style*="background:#e8f5e9"]{background:rgba(0,230,160,.10) !important;border:1px solid rgba(0,230,160,.35) !important;color:var(--ok) !important;}
.admin-panel [style*="background:#fffbeb"]{background:rgba(255,182,72,.08) !important;border:1px solid rgba(255,182,72,.35) !important;color:var(--txt) !important;}
.admin-panel td[style*="color:#6c757d"]{color:var(--txt-dim) !important;}

/* ======================================================== */
/* 全局暗色补丁（leaderboard / search 非 admin-panel 区域） */
/* ======================================================== */

/* leaderboard.js — 分类分组行 */
[style*="background:#f0f4f8"]{background:rgba(0,229,255,.08) !important;color:var(--txt) !important;}
/* leaderboard.js — 表格分隔线 */
[style*="border-bottom:1px solid #f0f0f0"]{border-color:rgba(0,229,255,.15) !important;}

/* search.js — 答案卡片 multi-answer-cell */
.multi-answer-cell[style*="background:#f7f9fc"]{background:rgba(0,229,255,.08) !important;border:1px solid rgba(0,229,255,.25) !important;color:var(--txt) !important;}
.multi-answer-cell{color:var(--txt);}

/* ============ 动效 ============ */
@keyframes maskIn{from{opacity:0;}to{opacity:1;}}
@keyframes modalIn{from{opacity:0;transform:translateY(14px) scale(.97);}to{opacity:1;transform:translateY(0) scale(1);}}
@keyframes fadeInUp{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}

/* ============ 响应式 ============ */
@media (max-width:900px){
    body.landing .sidebar{width:200px;}
    body.landing .main-content{padding:20px 18px;}
    .btn-group input[type=text]{width:100%;}
}
@media (max-width:680px){
    body.landing .site-body{flex-direction:column;}
    body.landing .sidebar{
        position:static;width:100%;height:auto;border-right:none;border-bottom:1px solid var(--line);
    }
    body.landing .main-content{padding:16px;}
    .coord-modal-box{min-width:0;width:94vw;}
    #linkDialog > div:first-child.adm-dialog{min-width:0;width:94vw;}
    #ocrInfo{display:block;}
}

/* ===== html-confirm 自定义确认弹窗（v3.x 样式缺失补齐）===== */
.html-confirm-mask{
    position:fixed;inset:0;z-index:99999;
    display:flex;align-items:center;justify-content:center;
    background:rgba(3,8,20,.72);
    backdrop-filter:blur(3px);
}
.html-confirm-box{
    background:linear-gradient(160deg,#101736,#0b1026);
    border:1px solid rgba(0,229,255,.35);
    border-radius:12px;padding:22px 26px;
    min-width:320px;max-width:480px;width:min(92vw,480px);
    box-shadow:0 0 30px rgba(0,229,255,.18),0 18px 50px rgba(0,0,0,.55);
}
.html-confirm-title{
    font-size:16px;font-weight:600;color:#e8eeff;margin-bottom:12px;
    text-shadow:0 0 14px rgba(0,229,255,.35);
}
.html-confirm-msg{
    font-size:13.5px;line-height:1.7;color:#b6c1e8;
    white-space:pre-wrap;word-break:break-word;margin-bottom:20px;
}
.html-confirm-actions{display:flex;justify-content:flex-end;gap:10px;}
.html-confirm-btn{
    padding:8px 22px;border-radius:6px;font-size:13px;cursor:pointer;
    font-weight:600;border:1px solid;transition:filter .15s;
}
.html-confirm-btn:hover{filter:brightness(1.15);}
.html-confirm-cancel{
    background:rgba(255,255,255,.06);color:#b6c1e8;border-color:rgba(255,255,255,.22);
}
.html-confirm-cancel:hover{background:rgba(255,255,255,.12);}
.html-confirm-ok{
    background:rgba(0,229,255,.14);color:#7fe9ff;border-color:rgba(0,229,255,.55);
    text-shadow:0 0 10px rgba(0,229,255,.5);
}
.html-confirm-ok:hover{background:rgba(0,229,255,.28);}
