
:root{--bg:#f6f5f0;--paper:#fffefa;--ink:#252b36;--muted:#697078;--line:#e4e5dd;--indigo:#5355aa;--teal:#287769;--soft:#edf3eb}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
button,select,textarea{font:inherit}
button,select{cursor:pointer}
button{color:inherit}
button:focus-visible,select:focus-visible,summary:focus-visible,a:focus-visible,textarea:focus-visible{outline:3px solid #7477cb;outline-offset:3px}
button{border:1px solid var(--line);background:var(--paper);border-radius:9px;padding:8px 13px}
button:hover{background:#eeeee7}
a{color:var(--indigo)}
.shell{max-width:1460px;margin:auto;padding:26px 40px 40px}
.top{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:20px;gap:16px}
.brand{display:flex;gap:12px;align-items:center;font-weight:700;letter-spacing:.04em}
.mark{display:grid;place-items:center;background:var(--ink);color:#fff;width:35px;height:35px;border-radius:11px;font:25px Georgia}
.topnote,.eyebrow,.minor{font-size:12px;color:var(--muted)}
.topnote{display:flex;gap:9px;align-items:center}
.dot{width:6px;height:6px;background:var(--teal);border-radius:50%}
.hero{display:flex;justify-content:space-between;align-items:end;gap:20px;padding:32px 0 24px}
.eyebrow{letter-spacing:.14em;font-weight:650;color:var(--teal)}
h1{font-size:37px;letter-spacing:-.045em;margin:7px 0 8px;font-weight:650;line-height:1.2}
p{margin:0}
.subtitle{color:var(--muted)}
.pill{display:inline-block;border-radius:20px;background:#ecebf6;color:#59539a;padding:5px 12px;font-size:12px;white-space:nowrap}
.notice{padding:11px 15px;border:1px solid #e2dfc8;background:#f0eee0;border-radius:10px;color:#716644;font-size:12px;margin-bottom:22px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:26px}
.stat{border:1px solid var(--line);border-radius:13px;background:var(--paper);padding:17px 21px}
.stat label{display:block;color:var(--muted);font-size:12px}
.stat strong{font-size:31px;font-weight:550;line-height:1.7;letter-spacing:-.04em}
.stat small{font-size:12px;color:var(--muted);margin-left:8px}
.stat .minor{font-size:11px}
.workspace{display:grid;grid-template-columns:minmax(0,1.28fr) minmax(350px,1fr);gap:22px;align-items:start}
.panel{background:var(--paper);border:1px solid var(--line);border-radius:15px;overflow:hidden}
.panelhead{padding:22px 23px 15px;display:flex;justify-content:space-between;align-items:center;gap:12px}
h2{font-size:20px;margin:0;font-weight:600;letter-spacing:-.025em}
.segmented{display:flex;background:#efefe9;padding:3px;border-radius:9px;gap:2px}
.segmented button{background:transparent;border:0;font-size:12px;padding:5px 10px}
.segmented button[aria-pressed=true]{background:var(--paper);box-shadow:0 1px 3px #00000010}
.toolbar{padding:0 23px 17px;display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.toolbar button{font-size:12px;padding:4px 10px}
.toolbar .spacer{flex:1}
.filter{display:flex;gap:8px;padding:13px 23px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#fafaf5;flex-wrap:wrap;align-items:center}
.filter select{max-width:100%;background:white;border:1px solid var(--line);border-radius:7px;padding:6px 9px;font-size:12px;color:var(--ink)}
.filter label{font-size:11px;color:var(--muted)}
.filter button{font-size:11px;border:0;background:transparent;margin-left:auto;padding:4px}
.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));text-align:center;font-size:11px;color:var(--muted);padding:13px 14px 8px}
.days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;padding:0 14px 15px}
.day{position:relative;min-height:88px;border:1px solid transparent;border-radius:8px;text-align:left;padding:8px 7px;background:#f7f7f1;display:flex;flex-direction:column;align-items:start;gap:5px}
.day.blank{background:transparent}
.day.has-events{background:#dddff4}
.day.has-events:hover{background:#dddff4;box-shadow:inset 0 0 0 1px #b2b5da}
.day.selected{border:1.5px solid var(--indigo);box-shadow:inset 0 0 0 1px var(--indigo)}
.day.has-events.selected:hover{box-shadow:inset 0 0 0 1px var(--indigo)}
.day .num{font-size:12px;line-height:1.1}
.day .count{font-size:10px;color:#206356;line-height:1.25}
.day .markers{display:flex;gap:3px;flex-wrap:wrap;margin-top:auto}
.marker{display:block;width:6px;height:6px;border-radius:2px;background:#6c6db4}
.marker.banked{background:#529385}
.marker.unknown{background:#aaa993}
.marker.planned{background:transparent;border:1px solid #9b986f}
.day .planlabel{font-size:9px;color:#625836;line-height:1.2}
.legend{border-top:1px solid var(--line);padding:13px 22px;display:flex;align-items:center;gap:15px;flex-wrap:wrap;font-size:10px;color:var(--muted)}
.fillkey{display:inline-block;width:12px;height:12px;border-radius:3px;background:#dddff4;border:1px solid #b2b5da}
.legend span{display:inline-flex;gap:5px;align-items:center}
.legend .minor{font-size:10px;width:100%}
.detailtop{padding:22px 24px 19px;border-bottom:1px solid var(--line);background:#fcfcf7}
.detailtop .eyebrow{font-size:10px;margin-bottom:5px}
.detailtop h2{font-size:23px;margin-bottom:5px}
.detailbody{padding:19px 23px}
.event+.event{border-top:1px solid var(--line);margin-top:26px;padding-top:22px}
.eventheading{display:flex;gap:8px;justify-content:space-between;align-items:start}
.event h3{font-size:15px;margin:0}
.eventid{color:var(--muted);font-size:10px;letter-spacing:.06em;margin-bottom:6px}
.badges{display:flex;gap:5px;flex-wrap:wrap;margin:10px 0}
.badge{font-size:10px;border-radius:5px;padding:2px 7px;background:#eeedf8;color:#5956a4}
.badge.banked{background:#e4f1e9;color:#377665}
.badge.unknown{background:#efeee5;color:#726e53}
.badge.state{background:#f0f0ec;color:#667065}
.eventtime{font-size:12px;margin-top:6px}
.eventnote{font-size:11px;color:var(--muted);margin:5px 0 12px}
.sourcelink{font-size:11px}
.post{background:#f7f7f2;border:1px solid #e8e9e0;border-radius:10px;padding:13px 14px;margin-top:10px;scroll-margin-top:15px}
.posthead{display:flex;align-items:center;gap:7px;font-size:11px;margin-bottom:5px;font-weight:600}
.posticon{width:22px;height:22px;border-radius:50%;background:#e5e3d9;display:grid;place-items:center;color:#777362;font-size:10px}
.posttime{display:block;font-size:11px;color:var(--indigo);margin-bottom:9px}
.post p{font-size:12px;line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere}
.postfooter{margin-top:10px;font-size:10px;color:var(--muted)}
.empty{padding:50px 15px;text-align:center;color:var(--muted)}
.empty b{display:block;color:var(--ink);font-size:16px;margin:14px 0 6px}
.pending{margin-top:20px;padding:20px 23px}
.pending h2{font-size:16px}
.pendingrow{margin-top:13px;padding-top:13px;border-top:1px solid var(--line)}
.pendingrow button{width:100%;text-align:left;padding:12px;font-size:12px}
.pendingrow button span{display:block;font-size:10px;color:var(--muted);margin-top:3px}
.yeargrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:19px 13px;padding:19px}
.minimonth h3{font-size:11px;margin:0 0 7px}
.minidays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}
.heat{padding:0;border:0;border-radius:3px;aspect-ratio:1;background:#efefe8;min-width:0;font-size:0}
.heat.one{background:#b5b1e0}
.heat.many{background:#6660b1}
.heat.information{box-shadow:inset 0 0 0 1px #7770bc}
.heat.selected{outline:2px solid var(--indigo);outline-offset:1px}
.heat:hover{outline:2px solid var(--indigo)}
.heatblank{aspect-ratio:1}
.yearnote{padding:0 20px 16px;font-size:11px;color:var(--muted)}
.bottom{margin-top:25px;border-top:1px solid var(--line);padding-top:19px;color:var(--muted);font-size:11px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
[hidden]{display:none!important}

@media(min-width:1200px){.shell{padding-left:55px;padding-right:55px}
.day{min-height:94px}
}
@media(max-width:960px){.shell{padding:20px}
.workspace{grid-template-columns:minmax(0,1fr)}
.detailbody{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.event+.event{border-top:0;border-left:1px solid var(--line);padding-top:0;padding-left:20px;margin:0}
.yeargrid{grid-template-columns:repeat(4,minmax(0,1fr))}
.stats{gap:9px}
.stat{padding:14px}
}
@media(max-width:560px){.shell{padding:16px 12px}
.top{padding-bottom:15px}
.topnote{font-size:10px}
.hero{padding-top:25px;display:block}
h1{font-size:32px}
.hero .pill{margin-top:14px}
.subtitle{font-size:12px}
.stats{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:19px}
.stat strong{font-size:28px}
.panelhead{padding:18px 15px 12px}
h2{font-size:18px}
.toolbar{padding:0 15px 15px}
.filter{padding:11px 12px;gap:6px}
.filter label{font-size:10px}
.filter select{padding:5px;font-size:11px}
.filter button{margin-left:0}
.days{gap:3px;padding:0 8px 12px}
.week{padding-left:8px;padding-right:8px}
.day{min-height:73px;padding:7px 4px}
.day .num{font-size:11px}
.day .count{font-size:9px}
.legend{padding:12px 15px;gap:10px}
.detailtop{padding:19px}
.detailbody{display:block;padding:18px}
.event+.event{border-left:0;border-top:1px solid var(--line);padding:22px 0 0;margin-top:23px}
.yeargrid{grid-template-columns:repeat(3,minmax(0,1fr));padding:15px;gap:16px 12px}
.pending{padding:18px}
.notice{font-size:11px}
.bottom{font-size:10px}
.brand{font-size:12px}
}


/* 真实公开数据：内容安全换行、折叠原文和触摸控件。 */
.panel,.workspace>div,.detailpanel{min-width:0}

.statnote{margin-bottom:10px}

.post summary{display:flex;gap:7px;align-items:center;flex-wrap:wrap;min-height:30px;list-style-position:inside}

.post .posttime{margin:7px 0 0}

.posttext{margin-top:12px!important}

.postfooter{overflow-wrap:anywhere}

.eventid{overflow-wrap:anywhere}

.eventnote,.eventtime,.detailcaption{overflow-wrap:anywhere}

.coverage{margin-top:24px;background:#eeeee7;border:1px solid var(--line);border-radius:10px;padding:14px 18px}

.coveragebody{padding-top:12px;color:var(--muted);font-size:12px;overflow-wrap:anywhere}

.coveragebody p+p{margin-top:6px}

.coveragebody ul{padding-left:18px}

button,select{min-height:36px}

.toolbar button,.segmented button{min-height:36px}

.pendingrow button[aria-pressed=true]{border-color:var(--indigo)}

.error{border-color:#d1aaa4;background:#f4e8e4;color:#81453b}

@media(max-width:560px){button,select{min-height:44px}
.filter button{min-height:44px}
.toolbar button,.segmented button{min-height:40px}
.yeargrid{grid-template-columns:repeat(2,minmax(0,1fr))}
.heat{min-height:0}
.topnote{max-width:110px;text-align:right}
.day .count,.day .planlabel{overflow-wrap:anywhere}
.post{padding:12px}
.detailbody{padding:16px}
.stat{padding:13px 12px}
.stat .minor{line-height:1.5}
}

@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}
}


.source{margin-top:14px}.source>.posttime{font-size:11px;line-height:1.7;margin-bottom:5px}.source>.post{margin-top:0}
/* 小屏先展示月历，再展示所选详情，最后才是全局待核实列表。 */
@media(max-width:960px){.workspace>div{display:contents}.detailpanel{grid-row:2}.pending{grid-row:3;margin-top:0}}

/* 密集全年格保留概览；月份标题提供更大的触摸入口。 */
.monthdrill{min-height:0;width:100%;padding:0;border:0;border-radius:4px;background:transparent;text-align:left;font:inherit}
@media(max-width:560px){.monthdrill{min-height:44px;padding:0 4px}}
/* 热力格由七列网格定尺寸，避免普通按钮最小高度把桌面小格挤叠。 */
.heat{width:100%;min-height:0}
