:root{--bg:#0f1b2d;--card:#16263d;--line:#243a57;--txt:#e8eef6;--sub:#9fb3cc;
  --ok:#3ddc84;--warn:#ffb454;--bad:#ff6b6b;--accent:#2f9bff;}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;
  background:radial-gradient(1200px 700px at 50% -10%, #173450 0%, #0f1b2d 55%) fixed;
  color:var(--txt);padding:14px;max-width:760px;margin:0 auto}
h1{font-size:20px;margin:0 0 4px}h2{font-size:16px;margin:0 0 10px;color:var(--accent)}
.tip{color:var(--sub);font-size:13px;margin-bottom:14px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:14px}
.subcard{background:rgba(127,192,255,.06);border:1px dashed var(--line);border-radius:10px;padding:12px 14px;margin:6px 0 4px}
.subtitle{color:var(--accent,#7fc0ff);font-size:13px;font-weight:600;margin-bottom:8px}
input,textarea,button,select{font-family:inherit}
input[type=text],input[type=password],input[type=number],input[type=tel],textarea{
  width:100%;background:#0d1828;border:1px solid var(--line);color:var(--txt);
  border-radius:8px;padding:10px;font-size:15px}
textarea{resize:vertical;min-height:56px}
.lbl{display:block;font-size:13px;color:var(--sub);margin:10px 0 4px}
button{background:var(--accent);color:#fff;border:0;border-radius:8px;padding:11px 18px;
  font-size:15px;cursor:pointer}
button.ghost{background:#22364f}
button.warn{background:var(--warn);color:#1a1a1a}
.welcome-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;margin-bottom:12px;background:linear-gradient(90deg,rgba(47,155,255,.16),rgba(47,155,255,.04));
  border:1px solid var(--line);border-radius:10px;font-size:14px;color:var(--txt)}
.welcome-bar .wb-text{flex:1 1 auto;min-width:0}
.welcome-bar b{color:var(--accent);font-weight:600}
.welcome-bar .nav-admin-btn{flex:0 0 auto;min-width:84px;background:#1c2e47;color:var(--txt);border:1px solid var(--line);border-radius:8px;padding:8px 14px;font-size:14px;cursor:pointer}
.welcome-bar .nav-admin-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.nav{display:flex;gap:8px;flex-wrap:nowrap;overflow-x:auto;margin-bottom:14px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.nav::-webkit-scrollbar{display:none}
.nav button{flex:0 0 auto;min-width:90px;background:#1c2e47}
.nav button.active{background:var(--accent)}
/* 项目组子 TAB（自定义打卡 / 项目成员 / 项目看板） */
.gtabs{display:flex;gap:8px;flex-wrap:nowrap;overflow-x:auto;margin:6px 0 12px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.gtabs::-webkit-scrollbar{display:none}
.gtabs button{flex:0 0 auto;min-width:84px;padding:8px 14px;border:none;border-radius:8px;background:#1c2e47;color:#cdd9e5;font-size:13px;cursor:pointer}
.gtabs button.active{background:var(--accent);color:#fff}
.gtab-panel{margin-top:2px}
/* 我的项目列表 */
.my-group-item{background:#0d1828;border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:10px}
.my-group-main{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.my-group-name{background:none;border:none;color:var(--accent);font-size:15px;font-weight:600;cursor:pointer;padding:0;text-align:left}
.my-group-name:hover{text-decoration:underline}
.my-group-info{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:12px;color:#9fb3cc}
.g-quit-btn{font-size:11px;border:1px solid #e74c3a;border-radius:6px;padding:2px 10px;cursor:pointer;color:#ffb3b3;background:#3a1414;margin-left:auto}
.q{background:#0d1828;border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:10px}
.q .t{font-size:15px;margin-bottom:8px;line-height:1.4}
.opts{display:flex;gap:8px;flex-wrap:wrap}
.opts label{display:flex;align-items:center;gap:6px;background:#16263d;border:1px solid var(--line);
  border-radius:8px;padding:7px 12px;font-size:14px;cursor:pointer}
.opts input{width:auto;accent-color:var(--ok)}
.hidden{display:none}
.pill{display:inline-block;font-size:12px;padding:2px 9px;border-radius:10px;margin-left:6px}
.p-ok{background:#143a26;color:var(--ok)}.p-bad{background:#3a1414;color:var(--bad)}
.p-warn{background:#3a2e14;color:var(--warn)}
.row{display:flex;gap:10px;flex-wrap:wrap}
.row>div{flex:1;min-width:120px}
.stat{font-size:13px;color:var(--sub);margin-top:6px}
.stat.err{color:#ff6b6b;font-weight:600}
.stat.ok{color:#3ddc84;font-weight:600}
.alert{background:#2a1414;border:1px solid #5a2020;border-radius:8px;padding:10px 12px;margin-bottom:8px;font-size:14px}
.alert.ok{background:#142a18;border-color:#205a2c}
.alert.warn{background:#2a2414;border-color:#5a4a20}
svg{width:100%;height:auto;display:block}
.legend{font-size:12px;color:var(--sub);margin-top:4px}
.center{text-align:center}
.mt{margin-top:10px}
a.link{color:var(--accent);cursor:pointer}
select{width:100%;background:#0d1828;border:1px solid var(--line);color:var(--txt);
  border-radius:8px;padding:10px;font-size:15px}
.plan-item{display:flex;flex-direction:column;gap:4px;background:#0d1828;border:1px solid var(--line);
  border-radius:8px;padding:9px 12px;margin-bottom:8px;font-size:14px;
  -webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
/* 今日打卡：柔和但更显眼的边框 */
.plan-item.checkin{border:1px solid rgba(47,155,255,.55);background:#0e1726;box-shadow:0 0 0 3px rgba(47,155,255,.08)}
.plan-item.checkin.done{border-color:var(--ok);background:#0e1726;opacity:.72;box-shadow:none}
.plan-item.backlog{border-color:#5a2020;background:#1a1010}
.plan-item .plan-top{display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:8px;min-height:20px}
.plan-item .plan-body{display:flex;align-items:center;gap:8px}
.plan-item label{display:flex;align-items:center;gap:8px;flex:1;cursor:pointer}
.plan-item input[type=checkbox]{width:auto;accent-color:var(--ok)}
.plan-item .x{background:none;border:0;color:#ff7a7a;font-size:16px;line-height:1;cursor:pointer;padding:0 4px}
.plan-item.starred{border-color:#6a5a1a;background:#1c1808}
.plan-item.done .plan-body{opacity:0.6}
.plan-item.done label{text-decoration:line-through}
.done-time{font-size:11px;color:#7a9ab0;white-space:nowrap;margin-left:auto}
.plan-item.done .pc-check{flex:0 0 auto}
.plan-item.done .pc-text{flex:1;text-decoration:line-through}
.plan-item .star{background:none;border:0;color:#7a6a3a;font-size:16px;line-height:1;cursor:pointer;padding:0 2px}
.plan-item .star:hover{color:#ffb454}
.plan-item.starred .star{color:#ffb454}
.remindtag{font-size:11px;color:#9fb3cc;background:#10243a;border:1px solid var(--line);border-radius:10px;padding:1px 8px;white-space:nowrap;cursor:pointer;flex-shrink:0}
.remindtag:hover{background:#16324a}
.remind-set{font-size:11px;color:#ffb454;background:#241a08;border:1px dashed #6a4f12;border-radius:10px;padding:1px 8px;white-space:nowrap;cursor:pointer;flex-shrink:0}
.remind-set:hover{background:#33260e}
.remind-edit{display:inline-flex;align-items:center;gap:4px;background:#0a1220;border:1px solid var(--line);border-radius:8px;padding:3px 6px;box-sizing:border-box;flex-shrink:0;max-width:100%}
.remind-sel{font-size:12px;padding:3px 4px;background:#0d1828;border:1px solid #334;color:var(--txt);border-radius:5px;box-sizing:border-box;flex:0 1 auto;max-width:64px;min-width:0}
.remind-colon{color:var(--sub);font-size:13px}
.rbtn{font-size:11px;border:0;border-radius:5px;padding:3px 10px;cursor:pointer;color:#cfe;background:#16324a;flex-shrink:0;white-space:nowrap}
/* 计划日报 */
#gen-report-btn{font-size:14px;padding:10px 18px;border:0;border-radius:8px;background:var(--accent);color:#fff;cursor:pointer}
#gen-report-btn:disabled{opacity:.6;cursor:default}
.report-md{background:#0d1828;border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-top:4px;font-size:13px}
.rbtn.rcancel{background:#2a2a2a}
.rbtn.rdel{background:#3a1414;color:#ffb3b3}
/* 今日打卡 固定项 */
.plan-checkin{margin-top:4px}
.pc-row{display:flex;align-items:center;gap:12px;background:#0d1828;border:1px solid var(--line);
  border-radius:10px;padding:14px 16px;font-size:15px}
.pc-row.clickable{cursor:pointer;transition:background .15s,border-color .15s}
.pc-row.clickable:hover{background:#13243a;border-color:#2f9bff}
.pc-check{font-size:22px;line-height:1}
.pc-check.done{color:#9affc8}
.pc-check.undone{color:#ffb3b3}
.pc-title{font-weight:600;color:#e8f0fb;flex:1}
.pc-status{font-size:13px;color:#9fb3cc}
.pc-row.clickable .pc-status{color:#7fc0ff}
.qrow{display:flex;align-items:center;gap:8px;background:#0d1828;border:1px solid var(--line);
  border-radius:8px;padding:9px 12px;margin-bottom:8px;font-size:14px}
.qrow .qtitle{flex:1}
.qrow .qtitle .uname{font-weight:400;color:#9fb3cc;font-size:12px;margin-left:4px}
.qrow .qops{display:flex;gap:4px}
.qrow .qops button{background:#22364f;padding:5px 10px;font-size:13px}
.badge{font-size:11px;padding:2px 8px;border-radius:9px;background:#22364f;color:var(--sub)}
.badge.type-radio{background:#14304a;color:#7ec1ff}
.badge.type-checkbox{background:#143a2c;color:#7affc0}
.badge.type-text{background:#3a2e14;color:#ffd98a}
.badge.type-number{background:#2e143a;color:#e09aff}
.badge.gray{background:#2a2a2a;color:#9fb3cc}
.badge.green{background:#143a26;color:#7affc0}
.badge.blue{background:#14304a;color:#7ec1ff}

/* 调研任务（主应用 tab） */
.research-card{background:#0d1828;border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:10px;cursor:pointer;transition:border-color .15s}
.research-card:hover{border-color:#2f6ea5}
.research-card.done{border-left:3px solid #3ecf8e}
.research-card-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.research-card-title{font-weight:600;font-size:15px;color:#eaf3ff}
.research-targets{display:flex;flex-direction:column;gap:4px;margin:6px 0}
.research-target-item{background:#0d1828;border:1px solid var(--line);border-radius:6px;padding:6px 10px;font-size:13px;color:#cfe}
.research-guide{background:#10243a;border:1px dashed #2f6ea5;border-radius:8px;padding:8px 10px;font-size:13px;color:#9fd0ff;margin:6px 0}
.research-mine{display:flex;flex-direction:column;gap:10px;margin:4px 0}
.research-mine-item{background:#0d1828;border:1px solid var(--line);border-radius:8px;padding:10px 12px}
.research-mine-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.research-mine-body{line-height:1.7;color:#cfe;font-size:13px}
.research-ans-row{display:flex;gap:6px;margin:3px 0;padding:2px 0}
.research-ans-q{color:#7ab8e0;font-weight:600;min-width:80px;flex-shrink:0}
.research-ans-a{color:#cfe;word-break:break-all}
/* 调研问题构建器（后台编辑器） */
.rq-row{background:#0d1828;border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-bottom:8px}
.rq-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.rq-type{background:#0d1828;border:1px solid var(--line);color:#cfe;border-radius:5px;padding:4px 6px;font-size:12px;min-width:70px}
.rq-title{flex:1;min-width:120px;background:#0d1828;border:1px solid var(--line);color:#eaf3ff;border-radius:5px;padding:4px 8px;font-size:13px}
.rq-opts{margin-top:6px}
.rq-options{width:100%;background:#0d1828;border:1px solid var(--line);color:#cfe;border-radius:5px;padding:6px 8px;font-size:12px;resize:vertical;box-sizing:border-box}
/* 调研采访表单（成员填报） */
.research-qform{margin:6px 0}
.research-qform .q{background:#0d1828;border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-bottom:8px}
.research-qform .q .t{font-weight:600;font-size:13px;color:#eaf3ff;margin-bottom:6px}
.research-qform .q .opts label{display:block;margin:3px 0;font-size:13px;color:#cfe;cursor:pointer}
.research-qform .q input[type="text"],.research-qform .q input[type="number"]{width:100%;background:#0d1828;border:1px solid var(--line);color:#eaf3ff;border-radius:5px;padding:6px 10px;font-size:14px;box-sizing:border-box}
.badge.off{background:#3a1414;color:#ffb3b3}
#backlog-banner{font-size:14px;line-height:1.6}

/* 工作计划：日期切换 Tab + 日历 */
.plan-date-tabs{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.plan-date-tabs .pd-tab{background:#1c2e47;color:#cfdcec;font-size:14px;padding:8px 14px;margin:0;min-width:auto}
.plan-date-tabs .pd-tab.active{background:var(--accent);color:#fff}
.plan-date-tabs .pd-sep{flex:1}
#plan-pick{width:auto;flex:0 0 auto;padding:7px 10px;font-size:13px}
.plan-date-title{font-size:14px;color:var(--accent);margin:6px 0 10px;font-weight:600}
.plan-item.done{opacity:.6}
.plan-item.done label{text-decoration:line-through;color:var(--sub)}
.plan-cal{background:#0d1828;border:1px solid var(--line);border-radius:10px;padding:8px;margin:4px 0 10px}
.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;font-size:13px;color:#e8f0fb}
.cal-nav{background:#22364f;color:#cfdcec;width:auto;margin:0;padding:3px 14px;font-size:16px;line-height:1;border-radius:8px}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal-grid.cal-dow{margin-bottom:4px}
.cal-grid.cal-dow span{text-align:center;font-size:12px;color:var(--sub)}
.cal-cell{position:relative;text-align:center;font-size:12px;padding:5px 0;border-radius:6px;background:#16263d;color:var(--txt);cursor:pointer;transition:background .12s}
.cal-cell.empty{background:transparent;cursor:default}
.cal-cell.has-plan{background:#15294a}
.cal-cell.is-today{outline:1px solid var(--accent)}
.cal-cell.sel{background:var(--accent);color:#fff}
.cal-cell:hover:not(.empty){background:#1d3350}
.cal-cell.has-plan:hover{background:#1f3c66}
.cal-cell.sel:hover{background:var(--accent)}
.cal-dot{position:absolute;left:50%;bottom:4px;transform:translateX(-50%);width:5px;height:5px;border-radius:50%;background:var(--warn)}
.cal-dot.done{background:var(--ok)}

/* 登录页：高级感玻璃卡 + LOGO + 提示语占位 + 移动端垂直居中 */
#login.login-card.hidden{display:none}
/* 品牌落地页布局 */
.brand-landing{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:22px;padding:28px 14px}
.brand-hero{text-align:center;max-width:420px}
.brand-name{font-size:26px;margin:14px 0 6px;font-weight:700;letter-spacing:1px;
  background:linear-gradient(135deg,#7ec1ff,#3ddc84);-webkit-background-clip:text;background-clip:text;color:transparent}
.brand-tag{color:var(--sub);font-size:14px;margin:0 0 14px;line-height:1.6}
.brand-feats{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.brand-feats span{font-size:12px;color:#cfdcec;background:#1c2e47;border:1px solid var(--line);
  padding:5px 12px;border-radius:20px}
#login.login-card{
  width:100%;max-width:400px;
  background:rgba(20,34,54,.66);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border:1px solid rgba(120,170,230,.18);
  box-shadow:0 24px 70px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.06);
}
/* 登录/注册卡：标签与输入框横排 —— Grid 自适应列宽，标签不换行 */
.field-row{display:grid;grid-template-columns:minmax(56px,auto) 1fr;align-items:center;gap:8px;margin:2px 0}
.field-row > .lbl{
  font-size:13px;color:var(--sub);line-height:normal;margin:0;text-align:right;white-space:nowrap}
/* 强制所有 input 等宽（含 tel），覆盖浏览器默认 */
.field-row > input{width:100% !important;min-width:0;max-width:100%;box-sizing:border-box !important}
.remember{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--sub);margin:12px 0 4px;cursor:pointer}
.remember input{width:auto;accent-color:var(--ok)}
.brand-foot{color:rgba(159,179,204,.55);font-size:12px;text-align:center;max-width:420px;line-height:1.6}
.switch-row{text-align:center;margin-top:2px}
.switch-row a{color:var(--sub);font-size:13px;text-decoration:none;cursor:pointer;opacity:.78;transition:color .15s,opacity .15s}
.switch-row a:hover{color:var(--accent);opacity:1;text-decoration:underline}
/* 输入框聚焦发光（登录/注册通用） */
input[type=text]:focus,input[type=password]:focus,input[type=tel]:focus,textarea:focus{
  outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(47,155,255,.18)}
/* 注册卡：顶部渐变条 + 轻微层次，区别于登录卡 */
.reg-card{position:relative;overflow:hidden;border-color:rgba(47,155,255,.32)}
.reg-card::before{content:"";position:absolute;left:0;top:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--accent),var(--ok))}
.reg-card .login-title{margin-top:6px;color:var(--txt)}
#rg-btn{margin-top:10px;font-weight:600;box-shadow:0 6px 16px rgba(47,155,255,.26);
  transition:transform .08s,box-shadow .15s,filter .15s}
#rg-btn:hover{filter:brightness(1.06);box-shadow:0 8px 22px rgba(47,155,255,.36)}
#rg-btn:active{transform:translateY(1px);box-shadow:0 3px 10px rgba(47,155,255,.3)}
.code-row{display:flex;gap:8px;align-items:stretch}
.code-row input{flex:1;min-width:0}
#rg-code-btn{flex:0 0 auto;white-space:nowrap;padding:0 12px;height:38px;min-width:88px;
  border:none;border-radius:8px;background:#2a4a6a;color:#a8c4e0;font-size:12px;font-weight:500;cursor:pointer;
  transition:background .15s,color .15s}
#rg-code-btn:hover{background:#365d82;color:#cfe3f7}
#rg-code-btn:active{background:#23405c}
#rg-code-btn:disabled{background:#1e3048;color:#5a7089;cursor:not-allowed}
.logo-wrap{text-align:center;margin:0 auto 14px}
.logo-img{display:block;max-width:120px;max-height:120px;width:auto;height:auto;object-fit:contain;
  margin:0 auto;background:transparent}
.logo-preview{margin-top:8px;min-height:8px}
.logo-preview .logo-img{max-width:80px;max-height:80px}
.home-tip{text-align:center;color:var(--sub);font-size:13px;margin-bottom:20px;line-height:1.7;
  word-break:break-word;padding:0 4px}
.login-title{text-align:center;font-size:19px;font-weight:600;margin:0 0 16px;color:var(--txt);letter-spacing:.5px}
#lg-btn{background:linear-gradient(135deg,#2f9bff,#3a7bff);font-weight:600;letter-spacing:1px;
  box-shadow:0 8px 22px rgba(47,155,255,.35)}

/* 登录页：锁定页面弹跳，内容超长时内部滚动 */
.login-page{height:100%;overflow:hidden;overscroll-behavior:none}
.login-page .brand-landing{height:100%;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:none}
input[type=file]{width:100%;background:#0d1828;border:1px dashed var(--line);color:var(--sub);
  border-radius:8px;padding:10px;font-size:13px;cursor:pointer}
input[type=text]:focus,input[type=password]:focus,textarea:focus,select:focus{
  border-color:var(--accent);box-shadow:0 0 0 3px rgba(47,155,255,.18);outline:none}
button.dm{background:#22364f;color:#cfdcec;font-size:13px;padding:4px 12px;margin-left:4px;border:1px solid var(--line)}
button.dm.active{background:#2f9bff;color:#fff;border-color:#2f9bff}
.utab{width:100%;border-collapse:collapse;margin-top:8px;font-size:13px}
.utab th,.utab td{border:1px solid var(--line);padding:8px 10px;text-align:left}
.utab th{background:#0d1828;color:var(--sub);font-weight:600}
.utab td{background:#070f1c}

/* 组内看板：卡片式布局（替代宽表格，杜绝横向溢出） */
.dash-cards{display:flex;flex-direction:column;gap:10px;margin-top:8px}
.dash-card{background:#0a1629;border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.dash-card-hd{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.dash-name{font-size:15px;font-weight:600;color:#e0e8f0}
.dash-role{font-size:11px;color:var(--sub);background:#1a2a42;padding:2px 8px;border-radius:4px}
.dash-card-body{display:grid;grid-template-columns:1fr 1fr;gap:6px 16px}
.dash-row{display:flex;align-items:center;gap:6px;min-height:24px}
.dash-label{font-size:12px;color:var(--sub);white-space:nowrap;min-width:64px}
.dash-val{font-size:13px;color:#cfdlec}
.dash-card-ft{margin-top:10px;text-align:right}
.badge.type-admin{background:#3a2e14;color:#ffd98a}

/* 后台 Tab */
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.tabs .tab{background:#1c2e47;color:#cfdcec;font-size:14px;padding:9px 14px;margin:0;min-width:auto}
.tabs .tab.active{background:var(--accent);color:#fff}
.tab-panel{display:block}
.tab-panel.hidden{display:none}

/* 弹窗（成员看板 / 通用确认） */
.modal{position:fixed;inset:0;background:rgba(5,12,22,.72);display:flex;align-items:center;justify-content:center;z-index:10000;padding:14px}
.modal.hidden{display:none}
.modal-box{background:var(--card);border:1px solid var(--line);border-radius:14px;width:100%;max-width:760px;max-height:88vh;display:flex;flex-direction:column;overflow:hidden}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line);font-size:16px;color:var(--accent);font-weight:600}
.modal-head button{width:auto;margin:0;padding:4px 12px;font-size:18px;line-height:1}
.modal-body{padding:16px;overflow:auto}
.modal-foot{display:flex;gap:10px;justify-content:flex-end;padding:12px 16px;border-top:1px solid var(--line)}
.modal-foot button{width:auto;margin:0;padding:9px 20px}

/* ---------------- 下拉刷新指示器 ---------------- */
.ptr{position:fixed;top:0;left:0;right:0;height:56px;display:flex;align-items:center;justify-content:center;gap:8px;background:var(--bg,#0a1422);color:var(--sub,#9fb3c8);font-size:13px;transform:translateY(-60px);z-index:9500;will-change:transform;-webkit-user-select:none;user-select:none;box-shadow:0 1px 0 rgba(0,0,0,.15)}
.ptr.anim{transition:transform .25s ease}
.ptr-ico{font-size:18px;line-height:1;display:inline-block}
.ptr.spin .ptr-ico{animation:ptrspin .8s linear infinite}
@keyframes ptrspin{to{transform:rotate(360deg)}}
button.warn{background:var(--warn);color:#1a1a1a}
#confirm-modal .modal-box{max-width:420px}

/* 工作计划：长按拖拽排序 */
.plan-item.plan-draggable{cursor:grab;touch-action:pan-y;-webkit-user-select:none;-webkit-touch-callout:none;user-select:none}
.plan-item.plan-draggable:active{cursor:grabbing}
.plan-ghost{box-shadow:0 12px 32px rgba(0,0,0,.5);opacity:.96;transform:scale(1.02)}
.plan-item.plan-drag-ph{opacity:.32;border-style:dashed;background:transparent}
.plan-item.plan-drag-ph *{visibility:hidden}

/* 工作计划：底部固定透明浮动「新建计划」按钮 */
#view-plan{padding-bottom:84px}
.fab{position:fixed;right:18px;bottom:18px;z-index:9999;width:56px;height:56px;border-radius:50%;
  background:rgba(38,120,200,.62);color:#fff;font-size:28px;line-height:1;border:none;
  box-shadow:0 4px 14px rgba(0,0,0,.35);display:flex;align-items:center;justify-content:center;
  cursor:pointer;-webkit-tap-highlight-color:transparent}
.fab:active{background:rgba(38,120,200,.85)}

/* BUG 反馈：用户提交弹窗 + 管理员管理面板 */
.bug-row{background:#0d1828;border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:10px;font-size:14px}
.bug-row:last-child{margin-bottom:0}
.bug-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.bug-head .qtitle{flex:1;min-width:0}
.bug-time{margin-left:auto;color:#7a9ab0;font-size:12px;white-space:nowrap}
.bug-meta{color:#9fb3cc;font-size:12px;margin:6px 0}
.bug-content{white-space:pre-wrap;background:#0a1322;border:1px solid var(--line);border-radius:8px;padding:9px 11px;margin:4px 0;word-break:break-word;line-height:1.55}
.bug-note{color:#ffd479;font-size:13px;margin:4px 0}
.bug-ops{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}
.bug-ops .lbl{margin:0}
.bug-ops select{width:auto;min-width:96px;padding:7px 10px;font-size:13px}
.bug-ops input[type=text]{width:auto;flex:1;min-width:140px;padding:7px 10px;font-size:13px}
.bug-ops .bug-save{background:#22364f;color:#cfdcec;padding:7px 16px;font-size:13px;margin:0}
.badge.type-new{background:#3a2e14;color:#ffd98a}
.badge.type-handling{background:#14304a;color:#7ec1ff}
.badge.type-done{background:#143a26;color:#7affc0}
.badge.type-closed{background:#2a2a2a;color:#9fb3cc}

/* 项目组 SaaS（组长管理 / 成员只读 / 打卡页组任务） */
.plan-item.group{border-color:#1a4a3a;background:#0c1f18}
.plan-item.group .g-tag{font-size:11px;color:#7affc0;background:#103024;border:1px solid #1f5a44;border-radius:10px;padding:1px 8px;margin-left:4px;white-space:nowrap}
.plan-item .gtag-right{margin-left:auto}
.plan-item .gp-date-prefix{font-size:11px;color:#ffd479;background:#2a2410;border:1px solid #6a5412;border-radius:10px;padding:1px 7px;margin-right:6px;white-space:nowrap;font-weight:600}
.g-member{background:#0d1828;border:1px solid var(--line);border-radius:8px;padding:9px 12px;margin-bottom:8px;font-size:14px;display:flex;align-items:center;gap:10px}
.gm-name{flex:0 0 auto;min-width:70px;font-weight:500}
.gm-phone{flex:1;min-width:100px;color:#9ab3cf}
.gm-right{flex:0 0 auto;margin-left:auto;text-align:right;white-space:nowrap}
.g-member .gm-rm{background:none;border:0;color:#ff7a7a;font-size:13px;line-height:1;cursor:pointer;padding:0 3px}
.g-role{font-size:11px;color:#7affc0;background:#103024;border:1px solid #1f5a44;border-radius:10px;padding:1px 8px}
.g-tab{background:#1c2e47;color:#cfdcec;font-size:13px;padding:6px 14px;margin:0;min-width:auto;border:1px solid var(--line);border-radius:8px}
.g-tab.active{background:var(--accent);color:#fff}
.gp-item{display:flex;align-items:center;gap:8px;background:#0d1828;border:1px solid var(--line);border-radius:8px;padding:6px 10px;margin-bottom:6px}
.gp-item .gp-text{flex:1}
.gp-item .gp-freq{flex:none;font-size:11px;color:#7fd0ff;background:#10243a;border:1px solid #1d3a55;border-radius:10px;padding:1px 8px;white-space:nowrap}
.gp-item .x{background:none;border:0;color:#ff7a7a;font-size:16px;line-height:1;cursor:pointer;padding:0 4px}
.gp-item-ro{background:#0c1f18;border:1px solid #1a4a3a;border-radius:8px;padding:8px 12px;margin-bottom:6px;font-size:14px;color:#cfeede}
.pct{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.pct b{font-size:12px;min-width:34px;text-align:right}
.pct-track{display:inline-block;width:64px;height:8px;background:#2a2a2a;border-radius:4px;overflow:hidden;vertical-align:middle}
.pct-fill{display:block;height:100%;border-radius:4px}

/* 近7天趋势迷你柱状图 */
.spark{display:inline-flex;align-items:flex-end;gap:2px;height:30px;vertical-align:middle}
.spark-bar{width:6px;border-radius:2px 2px 0 0;min-height:3px}

/* 管理员跨组总览：全站近7天趋势 */
.ag-trend{background:#0c1620;border:1px solid #1c3a52;border-radius:10px;padding:12px 16px;margin-bottom:14px;display:flex;flex-direction:column;gap:8px}
.ag-trend-hd{font-size:14px;color:#cfe2f3}
.ag-trend-hd>b{font-size:16px;margin-left:4px}

/* 组长提醒按钮 */
.btn-remind{background:#b8860b;color:#1a1a1a;border:none;border-radius:8px;padding:8px 14px;font-size:13px;cursor:pointer;font-weight:600}
.btn-remind:hover{background:#d9a520}
.btn-remind.sm{padding:4px 10px;font-size:12px}

/* 成员端提醒横幅 */
.remind-banner{background:#2a1d05;border:1px solid #6b4e10;border-radius:10px;padding:10px 14px;margin-bottom:10px}
.remind-banner>b{color:#ffcf6b;font-size:14px}
.remind-banner ul{list-style:none;margin:8px 0 0;padding:0}
.remind-banner li{font-size:14px;color:#ffe2a8;padding:4px 0;border-top:1px dashed #5a4413;display:flex;align-items:center;gap:8px}
.remind-banner li:first-child{border-top:none}
.remind-banner .link{background:none;border:none;color:#7affc0;cursor:pointer;font-size:12px;text-decoration:underline;margin-left:auto}
.remind-banner .x{margin-left:auto;background:none;border:none;color:#ffcf6b;font-size:16px;cursor:pointer}

/* 运营日历：节点结果卡片 */
.ops-node{background:#0d1828;border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:10px 0}
.ops-node.ops-special{border-color:#2c4a6e;background:#10223a}
.ops-node-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ops-emoji{font-size:16px}
.ops-cat{font-size:11px;background:#22364f;color:#9fb6cf;padding:1px 8px;border-radius:10px}
.ops-name{font-size:15px;color:var(--accent);margin-left:2px}
.ops-desc{font-size:13px;color:var(--sub);margin:4px 0 2px}
.ops-tips{margin:6px 0 0;padding-left:18px}
.ops-tips li{font-size:13px;color:var(--txt);line-height:1.7}

/* 运营日历：三级行业选择器 */
.ops-industry-bar{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0 16px;align-items:center}
.ops-sel{background:#0d1828;border:1px solid var(--line);color:var(--txt);border-radius:8px;padding:11px 12px;font-size:15px;min-width:130px;flex:1}
.ops-sel:focus{border-color:var(--accent);outline:none}
.ops-custom-input{background:#0d1828;border:1px solid var(--line);color:var(--txt);border-radius:8px;padding:11px 12px;font-size:15px;min-width:160px;flex:1.2;outline:none}
.ops-custom-input::placeholder{color:#556}
.ops-custom-input:focus{border-color:var(--accent)}
.ops-ai-btn{background:linear-gradient(135deg,#6b5ce7,#4f46e5);color:#fff;border:none;border-radius:8px;padding:11px 18px;font-size:15px;font-weight:600;cursor:pointer;white-space:nowrap}
.ops-ai-btn:hover{opacity:.88}
.ops-ai-btn:disabled{opacity:.55;cursor:not-allowed}

/* AI 结果卡片 */
.ops-ai-card{background:#0d1828;border:1px solid #3b26c7;border-radius:10px;padding:14px 16px;margin:10px 0}
.ops-ai-hd{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.ops-ai-hd>span:first-child{font-size:15px;font-weight:700;color:#a78bfa}
.ops-ai-tag{font-size:11px;background:#2d1f6e;color:#c4b5fd;padding:2px 10px;border-radius:10px}
.ops-ai-h4{font-size:14px;font-weight:700;color:#c4b5fd;margin:12px 0 6px;padding-bottom:4px;border-bottom:1px dashed #2d1f6e}
.ops-ai-ul{list-style:none;margin:6px 0;padding-left:0}
.ops-ai-ul li{font-size:13px;color:var(--txt);line-height:1.75;padding:4px 0 4px 18px;position:relative}
.ops-ai-ul li::before{content:'✦';position:absolute;left:0;color:#a78bfa;font-size:11px}
.ops-ai-p{font-size:13px;color:var(--sub);line-height:1.7;margin:6px 0}
.ops-ai-p-first{color:var(--txt)}
/* 运营节奏表：紧凑卡片列表（日期 — 标题 — 内容） */
.ops-tl{margin:8px 0;display:flex;flex-direction:column;gap:6px}
.ops-tl-row{display:flex;align-items:flex-start;gap:10px;background:#111a2e;border:1px solid #233054;border-radius:8px;padding:9px 12px;font-size:13px;line-height:1.65}
.ops-tl-date{flex-shrink:0;font-weight:700;color:#a78bfa;white-space:nowrap;min-width:72px;font-size:12.5px}
.ops-tl-body{color:var(--txt);word-break:break-word}
.ops-tl-sep{color:#3b26c7;margin:0 4px}
.ops-ai-bar{display:flex;align-items:center;gap:10px;background:#1a1040;border:1px solid #3b26c7;border-radius:8px;padding:10px 14px;margin-bottom:10px;font-size:13px;color:#c4b5fd}
/* AI 生成中加载块（含旋转动画 + 实时秒数倒计时） */
.ops-loading{display:flex;flex-direction:column;align-items:center;gap:8px;padding:26px 16px;margin-top:10px;background:#140d33;border:1px dashed #3b26c7;border-radius:10px}
.ops-loading-spin{width:30px;height:30px;border:3px solid #2d1f6e;border-top-color:#a78bfa;border-radius:50%;animation:ops-spin .8s linear infinite}
@keyframes ops-spin{to{transform:rotate(360deg)}}
.ops-loading-txt{font-size:14px;font-weight:600;color:#c4b5fd}
.ops-loading-sub{font-size:12px;color:#8a7fd0;font-variant-numeric:tabular-nums}
.ops-loading-sub #ops-ai-sec{font-weight:700;color:#a78bfa;margin:0 2px}
.ops-loading-sub #ops-ind-sec{font-weight:700;color:#5eead4;margin:0 2px}
.ops-loading-hint{color:#7a9ab0;margin-left:4px}
.ops-ai-btn-inline{background:linear-gradient(135deg,#6b5ce7,#4f46e5);color:#fff;border:none;border-radius:6px;padding:6px 14px;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap}
.ops-ai-btn-inline:hover{opacity:.85}
/* AI 卡片内「加入计划」按钮 */
.ops-ai-actions{display:flex;justify-content:flex-end;margin-bottom:6px}
.ops-add-plan-btn{background:#1f7a4d;border:1px solid #2ea36a;color:#d7ffe9;border-radius:6px;padding:6px 14px;font-size:12px;font-weight:600;cursor:pointer}
.ops-add-plan-btn:hover{background:#258a59}
.ops-add-plan-btn:disabled{opacity:.6;cursor:not-allowed}
/* 计划列表中的「AI 方案详情」按钮 */
.ops-ai-detail-btn{background:none;border:1px solid #3b26c7;color:#a78bfa;font-size:14px;cursor:pointer;padding:2px 5px;border-radius:4px;line-height:1;transition:all .15s}
.ops-ai-detail-btn:hover{background:#3b26c7;color:#fff}
/* 保存分类按钮 */
.ops-save-btn{background:linear-gradient(135deg,#1a7a4d,#146b42);color:#e8f9ef;border:none;border-radius:6px;padding:7px 14px;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap;transition:opacity .15s}
.ops-save-btn:hover{opacity:.85}

/* AI 行业按钮（青色系，与紫色 AI 方案区分） */
.ops-ind-btn{background:linear-gradient(135deg,#0d9488,#0891b2);color:#fff;border:none;border-radius:8px;padding:11px 18px;font-size:15px;font-weight:600;cursor:pointer;white-space:nowrap}
.ops-ind-btn:hover{opacity:.88}
.ops-ind-btn:disabled{opacity:.55;cursor:not-allowed}
.ops-ind-btn-inline{background:linear-gradient(135deg,#0d9488,#0891b2);color:#fff;border:none;border-radius:6px;padding:6px 14px;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap}
.ops-ind-btn-inline:hover{opacity:.85}

/* 行业资讯卡片（与方案卡片同款，头部用青色区分） */
.ops-industry-card .ops-ai-hd span:first-child{color:#5eead4}

/* 我的方案列表 */
.ops-myplans{margin-top:6px}
.ops-plan-item{border:1px solid var(--line);border-radius:10px;margin:8px 0;overflow:hidden;background:#0d1828}
.ops-plan-head{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer}
.ops-plan-head:hover{background:#11203a}
.ops-plan-toggle{color:#a78bfa;font-size:12px;transition:transform .15s;flex:none}
.ops-plan-title{font-size:14px;font-weight:600;color:var(--txt);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ops-plan-meta{font-size:11px;color:#7a9ab0;white-space:nowrap;flex:none}
.ops-plan-del{background:none;border:1px solid #5a2230;color:#ff8a8a;border-radius:6px;padding:3px 10px;font-size:11px;cursor:pointer;flex:none}
.ops-plan-del:hover{background:#3a1620}
.ops-plan-body{padding:4px 14px 14px;border-top:1px dashed var(--line)}

/* 调研报告：任务分组嵌套 */
.rr-task-group{border:1px solid var(--line);border-radius:10px;margin:8px 0;overflow:hidden;background:#0d1828}
.rr-task-header{display:flex;align-items:center;gap:10px;padding:12px 14px;cursor:pointer;user-select:none}
.rr-task-header:hover{background:#11203a}
.rr-toggle{color:#a78bfa;font-size:12px;transition:transform .15s;flex:none;width:16px;text-align:center}
.rr-task-title{font-size:14px;font-weight:600;color:var(--txt);flex:1;min-width:0;display:flex;align-items:center;gap:8px}
.rr-task-badge{background:#1e3a5f;color:#5eead4;font-size:11px;padding:2px 10px;border-radius:10px;flex:none;white-space:nowrap}
.rr-reports-inner{padding:6px 12px 12px}
.rr-report-row{margin:4px 0;padding:8px 10px;background:#091220;border-radius:8px;border-left:3px solid #2a5298}
