/* ===== 新疆招投标情报系统 · 设计系统（毛玻璃 / 高对比 / 果冻质感） ===== */
:root{
  --bg:#070b18;
  --glass:rgba(255,255,255,.075);
  --glass-2:rgba(255,255,255,.12);
  --stroke:rgba(255,255,255,.15);
  --stroke-2:rgba(255,255,255,.30);
  --txt:#eef3ff;
  --txt-2:#a9b8d8;
  --txt-3:#7d8db2;
  --blue:#4d8dff;
  --cyan:#25e0e0;
  --violet:#a06bff;
  --pink:#ff5fa2;
  --lime:#2ee6a8;
  --amber:#ffb63d;
  --red:#ff5c6c;
  --grad-cta:linear-gradient(135deg,#9df3ff 0%,#6ea8ff 52%,#b48bff 100%);
  --jelly:cubic-bezier(.34,1.56,.64,1);
  --shadow:0 12px 34px rgba(2,6,20,.45);
  --shadow-lg:0 22px 54px rgba(2,6,20,.55);
}
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-font-smoothing:antialiased;text-size-adjust:100%}
body{
  font-family:"Microsoft YaHei","PingFang SC",-apple-system,"Segoe UI",sans-serif;
  color:var(--txt);min-height:100vh;
  background:
    radial-gradient(1100px 620px at 10% -10%, rgba(77,141,255,.42), transparent 62%),
    radial-gradient(900px 540px at 94% 2%, rgba(160,107,255,.34), transparent 64%),
    radial-gradient(880px 600px at 62% 108%, rgba(37,224,224,.22), transparent 62%),
    linear-gradient(165deg,#0a1024 0%,#070b18 46%,#0b1226 100%);
  background-attachment:fixed;
}
body::before{
  content:"";position:fixed;left:-10%;right:-10%;top:-30vh;height:80vh;pointer-events:none;z-index:0;
  background:radial-gradient(closest-side, rgba(110,168,255,.28), transparent 72%);
  filter:blur(50px);animation:aurora 26s ease-in-out infinite alternate;
}
@keyframes aurora{from{transform:translate3d(-3%,-1%,0) scale(1)}to{transform:translate3d(4%,4%,0) scale(1.1)}}
::selection{background:rgba(110,168,255,.45);color:#fff}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);border-radius:99px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.3);background-clip:content-box}

/* ---------- 顶栏 ---------- */
header{
  position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:26px;flex-wrap:wrap;
  padding:12px 26px;
  background:linear-gradient(180deg,rgba(10,17,36,.78),rgba(10,17,36,.42));
  border-bottom:1px solid rgba(255,255,255,.11);
  backdrop-filter:blur(22px) saturate(170%);-webkit-backdrop-filter:blur(22px) saturate(170%);
  box-shadow:0 10px 32px rgba(2,6,20,.4);
}
.logo{
  font-size:18px;font-weight:700;letter-spacing:.6px;white-space:nowrap;
  background:linear-gradient(94deg,#ffffff,#c3d9ff 42%,#8ff6ff 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 2px 10px rgba(120,180,255,.25));
}
nav{display:flex;gap:8px;flex-wrap:wrap}
nav button{
  background:rgba(255,255,255,.06);color:#c8d8f7;border:1px solid rgba(255,255,255,.12);
  padding:8px 16px;font-size:14.5px;border-radius:12px;cursor:pointer;font-family:inherit;
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  transition:transform .42s var(--jelly),background .22s,color .22s,border-color .22s,box-shadow .28s;
}
nav button:hover{background:rgba(255,255,255,.15);color:#fff;border-color:rgba(255,255,255,.3);transform:translateY(-2px) scale(1.03);box-shadow:0 10px 22px rgba(3,9,26,.4)}
nav button:active{transform:scale(.9)}
nav button.active{
  color:#05122b;font-weight:700;border-color:transparent;background:var(--grad-cta);
  box-shadow:0 10px 26px rgba(110,168,255,.45),inset 0 1px 0 rgba(255,255,255,.7);
}


/* ---------- 顶栏右侧：用户 + 退出 ---------- */
.head-right{margin-left:auto;display:flex;align-items:center;gap:10px}
.head-user{font-size:13px;color:#a9b8d8;display:flex;align-items:center;gap:6px;white-space:nowrap}
.head-user b{color:#eaf1ff;font-weight:600}
.btn-logout{
  border-radius:12px;padding:8px 15px;font-size:13.5px;cursor:pointer;color:#ffd7dc;font-family:inherit;
  background:rgba(255,92,108,.14);border:1px solid rgba(255,92,108,.4);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  transition:transform .45s var(--jelly),background .2s,box-shadow .3s,color .2s,border-color .2s;
}
.btn-logout:hover{background:rgba(255,92,108,.26);border-color:rgba(255,140,150,.7);color:#fff;
  transform:translateY(-2px) scale(1.03);box-shadow:0 12px 26px rgba(255,92,108,.3)}
.btn-logout:active{transform:scale(.9)}
.btn-logout:disabled{opacity:.6;cursor:default;transform:none}

/* ---------- 布局 ---------- */
main{position:relative;z-index:1;max-width:1160px;margin:0 auto;padding:26px 20px 80px}
.tab{display:none}
.tab.active{display:block;animation:rise .5s var(--jelly)}
@keyframes rise{from{opacity:0;transform:translateY(12px) scale(.992)}to{opacity:1;transform:none}}
h1{font-size:24px;font-weight:700;line-height:1.5}
h2{font-size:20px;margin:8px 0 16px;font-weight:700;color:#f2f7ff;letter-spacing:.3px;
  text-shadow:0 2px 24px rgba(110,168,255,.35)}
h3{font-size:15.5px;margin:22px 0 10px;color:#dce9ff;font-weight:700;letter-spacing:.3px}
h3::before{content:"";display:inline-block;width:4px;height:14px;margin-right:9px;vertical-align:-2px;border-radius:3px;
  background:linear-gradient(180deg,#9df3ff,#6ea8ff)}
.row{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap;align-items:center}

/* ---------- 搜索首屏 ---------- */
.search-hero{
  position:relative;padding:38px 26px 20px;border-radius:22px;margin-bottom:18px;text-align:center;
  background:linear-gradient(160deg,rgba(255,255,255,.11),rgba(255,255,255,.035));
  border:1px solid rgba(255,255,255,.16);
  backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);
  box-shadow:var(--shadow),inset 0 1px 0 rgba(255,255,255,.26);
}
.search-hero h1{max-width:760px;margin:0 auto 24px;
  background:linear-gradient(94deg,#fff,#cfdfff 45%,#9ff0ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.search-row{
  display:flex;max-width:720px;margin:0 auto;gap:6px;padding:6px;border-radius:999px;
  background:rgba(8,14,30,.55);border:1px solid rgba(255,255,255,.2);
  backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);
  box-shadow:0 16px 42px rgba(3,9,26,.5),inset 0 1px 0 rgba(255,255,255,.18);
  transition:box-shadow .3s,border-color .3s,transform .45s var(--jelly);
}
.search-row:focus-within{border-color:rgba(126,196,255,.75);box-shadow:0 0 0 5px rgba(77,141,255,.16),0 20px 48px rgba(3,9,26,.55);transform:translateY(-1px)}
.search-row input{flex:1;border:none;outline:none;background:transparent;color:var(--txt);padding:13px 20px;font-size:16px;font-family:inherit}
.search-row input::placeholder{color:#7d8fb4}
.search-row button{
  border:none;border-radius:999px;padding:0 28px;font-size:15px;font-weight:700;color:#05122b;cursor:pointer;font-family:inherit;
  background:var(--grad-cta);box-shadow:0 10px 24px rgba(110,168,255,.42),inset 0 1px 0 rgba(255,255,255,.7);
  transition:transform .45s var(--jelly),filter .2s,box-shadow .3s;
}
.search-row button:hover{filter:brightness(1.07);transform:scale(1.03);box-shadow:0 14px 30px rgba(110,168,255,.55)}
.search-row button:active{transform:scale(.88)}
.quick-tags{margin-top:16px;color:var(--txt-3);font-size:13px}
.quick-tags a{color:#8fd0ff;cursor:pointer;margin:0 7px;text-decoration:none;border-bottom:1px dashed rgba(143,208,255,.35);
  transition:color .2s,border-color .2s,text-shadow .2s}
.quick-tags a:hover{color:#c8f3ff;border-color:#c8f3ff;text-shadow:0 0 14px rgba(143,208,255,.6)}

/* ---------- 时间筛选 ---------- */
.filter-row{
  display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:18px 0 2px;max-width:100%;
  padding:10px 14px;border-radius:16px;font-size:13.5px;color:var(--txt-2);
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
}
input[type=date]{
  color-scheme:dark;background:rgba(8,14,30,.6);border:1px solid rgba(255,255,255,.18);color:var(--txt);
  border-radius:10px;padding:6px 10px;font-size:13.5px;font-family:inherit;outline:none;
  transition:border-color .25s,box-shadow .25s,background .25s,transform .45s var(--jelly);
}
input[type=date]:hover{border-color:rgba(255,255,255,.34);background:rgba(18,30,58,.72)}
input[type=date]:focus{border-color:#7ec4ff;box-shadow:0 0 0 4px rgba(77,141,255,.2)}
input[type=date]::-webkit-calendar-picker-indicator{filter:invert(1) brightness(1.7);opacity:.7;cursor:pointer;transition:opacity .2s}
input[type=date]::-webkit-calendar-picker-indicator:hover{opacity:1}
.qdate{
  background:rgba(255,255,255,.07);color:#d7e3ff;padding:6px 13px;border-radius:999px;cursor:pointer;font-size:13px;
  border:1px solid rgba(255,255,255,.16);user-select:none;white-space:nowrap;
  transition:transform .45s var(--jelly),background .22s,color .22s,box-shadow .28s,border-color .22s;
}
.qdate:hover{background:rgba(120,180,255,.22);border-color:rgba(140,200,255,.5);color:#fff;transform:translateY(-2px) scale(1.05);box-shadow:0 10px 22px rgba(60,130,255,.28)}
.qdate:active{transform:scale(.88)}
.qdate.on{background:var(--grad-cta);color:#05122b;font-weight:700;border-color:transparent;
  box-shadow:0 8px 20px rgba(110,168,255,.45),inset 0 1px 0 rgba(255,255,255,.6)}

/* ---------- 卡片 ---------- */
.card{
  background:linear-gradient(160deg,rgba(255,255,255,.115),rgba(255,255,255,.045));
  border:1px solid rgba(255,255,255,.17);border-radius:16px;padding:16px 18px;margin-bottom:14px;
  backdrop-filter:blur(18px) saturate(150%);-webkit-backdrop-filter:blur(18px) saturate(150%);
  box-shadow:0 10px 28px rgba(3,9,26,.35),inset 0 1px 0 rgba(255,255,255,.2);
  transition:transform .45s var(--jelly),box-shadow .3s,border-color .3s;
}
.card:hover{transform:translateY(-3px);border-color:rgba(255,255,255,.26);
  box-shadow:var(--shadow-lg),0 0 0 1px rgba(126,196,255,.1),inset 0 1px 0 rgba(255,255,255,.26)}
.card-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}

/* ---------- 徽章 / 相关度 ---------- */
.badge{font-size:12px;padding:3px 10px;border-radius:999px;color:#fff;white-space:nowrap;
  border:1px solid rgba(255,255,255,.24);box-shadow:0 3px 10px rgba(2,6,20,.3)}
.b-src{background:linear-gradient(135deg,#8a63ff,#b06bff)}
.b-招标公告{background:linear-gradient(135deg,#3d8bff,#5aa8ff)}
.b-中标公告{background:linear-gradient(135deg,#12b878,#2ee6a8)}
.b-更正公告{background:linear-gradient(135deg,#f0a020,#ffc850);color:#241700}
.b-废标公告{background:linear-gradient(135deg,#e8455a,#ff6f7f)}
.b-其他公告{background:linear-gradient(135deg,#6b7896,#93a1bd)}
.score{font-size:12px;font-weight:700;padding:3px 10px;border-radius:999px;white-space:nowrap;border:1px solid transparent}
.s-high{background:rgba(46,230,168,.16);color:#6ff0c0;border-color:rgba(46,230,168,.4)}
.s-mid{background:rgba(255,182,61,.16);color:#ffcd7a;border-color:rgba(255,182,61,.4)}
.s-low{background:rgba(255,255,255,.08);color:#a9b8d8;border-color:rgba(255,255,255,.16)}

/* ---------- 搜索结果卡 ---------- */
.title{font-size:16px;font-weight:600;color:#eaf1ff;cursor:pointer;flex:1;min-width:200px;line-height:1.6;
  transition:color .2s,text-shadow .25s}
.title:hover{color:#9de2ff;text-shadow:0 0 18px rgba(120,200,255,.45)}
.meta{color:var(--txt-3);font-size:13px;margin:8px 0 4px}
.reason{color:#dbe7ff;font-size:13.5px;margin:8px 0;padding:9px 13px;border-radius:10px;
  background:linear-gradient(90deg,rgba(110,168,255,.16),rgba(255,255,255,.05) 55%);
  border:1px solid rgba(255,255,255,.10);border-left:3px solid #6ea8ff;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.10);backdrop-filter:blur(8px)}
.tags{margin:6px 0}
.tag{display:inline-block;font-size:12px;color:#9fe4ff;background:rgba(37,224,224,.12);border:1px solid rgba(37,224,224,.28);
  border-radius:999px;padding:2px 9px;margin-right:6px}
.winner{margin-top:10px;background:rgba(46,230,168,.10);border:1px solid rgba(46,230,168,.35);color:#b6f7dc;
  padding:9px 12px;border-radius:12px;font-size:14px;backdrop-filter:blur(8px)}
.winner b{color:#6ff0c0}
.winner.winner-linked{background:rgba(110,168,255,.10);border-color:rgba(110,168,255,.34);color:#cfe2ff}
.winner.winner-linked b{color:#9dc7ff}
.winner .winner-tip{display:block;margin-top:4px;font-size:12px;color:var(--txt-dim,#9aa7c2);font-weight:400}

/* ---------- 分页 ---------- */
.pager{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;
  margin:16px 0 6px;padding:10px 14px;border-radius:14px;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.10);
  backdrop-filter:blur(14px) saturate(150%)}
.pager .pinfo{font-size:13px;color:#a9b6d0}
.pager .pbtns{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.pager .pbtn{min-width:36px;height:32px;padding:0 10px;border-radius:10px;cursor:pointer;font-size:13px;
  color:#dbe6ff;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);
  transition:transform .16s var(--jelly,cubic-bezier(.34,1.56,.64,1)),background .16s,border-color .16s}
.pager .pbtn:hover:not(:disabled){transform:translateY(-2px) scale(1.03);background:rgba(110,168,255,.20);border-color:rgba(110,168,255,.45)}
.pager .pbtn:active:not(:disabled){transform:scale(.9)}
.pager .pbtn.on{background:var(--grad-cta,linear-gradient(135deg,#9df3ff,#6ea8ff 52%,#b48bff));
  color:#0a1224;font-weight:700;border-color:transparent}
.pager .pbtn:disabled{opacity:.38;cursor:not-allowed}
.pager .pdot{color:#8fa0bf;padding:0 2px;font-size:13px}

/* ---------- 表格 ---------- */
#winners,#comp-all,#competitor-panel,#events,#browse-list,#customer-list{overflow-x:auto;border-radius:14px}
table{width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px;color:var(--txt);
  background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.13);border-radius:14px;overflow:hidden;
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
th,td{padding:9px 12px;text-align:left;border-bottom:1px solid rgba(255,255,255,.07);vertical-align:middle}
th{background:rgba(255,255,255,.07);color:#cddcff;font-weight:700;font-size:12.5px;letter-spacing:.3px;white-space:nowrap}
tr:last-child td{border-bottom:none}
tr:hover td{background:rgba(110,168,255,.11)}
#browse-list td:first-child,#browse-list th:first-child{white-space:nowrap}
#winners td:nth-child(5),#winners th:nth-child(5){white-space:nowrap}
#events td:last-child,#events th:last-child{white-space:nowrap}

/* ---------- 按钮 ---------- */
button{font-family:inherit}
button.btn{
  border:none;border-radius:12px;padding:10px 20px;font-size:14px;font-weight:700;color:#05122b;cursor:pointer;
  background:var(--grad-cta);box-shadow:0 10px 24px rgba(90,150,255,.34),inset 0 1px 0 rgba(255,255,255,.65);
  transition:transform .45s var(--jelly),filter .2s,box-shadow .3s;
}
button.btn:hover{transform:translateY(-2px) scale(1.03);filter:brightness(1.06);box-shadow:0 16px 34px rgba(90,150,255,.46)}
button.btn:active{transform:scale(.88)}
button.btn:disabled{opacity:.5;cursor:default;transform:none;filter:grayscale(.25)}
button.btn2{
  border-radius:12px;padding:9px 15px;font-size:13.5px;cursor:pointer;color:#dbe8ff;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.22);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  transition:transform .45s var(--jelly),background .22s,border-color .22s,box-shadow .3s,color .2s;
}
button.btn2:hover{background:rgba(255,255,255,.17);border-color:rgba(255,255,255,.4);color:#fff;
  transform:translateY(-2px) scale(1.03);box-shadow:0 12px 26px rgba(3,9,26,.42)}
button.btn2:active{transform:scale(.88)}
.dig-btn{
  background:rgba(37,224,224,.12);color:#9fe4ff;border:1px solid rgba(37,224,224,.35);border-radius:999px;
  padding:4px 11px;font-size:12px;cursor:pointer;white-space:nowrap;
  transition:transform .45s var(--jelly),background .2s,box-shadow .25s,color .2s;
}
.dig-btn:hover{background:rgba(37,224,224,.24);color:#e6ffff;transform:translateY(-1px) scale(1.06);box-shadow:0 8px 18px rgba(37,224,224,.28)}
.dig-btn:active{transform:scale(.9)}
.dig{color:#8fd0ff;cursor:pointer;font-size:13px;transition:color .2s,text-shadow .2s}
.dig:hover{color:#d9f6ff;text-shadow:0 0 14px rgba(143,208,255,.55)}

/* ---------- 表单 ---------- */
input,select,textarea{
  background:rgba(8,14,30,.5);border:1px solid rgba(255,255,255,.16);border-radius:12px;
  padding:9px 12px;font-size:14px;color:var(--txt);outline:none;font-family:inherit;
  transition:border-color .25s,box-shadow .25s,background .25s;
}
input::placeholder,textarea::placeholder{color:#7889ad}
input:hover,select:hover,textarea:hover{border-color:rgba(255,255,255,.28)}
input:focus,select:focus,textarea:focus{border-color:#7ec4ff;background:rgba(14,24,48,.7);box-shadow:0 0 0 4px rgba(77,141,255,.18)}
select option{background:#0d1428;color:#e8f0ff}
select{cursor:pointer}
textarea{line-height:1.7;resize:vertical}
label{color:#b7c8e8}

/* ---------- 设置 / 统计 ---------- */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:18px}
.stat{
  background:linear-gradient(160deg,rgba(255,255,255,.11),rgba(255,255,255,.04));
  border:1px solid rgba(255,255,255,.14);border-radius:16px;padding:16px 14px;text-align:center;
  backdrop-filter:blur(16px);box-shadow:0 10px 26px rgba(3,9,26,.32),inset 0 1px 0 rgba(255,255,255,.22);
  transition:transform .45s var(--jelly),box-shadow .3s,border-color .3s;
}
.stat:hover{transform:translateY(-3px) scale(1.02);border-color:rgba(255,255,255,.26);box-shadow:var(--shadow-lg)}
.stat .num{font-size:26px;font-weight:800;letter-spacing:.5px;
  background:linear-gradient(94deg,#9df3ff,#6ea8ff 55%,#b48bff);-webkit-background-clip:text;background-clip:text;color:transparent}
.stat .lbl{font-size:12.5px;color:var(--txt-3);margin-top:6px}
.form-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:20px;border-radius:18px;
  background:linear-gradient(160deg,rgba(255,255,255,.09),rgba(255,255,255,.035));
  border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(18px);box-shadow:var(--shadow),inset 0 1px 0 rgba(255,255,255,.2);
}
.form-grid label{font-size:12.5px;color:#a9bcdd;display:block;margin-bottom:6px}
.form-grid input,.form-grid textarea{width:100%}
.form-grid .full{grid-column:1/-1}
.form-grid h3{margin:6px 0 2px}

/* ---------- 客户列表 ---------- */
.cust-item{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  background:linear-gradient(160deg,rgba(255,255,255,.09),rgba(255,255,255,.035));
  border:1px solid rgba(255,255,255,.13);border-radius:14px;padding:12px 16px;margin-bottom:8px;
  backdrop-filter:blur(14px);box-shadow:0 8px 20px rgba(3,9,26,.28);
  transition:transform .45s var(--jelly),border-color .3s,box-shadow .3s;
}
.cust-item:hover{transform:translateX(3px);border-color:rgba(255,255,255,.24);box-shadow:0 14px 30px rgba(3,9,26,.4)}
.cust-item .del{color:#ff8d99;cursor:pointer;font-size:13px;transition:color .2s,text-shadow .2s}
.cust-item .del:hover{color:#ff5c6c;text-shadow:0 0 14px rgba(255,92,108,.5)}
.bulk-box{
  margin:12px 0 18px;border:1px dashed rgba(255,255,255,.24);border-radius:16px;padding:12px 16px;
  background:rgba(255,255,255,.045);backdrop-filter:blur(14px);
  transition:border-color .25s,background .25s;
}
.bulk-box[open]{background:rgba(255,255,255,.07);border-color:rgba(140,200,255,.45)}
.bulk-box summary{cursor:pointer;font-weight:700;color:#cfe0ff;transition:color .2s}
.bulk-box summary:hover{color:#9de2ff}
.bulk-box textarea{width:100%;margin-top:10px;font-size:13px}

/* ---------- 状态文字 ---------- */
#search-status{color:#9db0d4;font-size:13.5px;text-align:center;padding:12px 0}
.hint{color:#9db0d4;font-size:13.5px;text-align:left;padding:6px 0}
#dig-status{margin:10px 0 14px;min-height:20px;font-size:13px;color:#cfe0ff}
#dig-status-w{margin:8px 0 12px;min-height:20px;font-size:13px;color:#cfe0ff}
.empty{color:#8f9fc0;text-align:center;padding:34px 0}

/* ---------- 弹窗 ---------- */
.modal{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;
  background:rgba(4,8,20,.62);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  animation:fade .25s ease}
@keyframes fade{from{opacity:0}to{opacity:1}}
.modal.hidden{display:none}
.modal-box{
  position:relative;width:92%;max-width:880px;max-height:86vh;overflow:auto;padding:24px 28px;border-radius:20px;
  background:linear-gradient(160deg,rgba(22,32,58,.92),rgba(12,18,36,.94));
  border:1px solid rgba(255,255,255,.2);box-shadow:var(--shadow-lg),inset 0 1px 0 rgba(255,255,255,.25);
  backdrop-filter:blur(24px) saturate(160%);animation:pop .45s var(--jelly);
}
@keyframes pop{from{opacity:0;transform:scale(.94) translateY(10px)}to{opacity:1;transform:none}}
.modal-box h2{padding-right:34px}
#modal-close{position:absolute;top:14px;right:18px;font-size:26px;line-height:1;color:#93a4c6;cursor:pointer;
  transition:transform .45s var(--jelly),color .2s}
#modal-close:hover{color:#ff8d99;transform:rotate(90deg) scale(1.1)}
.content-text{white-space:pre-wrap;font-size:14px;line-height:1.85;color:#e2ebff;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);padding:16px;border-radius:12px;max-height:44vh;overflow:auto}
.m-info{display:flex;flex-wrap:wrap;gap:8px 22px;margin:14px 0;font-size:13px;color:#a9b8d8}
.orig-link{color:#8fd0ff;text-decoration:none;border-bottom:1px dashed rgba(143,208,255,.4)}
.orig-link:hover{color:#d9f6ff}
.ev-won{color:#6ff0c0;font-weight:700}
.ev-buyer{color:#8fc4ff}
.ev-agency{color:#ffcd7a}
.ev-mentioned{color:#9db0d4}

/* ---------- 登录页 ---------- */
.login-wrap{
  position:relative;z-index:1;max-width:1080px;margin:0 auto;padding:48px 24px 64px;
  display:grid;grid-template-columns:1.05fr .95fr;gap:46px;align-items:center;min-height:calc(100vh - 62px);
}
.login-hero h1{
  font-size:30px;line-height:1.45;font-weight:800;letter-spacing:.4px;
  background:linear-gradient(96deg,#ffffff,#cfe2ff 46%,#8ff6ff);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 4px 22px rgba(120,180,255,.22));
}
.login-hero .sub{margin-top:16px;color:#a9b8d8;font-size:14px;line-height:1.95}
.feat{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.feat span{
  font-size:13px;color:#d7e3ff;padding:8px 14px;border-radius:999px;
  background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  transition:transform .45s var(--jelly),background .22s,border-color .22s;
}
.feat span:hover{transform:translateY(-2px) scale(1.04);background:rgba(120,180,255,.18);border-color:rgba(140,200,255,.4)}
.login-navbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  padding:12px 26px;background:linear-gradient(180deg,rgba(10,17,36,.78),rgba(10,17,36,.42));
  border-bottom:1px solid rgba(255,255,255,.11);
  backdrop-filter:blur(22px) saturate(170%);-webkit-backdrop-filter:blur(22px) saturate(170%)}
.login-navbar .note{margin-left:auto;font-size:12.5px;color:#9db0d4;letter-spacing:.4px}
.login-card{
  width:100%;max-width:420px;justify-self:center;padding:34px 32px 26px;border-radius:24px;
  background:linear-gradient(160deg,rgba(255,255,255,.13),rgba(255,255,255,.05));
  border:1px solid rgba(255,255,255,.22);
  backdrop-filter:blur(26px) saturate(170%);-webkit-backdrop-filter:blur(26px) saturate(170%);
  box-shadow:0 30px 70px rgba(2,6,20,.62),inset 0 1px 0 rgba(255,255,255,.38),
    0 0 90px rgba(110,168,255,.22),0 0 1px rgba(255,255,255,.4);
  animation:pop .6s var(--jelly);
}
.login-card .logo{font-size:34px;text-align:center;margin-bottom:8px;filter:none}
.login-card h1{font-size:19px;text-align:center;margin:0 0 6px;letter-spacing:.5px;
  background:linear-gradient(94deg,#fff,#cfdfff 45%,#9ff0ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.login-card .sub{text-align:center;font-size:12.5px;color:#9db0d4;margin-bottom:24px;line-height:1.6}
.login-card label{display:block;font-size:12.5px;color:#a9bcdd;margin:14px 0 6px}
.login-card input{width:100%;padding:12px 14px;font-size:14px}
.login-card button{
  width:100%;margin-top:22px;padding:13px;font-size:15px;font-weight:700;color:#05122b;
  background:var(--grad-cta);border:0;border-radius:14px;cursor:pointer;
  box-shadow:0 12px 28px rgba(110,168,255,.4),inset 0 1px 0 rgba(255,255,255,.65);
  transition:transform .45s var(--jelly),filter .2s,box-shadow .3s;
}
.login-card button:hover{filter:brightness(1.07);transform:translateY(-2px) scale(1.02);box-shadow:0 18px 36px rgba(110,168,255,.5)}
.login-card button:active{transform:scale(.88)}
.login-card .err{margin-top:14px;min-height:18px;font-size:13px;color:#ff8d99;text-align:center}
.login-card .foot{margin-top:20px;text-align:center;font-size:12px;color:#8b9bbe;line-height:1.8}


/* ---------- 确认弹窗 / 轻提示（替代浏览器原生 confirm/alert） ---------- */
.confirm-box{max-width:452px;width:92%;padding:26px 26px 22px;text-align:center}
.confirm-box h2{font-size:17px;margin:0 0 8px;color:#f2f7ff;text-shadow:0 2px 20px rgba(110,168,255,.3)}
.confirm-msg{color:#c6d6f2;font-size:14px;line-height:1.85;padding:4px 2px 2px;word-break:break-all;white-space:pre-line}
.confirm-actions{display:flex;gap:10px;justify-content:center;margin-top:22px}
.confirm-actions .btn,.confirm-actions .btn2{min-width:104px}
button.btn.danger{
  background:linear-gradient(135deg,#ffb0b8,#ff5c6c 60%,#e8455a);color:#2a0510;
  box-shadow:0 10px 24px rgba(255,92,108,.38),inset 0 1px 0 rgba(255,255,255,.6)
}
button.btn.danger:hover{box-shadow:0 16px 32px rgba(255,92,108,.5)}
.toast{
  position:fixed;left:50%;top:84px;z-index:90;transform:translate(-50%,-16px);
  padding:12px 22px;border-radius:14px;font-size:14px;color:#eef3ff;white-space:nowrap;max-width:90vw;
  background:linear-gradient(160deg,rgba(255,255,255,.17),rgba(255,255,255,.07));
  border:1px solid rgba(255,255,255,.28);
  backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);
  box-shadow:0 18px 42px rgba(2,6,20,.55),inset 0 1px 0 rgba(255,255,255,.35);
  opacity:0;pointer-events:none;
  transition:opacity .22s,transform .45s var(--jelly);
}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.ok{border-color:rgba(46,230,168,.45);box-shadow:0 18px 42px rgba(2,6,20,.55),0 0 0 1px rgba(46,230,168,.22),inset 0 1px 0 rgba(255,255,255,.35)}
.toast.err{border-color:rgba(255,92,108,.5);box-shadow:0 18px 42px rgba(2,6,20,.55),0 0 0 1px rgba(255,92,108,.28),inset 0 1px 0 rgba(255,255,255,.35)}

/* ---------- 自适应 ---------- */
@media (max-width:820px){
  header{padding:10px 14px;gap:12px}
  main{padding:18px 14px 60px}
  .search-hero{padding:26px 16px 16px}
  .search-hero h1{font-size:19px}
  .search-row{flex-wrap:wrap;border-radius:22px}
  .search-row input{width:100%}
  .search-row button{width:100%;padding:12px}
  .filter-row{border-radius:14px}
  .form-grid{grid-template-columns:1fr}
  .login-wrap{grid-template-columns:1fr;gap:28px;padding:28px 18px 44px;min-height:auto}
  .login-hero h1{font-size:22px}
  .login-hero .sub{font-size:13px}
  .login-navbar .note{display:none}
  .head-user{display:none}
  .stats-grid{grid-template-columns:repeat(2,1fr)}
  h1{font-size:20px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001s!important;transition-duration:.001s!important}
  body::before{animation:none}
}

/* 已监控标记（中标方库） */
.tag-mon{display:inline-block;padding:4px 10px;border-radius:999px;font-size:12px;line-height:1.5;
  color:#8ef0c2;background:rgba(31,157,85,.16);border:1px solid rgba(31,157,85,.38);white-space:nowrap}

/* ============ 采集任务浮层（进度条 + 实时日志） ============ */
.task-panel {
  position: fixed; right: 18px; bottom: 18px; width: 392px; max-width: calc(100vw - 24px);
  border-radius: 18px; z-index: 220; overflow: hidden;
  background: rgba(14, 20, 38, .78);
  border: 1px solid rgba(255, 255, 255, .14);
  box-shadow: 0 18px 50px rgba(0, 0, 0, .55), inset 0 1px 0 rgba(255, 255, 255, .1);
  backdrop-filter: blur(22px) saturate(160%);
  -webkit-backdrop-filter: blur(22px) saturate(160%);
  animation: tpIn .34s var(--jelly, cubic-bezier(.34,1.56,.64,1)) both;
  color: #e8efff; font-size: 13px;
}
@keyframes tpIn { from { opacity: 0; transform: translateY(14px) scale(.97); } to { opacity: 1; transform: none; } }
.task-panel.hidden { display: none; }
.task-panel.min .tp-body { display: none; }
.tp-head { display: flex; align-items: center; gap: 8px; padding: 11px 12px 10px; background: rgba(255,255,255,.04); border-bottom: 1px solid rgba(255,255,255,.08); }
.tp-dot { width: 8px; height: 8px; border-radius: 50%; background: #9df3ff; box-shadow: 0 0 10px #9df3ff; flex: 0 0 auto; }
.tp-dot.spin { animation: tpPulse 1.1s ease-in-out infinite; }
@keyframes tpPulse { 0%,100% { opacity: .35; transform: scale(.8); } 50% { opacity: 1; transform: scale(1.25); } }
.tp-title { font-weight: 700; letter-spacing: .02em; font-size: 12.5px; color: #cfe6ff; white-space: nowrap; flex: 0 0 auto; }
.tp-phase { color: #8fa6c9; font-size: 11.5px; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tp-min { width: 24px; height: 24px; border-radius: 8px; border: 1px solid rgba(255,255,255,.16); background: rgba(255,255,255,.06); color: #cfe0ff; cursor: pointer; line-height: 1; transition: .18s var(--jelly, cubic-bezier(.34,1.56,.64,1)); }
.tp-min:hover { transform: scale(1.08); background: rgba(255,255,255,.14); }
.tp-body { padding: 12px; }
.tp-bar { height: 8px; border-radius: 99px; background: rgba(255,255,255,.1); overflow: hidden; box-shadow: inset 0 1px 3px rgba(0,0,0,.4); }
.tp-bar > i { display: block; height: 100%; width: 0; border-radius: 99px; background: linear-gradient(90deg, #9df3ff, #6ea8ff 55%, #b48bff); box-shadow: 0 0 14px rgba(110,168,255,.75); transition: width .5s var(--jelly, cubic-bezier(.34,1.56,.64,1)); }
.tp-meta { display: flex; gap: 10px; align-items: baseline; margin: 8px 2px 10px; color: #9fb3d8; font-size: 12px; }
.tp-meta #tp-pct { color: #cfe6ff; font-weight: 700; font-variant-numeric: tabular-nums; }
.tp-meta #tp-new { color: #6ee7b7; }
.tp-meta #tp-time { margin-left: auto; opacity: .8; }
.tp-actions { display: flex; gap: 8px; margin-bottom: 10px; }
.tp-btn { flex: 1; padding: 7px 10px; border-radius: 10px; border: 1px solid rgba(255,255,255,.18); background: rgba(255,255,255,.07); color: #dbe8ff; cursor: pointer; font-size: 12.5px; transition: .18s var(--jelly, cubic-bezier(.34,1.56,.64,1)); }
.tp-btn:hover { transform: translateY(-1px) scale(1.02); background: rgba(255,255,255,.14); }
.tp-btn:active { transform: scale(.94); }
.tp-btn:disabled { opacity: .38; cursor: not-allowed; transform: none; }
.tp-btn.danger { border-color: rgba(255,107,107,.45); color: #ffb3b3; background: rgba(255,90,90,.12); }
.tp-btn.danger:hover { background: rgba(255,90,90,.22); }
.tp-log { height: 168px; overflow-y: auto; border-radius: 12px; padding: 8px 10px; background: rgba(0, 0, 0, .38); border: 1px solid rgba(255,255,255,.07); font-family: ui-monospace, SFMono-Regular, Consolas, "Courier New", monospace; font-size: 11.5px; line-height: 1.65; }
.tp-log::-webkit-scrollbar { width: 6px; }
.tp-log::-webkit-scrollbar-thumb { background: rgba(255,255,255,.18); border-radius: 99px; }
.tp-line { white-space: pre-wrap; word-break: break-all; color: #a9bbd8; }
.tp-line .t { color: #5d739a; margin-right: 6px; }
.tp-line.INFO .m { color: #b8c9e5; }
.tp-line.WARN .m { color: #ffd479; }
.tp-line.ERRO .m, .tp-line.ERROR .m { color: #ff9b9b; }
.tp-line.HEAD .m { color: #9df3ff; }
@media (max-width: 820px) { .task-panel { right: 8px; left: 8px; bottom: 8px; width: auto; } .tp-log { height: 132px; } }
