/* 作者、最后修改者：jiayu。沿用纸色与墨绿，优先阅读、输入和可辨认的交互状态。 */
:root{--ink:#183d35;--green:#285742;--paper:#f6f3ea;--muted:#5d6b60;--gold:#9a7130;--line:#d9dfd2;--white:#fffefa;--red:#a03931;--soft:#e9eee4;font-family:"Microsoft YaHei","PingFang SC",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none;font-size:16px;line-height:1.65}
*{box-sizing:border-box}body{margin:0}button,input,textarea{font:inherit}a{color:inherit;text-underline-offset:4px}button,a,input,textarea{touch-action:manipulation}button,a{transition:background-color .16s ease,border-color .16s ease,color .16s ease}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--gold);outline-offset:4px}button,input,textarea{min-height:44px}button:disabled{cursor:not-allowed;opacity:.6}main:focus{outline:none}.skip-link{position:absolute;left:20px;top:-80px;z-index:30;background:var(--ink);color:white;padding:12px 18px}.skip-link:focus{top:12px}
header{max-width:1200px;margin:auto;padding:22px 36px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);gap:20px}.brand{text-decoration:none;font-family:"Songti SC","SimSun",serif;font-size:25px;font-weight:700;white-space:nowrap}.brand span{display:block;font:10px/2 sans-serif;letter-spacing:3px;color:var(--muted)}nav{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:14px}nav a{display:inline-flex;align-items:center;min-height:44px;padding:8px 12px;text-decoration:none;border-bottom:2px solid transparent}nav a:hover{background:var(--soft)}nav a[aria-current=page]{border-color:var(--green);font-weight:700}main{max-width:1128px;margin:0 auto;padding:42px 0 64px;min-height:75vh;overflow-wrap:anywhere}
h1,h2,h3,p{margin-top:0}h1{font-family:"Songti SC","SimSun",serif;font-size:54px;line-height:1.3;font-weight:700;margin-bottom:24px}h1.small{font-size:34px;margin-bottom:12px;line-height:1.45}h2{font-family:"Songti SC","SimSun",serif;font-size:25px;line-height:1.5;margin-bottom:12px}h3{font-size:18px}p{line-height:1.85}.lead{font-size:17px;color:var(--muted);max-width:32em}.fine{font-size:14px;color:var(--muted);line-height:1.8}.panel{background:var(--white);border:1px solid var(--line);border-radius:12px;padding:30px}.panel h2{margin-bottom:8px}.hero{display:grid;grid-template-columns:1.12fr 1fr;gap:80px;align-items:start}.hero-copy{padding:28px 0}.notice{border-top:1px solid var(--line);padding-top:18px;margin-top:28px}.status{display:inline-block;padding:5px 10px;background:#e4ebde;font-size:13px;line-height:1.7;margin-bottom:18px;white-space:nowrap;border-radius:4px}.status.demo{color:#714719;background:#f5e8cb}
label{display:block;font-size:14px;margin:18px 0 8px;font-weight:600}input,textarea{display:block;width:100%;min-width:0;border:1px solid #a7b6a1;background:var(--white);border-radius:6px;padding:11px 13px;color:var(--ink)}input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}input:focus,textarea:focus{outline:2px solid var(--green);outline-offset:2px}textarea{min-height:210px;resize:vertical;line-height:1.85}textarea[aria-invalid=true]{border-color:var(--red)}input[readonly]{background:#eef0e7}button,.button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;border:1px solid var(--green);background:var(--green);color:white;padding:11px 20px;border-radius:6px;cursor:pointer;font-size:14px;text-decoration:none;gap:7px}button:hover:not(:disabled),.button:hover{background:var(--ink)}.secondary{color:var(--ink);background:transparent;border-color:#a7b6a1}.secondary:hover:not(:disabled){background:var(--soft)}.danger{background:transparent;color:var(--red);border-color:#c5877f}.danger:hover:not(:disabled){background:#f6e6e1}.wide{width:100%;margin-top:14px}.row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.between{justify-content:space-between}.alert{color:var(--red);line-height:1.8;margin:14px 0}.alert:empty{display:none}.success{color:var(--green);border-top:1px solid var(--line);padding-top:14px;margin:20px 0 0}.identity{display:grid;grid-template-columns:1fr 1fr;gap:16px}.identity label{margin-top:8px}.note{margin:22px 0 0;font-size:13px;color:var(--muted);line-height:1.8}
.checkin-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:25px}.checkin-heading .status{margin-top:6px}.greeting{margin-bottom:0}.checkin-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:48px;align-items:start}.editor-panel{min-width:0}.save-state{font-size:14px;color:var(--green);margin-bottom:18px}.editor-meta{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin:8px 0 12px}.editor-meta .fine{font-size:12px}.counter{font-size:12px;color:var(--muted);white-space:nowrap}.over-limit{color:var(--red);font-weight:700}.reading-sidebar{padding:20px 0}.reading-sidebar h2{font-size:24px}.schedule{margin-bottom:20px}.sidebar-note{margin-top:22px}.text-link{display:inline-flex;align-items:center;min-height:44px;font-size:14px;font-weight:600}.stats{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:16px 0 22px;border-bottom:1px solid var(--line);margin:16px 0 22px}.stat strong{font-size:34px;line-height:1.25;font-weight:500;display:block;font-variant-numeric:tabular-nums}.stat small{font-size:16px;color:var(--muted);margin-left:4px}.stat span{display:block;font-size:13px;color:var(--muted);margin-top:7px}.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin:20px 0 14px}.weekday{text-align:center;font-size:12px;color:var(--muted);padding-bottom:7px}.day{padding:9px 1px;border:1px solid var(--line);text-align:center;font-size:12px;border-radius:5px;min-height:56px}.day strong{font-size:12px;font-weight:500;white-space:nowrap}.day.done{background:var(--green);color:white;border-color:var(--green)}.day.today{outline:2px solid var(--gold);outline-offset:2px}.day span{display:block;font-size:10px;margin-top:4px;white-space:nowrap}.calendar-legend{font-size:12px;color:var(--muted);line-height:1.8;margin-bottom:14px}.empty-small{font-size:14px;color:var(--muted);padding:20px 0}
.page-head{max-width:800px}.history-list{max-width:800px;margin-top:32px}.entry{border-top:1px solid var(--line);padding:24px 0}.entry h3{margin-bottom:14px}.entry h3 a{display:inline-flex;align-items:center;min-height:44px;font-size:14px;font-weight:400;margin-left:8px}.entry pre{white-space:pre-wrap;overflow-wrap:anywhere;font:16px/1.95 "Microsoft YaHei",sans-serif;margin-bottom:16px}.entry time{font-size:13px;color:var(--muted)}.empty{padding:30px 0;color:var(--muted)}.empty h2{color:var(--ink)}.summary-state{font-size:16px;font-weight:600;line-height:1.85;margin:24px 0 14px}.summary-preview{padding:0;margin:36px 0 0;max-width:800px;counter-reset:summary;list-style:none}.summary-preview li{display:grid;grid-template-columns:35px 220px 1fr;align-items:baseline;gap:16px;padding:22px 0;border-top:1px solid var(--line);counter-increment:summary}.summary-preview li::before{content:counter(summary,decimal-leading-zero);font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}.summary-preview h2{font-family:inherit;font-size:17px;margin:0;font-weight:600}.summary-preview p{font-size:14px;color:var(--muted);margin:0}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;margin-top:35px}.card{min-width:0}.card img{width:100%;height:auto;display:block;border-radius:8px}.card .row{margin:12px 0}.card h3{font-size:14px;margin:0}.download-link{display:inline-flex;align-items:center;min-height:44px;font-size:14px}
.admin-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;margin:30px 0}.admin-grid .panel{padding:25px;min-width:0}.toolbar{display:flex;gap:12px;flex-wrap:wrap;margin:24px 0}.table-scroll{overflow:auto;border:1px solid var(--line);border-radius:6px;max-height:560px}table{width:100%;border-collapse:collapse;background:var(--white);font-size:13px}th,td{padding:13px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}th{background:#e8eddf;position:sticky;top:0;z-index:1;white-space:nowrap}td.text{white-space:pre-wrap;min-width:210px;max-width:500px;overflow-wrap:anywhere}td button{padding:8px 12px;font-size:12px;margin:2px 0}details{margin:30px 0}summary{cursor:pointer;font-size:19px;min-height:44px}.login-admin{max-width:470px;margin:0 auto}input[type=file]{padding:10px;font-size:13px;max-width:100%}.load-error{max-width:650px;padding:36px 0}footer{max-width:1200px;margin:0 auto;padding:25px 36px;border-top:1px solid var(--line);font-size:12px;color:var(--muted);display:flex;justify-content:space-between;gap:20px}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink);color:white;padding:12px 22px;max-width:90%;z-index:20;border-radius:6px}
@media(max-width:1180px){main{margin:0 32px}.hero{gap:45px}h1{font-size:46px}.checkin-layout{gap:30px}}
@media(max-width:760px){header{padding:16px 20px;align-items:start;flex-wrap:wrap;gap:12px}.brand{font-size:22px}nav{gap:4px;font-size:13px;width:100%;justify-content:space-between}nav a{padding:8px 9px}nav button{padding:8px 13px}main{margin:0 20px;padding:28px 0 44px}h1{font-size:38px;margin-bottom:18px}h1.small{font-size:28px;margin-bottom:9px}.hero{grid-template-columns:1fr;gap:28px}.hero-copy{padding:10px 0}.login-hero .login-panel{order:-1}.lead{font-size:16px}.panel{padding:23px 20px}.checkin-heading{display:block;margin-bottom:18px}.checkin-heading .status{margin:12px 0 0}.checkin-layout{grid-template-columns:minmax(0,1fr);gap:22px}.checkin-layout .reading-sidebar{padding:18px 0}.editor-panel h2{font-size:22px}.save-state{margin-bottom:10px}.identity{gap:12px}.identity label{margin-top:4px}textarea{min-height:200px}.stats{gap:24px}.stat strong{font-size:32px}.calendar{gap:6px}.cards{grid-template-columns:minmax(0,1fr);gap:28px;max-width:440px;margin-left:auto;margin-right:auto}.summary-preview li{grid-template-columns:26px minmax(0,1fr);gap:5px 12px;padding:20px 0}.summary-preview p{grid-column:2}.admin-grid{grid-template-columns:minmax(0,1fr)}.toolbar button,.toolbar .button{flex:1 1 120px;font-size:13px;padding:11px}.row{gap:10px}footer{padding:20px;display:block}footer span{display:block;margin-top:8px}}
@media(prefers-reduced-motion:reduce){button,a{transition:none}}
