:root{--ink:#25223a;--muted:#837e91;--faint:#aaa5b5;--line:#e8e4ed;--ground:#f8f7fa;--paper:#fffefd;--violet:#7464bd;--deep:#45367d;--lav:#edeafa;--pink:#fcedf1;--rose:#c96781;--green:#327f68;--yellow:#e6b948;--danger:#c65d71;--shadow:0 15px 45px rgba(42,31,80,.07)}
*{box-sizing:border-box} body{margin:0;background:var(--ground);color:var(--ink);font-family:Manrope,"Noto Sans SC",sans-serif;font-size:14px;line-height:1.55}.hidden{display:none!important}.mobile-only{display:none}
button,input,textarea,select{font:inherit}button{cursor:pointer;border:0;background:none;color:inherit}input,textarea,select{width:100%;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);padding:10px 11px;outline:0;transition:.18s}input:focus,textarea:focus,select:focus{border-color:var(--violet);box-shadow:0 0 0 3px rgba(116,100,189,.12)}textarea{resize:vertical;min-height:86px}label{display:block;font-size:12px;font-weight:700;color:#615b70;margin:14px 0 5px}.muted{color:var(--muted)}
.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 75% 18%,#e9e4ff 0,transparent 27%),radial-gradient(circle at 22% 75%,#f8e5ea 0,transparent 25%),var(--ground)}.login-card{width:min(100%,410px);padding:42px;background:rgba(255,254,253,.85);border:1px solid rgba(255,255,255,.8);box-shadow:0 24px 70px rgba(58,40,96,.13);border-radius:24px}.mark{display:grid;place-items:center;width:48px;height:48px;border-radius:15px;background:var(--violet);color:#fff;font-family:"Noto Serif SC",serif;font-size:20px;font-weight:700;box-shadow:5px 5px 0 #d8d1f1}.mark.small{width:35px;height:35px;border-radius:11px;font-size:15px;box-shadow:none}.eyebrow,.nav-label,.section-kicker{font-family:"DM Mono",monospace;letter-spacing:.12em;font-size:10px;color:var(--violet);font-weight:500}.login-card h1{font-family:"Noto Serif SC",serif;font-size:29px;margin:25px 0 4px;letter-spacing:-.04em}.login-card .muted{margin:0 0 18px}.form-error{min-height:19px;color:var(--danger);font-size:12px;margin:10px 0 0}
.button{display:inline-flex;align-items:center;justify-content:center;gap:12px;border-radius:10px;padding:11px 15px;font-weight:800;font-size:13px;transition:.18s}.button:hover{transform:translateY(-1px)}.button.primary{background:var(--violet);color:#fff;box-shadow:0 8px 18px rgba(86,69,155,.18)}.button.soft{background:var(--lav);color:var(--deep)}.button.ghost{border:1px solid var(--line);background:#fff}.button.life{background:var(--pink);color:#944a62}.button.danger{color:var(--danger);border:1px solid #f0d9df;background:#fff}.button.wide{width:100%;margin-top:17px}.button.small{padding:7px 10px;font-size:12px}.text-button{font-size:12px;color:var(--muted);padding:0}.icon-button{display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--line);border-radius:9px;background:#fff}
.shell{display:flex;min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:235px;background:#fffefd;border-right:1px solid var(--line);padding:27px 15px 19px;display:flex;flex-direction:column;z-index:5}.side-brand{display:flex;align-items:center;gap:12px;padding:0 10px 34px}.side-brand strong,.side-brand span{display:block}.side-brand strong{font-family:"Noto Serif SC",serif;font-size:16px}.side-brand span{font-family:"DM Mono",monospace;font-size:9px;color:var(--muted);letter-spacing:.07em;margin-top:-2px}.nav-label{margin:15px 11px 7px}.nav-item{width:100%;border-radius:9px;padding:10px 11px;text-align:left;font-weight:700;color:#635d70;display:flex;gap:11px;align-items:center;margin:2px 0}.nav-item i{font-style:normal;font-size:17px;width:18px;text-align:center;color:#807a8c}.nav-item:hover{background:#f7f5fa}.nav-item.active{background:var(--lav);color:var(--deep)}.nav-item.active i{color:var(--violet)}.nav-item.life.active{background:var(--pink);color:#944a62}.sidebar-bottom{margin-top:auto;border-top:1px solid var(--line);padding:16px 10px 0}.sidebar-bottom span{display:block;margin-top:15px;font-family:"DM Mono",monospace;font-size:9px;color:#aaa5b3}.main{margin-left:235px;width:calc(100% - 235px);min-height:100vh}.topbar{height:65px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,4vw,56px);background:rgba(248,247,250,.83);backdrop-filter:blur(10px);position:sticky;top:0;z-index:3}.crumb{font-size:12px;color:var(--muted);font-weight:700}.crumb b{color:#c6c1ce;margin:0 6px}.top-date{font-family:"DM Mono",monospace;font-size:11px;color:#716b7d}.view{max-width:1320px;padding:42px clamp(20px,4vw,56px) 65px;margin:auto}
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:30px}.page-head h1{font-family:"Noto Serif SC",serif;font-size:31px;letter-spacing:-.045em;line-height:1.17;margin:5px 0 0}.page-head p{margin:5px 0 0;color:var(--muted);font-size:13px}.head-actions{display:flex;gap:9px;align-items:center}.date-input{width:auto;min-width:150px;padding:11px 12px;font-size:14px}.card{background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.card-pad{padding:21px}.section-title{display:flex;align-items:baseline;justify-content:space-between;gap:14px;margin-bottom:15px}.section-title h2{font-size:15px;margin:0;letter-spacing:-.02em}.section-title small{font-family:"DM Mono",monospace;color:var(--muted);font-size:10px}.today-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:18px}.today-hero{padding:29px;background:linear-gradient(135deg,#433574,#7868be);color:#fff;border:0;min-height:205px;position:relative;overflow:hidden}.today-hero:after{content:"";position:absolute;width:210px;height:210px;border:1px solid rgba(255,255,255,.17);border-radius:50%;right:-80px;top:-75px;box-shadow:0 0 0 25px rgba(255,255,255,.06),0 0 0 50px rgba(255,255,255,.04)}.today-hero .section-kicker{color:#d6cef7}.today-hero h2{font-family:"Noto Serif SC",serif;font-size:28px;line-height:1.28;margin:13px 0 3px;max-width:460px;position:relative;z-index:1}.today-hero p{opacity:.76;margin:0;position:relative;z-index:1}.today-hero .button{margin-top:21px;position:relative;z-index:1;background:#fff;color:var(--deep)}.today-side{padding:22px}.mini-stat{padding:9px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.mini-stat:last-child{border:0}.mini-stat b{font-family:"DM Mono",monospace;font-size:18px;color:var(--deep)}.mini-stat span{color:var(--muted);font-size:12px}.agenda-list{display:grid;gap:8px}.agenda-item{border-left:3px solid var(--violet);background:#faf9fc;padding:9px 11px;border-radius:0 9px 9px 0;display:flex;gap:10px;align-items:flex-start}.agenda-item time{font-family:"DM Mono",monospace;color:var(--violet);font-size:10px;padding-top:2px;min-width:42px}.agenda-item b{font-size:12px}.agenda-item p{font-size:11px;margin:1px 0 0;color:var(--muted)}.empty{padding:24px 5px;color:var(--muted);font-size:12px;text-align:center}.two-col{display:grid;grid-template-columns:1.1fr .9fr;gap:18px;margin-top:18px}
.filter-row{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:17px}.filter-chips{display:flex;gap:6px;flex-wrap:wrap}.filter-chip{padding:7px 10px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--muted);font-size:11px;font-weight:800}.filter-chip.active{border-color:#cbc4ec;background:var(--lav);color:var(--deep)}.task-layout{display:grid;grid-template-columns:1fr 1.05fr;gap:18px}.task-list{overflow:hidden}.task-row{display:grid;grid-template-columns:21px 1fr auto;align-items:center;gap:10px;padding:13px 4px;border-bottom:1px solid var(--line)}.task-row:last-child{border:0}.task-check{width:18px;height:18px;border:1.5px solid #c9c4d1;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:11px}.task-check.done{background:var(--green);border-color:var(--green)}.task-row.done .task-name{text-decoration:line-through;color:var(--faint)}.task-name{font-weight:700;font-size:13px}.task-meta{font-family:"DM Mono",monospace;color:var(--muted);font-size:10px;margin-top:2px}.task-tags{display:flex;align-items:center;gap:5px}.tag{font-family:"DM Mono",monospace;font-size:9px;padding:3px 5px;background:#f1eff5;color:#766f82;border-radius:4px}.tag.life{background:var(--pink);color:#a1586e}.task-row .task-actions{opacity:0;transition:.15s}.task-row:hover .task-actions{opacity:1}.task-actions button{font-size:13px;color:var(--muted);padding:4px}.calendar-card{padding:0;overflow:hidden}.calendar-top{padding:17px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.calendar-top h2{font-size:14px;margin:0}.calendar-top small{display:block;color:var(--muted);font-size:10px;margin-top:2px}.time-grid{display:grid;grid-template-columns:46px 1fr;max-height:650px;overflow:auto}.times{display:grid;grid-template-rows:repeat(25,48px);padding-top:0}.time-label{font-family:"DM Mono",monospace;font-size:9px;color:#a6a0af;text-align:right;padding:0 8px 0 0;transform:translateY(-7px)}.day-grid{position:relative;display:grid;grid-template-rows:repeat(25,48px);background:repeating-linear-gradient(to bottom,transparent 0 47px,#eeeaf1 47px 48px);min-height:1200px}.drop-slot{grid-column:1;position:relative;z-index:0}.drop-slot.drag-over{background:rgba(116,100,189,.13)}.schedule-card{z-index:1;margin:3px 8px;padding:7px 9px;border-radius:8px;background:#eeeafd;border-left:3px solid var(--violet);cursor:grab;overflow:hidden}.schedule-card.waiting{background:#fff4dc;border-left-color:var(--yellow)}.schedule-card.life{background:#fcebf0;border-left-color:#d47c94}.schedule-card b{font-size:11px;display:block;line-height:1.3}.schedule-card span{font-family:"DM Mono",monospace;font-size:9px;color:#746d84}.calendar-hint{padding:10px 18px;border-top:1px solid var(--line);font-size:10px;color:var(--muted)}
.tabs{display:flex;gap:18px;border-bottom:1px solid var(--line);margin-bottom:23px}.tab{padding:0 2px 10px;color:var(--muted);font-size:12px;font-weight:800;border-bottom:2px solid transparent}.tab.active{color:var(--deep);border-color:var(--violet)}.okr-summary{display:grid;grid-template-columns:1.35fr .65fr;gap:18px}.score-panel{padding:25px;background:linear-gradient(135deg,#fffefd,#f3f0fc)}.score-top{display:flex;justify-content:space-between;align-items:flex-start}.score-number{font-family:"Noto Serif SC",serif;font-size:57px;letter-spacing:-.09em;color:var(--deep);line-height:1}.score-number small{font-family:Manrope,sans-serif;font-size:16px;letter-spacing:0;color:var(--muted)}.progress-line{height:7px;background:#dfd9ee;border-radius:5px;overflow:hidden;margin:22px 0 9px}.progress-line i{height:100%;display:block;background:linear-gradient(90deg,var(--violet),#a399dc);border-radius:inherit}.score-caption{display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}.warning-box{padding:20px;background:#fffaf0;border-color:#f2e2bd}.warning-box h3{font-size:14px;margin:0 0 7px}.warning-box p{font-size:12px;color:#756a57;margin:0 0 13px}.okr-history{display:flex;gap:8px;flex-wrap:wrap;margin:22px 0}.month-pill{border:1px solid var(--line);border-radius:9px;padding:8px 9px;min-width:74px;background:#fff;text-align:left}.month-pill b{display:block;font-family:"DM Mono",monospace;font-size:10px;color:var(--muted)}.month-pill span{font-size:14px;font-weight:800}.month-pill.active{border-color:var(--violet);background:var(--lav)}.objective-list{display:grid;gap:12px}.objective{padding:17px}.objective-head{display:flex;gap:12px;justify-content:space-between;align-items:flex-start}.objective h3{font-size:14px;margin:0}.objective p{margin:2px 0 0;font-size:11px;color:var(--muted)}.score-badge{font-family:"DM Mono",monospace;font-size:12px;border-radius:999px;padding:5px 7px;background:#e7f4ef;color:var(--green);white-space:nowrap}.score-badge.low{background:#fff0f2;color:var(--danger)}.kr{margin-top:12px}.kr-label{display:flex;justify-content:space-between;gap:8px;font-size:11px;color:#696377}.kr-label b{color:var(--ink)}.kr .progress-line{margin:5px 0 0;height:5px}.report-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.report-field{padding:13px;background:#fbfafd;border:1px solid #eeeaf2;border-radius:11px}.report-field label{margin:0 0 5px;color:var(--violet)}.report-field textarea{background:#fff;min-height:90px;font-size:12px}.work-note{margin-top:18px}.work-note textarea{min-height:72px}.note-list{margin-top:14px;display:grid;gap:7px}.note-item{border-left:3px solid #d3cdea;padding:7px 10px;background:#fbfafd;border-radius:0 7px 7px 0;font-size:11px}.note-item time{font-family:"DM Mono",monospace;color:var(--muted);font-size:9px;margin-right:6px}
.life-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:18px}.life-hero{padding:27px;background:linear-gradient(145deg,#fff4f6,#fffefd);min-height:250px}.life-hero h2{font-family:"Noto Serif SC",serif;font-size:25px;margin:8px 0}.sleep-time{font-family:"DM Mono",monospace;font-size:30px;color:#a55a71;margin:17px 0 4px}.checkin-button{margin-top:10px}.food-choice{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:13px}.food-choice button{padding:12px;border-radius:10px;border:1px solid var(--line);text-align:left;background:#fff;font-size:12px;font-weight:700}.food-choice button.active{background:var(--pink);border-color:#efbdca;color:#91475f}.food-choice small{display:block;color:var(--muted);font-weight:500;margin-top:2px}.emotion-card{padding:23px}.emotion-card h2{font-family:"Noto Serif SC",serif;font-size:21px;margin:5px 0}.emotion-card>p{color:var(--muted);font-size:12px;margin:0 0 16px}.reflection-step{display:grid;grid-template-columns:26px 1fr;gap:10px;margin:11px 0}.reflection-num{width:25px;height:25px;display:grid;place-items:center;border-radius:50%;background:var(--pink);color:#a45a70;font-family:"DM Mono",monospace;font-size:10px}.reflection-step label{margin:1px 0 4px}.reflection-step textarea{min-height:66px;font-size:12px}
.modal-backdrop{position:fixed;inset:0;background:rgba(35,29,52,.36);z-index:10;display:grid;place-items:center;padding:20px;backdrop-filter:blur(3px)}.modal{width:min(100%,540px);max-height:90vh;overflow:auto;background:#fffefd;border-radius:18px;box-shadow:0 30px 90px rgba(30,20,61,.28);padding:23px}.modal-head{display:flex;justify-content:space-between;align-items:start;margin-bottom:13px}.modal h2{font-family:"Noto Serif SC",serif;font-size:22px;margin:0}.close-modal{font-size:22px;color:var(--muted);line-height:1}.kind-switch{display:flex;gap:7px;margin:15px 0}.kind-switch button{flex:1;border:1px solid var(--line);border-radius:9px;padding:9px;font-size:12px;font-weight:800;color:var(--muted)}.kind-switch button.active{border-color:#cbc4ec;background:var(--lav);color:var(--deep)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-grid label{margin-top:10px}.conflict-box{margin-top:13px;padding:12px;border-radius:10px;border:1px solid #f0d4db;background:#fff7f8;color:#963d55;font-size:12px}.conflict-box p{margin:0 0 7px}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:20px}.toast{position:fixed;z-index:30;left:50%;bottom:26px;transform:translate(-50%,20px);background:var(--ink);color:#fff;border-radius:999px;padding:10px 15px;font-size:12px;opacity:0;pointer-events:none;transition:.23s;box-shadow:var(--shadow)}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:900px){.sidebar{transform:translateX(-105%);transition:.22s;box-shadow:15px 0 40px rgba(32,24,65,.12)}.sidebar.open{transform:translateX(0)}.mobile-overlay{display:none;position:fixed;inset:0;background:rgba(31,26,45,.3);z-index:4}.mobile-overlay.show{display:block}.main{margin-left:0;width:100%}.mobile-only{display:grid}.topbar{padding:0 17px;justify-content:flex-start;gap:12px}.top-date{margin-left:auto}.view{padding:27px 17px 55px}.today-grid,.task-layout,.okr-summary,.life-grid{grid-template-columns:1fr}.two-col{grid-template-columns:1fr}.calendar-card{order:-1}.page-head{align-items:flex-start;flex-direction:column}.head-actions{width:100%;justify-content:space-between}.report-grid{grid-template-columns:1fr}.task-row .task-actions{opacity:1}.schedule-card{min-height:0}.login-card{padding:32px 25px}}

/* The inbox is deliberately a visible drop target: scheduled work can always return to it. */
.unschedule-zone{margin:10px 0 4px;padding:9px 10px;border:1px dashed #cfc7ed;border-radius:8px;background:#faf9ff;color:#746b94;font-size:11px;transition:.15s}.unschedule-zone b{color:var(--violet)}.unschedule-zone.drag-over{border-color:var(--violet);background:#eeeafd;color:var(--deep);transform:scale(1.01)}
.return-task{padding:5px 7px;border:1px solid #cfc7ed;border-radius:6px;background:#fff;color:#665ca0;font-size:10px;font-weight:800;white-space:nowrap}.return-task:hover{border-color:var(--violet);background:#f5f2ff}.schedule-card{position:relative}.schedule-return{position:absolute;right:8px;bottom:7px;padding:3px 6px;background:rgba(255,255,255,.72);font-size:9px}
@media(max-width:480px){.page-head h1{font-size:28px}.today-hero h2{font-size:24px}.score-number{font-size:48px}.form-grid{grid-template-columns:1fr}.filter-row{align-items:flex-start;flex-direction:column}.login-card{border-radius:19px}.view{padding-top:23px}}

/* ===== To-do 月历视图 ===== */
.calmode-toggle{display:flex;gap:4px;background:#f1eff5;padding:4px;border-radius:999px;flex:none}
.calmode-toggle button{padding:6px 13px;border-radius:999px;font-size:12px;font-weight:800;color:var(--muted)}
.calmode-toggle button.active{background:#fff;color:var(--deep);box-shadow:0 1px 3px rgba(42,31,80,.12)}
.month-cal .mgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.month-cal .mhead{margin-bottom:6px}
.month-cal .mwd{font-family:"DM Mono",monospace;font-size:10px;color:var(--muted);text-align:center;font-weight:700;padding:2px 0}
.mcell{min-height:98px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:6px;text-align:left;display:flex;flex-direction:column;gap:3px;overflow:hidden;transition:.15s}
.mcell:hover{border-color:var(--violet);box-shadow:0 4px 12px rgba(116,100,189,.12)}
.mcell.empty-cell{background:transparent;border:0;box-shadow:none;pointer-events:none}
.mcell.today{border-color:var(--violet);background:#faf8ff}
.mcell.sel{outline:2px solid var(--violet);outline-offset:-2px}
.mday{font-family:"DM Mono",monospace;font-size:12px;font-weight:700;color:var(--ink);display:flex;justify-content:space-between;align-items:center}
.mdue{font-size:9px;color:var(--rose);font-family:"DM Mono",monospace}
.mchip{font-size:10px;background:var(--lav);color:var(--deep);border-radius:5px;padding:2px 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.45}
.mchip.life{background:var(--pink);color:#a1586e}
.mmore{font-size:9px;color:var(--muted);font-family:"DM Mono",monospace;padding-left:2px}
@media(max-width:720px){.mcell{min-height:66px}.mchip{font-size:9px}.calmode-toggle{margin-left:auto}}

/* ===== 待办：说明 / 改期 / 搁置 ===== */
.task-note-line{font-size:11px;color:#7d768c;margin-top:4px;background:#faf9fc;border:1px solid #efedf4;border-radius:7px;padding:4px 8px;display:inline-block;max-width:100%}
.reschedule-task,.drop-task,.restore-task{font-size:11px;font-weight:700;color:var(--muted);padding:4px 8px;border-radius:7px;border:1px solid var(--line);background:#fff}
.reschedule-task:hover{background:var(--lav);color:var(--deep);border-color:#cdc5ec}
.drop-task:hover{background:#fff2f5;color:var(--danger);border-color:#f0d9df}
.restore-task{color:var(--deep);border-color:#cdc5ec;background:var(--lav)}
.restore-task:hover{background:#e3ddf7}
.task-row.dropped{opacity:.72}
.task-row.dropped .task-name{color:var(--faint)}
.mcount{font-size:9px;background:var(--lav);color:var(--deep);border-radius:999px;padding:0 6px;font-weight:800;font-family:"DM Mono",monospace}

/* ===== 年卡奖金计算器 ===== */
.sale-calc{margin-top:16px;background:linear-gradient(135deg,#f6f3ff,#fffefd);border:1px solid #e4def5;border-radius:12px;padding:14px}
.sale-calc .calc-total{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--deep);font-weight:700;margin-bottom:8px}
.sale-calc .calc-total b{font-size:20px;font-family:"DM Mono",monospace}
.calc-table{width:100%;border-collapse:collapse;font-size:12px}
.calc-table th{text-align:left;color:var(--muted);font-weight:700;font-size:11px;padding:4px 4px;border-bottom:1px solid #e7e1f3}
.calc-table td{padding:6px 4px;border-bottom:1px solid #efeaf7}
.calc-table td.num{font-family:"DM Mono",monospace;font-weight:700;color:var(--deep)}
.pay-tag{font-size:10px;font-weight:800;padding:2px 7px;border-radius:999px}
.pay-tag.now{background:var(--lav);color:var(--deep)}
.pay-tag.future{background:#fff3dc;color:#a6791d}
.pay-tag.paid{background:#e7f4ef;color:var(--green)}

/* ===== OKR：达标标签 + 最终达成 ===== */
.k-tag{font-size:10px;font-weight:800;padding:1px 7px;border-radius:999px}
.k-tag.ok{background:#e7f4ef;color:var(--green)}
.k-tag.mid{background:#fff3dc;color:#a6791d}
.k-tag.no{background:#fff0f2;color:var(--danger)}
.obj-final{display:flex;justify-content:space-between;align-items:center;margin-top:13px;padding-top:12px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}
.obj-final b{color:var(--deep);font-size:14px;font-family:"DM Mono",monospace}

/* ===== OKR 更新进度：实时算分 ===== */
.kr-live{font-size:11px;color:var(--muted);margin:5px 0 2px}
.okr-live-total{margin-top:14px;padding:11px 13px;background:var(--lav);border-radius:10px;font-size:12px;color:var(--deep)}
.okr-live-total b{font-family:"DM Mono",monospace;font-size:15px}

/* ===== 每月分数总览 ===== */
.score-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(94px,1fr));gap:8px}
.score-cell{border:1px solid var(--line);border-radius:11px;padding:11px 6px;text-align:center;background:#fff;transition:.15s}
.score-cell:hover{border-color:var(--violet);box-shadow:0 4px 12px rgba(116,100,189,.1)}
.score-cell.sel{border-color:var(--violet);background:var(--lav)}
.sc-month{font-family:"DM Mono",monospace;font-size:10px;color:var(--muted)}
.sc-num{font-family:"Noto Serif SC",serif;font-size:25px;font-weight:700;line-height:1.1;margin:3px 0}
.sc-num small{font-size:11px;font-family:Manrope,sans-serif}
.sc-bonus{font-size:10px;color:var(--deep);font-weight:700;font-family:"DM Mono",monospace}
/* OKR 复盘 */
.reflect-box{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
.reflect-box .rb{font-size:12px;margin:6px 0}
.reflect-box .rb b{color:var(--deep)}

/* ===== 只读账号（老板娘）：藏起所有编辑按钮 ===== */
body.readonly .button.primary,
body.readonly .update-okr,
body.readonly .reflect-okr,
body.readonly .copy-okr,
body.readonly #new-okr,
body.readonly #add-sale,
body.readonly .task-actions,
body.readonly .reschedule-task,
body.readonly .drop-task{display:none!important}

/* ===== KR 说明输入 + 展示 ===== */
.kr-note-input{min-height:52px;margin-top:8px;font-size:12px;background:#faf9fc}
.kr-note{margin-top:7px;font-size:11.5px;color:#6a6480;background:#faf9fc;border:1px solid #efedf4;border-radius:8px;padding:6px 9px}

/* ===== KR 目标标签 + Excel 式成交表 ===== */
.kr-target{font-size:11px;font-weight:800;color:var(--deep);background:var(--lav);border-radius:999px;padding:1px 8px;white-space:nowrap}
.sales-table{width:100%;border-collapse:collapse;font-size:12px;min-width:860px}
.sales-table th{text-align:left;font-size:11px;color:var(--muted);font-weight:800;padding:8px 9px;border-bottom:2px solid #e2ddef;white-space:nowrap;background:#faf9fd}
.sales-table td{padding:8px 9px;border-bottom:1px solid #f0edf5;vertical-align:top}
.sales-table td.num{font-family:"DM Mono",monospace;white-space:nowrap}
.sales-table td small{display:block;color:var(--muted);font-size:10px;font-family:"DM Mono",monospace}
.sales-table .sale-month-row td{background:#fff8dc;font-weight:800;font-size:11.5px;color:#7a6420;border-bottom:1px solid #efe6c2;font-family:"DM Mono",monospace}
.sales-table .sale-email{max-width:230px;word-break:break-all;font-weight:600}

/* ===== 侧栏子菜单（工作·OKR 下） ===== */
.nav-sub{margin:1px 0 4px 30px;display:grid;gap:1px;border-left:2px solid var(--line);padding-left:8px}
.nav-subitem{font-size:12.5px;padding:7px 10px;border-radius:8px;text-align:left;color:var(--muted);font-weight:600}
.nav-subitem:hover{background:#f7f5fa;color:var(--ink)}
.nav-subitem.active{color:var(--deep);background:var(--lav)}

/* ===== deposit + 验算 tally ===== */
.deposit-row td{background:#fff3e2!important}
.pay-tag.deposit{background:#ffe7c7;color:#a05c12}
.complete-sale{display:block;margin-top:5px;font-size:10.5px;font-weight:800;color:var(--deep);background:var(--lav);border-radius:7px;padding:4px 8px;white-space:nowrap}
.complete-sale:hover{background:#ddd5f5}
.tally{display:block;font-family:"DM Mono",monospace;font-size:10px;color:#6b8f7c;margin-top:3px}
.note-item.tally-bad{border-left-color:var(--danger);background:#fff5f6}
.note-item.tally-bad .tally{color:var(--danger)}
body.readonly .complete-sale{display:none!important}

/* ===== 日视图时间轴（Apple Calendar 风） ===== */
.dt-allday{margin-bottom:12px;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:10px 14px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.dt-wrap{padding:14px;overflow:hidden}
.dt-grid{position:relative}
.dt-hour{position:absolute;left:0;right:0;border-top:1px solid #efecf4}
.dt-hour span{position:absolute;top:-8px;left:0;font-family:"DM Mono",monospace;font-size:10px;color:#a6a0af;background:var(--paper);padding-right:6px}
.dt-now{position:absolute;left:46px;right:0;border-top:2px solid var(--danger);z-index:2}
.dt-now:before{content:"";position:absolute;left:-5px;top:-5px;width:8px;height:8px;border-radius:50%;background:var(--danger)}
.dt-card{position:absolute;background:#eeeafd;border-left:3px solid var(--violet);border-radius:8px;padding:5px 9px;overflow:hidden;z-index:1;box-shadow:0 1px 4px rgba(60,40,120,.08)}
.dt-card b{font-size:11.5px;display:block;line-height:1.3}
.dt-card span{font-size:10px;color:#746d84;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dt-card.life{background:#fcebf0;border-left-color:#d47c94}
.dt-card.done{opacity:.5}.dt-card.done b{text-decoration:line-through}
.mchip.done-chip{opacity:.55;text-decoration:line-through}
.agenda-item.done{opacity:.55}.agenda-item.done b{text-decoration:line-through}
.agenda-actions{display:flex;gap:7px;align-items:center;flex:none}

/* ===== 随手记卡片墙 ===== */
.note-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;margin-top:16px}
.note-card{background:#fbfafd;border:1px solid #eeeaf2;border-radius:12px;padding:12px 13px;position:relative;display:flex;flex-direction:column;gap:6px;transition:.15s}
.note-card:hover{border-color:#d6cdef;box-shadow:0 4px 14px rgba(90,70,150,.08)}
.note-card time{font-family:"DM Mono",monospace;font-size:10px;color:var(--violet)}
.note-card p{margin:0;font-size:12.5px;line-height:1.55;word-break:break-word}
.nc-actions{display:flex;gap:6px;margin-top:auto;opacity:0;transition:.15s;justify-content:flex-end}
.note-card:hover .nc-actions{opacity:1}
.nc-edit{font-size:11px;font-weight:700;color:var(--deep);background:var(--lav);border-radius:7px;padding:3px 9px}
.nc-del{font-size:13px;color:var(--muted);padding:3px 7px;border-radius:7px}
.nc-del:hover{color:var(--danger);background:#fff0f2}
@media(hover:none){.nc-actions{opacity:1}}

/* ===== 深色模式 ===== */
[data-theme="dark"]{--ink:#ece9f7;--muted:#a49bc0;--faint:#7d739c;--line:#3a3350;--ground:#171322;--paper:#201b31;--violet:#a293e8;--deep:#cfc5f3;--lav:#322a4d;--pink:#43263a;--rose:#e290b3;--green:#6cc9a4;--yellow:#e0bc5e;--danger:#e58398;--shadow:0 15px 45px rgba(0,0,0,.4)}
[data-theme="dark"] body{background:var(--ground)}
[data-theme="dark"] input,[data-theme="dark"] textarea,[data-theme="dark"] select{background:#191527;color:var(--ink);border-color:var(--line)}
[data-theme="dark"] .button.ghost{background:#251f39;border-color:var(--line);color:var(--ink)}
[data-theme="dark"] .icon-button{background:#251f39;border-color:var(--line)}
[data-theme="dark"] .sidebar{background:#1b1629;border-color:var(--line)}
[data-theme="dark"] .nav-item:hover,[data-theme="dark"] .nav-subitem:hover{background:#272040}
[data-theme="dark"] .topbar{background:rgba(23,19,34,.85);border-color:var(--line)}
[data-theme="dark"] .login-screen{background:var(--ground)}
[data-theme="dark"] .login-card{background:rgba(32,27,49,.92);border-color:var(--line)}
[data-theme="dark"] .note-item,[data-theme="dark"] .note-card,[data-theme="dark"] .agenda-item,[data-theme="dark"] .report-field,[data-theme="dark"] .kr-note,[data-theme="dark"] .task-note-line{background:#261f3c;border-color:var(--line)}
[data-theme="dark"] .filter-chip,[data-theme="dark"] .month-pill,[data-theme="dark"] .month-summary,[data-theme="dark"] .mcell,[data-theme="dark"] .food-choice button,[data-theme="dark"] .chip,[data-theme="dark"] .mood{background:#251f39;border-color:var(--line);color:var(--ink)}
[data-theme="dark"] .filter-chip.active{background:var(--lav);border-color:#5a4d85;color:var(--deep)}
[data-theme="dark"] .mcell.today{background:#2b2347}
[data-theme="dark"] .score-panel{background:linear-gradient(135deg,#221c36,#2b2347)}
[data-theme="dark"] .warning-box{background:#2e2717;border-color:#57491f}
[data-theme="dark"] .warning-box p{color:#c9b98a}
[data-theme="dark"] .sales-table th{background:#251f39;border-color:var(--line)}
[data-theme="dark"] .sales-table td{border-color:#2d2645}
[data-theme="dark"] .sale-month-row td{background:#332b17!important;color:#d8c684;border-color:#4a3f20}
[data-theme="dark"] .deposit-row td{background:#3a2c15!important}
[data-theme="dark"] .dt-card{background:#2d2650}
[data-theme="dark"] .dt-card.life{background:#43263a}
[data-theme="dark"] .dt-hour span{background:var(--paper)}
[data-theme="dark"] .schedule-card{background:#2d2650}
[data-theme="dark"] .calc-table th{border-color:var(--line)}
[data-theme="dark"] .sale-calc{background:#221c36;border-color:var(--line)}
[data-theme="dark"] .unschedule-zone{background:#251f39;border-color:var(--line)}
[data-theme="dark"] .life-hero{background:linear-gradient(145deg,#2e2033,#201b31)}

/* ===== 随手记「下一步 action」 ===== */
.note-action{font-size:12px;font-weight:700;color:var(--deep);background:var(--lav);border-radius:8px;padding:6px 9px}
.na-tag{font-size:10px;font-weight:800;color:var(--green);background:#e7f4ef;border-radius:999px;padding:1px 7px;margin-left:4px}
[data-theme="dark"] .na-tag{background:#1f3a2f}
.task-note-line.src-note{cursor:pointer}
.task-note-line.src-note:hover{border-color:var(--violet);color:var(--deep)}

/* ===== 待办两列排（宽屏），少滚动 ===== */
.task-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(390px,1fr));column-gap:30px;align-content:start}
.task-list>.section-title{grid-column:1/-1}
.task-list .task-row{min-width:0}
.task-list .empty{grid-column:1/-1}
