/* 公开页 / 朋友页 / 登录页：只用 tokens.css 的变量，不写颜色字面量。 */
a{color:var(--c-brand);text-decoration:none}a:focus-visible,button:focus-visible{outline:2px solid var(--c-brand);outline-offset:3px}
.wrap{max-width:var(--w-page);margin:0 auto;padding:0 var(--s4)}@media(max-width:720px){.wrap{padding:0 var(--s3)}}
.hd{border-bottom:1px solid var(--c-line)}.hd .wrap{display:flex;align-items:center;justify-content:space-between;min-height:72px;gap:var(--s2)}
.mark{font:300 34px/1 var(--f-mark);color:var(--c-text);letter-spacing:-.5px;display:inline-flex;align-items:center;min-height:var(--tap)}.mark i{color:var(--c-brand);font-style:normal}
.nav{display:flex;gap:var(--s3);align-items:center}.nav a,.linkbtn{color:var(--c-muted);font:var(--fw-ui) var(--fs-meta)/1 var(--f-sans);min-height:var(--tap);min-width:var(--tap);display:inline-flex;align-items:center;justify-content:center;background:none;border:0;padding:0;cursor:pointer}
.inline{display:inline}
.hero{padding:var(--s8) 0 var(--s6)}.eyebrow{font-size:var(--fs-meta);font-weight:var(--fw-ui);color:var(--c-brand);margin-bottom:var(--s2)}
h1{font:var(--fw-head) var(--fs-h1)/1.35 var(--f-serif);margin-bottom:var(--s2)}h2{font:var(--fw-head) var(--fs-h2)/1.5 var(--f-serif);margin-bottom:var(--s1)}
.lead{font-size:var(--fs-body);color:var(--c-muted);max-width:var(--w-read)}
.meta{font-size:var(--fs-meta);font-weight:var(--fw-ui);color:var(--c-muted)}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:var(--s6);padding:var(--s4) 0 var(--s8);border-top:1px solid var(--c-line)}.cols p{color:var(--c-muted)}
.narrow{max-width:var(--w-read);padding-top:var(--s8)}.narrow form{margin-top:var(--s4)}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:var(--tap);padding:0 var(--s3);border-radius:var(--r);font:var(--fw-ui) 15px/1 var(--f-sans);border:1px solid var(--c-brand);background:var(--c-brand);color:var(--c-on-brand);cursor:pointer}.btn.ghost{background:none;color:var(--c-brand)}
input{font:var(--fw-ui) 16px/1.4 var(--f-sans);min-height:var(--tap);padding:0 var(--s2);border:1px solid var(--c-line-strong);border-radius:var(--r);color:var(--c-text);background:var(--c-bg)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.login-box{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s4);padding:var(--s2)}
.login-box form{display:flex;flex-direction:column;gap:var(--s2);width:min(320px,100%)}.login-box .btn{width:100%}
.msg{font-size:var(--fs-meta);font-weight:var(--fw-ui);color:var(--c-up);text-align:center}
.tbl{overflow-x:auto;margin-bottom:var(--s8)}table{width:100%;border-collapse:collapse;font-size:var(--fs-data)}
th{text-align:left;font-weight:var(--fw-ui);color:var(--c-muted);font-size:var(--fs-meta);padding:var(--s1) var(--s2) var(--s1) 0;border-bottom:1px solid var(--c-line)}
td{padding:var(--s2) var(--s2) var(--s2) 0;border-bottom:1px solid var(--c-line);font-weight:var(--fw-data);vertical-align:top}
.nm{display:block}.cd{display:block;font-size:var(--fs-meta);color:var(--c-muted)}
.row{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center;margin:0 0 var(--s3)}
.notice{background:var(--c-brand-wash);border-radius:var(--r);padding:var(--s2);margin-bottom:var(--s3);font-size:var(--fs-meta);font-weight:var(--fw-ui);overflow-wrap:anywhere}.notice code{display:block;margin-top:var(--s1)}
@media(max-width:720px){.mark{font-size:26px}.hero{padding:var(--s6) 0 var(--s4)}.cols{grid-template-columns:1fr;gap:var(--s4)}
 table,thead,tbody,tr,td,th{display:block}thead{display:none}tr{border-bottom:1px solid var(--c-line);padding:var(--s2) 0;display:grid;grid-template-columns:1fr auto;gap:4px var(--s2)}td{border:0;padding:0}td:nth-child(2),td:nth-child(3){font-size:var(--fs-meta);color:var(--c-muted)}td:nth-child(4){grid-row:1;grid-column:2;text-align:right}}
