:root {
  --bg:#F8FAFC; --surface:#FFFFFF; --ink:#16283F; --ink-2:#34465C; --navy:#1E3A5F;
  --accent:#2864B4; --accent-hover:#205394; --accent-soft:#EDF4FC; --border:#E5E9F0;
  --muted:#788596; --muted-2:#A4AEBC; --subtle:#F2F5F9; --danger:#BA5862; --danger-soft:#FBF0F1;
  --success:#43856C; --success-soft:#ECF6F0; --warning:#A38240; --warning-soft:#FAF5E9;
  --status-ongoing:#B08B45; --status-done:#4C8C75; --status-dropped:#A0A9B5;
  --graph-grid:#D9E2ED; --overlay:rgba(16,34,55,.34); --shadow:0 2px 6px rgba(22,40,63,.035);
  --shadow-raised:0 8px 24px rgba(22,40,63,.08); --shadow-modal:0 24px 80px rgba(22,40,63,.18);
  --heat-0:#EFF3F8; --heat-1:#DCE9F8; --heat-2:#AFCBEC; --heat-3:#739ED6; --heat-4:#2864B4;
  --radius:10px; --ease:cubic-bezier(.2,.8,.2,1);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC","Microsoft YaHei",sans-serif;
  color:var(--ink); background:var(--bg); font-size:14px; font-weight:400; line-height:1.6;
  -webkit-font-smoothing:antialiased; color-scheme:light;
}
* { box-sizing:border-box; }
body { margin:0; min-width:320px; }
button,input,select,textarea { font:inherit; }
button,a,input,select,textarea { -webkit-tap-highlight-color:transparent; }
button { cursor:pointer; color:inherit; }
button:disabled { opacity:.45; cursor:not-allowed; }
button { touch-action:manipulation; }
a { color:var(--accent); text-decoration:none; }
a:hover { text-decoration:underline; }
input,textarea,select { width:100%; min-width:0; border:1px solid var(--border); border-radius:8px; padding:9px 12px; color:var(--ink); background:var(--surface); outline:none; transition:border-color .15s,box-shadow .15s; }
input,select { min-height:40px; }
textarea { resize:vertical; line-height:1.7; min-height:96px; }
input:focus,select:focus,textarea:focus { border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); }
input::placeholder,textarea::placeholder { color:var(--muted-2); }
input[type=checkbox] { width:16px; min-height:16px; accent-color:var(--accent); }
:focus-visible { outline:2px solid var(--accent); outline-offset:3px; }
h1,h2,h3,p { margin:0; }
h1 { font-size:22px; line-height:1.4; letter-spacing:-.4px; font-weight:600; }
h2 { font-size:16px; line-height:1.5; font-weight:600; }
h3 { font-size:16px; font-weight:600; }
svg { flex-shrink:0; vertical-align:middle; }
.hidden { display:none!important; }
.muted { color:var(--muted); }
.preserve { white-space:pre-wrap; overflow-wrap:anywhere; }
.full { grid-column:1/-1; }
.push-right { margin-left:auto; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); border:0; }
.button { border:1px solid transparent; border-radius:8px; min-height:40px; padding:8px 16px; display:inline-flex; gap:8px; justify-content:center; align-items:center; font-size:13px; font-weight:600; white-space:nowrap; transition:background .18s var(--ease),transform .18s var(--ease),box-shadow .18s; }
.button:hover { text-decoration:none; }
.button:active,.icon-button:active,.segment:active { transform:translateY(1px) scale(.98); }
.button.primary { background:var(--navy); color:var(--surface); }
.button.primary:hover { background:var(--ink); box-shadow:var(--shadow-raised); }
.button.secondary { border-color:var(--border); background:var(--surface); color:var(--ink-2); }
.button.secondary:hover { border-color:var(--muted-2); background:var(--bg); }
.button.small { min-height:36px; padding:6px 12px; font-size:12px; }
.button.danger { background:var(--danger); color:var(--surface); }
.text-button { border:0; background:transparent; color:var(--accent); font-size:12px; padding:6px; display:inline-flex; align-items:center; gap:4px; border-radius:5px; }
.text-button:hover { background:var(--accent-soft); text-decoration:none; }
.text-button.danger,.danger { color:var(--danger); }
.text-button.danger:hover { background:var(--danger-soft); }
.icon-button { display:inline-flex; align-items:center; justify-content:center; border:1px solid var(--border); background:var(--surface); border-radius:8px; min-width:36px; height:36px; font-size:22px; }
.icon-button:hover { background:var(--subtle); }
.surface { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); box-shadow:var(--shadow); }
.eyebrow { font-size:11px; font-weight:600; letter-spacing:.6px; color:var(--muted); }
.count-badge { display:inline-flex; align-items:center; justify-content:center; min-width:22px; min-height:20px; padding:0 6px; border-radius:5px; background:var(--subtle); color:var(--muted); font-size:11px; font-weight:500; }
.color-dot,.status-dot { display:inline-block; height:7px; width:7px; border-radius:50%; background:var(--member,var(--accent)); flex-shrink:0; }
.avatar { width:44px; height:44px; display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; border-radius:10px; background:var(--member); color:var(--surface); font-size:18px; font-weight:500; }
.avatar.small { width:28px; height:28px; border-radius:7px; font-size:12px; }
.member-dots { display:inline-flex; align-items:center; padding-left:4px; }
.member-dot { width:27px; height:27px; display:inline-flex; align-items:center; justify-content:center; background:var(--member); color:var(--surface); border:2px solid var(--surface); border-radius:50%; margin-left:-4px; font-size:10px; }
/* 登录 / 全局壳 */
.login-page { min-height:100vh; min-height:100dvh; display:grid; place-items:center; padding:32px 16px; background:var(--bg); }
.login-card { width:100%; max-width:420px; padding:40px; border:1px solid var(--border); border-radius:12px; background:var(--surface); box-shadow:var(--shadow-raised); }
.login-brand { display:flex; align-items:center; gap:12px; margin-bottom:32px; }
.brand-mark { display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; border-radius:8px; background:var(--navy); color:var(--surface); font-size:20px; font-weight:600; }
.login-brand .brand-mark { width:48px; height:48px; border-radius:10px; font-size:27px; }
.login-brand h1 { font-size:22px; letter-spacing:2px; }
.login-brand p { font-size:11px; letter-spacing:1px; color:var(--muted); margin-top:3px; }
.login-title { margin-bottom:24px; }
.login-title h2 { font-size:18px; }
.login-title p { color:var(--muted); margin-top:8px; font-size:13px; }
.login-card .field { margin-bottom:16px; }
.login-card .button.primary { width:100%; margin-top:8px; }
.login-hint { padding-top:24px; margin-top:24px; border-top:1px solid var(--border); color:var(--muted); font-size:12px; }
.login-hint p { margin:8px 0; }
.login-hint code { color:var(--ink-2); background:var(--subtle); padding:2px 6px; border-radius:4px; }
.demo-label,.demo-badge { font-size:10px; background:var(--accent-soft); color:var(--accent); border-radius:4px; padding:3px 6px; font-weight:600; }
.demo-account { border:0; color:var(--accent); background:transparent; padding:4px 1px; font-size:12px; }
.install-guide { margin-top:24px; border-top:1px solid var(--border); padding-top:16px; color:var(--muted); font-size:11px; text-align:center; }
.install-guide .button { margin-top:8px; }
/* 应用骨架（页头 + 一级导航）始终在抽屉遮罩之上：
   抽屉开着时也能直接切主题，切走再切回原页面不丢。 */
.app-header { background:var(--surface); border-bottom:1px solid var(--border); position:sticky; top:0; z-index:120; }
.header-inner { height:64px; max-width:1240px; margin:auto; padding:0 24px; display:flex; align-items:center; gap:12px; }
.brand { border:0; padding:0; display:flex; align-items:center; gap:10px; background:transparent; font-size:18px; font-weight:600; }
.brand-name { letter-spacing:1px; }
.header-spacer { flex:1; }
.header-user { display:flex; align-items:center; gap:16px; color:var(--muted); font-size:12px; }
.my-button { display:inline-flex; align-items:center; gap:6px; border:1px solid var(--border); padding:6px 10px; background:var(--surface); border-radius:8px; font-size:12px; height:36px; }
.my-button:hover { background:var(--bg); }
.app-nav { background:var(--surface); border-bottom:1px solid var(--border); position:sticky; top:64px; z-index:115; }
.nav-inner { max-width:1240px; margin:auto; padding:0 24px; display:flex; gap:24px; overflow-x:auto; scrollbar-width:none; }
.nav-inner::-webkit-scrollbar { display:none; }
.nav-button { height:56px; border:0; padding:0 2px; background:transparent; color:var(--muted); position:relative; display:inline-flex; align-items:center; gap:8px; white-space:nowrap; font-size:13px; font-weight:500; }
.nav-button::after { content:""; position:absolute; left:0; bottom:0; width:100%; height:2px; background:transparent; }
.nav-button.active { color:var(--navy); font-weight:600; }
.nav-button.active::after { background:var(--accent); }
.nav-button:hover { color:var(--accent); }
.wrap { max-width:1240px; margin:0 auto; padding:32px 24px 112px; }
.page-heading { display:flex; justify-content:space-between; align-items:center; gap:16px; margin-bottom:32px; }
.page-heading p { font-size:13px; color:var(--muted); margin-top:8px; }
.workspace-label { display:flex; align-items:center; gap:8px; color:var(--muted); font-size:12px; white-space:nowrap; }
.section-heading { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:16px; }
.section-heading h2 { display:flex; align-items:center; gap:8px; }
.section-heading>.muted { font-size:12px; }
.fab { position:fixed; z-index:45; right:max(24px,calc((100vw - 1192px)/2)); bottom:calc(24px + env(safe-area-inset-bottom)); height:44px; padding:0 20px; border:0; border-radius:9px; display:flex; gap:8px; align-items:center; background:var(--navy); color:var(--surface); box-shadow:var(--shadow-raised); font-weight:600; font-size:13px; transition:transform .2s var(--ease); }
.fab:hover { transform:translateY(-2px); background:var(--ink); }
/* 成员 / 动态 */
.member-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-bottom:32px; }
.member-card { border:1px solid var(--border); border-radius:var(--radius); background:var(--surface); box-shadow:var(--shadow); padding:24px; min-width:0; cursor:pointer; transition:border-color .18s,transform .18s,box-shadow .18s; }
.member-card:hover { transform:translateY(-2px); box-shadow:var(--shadow-raised); border-color:var(--muted-2); }
.member-card-head { display:flex; gap:12px; align-items:center; }
.member-card-head h2 { font-size:16px; }
.member-card-head .muted { font-size:11px; }
.active-indicator { width:6px; height:6px; background:var(--accent); border-radius:50%; margin-left:auto; opacity:.6; }
.quiet-badge { font-size:10px; color:var(--muted); border:1px solid var(--border); border-radius:4px; padding:2px 5px; margin-left:auto; white-space:nowrap; }
.member-headline { font-size:13px; color:var(--ink-2); line-height:1.8; margin:20px 0 16px; min-height:47px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.member-learning { display:flex; align-items:flex-start; gap:8px; color:var(--muted); font-size:12px; padding:10px 12px; border-radius:6px; background:var(--bg); margin-bottom:20px; }
.member-learning svg { margin-top:2px; }
.member-learning span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.member-card-foot { display:flex; align-items:center; gap:16px; font-size:11px; color:var(--muted); }
.member-card-foot b { color:var(--ink-2); font-weight:600; margin-right:3px; }
.member-card-foot>span:last-child { margin-left:auto; }
.next-event { display:flex; align-items:center; gap:6px; padding-top:14px; margin-top:16px; border-top:1px solid var(--border); font-size:11px; color:var(--accent); }
.next-event span { white-space:nowrap; text-overflow:ellipsis; overflow:hidden; }
.feed-panel { padding:24px; }
.feed-panel>.section-heading { margin-bottom:8px; }
.feed-row { display:flex; align-items:center; gap:12px; padding:16px 0; border-bottom:1px solid var(--border); }
.feed-row:last-child { border:0; }
.feed-icon { height:32px; width:32px; background:var(--bg); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; border-radius:8px; color:var(--muted); }
.feed-text { min-width:0; display:flex; gap:16px; flex:1; align-items:center; }
.feed-text>div { display:flex; gap:8px; align-items:center; min-width:0; flex:1; font-size:12px; }
.feed-text strong { white-space:nowrap; font-weight:500; }
.feed-text>div>span:last-child { color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.feed-text time { color:var(--muted); font-size:11px; white-space:nowrap; }
.profile-overview { display:flex; gap:16px; align-items:center; padding:24px; border-radius:10px; background:var(--accent-soft); margin-bottom:24px; }
.profile-overview p { flex:1; font-size:14px; }
.profile-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.profile-block { padding:24px; }
.profile-block .preserve { font-size:13px; color:var(--ink-2); }
.profile-block .muted { color:var(--muted); }
/* Tab / 人脉 */
.segmented { display:inline-flex; gap:4px; border:1px solid var(--border); border-radius:8px; padding:4px; background:var(--surface); max-width:100%; overflow-x:auto; margin-bottom:24px; }
.segment { min-height:34px; border:0; padding:6px 12px; background:transparent; border-radius:5px; color:var(--muted); display:flex; gap:8px; align-items:center; font-size:12px; white-space:nowrap; }
.segment.active { background:var(--accent-soft); color:var(--accent); font-weight:600; }
.segment:hover { color:var(--accent); }
.network-panel { overflow:hidden; }
.graph-toolbar { display:flex; justify-content:space-between; align-items:center; padding:16px 20px; border-bottom:1px solid var(--border); gap:12px; }
.graph-legend,.graph-controls { display:flex; align-items:center; gap:16px; }
.graph-legend>span { display:flex; align-items:center; gap:6px; color:var(--muted); font-size:11px; white-space:nowrap; }
.graph-legend i { width:20px; border-top:2px solid var(--muted); }
.graph-legend .edge-owner { border-color:var(--navy); }
.graph-legend .edge-tag { border-width:1px; opacity:.65; }
.graph-legend .edge-org { border-top:1px dashed var(--muted-2); }
.zoom-control { display:flex; align-items:center; border:1px solid var(--border); border-radius:7px; height:36px; }
.zoom-control button { border:0; background:transparent; width:30px; height:34px; font-size:18px; }
.zoom-control span { font-size:10px; min-width:40px; text-align:center; color:var(--muted); }
.network-canvas { height:520px; position:relative; background:var(--bg); }
.network-canvas canvas { width:100%; height:100%; display:block; touch-action:none; cursor:grab; }
.graph-caption { position:absolute; left:16px; bottom:16px; color:var(--muted); font-size:10px; background:var(--surface); padding:5px 8px; border:1px solid var(--border); border-radius:5px; pointer-events:none; }
.graph-footer { padding:16px 20px; display:flex; flex-wrap:wrap; justify-content:space-between; gap:16px; border-top:1px solid var(--border); font-size:11px; }
.graph-member-legend { display:flex; gap:16px; flex-wrap:wrap; }
.graph-member-legend>span { display:flex; gap:6px; align-items:center; }
.directory-filters { display:grid; grid-template-columns:minmax(180px,1fr) 160px 160px; gap:12px; padding:20px; border-bottom:1px solid var(--border); }
.search-field { display:flex; align-items:center; position:relative; }
.search-field svg { position:absolute; left:12px; color:var(--muted); }
.search-field input { padding-left:36px; }
.directory-table-head,.directory-row { display:grid; grid-template-columns:1.1fr 1fr 1.2fr .8fr; gap:16px; padding:16px 20px; align-items:center; }
.directory-table-head { background:var(--bg); font-size:11px; color:var(--muted); }
.directory-row { border-top:1px solid var(--border); cursor:pointer; transition:background .15s; font-size:12px; }
.directory-row:hover { background:var(--bg); }
.directory-row>div { min-width:0; }
.directory-name { display:flex; gap:12px; align-items:center; }
.person-avatar { width:36px; height:36px; display:flex; align-items:center; justify-content:center; border-radius:8px; color:var(--member); background:var(--bg); border:1px solid var(--border); flex-shrink:0; }
.directory-name strong { font-size:13px; display:block; }
.directory-name span:not(.person-avatar) { display:block; font-size:11px; color:var(--muted); }
.directory-row p { font-size:12px; margin-bottom:6px; }
.tags { display:flex; flex-wrap:wrap; gap:5px; }
.tag { display:inline-block; background:var(--subtle); color:var(--muted); padding:2px 6px; border-radius:4px; font-size:10px; }
.contact-lines { display:flex; flex-direction:column; gap:5px; font-size:11px; min-width:0; }
.contact-lines>a,.contact-lines>span { display:flex; align-items:center; gap:6px; overflow-wrap:anywhere; color:var(--ink-2); }
.contact-lines>a:hover { color:var(--accent); }
.directory-owner>span { display:flex; gap:6px; align-items:center; font-size:11px; }
.directory-owner time { display:block; margin-top:4px; font-size:10px; color:var(--muted); }
.person-contacts { padding:24px 0; }
.person-contacts .contact-lines { gap:16px; font-size:14px; }
.member-quick { border-top:1px solid var(--border); padding:16px 0; font-size:13px; }
.member-quick p { margin-top:6px; }
/* 周日历 */
.calendar-panel { overflow:hidden; }
.calendar-toolbar { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:20px; }
.week-switch { display:flex; gap:12px; align-items:center; }
.week-switch strong { font-size:14px; font-weight:600; }
.mobile-calendar-hint { display:none; color:var(--muted); font-size:10px; padding:0 16px 12px; }
.calendar-scroll { overflow-x:auto; max-width:100%; border-top:1px solid var(--border); }
.week-calendar { min-width:1020px; }
.calendar-top,.calendar-allday,.calendar-body { display:grid; grid-template-columns:52px repeat(7,minmax(120px,1fr)); }
.calendar-top { border-bottom:1px solid var(--border); }
.calendar-corner { display:flex; flex-direction:column; align-items:center; justify-content:center; color:var(--muted); font-size:10px; line-height:1.7; }
.day-header { min-height:72px; text-align:center; padding:10px; border-left:1px solid var(--border); }
.day-header>span { display:block; font-size:10px; color:var(--muted); }
.day-header>strong { width:28px; height:28px; display:inline-flex; align-items:center; justify-content:center; font-size:16px; margin-top:4px; border-radius:6px; font-weight:600; }
.day-header.today strong { background:var(--accent); color:var(--surface); }
.today { background:var(--accent-soft); }
.calendar-allday { border-bottom:1px solid var(--border); min-height:56px; }
.all-day-label { display:flex; align-items:center; justify-content:center; color:var(--muted); font-size:9px; text-align:center; }
.all-day-cell { border-left:1px solid var(--border); padding:4px; display:flex; flex-direction:column; gap:4px; }
.calendar-body { padding-top:16px; }
.time-axis { position:relative; }
.time-tick { position:absolute; width:100%; transform:translateY(-50%); text-align:center; color:var(--muted); font-size:10px; font-weight:600; }
.time-tick.last { transform:translateY(-100%); padding-bottom:2px; }
.day-column { position:relative; border-left:1px solid var(--border); background-image:repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--calendar-band-height) - 1px),var(--border) calc(var(--calendar-band-height) - 1px),var(--border) var(--calendar-band-height)); }
.calendar-event { border:0; border-left:3px solid var(--member); border-radius:5px; padding:5px 6px; background:var(--subtle); background:color-mix(in srgb,var(--member) 12%,var(--surface)); text-align:left; color:var(--ink); min-width:0; display:block; font-size:10px; transition:box-shadow .15s; }
.calendar-event:hover { box-shadow:var(--shadow-raised); z-index:3; }
.calendar-event.timed { position:absolute; height:46px; overflow:hidden; }
.event-owner { font-size:8px; color:var(--member); display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.calendar-event strong { font-size:10px; display:block; line-height:1.5; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.event-place { font-size:9px; color:var(--muted); display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.event-place svg { margin-right:2px; }
.calendar-event.past { opacity:.5; filter:grayscale(.8); }
.calendar-footer { display:flex; gap:12px; align-items:center; padding:16px 20px; border-top:1px solid var(--border); font-size:11px; }
.related-person { border:1px solid var(--border); background:var(--accent-soft); color:var(--accent); border-radius:8px; padding:12px; width:100%; display:flex; align-items:center; gap:8px; font-size:12px; margin:16px 0; }
/* 目标 / 资源 / 评论 */
.goal-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; align-items:start; }
.goal-card,.resource-card { padding:24px; min-width:0; scroll-margin-top:148px; }
.card-header { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:12px; }
.goal-card>h2,.resource-card>h2 { font-size:17px; overflow-wrap:anywhere; }
.status-badge { display:inline-flex; gap:6px; align-items:center; border-radius:5px; padding:3px 8px; font-size:10px; }
.status-badge i { width:5px; height:5px; border-radius:50%; background:currentColor; }
.status-badge.ongoing { background:var(--warning-soft); color:var(--warning); }
.status-badge.done { background:var(--success-soft); color:var(--success); }
.status-badge.dropped { background:var(--subtle); color:var(--muted); }
.goal-meta { display:flex; align-items:center; gap:12px; margin-top:16px; color:var(--muted); font-size:11px; }
.goal-description { margin-top:20px; font-size:13px; color:var(--ink-2); }
.goal-actions { display:flex; gap:8px; align-items:center; margin-top:20px; flex-wrap:wrap; }
.reflection { margin-top:20px; padding:12px; background:var(--bg); border-radius:7px; font-size:12px; }
.reflection summary { cursor:pointer; font-weight:600; color:var(--ink-2); display:flex; align-items:center; gap:8px; }
.reflection summary::after { content:"＋"; margin-left:auto; color:var(--muted); }
.reflection[open] summary::after { content:"−"; }
.reflection p { margin-top:12px; color:var(--muted); }
.participants-field { border:0; padding:0; margin:0; }
.participants-field legend { font-size:12px; font-weight:500; margin-bottom:8px; }
.participant-options { display:flex; flex-wrap:wrap; gap:8px; }
.participant-options>label { display:flex; gap:8px; align-items:center; padding:8px; border:1px solid var(--border); border-radius:7px; font-size:12px; cursor:pointer; }
.resource-grid { display:grid; gap:20px; }
.resource-body { font-size:13px; line-height:1.9; color:var(--ink-2); margin:16px 0; }
.resource-footer { display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin-top:16px; font-size:11px; color:var(--muted); }
.resource-footer>span:first-child { display:flex; align-items:center; gap:6px; margin-right:auto; }
.comments { margin-top:20px; border-top:1px solid var(--border); padding-top:16px; }
.comments>summary { cursor:pointer; display:flex; gap:6px; align-items:center; font-size:12px; color:var(--muted); list-style:none; }
.comments>summary::after { content:"展开"; margin-left:auto; font-size:10px; }
.comments[open]>summary::after { content:"收起"; }
.comments summary::-webkit-details-marker,.reflection summary::-webkit-details-marker { display:none; }
.comment-list { margin-top:16px; }
.comment { display:flex; gap:8px; padding-bottom:16px; }
.comment>.color-dot { margin-top:8px; }
.comment-content { min-width:0; flex:1; }
.comment-meta { display:flex; align-items:center; gap:8px; font-size:11px; }
.comment-meta strong { font-weight:600; }
.comment-meta time { color:var(--muted); font-size:10px; }
.comment-meta .text-button { margin-left:auto; font-size:10px; padding:0 4px; }
.comment-content p { white-space:pre-wrap; overflow-wrap:anywhere; font-size:12px; margin-top:5px; color:var(--ink-2); }
/* 评论配图：图片走鉴权下载，显示为缩略图，可单独删除。 */
.comment-image { position:relative; margin-top:8px; display:inline-block; max-width:100%; }
.comment-image img { display:block; max-width:min(320px,100%); max-height:320px; border-radius:8px; border:1px solid var(--border); object-fit:contain; }
.comment-image-remove { position:absolute; top:4px; right:4px; width:22px; height:22px; border-radius:50%; border:1px solid var(--border); background:var(--surface); color:var(--ink-2); display:flex; align-items:center; justify-content:center; padding:0; }
.comment-image-remove:hover { color:var(--danger); }
/* 引用回复：像微信一样，引用块在上、回复在下。 */
.comment-quote { margin-top:6px; padding:8px 10px; border-left:3px solid var(--accent); border-radius:0 6px 6px 0; background:var(--subtle); }
.comment-quote-author { font-size:11px; font-weight:600; color:var(--accent); }
.comment-quote p { font-size:11px; color:var(--muted); margin-top:2px; overflow-wrap:anywhere; }
.comment-reply-target { display:flex; align-items:center; gap:8px; width:100%; margin-bottom:8px; padding:8px 10px; border-left:3px solid var(--accent); border-radius:0 6px 6px 0; background:var(--accent-soft); font-size:11px; color:var(--ink-2); }
.comment-reply-target span { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.comment-reply-target strong { color:var(--accent); }
.comment-reply-btn { margin-left:auto; font-size:10px; padding:0 4px; }
/* 长讨论：输入框随内容增高，到上限后内部滚动；带字数统计。 */
.comment-form { display:flex; flex-direction:column; gap:8px; align-items:stretch; }
.comment-input-row { display:flex; gap:8px; align-items:flex-end; }
.comment-form textarea { flex:1; min-height:36px; max-height:200px; font-size:12px; line-height:1.6; padding:8px 10px; font-family:inherit; resize:none; overflow-y:hidden; }
.comment-form-tools { display:flex; align-items:center; gap:8px; flex:none; }
.comment-count { font-size:10px; color:var(--muted); white-space:nowrap; }
.comment-image-pick { display:inline-flex; align-items:center; gap:4px; flex:none; min-height:36px; padding:0 10px; border:1px solid var(--border); border-radius:8px; color:var(--ink-2); font-size:11px; cursor:pointer; background:var(--surface); }
.comment-image-pick:hover { color:var(--accent); border-color:var(--accent); }
/* 署名与分类标签：课程与课件都标出是谁传的、属于哪一类。 */
.attribution { display:inline-flex; align-items:center; gap:4px; font-size:11px; color:var(--ink-2); }
.tag-chip { display:inline-flex; align-items:center; padding:2px 8px; border-radius:999px; font-size:10px; background:var(--subtle); color:var(--ink-2); }
.category-chip { background:var(--accent-soft); color:var(--accent); }
.course-meta { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin:8px 0 12px; }
.course-item-title { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.course-item-title strong { font-size:13px; }
.course-item-file { margin-top:6px; }
.comment-empty { font-size:12px; padding-bottom:16px; }
/* SVG 数据看板 */
.metric-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-bottom:24px; }
.metric-card { position:relative; padding:24px; }
.metric-card>span { font-size:12px; color:var(--muted); }
.metric-card>svg { position:absolute; right:24px; top:24px; color:var(--accent); opacity:.65; }
.metric-card>strong { font-size:32px; font-weight:600; display:block; margin:12px 0 4px; letter-spacing:-1px; line-height:1.3; }
.metric-card>p { color:var(--muted); font-size:11px; }
.dashboard-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; align-items:stretch; }
.chart-card { padding:24px; min-width:0; }
.chart-card.wide { grid-column:span 2; }
.chart-card-heading { margin-bottom:24px; }
.chart-card-heading p { font-size:11px; color:var(--muted); margin-top:8px; }
.growth-svg { width:100%; max-height:270px; display:block; }
.chart-gridline { stroke:var(--border); stroke-dasharray:3 4; }
.chart-axis { fill:var(--muted); font-size:10px; font-family:inherit; }
.chart-value { fill:var(--accent); font-size:13px; font-weight:600; }
.chart-tooltip { opacity:0; pointer-events:none; transition:opacity .15s; }
.chart-tooltip rect { fill:var(--navy); }
.chart-tooltip text { fill:var(--surface); font-size:10px; }
.chart-point:hover .chart-tooltip,.chart-point:focus .chart-tooltip { opacity:1; }
.donut-layout { display:flex; flex-direction:column; align-items:center; gap:8px; }
.donut-layout>svg { width:170px; max-width:100%; }
.donut-value { fill:var(--ink); font-size:27px; font-weight:600; }
.donut-legend { display:flex; gap:16px; font-size:10px; }
.donut-legend>div { display:flex; gap:5px; align-items:center; }
.donut-legend i { width:6px; height:6px; border-radius:2px; }
.donut-legend span { color:var(--muted); }
.donut-legend strong { font-weight:600; }
.bars { display:flex; flex-direction:column; gap:16px; padding-top:4px; }
.bar-row { display:flex; align-items:center; gap:12px; font-size:11px; }
.bar-name { width:66px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; flex-shrink:0; }
.bar-track { height:8px; background:var(--subtle); flex:1; overflow:hidden; border-radius:3px; display:flex; }
.bar-fill { display:block; height:100%; background:var(--bar,var(--accent)); border-radius:3px; min-width:0; }
.bar-value { width:36px; text-align:right; color:var(--muted); font-size:10px; white-space:nowrap; }
.heatmap-svg { display:block; width:100%; max-width:310px; margin:0 auto; }
.heat-0 { fill:var(--heat-0); }.heat-1 { fill:var(--heat-1); }.heat-2 { fill:var(--heat-2); }.heat-3 { fill:var(--heat-3); }.heat-4 { fill:var(--heat-4); }
.heat-today { stroke:var(--accent); stroke-width:1.5; }
.heat-cell:hover,.heat-cell:focus { stroke:var(--navy); stroke-width:1.5; }
/* 设置 / 弹层 / 表单 */
.settings-panel { max-width:800px; padding:0 24px; }
.settings-row { padding:24px 0; border-bottom:1px solid var(--border); display:flex; align-items:center; gap:16px; }
.settings-row:last-child { border:0; }
.settings-row>div { flex:1; }
.settings-row h2 { font-size:14px; }
.settings-row p { color:var(--muted); font-size:12px; margin-top:4px; }
.settings-row .muted { font-size:10px; }
.empty-state { padding:48px 24px; text-align:center; color:var(--muted); display:flex; align-items:center; flex-direction:column; gap:12px; grid-column:1/-1; }
.empty-state>svg { color:var(--muted-2); }
.empty-state strong { color:var(--ink-2); font-size:14px; font-weight:500; }
.empty-state p { font-size:12px; max-width:320px; }
.sheet-open { overflow:hidden; }
/* 抽屉遮罩只盖内容区，不盖页头与一级导航：
   抽屉开着也能直接切主题，切走再切回原页面不丢。 */
.sheet-mask { position:fixed; top:120px; bottom:0; left:0; right:0; z-index:100; background:var(--overlay); display:flex; align-items:flex-start; justify-content:center; padding:4vh 16px 24px; overflow-y:auto; backdrop-filter:blur(3px); }
.sheet { width:100%; max-width:620px; background:var(--surface); border:1px solid var(--border); border-radius:12px; padding:32px; box-shadow:var(--shadow-modal); position:relative; animation:sheet-enter .2s var(--ease); margin:auto; }
.sheet-close { position:absolute; right:16px; top:16px; border-color:transparent; color:var(--muted); }
.sheet-heading { padding-right:24px; margin-bottom:24px; }
.sheet-heading h2 { font-size:20px; margin:8px 0; }
.sheet-heading>p { color:var(--muted); font-size:12px; }
/* 站内阅读器：抽屉加宽，iframe 与完整阅读器都占满可视区高度。 */
.sheet:has(.reader-iframe),.sheet:has(.pdf-viewport) { max-width:920px; }
.reader-bar { display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.reader-bar h2 { font-size:16px; word-break:break-all; }
.reader-actions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.reader-modes { display:inline-flex; gap:6px; }
.reader-iframe { display:block; width:100%; height:min(72vh,880px); border:1px solid var(--border); border-radius:12px; background:var(--surface); }
/* 两种方式引导：默认折叠，需要时点开；写完选过一次会记住。 */
.reader-guide { margin:0 0 16px; border:1px solid var(--border); border-radius:12px; background:var(--subtle); padding:10px 14px; }
.reader-guide summary { cursor:pointer; font-weight:600; font-size:13px; color:var(--ink-2); }
.reader-guide ul { margin:8px 0 2px; padding-left:18px; color:var(--muted); font-size:12px; line-height:1.8; }
.reader-resume { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:12px; padding:8px 12px; border-radius:10px; background:var(--accent-soft); color:var(--ink-2); font-size:13px; }
/* 完整阅读器（pdf.js）：左目录 + 右翻页区。 */
.pdf-reader { position:relative; display:flex; gap:12px; align-items:stretch; }
.pdf-sidebar { width:216px; flex:none; border:1px solid var(--border); border-radius:12px; background:var(--surface); display:flex; flex-direction:column; max-height:min(72vh,860px); overflow:hidden; }
.pdf-sidebar-title { font-size:11px; font-weight:600; letter-spacing:.08em; color:var(--muted); padding:12px 12px 6px; }
.pdf-outline { overflow-y:auto; padding:0 8px 10px; }
.pdf-outline>.muted { font-size:11px; padding:8px; }
.pdf-outline-row .text-button { text-align:left; width:100%; padding:5px 6px 5px calc(6px + var(--depth,0) * 12px); font-size:12px; line-height:1.5; white-space:normal; }
.pdf-main { flex:1; min-width:0; display:flex; flex-direction:column; gap:10px; }
.pdf-toolbar { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.pdf-page { display:inline-flex; align-items:center; gap:4px; font-size:12px; color:var(--ink-2); white-space:nowrap; }
.pdf-page input { width:58px; min-height:34px; padding:4px 8px; text-align:center; font-size:12px; }
.pdf-spacer { flex:1; }
.pdf-zoom { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--ink-2); white-space:nowrap; }
.pdf-viewport { position:relative; height:min(72vh,860px); overflow:auto; border:1px solid var(--border); border-radius:12px; background:var(--subtle); display:flex; }
.pdf-page-holder { position:relative; margin:auto; flex:none; box-shadow:var(--shadow-raised); }
.pdf-canvas { display:block; }
.pdf-status { position:absolute; left:50%; bottom:12px; transform:translateX(-50%); margin:0; padding:5px 12px; border-radius:999px; background:var(--navy); color:var(--surface); font-size:11px; white-space:nowrap; }
/* pdf.js 文本层：与画布等尺寸叠放，供选中复制；规则与官方 6.x text_layer 对齐。 */
.pdf-page-holder { --user-unit:1; --total-scale-factor:calc(var(--scale-factor) * var(--user-unit)); --scale-round-x:1px; --scale-round-y:1px; }
.pdf-text-layer { position:absolute; inset:0; overflow:clip; opacity:1; line-height:1; letter-spacing:normal; word-spacing:normal; -webkit-text-size-adjust:none; text-size-adjust:none; forced-color-adjust:none; transform-origin:0 0; caret-color:CanvasText; z-index:0; --min-font-size:1; --text-scale-factor:calc(var(--total-scale-factor) * var(--min-font-size)); --min-font-size-inv:calc(1 / var(--min-font-size)); }
.pdf-text-layer :is(span,br) { color:transparent; position:absolute; white-space:pre; cursor:text; transform-origin:0% 0%; -webkit-user-select:text; user-select:text; }
.pdf-text-layer > :not(.markedContent),.pdf-text-layer .markedContent span:not(.markedContent) { z-index:1; --font-height:0; font-size:calc(var(--text-scale-factor) * var(--font-height)); --scale-x:1; --rotate:0deg; transform:rotate(var(--rotate)) scaleX(var(--scale-x)) scale(var(--min-font-size-inv)); }
.pdf-text-layer .markedContent { display:contents; }
.pdf-text-layer ::selection { background:var(--accent-soft); }
@media (max-width:760px) {
  /* 窄屏目录收成滑出抽屉，由工具栏「目录」按钮开合。 */
  .pdf-sidebar { position:absolute; inset:0 auto 0 0; z-index:3; transform:translateX(-102%); transition:transform .18s var(--ease); box-shadow:var(--shadow-modal); max-height:none; }
  .pdf-reader.pdf-outline-open .pdf-sidebar { transform:none; }
  .pdf-viewport { height:min(64vh,720px); }
}
.form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.field { display:flex; flex-direction:column; gap:6px; font-size:13px; min-width:0; }
.field>span { color:var(--ink-2); font-size:12px; font-weight:500; }
.required { font-style:normal; color:var(--accent); margin-left:4px; }
.field-hint { font-size:10px; color:var(--muted); margin-top:-8px; }
.form-actions { display:flex; justify-content:flex-end; gap:8px; border-top:1px solid var(--border); padding-top:20px; margin-top:24px; }
.form-error { font-size:12px; color:var(--danger); margin-top:12px; }
.form-error:empty { display:none; }
.confirmation-copy { color:var(--ink-2); font-size:13px; }
.detail-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; padding:16px; background:var(--bg); border-radius:8px; }
.detail-grid>div>span { font-size:11px; color:var(--muted); display:block; margin-bottom:4px; }
.detail-grid strong { font-size:13px; font-weight:500; overflow-wrap:anywhere; }
.detail-note { color:var(--ink-2); font-size:13px; margin:20px 0; }
.detail-actions { display:flex; align-items:center; gap:12px; margin-top:24px; }
.detail-actions>.danger { margin-left:auto; }
.credential { background:var(--bg); padding:16px; border-radius:8px; display:flex; flex-direction:column; gap:8px; }
.credential>span { font-size:11px; color:var(--muted); }
.credential input { font-family:ui-monospace,SFMono-Regular,monospace; }
.toast { position:fixed; z-index:150; left:50%; bottom:calc(88px + env(safe-area-inset-bottom)); transform:translateX(-50%); border:1px solid var(--border); box-shadow:var(--shadow-raised); padding:12px 18px; border-radius:8px; background:var(--navy); color:var(--surface); display:flex; align-items:center; gap:8px; font-size:12px; max-width:calc(100vw - 32px); white-space:nowrap; }
@keyframes sheet-enter { from { opacity:0; transform:translateY(12px); } to { opacity:1; transform:translateY(0); } }
@media (max-width:1000px) {
  .member-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .dashboard-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .goal-grid { gap:16px; }
  .directory-filters { grid-template-columns:minmax(180px,1fr) 140px 140px; }
  .directory-table-head,.directory-row { grid-template-columns:1fr 1fr 1fr; }
  .directory-table-head>span:nth-child(2),.directory-row>div:nth-child(2) { display:none; }
  .workspace-label { font-size:11px; }
}
@media (max-width:640px) {
  .header-inner { height:60px; padding:0 16px; gap:8px; }
  .brand { font-size:16px; gap:8px; }.brand-mark { width:30px; height:30px; font-size:18px; }
  .header-user { gap:8px; font-size:11px; }.header-user #whoami { max-width:80px; white-space:nowrap; text-overflow:ellipsis; overflow:hidden; }
  .my-button { padding:6px 8px; }.my-button>span { display:none; }
  .app-nav { top:60px; }.nav-inner { padding:0 16px; gap:24px; }.nav-button { height:50px; gap:6px; font-size:12px; }
  .nav-button>svg { width:15px; height:15px; }
  .wrap { padding:24px 16px 108px; }
  .page-heading { align-items:flex-start; flex-direction:column; gap:12px; margin-bottom:24px; }
  .page-heading h1 { font-size:20px; }.page-heading p { font-size:12px; line-height:1.8; margin-top:6px; }
  .workspace-label { font-size:10px; }.workspace-label .status-dot { height:5px; width:5px; }
  .section-heading h2 { font-size:14px; }.section-heading>.muted { font-size:10px; }
  .member-grid,.profile-grid,.goal-grid { grid-template-columns:1fr; gap:16px; margin-bottom:24px; }
  .member-card { padding:20px; }.member-headline { min-height:0; margin:16px 0; }
  .member-learning { margin-bottom:16px; }.member-card-foot { font-size:10px; }.next-event { font-size:10px; }
  .feed-panel { padding:20px; }.feed-text { display:block; }.feed-text time { display:block; margin-top:4px; margin-left:15px; font-size:10px; }
  .feed-text>div { font-size:11px; gap:6px; }.feed-row { padding:14px 0; }.feed-icon { width:28px; height:28px; }
  .profile-overview,.profile-block { padding:20px; }.profile-overview { flex-wrap:wrap; }.profile-overview p { font-size:12px; }
  .segmented { margin-bottom:20px; }.segment { font-size:11px; padding:6px 10px; gap:6px; }
  .graph-toolbar { align-items:stretch; flex-direction:column; padding:12px; gap:12px; }.graph-legend { justify-content:space-between; gap:8px; }.graph-legend>span { font-size:10px; }
  .graph-controls { justify-content:space-between; }.network-canvas { height:430px; }.graph-caption { font-size:9px; left:8px; right:8px; bottom:8px; padding:6px; text-align:center; }
  .graph-footer { padding:12px; gap:8px; font-size:10px; }.graph-member-legend { gap:8px; }
  .directory-filters { grid-template-columns:1fr 1fr; padding:16px; gap:8px; }.directory-filters .search-field { grid-column:1/-1; }.directory-filters input,.directory-filters select { font-size:12px; }
  .directory-table-head { display:none; }.directory-row { display:grid; grid-template-columns:1fr 1fr; padding:16px; gap:12px; }
  .directory-name { grid-column:1/-1; }.directory-name strong { font-size:14px; }.directory-row>div:nth-child(2) { display:block; grid-column:1/-1; }.directory-row .contact-lines { grid-column:1/-1; gap:6px; }.directory-owner { grid-column:1/-1; display:flex; gap:12px; align-items:center; }.directory-owner time { margin-top:0; margin-left:auto; }
  .calendar-toolbar { padding:16px 12px; gap:8px; }.week-switch { gap:6px; }.week-switch strong { font-size:12px; }.week-switch .icon-button { min-width:30px; width:30px; height:34px; }
  .calendar-toolbar>.button { padding:6px 8px; font-size:10px; }.mobile-calendar-hint { display:block; }
  .week-calendar { min-width:948px; }.calendar-top,.calendar-allday,.calendar-body { grid-template-columns:52px repeat(7,minmax(128px,1fr)); }
  .calendar-footer { padding:12px; gap:8px; font-size:10px; flex-wrap:wrap; }
  .goal-card,.resource-card { padding:20px; }.goal-card>h2,.resource-card>h2 { font-size:16px; }.goal-description,.resource-body { font-size:12px; }
  .goal-actions { gap:6px; }.resource-footer { font-size:10px; gap:8px; }.resource-footer>span:first-child { width:100%; }
  .metric-grid { gap:8px; }.metric-card { padding:16px 12px; }.metric-card>span { font-size:10px; }.metric-card>strong { font-size:27px; margin-top:12px; }.metric-card>svg { display:none; }.metric-card>p { font-size:9px; line-height:1.6; }
  .dashboard-grid { grid-template-columns:1fr; gap:16px; }.chart-card.wide { grid-column:span 1; }.chart-card { padding:20px; }.chart-card-heading { margin-bottom:20px; }.donut-layout { flex-direction:row; justify-content:center; gap:16px; }.donut-legend { flex-direction:column; font-size:11px; }.donut-layout>svg { width:170px; }
  .settings-panel { padding:0 20px; }.settings-row { gap:12px; padding:20px 0; }.settings-row h2 { font-size:13px; }.settings-row p { font-size:11px; }.settings-row>.button { font-size:10px; padding:6px 10px; }
  .sheet-mask { top:60px; padding:0 0 68px; align-items:flex-end; }.sheet { border-radius:14px 14px 0 0; padding:28px 20px calc(24px + env(safe-area-inset-bottom)); margin:auto 0 0; max-height:94vh; max-height:94dvh; overflow-y:auto; border-bottom:0; }.sheet-heading h2 { font-size:19px; }
  .form-grid { gap:16px 12px; }.field input,.field select,.field textarea { font-size:16px; }.field>span { font-size:11px; }.field-hint { font-size:10px; }
  .fab { right:16px; bottom:calc(20px + env(safe-area-inset-bottom)); height:44px; padding:0 16px; font-size:12px; }
  .login-card { padding:32px 24px; }.login-page { padding:24px 16px; }.login-card input { font-size:16px; }
}
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { animation-duration:.01ms!important; transition-duration:.01ms!important; scroll-behavior:auto!important; } }
.calendar-corner,.all-day-label,.time-axis { position:sticky; left:0; z-index:5; background:var(--surface); }
/* v5：新增组件复用主题变量、8px 网格及 8–10px 圆角。 */
[hidden] { display:none!important; }
.nav-inner { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:8px; max-width:800px; }
.nav-button { justify-content:center; min-width:0; }
.card-title-button { display:block; width:100%; text-align:left; background:none; border:0; padding:0; color:inherit; }
.card-title-button h2,.card-title-button h3 { margin:8px 0; overflow-wrap:anywhere; }
.card-title-button p { color:var(--ink-2); line-height:1.7; }
.clamp-three { display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.v5-metrics { display:grid; grid-template-columns:repeat(auto-fit,minmax(104px,1fr)); gap:8px; margin:16px 0 24px; }
.v5-metrics>div { background:var(--surface); border:1px solid var(--border); border-radius:8px; padding:16px; min-width:0; }
.v5-metrics span { color:var(--muted); font-size:12px; display:block; }
.v5-metrics strong { display:block; font-size:26px; color:var(--navy); font-weight:600; margin-top:8px; }
.secondary-block { margin:24px 0; padding:16px; border:1px solid var(--border); border-radius:var(--radius); background:var(--surface); }
.secondary-block>summary,.people-status>summary { cursor:pointer; color:var(--ink-2); font-weight:600; padding:0 0 8px; }
.secondary-block .help-grid { margin-top:16px; }
.help-summary { padding:16px 24px; margin-bottom:16px; }
.help-counts { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-bottom:16px; }
.help-counts button { background:none; border:1px solid transparent; border-radius:8px; padding:0 8px; display:flex; gap:8px; align-items:center; justify-content:center; }
.help-counts button:hover,.help-counts .selected { background:var(--accent-soft); border-color:var(--heat-1); }
.help-counts strong { font-size:24px; color:var(--navy); }.help-counts span { font-size:12px; color:var(--muted); }
.progress-label { display:flex; justify-content:space-between; gap:16px; color:var(--muted); font-size:12px; margin:8px 0; }
.progress-label strong { color:var(--ink-2); font-size:12px; }
.progress-track { height:6px; background:var(--heat-0); border-radius:8px; overflow:hidden; }
.progress-track>span { display:block; background:var(--accent); height:100%; border-radius:8px; }
.help-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.help-card { padding:16px 24px; }.help-card.completed { opacity:.66; background:var(--subtle); }
.help-meta,.help-card-foot { display:flex; justify-content:space-between; gap:8px; align-items:center; color:var(--muted); font-size:12px; margin-top:16px; }
.help-meta>span { display:flex; gap:4px; align-items:center; }.help-card-foot>span { display:flex; gap:4px; align-items:center; min-width:0; flex-wrap:wrap; }
.idea-strip { padding:16px 24px; margin-top:16px; }.idea-strip .section-heading { margin-bottom:8px; }
.idea-strip>button { display:flex; align-items:center; gap:8px; width:100%; padding:8px 0; border:0; background:none; text-align:left; }
.idea-strip>button>span:nth-child(2) { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.idea-strip small { font-size:11px; color:var(--muted); }
.next-schedule { padding:16px 24px; margin-top:16px; display:flex; justify-content:space-between; align-items:center; gap:16px; }.next-schedule h2 { margin:4px 0; }
.tag-picker { min-width:0; border:1px solid var(--border); border-radius:8px; padding:16px; }.tag-picker legend { font-size:13px; }.tag-search-label { display:block; margin:8px 0 16px; }
.tag-group { margin:16px 0; }.tag-group>span { font-size:12px; color:var(--muted); }.tag-group>div { display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.tag-group label { display:flex; gap:4px; align-items:center; border:1px solid var(--border); border-radius:8px; padding:4px 8px; font-size:12px; }.tag-group label:has(input:checked) { color:var(--accent); background:var(--accent-soft); border-color:var(--heat-2); }
.optional-tags summary { cursor:pointer; }.optional-tags fieldset { margin-top:16px; }
.idea-distribution { padding:16px 24px; margin-bottom:16px; }.idea-distribution .v5-metrics { margin:0 0 16px; }.idea-distribution .v5-metrics>div { border:0; padding:0; }
.stacked-bar { display:flex; height:12px; width:100%; overflow:hidden; border-radius:8px; background:var(--border); margin-bottom:8px; }.stacked-bar button { border:0; min-width:0; padding:0; }
.idea-day { display:grid; grid-template-columns:120px minmax(0,1fr); gap:24px; margin:24px 0; }.idea-day>h2 { font-size:14px; color:var(--navy); padding-top:16px; }.idea-day>h2 span { display:block; color:var(--muted); font-size:11px; }.idea-day>div { border-left:1px solid var(--border); padding-left:24px; }
.idea-card { padding:24px; margin-bottom:16px; }.stage-badge,.deadline-badge { display:inline-flex; align-items:center; padding:4px 8px; font-size:11px; border-radius:8px; border:1px solid var(--border); color:var(--navy); background:var(--accent-soft); }.deadline-badge.urgent { background:var(--warning-soft); color:var(--warning); border-color:var(--warning); }
.idea-card .card-header { color:var(--muted); font-size:12px; }.idea-card>.muted { display:block; margin-top:16px; font-size:12px; }.load-more { display:block; margin:16px auto; }
.training-summary { display:grid; grid-template-columns:1fr 1fr; gap:24px; padding:24px; margin-bottom:24px; }.training-summary p { font-size:12px; margin-top:8px; }.course-card,.news-card { padding:24px; }.course-card>p { font-size:12px; margin:8px 0 16px; }.news-card>h2,.news-card>p { margin:12px 0; }.news-card.archived { background:var(--subtle); opacity:.7; }
.course-kind { margin:24px 0; }.course-item { padding:16px 0; border-bottom:1px solid var(--border); }.course-item>div { display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }.course-item .selected { background:var(--accent-soft); font-weight:600; }
.compact-donut { display:grid; grid-template-columns:minmax(120px,180px) minmax(0,1fr); align-items:center; gap:24px; }.compact-donut svg { width:100%; height:auto; }.compact-donut p { font-size:12px; color:var(--muted); margin:8px 0; }.compact-donut strong { float:right; color:var(--navy); margin-left:8px; }
.signature-badge { display:inline-flex; align-items:center; gap:4px; font-size:11px; color:var(--muted); border-radius:8px; padding:4px 8px; background:var(--subtle); }.signature-badge i { width:6px; height:6px; border-radius:50%; background:var(--muted-2); }.signature-badge.signed { color:var(--success); background:var(--success-soft); }.signature-badge.signed i { background:var(--success); }
.signature-notice { max-width:1240px; margin:auto; padding:8px 24px; font-size:12px; background:var(--warning-soft); color:var(--warning); }.signature-notice button { padding:4px; }
.signature-open { overflow:hidden; }.signature-cover { position:fixed; inset:0; z-index:200; background:var(--bg); display:grid; place-items:center; padding:24px; }.signature-box { width:100%; max-width:800px; height:min(840px,100%); display:flex; flex-direction:column; gap:16px; padding:24px; border:1px solid var(--border); border-radius:var(--radius); background:var(--surface); }.signature-box h1 { margin:8px 0; }.signature-box h1 small { font-size:13px; color:var(--muted); }.draft-notice { font-size:12px; color:var(--warning); }.signature-document { flex:1; overflow:auto; min-height:0; border:1px solid var(--border); border-radius:8px; padding:24px; }.signature-document section { margin-bottom:24px; }.signature-document h2 { margin-bottom:8px; }.signature-document p { line-height:1.9; }.agreement { display:flex; gap:8px; align-items:flex-start; font-size:13px; margin:8px 0; }.signature-box .form-actions { margin-top:16px; }.signature-box #readHint { font-size:12px; }.signature-box .form-error { margin:0; }.restricted { opacity:.55; }
.more-menu { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }.more-menu button { padding:24px; display:flex; align-items:center; gap:16px; text-align:left; }.more-menu button>span { flex:1; min-width:0; }.more-menu small { display:block; font-size:12px; color:var(--muted); margin-top:4px; }.more-menu strong { font-size:15px; font-weight:600; }
.personal-dashboard,.subscription-form { padding:24px; margin:24px 0; }.mini-heatmap { display:grid; grid-template-columns:repeat(16,minmax(0,1fr)); gap:4px; margin:16px 0 8px; max-width:640px; }.mini-heatmap button { aspect-ratio:1; border:1px solid var(--border); border-radius:4px; padding:0; }.personal-dashboard>p { font-size:12px; }.learning-course-link { display:flex; gap:8px; align-items:center; border:0; background:var(--accent-soft); color:var(--navy); padding:8px; margin:8px 0; border-radius:8px; text-align:left; }
.library-tabs { overflow-x:auto; flex-wrap:nowrap; }.library-tabs button { flex-shrink:0; }.library-search { padding:8px 16px; margin-bottom:24px; }.repost-notice { font-size:12px; padding:8px 16px; background:var(--accent-soft); border-radius:8px; }.tool-fields>.field,.repost-fields>.field,.contact-edit-fields>.field,.prospect-fields>.field { margin-bottom:16px; }
.guide-map-scroll { max-width:100%; overflow-x:auto; margin:24px 0; border:1px solid var(--border); border-radius:8px; }.guide-map { width:100%; min-width:680px; display:block; }.guide-map [role=button] { cursor:pointer; }.guide-step { padding:24px 0; border-bottom:1px solid var(--border); scroll-margin-top:24px; }.guide-step h3 { margin-bottom:16px; }.guide-step h3>span { display:inline-flex; align-items:center; justify-content:center; background:var(--accent-soft); color:var(--accent); width:24px; height:24px; border-radius:8px; margin-right:8px; }.guide-step ul { padding-left:20px; }.guide-step li { margin:8px 0; }.change-history { margin-top:24px; }.change-history p { margin:16px 0; font-size:12px; }.step-editor { padding:16px; border:1px solid var(--border); border-radius:8px; margin:16px 0; display:grid; gap:16px; }.step-editor .field { width:100%; }.guide-edit-fields>label { margin:16px 0; }.template-links { display:flex; flex-wrap:wrap; gap:8px; }
.people-status { padding:16px 24px; margin-bottom:24px; }.people-status>p { font-size:12px; }.people-status>details { margin-top:16px; }.people-status .growth-svg { max-height:240px; }.home-heat { padding:16px 24px; margin-bottom:24px; }.home-heat-row { display:flex; align-items:center; gap:10px; padding:6px 0; }.home-heat-row strong { min-width:64px; font-size:13px; }.home-heat-row .mini-heatmap { flex:1; margin:0; }.heat-hint { color:var(--muted); font-size:12px; white-space:nowrap; }.directory-filters { grid-template-columns:minmax(160px,1fr) 160px 136px 136px; margin-bottom:16px; border-radius:var(--radius); }.directory-group { margin:24px 0; }.directory-group>h2 { margin-bottom:16px; }.directory-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }.directory-card { padding:16px; text-align:left; }.directory-card>div { display:flex; gap:8px; align-items:center; justify-content:space-between; }.directory-card>p { color:var(--muted); margin:8px 0; font-size:12px; }.directory-card small { color:var(--muted); }.category-mark { font-size:10px; }.category-internal { color:var(--navy); }.category-official { color:var(--accent); }.category-prospect { color:var(--success); }.category-client { color:var(--muted); }
.directory-group>summary { display:flex; align-items:center; gap:8px; margin-bottom:16px; cursor:pointer; list-style:none; }
.directory-group>summary::-webkit-details-marker { display:none; }
.directory-group>summary h2 { margin:0; font-size:16px; }
.directory-group:not([open])>summary { margin-bottom:0; }
.directory-chevron { color:var(--muted); transition:transform .2s; }
.directory-group:not([open]) .directory-chevron { transform:rotate(-90deg); }
.directory-entry { position:relative; min-width:0; }
.directory-entry .directory-card { display:block; width:100%; height:100%; padding-left:42px; }
.directory-drag-grip { position:absolute; z-index:2; left:13px; top:50%; transform:translateY(-50%); color:var(--muted); cursor:grab; user-select:none; font-size:17px; line-height:1; }
.directory-entry.dragging { opacity:.45; }
.directory-entry.drop-target .directory-card { outline:2px solid var(--accent); outline-offset:2px; }
.network-panel { padding:16px; }.network-toolbar { display:flex; align-items:center; justify-content:flex-end; gap:8px; margin-bottom:16px; }#networkCanvas { display:block; width:100%; height:460px; touch-action:none; background:var(--bg); border-radius:8px; }.network-legend { display:flex; flex-wrap:wrap; gap:16px; font-size:11px; margin-top:16px; }.network-instructions { margin-top:8px; font-size:11px; }
@media(max-width:760px) {
  .directory-filters { grid-template-columns:1fr 1fr; }.directory-filters .search-field { grid-column:1/-1; }
  .nav-inner { gap:0; padding:0 8px; }.nav-button { gap:4px; }
  .help-grid { grid-template-columns:1fr; gap:8px; }.help-summary { padding:16px; }.help-card { padding:16px; }.help-meta,.help-card-foot { margin-top:8px; }.help-card h2 { font-size:15px; margin:8px 0; }
  .help-counts { gap:8px; margin-bottom:8px; }.help-counts strong { font-size:22px; }.help-counts button { padding:0; gap:4px; }
  .idea-strip,.next-schedule { padding:16px; }.next-schedule { gap:8px; }.next-schedule h2 { font-size:14px; }.next-schedule p { font-size:11px; }
  .v5-metrics { grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }.v5-metrics>div { padding:12px; }.v5-metrics span { font-size:10px; }.v5-metrics strong { font-size:22px; }
  .idea-distribution { padding:16px; }.idea-distribution .v5-metrics { grid-template-columns:repeat(4,minmax(0,1fr)); }.idea-day { grid-template-columns:1fr; gap:8px; margin:16px 0; }.idea-day>h2 { padding:0; }.idea-day>h2 span { display:inline; margin-left:8px; }.idea-day>div { padding-left:16px; }.idea-card { padding:16px; }
  .training-summary { grid-template-columns:1fr; gap:16px; padding:16px; margin-bottom:16px; }.course-card,.news-card { padding:16px; }.news-card .detail-actions { gap:4px; }
  .compact-donut { grid-template-columns:120px minmax(0,1fr); gap:16px; }.compact-donut p { font-size:11px; }
  .more-menu { grid-template-columns:1fr; gap:8px; }.more-menu button { padding:16px; }
  .signature-cover { padding:0; }.signature-box { height:100%; border:0; border-radius:0; padding:24px 16px; gap:16px; }.signature-document { padding:16px; }.signature-document p { font-size:13px; }.signature-document h2 { font-size:14px; }.signature-notice { padding:8px 16px; font-size:10px; }
  .personal-dashboard,.subscription-form { padding:16px; }.personal-dashboard .v5-metrics { grid-template-columns:repeat(4,minmax(0,1fr)); }.personal-dashboard .v5-metrics>div { padding:8px 4px; }.mini-heatmap { grid-template-columns:repeat(10,minmax(0,1fr)); }
  .directory-grid { grid-template-columns:1fr; gap:8px; }.people-status { padding:16px; }#networkCanvas { height:380px; }.network-panel { padding:8px; }.network-toolbar { gap:4px; }.network-toolbar .button { padding:4px 8px; }
}
@media(max-width:640px) {
  .app-nav { position:fixed; top:auto; bottom:0; left:0; right:0; z-index:45; padding-bottom:env(safe-area-inset-bottom); border-top:1px solid var(--border); border-bottom:0; }
  .nav-inner { max-width:none; }.nav-button { flex-direction:column; height:60px; font-size:10px; border-bottom:0; border-radius:0; }.nav-button.active { background:var(--accent-soft); }
  .wrap { padding-bottom:160px; }.fab { bottom:calc(80px + env(safe-area-inset-bottom)); }
  .section-heading h2 { font-size:15px; }.page-heading { margin-bottom:16px; }
}
#view[aria-label="首页"]>.page-heading { flex-direction:row; align-items:flex-start; }
#view[aria-label="training"]>.page-heading { flex-direction:row; align-items:flex-start; }
#view[aria-label="training"]>.page-heading>div { min-width:0; }
#view[aria-label="training"]>.page-heading>.button { flex-shrink:0; }
#view[aria-label="首页"]>.help-grid { grid-template-columns:1fr; }
@media(max-width:640px) {
  #view[aria-label="首页"] .help-card { padding:12px 16px; }
  #view[aria-label="首页"] .help-summary { padding:12px 16px; }
  #view[aria-label="首页"] .idea-strip { padding:12px 16px; }
  #view[aria-label="首页"] .idea-strip>button { padding:6px 0; }
}
.signature-box { height:min(840px,calc(100vh - 48px)); height:min(840px,calc(100dvh - 48px)); min-height:0; }
.signature-box>div:first-child,.signature-box>form { flex-shrink:0; }
@media(max-width:760px) { .signature-box { height:100vh; height:100dvh; } }
@media(min-width:761px) {
  #view[aria-label="首页"] { display:grid; grid-template-columns:minmax(0,1.3fr) minmax(0,1fr); gap:16px; align-items:start; }
  #view[aria-label="首页"]>.page-heading { grid-column:1/-1; margin:0; }
  #view[aria-label="首页"]>.help-summary { grid-column:1/-1; margin:0; }
  #view[aria-label="首页"]>.help-grid { grid-column:1; grid-row:3; }
  #view[aria-label="首页"]>.idea-strip { grid-column:2; grid-row:3; margin:0; }
  #view[aria-label="首页"]>.next-schedule { grid-column:2; grid-row:4; margin:0; }
  #view[aria-label="首页"]>details.secondary-block { grid-column:1/-1; margin:0; }
  #view[aria-label="首页"]>details.secondary-block:first-of-type { grid-column:1; grid-row:4; }
}

/* 统计页：桌面三列，平板上目标与学习并排，手机单列。 */
.stats-overview-metrics .v5-metrics { grid-template-columns:repeat(6,minmax(0,1fr)); }
.stats-primary-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
.stats-primary-grid>.chart-card { grid-column:auto; }
@media(min-width:641px) and (max-width:1050px) {
  .stats-overview-metrics .v5-metrics { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .stats-primary-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .stats-primary-grid>.chart-card:first-child { grid-column:1/-1; }
}
@media(max-width:640px) {
  .stats-overview-metrics .v5-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .stats-primary-grid { grid-template-columns:minmax(0,1fr); }
  .stats-primary-grid>.chart-card:first-child { grid-column:auto; }
  .stats-primary-grid .donut-layout { flex-direction:column; }
  .stats-primary-grid .donut-legend { flex-direction:row; flex-wrap:wrap; justify-content:center; }
}

/* v6 中立登录与可选备案页脚，复用既有颜色、圆角、阴影。 */
.login-card { border-radius:var(--radius); }
.site-footer { text-align:center; padding:16px; color:var(--muted); font-size:11px; }
.site-footer a { color:inherit; }
@media (max-width:700px) { body:has(#appView:not(.hidden)) .site-footer { padding-bottom:calc(76px + env(safe-area-inset-bottom)); } }

.home-actions { display:flex; align-items:center; gap:8px; flex-shrink:0; }

/* ---------- v2.0 目标项目页 ---------- */
.goal-card-link { cursor:pointer; transition:border-color .15s ease; }
.goal-card-link:hover { border-color:var(--accent); }
.goal-card-comments { display:inline-flex; align-items:center; gap:4px; font-size:11px; }
.goal-card-progress { display:flex; align-items:center; gap:12px; margin-top:16px; font-size:11px; }
.goal-card-progress .progress-track { flex:1; }
.goal-overview .goal-meta { flex-wrap:wrap; gap:8px; }
.step-row { display:flex; align-items:flex-start; gap:12px; padding:12px 0; border-bottom:1px solid var(--border); }
.step-row:last-child { border-bottom:none; }
.step-check { flex-shrink:0; width:22px; height:22px; border-radius:6px; border:1.5px solid var(--border); background:var(--bg); color:#fff; display:inline-flex; align-items:center; justify-content:center; cursor:pointer; padding:0; margin-top:2px; }
.step-check.static { cursor:default; }
.step-row.done .step-check { background:var(--success); border-color:var(--success); }
.step-main { flex:1; min-width:0; display:flex; flex-direction:column; gap:4px; }
.step-main strong { font-size:13px; font-weight:600; overflow-wrap:anywhere; }
.step-row.done .step-main strong { color:var(--muted); text-decoration:line-through; }
.step-main small { font-size:11px; }
.progress-track.slim { height:4px; }
.step-actions { display:flex; gap:4px; flex-shrink:0; }
.goal-update-form { display:flex; gap:12px; align-items:flex-end; margin-bottom:16px; }
.goal-update-form textarea { flex:1; resize:vertical; min-height:40px; padding:10px 12px; border:1px solid var(--border); border-radius:8px; font:inherit; font-size:13px; background:var(--bg); color:var(--ink); }
.timeline { display:flex; flex-direction:column; gap:12px; }
.timeline-item { display:flex; gap:10px; align-items:flex-start; }
.timeline-item>.color-dot { margin-top:6px; }
.timeline-item.auto { align-items:center; gap:8px; color:var(--muted); font-size:11px; padding:4px 0; }
.timeline-item.auto p { margin:0; }
.timeline-item.auto time { margin-left:auto; font-size:10px; flex-shrink:0; }
.timeline-body { flex:1; min-width:0; }
.timeline-body p { font-size:13px; margin:4px 0 0; }
.goal-link { display:flex; align-items:center; gap:10px; padding:8px 0; border-bottom:1px solid var(--border); font-size:13px; flex-wrap:wrap; }
.goal-link:last-child { border-bottom:none; }
.goal-link>a,.goal-link>.text-button { display:inline-flex; align-items:center; gap:6px; }
.goal-link small { flex:1; }
.goal-link .danger { margin-left:auto; }

/* ---------- v2.0 人脉阶段快捷 ---------- */
.stage-quick { display:flex; gap:8px; flex-wrap:wrap; margin-top:8px; }
.text-button.selected { color:var(--accent); font-weight:600; background:var(--accent-soft); }

/* ---------- v2.1 目标项目页：层次、留白、可读性 ---------- */
.goal-page { display:flex; flex-direction:column; gap:20px; }
.goal-hero { padding:28px; }
.goal-hero-head { display:flex; flex-wrap:wrap; align-items:center; gap:10px 18px; font-size:12px; color:var(--muted); }
.goal-hero-people { display:inline-flex; align-items:center; gap:8px; }
.goal-hero-people .member-dots { margin-left:0; }
.goal-hero-due,.goal-hero-owner { white-space:nowrap; }
.goal-hero-desc { margin:20px 0 0; padding:16px 20px; border-left:3px solid var(--accent); border-radius:0 8px 8px 0; background:var(--accent-soft); color:var(--ink-2); font-size:13px; line-height:1.9; white-space:pre-line; overflow-wrap:anywhere; }
.goal-hero-progress { display:flex; align-items:center; gap:20px; margin-top:22px; padding-top:22px; border-top:1px dashed var(--border); }
.goal-rate { display:flex; flex-direction:column; align-items:center; min-width:104px; }
.goal-rate strong { font-size:34px; line-height:1.1; font-weight:600; color:var(--navy); letter-spacing:-.5px; }
.goal-rate strong i { font-size:16px; font-style:normal; margin-left:2px; color:var(--muted); }
.goal-rate span { font-size:11px; color:var(--muted); margin-top:4px; }
.goal-rate-body { flex:1; display:flex; flex-direction:column; gap:8px; min-width:0; }
.goal-rate-body .progress-track { height:10px; }
.goal-rate-body .muted { font-size:12px; }
.goal-hero-actions { display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin-top:22px; }
.goal-hero-actions .danger { margin-left:auto; }
.goal-columns { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; align-items:start; }
.goal-block { padding:24px; min-width:0; }
.goal-block .section-heading h2 { display:flex; align-items:center; gap:8px; font-size:15px; }
.goal-block .section-heading h2 svg { color:var(--accent); }
.goal-steps { display:flex; flex-direction:column; }
.goal-links { display:flex; flex-direction:column; }
.goal-reflection { margin:0; padding:14px 16px; background:var(--bg); border-radius:8px; font-size:13px; line-height:1.9; white-space:pre-line; }
.goal-block .comments { border:0; padding:0; }
.goal-block .comments>summary { padding:0; }

/* ---------- v2.1 活跃度与最近更新 ---------- */
.activity-heatmap { display:grid; grid-template-columns:repeat(16,minmax(0,1fr)); gap:4px; margin:0; }
.activity-heatmap>span { aspect-ratio:1; border:1px solid var(--border); border-radius:4px; background:var(--heat-0); }
.activity-heatmap>span.heat-1 { background:var(--heat-1); }
.activity-heatmap>span.heat-2 { background:var(--heat-2); }
.activity-heatmap>span.heat-3 { background:var(--heat-3); }
.activity-heatmap>span.heat-4 { background:var(--heat-4); }
.activity-count { min-width:44px; font-size:12px; color:var(--navy); font-weight:600; }
.feed-row.clickable { width:100%; border:0; border-bottom:1px solid var(--border); background:transparent; text-align:left; padding:14px 4px; transition:background .12s; }
.feed-row.clickable:hover { background:var(--bg); }
.feed-row.clickable .feed-icon { color:var(--accent); }
.feed-go { color:var(--muted-2); display:flex; align-items:center; }
.feed-row.clickable:hover .feed-go { color:var(--accent); }
.feed-hint { font-size:11px; margin:0 0 4px; }

/* ---------- v2.1 加载条：慢的时候也有反馈 ---------- */
#loadingBar { position:fixed; top:0; left:0; height:3px; width:0; z-index:9999; background:linear-gradient(90deg,var(--accent),var(--navy)); opacity:0; transition:width .25s var(--ease),opacity .2s; pointer-events:none; }
#loadingBar.active { opacity:1; width:72%; animation:loadingSlide 1.1s var(--ease) infinite; }
@keyframes loadingSlide { 0% { transform:translateX(-40%); } 100% { transform:translateX(140%); } }

/* ---------- v2.1 日程按成员着色：加强可辨识度 ---------- */
.calendar-event { border-left:4px solid var(--member); background:color-mix(in srgb,var(--member) 22%,var(--surface)); }
.calendar-event strong { color:var(--ink); }
.event-owner { color:var(--member); font-weight:600; }
.calendar-legend { display:flex; flex-wrap:wrap; gap:8px 14px; align-items:center; }
.calendar-legend>span { display:inline-flex; align-items:center; gap:6px; font-size:11px; color:var(--ink-2); }
.calendar-legend i { width:10px; height:10px; border-radius:3px; background:var(--member); display:inline-block; }

/* ---------- v2.1 仪表盘与登月轨迹 ---------- */
.goal-visuals { display:grid; grid-template-columns:180px minmax(0,1fr); gap:24px; align-items:center; margin-top:22px; padding-top:22px; border-top:1px dashed var(--border); }
.goal-gauge { display:flex; flex-direction:column; align-items:center; gap:6px; }
.goal-gauge-svg { width:100%; max-width:170px; height:auto; }
.gauge-value { font-size:24px; font-weight:600; fill:var(--navy); }
.gauge-unit { font-size:12px; fill:var(--muted); }
.goal-trajectory { display:flex; flex-direction:column; gap:6px; min-width:0; }
.goal-trajectory-svg { width:100%; height:auto; max-height:180px; }
.goal-visuals-caption { font-size:11px; color:var(--muted); text-align:center; }
.traj-way circle { fill:var(--surface); stroke:var(--muted-2); stroke-width:2; }
.traj-way.done circle { fill:var(--accent); stroke:var(--accent); }
.traj-way.done .traj-way-core { fill:var(--surface); }
.traj-way .traj-way-core { fill:var(--muted-2); }
.traj-label { font-size:10px; fill:var(--muted); }
.traj-rocket { filter:drop-shadow(0 2px 3px rgba(22,40,63,.18)); }
@media (max-width:700px) {
  .goal-visuals { grid-template-columns:1fr; gap:16px; }
  .goal-gauge-svg { max-width:150px; }
  .goal-columns { grid-template-columns:1fr; }
  .goal-hero { padding:20px; }
  .goal-block { padding:18px; }
}
.goal-link-note { flex:0 1 auto; color:var(--muted); font-size:11px; padding-left:2px; }
.goal-link .danger { margin-left:auto; }
.home-heat .section-heading { flex-direction:column; align-items:flex-start; gap:6px; }
.home-heat .section-heading h2 { white-space:nowrap; }
.home-heat .section-heading .muted { line-height:1.7; }
.activity-legend { display:flex; align-items:center; gap:6px; margin:14px 0 0; font-size:11px; color:var(--muted); }
.activity-legend i { width:12px; height:12px; border-radius:3px; border:1px solid var(--border); display:inline-block; }
.activity-heatmap>span.heat-1 { background:var(--heat-1); }
.activity-heatmap>span.heat-2 { background:var(--heat-2); }
.activity-heatmap>span.heat-3 { background:var(--heat-3); }
.activity-heatmap>span.heat-4 { background:var(--heat-4); }
.activity-legend small { margin-left:6px; color:var(--muted-2); }
.pager { display:flex; align-items:center; justify-content:center; gap:16px; padding:8px 0 4px; }
.pager .muted { font-size:11px; }
.changelog-card p { margin:8px 0 0; font-size:13px; line-height:1.7; color:var(--ink-2); }
.changelog-list { display:flex; flex-direction:column; gap:16px; }
.changelog-block { padding:20px 24px; }
.changelog-head { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.changelog-head strong { font-size:17px; color:var(--navy); }
.changelog-head .muted { font-size:11px; margin-left:auto; }
.changelog-notes { margin:14px 0 0; padding-left:22px; display:flex; flex-direction:column; gap:10px; }
.changelog-notes li { font-size:13px; line-height:1.8; color:var(--ink-2); }
.changelog-notes li::marker { color:var(--accent); font-weight:600; }

/* ---------- v2.2 惯例清单 / 想法验证 ---------- */
.routine-panel { margin-top:18px; }
.routine-list { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:2px; }
.routine-item { display:flex; align-items:flex-start; gap:12px; padding:12px 4px; border-bottom:1px solid var(--border); }
.routine-item:last-child { border-bottom:0; }
.routine-check { width:16px; height:16px; margin-top:3px; border:1.5px solid var(--muted-2); border-radius:5px; flex:none; }
.routine-item.due .routine-check { border-color:var(--accent); background:var(--accent); box-shadow:inset 0 0 0 2px var(--surface); }
.routine-main { flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.routine-main strong { font-size:14px; }
.routine-main .muted { font-size:12px; }
.routine-note { font-size:12px; color:var(--ink-2); margin:2px 0 0; }
.routine-flag { font-size:11px; padding:2px 8px; border-radius:999px; background:var(--accent-soft, var(--subtle)); color:var(--accent); flex:none; }
.idea-validate-hint { display:inline-flex; align-items:center; gap:4px; font-size:11px; color:var(--accent); margin-right:10px; }
.idea-validate-hero h2 { margin:10px 0 6px; font-size:20px; }
.idea-validate-hero p { margin:0 0 12px; }
.idea-score { display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; padding:12px 0; border-top:1px dashed var(--border); border-bottom:1px dashed var(--border); margin-bottom:12px; }
.idea-score strong { font-size:28px; color:var(--navy); }
.idea-score span { font-size:12px; color:var(--muted); }
.idea-score p { margin:0; font-size:13px; color:var(--ink-2); flex-basis:100%; }
.check-list { display:flex; flex-direction:column; gap:10px; }
.check-row { padding:12px 14px; border:1px solid var(--border); border-radius:10px; background:var(--surface); }
.check-row.pass { border-left:3px solid var(--success); }
.check-row.unsure { border-left:3px solid var(--heat-2); }
.check-row.fail { border-left:3px solid var(--danger, #B23A56); }
.check-row.unknown { border-left:3px solid var(--border); }
.check-row-head { display:flex; align-items:center; gap:10px; }
.check-row-head strong { font-size:14px; flex:1; }
.check-verdict { font-size:11px; padding:2px 8px; border-radius:999px; background:var(--subtle); color:var(--muted); }
.check-verdict.pass { background:rgba(47,125,99,.12); color:var(--success); }
.check-verdict.unsure { background:var(--heat-2, var(--subtle)); color:var(--ink-2); }
.check-verdict.fail { background:rgba(178,58,86,.12); color:#B23A56; }
.check-prompt { font-size:12px; margin:6px 0 0; line-height:1.6; }
.check-note { font-size:13px; margin:8px 0 0; padding-left:10px; border-left:2px solid var(--border); }

/* ---------- v2.3 War Room 会议 ---------- */
.warroom-panel { padding: 16px 24px; margin-top: 16px; }
.warroom-topic { margin: 8px 0 12px; }
.warroom-topic h3 { margin: 4px 0 0; font-size: 16px; }
.warroom-status { margin-bottom: 12px; }
.warroom-members { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 6px; }
.warroom-member { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--muted); }
.warroom-member.done { color: var(--ink); }
.warroom-member.done .color-dot { box-shadow: 0 0 0 2px var(--accent); }
.warroom-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 12px; }
.warroom-notes-list { display: flex; flex-direction: column; gap: 16px; margin-bottom: 16px; }
.warroom-note { padding-bottom: 14px; border-bottom: 1px solid var(--border); }
.warroom-note:last-child { border-bottom: 0; padding-bottom: 0; }
.warroom-note-head { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.warroom-note-head strong { font-size: 14px; }
.warroom-note-head time { font-size: 11px; color: var(--muted); margin-left: auto; }
.warroom-note p { margin: 0; font-size: 13px; line-height: 1.7; }

/* ---------- 日历缩略图选择器 ---------- */
.date-jump { display: inline-flex; align-items: center; gap: 5px; background: none; border: none; font-size: 14px; font-weight: 500; color: var(--ink); cursor: pointer; padding: 4px 8px; border-radius: 6px; }
.date-jump:hover { background: var(--subtle); }
.picker-nav { display: flex; align-items: center; gap: 6px; margin-bottom: 14px; }
.picker-nav select { flex: 1; padding: 6px 8px; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; background: var(--surface); color: var(--ink); }
.picker-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; margin-bottom: 14px; }
.picker-weekday { text-align: center; font-size: 11px; color: var(--muted); padding: 4px 0; }
.picker-day { text-align: center; padding: 8px 0; border: none; background: none; border-radius: 6px; font-size: 13px; color: var(--ink); cursor: pointer; }
.picker-day:hover { background: var(--subtle); }
.picker-day.selected { background: var(--accent); color: #fff; }
.picker-day.today { font-weight: 500; box-shadow: inset 0 0 0 1.5px var(--accent); }
.picker-day.empty { visibility: hidden; }

/* ==================== v2.5.0 打卡 / 监督 / 培训排序 ==================== */
/* 打卡与监督：与日程解耦的独立面板，视觉沿用浅色藏青体系与单强调色。 */
.checkin-task-section { margin-bottom:28px; }
.checkin-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:12px; }
.checkin-card { padding:16px; }
.checkin-card.due { border-color:var(--accent); }
.checkin-card h2 { font-size:15px; margin:8px 0; }
.checkin-meta { display:flex; flex-wrap:wrap; gap:12px; font-size:12px; color:var(--muted); margin-bottom:10px; }
.checkin-meta span { display:inline-flex; gap:5px; align-items:center; }
.checkin-note { font-size:12px; color:var(--ink-2); margin:0 0 10px; }
.checkin-card-actions { display:flex; gap:8px; flex-wrap:wrap; }
.status-badge.off { background:var(--subtle); color:var(--muted); }
.status-badge.overdue { background:var(--accent-soft); color:var(--accent); }
.status-badge.missed { background:var(--warning-soft); color:var(--warning); }
.checkin-pending-panel,.supervision-alert-panel { padding:16px; margin-bottom:24px; }
.checkin-pending-row,.supervision-alert-row { display:flex; gap:12px; align-items:center; justify-content:space-between; padding:10px 0; border-top:1px solid var(--border); }
.checkin-pending-row>div,.supervision-alert-row>div { display:flex; flex-direction:column; gap:2px; }
.checkin-pending-row:first-of-type,.supervision-alert-row:first-of-type { border-top:0; }
.weekday-field legend { font-size:12px; color:var(--muted); margin-bottom:8px; }
.weekday-picks { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:8px; }
.weekday-pick input { position:absolute; opacity:0; pointer-events:none; }
.weekday-pick span { display:inline-flex; align-items:center; justify-content:center; min-width:44px; height:34px; padding:0 10px; border:1px solid var(--border); border-radius:7px; font-size:12px; cursor:pointer; background:var(--surface); }
.weekday-pick input:checked+span { background:var(--accent-soft); border-color:var(--accent); color:var(--accent); font-weight:600; }
.weekday-all { margin-bottom:6px; }
.checkin-matrix { overflow-x:auto; margin:8px 0 4px; }
.checkin-matrix-row { display:flex; gap:2px; align-items:center; min-width:max-content; }
.checkin-matrix-name { display:inline-flex; align-items:center; gap:6px; width:104px; flex:none; font-size:12px; color:var(--ink-2); }
.checkin-matrix-cell { width:26px; height:26px; flex:none; border-radius:4px; display:flex; align-items:center; justify-content:center; font-size:11px; background:var(--subtle); color:var(--muted-2); }
.checkin-matrix-cell.today { outline:1px solid var(--accent); }
.checkin-matrix-cell.done { background:var(--success-soft); color:var(--success); font-weight:700; }
.checkin-matrix-cell.missing { background:var(--danger-soft); color:var(--danger); font-weight:700; }
.checkin-matrix-cell.missed { background:var(--warning-soft); color:var(--warning); font-weight:700; }
.checkin-matrix-row.head .checkin-matrix-cell { background:transparent; font-size:10px; color:var(--muted); }
.checkin-record-list { display:flex; flex-direction:column; gap:8px; }
.checkin-record-row { display:flex; gap:8px; align-items:flex-start; font-size:12px; padding:6px 0; border-bottom:1px solid var(--border); }
.checkin-record-row>div { display:flex; flex-direction:column; gap:1px; flex:1; }
.checkin-matrix-section h3,.checkin-records-section h3,.supervision-updates h3,.warroom-notes-list h3 { font-size:13px; color:var(--ink-2); margin:16px 0 8px; }
.supervision-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:12px; }
.supervision-card { padding:16px; border-left:3px solid var(--border); }
.supervision-card h2 { font-size:15px; margin:8px 0; }
.supervision-card p { font-size:12px; color:var(--ink-2); margin:0 0 8px; }
.supervision-card.level-notice { border-left-color:var(--muted-2); }
.supervision-card.level-warning { border-left-color:var(--warning); }
.supervision-card.level-severe { border-left-color:#C97A45; }
.supervision-card.level-critical { border-left-color:var(--danger); }
.supervision-card.fixed { opacity:.72; }
.supervision-level { display:inline-flex; align-items:center; border-radius:5px; padding:2px 8px; font-size:10px; font-weight:600; }
.supervision-level.tone-notice { background:var(--subtle); color:var(--muted); }
.supervision-level.tone-warning { background:var(--warning-soft); color:var(--warning); }
.supervision-level.tone-severe { background:#FBF0E7; color:#B3602F; }
.supervision-level.tone-critical { background:var(--danger-soft); color:var(--danger); }
.supervision-meta { display:flex; flex-wrap:wrap; gap:12px; font-size:12px; color:var(--muted); margin-bottom:8px; }
.supervision-meta span { display:inline-flex; gap:5px; align-items:center; }
.supervision-overdue { color:var(--danger); font-weight:600; }
.supervision-latest { font-size:11px; }
.supervision-actions { display:flex; gap:8px; flex-wrap:wrap; }
.supervision-update-list { display:flex; flex-direction:column; gap:10px; }
.supervision-update-row { display:flex; gap:8px; align-items:flex-start; font-size:12px; }
.supervision-update-row>div { flex:1; }
.supervision-update-row p { margin:2px 0; color:var(--ink-2); }
.supervision-update-row time { font-size:11px; }
.home-alert-panel { border-left:3px solid var(--danger); }
.home-alert-panel .supervision-alert-row { width:100%; text-align:left; background:none; border:0; border-top:1px solid var(--border); padding:10px 0; cursor:pointer; }
.home-alert-panel .supervision-alert-row:hover { background:var(--subtle); }
.supervision-alert-text { display:flex; flex-direction:column; gap:1px; flex:1; }
.supervision-alert-text small { color:var(--muted); font-size:11px; }
.warroom-gain { margin:12px 0; padding:12px; border-radius:8px; background:var(--accent-soft); }
.warroom-gain.missing { background:var(--warning-soft); }
.warroom-gain p { margin:4px 0 0; font-size:13px; }
/* 培训：拖动排序、置顶、分页与按次序学习 */
.course-card.draggable { cursor:grab; }
.course-card.dragging { opacity:.5; cursor:grabbing; }
.course-card-head { display:flex; align-items:center; gap:8px; }
.course-pin { background:var(--accent-soft); color:var(--accent); border-radius:5px; padding:2px 7px; font-size:10px; font-weight:600; }
.course-drag-handle { margin-left:auto; color:var(--muted-2); cursor:grab; font-size:14px; }
.course-card-foot { display:flex; align-items:center; gap:12px; }
.pager { display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-top:20px; }
.page-number { min-width:32px; height:32px; border:1px solid var(--border); border-radius:6px; background:var(--surface); font-size:12px; color:var(--muted); }
.page-number.active { background:var(--accent-soft); border-color:var(--accent); color:var(--accent); font-weight:600; }
.course-sequence-list { list-style:none; padding:0; margin:10px 0 0; display:flex; flex-direction:column; gap:6px; }
.course-sequence-item { display:flex; gap:10px; align-items:center; padding:8px 10px; border:1px solid var(--border); border-radius:8px; font-size:13px; }
.course-sequence-item.done { background:var(--success-soft); border-color:transparent; }
.course-sequence-item.current { border-color:var(--accent); background:var(--accent-soft); }
.course-sequence-no { width:22px; height:22px; flex:none; border-radius:50%; background:var(--subtle); color:var(--muted); display:flex; align-items:center; justify-content:center; font-size:11px; }
.course-sequence-item>div { flex:1; display:flex; flex-direction:column; gap:1px; }
.course-next-hint { font-size:12px; margin:0 0 8px; }
@media (max-width:640px) {
  .checkin-grid,.supervision-grid { grid-template-columns:1fr; }
  .checkin-matrix-name { width:76px; font-size:11px; }
}
.checkin-pending-more { font-size:12px; margin:8px 0 0; padding-top:8px; border-top:1px solid var(--border); }
.checkin-card .card-header { align-items:flex-start; }
.checkin-card-type { flex:1; text-align:right; line-height:1.5; font-size:11px; }
/* v2.6.0: small contextual polls and compact schedule controls. */
.schedule-quick-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-bottom:12px}
.comment-poll{margin:12px 0;padding:14px;border:1px solid var(--line,#dce1e8);border-radius:12px;background:var(--surface,#fff);max-width:100%}
.poll-meta{display:flex;gap:10px;justify-content:space-between;flex-wrap:wrap;font-size:12px}.poll-meta time{color:var(--muted,#657084)}
.poll-option{display:flex;align-items:center;gap:8px;border:1px solid var(--line,#dce1e8);padding:10px;border-radius:8px;margin:8px 0;cursor:pointer}
.poll-option span{flex:1;min-width:0;overflow-wrap:anywhere}.poll-option small{display:block;color:var(--muted,#657084);margin-top:4px}.poll-option strong{white-space:nowrap;font-size:12px}
.poll-context{border-left:3px solid #ccd5e1;padding:8px 12px;max-height:160px;overflow:auto;white-space:pre-wrap;color:var(--muted,#657084)}
.checkin-proof{display:block;max-width:100%;height:auto;border-radius:8px}.comment-poll form{margin:0}
@media(max-width:600px){.schedule-quick-actions{justify-content:flex-start}.comment-poll{padding:10px}.poll-option{padding:9px}}

/* Seasonal editorial home — no external imagery or fonts. */
.home-hero{position:relative;isolation:isolate;overflow:hidden;min-height:340px;border-radius:28px;margin:24px 0 28px;padding:42px;background:#eee6d9;color:#293a37;--sky:#d8be95;--hill:#738078;box-shadow:0 16px 50px #263d3210}
.season-spring{--sky:#c8d9ac;--hill:#537a66;background:#edf1e5}.season-summer{--sky:#a2d4d0;--hill:#346f70;background:#e4f0eb}.season-winter{--sky:#c8d6df;--hill:#637b91;background:#edf0f2}
.hero-copy{position:relative;z-index:2;width:60%;max-width:580px}.hero-copy .eyebrow{letter-spacing:.2em;font-size:11px;color:#556b61}.hero-copy h1{font-family:Georgia,'Songti SC','SimSun',serif;font-size:clamp(32px,4vw,52px);line-height:1.3;font-weight:500;letter-spacing:.1em;margin:22px 0 16px}.hero-copy p{line-height:1.9;max-width:380px;color:#455c54;font-size:13px}.hero-actions{display:flex;align-items:center;gap:14px;margin-top:24px;flex-wrap:wrap}.hero-actions .button{background:#294d43;border-color:#294d43;color:white}.hero-weather{position:absolute;right:32px;top:32px;z-index:2;display:grid;gap:9px;text-align:right;font-size:12px;color:#314d46}.hero-weather strong{font-family:Georgia,serif;font-weight:400;font-size:24px}.hero-weather small{opacity:.8}.hero-weather a{color:inherit}.landscape{position:absolute;inset:0;z-index:0;pointer-events:none}.sky-orb{position:absolute;right:10%;top:27%;width:100px;height:100px;border-radius:50%;background:#fff6d6;box-shadow:0 0 80px 40px #fff8df65;animation:orb-drift 14s ease-in-out infinite alternate}.ridge{position:absolute;width:70%;height:75%;right:-18%;bottom:-38%;border-radius:45% 50% 0 0;transform:rotate(-18deg);background:var(--hill);opacity:.65}.ridge-back{right:-5%;bottom:-38%;opacity:.22;transform:rotate(18deg)}.ridge-front{background:linear-gradient(135deg,var(--sky),var(--hill))}.home-hero[data-sky=rain] .weather-veil{position:absolute;inset:0 0 0 55%;opacity:.28;background:repeating-linear-gradient(110deg,transparent 0 35px,#fff 36px 37px,transparent 38px 60px);animation:rain-flow 2s linear infinite}.home-hero[data-sky=cloud] .sky-orb{filter:blur(10px);opacity:.5}.home-hero[data-sky=snow] .weather-veil{position:absolute;inset:0 0 0 55%;background:radial-gradient(circle,#fff 2px,transparent 3px) 0 0/45px 60px;animation:rain-flow 8s linear infinite}.home-hero[data-sky=night] .sky-orb{background:#edf2ff;box-shadow:0 0 60px #e6eeff80}.home-hero[data-sky=night]{--sky:#aebacb;--hill:#465b77}
.home-dashboard{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:22px;align-items:start}.home-dashboard>*{min-width:0;margin:0}.home-dashboard>.page-heading,.home-dashboard>.help-summary,.home-dashboard>.home-alert-panel,.home-dashboard>.home-heat{grid-column:1/-1}.home-dashboard .surface{border-color:#e3e8e4;box-shadow:0 5px 20px #1e3a2f05;border-radius:18px}.home-dashboard>.help-grid{display:grid;gap:14px}.home-dashboard .empty-state{padding:28px 18px;min-height:150px}.home-dashboard>.secondary-block{padding:18px 20px;background:#fff;border:1px solid #e3e8e4;border-radius:18px}.home-dashboard>.home-heat{margin-top:8px}.home-dashboard .section-heading h2{font-size:16px}.home-dashboard .feed-row{padding-top:14px;padding-bottom:14px}.home-dashboard>.warroom-panel{border-top:3px solid #688577}.home-dashboard>.idea-strip{border-top:3px solid #c6a57b}.home-dashboard .surface:hover{box-shadow:0 9px 26px #1e3a2f0b;transition:box-shadow .25s}
@keyframes orb-drift{to{transform:translate(10px,-12px)}}@keyframes rain-flow{to{background-position:20px 60px}}
@media(max-width:700px){.home-hero{margin:16px 0 20px;padding:26px 22px;min-height:355px;border-radius:22px}.hero-copy{width:100%;padding-top:58px}.hero-copy h1{font-size:34px}.hero-copy p{max-width:260px}.hero-weather{top:20px;right:22px;gap:4px}.hero-weather strong{font-size:18px}.hero-weather small{font-size:10px}.sky-orb{right:8%;top:39%;width:65px;height:65px;opacity:.65}.ridge{opacity:.35}.hero-actions{gap:8px}.hero-actions .text-button{font-size:12px}.home-dashboard{grid-template-columns:minmax(0,1fr);gap:16px}.home-dashboard>*{grid-column:1!important}.home-dashboard .home-heat-row{overflow:auto}}
@media(prefers-reduced-motion:reduce){.landscape *{animation:none!important}.home-dashboard .surface{transition:none!important}}

.home-hero[data-sky=rain],.home-hero[data-sky=cloud]{--sky:#bbc9cb;--hill:#617780;background:#e6ece9}.home-hero[data-sky=snow]{--sky:#d3dee6;--hill:#8097aa;background:#eef3f5}

#view[aria-label="首页"]{display:block}.home-dashboard .feed-text{display:block;min-width:0}.home-dashboard .feed-text strong{white-space:normal;overflow-wrap:anywhere}.home-dashboard .feed-text p{margin:6px 0;font-size:12px;color:var(--muted)}.home-dashboard .feed-text time{margin:0}.home-dashboard>.warroom-panel{grid-column:1/-1}.home-dashboard .page-heading{margin-bottom:0}.home-dashboard>.next-schedule{min-height:160px}.home-hero[data-sky=rain] .sky-orb{opacity:.25;filter:blur(12px)}

/* Keep short help lists out of shared rows with taller resource panels. */
.home-dashboard>.help-grid{grid-column:1/-1;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}.home-dashboard>.feed-panel{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:24px}.home-dashboard>.feed-panel>.section-heading,.home-dashboard>.feed-panel>p{grid-column:1/-1}.home-dashboard>.feed-panel>.feed-row{width:100%;min-width:0;text-align:left}
@media(max-width:900px){.home-dashboard>.feed-panel{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.home-dashboard>.feed-panel{grid-template-columns:minmax(0,1fr)}}

/* A quiet bilingual reading page between the landscape and daily collaboration. */
.daily-poetry{margin:0 0 32px;padding:32px 38px 26px;background:linear-gradient(135deg,#fffefa,#f5f3eb);border:1px solid #e4e4d9;border-radius:22px;color:#34463f}.poetry-caption{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;color:#7a8275;font-size:11px}.poetry-caption .eyebrow{letter-spacing:.14em}.poetry-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:22px}.poetry-heading h2{font-family:Georgia,'Songti SC','SimSun',serif;font-size:26px;font-weight:500;letter-spacing:.08em;margin:0}.poetry-heading p{font-family:Georgia,serif;font-style:italic;font-size:15px;margin:8px 0 0;color:#6e776c}.poetry-kind{border:1px solid #d9ddce;padding:4px 9px;border-radius:30px;font-size:11px;color:#73806b;white-space:nowrap}.poetry-byline{display:flex;gap:8px 24px;flex-wrap:wrap;font-size:12px;color:#7d8477;margin:14px 0 24px}.poetry-byline span{margin-left:auto}.poetry-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:36px;padding:4px 0 12px}.poetry-columns>div{min-width:0;overflow-wrap:anywhere}.poetry-columns p{margin:0 0 18px}.poetry-original{font:16px/1.9 Georgia,'Times New Roman',serif;color:#354b43}.poetry-translation{font:15px/2 'Songti SC','SimSun',serif;letter-spacing:.035em;border-left:1px solid #dce0d3;padding-left:36px;color:#566253}.poetry-source{display:flex;flex-wrap:wrap;gap:10px 22px;padding-top:15px;border-top:1px solid #e1e4d7;font-size:11px;color:#7d8574}.poetry-source a{color:inherit;line-height:1.7}.poetry-source a:hover{color:#294d43}
@media(max-width:700px){.daily-poetry{padding:24px 22px;margin-bottom:24px;border-radius:20px}.poetry-heading h2{font-size:23px}.poetry-columns{grid-template-columns:minmax(0,1fr);gap:12px}.poetry-translation{padding:22px 0 0;border-left:0;border-top:1px solid #dce0d3}.poetry-byline span{margin-left:0}.poetry-original{font-size:15px}.poetry-translation{font-size:15px}}

.meeting-archive{padding:20px;margin-bottom:16px}.meeting-archive summary{cursor:pointer;font-weight:600;line-height:1.8}.meeting-archive summary small{font-weight:400;color:var(--muted);margin-left:12px}.meeting-archive-body{padding-top:18px}.meeting-archive .warroom-note{margin:14px 0;padding:16px;border-top:1px solid var(--line)}
.landscape:after{content:"";position:absolute;inset:15% -30%;background:radial-gradient(ellipse at center,#ffffff60 0,transparent 65%);animation:home-cloud-drift 12s ease-in-out infinite alternate;pointer-events:none}.home-hero .sky-orb{animation:home-orb-drift 7s ease-in-out infinite alternate}.home-hero[data-sky=night] .sky-orb{box-shadow:0 0 36px 12px #e6eeff80}.home-hero .ridge-back{animation:home-hill-breathe 18s ease-in-out infinite alternate}@keyframes home-cloud-drift{from{transform:translateX(-18%);opacity:.35}to{transform:translateX(18%);opacity:.8}}@keyframes home-orb-drift{to{transform:translate(-22px,-16px);filter:brightness(1.12)}}@keyframes home-hill-breathe{to{transform:rotate(18deg) translateX(-18px)}}
.daily-poetry{padding:18px 24px;margin-bottom:22px}.poetry-heading{margin-top:12px}.poetry-heading h2{font:500 23px/1.3 'STKaiti','KaiTi','Kaiti SC',Georgia,serif}.poetry-heading p{font-size:13px;margin-top:5px}.poetry-byline{margin:8px 0 12px}.poetry-columns{gap:24px;max-height:300px;overflow:auto;scrollbar-width:thin}.poetry-original{font:italic 14px/1.6 Georgia,'Palatino Linotype',serif}.poetry-translation{font:14px/1.65 'STKaiti','KaiTi','Kaiti SC','FangSong',serif;padding-left:24px;letter-spacing:.02em}.poetry-source{padding-top:10px}.poetry-columns p{margin-bottom:12px}@media(max-width:700px){.daily-poetry{padding:18px}.poetry-columns{max-height:280px;gap:12px}.poetry-translation{padding:14px 0 0}.poetry-heading h2{font-size:21px}}@media(prefers-reduced-motion:reduce){.landscape:after,.home-hero .sky-orb,.home-hero .ridge-back{animation:none!important}}
