/* 博越智库管理后台 · 视觉重制 v2 — 沉稳墨绿 × 暖金 */
:root{
  --ease: cubic-bezier(.22,1,.36,1);
  /* 墨绿主色系 */
  --primary: oklch(40% 0.058 167);
  --primary-d: oklch(32% 0.058 167);
  --primary-2: oklch(48% 0.060 167);
  --primary-soft: oklch(96.5% 0.014 167);
  --primary-line: oklch(90% 0.022 167);
  /* 暖金强调 */
  --gold: oklch(68% 0.105 78);
  --gold-d: oklch(60% 0.105 78);
  --gold-soft: oklch(95% 0.035 80);
  /* 中性（偏暖） */
  --ink: oklch(27% 0.012 250);
  --ink-2: oklch(46% 0.012 250);
  --ink-3: oklch(64% 0.010 250);
  --line: oklch(92.5% 0.005 250);
  --bg: oklch(97.6% 0.004 110);
  --card: #ffffff;
  /* 状态色 */
  --success: oklch(52% 0.10 155);
  --warn: oklch(67% 0.12 68);
  --danger: oklch(55% 0.16 25);
  /* 阴影 */
  --sh-1: 0 1px 2px oklch(27% 0.02 250 / .04), 0 2px 10px oklch(27% 0.02 250 / .05);
  --sh-2: 0 6px 22px oklch(27% 0.05 167 / .10), 0 16px 48px oklch(27% 0.04 167 / .08);
  --sh-pop: 0 24px 70px oklch(27% 0.05 167 / .22);
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",
    "Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  color:var(--ink);
  background:var(--bg);
  font-size:14px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
h1{font-size:clamp(19px,1.4vw,24px);margin:0;font-weight:720;letter-spacing:-.01em}
input,select,textarea{font-family:inherit;font-size:14px;color:var(--ink)}
a{cursor:pointer}
::selection{background:var(--primary-soft);color:var(--primary-d)}

/* 全局滚动条 */
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:oklch(80% 0.01 250 /.4);border-radius:20px;border:3px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:oklch(70% 0.01 250 /.5);background-clip:content-box}

/* 背景装饰 */
.bg-decor{position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(60vw 40vw at 88% -8%, oklch(40% 0.058 167 / .05), transparent 60%),
    radial-gradient(40vw 30vw at -6% 108%, oklch(68% 0.105 78 / .045), transparent 60%);
}

/* ===== 登录 ===== */
.login-wrap{
  min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;
  background:
    radial-gradient(900px 500px at 78% -12%, oklch(40% 0.058 167 / .10), transparent 60%),
    var(--bg);
}
.login-card{
  position:relative;width:392px;padding:42px 38px 34px;
  background:var(--card);border-radius:18px;
  box-shadow:var(--sh-2);overflow:hidden;
}
.login-card::before{content:"";position:absolute;left:0;top:0;right:0;height:4px;
  background:linear-gradient(90deg,var(--primary),var(--gold))}
.brand{display:flex;align-items:center;gap:14px;margin-bottom:30px}
.brand-mark{
  width:50px;height:50px;border-radius:14px;
  background:linear-gradient(150deg,var(--primary-2),var(--primary-d));
  color:#fff;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:800;
  box-shadow:0 6px 16px oklch(40% 0.058 167 / .35);letter-spacing:-.02em;
}
.brand-mark.sm{width:30px;height:30px;font-size:16px;border-radius:9px;box-shadow:none}
.brand-name{font-size:20px;font-weight:760;letter-spacing:-.01em}
.brand-sub{font-size:12px;color:var(--ink-3);margin-top:3px;letter-spacing:.02em}
.fld{display:block;margin-bottom:16px}
.fld span{display:block;font-size:12.5px;color:var(--ink-2);margin-bottom:7px;font-weight:560}
.fld input,.fld textarea,.fld select{
  width:100%;padding:11px 13px;border:1.5px solid var(--line);border-radius:11px;
  outline:none;transition:border-color .18s var(--ease),box-shadow .18s var(--ease);background:#fff;
}
.fld input:focus,.fld textarea:focus,.fld select:focus{
  border-color:var(--primary);box-shadow:0 0 0 3px oklch(40% 0.058 167 / .12)}
.btn-primary{
  width:100%;padding:12.5px;background:linear-gradient(180deg,var(--primary-2),var(--primary));
  color:#fff;border:none;border-radius:11px;font-size:15px;font-weight:640;cursor:pointer;
  transition:filter .18s var(--ease),transform .12s var(--ease),box-shadow .18s var(--ease);
  box-shadow:0 6px 18px oklch(40% 0.058 167 / .28)}
.btn-primary:hover{filter:brightness(1.06);box-shadow:0 9px 24px oklch(40% 0.058 167 / .34)}
.btn-primary:active{transform:translateY(1px)}
.login-err{color:var(--danger);font-size:13px;margin-top:12px;min-height:18px;text-align:center;font-weight:520}
.login-hint{text-align:center;color:var(--ink-3);font-size:12px;margin-top:16px}

/* ===== 框架 ===== */
.app{display:flex;min-height:100vh}
.side{
  width:236px;flex-shrink:0;display:flex;flex-direction:column;position:relative;
  background:linear-gradient(180deg,oklch(34% 0.05 167),oklch(27% 0.05 167));
  color:oklch(86% 0.02 167);
}
.side::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(120% 50% at 50% -10%, oklch(55% 0.06 167 / .35), transparent 60%)}
.side>*{position:relative;z-index:1}
.side-brand{
  padding:22px 22px;font-size:17px;font-weight:760;color:#fff;display:flex;align-items:center;gap:11px;
  border-bottom:1px solid oklch(100% 0 0 / .08);
}
#nav{flex:1;padding:16px 14px;overflow:auto}
.nav-group{margin-bottom:3px}
.nav-item{
  display:flex;align-items:center;gap:11px;padding:11px 14px;border-radius:11px;
  color:oklch(80% 0.02 167);font-size:14px;cursor:pointer;margin-bottom:3px;position:relative;
  transition:background .16s var(--ease),color .16s var(--ease)}
.nav-item:hover{background:oklch(100% 0 0 / .07);color:#fff}
.nav-item.on{background:oklch(100% 0 0 / .10);color:#fff;font-weight:600}
.nav-item.on::before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:3px;
  border-radius:3px;background:var(--gold);box-shadow:0 0 10px oklch(68% 0.105 78 / .7)}
.nav-parent{margin-bottom:2px}
.nav-chevron{margin-left:auto;font-size:16px;line-height:1;color:oklch(76% 0.02 167);transform:translateY(-1px)}
.nav-submenu{margin:0 0 7px 16px;padding:2px 0 2px 12px;border-left:1px solid oklch(100% 0 0 / .16)}
.nav-subitem{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:9px;color:oklch(74% 0.02 167);font-size:13px;cursor:pointer;position:relative;transition:background .16s var(--ease),color .16s var(--ease)}
.nav-subitem:hover{background:oklch(100% 0 0 / .07);color:#fff}
.nav-subitem.on{background:oklch(100% 0 0 / .10);color:#fff;font-weight:600}
.nav-subitem.on::before{content:"";position:absolute;left:-13px;top:8px;bottom:8px;width:2px;border-radius:2px;background:var(--gold)}
.nav-item .badge{margin-left:auto;background:var(--danger);color:#fff;font-size:11px;border-radius:20px;
  padding:1px 7px;min-width:18px;text-align:center;font-weight:600}
.nav-subitem .badge{margin-left:auto;background:var(--danger);color:#fff;font-size:11px;border-radius:20px;padding:1px 7px;min-width:18px;text-align:center;font-weight:600}
.nav-item.on .badge{background:var(--gold);color:oklch(28% 0.05 167)}
.nav-ico{width:18px;text-align:center;opacity:.9;font-size:15px}
.side-foot{padding:16px 18px;border-top:1px solid oklch(100% 0 0 / .08)}
.who{font-size:13px;color:oklch(78% 0.02 167);margin-bottom:9px;line-height:1.4}
.who b{color:#fff;font-weight:640}
.logout{font-size:13px;color:oklch(74% 0.04 80);font-weight:520}
.logout:hover{color:var(--gold)}

.main{flex:1;display:flex;flex-direction:column;min-width:0}
.topbar{
  height:66px;background:oklch(100% 0 0 / .85);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;
  padding:0 28px;position:sticky;top:0;z-index:5}
.topbar-right{display:flex;align-items:center;gap:14px}
.view{padding:26px 28px;overflow:auto;flex:1}

/* 顶栏小区切换 */
.comm-sel{
  padding:8px 34px 8px 13px;border:1.5px solid var(--line);border-radius:10px;font-size:13.5px;
  background:#fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M2 4l4 4 4-4' stroke='%2364 0.01 250' fill='none' stroke-width='1.6' stroke-linecap='round'/></svg>") no-repeat right 12px center;
  color:var(--ink);outline:none;cursor:pointer;min-width:150px;appearance:none;
  transition:border-color .18s var(--ease),box-shadow .18s var(--ease)}
.comm-sel:focus{border-color:var(--primary);box-shadow:0 0 0 3px oklch(40% 0.058 167 / .12)}
.scope-pill{display:inline-block;font-size:11.5px;font-weight:600;color:var(--gold-d);
  background:var(--gold-soft);border-radius:20px;padding:2px 12px;margin-left:10px;vertical-align:middle}

/* ===== 通用组件 ===== */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:16px;margin-bottom:8px}
.stat{
  position:relative;background:var(--card);border-radius:15px;padding:20px 22px;
  border:1px solid var(--line);box-shadow:var(--sh-1);overflow:hidden;
  transition:transform .2s var(--ease),box-shadow .2s var(--ease)}
.stat::after{content:"";position:absolute;right:-20px;top:-20px;width:80px;height:80px;border-radius:50%;
  background:radial-gradient(circle,oklch(40% 0.058 167 / .07),transparent 70%)}
.stat:hover{transform:translateY(-3px);box-shadow:var(--sh-2)}
.stat .n{font-size:clamp(28px,2.4vw,36px);font-weight:800;color:var(--primary);
  line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums;position:relative}
.stat .l{font-size:13px;color:var(--ink-2);margin-top:9px;font-weight:500}
.stat.alert .n{color:var(--danger)}

.panel{background:var(--card);border:1px solid var(--line);border-radius:15px;margin-top:20px;
  overflow:hidden;box-shadow:var(--sh-1)}
.panel-head{padding:16px 20px;border-bottom:1px solid var(--line);font-weight:660;font-size:15px;
  display:flex;align-items:center;justify-content:space-between;gap:12px}
.panel-head::before{content:"";width:4px;height:16px;border-radius:3px;background:var(--gold);margin-right:-10px}
.panel-body{padding:6px 0}
.owner-search-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.owner-search-row .searchbar{flex:1 1 420px;max-width:620px}
.owner-scope-hint{color:var(--ink-3);font-size:13px}
.owner-pager{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 4px;color:var(--ink-3);font-size:13px}
.owner-pager .btn:disabled{cursor:not-allowed;opacity:.45}
.scope-overview{background:var(--card);border:1px solid var(--line);border-radius:15px;padding:24px;box-shadow:var(--sh-1)}
.scope-overview-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:22px}
.scope-overview-head h2{margin:0;font-size:20px;color:var(--ink)}
.scope-overview-head p{margin:8px 0 0;color:var(--ink-3);font-size:13px;line-height:1.7}
.scope-overview .cards{margin-bottom:0}
.scope-overview-tip{margin-top:20px;padding:13px 15px;border-radius:10px;background:var(--primary-soft);color:var(--ink-2);font-size:13px}

table{width:100%;border-collapse:collapse}
th{text-align:left;font-size:11.5px;color:var(--ink-3);font-weight:640;padding:12px 20px;
  letter-spacing:.05em;background:oklch(98% 0.004 167);text-transform:uppercase}
td{padding:14px 20px;border-top:1px solid var(--line);font-size:13.5px;vertical-align:middle}
tr:hover td{background:oklch(98% 0.004 167 / .6)}
tbody tr:first-child td{border-top:none}

.tag{display:inline-block;padding:3px 11px;border-radius:30px;font-size:12px;font-weight:560;
  border:1px solid transparent}
.t-blue{background:var(--primary-soft);color:var(--primary);border-color:var(--primary-line)}
.t-green{background:oklch(95% 0.04 155);color:var(--success);border-color:oklch(88% 0.06 155)}
.t-orange{background:oklch(96% 0.05 68);color:var(--warn);border-color:oklch(90% 0.07 68)}
.t-red{background:oklch(96% 0.03 25);color:var(--danger);border-color:oklch(89% 0.07 25)}
.t-grey{background:oklch(96% 0.003 250);color:var(--ink-3);border-color:var(--line)}

.section-title{margin:22px 0 10px;padding-left:11px;border-left:3px solid var(--primary);
  font-size:15px;font-weight:650;color:var(--ink)}
.subnav-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px}
.subnav-tab{border:1px solid var(--line);background:var(--surface);color:var(--ink-2);border-radius:999px;
  padding:7px 15px;font-size:13px;cursor:pointer;transition:all .16s var(--ease)}
.subnav-tab:hover{border-color:var(--primary);color:var(--primary)}
.subnav-tab.on{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:650;box-shadow:0 4px 12px oklch(42% .08 167 / .18)}

.btn{padding:7px 14px;border-radius:9px;border:1px solid var(--line);background:#fff;cursor:pointer;
  font-size:13px;color:var(--ink);font-weight:540;
  transition:border-color .16s var(--ease),color .16s var(--ease),background .16s var(--ease),transform .1s var(--ease)}
.btn:hover{border-color:var(--primary);color:var(--primary)}
.btn:active{transform:translateY(1px)}
.btn.solid{background:linear-gradient(180deg,var(--primary-2),var(--primary));color:#fff;border-color:transparent;
  box-shadow:0 4px 12px oklch(40% 0.058 167 / .24)}
.btn.solid:hover{filter:brightness(1.06);color:#fff}
.btn.ok{color:var(--success);border-color:oklch(85% 0.06 155)}
.btn.ok:hover{background:var(--success);color:#fff;border-color:var(--success)}
.btn.no{color:var(--danger);border-color:oklch(87% 0.07 25)}
.btn.no:hover{background:var(--danger);color:#fff;border-color:var(--danger)}
.btn+.btn{margin-left:7px}

.bar{height:9px;background:var(--line);border-radius:20px;overflow:hidden;min-width:120px}
.bar>i{display:block;height:100%;border-radius:20px;
  background:linear-gradient(90deg,var(--gold),var(--primary));transition:width .5s var(--ease)}

.muted{color:var(--ink-3);font-size:13px}
.empty{padding:54px;text-align:center;color:var(--ink-3);font-size:14px}

/* 弹层 */
.modal-mask{position:fixed;inset:0;background:oklch(27% 0.03 167 / .42);
  backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:50;
  animation:fade .2s var(--ease)}
.modal{background:#fff;width:min(720px,calc(100vw - 32px));max-width:none;max-height:88vh;border-radius:16px;
  display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--sh-pop);
  animation:pop .26s var(--ease)}
.modal-head{padding:18px 22px;border-bottom:1px solid var(--line);font-weight:660;font-size:15.5px;
  display:flex;align-items:center;justify-content:space-between;gap:12px}
.modal-x{cursor:pointer;font-size:22px;color:var(--ink-3);line-height:1;transition:color .15s}
.modal-x:hover{color:var(--danger)}
.modal-body{padding:22px;overflow:auto}
.modal-foot{padding:14px 22px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px}
@media (max-width:720px){
  .modal{width:calc(100vw - 24px);max-height:92vh}
  .modal-head,.modal-body{padding-left:18px;padding-right:18px}
  .modal-foot{padding-left:18px;padding-right:18px}
}

/* 日期选择器：弹层挂在 body 下，避免被弹窗滚动区域裁切 */
.dp-pop{position:absolute;z-index:120;background:#fff;width:252px;padding:12px;
  border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 32px oklch(20% .03 167 / .18);
  color:var(--ink);font-size:13px;line-height:1;user-select:none}
.dp-head{display:flex;align-items:center;justify-content:center;gap:7px;margin-bottom:11px}
.dp-nav{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--line);border-radius:8px;color:var(--primary);font-size:20px;line-height:1;cursor:pointer}
.dp-nav:hover{background:var(--soft);border-color:var(--primary)}
.dp-y{height:30px;padding:0 5px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink);outline:none}
.dp-ym,.dp-m{color:var(--ink-2);font-weight:650}
.dp-week,.dp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}
.dp-week{margin-bottom:5px;color:var(--ink-3);font-size:12px}
.dp-cell{height:29px;display:flex;align-items:center;justify-content:center;border-radius:7px;cursor:pointer;color:var(--ink-2)}
.dp-cell[data-d]:hover{background:var(--soft);color:var(--primary);font-weight:650}
.dp-cell.dp-sel{background:var(--primary);color:#fff;font-weight:700}
.dp-empty{cursor:default}
.dp-time-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;padding-top:9px;border-top:1px solid var(--line);color:var(--ink-2);font-size:12px}
.dp-time{height:28px;padding:0 7px;border:1px solid var(--line);border-radius:7px;color:var(--ink);background:#fff}
.dp-foot{display:flex;justify-content:space-between;margin-top:10px;padding-top:9px;border-top:1px solid var(--line);color:var(--primary);font-size:12px}
.dp-today,.dp-apply,.dp-clear{cursor:pointer}
.dp-today:hover,.dp-apply:hover,.dp-clear:hover{text-decoration:underline}

.toast{position:fixed;bottom:32px;left:50%;transform:translateX(-50%) translateY(20px);
  background:oklch(30% 0.04 167);color:#fff;padding:12px 24px;border-radius:30px;font-size:14px;
  opacity:0;transition:.28s var(--ease);pointer-events:none;z-index:99;box-shadow:var(--sh-pop);
  border:1px solid oklch(100% 0 0 / .08)}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

.opt-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.opt-row input{flex:1;padding:10px 12px;border:1.5px solid var(--line);border-radius:10px;outline:none;
  transition:border-color .18s var(--ease)}
.opt-row input:focus{border-color:var(--primary);box-shadow:0 0 0 3px oklch(40% 0.058 167 / .12)}
.opt-row .rm{color:var(--danger);cursor:pointer;font-size:20px;line-height:1;padding:0 4px;
  transition:transform .12s var(--ease)}
.opt-row .rm:hover{transform:scale(1.18)}

/* 事项附件：文件选择控件需要保留完整的「选择文件」按钮宽度，避免被名称/地址输入框挤压 */
.item-row > div{min-width:0}
.item-row .item-file{flex:0 0 132px;width:132px;min-width:132px;box-sizing:border-box;padding:8px 6px;font-size:14px}
.item-row .item-file-name{flex:1 1 150px;min-width:150px}
.item-row .item-file-url{flex:2 1 220px;min-width:220px}
@media (max-width:720px){
  .item-row .item-file-name,.item-row .item-file-url{flex-basis:100%;min-width:100%}
}

/* 广告管理 */
.banner-thumb{width:64px;height:64px;object-fit:contain;border-radius:10px;border:1px solid var(--line);background:#f3f6f8}
.banner-prev{margin-top:8px;max-width:100%;width:240px;height:120px;object-fit:contain;border-radius:10px;border:1px solid var(--line);background:#f3f6f8}

/* 投票议题/选项统计 */
.issue-row{display:flex;align-items:center;gap:16px;padding:13px 20px;border-bottom:1px solid var(--line)}
.issue-row:last-child{border-bottom:none}
.issue-row .bar{flex:1;height:10px}
.issue-label{min-width:80px;font-size:13.5px;color:var(--ink);font-weight:560}
.issue-count{font-size:13px;color:var(--ink-2);white-space:nowrap;text-align:right;min-width:160px}
.issue-count a{color:var(--primary);cursor:pointer;margin-left:6px;font-weight:560}
.issue-count a:hover{text-decoration:underline}
.vote-meta{display:flex;gap:18px;flex-wrap:wrap;color:var(--ink-3);font-size:12.5px;margin-top:4px}

/* 问卷编辑 */
.survey-suggestion-setting{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:14px 16px;margin:4px 0 18px;border-radius:11px;background:var(--primary-soft)}
.survey-suggestion-setting label{display:flex;align-items:center;gap:7px;font-weight:600}
.survey-suggestion-setting input[type="number"]{width:88px;padding:8px 9px;border:1px solid var(--line);border-radius:8px}
.survey-question-row{display:flex;align-items:flex-start;gap:10px;margin-bottom:14px;padding:16px;border:1px solid var(--line);border-radius:13px;background:#fff}
.survey-question-main{display:flex;flex:1;min-width:0;flex-direction:column;align-items:stretch}
.survey-question-title,.survey-question-desc{display:block;flex:none;width:100%;max-width:100%;padding:10px 12px;border:1.5px solid var(--line);border-radius:10px;outline:none}
.survey-question-desc{margin-top:9px;resize:vertical;min-height:72px}.survey-question-tools{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:10px}.survey-question-tools label{display:flex;align-items:center;gap:6px;color:var(--ink-2)}
.survey-question-tools select{padding:7px 28px 7px 9px;border:1px solid var(--line);border-radius:8px;background:#fff}.survey-options{margin-top:10px}.survey-option-row{margin-bottom:8px}.survey-question-remove{padding-top:8px}.survey-result-block{padding:14px 20px;border-bottom:1px solid var(--line)}

@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes pop{from{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
}

/* ===== 视觉重制 v3 · 行政主从工作台 ===== */
:root{
  --primary:#17483a;
  --primary-d:#123b30;
  --primary-2:#23604e;
  --primary-soft:#eef5f1;
  --primary-line:#d7e5de;
  --gold:#b88935;
  --gold-d:#946b24;
  --gold-soft:#f7f0e2;
  --ink:#202725;
  --ink-2:#5d6864;
  --ink-3:#8b9490;
  --line:#e4e8e6;
  --bg:#f7f6f2;
  --success:#24644f;
  --warn:#b47722;
  --danger:#c94b45;
  --sh-1:0 1px 2px rgba(22,63,52,.035);
  --sh-2:0 10px 28px rgba(22,63,52,.09);
}
body{background:var(--bg);font-size:14px;letter-spacing:.005em}
.bg-decor{display:none}
.side{width:218px;background:#123f33;color:#d5e3dd}
.side::before{display:none}
.side-brand{height:72px;padding:0 22px;border-bottom:1px solid rgba(255,255,255,.13);font-size:18px;letter-spacing:.02em}
.brand-mark,.brand-mark.sm{background:transparent;color:#d5aa55;border:0;box-shadow:none;border-radius:0}
.brand-mark i{font-size:42px;line-height:1}.brand-mark.sm{width:32px;height:32px;font-size:16px}.brand-mark.sm i{font-size:29px}
#nav{padding:16px 10px}
.nav-item{min-height:44px;padding:10px 13px;border-radius:7px;color:#c9d9d3;font-size:14px;gap:12px}
.nav-item:hover,.nav-item.on,.nav-subitem.on{background:rgba(255,255,255,.1)}
.nav-item.on{box-shadow:inset 3px 0 0 var(--gold)}
.nav-item.on::before,.nav-subitem.on::before{display:none}
.nav-submenu{border-left:1px solid rgba(255,255,255,.14)}
.nav-subitem{color:#aec4bc}
.nav-ico{width:20px;font-size:18px;line-height:1;color:#dce9e4;opacity:1}
.nav-chevron{font-size:17px}
.side-foot{border-top:1px solid rgba(255,255,255,.12)}
.who{display:flex;align-items:center;gap:8px;color:#c4d5cf}
.who i{font-size:17px;color:#d5aa55}.who b{font-weight:600}
.topbar{height:72px;padding:0 26px;background:#fff;border-bottom:1px solid var(--line);backdrop-filter:none}
.topbar-right{gap:12px}
.view{padding:24px 26px}
.comm-sel{height:40px;border:1px solid var(--line);border-radius:7px;min-width:154px;background-color:#fff}
.scope-pill{background:var(--gold-soft);color:var(--gold-d)}
.btn{min-height:36px;padding:7px 13px;border-radius:7px;background:#fff;font-weight:550}
.btn.solid,.btn-primary{background:var(--primary);box-shadow:none;border-color:var(--primary);color:#fff}
.btn.solid:hover,.btn-primary:hover{background:var(--primary-2);filter:none;box-shadow:none}
.bar{height:8px;background:#e7e9e8}
.bar>i{background:var(--gold)}
.tag{padding:2px 8px;border-radius:5px;font-size:12px}
.t-green{background:#eaf5ef;color:#24644f;border-color:#cce5d8}
.t-blue{background:#edf4ff;color:#2c6ecb;border-color:#d2e2fb}
.t-grey{background:#f0f2f1;color:#6e7773;border-color:#e4e7e5}
.page-breadcrumb{display:flex;align-items:center;gap:10px;color:var(--ink-3);font-size:14px;font-weight:500}
.page-breadcrumb i{font-size:18px;color:var(--ink-2)}
.page-breadcrumb b{font-weight:400;color:#b8bfbc}
.page-breadcrumb strong{color:var(--ink);font-size:15px;font-weight:700}

/* 顶部主操作与业务菜单 */
.vote-top-actions{display:flex;align-items:center;gap:10px}
.action-primary{display:inline-flex;align-items:center;gap:6px;background:var(--gold)!important;border-color:var(--gold)!important;min-height:40px;padding:8px 17px!important}
.action-primary:hover{background:var(--gold-d)!important}
.action-primary i{font-size:17px}
.action-menu{position:relative}
.action-menu-trigger{display:flex;align-items:center;gap:7px;min-height:40px;padding:8px 14px}
.action-menu-trigger i:last-child{margin-left:3px}
.action-menu-pop{display:none;position:absolute;right:0;top:calc(100% + 8px);width:270px;padding:7px;background:#fff;border:1px solid var(--line);border-radius:9px;box-shadow:var(--sh-2);z-index:30}
.action-menu.open .action-menu-pop{display:block;animation:fade .14s ease}
.action-menu-pop button{width:100%;display:flex;align-items:center;gap:12px;padding:10px;border:0;border-radius:6px;background:#fff;color:var(--ink);text-align:left;cursor:pointer}
.action-menu-pop button:hover{background:var(--primary-soft)}
.action-menu-pop button>i{width:22px;color:var(--primary);font-size:18px;text-align:center}
.action-menu-pop span{display:flex;flex-direction:column;gap:2px}.action-menu-pop b{font-size:13.5px}.action-menu-pop small{color:var(--ink-3);font-size:11.5px}

/* 投票页工具栏 */
body[data-view="votes"] .view{width:100%;max-width:1760px;margin:0 auto}
.searchbar{position:relative;display:flex;align-items:center;width:min(560px,100%);height:40px;margin-bottom:18px}
.vote-toolbar{display:flex;align-items:center;gap:16px;margin-bottom:18px}
.vote-toolbar .searchbar{width:min(360px,32vw);margin-bottom:0}
.search-input{width:100%;height:100%;padding:0 40px 0 38px;border:1px solid var(--line);border-radius:7px;background:#fff;outline:none;color:var(--ink)}
.search-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(23,72,58,.1)}
.search-ico{position:absolute;left:13px;color:var(--ink-3);font-size:17px;z-index:1}
.search-clear{position:absolute;right:7px;width:28px;height:28px;border:0;background:transparent;color:var(--ink-3);font-size:17px;cursor:pointer;border-radius:5px}
.search-clear:hover{background:#f1f3f2;color:var(--ink)}
.vote-toolbar .subnav-tabs{margin:0;gap:0;align-items:center}
.vote-toolbar .subnav-tab{height:36px;padding:6px 15px;border:0;border-radius:0;background:transparent;box-shadow:none;position:relative;color:var(--ink-2)}
.vote-toolbar .subnav-tab+.subnav-tab::before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:1px;background:var(--line)}
.vote-toolbar .subnav-tab:hover{color:var(--primary)}
.vote-toolbar .subnav-tab.on{background:var(--primary);color:#fff;border-radius:6px}
.vote-toolbar .subnav-tab.on::before,.vote-toolbar .subnav-tab.on+.subnav-tab::before{display:none}

/* 主从布局 */
.vote-workspace{display:grid;grid-template-columns:minmax(560px,1.15fr) minmax(500px,1fr);gap:16px;align-items:start}
.vote-master{display:flex;flex-direction:column;gap:16px;min-width:0;min-height:calc(100vh - 178px)}
.vote-list-surface,.candidate-surface,.vote-detail{background:#fff;border:1px solid var(--line);border-radius:8px;overflow:hidden;box-shadow:var(--sh-1)}
.vote-list-surface{min-height:410px;flex:1.45}
.vote-surface-head{height:68px;display:flex;align-items:center;padding:0 20px;border-bottom:1px solid var(--line)}
.vote-surface-head h2{margin:0;font-size:18px;font-weight:720;letter-spacing:-.01em}.vote-surface-head h2 span{font-weight:500;color:var(--ink-3)}
.vote-list-columns,.vote-list-row{display:grid;grid-template-columns:minmax(165px,1.35fr) 70px 66px minmax(132px,1fr) 88px;gap:8px;align-items:center}
.vote-list-columns{padding:11px 16px;background:#fbfcfb;border-bottom:1px solid var(--line);color:var(--ink-3);font-size:12px}
.vote-list-row{position:relative;width:100%;min-height:96px;padding:16px;border:0;border-bottom:1px solid var(--line);background:#fff;color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.vote-list-row:last-child{border-bottom:0}
.vote-list-row:hover{background:#fafcfb}.vote-list-row.selected{background:#edf5f1}
.vote-list-row.selected::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary)}
.vote-list-title{display:flex;flex-direction:column;gap:5px;min-width:0}.vote-list-title b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vote-list-title small{color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vote-list-kind{color:var(--ink-2);font-size:12.5px}.vote-list-time{display:flex;flex-direction:column;gap:2px;color:var(--ink-2);font-size:12px}.vote-list-time i{font-style:normal;color:var(--ink-3)}
.vote-list-turnout{display:flex;flex-direction:column;gap:3px;text-align:right}.vote-list-turnout b{font-size:12.5px}.vote-list-turnout em{font-style:normal;color:var(--primary);font-weight:700}
.candidate-surface{min-height:215px;flex:1}
.candidate-vote-table th{background:#fbfcfb}.candidate-vote-table td{padding-top:13px;padding-bottom:13px}
.table-link{border:0;background:transparent;color:var(--primary);font:inherit;font-weight:650;cursor:pointer;padding:4px}.table-link:hover{text-decoration:underline}

/* 右侧详情 */
.vote-detail{position:sticky;top:96px;min-height:max(641px,calc(100vh - 178px));padding:0 20px}
.vote-detail-head{display:flex;justify-content:space-between;gap:14px;padding:21px 0 18px;border-bottom:1px solid var(--line)}
.vote-detail-head>div:first-child{min-width:0}.vote-detail-title{display:flex;align-items:center;gap:8px;font-size:18px;font-weight:740;white-space:nowrap}.vote-detail-head p{margin:8px 0 4px;color:var(--ink-2)}.vote-detail-head time{display:block;color:var(--ink-2);font-size:11.5px;white-space:nowrap}
.vote-detail-actions{display:flex;align-items:flex-start;justify-content:flex-end;flex-wrap:wrap;gap:6px;max-width:290px}.vote-detail-actions .btn{min-height:32px;padding:5px 9px;font-size:12px}.vote-detail-actions .btn+.btn{margin-left:0}
.vote-question{padding:20px 0;border-bottom:1px solid var(--line)}
.vote-question-head{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin-bottom:18px}.vote-question-head small{display:block;color:var(--ink-3);font-size:12px;margin-bottom:8px}.vote-question-head h3{margin:0;font-size:14px;font-weight:650;line-height:1.5}
.vote-results-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 16px;padding-top:17px;border-top:1px solid var(--line)}.vote-results-head h3{margin:0;font-size:14px}.vote-results-head span{color:var(--ink-2);font-size:12.5px}
.vote-result-list{display:flex;flex-direction:column;gap:15px}
.vote-result-row{display:grid;grid-template-columns:54px minmax(120px,1fr) 45px 42px;gap:10px;align-items:center}.vote-result-row b{font-size:13px}.vote-result-row span,.vote-result-row em{font-size:12.5px;color:var(--ink-2);font-style:normal;text-align:right}.vote-result-row em{color:var(--ink);font-variant-numeric:tabular-nums}
.vote-overview{padding:20px 0}.vote-overview h3{margin:0 0 16px;font-size:15px}.vote-overview dl{margin:0;display:flex;flex-direction:column;gap:12px}.vote-overview dl div{display:flex;justify-content:space-between;gap:20px}.vote-overview dt{color:var(--ink-3)}.vote-overview dd{margin:0;color:var(--ink-2);text-align:right}.vote-overview dd.turnout{color:var(--primary);font-weight:750}
.vote-detail-empty{min-height:610px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--ink-3);gap:8px}.vote-detail-empty i{font-size:34px;color:var(--primary-line)}.vote-detail-empty b{color:var(--ink-2)}
.empty.compact{padding:28px}
.election-manage{margin-top:24px}

@media (max-width:1260px){
  .vote-workspace{grid-template-columns:1fr}
  .vote-detail{position:static;min-height:0}
  .vote-detail-empty{min-height:260px}
}
@media (max-width:980px){
  .side{width:196px}.view{padding:20px}
  .vote-toolbar{align-items:flex-start;flex-direction:column}.vote-toolbar .searchbar{width:100%}
  .vote-list-columns{display:none}.vote-list-row{grid-template-columns:minmax(180px,1fr) 80px 74px 120px}.vote-list-turnout{display:none}
}
