/* 视觉修订：清晰的工具界面、自然纸白与克制的绿色。 */
:root {
 --paper:#F7F8F5; --paper-2:#EEF1EC; --sheet:#FFFFFF; --white:#FFFFFF;
 --ink:#25332D; --ink-2:#526159; --ink-3:#718077;
 --rule:#DDE4DD; --rule-2:#E9EEE8; --rule-3:#F3F5F1;
 --accent:#345D49; --accent-2:#254936; --accent-ink:#FFFFFF; --accent-soft:#EAF1E9;
 --note:#F1F4EC; --warn-soft:#FCF1E9;
 --serif:var(--sans); --num:var(--sans); --shadow:0 3px 12px #293C2D04;
 font-size:14px;
}
body{background:var(--paper);background-image:none}
.c0{--cb:#E8F0E3;--cs:#7D9D6E;--ct:#35482D}
.c1{--cb:#FAF1DA;--cs:#CEAE61;--ct:#5C4A26}
.c2{--cb:#E8EFF7;--cs:#88A3BE;--ct:#344C65}
.c3{--cb:#F2EAF1;--cs:#B49AAD;--ct:#614A5E}
.c4{--cb:#E7F2EE;--cs:#7FAE9D;--ct:#345649}
.c5{--cb:#F0F0ED;--cs:#A6ACA2;--ct:#505A50}
.shell{grid-template-columns:176px minmax(0,1fr)}
.rail{background:#F0F3EE;border-color:#E0E6DD;padding:32px 16px 22px}
.wordmark{font-family:var(--sans);font-size:20px;letter-spacing:.06em;margin-bottom:40px;gap:9px;font-weight:600}
.wordmark svg{width:25px;height:29px}
.rail nav{gap:8px}
.rail nav button,.rail-foot button{height:43px;border-radius:9px;font-size:14px;color:#637066;gap:12px}
.rail nav button:hover,.rail-foot button:hover{background:#E7EDE3}
.rail [aria-current=page]{background:#FFFFFF;color:var(--accent);box-shadow:0 2px 7px #2D423408;outline:1px solid #E0E6DC;font-weight:600}
.rail-timer{background:var(--accent);border-radius:10px;padding:14px 12px;gap:5px}
.rail-timer .num{font-size:22px;font-weight:400;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.save-state{font-size:11px;line-height:1.8;color:#788479}
main{max-width:1600px;padding:32px 36px 55px}
.page-head{align-items:center;gap:16px;margin-bottom:24px}
.kicker{font-size:12px;letter-spacing:.02em;color:#7A877E;margin-bottom:8px}
h1{font:600 29px/1.25 var(--sans);letter-spacing:-.03em}
.head-tools{gap:5px}
.btn{height:36px;border-radius:8px;padding:0 13px;font-weight:500;font-size:13px;box-shadow:none;transition:background .15s,box-shadow .15s}
.btn.primary{box-shadow:0 2px 5px #345D4912}
.btn.primary:hover{box-shadow:0 3px 10px #345D4920}
.icon-btn{height:34px;width:34px;border-radius:8px}
.btn.small{height:29px;font-size:12px}
.btn.quiet{color:#617067}
.seg{background:#EDF1EA;border:1px solid #E3E9E0;border-radius:9px;padding:3px;gap:2px}
.seg>button{font-size:12px;border-radius:6px;min-width:45px}
.seg>[aria-pressed=true]{box-shadow:0 1px 4px #243D3010}
.sec-head{align-items:center;margin:27px 0 12px;gap:9px;min-width:0}
.sec-head h2{font:600 15px/1.4 var(--sans);letter-spacing:0}
.count,.muted,.blank{color:#738175}
.banner{border:1px solid #E7DCC0;background:#FCF8EC;border-radius:9px;font-size:12px;line-height:1.6;padding:10px 12px;margin-bottom:18px}
.banner.demo{background:#F0F3EC;border:0;padding:7px 10px 7px 13px;color:#7A867C;margin-bottom:25px;font-size:11px;border-radius:7px}
.banner.demo .btn{height:26px;font-size:11px;background:transparent;border-color:#D7DFD2;color:#5B6B5D}
.banner.warn{background:#FCF0E9;border-color:#F0DACE}
.goal{border-top:0;border-bottom:1px solid var(--rule);padding:0 0 20px;margin-bottom:22px;gap:16px}
.goal label{font-size:12px;color:#718075;letter-spacing:0}
.goal input{font:500 14px/1.6 var(--sans);color:#45564B;background:transparent}
.goal input::placeholder{color:#8B968C}
.goal-sum{font:12px var(--sans);color:#7B897D;letter-spacing:0}
.today{grid-template-columns:minmax(0,1.08fr) minmax(340px,1fr);gap:30px}
.today-cal{position:sticky;top:22px;min-width:0}
.focus{padding:24px;border:1px solid #DCE5D7;border-radius:13px;background:#FFFFFF;box-shadow:0 4px 18px #2D453806;gap:16px}
.focus-top{font-size:12px;align-items:center;color:#7C887D;gap:10px;flex-wrap:wrap}
.focus-label{font-weight:500;font-size:12px;color:var(--accent);letter-spacing:0;gap:7px}
.focus:not(.running) .focus-label:before{content:'';width:6px;height:6px;border-radius:50%;background:#91AB7C}
.focus-title{font:600 24px/1.45 var(--sans);letter-spacing:-.025em;overflow-wrap:anywhere}
.focus-notes{font-size:13px;gap:6px 14px;line-height:1.7}
.focus-notes dt{color:#7B887C}
.focus-notes dd{color:#526655}
.focus-meta{font-size:12px;color:#7C897D;gap:6px}
.focus-actions{margin-top:3px;gap:8px}
.focus-actions>.primary{padding-left:18px;padding-right:18px}
.focus.running{background:#345744;border-color:#345744;box-shadow:0 8px 26px #34574418;gap:15px}
.focus.running .focus-title{font-size:23px;font-weight:500;letter-spacing:0}
.focus.running .focus-clock{font:400 50px/1.1 var(--sans);font-variant-numeric:tabular-nums;letter-spacing:-.04em}
.focus.empty{background:#FFFFFF;border-style:solid;padding:30px 24px}
.focus.empty .focus-note{max-width:32em;line-height:1.8;color:#768277}
.quick input{border-color:#DDE4D9;border-radius:8px;background:#FFFFFF;min-height:36px;font-size:13px}
.quick input::placeholder{color:#909A8F}
.quick .btn{min-height:36px}
.row{padding:12px 0;min-height:68px;gap:10px;border-color:#E5EBE1}
.row-time{font:12px/1.6 var(--sans);color:#59695D;min-width:47px;align-items:flex-start}
.row-time span+span{color:#899487;font-size:11px}
.row-time .i{display:none}
.row-title{font-size:14px;font-weight:500;color:#35463A}
.row-meta{font-size:11.5px;line-height:1.7;gap:5px;color:#7B887A;margin-top:3px}
.row-act .icon-btn.go{border-color:#DCE5D7;background:#FFFFFF;color:#5A775D;border-radius:50%;width:30px;height:30px}
.row-act .icon-btn.go:hover{background:var(--accent);color:#FFFFFF}
.row.slim{min-height:58px;padding:10px 0}
.done-fold{margin-top:12px}
.inbox,.wrapup{border-top:1px solid var(--rule);margin-top:20px;padding-top:3px}
.inbox>.sec-head,.wrapup>.sec-head{margin-top:13px;margin-bottom:8px}
.today-cal>.sec-head{margin-bottom:13px}
.cal{border:1px solid #DCE4D8;border-radius:12px;background:#FFFFFF;box-shadow:none;--hw:48px}
.cal-scroll{max-height:min(72vh,760px);scrollbar-color:#CAD5C4 transparent;background:#FFFFFF}
.cal.single .cal-scroll{max-height:min(60vh,590px)}
.cal-head{background:#FFFFFF;border-color:#E2E8DE}
.cal-day{padding:12px 2px 13px;border-color:#EBEFE7;gap:5px}
.cal-day .wd{font-size:11px;color:#7D897D}
.cal-day .dn{font:500 19px/1.2 var(--sans);color:#405141;letter-spacing:-.03em}
.cal-day .sum{font-size:10px;color:#8B9587}
.cal-day.is-today:after{display:none}
.cal-day.is-today .dn{background:var(--accent);color:white;min-width:29px;height:29px;line-height:29px;border-radius:50%;margin:-3px 0}
.cal-day.is-sel{background:#F3F7F0}
.hours{background:#FFFFFF}
.hours span{font:10px/1 var(--sans);color:#8F9B8B;right:9px}
.col{border-color:#EDF0E9;background-image:linear-gradient(to bottom,#E9EEE6 1px,transparent 1px),linear-gradient(to bottom,#F5F7F1 1px,transparent 1px)}
.col.is-today{background-color:#FAFCF7}
.col.is-sel{background-color:#F6FAF2}
.ev{border-left-width:2px;border-radius:6px;padding:6px 7px;font-size:12px;box-shadow:0 0 0 2px #FFFFFF;transition:box-shadow .12s,filter .12s}
.ev-name{font-weight:500;line-height:1.4;word-break:normal;overflow-wrap:anywhere}
.ev-time{font:10px/1.4 var(--sans);opacity:.65;margin-top:2px}
.ev.sm{padding-left:6px;gap:4px;font-size:11px}
.ev.xs{font-size:10px;padding-left:4px}
.ev.is-locked{background:#F0F2EC;color:#657461;background-image:none;border-left-color:#B8C4B0}
.ev.is-clash{box-shadow:0 0 0 2px #FFFFFF,inset 0 0 0 1px #D8A898}
.ev.is-clash:after{width:4px;height:4px;background:#C3856C}
.ev.act{border-left:1px dashed var(--cs);background:color-mix(in srgb,var(--cb) 75%,#FFFFFF)}
.now{border-width:1px;border-color:#BE816A}
.now:before{background:#BE816A;width:5px;height:5px;top:-3px;left:-3px}
.now span{font:10px var(--sans);color:#B17E69}
.week{grid-template-columns:182px minmax(0,1fr);gap:22px}
.backlog{background:transparent}
.backlog>.sec-head{margin-top:0;margin-bottom:7px}
.backlog-tip{font-size:11px;line-height:1.8;margin-bottom:16px}
.chipcard{border:1px solid #E0E7DB;background:#FFFFFF;border-radius:9px;padding:13px 10px;box-shadow:none;margin-bottom:10px}
.chipcard .row-title{font-size:12px;font-weight:500;white-space:normal;line-height:1.6}
.chipcard small{font-size:10px;line-height:1.7;color:#8A9586;margin-top:4px}
.chipcard .handle{display:none}
.chipcard .btn{height:25px;padding:0 7px;font-size:10px}
.cal-help{color:#8A9584;font-size:11px;line-height:1.8;margin-top:11px}
.cal-jumps{display:flex;justify-content:flex-end;gap:10px;margin-top:5px}
.cal-jumps .btn{height:26px;font-size:11px;padding:0 7px}
.sheet{background:#FFFFFF;box-shadow:0 20px 90px #20362C26;border-radius:14px}
.sheet-head{padding:24px 22px 12px}
.sheet-head h2{font:600 20px/1.4 var(--sans)}
.sheet-body{padding:8px 24px 24px;gap:18px}
.sheet-foot{padding:16px 22px;background:#FAFCF8;border-color:#E3EADD}
.title-input{font-family:var(--sans);font-size:24px!important;line-height:1.5;font-weight:500}
input,select,textarea{border-color:#DCE4D7;border-radius:7px;background:#FFFFFF}
.field-label{font-size:12px;color:#667760}
.panel,.task-group{background:#FFFFFF;border-color:var(--rule);box-shadow:none}
#toast{background:#2E4435;border-radius:10px;font-size:13px;box-shadow:0 8px 25px #263F2D24}
@media(min-width:1600px){main{padding:40px 48px}.today{gap:40px}}
@media(min-width:761px) and (max-width:1180px){
 .shell{grid-template-columns:80px minmax(0,1fr)}
 .rail{padding:25px 10px 18px}
 .rail nav button,.rail-foot button{height:57px;font-size:11px;gap:3px}
 main{padding:28px 26px 50px}
 .week{grid-template-columns:166px minmax(0,1fr);gap:18px}
 .today{grid-template-columns:minmax(0,1fr) minmax(300px,.95fr);gap:24px}
}
@media(min-width:761px) and (max-width:980px){
 .week{grid-template-columns:minmax(0,1fr)}
 .backlog{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:6px}
 .backlog>.sec-head,.backlog>.muted{flex-basis:100%}
 .backlog .chipcard{width:190px;margin:0}
 .backlog>.quick{flex-basis:100%}
 .today{grid-template-columns:minmax(0,1fr)}
 .today-cal{position:static}
}
@media(max-width:760px){
 :root{font-size:15px}
 .shell{display:block}
 .rail{display:none}
 main{padding:24px 18px calc(95px + env(safe-area-inset-bottom))}
 h1{font:600 28px/1.3 var(--sans);letter-spacing:-.035em}
 .kicker{font-size:12px;margin-bottom:6px}
 .page-head{gap:16px;margin-bottom:20px}
 .head-tools{gap:5px}
 .head-tools .icon-btn{width:38px;height:38px}
 .banner.demo{margin-bottom:21px;padding:8px 10px;font-size:10px;gap:10px}
 .banner.demo>span{min-width:0;line-height:1.7}
 .banner.demo>.btn{font-size:10px;padding:0 7px;flex-shrink:0;min-height:30px;white-space:normal}
 .banner{font-size:12px;gap:9px;flex-wrap:wrap;padding:11px 12px}
 .banner>span{flex-basis:calc(100% - 35px)}
 .banner>.btn{margin-left:auto}
 .banner.demo>span{flex-basis:auto}
 .btn,.icon-btn{min-height:40px}
 .btn.small{min-height:34px}
 .goal{padding:0 0 18px;gap:8px 12px;margin-bottom:18px}
 .goal input{font:500 15px/1.7 var(--sans);height:auto;min-height:31px;padding:0;flex-basis:100%}
 .goal label{font-size:11px}
 .goal-sum{font-size:11px}
 .pane-switch{margin-bottom:18px}
 .pane-switch .seg{padding:4px;background:#EBF0E6}
 .pane-switch .seg>button{height:36px;font-size:13px}
 .today{display:block}
 .focus{border-radius:12px;padding:20px;gap:16px}
 .focus.empty{padding:25px 20px}
 .focus-title,.focus.running .focus-title{font-size:22px}
 .focus-top>span:last-child{font-size:11px}
 .focus-notes{grid-template-columns:1fr;gap:4px;font-size:13px}
 .focus-notes dt{font-size:11px;margin-top:3px}
 .focus-meta{font-size:11px}
 .focus-actions{gap:8px}
 .focus-actions .btn{height:42px;flex:1 1 auto;font-size:12px}
 .focus.running .focus-clock{font-size:49px}
 .quick input{font-size:16px;min-height:42px}
 .quick .btn{min-height:42px}
 .sec-head{margin-top:25px;gap:7px;flex-wrap:wrap}
 .sec-head h2{font-size:15px}
 .row{gap:8px;min-height:72px;padding:12px 0}
 .row-time{font-size:11px;min-width:39px;padding:0;gap:3px}
 .row-title{font-size:13px}
 .row-meta{font-size:10.5px;line-height:1.7}
 .row-act{gap:2px}
 .row-act .icon-btn.go{width:32px;height:32px;min-height:32px}
 .row-act>.icon-btn{width:30px;height:34px;min-height:34px}
 .cal{--hw:43px;border-radius:10px}
 .cal-scroll,.cal.single .cal-scroll{max-height:calc(100dvh - 315px);min-height:340px}
 .ev{font-size:12px;padding:5px 7px}
 .ev.sm{font-size:11px}
 .hours span{font-size:10px}
 .week{display:flex;flex-direction:column-reverse;gap:26px}
 .week-main{width:100%;min-width:0}
 .day-strip{gap:3px;margin-bottom:12px}
 .day-strip button{height:63px;border-radius:10px}
 .day-strip strong{font:500 19px var(--sans)}
 .day-strip [aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#FFFFFF;box-shadow:none}
 .day-strip [aria-pressed=true] span,.day-strip [aria-pressed=true] strong{color:#FFFFFF}
 .day-strip [aria-pressed=true] i{background:#FFFFFF50}
 .strip-tools{gap:5px;flex-wrap:wrap;margin-bottom:12px}
 .strip-tools .seg>button{min-width:40px;height:32px}
 .strip-tools>.btn{font-size:11px;min-height:34px;padding:0 6px}
 .strip-tools .spacer{display:none}
 .strip-tools>[data-act=open-day]{margin-left:auto}
 .cal.scroll-x .cal-head,.cal.scroll-x .cal-body{min-width:calc(var(--hw) + 7 * 110px)}
 .backlog{display:block}
 .backlog .chipcard{padding:13px;width:auto;display:flex;gap:10px}
 .chipcard .row-title{font-size:13px}
 .chipcard small{font-size:11px}
 .chipcard .btn{height:34px;min-height:34px;font-size:12px}
 .tabbar{background:#FFFFFFF2;border-top:1px solid #E0E7DC;padding-top:8px;box-shadow:0 -4px 18px #20362C04}
 .tabbar button{font-size:10px;gap:4px;height:49px;color:#8A9686}
 .tabbar [aria-current=page]{color:var(--accent);background:#F2F6ED}
 .tabbar .i{width:21px;height:21px}
 .sheet-head{padding:21px 17px 10px}
 .sheet-body{padding:10px 20px 24px;gap:18px}
 .sheet-head h2{font-size:19px}
 .sheet-foot{padding:14px 18px max(14px,env(safe-area-inset-bottom));gap:8px;flex-wrap:wrap}
 .sheet-foot .btn{min-height:42px;height:auto;padding:8px 12px}
 .sheet-foot>.danger{font-size:12px}
 .sheet-foot .spacer{min-width:0}
 dialog.drawer .sheet,.sheet{background:#FFFFFF;border-radius:17px 17px 0 0}
 .title-input{font-size:23px!important}
 input,select,textarea{font-size:16px}
 .float-timer{border-radius:10px;background:var(--accent);bottom:calc(77px + env(safe-area-inset-bottom))}
 .cal-jumps{justify-content:flex-start}
}
@media(max-width:360px){
 main{padding-left:14px;padding-right:14px}
 .focus{padding:17px}.focus-title{font-size:20px}
 .row-act .icon-btn{width:28px;min-width:28px}
 .row-act{flex-wrap:wrap;max-width:33px}
 .goal-sum{font-size:10px}
 .strip-tools{gap:3px}
 .strip-tools>[data-act=open-day]{margin-left:0}
}
/* 手机首屏把空间留给时间轴，冲突明细在编辑层展开。 */
@media(max-width:760px){
 .banner:not(.demo)>span{flex-basis:0;min-width:0}
 .banner:not(.demo)>.btn{margin-left:0}
 .banner:not(.demo){align-items:center;flex-wrap:nowrap}
 .hours span{font-size:11px}
 .cal-day .sum{font-size:11px}
}
@media(max-width:760px){
 dialog[open].modal,dialog[open].drawer{position:fixed;inset:auto 0 0;margin:0!important;width:100%;max-height:92dvh;height:auto}
 .kbd-hint{display:none}
 .nudges .chip{min-height:36px;height:36px;padding:0 10px}
 .sheet-foot{flex-shrink:0}
}
@media(min-width:361px) and (max-width:760px){
 .v-today .page-head{gap:10px;align-items:center}
 .v-today .page-head .head-tools{width:auto;margin-left:auto;gap:0}
 .v-today .page-head h1{font-size:27px}
 .v-today .head-tools .btn{padding:0 8px;font-size:12px}
 .v-today .head-tools .icon-btn{width:30px}
}
/* 辅助信息保持可读对比，不用过浅的小灰字制造层级。 */
.kicker,.goal-sum,.muted,.blank,.cal-help,.backlog-tip,.row-meta,.focus-meta,.cal-day .sum,.hours span,.chipcard small,.save-state{color:#687568}
.row-meta{font-size:12px}
.hours span,.cal-day .sum,.chipcard small{font-size:11px}
.ev-time{font-size:11px;opacity:.8}
@media(max-width:760px){.row-meta{font-size:11.5px}.focus-meta{font-size:11.5px}.cal-help{font-size:11.5px}}

/* 云端内测与每日名著：保持轻量，不挤占计时与计划操作 */
.daily-quote { display:flex; gap:22px; padding:17px 0 20px; margin:0 0 14px; border-bottom:1px solid var(--line,#e1e7df); color:#536359; }
.daily-quote > div { min-width:0; max-width:860px; }
.quote-label { flex-shrink:0; padding-top:4px; font-size:11px; letter-spacing:.16em; color:#79867d; }
.daily-quote .quote-zh { margin:0 0 6px; font-size:15px; line-height:1.8; letter-spacing:.02em; }
.daily-quote summary { cursor:pointer; font-size:11px; color:#7a867e; width:fit-content; padding:3px 0; }
.daily-quote blockquote { margin:12px 0 8px; font-family:Georgia,serif; font-size:15px; line-height:1.75; color:#495c50; }
.daily-quote .quote-source { font-size:11px; line-height:1.8; color:#7a867e; margin:0; }
.quote-source a { color:#42684f; text-underline-offset:3px; }
.account-panel .actions { flex-wrap:wrap; }
.account-panel p { overflow-wrap:anywhere; }
.account-panel .banner { margin-top:20px; }
.quote-exhausted { margin:0 0 16px; }
button:disabled { opacity:.45; cursor:not-allowed; }
@media(max-width:760px) { .daily-quote { gap:12px; padding:10px 0 15px; margin-bottom:12px; } .quote-label { writing-mode:vertical-rl; padding-top:5px; font-size:10px; } .daily-quote .quote-zh { font-size:13px; line-height:1.75; } .account-panel .actions > .btn { max-width:100%; white-space:normal; } }
