:root{
  /* 教育蓝品牌色（知了教育调） */
  --blue:#1a6fd1; --blue-d:#1559b0; --ink:#1f2937; --mut:#6b7280;
  --line:#e1e8ef; --bg:#f0f2f5; --card:#fff;
  --green:#10b981; --amber:#f59e0b; --red:#ef4444; --teal:#0e9ad8;
  --chip:#e8f1fb; --chip-ink:#1a6fd1;
  --grad-primary:linear-gradient(135deg,#1a6fd1,#3b8de6);
  --media:#0e9ad8; --grad-media:linear-gradient(135deg,#0e9ad8,#38bdf8);
  --shadow:0 1px 3px rgba(17,24,39,.06),0 1px 2px rgba(17,24,39,.04);
  --shadow-lg:0 10px 30px rgba(17,24,39,.12);
  --radius:14px; --radius-sm:10px;
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;font-family:var(--font);background:var(--bg);color:var(--ink);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:var(--ink);text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;border-radius:var(--radius-sm);padding:9px 16px;font-size:13px;font-weight:500;background:var(--blue);color:#fff;transition:.15s}
button:hover{background:var(--blue-d)}
button:active{transform:translateY(1px)}
button.del{background:#fff;color:var(--red);border:1px solid #f6d3d3}
button.del:hover{background:#fff5f5}
button.ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}
button.ghost:hover{background:#f3f5f9}
button.sm{padding:6px 11px;font-size:12px}
input,select,textarea{font-family:inherit;font-size:13px;width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;color:var(--ink);transition:.15s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(79,124,255,.12)}
textarea{resize:vertical;line-height:1.6}
label{font-size:12px;color:var(--mut);display:block;margin-bottom:5px;font-weight:500}
.mut{color:var(--mut)}
.muted{color:var(--mut);font-size:12px}

/* 图标 */
.ic{width:18px;height:18px;display:inline-block;vertical-align:middle;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.ic16{width:16px;height:16px}.ic20{width:20px;height:20px}.ic22{width:22px;height:22px}

/* 登录 */
#login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px;background:linear-gradient(135deg,#eef2ff,#f5f7fb)}
.lcard{background:#fff;border:1px solid var(--line);border-radius:18px;padding:30px;width:100%;max-width:360px;box-shadow:var(--shadow-lg)}
.lcard h1{font-size:22px;margin:0 0 6px}
.tip{color:var(--mut);font-size:12px;margin:0 0 18px}
.lcard input{margin:8px 0}
.err{color:var(--red);font-size:12px;min-height:16px;margin-top:6px}

/* 布局 */
#app{display:flex;min-height:100vh}
.side{width:220px;background:#fff;border-right:1px solid var(--line);padding:18px 14px;flex-shrink:0;display:flex;flex-direction:column;gap:4px}
.side .brand{font-weight:700;font-size:16px;margin-bottom:18px;display:flex;align-items:center;gap:8px;color:var(--blue)}
.side a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-sm);color:var(--mut);text-decoration:none;font-size:13px;font-weight:500;transition:.15s}
.side a:hover{background:#f3f5f9;color:var(--ink)}
.side a.active{background:rgba(26,111,209,.1);color:var(--blue-d);font-weight:600}
.side .sp{flex:1}
.main{flex:1;padding:20px 24px;max-width:100%;min-width:0;overflow-x:hidden}
.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:12px}
.topbar strong{font-size:18px}
.topbar .who{font-size:13px;color:var(--mut);display:flex;align-items:center;gap:6px}
.topbar a{color:var(--blue)}

/* 通用区块 */
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.grid.sm{grid-template-columns:repeat(4,1fr)}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;display:block;color:var(--ink);box-shadow:var(--shadow);transition:.15s}
.stat:hover{border-color:var(--blue);transform:translateY(-2px)}
.stat .n{font-size:26px;font-weight:700;line-height:1.1}
.stat .l{font-size:12px;color:var(--mut);margin-top:4px}
.sec{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin-top:16px;box-shadow:var(--shadow)}
.sec h3{margin:0 0 14px;font-size:15px;display:flex;align-items:center;gap:8px}
.sec h3 small{font-weight:400;color:var(--mut)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.two .sec{margin-top:0}
.ph{color:var(--mut);font-size:12px;line-height:1.8;margin:8px 0}
.more{display:inline-block;margin-top:10px;color:var(--blue);font-size:12px;font-weight:500}
.act-list{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.act-list li{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--bg);border:1px solid var(--line);border-radius:10px;font-size:13px;transition:.15s}
.act-list li:hover{border-color:var(--blue);background:var(--chip)}
.act-list .act{display:flex;align-items:center;gap:10px;width:100%;color:inherit;text-decoration:none}
.act-list .tag{flex:0 0 auto;background:var(--chip);color:var(--chip-ink);border-radius:999px;padding:2px 9px;font-size:11px;font-weight:600}
.act-list .t{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}
.act-list .mut{margin-left:auto;white-space:nowrap}
.more-row{display:flex;gap:16px;flex-wrap:wrap}
.more-row .more{margin-top:10px}

/* 顶部快速待办 */
.quick-todo{display:flex;gap:8px;margin-bottom:18px}
.quick-todo input{flex:1}
.quick-todo button{white-space:nowrap}

/* 首页问候 + 快捷操作 */
.greet{background:linear-gradient(135deg,var(--blue),var(--blue-d));color:#fff;border-radius:var(--radius);padding:20px 22px;margin-bottom:18px;box-shadow:var(--shadow)}
.greet h2{margin:0 0 6px;font-size:20px;font-weight:600}
.greet p{margin:0;opacity:.9;font-size:13px}
.quickops{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:14px}
.qop{background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px;display:flex;align-items:center;gap:12px;cursor:pointer;transition:.15s;box-shadow:var(--shadow)}
.qop:hover{border-color:var(--blue);transform:translateY(-2px)}
.qop .ic{width:22px;height:22px;color:var(--blue)}
.qop div{flex:1}
.qop strong{display:block;font-size:14px;margin-bottom:2px}
.qop span{font-size:12px;color:var(--mut)}
@media(max-width:768px){
  .quickops{grid-template-columns:1fr}
  .greet h2{font-size:18px}
}

/* 发布监控卡片 */
.pub{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.pcard{position:relative;border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px;font-size:12px;background:#fff}
.pcard .pn{font-weight:600;margin-bottom:8px;display:flex;align-items:center;gap:6px}
.pcard .st{display:inline-block;font-size:11px;padding:2px 8px;border-radius:999px;margin-bottom:6px;font-weight:500}
.pcard .pm{color:var(--mut);font-size:11px;line-height:1.5}
.st.ok{background:#e7f7ef;color:#0a7a4a}.st.no{background:#fef3e0;color:#b66a00}.st.fail{background:#fdeaea;color:#b42323}

/* 列表行（修复窜行） */
.lines{list-style:none;margin:0;padding:0}
.lines li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 6px;border-bottom:1px solid #f1f3f7;font-size:13px;min-width:0}
.lines li:last-child{border-bottom:none}
.lines .tx{flex:1;min-width:0;overflow-wrap:anywhere;display:flex;align-items:center;gap:9px}
.lines li.od .tx{color:var(--red)}
.lines li.done .tx{text-decoration:line-through;color:var(--mut)}
.lines .meta{color:var(--mut);font-size:11px;white-space:nowrap;flex-shrink:0}
.lines .tag{background:#eef1f7;color:var(--mut);border-radius:6px;padding:1px 7px;font-size:11px;margin-right:4px}
.actions{display:flex;gap:4px;flex-shrink:0;align-items:center}
.actions button{background:none;border:none;padding:6px;color:var(--mut);border-radius:8px;box-shadow:none}
.actions button:hover{background:#f3f5f9;color:var(--ink)}
.actions button.danger:hover{background:#fff5f5;color:var(--red)}

/* 待办列表专用 */
.lines.todo li{display:grid;grid-template-columns:auto 1fr auto auto auto;align-items:center;gap:10px 12px;padding:12px 8px;border-bottom:1px solid #f1f3f7;font-size:13px;min-width:0}
.lines.todo li:last-child{border-bottom:none}
.lines.todo .td-check{display:flex;align-items:center;justify-content:center}
.lines.todo .td-check input{width:18px;height:18px;cursor:pointer;accent-color:var(--blue)}
.lines.todo .td-text{overflow-wrap:anywhere;min-width:0;line-height:1.5}
.lines.todo li.done .td-text{text-decoration:line-through;color:var(--mut)}
.lines.todo li.od .td-text{color:var(--red)}
.lines.todo .td-date{color:var(--mut);font-size:11px;white-space:nowrap}
.lines.todo .td-ops{display:flex;gap:4px}

/* 工具条/筛选/分段 */
.bar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.filters select,.filters input{width:auto;min-width:120px}
.filters .search-wrap{position:relative;display:inline-flex;align-items:center}
.filters .search-wrap input{padding-right:26px}
.filters .search-clear{position:absolute;right:8px;color:var(--mut);font-size:16px;line-height:1;text-decoration:none;padding:2px}
.filters .search-clear:hover{color:var(--ink)}
.seg{display:inline-flex;background:#eef1f7;border-radius:10px;padding:3px;gap:2px}
.seg button{background:none;color:var(--mut);padding:6px 13px;font-size:12px;border-radius:8px;box-shadow:none}
.seg button.on{background:#fff;color:var(--blue-d);font-weight:600;box-shadow:var(--shadow)}
.addbox{display:flex;gap:8px;margin-bottom:14px}
.addbox input{flex:1}
.addbox select{width:auto}

/* 卡片网格 */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:15px;display:flex;flex-direction:column;gap:9px;box-shadow:var(--shadow);transition:.15s}
.card:hover{transform:translateY(-2px);border-color:var(--blue)}
.card.idea{background:var(--card)}
.card-h{display:flex;align-items:center;gap:8px;font-weight:600}
.card-h .ci{font-size:18px;width:26px;height:26px;display:flex;align-items:center;justify-content:center;background:#f3f5f9;border-radius:8px;flex-shrink:0}
.card-s{display:flex;gap:8px;align-items:center}
.card-c{color:var(--mut);font-size:12px;line-height:1.6;min-height:18px;overflow-wrap:anywhere}
.counts{display:flex;gap:10px;font-size:12px;color:var(--mut);flex-wrap:wrap}
.card-f{display:flex;gap:14px;font-size:12px;border-top:1px solid #f1f3f7;padding-top:10px}
.card-f a{color:var(--blue);display:inline-flex;align-items:center;gap:4px}
.card-f a.del{color:var(--red)}
.card-f a.pub{color:var(--green);font-weight:600}

/* 灵感卡片富文本预览 */
.rich{overflow-wrap:anywhere;line-height:1.6}
.rich img{max-width:100%;border-radius:8px;margin:4px 0}
.rich audio,.rich video{max-width:100%;margin:4px 0}
.rich a{color:var(--blue)}
/* Quill 编辑器容器 */
.ql-editor-host{background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm);min-height:150px}
.ql-toolbar.ql-snow{border:1px solid var(--line);border-radius:var(--radius-sm) var(--radius-sm) 0 0;padding:8px}
.ql-container.ql-snow{border:none}
.ql-voice{font-size:15px;width:auto;padding:0 8px;background:transparent;border:none;cursor:pointer}
.ql-voice:hover{background:#f3f5f9;border-radius:6px}

/* 徽章 */
.badge{display:inline-flex;align-items:center;gap:3px;font-size:11px;padding:3px 9px;border-radius:999px;background:#eef1f7;color:var(--ink);font-weight:500}
.badge.sm{font-size:10px;padding:2px 7px}
.badge.unread{background:#e6efff;color:#1d4ed8}
.badge.read{background:#eef1f7;color:#6b7280}
.badge.used{background:#e7f7ef;color:#0a7a4a}
.badge.star{background:#fef3e0;color:#b66a00}
.badge.draft{background:#eef1f7;color:#6b7280}
.badge.published{background:#e7f7ef;color:#0a7a4a}
.badge.failed{background:#fdeaea;color:#b42323}
.badge.pending{background:#fef3e0;color:#b66a00}
.badge.fixing{background:#e6efff;color:#1d4ed8}
.badge.fixed{background:#e7f7ef;color:#0a7a4a}
.badge.verified{background:#e7f7ef;color:#0a7a4a}
.badge.closed{background:#eef1f7;color:#6b7280}
.badge.warn{background:#fef3e0;color:#b66a00}
.badge.high,.badge.fatal{background:#fdeaea;color:#b42323}
.badge.mid,.badge.serious{background:#fef3e0;color:#b66a00}
.badge.low,.badge.minor,.badge.optimize{background:#eef1f7;color:#6b7280}
.ver{font-size:11px;color:var(--mut)}

/* 表格 */
.tbl-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{text-align:left;color:var(--mut);font-weight:600;padding:10px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:11px 8px;border-bottom:1px solid #f1f3f7;vertical-align:top}
.tbl tr:hover td{background:#fafbfd}
.tbl .lt{color:var(--blue)}
.tbl .desc{color:var(--mut);font-size:11px;margin-top:3px;max-width:420px;overflow-wrap:anywhere}
.tbl .meta{color:var(--mut);white-space:nowrap}
.tbl .ops a{margin-right:10px;color:var(--blue);font-size:12px}
.tbl .ops a.del{color:var(--red)}
.batchbar{display:flex;gap:10px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 14px;margin-top:12px;flex-wrap:wrap}

/* 常用网址 */
.grid.sm.bm{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
.bm-item{display:flex;justify-content:space-between;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;box-shadow:var(--shadow)}
.bm-link{display:flex;align-items:center;gap:8px;font-size:13px;min-width:0;overflow:hidden}
.bm-link span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bm-ic{font-size:16px}
.bm-ops{display:flex;gap:6px;flex-shrink:0}
.bm-ops a{color:var(--blue);font-size:12px}
.bm-ops a.del{color:var(--red)}

/* 监控账号行 */
.acc-row{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.acc-row input,.acc-row select{width:auto;flex:1}

/* 平台凭证行 */
.cred-row{display:flex;gap:10px;align-items:center;margin-bottom:10px;flex-wrap:wrap}
.cred-row label{min-width:140px;font-size:13px;font-weight:500}
.cred-row input{flex:1;min-width:180px}

/* 趋势折线 */
.spark{width:100%;height:40px;margin-top:8px;display:block}
.trend{margin-top:14px;padding-top:14px;border-top:1px dashed var(--line)}
.spark polyline{vector-effect:non-scaling-stroke}

/* 错误提示 */
small.err{display:block;margin-top:4px;color:var(--red);font-size:11px;line-height:1.4}

/* 模态 / 居中弹窗（强制隐藏保证不被误显） */
.modal.hidden{display:none!important}
.modal{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center}
.modal .mask{position:absolute;inset:0;background:rgba(17,24,39,.4);backdrop-filter:blur(1px)}
.sheet{position:relative;background:#fff;width:92%;max-width:520px;border-radius:16px;padding:20px;animation:pop .22s ease;box-shadow:var(--shadow-lg);max-height:84vh;display:flex;flex-direction:column}
@keyframes pop{from{transform:scale(.96);opacity:.5}to{transform:none;opacity:1}}
.sheet-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;cursor:move;user-select:none}
.sheet-h strong{font-size:16px}
.sheet-h .x{width:34px;height:34px;padding:0;display:flex;align-items:center;justify-content:center;background:#f3f5f9;color:var(--mut);border-radius:50%}
.sheet-h .x:hover{background:var(--line);color:var(--ink)}
.sheet-b{overflow:auto;display:flex;flex-direction:column;gap:12px;max-height:60vh}
.sheet-f{margin-top:14px;text-align:right;display:flex;gap:8px;justify-content:flex-end}
.row{display:flex;gap:10px;align-items:center}
.row .grow{flex:1}

/* 悬浮按钮（移动端） */
.fab{display:none;position:fixed;right:18px;bottom:84px;z-index:40;flex-direction:column;align-items:flex-end;gap:12px}
.fab.open .fab-list{display:flex}
.fab-list{display:none;flex-direction:column;gap:12px;align-items:flex-end}
.fab-main{width:56px;height:56px;border-radius:50%;font-size:26px;background:var(--blue);color:#fff;box-shadow:var(--shadow-lg);display:flex;align-items:center;justify-content:center;padding:0}
.fab-item{width:auto;padding:11px 15px;border-radius:999px;box-shadow:var(--shadow);display:flex;align-items:center;gap:7px;background:#fff;color:var(--ink);font-size:13px;font-weight:500;text-decoration:none}
.fab-sep{display:block;width:34px;height:1px;background:var(--line);margin:2px 0}

/* 提示条 */
.toast{position:fixed;left:50%;bottom:96px;transform:translateX(-50%);background:#1f2937;color:#fff;padding:11px 18px;border-radius:12px;font-size:13px;z-index:60;opacity:0;pointer-events:none;transition:opacity .2s;box-shadow:var(--shadow-lg)}
.toast.show{opacity:.96}

/* 日历 */
.cal{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow);max-width:420px}
.cal-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.cal-h .mt{font-weight:600;font-size:14px}
.cal-h button{background:#f3f5f9;color:var(--ink);padding:5px 10px;font-size:12px;border-radius:8px}
.cal-h button:hover{background:var(--line)}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal-dow{font-size:11px;color:var(--mut);text-align:center;padding:6px 0;font-weight:500}
.cal-cell{aspect-ratio:1/1;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:12px;border-radius:8px;cursor:pointer;position:relative;transition:.15s;min-height:44px}
.cal-cell:hover{background:#f3f5f9}
.cal-cell.muted{color:#cbd2dc;cursor:default}
.cal-cell.muted:hover{background:transparent}
.cal-cell.today{background:rgba(79,124,255,.12);color:var(--blue-d);font-weight:700}
.cal-cell.has::after{content:"";position:absolute;bottom:6px;width:5px;height:5px;border-radius:50%;background:var(--blue)}
.cal-cell.has.todo::after{background:var(--amber)}
.cal-cell.has.pub::after{background:var(--green)}
.cal-cell.sel{outline:2px solid var(--blue)}
.cal-detail{margin-top:14px;padding-top:12px;border-top:1px solid #f1f3f7}
.cal-detail h4{margin:0 0 8px;font-size:13px;color:var(--mut)}
.cal-detail ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.cal-detail li{font-size:12px;display:flex;align-items:center;gap:8px}
.cal-detail li.done{text-decoration:line-through;color:var(--mut)}
.cal-detail .empty{font-size:12px;color:var(--mut)}

/* 移动端 */
.botnav{display:none}
@media(max-width:900px){
  .grid,.grid.sm{grid-template-columns:repeat(2,1fr)}
  .pub{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:768px){
  #app{flex-direction:column}
  .side{display:none}
  .main{padding:16px;padding-bottom:80px}
  .grid,.grid.sm{grid-template-columns:repeat(2,1fr)}
  .pub{grid-template-columns:repeat(2,1fr)}
  .two{grid-template-columns:1fr}
  .botnav{display:flex;position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--line);justify-content:space-around;padding:8px 0;z-index:30;box-shadow:0 -2px 10px rgba(0,0,0,.05)}
  .botnav a{display:flex;flex-direction:column;align-items:center;font-size:11px;color:var(--mut);text-decoration:none;gap:3px}
  .botnav a span{font-size:18px;display:flex}
  .botnav a.on{color:var(--blue)}
  .fab{display:flex}
  .filters select,.filters input{min-width:90px;flex:1}
  .addbox{flex-direction:column}
  .sheet{width:96%;max-width:96vw}
  .lines.todo li{grid-template-columns:auto 1fr auto;grid-template-rows:auto auto;gap:6px 10px}
  .lines.todo .td-date,.lines.todo .td-pri,.lines.todo .td-ops{grid-column:3}
  .lines.todo .td-text{grid-column:2/4}
}

.prog{height:10px;background:#eef1f7;border-radius:999px;overflow:hidden}
.prog .fill{height:100%;background:linear-gradient(90deg,var(--blue),var(--teal));border-radius:999px;transition:width .3s}

/* ===== 首页改造（教育蓝 · v10） ===== */
/* 双栏：左待办 / 右日历 */
.hp-grid2{display:grid;grid-template-columns:minmax(420px,1.9fr) minmax(320px,1.1fr);gap:16px;margin-top:16px}
.hp-grid2 .sec{margin-top:0}
.hp-sec-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px}
.hp-sec-head h3{margin:0}
@media(max-width:900px){.hp-grid2{grid-template-columns:1fr}}

/* 待办行：优先级徽标 */
.lines.todo .td-pri{flex-shrink:0}
.pri{display:inline-block;font-size:11px;padding:1px 8px;border-radius:999px;font-weight:600;white-space:nowrap}
.pri-high{background:#fdeaea;color:#b42323}
.pri-mid{background:#eef1f7;color:#6b7280}
.pri-low{background:#e7f7ef;color:#0a7a4a}
.td-date{color:var(--mut);font-size:11px;white-space:nowrap}

/* 日历单元格 hover 出现「+」新增 */
.cal-cell .cal-add{position:absolute;top:3px;right:3px;width:15px;height:15px;border-radius:50%;background:var(--blue);color:#fff;font-size:12px;line-height:15px;text-align:center;opacity:0;cursor:pointer;transition:.15s;z-index:2}
.cal-cell:hover .cal-add{opacity:1}
.cal-cell .cal-add:hover{background:var(--blue-d)}
.cal-cell.sel{outline:2px solid var(--blue);background:rgba(26,111,209,.08)}

/* 自媒体工作专区 */
.hp-media{display:grid;grid-template-columns:1.15fr 2fr;gap:14px;margin-top:14px}
.hp-transcribe{background:var(--grad-media);color:#fff;border-radius:var(--radius-sm);padding:16px;display:flex;flex-direction:column;justify-content:space-between;gap:12px;min-height:130px;box-shadow:var(--shadow)}
.hp-transcribe h4{margin:0;font-size:15px;font-weight:600}
.hp-transcribe p{margin:0;font-size:12px;opacity:.92;line-height:1.6}
.hp-transcribe .btn{background:#fff;color:var(--media);align-self:flex-start;box-shadow:none}
.hp-transcribe .btn:hover{background:#f0f9ff}
.hp-tools{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.hp-tool{background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px;display:flex;align-items:center;gap:12px;cursor:pointer;transition:.15s;color:var(--ink);text-decoration:none;box-shadow:var(--shadow)}
.hp-tool:hover{border-color:var(--media);transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.hp-tool .ti{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:rgba(14,154,216,.1);color:var(--media);flex-shrink:0;transition:.15s}
.hp-tool:hover .ti{background:var(--media);color:#fff}
.hp-tool strong{display:block;font-size:14px;margin-bottom:2px;font-weight:600}
.hp-tool span{font-size:12px;color:var(--mut)}
.hp-tool .arr{margin-left:auto;color:var(--mut);font-size:16px}
@media(max-width:768px){.hp-media{grid-template-columns:1fr}.hp-tools{grid-template-columns:1fr}}

/* 自媒体工作专区 · 接入真实功能 */
.hp-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:12px 0}
.hp-stat{background:#f6fafe;border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px;text-align:center}
.hp-stat b{display:block;font-size:20px;color:var(--blue);font-weight:700;line-height:1.2}
.hp-stat span{font-size:12px;color:var(--mut)}
.hp-publish{background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px;display:flex;flex-direction:column;gap:8px;box-shadow:var(--shadow)}
.hp-publish h4{margin:0 0 2px;font-size:14px;font-weight:600}
.hp-publish select,.hp-publish textarea{width:100%}
.hp-publish .row{display:flex;gap:8px}
.hp-publish .row button{flex:1}
.hp-transcribe .row{display:flex;gap:8px;margin-top:8px}
.hp-transcribe .row select{flex:1}
.hp-transcribe input{width:100%}
.hp-materials{margin-top:14px}
.hp-materials .lines .td-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hp-materials .lines li{display:flex;align-items:center;gap:8px}
.note{padding:10px 12px;border-radius:var(--radius-sm);font-size:13px;margin:10px 0;line-height:1.6}
.note.warn{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412}
.badge.published{background:#e7f8f0;color:#0a9b6e;border:1px solid #b6ebd4}
@media(max-width:768px){.hp-stats{grid-template-columns:repeat(2,1fr)}}

/* 编辑待办模态 */
#editTodoModal .fld{margin-bottom:11px}
#editTodoModal label{font-size:12px;color:var(--mut);display:block;margin-bottom:5px;font-weight:500}
#editTodoModal .row .grow{flex:1}

.hidden{display:none}
