:root{font-family:"Segoe UI","Microsoft YaHei",sans-serif;color:#293a35;background:#f7f8f4;font-synthesis:none;--green:#315c4a;--muted:#768079;--line:#e4e9e1}
*{box-sizing:border-box}
body{margin:0}
button,input,select,textarea{font:inherit}
button{cursor:pointer;background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px 12px;color:inherit}
button:hover{background:#edf2e9}
button:focus-visible,a:focus-visible{outline:3px solid #96af78;outline-offset:3px}
button:disabled{opacity:.5;cursor:wait}
[hidden]{display:none!important}
.sidebar{width:238px;position:fixed;inset:0 auto 0 0;background:#f0f3eb;border-right:1px solid var(--line);padding:36px 24px;display:flex;flex-direction:column}
.brand{color:var(--green);text-decoration:none;font:italic 52px Georgia,serif;display:flex;align-items:center;gap:13px}
.brand span{font:600 18px "Segoe UI",sans-serif;letter-spacing:-.5px}
.brand small{display:block;font:11px "Microsoft YaHei",sans-serif;letter-spacing:2px;margin-top:6px;color:var(--muted)}
.nav-label{font-size:12px;color:#8b9488;letter-spacing:2px;margin:55px 12px 14px}
.nav{display:flex;align-items:center;gap:14px;width:100%;border:0;background:transparent;text-align:left;margin:7px 0;padding:14px;font-size:18px}
.nav span{font-size:15px}
.nav.active{background:#dfe8d7;color:#31543e;font-weight:600}
.sidebar-note{margin-top:auto;font-size:13px}
.sidebar-note small{display:block;line-height:1.9;margin:12px 0;color:var(--muted);font-size:11.5px}
.dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#6d8c53;margin-right:6px}
main{margin-left:238px;padding:48px 4.1vw 24px;max-width:1700px}
.eyebrow{font-size:11px;letter-spacing:2.6px;color:#8a9583;margin-bottom:20px}
.title-row{display:flex;align-items:center;justify-content:space-between;gap:16px}
h1{font-size:30px;font-weight:500;letter-spacing:1px;margin:0 0 12px}
header p{color:var(--muted);font-size:14px;margin:0;line-height:1.8}
.primary{background:var(--green);color:white;border-color:var(--green);padding:12px 19px;white-space:nowrap}
.primary:hover{background:#264838}
.stats{display:grid;grid-template-columns:repeat(3,1fr);margin:34px 0 26px;gap:18px}
.stats>div{border:1px solid var(--line);border-radius:14px;padding:20px 24px;background:#fff}
.stats span,.stats small{display:block;font-size:13px;color:var(--muted)}
.stats strong{display:block;font:36px Georgia,serif;margin:11px 0}
.stats em{font:12.5px "Microsoft YaHei",sans-serif;color:var(--muted)}
.stats small{font-size:11px}
.journal-layout{display:grid;grid-template-columns:minmax(310px,.95fr) minmax(360px,1.15fr);gap:24px}
.panel{background:#fff;border:1px solid var(--line);border-radius:16px;padding:25px}
.section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}
h2{font-size:17px;font-weight:600;margin:0}
.section-heading button{font-size:13px}
.month-actions{display:flex;gap:5px}
.month-actions button{padding:5px 9px}
.muted{color:var(--muted);font-size:13.5px;line-height:1.7}
.calendar-hint{font-size:12.5px;margin:12px 0 25px}
.weekdays,.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
.weekdays{font-size:11.5px;color:#969e92;text-align:center;margin-bottom:12px}
.day{position:relative;border:0;background:transparent;height:56px;padding:6px 2px;font-size:14px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:2px;border-radius:8px}
.day-num{line-height:1.2}
.day-amt{font-size:10px;line-height:1.2;color:#a35c5c;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.day.selected .day-amt{color:#ffd9d9}
.day.today{box-shadow:inset 0 0 0 1px #a9b99b}
.day.selected{background:var(--green);color:#fff}
.day.has-note:after{content:"";display:block;width:4px;height:4px;border-radius:50%;background:#8da66c;position:absolute;bottom:3px;left:calc(50% - 2px)}
.day.selected:after{background:white}
.legend{border-top:1px solid var(--line);margin-top:22px;padding-top:15px;display:flex;align-items:center;font-size:12px;color:var(--muted)}
.legend button{margin-left:auto;font-size:11.5px;border:0;padding:5px}
.thought{background:#f4f6ef;border-radius:10px;padding:18px;margin-top:24px}
.thought span{font-size:13px;color:#637653}
.thought p{font-size:13px;color:#7a8473;line-height:1.9;margin:9px 0 0}
.filters{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0}
.filters input{width:100%;flex-basis:100%}
input,select,textarea{border:1px solid var(--line);border-radius:7px;background:#fafbf8;padding:10px 11px;color:#37463b;max-width:100%}
.filters select{font-size:12.5px;flex:1;min-width:0}
.empty{padding:48px 15px;text-align:center}
.empty .symbol{font:40px Georgia,serif;color:#a3b38d}
.empty h3{font-weight:500;font-size:16px}
.empty p{font-size:13.5px;color:var(--muted);line-height:1.9;white-space:pre-line}
.record{border-top:1px solid var(--line);padding:20px 0}
.record time{font-size:12px;color:var(--muted)}
.record h3{font-size:16.5px;margin:9px 0 10px}
.record pre{white-space:pre-wrap;overflow-wrap:anywhere;font:13.5px/1.9 "Microsoft YaHei",sans-serif;color:#627066;max-height:240px;overflow:auto}
.record small{display:block;font-size:10.5px;overflow-wrap:anywhere;color:#8b9488;margin-top:10px}
.tag{display:inline-block;background:#edf2e7;color:#64764e;border-radius:5px;padding:4px 7px;margin:3px;font-size:11.5px}
.record.interest-record{border:1px solid var(--line);border-radius:12px;background:#fbf8f9;padding:16px 18px;margin:12px 0}
.record.interest-record pre{max-height:none}
.card-date-link{border:0;background:transparent;padding:0;font-size:12px;color:var(--muted);text-decoration:underline;text-underline-offset:3px}
.card-date-link:hover{background:transparent;color:var(--green)}
.bottom-note{font-size:12.5px;color:var(--muted);line-height:1.9;margin:23px 0}
.bottom-note span{color:#526d4a}
footer{display:flex;justify-content:space-between;font-size:10.5px;letter-spacing:2px;color:#9ba493;border-top:1px solid var(--line);padding-top:20px;margin-top:28px}
footer span{letter-spacing:1px}
.context-panel{margin-top:32px}
.context-panel pre{white-space:pre-wrap;overflow-wrap:anywhere;font:14px/2 "Microsoft YaHei",sans-serif}
dialog{border:1px solid var(--line);border-radius:18px;width:640px;max-width:94vw;max-height:90vh;padding:28px;color:inherit}
dialog::backdrop{background:#23342680}
form>label{display:grid;gap:7px;margin:16px 0;font-size:13.5px}
fieldset{border:1px solid var(--line);border-radius:10px;padding:12px;font-size:13px}
#tag-options{display:flex;flex-wrap:wrap;gap:7px}
#tag-options label{font-size:12.5px;border-radius:5px;background:#f4f6ef;padding:6px}
#form-message{font-size:13px;color:#9c4235}
#error{padding:13px;background:#fff0dc;border:1px solid #edcf9e;border-radius:8px;margin:20px 0;font-size:13px;white-space:pre-wrap}
.field-label{display:block;font-size:13.5px;margin:16px 0 8px}
.chip-group{display:flex;flex-wrap:wrap;gap:8px}
.chip-group button{border-radius:22px;padding:8px 17px;font-size:13.5px;background:#fff;color:var(--muted)}
.chip-group button:hover{border-color:#c9b6be;background:#f7f1f3;color:#755260}
.chip-group button.active{background:var(--green);border-color:var(--green);color:#fff;font-weight:600}
.interests-heading{margin:32px 0 0;align-items:flex-end;flex-wrap:wrap}
.interests-heading h2{font-size:22px;font-weight:500;letter-spacing:1px}
.interests-heading p{margin:8px 0 0}
.interest-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0 4px}
.interest-tabs button{border-radius:20px;padding:6px 15px;font-size:13px;background:transparent;color:var(--muted)}
.interest-tabs button:hover{background:#f2edef;color:#755260}
.interest-tabs button.active{background:var(--green);border-color:var(--green);color:#fff;font-weight:600}
.interest-group{margin-top:26px}
.interest-group-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:10px}
.interest-group-head h3{font-size:16px;font-weight:600;margin:0;letter-spacing:.5px}
.interest-group-head span{font-size:11.5px;color:var(--muted);border:1px solid var(--line);border-radius:20px;padding:2px 8px}
.interest-group-head em{font-style:normal;font-size:11.5px;color:#a89aa1;margin-left:auto}
.interest-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(228px,1fr));gap:14px;margin-top:14px}
.interest-card{border:1px solid var(--line);border-radius:12px;padding:16px 17px;background:#fdfcfc;display:flex;flex-direction:column;gap:8px;min-height:108px}
.interest-card h4{font-size:16.5px;font-weight:600;margin:0;overflow-wrap:anywhere;letter-spacing:.3px}
.interest-card .status{align-self:flex-start;font-size:11.5px;padding:3px 9px;border-radius:20px;background:#eee5e9;color:#7e5f6e}
.interest-card p{margin:0;font-size:13.5px;line-height:1.8;color:var(--muted);overflow-wrap:anywhere}
.interest-card .card-foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:8px}
.interest-card time{font-size:11.5px;color:#a89aa1}
.interest-empty{border:1px dashed var(--line);border-radius:12px;padding:24px;text-align:center;margin-top:14px;background:#fbf9fa}
.interest-empty p{font-size:13.5px;color:var(--muted);line-height:1.9;margin:0 0 12px}
.interest-empty button{font-size:12.5px;padding:6px 13px}
.interest-foot{margin:26px 0 8px}
.level-chip{display:inline-block;align-self:flex-start;font-size:11.5px;padding:3px 9px;border-radius:20px;background:#e3eef0;color:#3b6c75;font-weight:600;letter-spacing:.3px}
.level-chip[data-level="学习中"]{background:#eee5e9;color:#7e5f6e}
.level-chip[data-level="在指导下完成"]{background:#e3eef0;color:#3b6c75}
.level-chip[data-level="独立完成"]{background:#dce6d2;color:#516e3c}
.level-chip[data-level="可解释并迁移"]{background:#f3e1cf;color:#865b34}
.finance-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.finance-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:22px 0 26px}
.finance-summary>div{border:1px solid var(--line);border-radius:14px;padding:22px 24px;background:#fff}
.finance-summary span,.finance-summary small{display:block;font-size:13px;color:var(--muted)}
.finance-summary strong{display:block;font:32px/1.1 Georgia,serif;margin:9px 0 6px}
.finance-summary strong.income{color:#3c6b48}
.finance-summary strong.expense{color:#a35c5c}
.finance-accounts,.finance-records{margin-top:0}
.finance-accounts+.finance-records{margin-top:22px}
.finance-account-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;margin-top:18px}
.finance-account{border:1px solid var(--line);border-radius:12px;padding:16px 18px;background:#fdfcfc;display:flex;flex-direction:column;gap:8px;min-height:96px}
.finance-account h4{margin:0;font-size:16px;font-weight:600;letter-spacing:.3px}
.finance-account .balance{font:24px Georgia,serif}
.finance-account .balance.negative{color:#a35c5c}
.finance-account small{font-size:12px;color:var(--muted)}
.finance-account .type-chip{align-self:flex-start;font-size:11.5px;border-radius:20px;padding:2px 9px;background:#eee5e9;color:#7e5f6e}
.finance-account .archive-hint{font-size:11px;color:var(--muted);margin-top:auto}
.finance-records .empty{margin-top:18px}
.finance-day{margin-top:18px}
.finance-day-head{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:10px}
.finance-day-head h4{margin:0;font-size:14.5px;color:#544855;letter-spacing:.5px}
.finance-day-head .sub{font-size:12px;color:var(--muted)}
.finance-row{display:flex;align-items:center;gap:14px;border:1px solid var(--line);border-radius:10px;padding:12px 16px;background:#fdfcfc;margin-top:10px}
.finance-row .tag{display:inline-block;background:#eee5e9;color:#7e5f6e;border-radius:6px;padding:3px 8px;font-size:12px;margin:0}
.finance-row .row-main{flex:1;min-width:0}
.finance-row .row-main strong{display:block;font-size:14.5px;font-weight:600;letter-spacing:.3px}
.finance-row .row-main small{display:block;font-size:12px;color:var(--muted);margin-top:3px}
.finance-row .amount{font:20px Georgia,serif}
.finance-row .amount.income{color:#3c6b48}
.finance-row .amount.expense{color:#a35c5c}
.finance-row .amount.transfer{color:#6a83a8}
.finance-row.transfer{background:#f5f7fb}
.row-side{display:flex;align-items:center;gap:8px}
.finance-row .account-chip{font-size:11.5px;padding:3px 9px;border-radius:20px;background:#f0edf3;color:#6a5f72}
.dialog-form{font-size:13.5px}
.dialog-form .field-label{margin-top:18px}
.day-finance{display:flex;align-items:center;gap:12px;border:1px solid #e7d8c4;border-radius:12px;background:#fbf6ee;padding:13px 17px;margin:14px 0}
.day-finance span{font-size:12.5px;color:#8a7a63}
.day-finance b{font-size:14.5px;color:#5c4a32}
.day-finance button{margin-left:auto}
.knowledge{border-top:1px dashed var(--line);padding-top:9px;margin-top:2px;display:flex;flex-direction:column;gap:6px}
.knowledge-head{font-size:11px;letter-spacing:1px;color:#a89aa1}
.knowledge-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}
.knowledge-list li{font-size:12.5px;line-height:1.6;color:#5d6a5f;padding-left:14px;position:relative}
.knowledge-list li:before{content:"·";position:absolute;left:2px;color:#8da66c;font-weight:700}
.knowledge-list li b{font-weight:600;color:#42504a}
.knowledge-list li small{display:block;color:var(--muted);font-size:11.5px}
.knowledge-add{display:flex;gap:6px}
.knowledge-add input{flex:1;min-width:0;font-size:12px;padding:6px 9px}
.knowledge-add button{padding:4px 10px;font-size:13px;line-height:1.4}
.skill-card{min-height:0}
.finance-category-summary{display:flex;flex-direction:column;gap:7px;margin:16px 0 4px}
.cat-summary-row{display:grid;grid-template-columns:88px 1fr auto;align-items:center;gap:10px;font-size:12.5px}
.cat-summary-row b{color:#544855;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cat-bar{height:9px;border-radius:5px;background:#c9a2a2;min-width:4px}
#finance-tabs ~ .finance-records .cat-bar{background:#b3bfc9}
.cat-amount{color:#7a6a74;font-variant-numeric:tabular-nums}
.month-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 0;padding:9px 13px;border:1px solid var(--line);border-radius:12px;background:#fbfcf9}
.month-bar-label{font-size:12px;color:var(--muted);letter-spacing:1px;white-space:nowrap}
.month-chips{display:flex;flex-wrap:wrap;gap:7px;min-width:0}
.month-chips.scrolling{flex-wrap:nowrap;overflow-x:auto;padding-bottom:3px}
.month-chips.scrolling button{white-space:nowrap}
.month-chips button{border-radius:18px;padding:4px 12px;font-size:12.5px;background:transparent;color:var(--muted)}
.month-chips button:hover{background:#f2edef;color:#755260}
.month-chips button.active{background:var(--green);border-color:var(--green);color:#fff;font-weight:600}
.month-empty{font-size:12.5px;color:var(--muted);padding:4px 0}
.month-bar .ghost{margin-left:auto;border:0;background:transparent;color:var(--muted);font-size:12.5px;padding:4px 8px;white-space:nowrap}
.month-bar .ghost:hover{background:transparent;color:var(--green);text-decoration:underline;text-underline-offset:3px}
.month-group{margin-top:14px;border:1px solid var(--line);border-radius:12px;background:#fbfcf9;overflow:hidden}
.month-head{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:0;background:transparent;border-radius:0;padding:11px 15px}
.month-head:hover{background:#f4f6ef}
.month-head .caret{display:inline-block;color:#9aa892;transition:transform .18s ease;font-size:12px}
.month-head.open .caret{transform:rotate(90deg)}
.month-head b{font-size:14px;font-weight:600;letter-spacing:.5px;color:#4c5a52}
.month-head .count{font-size:11.5px;color:var(--muted);border:1px solid var(--line);border-radius:20px;padding:2px 8px;background:#fff}
.month-group .interest-grid{margin:0;padding:0 15px 16px}
@media(min-width:1400px){.day{height:62px}}
@media(max-width:1120px){.sidebar{width:200px;padding:28px 18px}
main{margin-left:200px;padding:35px 28px}
.journal-layout{grid-template-columns:1fr}
.stats>div{padding:18px}
.brand span{font-size:15px}
.finance-summary{grid-template-columns:1fr}
}
@media(max-width:650px){.sidebar{position:static;width:auto;padding:18px 20px;border-right:0}
.brand{font-size:38px}
.nav-label,.sidebar-note{display:none}
nav{display:flex;gap:4px;margin-top:16px}
.nav{justify-content:center;padding:10px 5px;gap:5px;margin:0}
.nav span{font-size:10px}
main{margin:0;padding:25px 18px}
h1{font-size:22px}
.eyebrow{font-size:9px}
.title-row{align-items:flex-start}
.primary{font-size:12px;padding:11px}
.stats,.finance-summary{gap:8px;margin:25px 0 18px}
.stats>div,.finance-summary>div{padding:13px 9px}
.stats span{font-size:10px}
.stats strong,.finance-summary strong{font-size:24px}
.stats small,.finance-summary small{font-size:9px;line-height:1.5}
.stats em{font-size:9px}
.panel{padding:20px 16px}
.journal-layout{gap:16px}
.context-panel pre{font-size:12px}
footer{font-size:8px;letter-spacing:1px;gap:12px}
.legend{font-size:9px}
dialog{padding:20px}
.interest-grid{grid-template-columns:1fr}
.interest-group-head em{display:none}
.finance-row{flex-direction:column;align-items:flex-start}
.finance-row .row-side{width:100%;justify-content:space-between}
.month-bar{padding:8px 11px}
.month-bar-label{display:none}
.month-head{padding:10px 12px}
.month-group .interest-grid{padding:0 12px 13px}
}


/* 日历记录使用轻柔卡片和左侧时间轴，未知时间单独标明，不按录入时间猜测。 */
.timeline{position:relative;margin:18px 0 4px}.timeline:before{content:"";position:absolute;top:9px;bottom:12px;left:62px;width:1px;background:#e8dfe4}.timeline-row{position:relative;display:grid;grid-template-columns:48px 1fr;gap:28px;padding:0 0 14px}.timeline-time{padding-top:16px;text-align:right;font-size:12px;font-variant-numeric:tabular-nums;color:#8e7a85;white-space:nowrap}.timeline-card{position:relative;border:1px solid #ebe4e8;border-radius:12px;background:#fdfbfc;padding:14px 16px;min-width:0}.timeline-card:before{content:"";position:absolute;left:-21px;top:20px;width:8px;height:8px;border:2px solid #ba9cab;border-radius:50%;background:#fdfbfc}.timeline-card h3{font-size:15px;margin:0 0 7px;font-weight:600}.timeline-card p{font-size:12.5px;line-height:1.75;color:var(--muted);margin:7px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.timeline-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin-bottom:5px}.timeline-card .timeline-amount{margin-left:auto;font-size:14px;font-variant-numeric:tabular-nums;color:#946674}.timeline-card .timeline-amount.income{color:#5d8066}.timeline-empty-time{color:#a1999f;font-size:10px}.record.timeline-record{border:0;padding:0;margin:0}.timeline-card .tag{margin:4px 4px 0 0}
@media(max-width:650px){.timeline:before{left:50px}.timeline-row{grid-template-columns:38px 1fr;gap:24px;padding-bottom:11px}.timeline-time{font-size:11px}.timeline-card{padding:12px}.timeline-card h3{font-size:14px}}

.timeline-day-heading{font-size:12px;font-weight:600;letter-spacing:.5px;color:#8e7a85;margin:12px 0 10px 76px}.timeline-day-heading:first-child{margin-top:0}
@media(max-width:650px){.timeline-day-heading{margin-left:62px}}

.timeline-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:10px}.timeline-actions button{font-size:11px;padding:4px 9px;border-radius:7px;background:#faf7f9}.timeline-actions .danger-link{color:#9a6464}.timeline-actions .danger-link:hover{background:#f7eeee}

.finance-row-actions{display:flex;gap:5px}.finance-row-actions button{font-size:10.5px;padding:4px 8px;border-radius:6px}.finance-row-actions .danger-link{color:#9a6464}
@media(max-width:650px){.finance-row-actions{width:100%}.finance-row-actions button{flex:1}}

body.logged-out{min-height:100vh;background:linear-gradient(135deg,#f8f4f5,#f4f6f2);display:grid;place-items:center;padding:22px}
body.logged-out>.sidebar,body.logged-out>main{display:none}
.login-screen{width:min(100%,420px)}
.login-card{border:1px solid #e9dfe4;border-radius:20px;background:#fff;padding:38px;box-shadow:0 18px 55px #624d5b16}
.login-mark{display:grid;place-items:center;width:48px;height:48px;border-radius:16px;background:#f5edf1;color:#916575;font-size:23px;margin-bottom:18px}
.login-card h1{font-size:28px;margin:8px 0}.login-card>p{color:var(--muted);margin:0 0 24px}
.login-card label{display:block;font-size:13px;color:var(--ink);margin-bottom:8px}.login-card input{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:10px;font:inherit}
.login-card input:focus{outline:2px solid #c7a6b4;outline-offset:1px}.login-card .primary{width:100%;margin-top:10px}
.login-error{min-height:20px!important;color:#a14949!important;font-size:12px;margin:8px 0 0!important}
.logout-button{display:block;margin-top:12px;padding:5px 10px;font-size:11px;border-radius:8px;background:#f6f2f4;color:#765d6b}
.logout-button:hover{background:#eee5ea}
@media(max-width:650px){.login-card{padding:28px 24px}}

.item-actions{display:flex;gap:5px}.item-actions button{font-size:10.5px;padding:4px 8px;border-radius:6px;background:#faf7f9}.item-actions .danger-link{color:#9a6464}
