﻿:root{
  --bg:#f5f7fa; --panel:#fff; --ink:#1b2430; --sub:#6c7887; --line:#e7ebf0;
  --blue:#2f6fed; --blue-soft:#eef3ff; --green:#199a63; --amber:#c98a00; --red:#cf4444;
  --radius:13px;
}
*{box-sizing:border-box}
/* 滚动条：细一点、淡一点，并且不占位跳动 */
*{scrollbar-width:thin;scrollbar-color:#d7dfe9 transparent}
*::-webkit-scrollbar{width:12px;height:12px}
*::-webkit-scrollbar-track{background:transparent}
*::-webkit-scrollbar-thumb{background:#d7dfe9;border-radius:12px;border:4px solid transparent;background-clip:content-box}
*::-webkit-scrollbar-thumb:hover{background:#bcc7d6;border:3px solid transparent;background-clip:content-box}
*::-webkit-scrollbar-corner{background:transparent}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);overflow:hidden;
  font:18px/1.6 "Segoe UI","PingFang SC","Microsoft YaHei",system-ui,sans-serif}
button{font:inherit;cursor:pointer}
input,textarea,select{font:inherit;color:inherit}
.hidden{display:none !important}
.muted{color:var(--sub)}
.small{font-size:15px}
.tiny{font-size:14px}
.boot{position:fixed;inset:0;display:grid;place-items:center;color:var(--sub);font-size:19px}

/* 登录 */
.auth{position:fixed;inset:0;display:grid;place-items:center;background:var(--bg)}
.auth-card{width:430px;background:#fff;border:1px solid var(--line);border-radius:20px;
  padding:34px;box-shadow:0 18px 60px rgba(16,24,40,.10);text-align:center}
.auth-logo{width:84px;height:84px;object-fit:contain;margin-bottom:8px}
.auth-card h1{font-size:26px;margin:0 0 6px}
.auth-card .small{margin:0 0 4px}
.auth-card label{text-align:left}
.tabs{display:flex;gap:6px;margin:22px 0 18px;background:#f1f4f8;padding:5px;border-radius:12px}
.tabs button{flex:1;border:0;background:transparent;padding:10px;border-radius:9px;color:var(--sub);font-size:17px}
.tabs button.on{background:#fff;color:var(--ink);box-shadow:0 2px 4px rgba(16,24,40,.08)}
label{display:block;margin-bottom:14px;font-size:16px;color:var(--sub)}
label input{display:block;width:100%;margin-top:6px;padding:11px 13px;border:1px solid var(--line);
  border-radius:11px;background:#fbfcfd;outline:none;color:var(--ink)}
label input:focus{border-color:#b9cdfb;background:#fff}
.btn{border:1px solid var(--line);background:#fff;padding:9px 17px;border-radius:11px;color:var(--ink)}
.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}
.btn.ghost{background:#fff}
.btn.danger{color:var(--red);border-color:#f3c9c7}
.btn.small{padding:5px 12px;font-size:15px;border-radius:9px;width:auto}
.auth-card .btn.primary{width:100%;padding:12px;font-size:18px}
.msg{color:var(--red);font-size:15px;min-height:22px;margin:9px 0 0}

/* 布局 */
.app{display:flex;height:100vh;height:100dvh;overflow:hidden}
.side{width:228px;flex:none;height:100%;background:#fff;border-right:1px solid var(--line);
  display:flex;flex-direction:column;padding:22px 14px;overflow-y:auto}
.brand{display:flex;align-items:center;gap:11px;margin-bottom:22px;padding-left:4px}
.brand-logo{width:40px;height:40px;object-fit:contain;flex:none}
.brand-txt{font-size:20px;font-weight:700;letter-spacing:.3px;line-height:1.1}
.brand-txt span{display:block;font-size:11px;font-weight:500;color:var(--sub);letter-spacing:1.6px;margin-top:2px}
.side nav{display:flex;flex-direction:column;gap:3px}
.side nav button{border:0;background:transparent;text-align:left;padding:14px 16px;border-radius:12px;
  color:#4a5563;font-size:15px;line-height:1.2}
.side nav button:hover{background:#f4f7fb}
.side nav button.on{background:var(--blue-soft);color:var(--blue);font-weight:600}
.side-foot{margin-top:auto;padding:12px 0 0;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:8px}
.me-card{display:flex;align-items:center;gap:10px;width:100%;border:1px solid var(--line);background:#fff;
  border-radius:11px;padding:9px 10px;text-align:left}
.me-card:hover{border-color:#c9dbff;background:#fafcff}
.me-card.on{border-color:var(--blue);background:var(--blue-soft)}
.me-avatar{width:32px;height:32px;border-radius:50%;background:#eef3ff;color:#2f6fed;
  display:grid;place-items:center;font-size:15px;font-weight:600;flex:none}
.me-text{display:flex;flex-direction:column;min-width:0;line-height:1.2}
.me-text b{font-size:14px;color:#3c4655;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.me-text small{font-size:12px;color:#9aa4b2;margin-top:3px;font-family:ui-monospace,Consolas,monospace}
.btn-logout{width:100%;border:1px solid #f3c9c7;background:#fff;color:#cf4444;border-radius:10px;
  padding:8px 10px;font-size:14px}
.btn-logout:hover{background:#fdf3f3;border-color:#e9a8a5}

main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{height:76px;flex:none;display:flex;align-items:center;gap:14px;padding:0 28px;
  background:#fff;border-bottom:1px solid var(--line)}
.topbar h2{font-size:21px;margin:0;font-weight:600}
.owner-switch{display:flex;gap:8px}
.owner-switch select{font-size:15px;padding:6px 10px;border-radius:9px;border:1px solid var(--line);background:#fff}
.theme-btn{margin-left:auto;border:1px solid var(--line);background:#fff;border-radius:20px;padding:5px 16px;
  font-size:14px;color:#4a5563}
.theme-btn:hover{border-color:#c9dbff;background:#fafcff}

/* 日夜切换：从按钮扩散的圆形过渡 */
::view-transition-old(root),
::view-transition-new(root){animation:none;mix-blend-mode:normal}
.view{padding:24px 28px 70px;overflow-y:auto;flex:1;scrollbar-gutter:stable;overscroll-behavior:contain}

/* 通用块 */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:20px}
.row{display:flex;align-items:center;gap:12px}
.spread{display:flex;align-items:center;justify-content:space-between;gap:12px}
.hint{font-size:15px;color:#8b95a3}
.empty{padding:46px;text-align:center;color:#9aa4b2;font-size:17px}
.view-banner{display:flex;align-items:center;gap:10px;background:#fff7e5;border:1px solid #f0d9a3;
  color:#8a5d00;border-radius:11px;padding:10px 16px;font-size:15px;margin-bottom:14px}
.view-banner b{font-weight:600}
.page-narrow{max-width:1000px}

/* 周视图 */
.week-grid{display:flex;gap:20px;align-items:flex-start}
.week-grid .main{flex:1;min-width:0}
.week-wrap{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.week-bar{display:flex;align-items:center;gap:10px;padding:14px 20px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.week-bar .range{font-size:17px;color:#4a5563}
.week-bar .seg{display:flex;border:1px solid var(--line);border-radius:9px;overflow:hidden;font-size:15px}
.week-bar .seg button{border:0;background:#fff;padding:6px 14px;color:var(--sub)}
.week-bar .seg button.on{background:var(--blue);color:#fff}
.week-head{display:grid;grid-template-columns:62px repeat(7,1fr);border-bottom:1px solid var(--line);background:#fcfdfe}
.week-head div{padding:10px 6px;text-align:center;font-size:16px;color:var(--sub)}
.week-head .today{color:var(--blue);font-weight:600}
.week-body{display:grid;grid-template-columns:62px repeat(7,1fr);max-height:calc(100vh - 296px);min-height:420px;overflow-y:auto;padding-bottom:26px}
.hours{position:relative;border-right:1px solid #f1f4f8}
.hours span{position:absolute;right:8px;transform:translateY(-50%);white-space:nowrap}
.hours span.minor{font-size:11px;color:#c6ced8}
.hours span.major{font-size:12.5px;color:#6c7887;font-weight:600}
.hours span.major.end{color:#8b95a3}
.gl{position:absolute;left:0;right:0;height:1px;background:#e6ebf2;pointer-events:none}
.day-col{position:relative;border-right:1px solid #f5f7fa}
.day-col:last-child{border-right:0}
.slot{position:absolute;left:4px;right:4px;border-radius:7px;padding:3px 7px;font-size:13px;
  line-height:1.25;overflow:hidden;cursor:pointer;border-left:4px solid transparent;
  display:flex;flex-direction:column;justify-content:space-between;gap:2px}
.slot.fixed{background:#e8efff;color:#204a99;border-left-color:#2f6fed}
.slot.float{background:#f7f9fc;color:#3c4655;border-left-color:#c3cbd6}
.slot.done{background:#eef7f2;color:#2b7a55;border-left-color:#199a63;text-decoration:line-through;opacity:.75}
.slot.pending{background:#fff8e6;color:#8a5d00;border:2px dashed #d9a520;border-left:4px solid #d9a520}
.slot small{display:block;font-size:11px;opacity:.75}
.slot .s-one{display:flex;gap:5px;font-size:11.5px;line-height:1.3;opacity:.95;min-width:0}
.slot .s-one b{font-weight:600;flex:none}
.slot .s-one span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.slot .s-title{font-size:13px;line-height:1.22;overflow:hidden;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.slot .s-row{display:flex;justify-content:space-between;align-items:flex-end;gap:4px;font-size:11px;opacity:.8;min-width:0}
.slot .s-row .t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.slot .s-row .d{font-weight:600;white-space:nowrap;flex:none;margin-left:auto}
.slot.narrow{padding:2px 5px}
.slot.narrow .s-title{font-size:12px}
.slot.narrow .s-row{font-size:10px}
.slot.narrow .s-one{font-size:11px}

/* 待办侧栏 */
.todo{width:285px;flex:none;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px}
.todo h4{margin:0 0 12px;font-size:17px}
.todo .lab{font-size:14px;color:#9aa4b2;margin:14px 0 6px}
.todo .item{font-size:15px;padding:7px 10px;border-radius:8px;background:#f7f9fc;margin-bottom:4px;
  display:flex;justify-content:space-between;gap:8px;align-items:center}
.todo .item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.todo .item button{border:0;background:none;color:var(--blue);font-size:14px;padding:0 3px}

/* 任务卡片 */
.tf-row{display:flex;gap:8px;flex-wrap:wrap}
.tf{border:1px solid var(--line);background:#fff;border-radius:10px;padding:7px 15px;font-size:15px;color:#4a5563}
.tf:hover{border-color:#c9dbff}
.tf.on{border-color:var(--blue);background:var(--blue-soft);color:var(--blue);font-weight:600}
.tf em{font-style:normal;color:#9aa4b2;margin-left:7px;font-size:13px}
.tf.on em{color:#7ea3f0}
.tf.cat{padding:5px 14px;font-size:14px}
.task-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:14px;align-items:start}
.task-card{position:relative;background:#fff;border:1px solid var(--line);border-radius:13px;
  padding:15px 16px 13px 21px;overflow:hidden;transition:box-shadow .15s,border-color .15s}
.task-card:hover{border-color:#d5dde8;box-shadow:0 5px 16px rgba(16,24,40,.07)}
.task-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:#c3cbd6}
.task-card.cat-study:before{background:#2f6fed}
.task-card.cat-work:before{background:#7c5cff}
.task-card.cat-life:before{background:#199a63}
.task-card.cat-sport:before{background:#e0862e}
.task-card.cat-other:before{background:#9aa4b2}
.task-card.is-done{opacity:.72}
.task-card.is-done h4{text-decoration:line-through;color:#6c7887}
.task-card.is-wait{border-color:#e8c67a;border-style:dashed}
.tc-head{display:flex;gap:10px;align-items:flex-start;justify-content:space-between}
.task-card h4{margin:0;font-size:17px;font-weight:600;line-height:1.35;flex:1;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* 工具栏 + 勾选框 */
.tb-right{display:flex;gap:8px;align-items:center}
.tool-btn{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:#fff;
  border-radius:22px;padding:8px 18px;font-size:15px;color:#3c4655;line-height:1.2}
.tool-btn:hover{border-color:#c9dbff;background:#fafcff}
.tool-btn.danger{color:#cf4444;border-color:#f3c9c7;background:#fff}
.tool-btn.danger:hover{background:#fdf3f3;border-color:#e9a8a5}
.tool-btn[disabled]{opacity:.45;cursor:not-allowed}
.tcheck{width:24px;height:24px;border:2px solid #d6deea;border-radius:5px;background-color:#fff;flex:none;
  padding:0;margin-top:1px;transition:.15s;background-repeat:no-repeat;background-position:center;background-size:13px 13px}
.tcheck:hover{border-color:#199a63;background-color:#f4fbf7}
.tcheck.on,
.tcheck.pick.on{background-color:#199a63;border-color:#199a63;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12l5 5L20 6'/%3E%3C/svg%3E")}
.tcheck.on:hover{background-color:#16875a;border-color:#16875a}
.tcheck.pick{border-color:#cdd7e4;cursor:pointer;background-image:none}
.tcheck.pick.on{background-color:#2f6fed;border-color:#2f6fed;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12l5 5L20 6'/%3E%3C/svg%3E")}
.task-card.sel{border-color:#2f6fed;box-shadow:0 0 0 2px rgba(16,24,40,.06)}
.task-card[data-act]{cursor:pointer}
.load-more{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:20px}

/* 新增任务：绿色边框闪两下，2 秒后移除 */
.task-card.just-added{border-color:#199a63;animation:addedPulse 2s ease-out}
@keyframes addedPulse{
  0%{transform:scale(.97);box-shadow:0 0 0 0 rgba(25,154,99,0)}
  12%{transform:scale(1);box-shadow:0 0 0 5px rgba(25,154,99,.45)}
  32%{box-shadow:0 0 0 0 rgba(25,154,99,.12)}
  54%{box-shadow:0 0 0 5px rgba(25,154,99,.40)}
  74%{box-shadow:0 0 0 0 rgba(25,154,99,.10)}
  100%{transform:scale(1);box-shadow:0 0 0 0 rgba(25,154,99,0)}
}
.slot.just-added{outline:2px solid #199a63;outline-offset:-2px;z-index:3;animation:slotPulse 2s ease-out}
@keyframes slotPulse{
  0%{box-shadow:0 0 0 0 rgba(25,154,99,0)}
  12%{box-shadow:0 0 0 4px rgba(25,154,99,.55)}
  32%{box-shadow:0 0 0 0 rgba(25,154,99,.15)}
  54%{box-shadow:0 0 0 4px rgba(25,154,99,.50)}
  74%{box-shadow:0 0 0 0 rgba(25,154,99,.12)}
  100%{box-shadow:0 0 0 0 rgba(25,154,99,0)}
}
@media (prefers-reduced-motion: reduce){
  .task-card.just-added,.slot.just-added{animation-duration:.01ms}
}
.tc-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:13.5px;color:#8b95a3;margin-top:8px}
.tc-cat:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;
  margin-right:5px;vertical-align:1px;background:#c3cbd6}
.task-card.cat-study .tc-cat:before{background:#2f6fed}
.task-card.cat-work .tc-cat:before{background:#7c5cff}
.task-card.cat-life .tc-cat:before{background:#199a63}
.task-card.cat-sport .tc-cat:before{background:#e0862e}
.tc-sub{color:#a08a4e}
.dur{height:6px;background:#f1f4f8;border-radius:4px;margin-top:13px;overflow:hidden}
.dur i{display:block;height:100%;border-radius:4px;background:#c3cbd6}
.dur i.f-study{background:#2f6fed}
.dur i.f-work{background:#7c5cff}
.dur i.f-life{background:#199a63}
.dur i.f-sport{background:#e0862e}
.dur i.f-other{background:#9aa4b2}
.tc-acts{display:flex;gap:5px;margin-top:12px;opacity:0;transition:.15s}
.task-card:hover .tc-acts{opacity:1}
.chip{font-size:13px;padding:2px 10px;border-radius:20px;border:1px solid;white-space:nowrap}
.c-todo{color:#6c7887;border-color:#e2e8f0;background:#fff}
.c-plan{color:#2f6fed;border-color:#c9dbff;background:#eef3ff}
.c-done{color:#16855a;border-color:#bfe6d3;background:#e9f7f0}
.c-wait{color:#a06b00;border-color:#f0d9a3;background:#fff7e5}
.icon{border:0;background:#f4f7fb;width:30px;height:30px;border-radius:8px;color:#6c7887;font-size:15px}

/* 便签 */
.notes-wrap{display:flex;gap:20px;align-items:flex-start}
.walls{width:240px;flex:none;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:12px}
.walls .w{padding:9px 12px;border-radius:9px;font-size:16px;color:#4a5563;cursor:pointer;
  display:flex;justify-content:space-between;gap:8px}
.walls .w:hover{background:#f4f7fb}
.walls .w.on{background:var(--blue-soft);color:var(--blue);font-weight:600}
.walls .w em{font-style:normal;color:#9aa4b2;font-size:14px}
.walls .sec{font-size:14px;color:#9aa4b2;margin:12px 12px 4px}
.notes-main{flex:1;min-width:0}
.note-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.note{background:#fffbee;border:1px solid #f3e6bf;border-radius:13px;padding:14px;min-height:136px;
  display:flex;flex-direction:column;font-size:16px;color:#6b5a2a;cursor:pointer}
.note p{margin:0 0 9px;flex:1;white-space:pre-wrap;word-break:break-word;overflow:hidden}
.note footer{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:13px;color:#a08a4e}
.note footer select{border:0;background:transparent;font-size:13px;color:#a08a4e;max-width:140px}
.search{width:100%;padding:11px 14px;border:1px solid var(--line);border-radius:11px;background:#fff}

/* 反馈 */
.fb-wrap{display:flex;gap:20px;align-items:flex-start}
.fb-form{flex:1;min-width:0;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:20px}
.fb-hist{width:340px;flex:none;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px}
.fb-hist h4{margin:0 0 12px;font-size:17px}
.fb-item{padding:10px 0;border-bottom:1px dashed var(--line);font-size:15px}
.fb-item:last-child{border-bottom:0}
.fb-item b{display:block;font-size:14px;color:#3c4655}
.fb-item span{color:var(--sub)}
textarea{width:100%;min-height:160px;padding:13px 14px;border:1px solid var(--line);border-radius:11px;
  background:#fbfcfd;outline:none;resize:vertical}
textarea:focus{border-color:#b9cdfb;background:#fff}

/* 关系 / 审核 */
.stack{display:flex;flex-direction:column;gap:14px}
.item{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:17px 20px}
.item .top{display:flex;align-items:center;gap:12px;margin-bottom:7px;flex-wrap:wrap}
.item .top b{font-size:17px}
.item .top .chip{margin-left:auto}
.item .desc{font-size:16px;color:var(--sub)}
.item .acts{display:flex;gap:9px;margin-top:12px;flex-wrap:wrap}
.diff{font-size:15px;margin-top:9px;background:#fafbfd;border-radius:9px;padding:9px 12px}
.diff div{padding:2px 0}
.diff s{color:#b0b8c4}
.diff b{color:#16855a}
.diff .k{display:inline-block;width:68px;color:#9aa4b2}
.form-inline{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}
.form-inline label{margin:0}
.form-inline input,.form-inline select{padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff}

/* QQ 绑定 */
.bind-block{margin:6px 0 4px}
.picks{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:14px 0 18px}
.pick{display:flex;align-items:center;gap:12px;padding:15px 17px;border:2px solid var(--line);
  border-radius:14px;background:#fff;text-align:left;transition:.16s}
.pick:hover{border-color:#c9dbff;background:#fafcff}
.pick.on{border-color:var(--blue);background:#f2f7ff;box-shadow:none}
.pick .dot{width:21px;height:21px;border-radius:50%;border:2px solid #d6deea;flex:none;transition:.16s}
.pick.on .dot{border:6px solid var(--blue)}
.pick .txt{display:flex;flex-direction:column;line-height:1.25}
.pick .txt b{font-size:17px}
.pick .txt small{font-size:13px;color:#9aa4b2;margin-top:2px}
.pick.on .txt b{color:var(--blue)}
.bind-row{display:flex;gap:10px;align-items:center}
.bind-row input{flex:1;padding:12px 14px;border:1px solid var(--line);border-radius:11px;background:#fbfcfd;outline:none}
.bind-row input:focus{border-color:#b9cdfb;background:#fff}
.bind-row .btn{padding:12px 22px;white-space:nowrap}
.qq-tag{display:inline-flex;align-items:center;gap:7px;font-size:15px;color:#3c4655;
  background:#f5f7fa;border:1px solid var(--line);border-radius:8px;padding:4px 11px}
.qq-tag i{font-style:normal;width:7px;height:7px;border-radius:50%;background:var(--blue);display:block}
.mono{font-family:ui-monospace,"Cascadia Mono",Consolas,monospace;font-size:13px;
  background:#f5f7fa;border:1px solid var(--line);border-radius:6px;padding:1px 7px;color:#3c4655}
.pw-form{display:flex;flex-direction:column;gap:10px}
.pw-form input{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:11px;
  background:#fbfcfd;outline:none;color:var(--ink)}
.pw-form input:focus{border-color:#b9cdfb;background:#fff}

/* 账号信息 */
.vc-input{width:120px;font-size:15px;letter-spacing:2px;text-align:center;font-family:ui-monospace,Consolas,monospace;margin:0}
.acct-row{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:16px;color:#3c4655}
.acct-k{color:#9aa4b2;font-size:14px;min-width:56px}
.id-chip{font-family:ui-monospace,"Cascadia Mono",Consolas,monospace;font-size:14px;
  background:#f5f7fa;border:1px solid var(--line);border-radius:7px;padding:3px 10px;color:#3c4655}
.id-chip:hover{background:#eef3ff;border-color:#c9dbff;color:#2f6fed}
.badge-admin{border:1px solid #cf4444;color:#cf4444;background:#fff;border-radius:8px;
  padding:4px 12px;font-size:14px;font-weight:600;white-space:nowrap}

/* 日志 */
.log-people{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.log-person{border:1px solid var(--line);background:#fff;border-radius:10px;padding:7px 16px;
  font-size:15px;color:#4a5563}
.log-person.on{border-color:var(--blue);background:var(--blue-soft);color:var(--blue);font-weight:600}
.log-list{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.log{display:flex;gap:14px;padding:11px 20px;border-bottom:1px solid #f4f6f9;font-size:16px}
.log:last-child{border-bottom:0}
.log time{color:#9aa4b2;font-size:14px;white-space:nowrap;width:158px;flex:none}
.log .a{color:var(--blue);width:140px;flex:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.log .d{color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 选择器 */
.sel{appearance:none;-webkit-appearance:none;border:1px solid var(--line);border-radius:10px;background-color:#fff;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%239aa4b2' stroke-width='2'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 13px center;
  padding:9px 38px 9px 14px;font-size:15px;color:#3c4655;outline:none}
.sel:hover{border-color:#c9dbff}
.sel:focus{border-color:var(--blue);box-shadow:none}

.picker{position:relative}
.picker-btn{display:flex;align-items:center;gap:10px;justify-content:space-between;min-width:172px;
  border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px 14px;font-size:15px;color:#3c4655}
.picker-btn:hover{border-color:#c9dbff;background:#fafcff}
.picker-btn.on{border-color:var(--blue);box-shadow:none}
.chev{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;
  border-top:8px solid #8b95a3;transition:transform .15s;flex:none}
.picker-btn.on .chev{transform:rotate(180deg);border-top-color:var(--blue)}
.picker-menu{position:absolute;top:calc(100% + 6px);left:0;min-width:100%;background:#fff;
  border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 36px rgba(16,24,40,.16);padding:6px;z-index:40}
.picker-item{display:block;width:100%;text-align:left;border:0;background:#fff;border-radius:8px;
  padding:9px 12px;font-size:15px;color:#3c4655;white-space:nowrap}
.picker-item:hover{background:#f4f7fb}
.picker-item.on{background:var(--blue-soft);color:var(--blue);font-weight:600}

/* 弹窗 */
.modal{position:fixed;inset:0;background:rgba(16,24,40,.38);display:grid;place-items:center;z-index:50}
.modal-box{width:520px;max-width:92vw;background:#fff;border-radius:18px;padding:26px;
  box-shadow:0 24px 70px rgba(16,24,40,.25);max-height:86vh;overflow:auto}
.modal-box h3{margin:0 0 16px;font-size:20px}
.modal-box .foot{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}
.modal-box .foot .btn{padding:9px 19px}
.modal-box textarea{min-height:190px}

@media(max-width:1000px){
  .side{width:84px;padding:16px 8px}
  .brand-txt,.me-text{display:none}
  .me-card{justify-content:center;padding:8px}
  .side nav button{font-size:13px;padding:12px 4px;text-align:center}
  .week-grid,.notes-wrap,.fb-wrap{flex-direction:column}
  .todo,.walls,.fb-hist{width:100%}
  .picks{grid-template-columns:1fr}
  .view{padding:16px}
}

/* ================= 夜间模式 ================= */
[data-theme="dark"]{color-scheme:dark;
  --bg:#12161d; --panel:#1a2129; --ink:#e7edf4; --sub:#8d99a8; --line:#2a3341;
  --blue:#4f8dff; --blue-soft:#1b2a44; --green:#35b97a; --amber:#d9a520; --red:#f2706a;
}
[data-theme="dark"] *{scrollbar-color:#39424f transparent}
[data-theme="dark"] *::-webkit-scrollbar-thumb{background:#39424f}
[data-theme="dark"] *::-webkit-scrollbar-thumb:hover{background:#4a5563}

[data-theme="dark"] .side,
[data-theme="dark"] .topbar,
[data-theme="dark"] .card,
[data-theme="dark"] .week-wrap,
[data-theme="dark"] .todo,
[data-theme="dark"] .task-card,
[data-theme="dark"] .walls,
[data-theme="dark"] .fb-form,
[data-theme="dark"] .fb-hist,
[data-theme="dark"] .item,
[data-theme="dark"] .log-list,
[data-theme="dark"] .modal-box,
[data-theme="dark"] .auth-card{background:var(--panel);border-color:var(--line)}

[data-theme="dark"] .side nav button{color:#b9c4d1}
[data-theme="dark"] .side nav button:hover{background:#222b36}
[data-theme="dark"] .side nav button.on{background:var(--blue-soft);color:#8fb6ff}
[data-theme="dark"] .me-card{background:#202832;border-color:var(--line)}
[data-theme="dark"] .me-card:hover{background:#25303c;border-color:#3d5478}
[data-theme="dark"] .me-card.on{background:var(--blue-soft);border-color:var(--blue)}
[data-theme="dark"] .me-avatar{background:#22304a;color:#8fb6ff}
[data-theme="dark"] .me-text b{color:#dfe7ef}
[data-theme="dark"] .btn-logout{background:transparent;border-color:#5a2e2c;color:#f2706a}
[data-theme="dark"] .btn-logout:hover{background:#2c1c1d;border-color:#7d3a37}

[data-theme="dark"] .hint{color:#7f8b99}
[data-theme="dark"] .empty{color:#6f7a88}
[data-theme="dark"] .todo .lab,
[data-theme="dark"] .acct-k,
[data-theme="dark"] .log time{color:#7f8b99}

[data-theme="dark"] input,
[data-theme="dark"] textarea,
[data-theme="dark"] select,
[data-theme="dark"] .search,
[data-theme="dark"] .pw-form input,
[data-theme="dark"] .bind-row input{background:#131920;border-color:var(--line);color:var(--ink)}
[data-theme="dark"] input::placeholder,
[data-theme="dark"] textarea::placeholder{color:#5f6b79}
[data-theme="dark"] .sel{background-color:#131920;color:var(--ink)}

[data-theme="dark"] .btn,
[data-theme="dark"] .tf,
[data-theme="dark"] .tool-btn,
[data-theme="dark"] .picker-btn,
[data-theme="dark"] .picker-item,
[data-theme="dark"] .log-person,
[data-theme="dark"] .theme-btn,
[data-theme="dark"] .icon{background:#202832;border-color:var(--line);color:#cfd8e3}
[data-theme="dark"] .btn:hover,
[data-theme="dark"] .tool-btn:hover,
[data-theme="dark"] .log-person:hover,
[data-theme="dark"] .tf:hover,
[data-theme="dark"] .theme-btn:hover{background:#26303c;border-color:#3d5478}
[data-theme="dark"] .btn.primary,
[data-theme="dark"] .btn.primary:hover{background:var(--blue);border-color:var(--blue);color:#fff}
[data-theme="dark"] .tf.on,
[data-theme="dark"] .log-person.on{background:var(--blue-soft);border-color:var(--blue);color:#8fb6ff}
[data-theme="dark"] .tool-btn.danger{background:transparent;border-color:#5a2e2c;color:#f2706a}
[data-theme="dark"] .tcheck{background-color:#131920;border-color:#3a4553}
[data-theme="dark"] .tcheck:hover{border-color:var(--green);background-color:#1a2a22}
[data-theme="dark"] .tcheck.on,
[data-theme="dark"] .tcheck.pick.on{background-color:var(--green);border-color:var(--green)}

[data-theme="dark"] .week-head{background:#161d25}
[data-theme="dark"] .week-bar .seg button{background:#202832;color:#9aa7b5}
[data-theme="dark"] .week-bar .seg button.on{background:var(--blue);color:#fff}
[data-theme="dark"] .day-col,
[data-theme="dark"] .hours{border-right-color:#232b36}
[data-theme="dark"] .hours span.minor{color:#4d5763}
[data-theme="dark"] .hours span.major{color:#9aa7b5}
[data-theme="dark"] .gl{background:#242d38}
[data-theme="dark"] .slot.fixed{background:#1d2f52;color:#b9d0ff;border-left-color:var(--blue)}
[data-theme="dark"] .slot.float{background:#232b35;color:#c6cfda;border-left-color:#4d5763}
[data-theme="dark"] .slot.done{background:#16301f;color:#7fd3a3;border-left-color:var(--green)}
[data-theme="dark"] .slot.pending{background:#3a2f14;color:#e6c37a;border-color:#8a6a1c;border-left-color:var(--amber)}
[data-theme="dark"] .todo .item{background:#202832}
[data-theme="dark"] .view-banner{background:#332a12;border-color:#5a4a1e;color:#e0c47a}

[data-theme="dark"] .task-card.is-wait{border-color:#5a4a1e}
[data-theme="dark"] .tc-sub{color:#b99a5e}
[data-theme="dark"] .dur{background:#232b36}
[data-theme="dark"] .chip.c-todo{background:#202832;border-color:#2f3a47;color:#9aa7b5}
[data-theme="dark"] .chip.c-plan{background:#1b2a44;border-color:#2c4a7a;color:#8fb6ff}
[data-theme="dark"] .chip.c-done{background:#14301f;border-color:#24523a;color:#6fd39b}
[data-theme="dark"] .chip.c-wait{background:#33270f;border-color:#5a4a1e;color:#e0c47a}

[data-theme="dark"] .note{background:#2a2418;border-color:#4a3f22;color:#d8c89a}
[data-theme="dark"] .note footer,
[data-theme="dark"] .note footer select{color:#a08a4e}
[data-theme="dark"] .walls .w{color:#b9c4d1}
[data-theme="dark"] .walls .w:hover{background:#222b36}
[data-theme="dark"] .walls .w.on{background:var(--blue-soft);color:#8fb6ff}

[data-theme="dark"] .fb-item b{color:#dfe7ef}
[data-theme="dark"] .diff{background:#151c24}
[data-theme="dark"] .diff b{color:#6fd39b}
[data-theme="dark"] .log .a{color:#8fb6ff}
[data-theme="dark"] .log .d{color:#8d99a8}
[data-theme="dark"] .id-chip,
[data-theme="dark"] .mono,
[data-theme="dark"] .qq-tag{background:#202832;border-color:var(--line);color:#cfd8e3}
[data-theme="dark"] .id-chip:hover{background:var(--blue-soft);border-color:var(--blue);color:#8fb6ff}
[data-theme="dark"] .badge-admin{background:transparent;border-color:#7d3a37;color:#f2706a}
[data-theme="dark"] .picker-menu{background:#202832;border-color:var(--line);box-shadow:0 14px 36px rgba(0,0,0,.55)}
[data-theme="dark"] .picker-item.on{background:var(--blue-soft);color:#8fb6ff}
[data-theme="dark"] .modal{background:rgba(0,0,0,.6)}

[data-theme="dark"] .auth{background:var(--bg)}
[data-theme="dark"] .tabs{background:#151c24}
[data-theme="dark"] .tabs button.on{background:#232c37;color:var(--ink);box-shadow:none}
[data-theme="dark"] .task-card.just-added{border-color:var(--green)}

[data-theme="dark"] .pick{background:#202832;border-color:var(--line);color:#cfd8e3}
[data-theme="dark"] .pick:hover{background:#26303c;border-color:#3d5478}
[data-theme="dark"] .pick.on{background:var(--blue-soft);border-color:var(--blue)}
[data-theme="dark"] .pick .dot{border-color:#3a4553}
[data-theme="dark"] .bind-row input{background:#131920}
