:root{
    --primary:#2e75b6; --primary-d:#245e92;
    --bg:#f5f6f8; --card:#fff; --border:#e3e6ea; --text:#222; --muted:#888;
    --st-pending:#ffd21e; --st-doing:#2e75b6; --st-done:#b8c2cc; --st-undone:#ea580c;
}
*{box-sizing:border-box;}
body{margin:0;font-family:"Microsoft YaHei","Segoe UI",system-ui,sans-serif;background:var(--bg);color:var(--text);font-size:14px;}
a{color:var(--primary);text-decoration:none;}

/* 顶部导航 */
.topnav{display:flex;align-items:center;gap:18px;background:#fff;border-bottom:1px solid var(--border);padding:0 20px;height:56px;position:sticky;top:0;z-index:10;box-shadow:0 1px 4px rgba(0,0,0,.04);}
.nav-brand{font-weight:700;font-size:16px;color:var(--primary);white-space:nowrap;}
.nav-links{display:flex;gap:4px;flex:1;}
.nav-links a{padding:8px 14px;border-radius:6px;color:#444;}
.nav-links a:hover{background:var(--bg);}
.nav-links a.active{background:var(--primary);color:#fff;}
.nav-user{display:flex;align-items:center;gap:10px;}
.role-badge{padding:2px 8px;border-radius:10px;font-size:12px;background:#eef;color:#557;}
.role-captain{background:#fde;color:#c0392b;} .role-vice{background:#eef;color:#2e75b6;}
.role-business{background:#efe;color:#27ae60;} .role-editor{background:#ffe;color:#b8860b;}
.nav-logout{color:var(--muted);border:1px solid var(--border);padding:4px 10px;border-radius:6px;}

/* 头像 + 性别边框 */
.avatar{border-radius:50%;object-fit:cover;display:inline-flex;align-items:center;justify-content:center;
    box-sizing:border-box;font-weight:600;vertical-align:middle;flex:none;}
.avatar.gender-male{border:2px solid #2e75b6;background:#d6e4f5;color:#1f4e79;}
.avatar.gender-female{border:2px solid #e91e8c;background:#fce0f0;color:#a01363;}
.avatar.gender-unknown{border:2px solid #bbbbbb;background:#eeeeee;color:#666;}
.avatar-letter{line-height:1;}
.nav-user .avatar{margin-right:6px;}
.avatar-edit{display:flex;align-items:center;gap:14px;margin-bottom:6px;}
.avatar-edit .avatar{margin:0;}
.file-btn{display:inline-block;padding:6px 14px;border:1px solid var(--border);border-radius:6px;background:#fff;cursor:pointer;font-size:13px;color:#333;}
.file-btn:hover{background:var(--bg);}
.mem-name{display:flex;align-items:center;gap:10px;white-space:nowrap;}
.mem-meta{line-height:1.3;}

/* 模态框（弹窗） */
.modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:10000;}
.modal{background:#fff;border-radius:12px;width:440px;max-width:92vw;padding:20px;box-shadow:0 10px 40px rgba(0,0,0,.25);}
.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;flex:0 0 auto;}
/* 弹窗内容区：仅此区域滚动，标题栏与关闭按钮固定 */
.modal-body{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;}
.modal-body + *{margin-top:0;}
.modal-head + .modal-body{border-top:1px solid var(--border);padding-top:14px;}
.modal-close{border:none;background:none;font-size:24px;cursor:pointer;color:#888;line-height:1;}

/* 容器 */
.container{max-width:1100px;margin:20px auto;padding:0 20px;}
/* 首页日历放宽，自适应页面宽度 */
.container-wide{max-width:none;margin:20px auto;padding:0 20px;
    min-height:calc(100vh - 96px);}
.calendar{width:100%;}

/* 按钮 */
.btn{display:inline-block;padding:7px 16px;border:1px solid var(--border);border-radius:6px;background:#fff;cursor:pointer;color:#333;}
.btn:hover{background:var(--bg);}
.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary);}
.btn-primary:hover{background:var(--primary-d);}
.btn-block{width:100%;margin-top:6px;}

/* 页面标题 */
.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;}
.page-head h2{margin:0;font-size:20px;}
.inline-form{display:inline-flex;gap:6px;}
.inline-form input{margin:0;}

/* 卡片 */
.card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:18px;margin-bottom:16px;box-shadow:0 1px 3px rgba(0,0,0,.03);}

/* 表单 */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.form-grid label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#555;}
.form-grid label.full,
.form-grid .full{grid-column:1 / -1;}
.form-grid input,.form-grid select,.form-grid textarea{border:1px solid var(--border);border-radius:6px;padding:8px;font-size:14px;font-family:inherit;}
.form-grid textarea{resize:vertical;}
.form-btns{grid-column:1 / -1;display:flex;gap:10px;margin-top:18px;}
/* 按钮下方的提示文字留足间距，避免与按钮挤在一起 */
.form-btns + .hint{margin-top:12px;}
.block{display:block;margin-bottom:14px;}
.block textarea{width:100%;border:1px solid var(--border);border-radius:6px;padding:10px;font-family:inherit;resize:vertical;}
.full-input{width:100%;border:1px solid var(--border);border-radius:6px;padding:8px;font-size:14px;}
.form-error{background:#fdecea;color:#c0392b;border:1px solid #f5c6cb;padding:8px 12px;border-radius:6px;margin-bottom:12px;}
.form-ok{background:#eafaf0;color:#27ae60;border:1px solid #bfe6cd;padding:8px 12px;border-radius:6px;margin-bottom:12px;}
.hint{color:var(--muted);font-size:12px;margin:6px 0 0;}

/* 登录页 */
.login-wrap{min-height:calc(100vh - 0px);display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#eef4fb,#f7f9fc);padding:20px;}
.login-card{background:#fff;border-radius:14px;box-shadow:0 8px 36px rgba(0,0,0,.10);width:420px;max-width:94vw;padding:28px 26px;}
.login-title{text-align:center;color:var(--primary);font-size:20px;margin:0 0 20px;}
.login-form label{display:block;font-size:13px;color:#555;margin-bottom:14px;}
.login-form input[type=text],.login-form input[type=password]{width:100%;border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-size:15px;margin-top:6px;box-sizing:border-box;}
.login-tip{font-size:13px;color:#666;text-align:center;margin:0 0 16px;}
.login-err{background:#fdecea;color:#c0392b;border-radius:8px;padding:10px 12px;font-size:13px;margin-bottom:14px;text-align:center;}
.btn-block{width:100%;padding:11px;font-size:15px;margin-top:4px;}
.member-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px;}
.member-pick{border:1px solid var(--border);border-radius:10px;padding:10px;display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;background:#fff;transition:.15s;position:relative;}
.member-pick input{position:absolute;top:8px;left:8px;}
.member-pick:hover{border-color:var(--primary);}
.member-pick.sel{border-color:var(--primary);background:#f0f6ff;box-shadow:0 0 0 2px rgba(46,117,182,.15);}
.mp-name{font-weight:600;color:#333;}
.mp-role{font-size:12px;color:var(--muted);}

/* 验证码列 */
.vc-cell{white-space:nowrap;font-size:13px;}
.vc-box{display:inline-flex;align-items:center;gap:4px;}
.vc-code{background:#f3f4f6;border:1px dashed #bbb;border-radius:6px;padding:2px 8px;letter-spacing:2px;font-weight:700;color:#2e75b6;cursor:default;}
.vc-ico{border:1px solid var(--border);background:#fff;border-radius:6px;width:26px;height:26px;cursor:pointer;font-size:13px;line-height:1;padding:0;display:inline-flex;align-items:center;justify-content:center;transition:background .15s,border-color .15s;}
.vc-ico:hover{background:var(--bg);border-color:var(--primary);}
.vc-left{color:#27ae60;margin-left:6px;font-size:12px;}
.vc-exp{color:#c0392b;margin-left:6px;font-size:12px;}
.vc-none{color:var(--muted);}

/* 今日计划看板 */
.sec-title{font-size:15px;margin:0 0 14px;color:#333;border-left:3px solid var(--primary);padding-left:8px;}
.plan-row{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap;background:#fff;border:1px solid var(--border);border-radius:8px;padding:8px 10px;}
.plan-row.dragging{opacity:.5;border-style:dashed;}
/* 今日计划：每行含 计划 / 目标 / 总结 三段（仅作用于本页 planList，不影响弹窗内的行） */
#planList .plan-row{flex-direction:column;align-items:stretch;gap:8px;padding:10px 12px;margin-bottom:12px;}
.pr-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.pr-label{flex:0 0 32px;font-size:13px;color:#666;}
#planList .plan-content{flex:1 1 220px;min-width:180px;}
#planList .goal-input{flex:1 1 200px;min-width:160px;}
#planList .sum-reason{flex:1 1 180px;min-width:140px;}
.plan-row.drag-over{border-color:var(--primary);box-shadow:0 0 0 2px rgba(46,117,182,.15);}
.drag-handle{cursor:grab;color:#999;font-size:16px;user-select:none;line-height:1;padding:0 2px;}
.drag-handle:active{cursor:grabbing;}
.plan-content{flex:1;min-width:200px;border:1px solid var(--border);border-radius:6px;padding:8px;font-size:14px;}
.owner-pick{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
/* 任务：组级每天执行开关 + 每个事项的具体日期选择区 */
.task-repeat{display:flex;align-items:center;gap:8px;font-size:13px;color:#444;cursor:pointer;}
.item-dates{display:flex;align-items:center;gap:10px;flex-wrap:wrap;width:100%;margin-top:2px;}
.date-mode{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:#444;cursor:pointer;}
.date-checkboxes{display:flex;gap:6px;flex-wrap:wrap;}
.date-item{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:#555;cursor:pointer;background:#f6f8fa;border:1px solid var(--border);border-radius:12px;padding:3px 8px;}
.date-item input{margin:0;}
.di-text{display:inline-flex;flex-direction:column;align-items:center;line-height:1.15;min-width:30px;}
.di-date{font-size:12px;color:#333;font-weight:500;}
.di-week{font-size:10px;color:#8a9099;}
.owner-item{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:#555;cursor:pointer;}
.owner-item img,.owner-item .avatar{vertical-align:middle;}
/* 常态任务同步项的参与者：纯展示，无勾选框 */
.owner-view{cursor:default;}
.row-del{border:none;background:#f3f4f6;color:#c0392b;width:26px;height:26px;border-radius:50%;cursor:pointer;font-size:16px;line-height:1;}
.row-del:hover{background:#fdecea;}
.btn-add{margin-top:4px;background:#fff;border:1px dashed var(--primary);color:var(--primary);padding:6px 14px;border-radius:6px;cursor:pointer;font-size:13px;}
.btn-add:hover{background:#f0f6ff;}
.goal-row{display:flex;align-items:center;gap:8px;margin-bottom:10px;}

/* 弹窗内事项卡片（与今日计划卡片风格一致） */
.item-card{margin-bottom:0;max-height:none;}
.item-card #taskItems{max-height:46vh;overflow:auto;padding-right:4px;}
.field-tip{font-size:12px;color:#999;font-weight:400;border-left:none;padding-left:6px;}
/* 弹窗内每行：与今日计划「计划（每行绑定完成人）」一致，输入框与勾选同一行展示 */
.item-card .plan-row{position:relative;padding:8px 34px 8px 30px;flex-wrap:wrap;align-items:center;}
.item-card .drag-handle{position:absolute;left:8px;top:50%;transform:translateY(-50%);z-index:1;}
.item-card .row-del{position:absolute;right:8px;top:50%;transform:translateY(-50%);z-index:1;}
.item-card .plan-content{position:relative;z-index:1;flex:1;min-width:200px;box-sizing:border-box;}
.item-card .owner-pick{margin-top:0;flex-wrap:wrap;}
@media (max-width:600px){
    .item-card .plan-row{padding:30px 10px 8px 26px;}
    .item-card .drag-handle{left:6px;}
    .item-card .row-del{right:6px;}
}
.goal-label{font-size:14px;color:#444;white-space:nowrap;}
.goal-input{flex:1;border:1px solid var(--border);border-radius:6px;padding:8px;font-size:14px;}
.sum-row{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:nowrap;}
.sum-label{flex:1;min-width:0;font-size:14px;color:#444;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.done-pick{flex:0 0 auto;display:inline-flex;align-items:center;gap:4px;font-size:13px;color:#555;cursor:pointer;}
.sum-reason{flex:1 1 160px;min-width:120px;padding:4px 8px;border:1px solid #d9dee5;border-radius:6px;font-size:13px;}
.member-summaries{margin-top:14px;border-top:1px dashed var(--border);padding-top:12px;}
.ms-item{margin-bottom:10px;}
.ms-name{font-weight:600;color:#333;margin-bottom:2px;}
.ms-content{color:#555;padding-left:14px;white-space:pre-wrap;}

/* 表格 */
.tbl{width:100%;border-collapse:collapse;}
.tbl th,.tbl td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top;}
.tbl th{background:var(--bg);font-weight:600;color:#555;}
.tbl tr:hover td{background:#fafbfc;}
.empty{text-align:center;color:var(--muted);padding:24px;}
.link{margin-right:10px;}
.link.danger{color:#c0392b;}
.mem-name{white-space:nowrap;}
.muted{color:var(--muted);}

/* 任务列表：事项与参与人明细行 */
.task-detail-row > td{background:#fafbfc;border-top:none;padding:6px 14px 12px 14px;}
.task-detail-title{font-size:12px;color:#888;margin-bottom:6px;font-weight:600;}
.task-detail-item{display:flex;align-items:center;flex-wrap:wrap;gap:6px 14px;padding:4px 0;border-top:1px dashed #eee;}
.task-detail-item:first-of-type{border-top:none;}
.task-detail-content{font-weight:600;color:#333;}
.task-detail-owners{display:flex;align-items:center;flex-wrap:wrap;gap:4px;}
.mini-owner{display:inline-flex;align-items:center;background:#eaf2ff;color:#2f6fed;border-radius:10px;padding:1px 8px;font-size:12px;}
/* 事项频率小标：每天 / 具体日期 */
.freq-badge{display:inline-flex;align-items:center;font-size:12px;border-radius:10px;padding:1px 9px;font-weight:500;}
.freq-every{background:#e8f7ee;color:#1f9d55;border:1px solid #b7e6c8;}
.freq-custom{background:#fff4e6;color:#d98316;border:1px solid #f5d9a8;}
.freq-dates{display:inline-flex;align-items:center;font-size:12px;color:#666;background:#f3f4f6;border-radius:8px;padding:1px 8px;}

/* 进度条 */
.progress{background:#eee;border-radius:6px;height:10px;overflow:hidden;width:160px;display:inline-block;vertical-align:middle;}
.progress-bar{background:var(--primary);height:100%;}
.progress-text{margin-left:8px;font-size:12px;color:#666;}

/* 日历 */
.calendar-head{display:flex;align-items:center;justify-content:flex-end;position:relative;margin-bottom:14px;}
.cal-nav{position:absolute;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;}
.cal-nav a{font-size:20px;padding:2px 10px;border:1px solid var(--border);border-radius:6px;}
.cal-title{font-size:18px;font-weight:600;}
.cal-today{font-size:13px;padding:4px 10px;}
.calendar{border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#fff;
    min-height:calc(100vh - 170px);display:flex;flex-direction:column;}
.cal-row{display:grid;grid-template-columns:repeat(7,1fr);flex:1 1 0;}
.cal-week{flex:0 0 auto;}
.cal-week .cal-weekcell{background:var(--bg);font-weight:600;text-align:center;padding:8px 0;}
.cal-cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:6px;min-height:84px;overflow:hidden;}
.cal-cell:nth-child(7n){border-right:none;}
.cal-empty{background:#fafafa;}
.cal-day{position:relative;height:100%;}
.cal-today{background:#fffbe6;}
.day-num{font-weight:600;margin-bottom:4px;}
.day-edit{position:absolute;top:4px;right:6px;color:var(--primary);font-size:13px;}
.day-tasks{display:flex;flex-direction:column;gap:3px;}
.task-chip{font-size:11px;padding:2px 6px;border-radius:4px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.st-pending{background:var(--st-pending);color:#5a4500;}
.st-doing{background:var(--st-doing);}
.st-done{background:var(--st-done);}
.st-undone{background:var(--st-undone);}
/* 已完成底色较浅，标签文字改用深色保证可读 */
.task-chip.st-done{color:#1f2937;}
.task-item{display:flex;align-items:center;justify-content:space-between;gap:6px;
    padding:4px 7px;margin-bottom:4px;border-radius:6px;font-size:13px;
    background:rgba(0,0,0,.03);border-left:3px solid var(--border);
    cursor:pointer;transition:background .15s, box-shadow .15s;}
.task-item:hover{background:rgba(0,0,0,.07);box-shadow:0 1px 4px rgba(0,0,0,.08);}
.task-item.st-pending{border-left-color:#f5c842;}
.task-item.st-doing{border-left-color:#2f80ed;}
.task-item.st-done{border-left-color:#b8c2cc;}
.task-item.st-undone{border-left-color:#ea580c;}
/* 事项序号：日历格与今日安排共用，便于两处对照 */
.item-no{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
    width:18px;height:18px;padding:0;border-radius:3px;
    background:#e9edf2;color:#5b6470;font-size:11px;font-weight:600;line-height:1;}
#planList .item-no{width:22px;height:22px;padding:0;border-radius:4px;font-size:12px;background:var(--primary);color:#fff;}
.ti-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;}
.ti-owners{display:flex;gap:2px;flex:0 0 auto;}
.ti-owners .avatar{width:26px;height:26px;border-width:2px;}
/* 任务列表成员列：头像间距与日历格保持一致 */
.mem-cells{display:flex;gap:2px;flex-wrap:wrap;align-items:center;}
/* 日历计划项：来源项目椭圆小标（仅归属项目时显示，不改变现有样式） */
.ti-project{flex:0 0 auto;max-width:72px;padding:1px 9px;border-radius:999px;
    font-size:11px;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    background:rgba(47,128,237,.12);color:#2f80ed;border:1px solid rgba(47,128,237,.25);}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:4px;vertical-align:middle;}

/* 角色管理区块 */
.role-form{margin-bottom:8px;}
.role-grid{display:flex;flex-wrap:wrap;gap:14px;align-items:center;}
.role-grid label{display:flex;flex-direction:column;font-size:13px;color:var(--muted);gap:4px;}
.role-grid input[type=text]{padding:6px 8px;border:1px solid #d9dee5;border-radius:6px;min-width:160px;}
.perm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px 16px;margin-top:6px;}
.perm-row{display:flex;align-items:center;gap:10px;font-size:13px;}
.perm-mod{font-weight:600;color:#333;min-width:70px;}
.perm-row .check{display:inline-flex;align-items:center;gap:3px;color:#555;}
.legend{display:flex;gap:18px;justify-content:center;margin:12px 0;color:#666;font-size:13px;}
/* 按成员头像多选过滤 */
.owner-filter{display:flex;align-items:center;flex-wrap:wrap;gap:8px;justify-content:center;margin:0 0 12px;}
.of-label{font-size:13px;color:#666;}
.of-item{position:relative;display:inline-flex;cursor:pointer;line-height:0;border-radius:50%;opacity:.45;transition:opacity .15s, box-shadow .15s;}
.of-item .of-check{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;}
.of-item.of-active{opacity:1;box-shadow:0 0 0 2px #2f80ed;}
.of-item:hover{opacity:.85;}
.of-clear{border:1px solid var(--border, #ddd);background:#fff;color:#666;border-radius:12px;padding:3px 10px;font-size:12px;cursor:pointer;}
/* 日历事项/项目：悬浮显示完整内容 */
.tip-box{position:fixed;z-index:10001;display:none;max-width:300px;
    background:rgba(33,37,41,.96);color:#fff;font-size:12px;line-height:1.55;
    padding:6px 10px;border-radius:6px;pointer-events:none;word-break:break-word;
    box-shadow:0 4px 14px rgba(0,0,0,.22);white-space:pre-line;}

/* 登录页 */
.login-page{display:flex;align-items:center;justify-content:center;height:100vh;}
.login-card{background:#fff;border:1px solid var(--border);border-radius:12px;padding:34px;width:360px;box-shadow:0 6px 24px rgba(0,0,0,.08);}
.login-card h1{text-align:center;font-size:20px;color:var(--primary);margin:0 0 22px;}
.login-card label{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;font-size:13px;color:#555;}
.login-card input{border:1px solid var(--border);border-radius:6px;padding:10px;font-size:14px;}
.login-tip{text-align:center;color:var(--muted);font-size:12px;margin-top:14px;}
/* 版本更新：上传区与更新日志 */
.upload-row{margin-bottom:10px;}
.upload-row input[type="text"],.upload-row textarea{width:100%;box-sizing:border-box;}
.changelog{white-space:pre-wrap;background:#f7f9fc;border:1px solid var(--border);border-radius:8px;
    padding:10px 12px;font-size:13px;line-height:1.6;color:#333;margin:8px 0 0;max-height:220px;overflow:auto;}
.form-err{background:#fdecea;color:#c0392b;border:1px solid #f5c6c0;padding:8px 12px;border-radius:6px;margin-bottom:12px;}

/* 登录第二步：已记住身份时的「切换身份」入口 */
.switch-user{text-align:center;margin-top:8px;font-size:13px;}
.switch-user a{color:var(--primary);}
/* 队长预览模式 */
.preview-bar{display:flex;align-items:center;gap:12px;justify-content:center;flex-wrap:wrap;
    background:#fff7e6;border-bottom:1px solid #f5d9a8;color:#8a6d1f;padding:8px 20px;font-size:13px;}
.preview-bar b{color:#6b5310;}
.preview-bar .pv-exit{color:#c0392b;font-weight:600;margin-left:8px;
    border:none;background:none;cursor:pointer;font-size:13px;text-decoration:underline;padding:0;}
.preview-form{margin:0;}
.preview-form select{border:1px solid var(--border);border-radius:6px;padding:4px 8px;font-size:12px;background:#fff;cursor:pointer;max-width:150px;}
/* 「切换身份」与「确定」按钮之间留出足够间距（.btn-block 默认仅 4px） */
.switch-user + .btn-block{margin-top:20px;}

/* 关闭提示 */
.closed-box{max-width:420px;margin:80px auto;text-align:center;background:#fff;border:1px solid var(--border);border-radius:12px;padding:40px;box-shadow:0 6px 24px rgba(0,0,0,.08);}
.closed-icon{font-size:48px;}
.closed-box h2{margin:14px 0 8px;}
.closed-box p{color:#666;margin-bottom:20px;}

/* 系统配置 */
.cfg-block{margin-bottom:18px;}
.cfg-label{font-weight:600;margin-bottom:8px;}
.radio,.check{margin-right:16px;font-size:14px;}
.week-chk{display:flex;flex-wrap:wrap;gap:6px;}

/* 成员多选卡片 */
.chk-group{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;}
.chk-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;cursor:pointer;background:#fff;user-select:none;transition:border-color .15s,background .15s;}
.chk-item:hover{background:var(--bg);}
.chk-item input{accent-color:var(--primary);width:16px;height:16px;flex:none;cursor:pointer;}
.chk-item:has(input:checked){border-color:var(--primary);background:#eef5fc;}
.chk-item.checked{border-color:var(--primary);background:#eef5fc;}
.chk-item .chk-name{font-size:13px;color:#333;line-height:1.2;}
.chk-item .avatar{margin:0;}
.time-row input{margin:0 8px 0 2px;}
.cfg-block input[type=text],.cfg-block input[type=time]{border:1px solid var(--border);border-radius:6px;padding:7px;}

/* ==========================================================
   全站统一：表单控件质感
   内凹阴影 + 悬停提亮 + 聚焦光环 + 只读/禁用灰底 + 单选复选主色
   注意：类选择器优先级高于元素选择器，故项目内已定义的类一并列出
   ========================================================== */
input[type="text"], input[type="date"], input[type="time"],
input[type="number"], input[type="password"], input[type="email"],
textarea, select,
.form-grid input, .form-grid select, .form-grid textarea,
.block textarea, .full-input, .plan-content, .goal-input, .sum-reason,
.role-grid input[type="text"], .cfg-block input[type="text"], .cfg-block input[type="time"],
.login-card input, .login-form input[type="text"], .login-form input[type="password"]{
    border:1px solid #c9d1da;border-radius:8px;padding:9px 12px;font-size:14px;color:#2c3034;
    background:#f7f9fc;box-shadow:inset 0 1px 3px rgba(16,24,40,.08);outline:none;
    transition:border-color .18s, box-shadow .18s, background .18s;
}
textarea{line-height:1.65;resize:vertical;}
select{cursor:pointer;}
input::placeholder, textarea::placeholder{color:#b3bac3;}

/* 悬停：边框加深、底色转白 */
input[type="text"]:hover, input[type="date"]:hover, input[type="time"]:hover,
input[type="number"]:hover, input[type="password"]:hover, input[type="email"]:hover,
textarea:hover, select:hover,
.form-grid input:hover, .form-grid select:hover, .form-grid textarea:hover,
.block textarea:hover, .full-input:hover, .plan-content:hover, .goal-input:hover, .sum-reason:hover,
.role-grid input[type="text"]:hover, .cfg-block input[type="text"]:hover, .cfg-block input[type="time"]:hover,
.login-card input:hover, .login-form input[type="text"]:hover, .login-form input[type="password"]:hover{
    border-color:#c4ccd6;background:#fff;
}

/* 聚焦：主色边框 + 柔光环 */
input[type="text"]:focus, input[type="date"]:focus, input[type="time"]:focus,
input[type="number"]:focus, input[type="password"]:focus, input[type="email"]:focus,
textarea:focus, select:focus,
.form-grid input:focus, .form-grid select:focus, .form-grid textarea:focus,
.block textarea:focus, .full-input:focus, .plan-content:focus, .goal-input:focus, .sum-reason:focus,
.role-grid input[type="text"]:focus, .cfg-block input[type="text"]:focus, .cfg-block input[type="time"]:focus,
.login-card input:focus, .login-form input[type="text"]:focus, .login-form input[type="password"]:focus{
    border-color:var(--primary);background:#fff;
    box-shadow:inset 0 1px 2px rgba(16,24,40,.03), 0 0 0 3px rgba(47,128,237,.15);
}

/* 只读 / 禁用：灰底明确区分，不抢焦点 */
input[readonly], input[disabled], textarea[readonly], select[disabled]{
    background:#eaeff4;color:#6b7280;border-color:#d8dee6;box-shadow:none;cursor:default;
}
input[readonly]:hover, input[disabled]:hover, textarea[readonly]:hover, select[disabled]:hover{
    border-color:#d8dee6;background:#eaeff4;
}
input[readonly]:focus, input[disabled]:focus, textarea[readonly]:focus, select[disabled]:focus{
    border-color:#d8dee6;box-shadow:none;
}

/* 单选 / 复选：主色 + 放大易点 */
input[type="radio"], input[type="checkbox"]{accent-color:var(--primary);width:15px;height:15px;cursor:pointer;}

/* 卡片：悬停轻微浮起 */
.card{transition:box-shadow .18s, border-color .18s;}
.card:hover{box-shadow:0 2px 12px rgba(16,24,40,.06);}

/* 今日计划行：三段式留白 + 悬停浮起 + 标签加粗 */
#planList .plan-row{gap:9px;padding:11px 13px;margin-bottom:12px;transition:border-color .18s, box-shadow .18s;}
#planList .plan-row:hover{border-color:#d5dce4;box-shadow:0 2px 10px rgba(16,24,40,.06);}
.pr-label{color:#667085;font-weight:600;}
