.planner-page{max-width:1600px;padding:36px 5% 50px}.planner-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:30px}.planner-heading h1{border:0;padding:0;margin:10px 0;font-size:34px}.planner-heading p,.record-heading p{font-size:12px;line-height:1.8;color:#87917e;margin:8px 0}.local-badge{font-size:10px;border:1px solid #dfe6d6;border-radius:20px;padding:9px 13px;color:#7e8e70;white-space:nowrap}.planner-layout{display:grid;grid-template-columns:320px minmax(0,1fr);gap:24px}.planner-card{border:1px solid #dde4d4;border-radius:12px;background:#fcfdf7;padding:24px;min-width:0}.planner-card h2{font-size:18px;line-height:1.5;font-weight:500;margin:0 0 20px}.planner-sentence{font-size:12px;color:#829077;margin:0 0 18px}.plan-editor label,.actual-form label{display:block;font-size:11px;color:#7e8b73;margin:15px 0 7px}.planner-label span{float:right}.plan-editor input,.plan-editor select,.actual-form input,.actual-form select{display:block;width:100%;min-width:0;border:1px solid #ccd7c5;border-radius:6px;background:#fffefa;height:43px;padding:9px 11px;color:var(--ink);font-size:14px}.planner-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.suffix-input{position:relative}.suffix-input input{padding-right:30px}.suffix-input>span{position:absolute;right:11px;top:12px;color:#8f9c83;font-size:12px}.planner-note{color:#8d9982;font-size:10px;line-height:1.9;margin:15px 0}.planner-error{font-size:11px;color:#a16b50;line-height:1.8;margin:8px 0}.planner-error:empty{display:none}.plan-editor .run-button{margin-top:18px;font-size:12px;padding:14px 16px}.projection-title{display:flex;justify-content:space-between;align-items:center;gap:12px}.projection-title h2{font-family:"Songti SC","STSong",serif;font-size:22px;margin:9px 0 0}.projection-title>span{color:#929d85;font-size:10px;white-space:nowrap}.forecast-stats{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:18px;margin:30px 0}.forecast-stats span,.progress-stats span{display:block;font-size:10px;color:#8d9980;margin-bottom:10px}.forecast-stats strong{font-family:Arial,sans-serif;font-size:22px;font-weight:400;overflow-wrap:anywhere}.forecast-stats>div:first-child strong{font-size:30px}.planner-chart-toolbar{border-top:1px solid var(--line);padding-top:17px;display:flex;justify-content:space-between;align-items:center;gap:12px}.projection-legend{display:flex;gap:15px;font-size:10px;color:#89967d}.projection-legend span{display:flex;align-items:center;gap:6px}.projection-legend i{width:18px;border-top:2px dashed #66864e}.projection-legend .actual-line{border-top:2px solid #b68d62}.projection-chart-wrap{position:relative;height:320px;margin-top:15px}#projection-chart{width:100%;height:100%;display:block}.current-progress{border-top:1px solid var(--line);padding-top:21px;margin-top:18px}.current-progress h3{font-size:15px;font-weight:500;margin:9px 0 13px}.current-progress small{font-size:10px;font-weight:400;color:#929e85;margin-left:12px}.progress-track{height:4px;border-radius:5px;background:#e6ebde;overflow:hidden;margin-bottom:20px}.progress-track>span{display:block;height:100%;background:#93aa75;border-radius:5px}.progress-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.progress-stats strong{font:16px Arial,sans-serif;overflow-wrap:anywhere}.actual-section{margin-top:24px}.record-heading h2{margin:8px 0}.actual-form{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:16px;align-items:end}.actual-form .run-button{height:43px;gap:20px;padding:10px 17px;font-size:12px}.record-table-wrap{overflow-x:auto}.record-table{border-collapse:collapse;width:100%;font-size:11px;text-align:left;white-space:nowrap}.record-table th{font-weight:400;color:#929c86;padding:15px 12px;border-bottom:1px solid var(--line)}.record-table td{padding:15px 12px;color:#627456;border-bottom:1px solid #edf0e7}.record-delete{border:0;background:none;font-size:10px;color:#9b8164;padding:4px;cursor:pointer}.records-empty{text-align:center;color:#96a089;font-size:11px;line-height:1.9;padding:28px 10px}.projection-method{font-size:10px;line-height:2;color:#909d82;margin-top:22px;max-width:1100px}.projection-method summary{cursor:pointer;font-size:11px}.projection-method p{margin:9px 0}.plan-editor input:focus,.plan-editor select:focus,.actual-form input:focus,.actual-form select:focus{outline:2px solid #b1c69c;outline-offset:2px}
@media(max-width:1100px){.planner-layout{grid-template-columns:280px minmax(0,1fr);gap:16px}.planner-card{padding:20px}.forecast-stats{gap:10px}.forecast-stats strong{font-size:17px}.forecast-stats>div:first-child strong{font-size:23px}.projection-title{display:block}.projection-title>span{display:block;margin-top:12px}.actual-form{grid-template-columns:1fr 1fr}.actual-form .run-button{justify-content:center}.progress-stats{grid-template-columns:1fr 1fr}}
@media(max-width:800px){.planner-page{padding:26px 18px 40px}.planner-heading{display:block}.planner-heading h1{font-size:29px}.local-badge{display:inline-block;margin-top:12px}.planner-layout{grid-template-columns:1fr}.plan-editor{max-width:none}.forecast-stats{grid-template-columns:1fr 1fr}.forecast-stats>div:first-child{grid-column:1/-1}.forecast-stats>div:first-child strong{font-size:34px}.planner-chart-toolbar{flex-wrap:wrap;gap:18px}.actual-form{gap:10px}.projection-legend{font-size:9px}.projection-title h2{font-size:22px}.current-progress small{display:block;margin:8px 0}.progress-stats{gap:20px}.actual-section{padding:20px 16px}.planner-heading p{max-width:290px}}

.projection-range-control{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:16px;font-size:10px;color:#88967c}.projection-range-control select{background:transparent;border:1px solid #d6dece;border-radius:5px;padding:5px 8px;color:#69815a;font-size:10px}
.record-table-wrap{position:relative}.actual-form>div{min-width:0}

.projection-chart-label{font-size:12px;font-weight:550;color:var(--green)}.progress-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.gap-positive,.record-table td.gap-positive{color:#bd514b}.gap-negative,.record-table td.gap-negative{color:#43805a}.actual-form{grid-template-columns:1fr 1.3fr auto}@media(max-width:800px){.actual-form{grid-template-columns:1fr 1fr}.actual-form .run-button{grid-column:1/-1}.progress-stats{grid-template-columns:1fr;gap:18px}}
