@charset "UTF-8";
/* Weekin workspace: shared primitives for desktop and phone. */
:root { color-scheme: light; --text-page:20px; --text-dialog:18px; --text-nav:13px; --text-event:12px; --text-card:13px; --text-brand:22px; --font-ui: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif; --paper: #f8f9fb; --surface: #ffffff; --ink: #202430; --green: #4f5ba5; --muted: #626c7c; --line: #e9ebef; --soft: #edf0fc; --shadow-card: 0 2px 3px #232b3e03, 0 8px 28px #232b3e05; --shadow-dialog: 0 18px 80px #20263b20; --orange: #98613d; --blue: #4b7798; font: 13px/1.5 var(--font-ui); color: var(--ink); background: var(--paper); font-synthesis: none; }
* { box-sizing: border-box; }
body { margin: 0; background: var(--paper); }
button, input, textarea, select { font: inherit; color: inherit; }
button { border: 0; background: none; cursor: pointer; min-height: 44px; }
button:disabled { cursor: default; opacity: .45; }
button, a, input, textarea, select { -webkit-tap-highlight-color: transparent; }
button, a { touch-action: manipulation; }
button, a, select { transition: background-color .15s, border-color .15s, box-shadow .15s; }
button:focus-visible, a:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible { outline: 2px solid var(--green); outline-offset: 3px; }
a { color: var(--green); text-decoration: none; }
svg { display: block; }
h1, h2, h3, p { margin: 0; }
h1, h2 { font-family: var(--font-ui); font-weight: 600; }
input, textarea, select { width: 100%; min-width: 0; padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); }
textarea { resize: vertical; line-height: 1.7; }
input[type=checkbox] { width: 18px; height: 18px; accent-color: var(--green); }
.icon { width: 19px; height: 19px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; }
.small { font-size: 13px; line-height: 1.8; color: var(--muted); }
/* Feature forms, source receipts, permissions and original-file readers. */
.recording { color:var(--orange)!important; animation:pulse 1s infinite; }
.schedule-tools { margin-bottom:10px; }
.type-label { color:var(--green); }
.type-label.talk { color:var(--blue); }
.type-label.activity { color:var(--orange); }
.privacy-label { font-size:11px; padding:1px 5px; border:1px solid var(--line); border-radius:4px; margin-left:3px; }
.event-time { display:flex; align-items:baseline; gap:5px; font:17px var(--font-ui); color:var(--ink); margin-bottom:5px; }
.event-time>span { font-size:13px; color:var(--muted); }
.event-time .series-label { font:11px var(--font-ui); padding:2px 5px; border:1px solid var(--line); border-radius:3px; margin-left:3px; }
.personal-pending { margin-top:25px; border-top:1px solid var(--line); padding-top:17px; }
.personal-pending h2,.pending-edits h2 { font:500 18px var(--font-ui); }
.personal-pending h2 span { font-size:12px; color:var(--muted); }
.pending-edits { margin-top:26px; }
.status-pill { font-size:11px; padding:5px 8px; background:var(--soft); border-radius:6px; white-space:nowrap; color:var(--green); }
.status-pill.pending { color:#895a30; background:#fff1df; }
.detail-cover { height:145px; border-radius:12px; margin-bottom:22px; position:relative; overflow:hidden; background:var(--soft); }
.detail-cover .cover { width:100%; height:100%; border-radius:0; }
.detail-cover svg { width:100%; height:100%; }
.detail-cover .type-label { position:absolute; left:15px; top:13px; background:var(--surface); border-radius:15px; padding:5px 9px; font-size:11px; }
.hint { font-size:11px; color:var(--muted); line-height:1.8; margin-top:12px; }
.notice { font-size:12px; line-height:1.8; padding:13px 15px; border:1px solid #dfc8a7; background:#fbf3e5; color:#8b673c; border-radius:10px; margin:17px 0; }
.form-tabs { display:grid; grid-template-columns:repeat(3,1fr); gap:5px; padding:4px; border-radius:10px; background:var(--paper); margin-bottom:21px; }
.form-tabs button { display:flex; align-items:center; justify-content:center; gap:7px; font-size:12px; border-radius:7px; }
.form-tabs button.active { background:var(--surface); box-shadow:0 1px 5px #26304a0b; }
.form-tabs .icon { width:16px; height:16px; }
.field { display:block; margin:14px 0; }
.field>span { display:block; font-size:12px; margin-bottom:8px; }
.form-pair { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.form-pair .field { margin:6px 0; }
.voice-zone { text-align:center; padding:13px 0 21px; }
.mic-circle { display:grid; place-items:center; width:72px; height:72px; border-radius:50%; background:var(--soft); color:var(--green); margin:0 auto 13px; }
.mic-circle .icon { width:30px; height:30px; }
.voice-zone p { font-size:12px; color:var(--muted); line-height:1.8; margin:8px 0; }
.voice-zone .recording { animation:pulse 1s infinite; background:#e9ddcc; color:#a56c40; }
.form-error { font-size:12px; color:#ac4b39; line-height:1.7; margin:12px 0; }
.export-options { display:flex; gap:12px; align-items:flex-start; font-size:12px; line-height:1.7; padding:18px 0; border-top:1px solid var(--line); }
.export-options input { margin-top:2px; }
.export-options small { display:block; font-size:11px; color:var(--muted); }
.export-summary { background:var(--soft); border-radius:11px; padding:20px; margin:15px 0; }
.export-summary strong { font:36px var(--font-ui); }
.export-summary span { font-size:12px; color:var(--muted); margin-left:8px; }
.export-summary p { font-size:11px; line-height:1.8; color:var(--muted); margin-top:8px; }
.success-mark { width:62px; height:62px; background:var(--soft); color:var(--green); border-radius:50%; display:grid; place-items:center; margin:6px auto 18px; }
.success-mark .icon { width:27px; height:27px; }
.success { text-align:center; }
.success h2 { font-size:var(--text-page); font-weight:500; }
.success p { font-size:12px; line-height:1.9; color:var(--muted); margin:13px 0 23px; }
.collection-note { display:flex; gap:8px; align-items:flex-start; font-size:11px; color:var(--muted); line-height:1.8; background:var(--paper); padding:12px 14px; border-radius:8px; margin-top:16px; }
.collection-note .icon { width:15px; height:15px; margin-top:2px; flex-shrink:0; }
.pending-card { border:1px solid var(--line); background:var(--surface); border-radius:12px; padding:17px; margin:12px 0; }
.pending-card h3 { font-size:14px; margin:9px 0; line-height:1.6; }
.pending-card p { font-size:11px; line-height:1.8; color:var(--muted); }
.pending-card button { margin-top:10px; }
.right-actions { display:flex; gap:8px; align-items:center; }
.calendar-hint { font-size:11px; color:var(--muted); margin-top:10px; line-height:1.8; }
.inline-label { display:flex; align-items:center; gap:6px; }
.mobile-collect { display:none; }
.privacy-note { margin-top:14px; font-size:11px; line-height:1.8; color:var(--muted); }
.visually-hidden { position:absolute!important; width:1px!important; height:1px!important; padding:0!important; margin:-1px!important; overflow:hidden!important; clip:rect(0,0,0,0)!important; white-space:nowrap!important; border:0!important; }
.intake-target { display:flex; align-items:center; gap:8px; padding:11px 12px; background:var(--soft); border-radius:9px; font-size:11px; margin-bottom:14px; flex-wrap:wrap; }
.intake-target .icon { width:16px; height:16px; }
.intake-target b { font-weight:500; }
.intake-target .status-pill { margin-left:auto; font-size:11px; background:#ffffffb0; padding:4px 7px; }
.quick-input { background:var(--paper); border-color:transparent; font-size:14px; line-height:1.8; min-height:125px; }
.capture-toolbar { display:flex; align-items:center; gap:16px; padding-top:9px; }
.attach-button { display:flex; align-items:center; gap:6px; font-size:12px; position:relative; cursor:pointer; min-height:44px; }
.attach-button:focus-within { outline:2px solid var(--green); outline-offset:3px; border-radius:5px; }
.attach-button .icon { width:18px; height:18px; }
.toolbar-mic.mic-circle { margin:0; background:none; border-radius:0; width:auto; height:auto; min-height:44px; display:flex; gap:6px; font-size:12px; }
.toolbar-mic.mic-circle .icon { width:18px; height:18px; }
.toolbar-mic.mic-circle.recording { background:var(--sand); border-radius:7px; padding:0 8px; }
.attachment-previews { display:flex; gap:8px; flex-wrap:wrap; margin-top:12px; }
.attachment-item { width:89px; position:relative; background:var(--paper); border-radius:8px; padding:5px; min-width:0; }
.attachment-item img,.attachment-item>div { height:62px; width:100%; object-fit:cover; border-radius:4px; display:grid; place-items:center; }
.attachment-item>span { font-size:11px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; display:block; padding-top:5px; }
.attachment-item button { position:absolute; right:-6px; top:-6px; width:27px; height:27px; min-height:27px; display:grid; place-items:center; background:var(--surface); border:1px solid var(--line); border-radius:50%; }
.attachment-item button .icon { width:12px; height:12px; }
.intake-options { margin:12px 0; color:var(--muted); font-size:11px; }
.intake-options summary { cursor:pointer; min-height:30px; line-height:30px; }
.intake-options .export-options { margin-top:4px; padding:12px 0; }
.demo-panel { border-top:1px solid var(--line); margin-top:22px; padding-top:18px; }
.demo-panel b { font-size:12px; font-weight:500; display:block; }
.demo-panel>div>span { display:block; font-size:11px; line-height:1.8; color:var(--muted); margin-top:5px; }
.demo-choices { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:12px; }
.demo-choices button { font-size:11px; border:1px solid var(--line); border-radius:9px; padding:11px 8px; display:flex; gap:6px; align-items:center; justify-content:center; background:var(--paper); min-height:47px; }
.demo-choices button .icon { width:16px; height:16px; }
.demo-panel>.text-link { margin-top:8px; }
.receipt-status { display:flex; gap:12px; padding:16px; background:var(--soft); border-radius:12px; margin-bottom:17px; align-items:flex-start; }
.receipt-status.needs_info,.receipt-status.read_blocked,.receipt-status.conflict,.receipt-status.awaiting_engine,.receipt-status.recognizing { background:#fff4e6; }
.receipt-icon { height:29px; width:29px; display:grid; place-items:center; flex-shrink:0; border:1px solid #c4d4c9; border-radius:50%; }
.receipt-icon .icon { width:16px; height:16px; }
.receipt-status b { font-size:14px; font-weight:500; line-height:1.7; }
.receipt-status p { font-size:11px; color:var(--muted); line-height:1.9; margin-top:5px; }
.receipt-source { display:flex; gap:10px; align-items:flex-start; margin:16px 0; }
.receipt-source>.icon { width:18px; height:18px; color:var(--muted); flex-shrink:0; }
.receipt-source b { font-size:12px; font-weight:500; display:block; overflow-wrap:anywhere; }
.receipt-source span { font-size:11px; color:var(--muted); display:block; margin-top:6px; }
.pipeline-strip { display:flex; align-items:center; justify-content:space-between; gap:5px; font-size:11px; color:#b3b7aa; margin:22px 0; line-height:1.7; }
.pipeline-strip i { font-style:normal; color:#b6bdad; }
.pipeline-strip .done { color:var(--green); }
.output-card { border:1px solid var(--line); padding:15px; border-radius:11px; margin:12px 0; background:#f8f9fc; }
.output-top { display:flex; gap:9px; align-items:flex-start; justify-content:space-between; }
.output-top>b { font-size:13px; line-height:1.8; font-weight:500; overflow-wrap:anywhere; }
.output-top .status-pill { font-size:11px; flex-shrink:0; }
.output-card>p { font-size:11px; line-height:1.9; color:var(--muted); margin-top:10px; }
.field-evidence { border-top:1px solid var(--line); padding-top:12px; margin-top:11px; }
.field-evidence summary { font-size:11px; cursor:pointer; color:var(--muted); }
.evidence-rows { margin-top:12px; }
.evidence-rows>div { display:grid; grid-template-columns:63px minmax(0,1fr) 64px; gap:7px; border-bottom:1px solid var(--line); padding:9px 0; font-size:11px; line-height:1.8; align-items:flex-start; }
.evidence-rows span { color:var(--muted); }
.evidence-rows b { font-weight:500; overflow-wrap:anywhere; }
.evidence-rows small { font-size:11px; color:var(--green); text-align:right; }
.evidence-rows small.missing { color:var(--orange); }
.one-question { padding:13px 0 0; margin-top:12px; border-top:1px solid var(--line); }
.one-question>span { font-size:11px; color:var(--orange); display:block; margin-bottom:11px; }
.one-question label { font-size:11px; display:flex; align-items:center; gap:9px; margin:10px 0; }
.one-question input { width:130px; padding:9px; font-size:12px; }
.raw-material { font-size:11px; color:var(--muted); line-height:1.8; margin:20px 0; }
.raw-material summary { cursor:pointer; margin-bottom:10px; }
.raw-material p { white-space:pre-wrap; overflow-wrap:anywhere; background:var(--paper); padding:10px; border-radius:7px; margin:8px 0; }
.raw-material small { font-size:11px; }
.scenario-list { display:flex; flex-direction:column; gap:9px; }
.scenario-list>button { display:grid; grid-template-columns:1fr 20px; align-items:center; gap:6px 12px; text-align:left; padding:17px; background:var(--paper); border:1px solid var(--line); border-radius:11px; }
.scenario-list b { font-size:13px; font-weight:500; line-height:1.7; }
.scenario-list span { font-size:11px; line-height:1.8; color:var(--muted); }
.scenario-list .icon { grid-column:2; grid-row:1/3; }
.poster-preview { background:#eaf0fa; padding:21px; color:#40527c; border:1px solid #ccd8ec; position:relative; border-radius:8px; margin:15px 0; overflow:hidden; }
.poster-preview:after { content:""; width:105px; height:105px; border:1px solid #93a8cb; border-radius:50%; position:absolute; right:-22px; bottom:28px; box-shadow:0 0 0 17px #93a8cb20,0 0 0 34px #93a8cb14; }
.poster-preview small { font:11px var(--font-ui); letter-spacing:.16em; }
.poster-preview b { display:block; font:27px/1.5 var(--font-ui); margin:13px 0 17px; position:relative; z-index:1; }
.poster-preview span { font:12px var(--font-ui); display:block; }
.poster-preview p { font-size:11px; margin-top:8px; }
@media (max-width:760px) {
  .intake-target { font-size:11px; padding:10px; gap:6px; }
  .intake-target .status-pill { font-size:8px; }
  .quick-input { font-size:13px; }
  .demo-choices { gap:6px; }
  .demo-choices button { font-size:11px; padding:10px 6px; }
  .output-card { padding:13px; }
  .output-top>b { font-size:12px; }
  .output-top .status-pill { max-width:94px; white-space:normal; line-height:1.7; text-align:center; }
  .receipt-status { padding:14px; }
  .receipt-status p { font-size:11px; }
  .pipeline-strip { font-size:11px; }
  .evidence-rows>div { grid-template-columns:55px minmax(0,1fr) 59px; gap:5px; }
  .poster-preview b { font-size:20px; }
}
.connector-promo { display:flex; align-items:center; gap:10px; width:100%; border-top:1px solid var(--line); padding:17px 0 0; margin-top:15px; text-align:left; }
.connector-promo>.icon { width:21px; height:21px; flex-shrink:0; }
.connector-promo>span { flex:1; }
.connector-promo b { display:block; font-size:12px; font-weight:500; line-height:1.8; }
.connector-promo small { display:block; font-size:11px; color:var(--muted); margin-top:3px; line-height:1.8; }
.connector-promo>.icon:last-child { width:16px; height:16px; }
.connector-state { display:flex; align-items:center; gap:12px; border:1px solid var(--line); padding:16px; border-radius:10px; background:var(--paper); margin-bottom:14px; }
.connector-state>.icon { width:29px; height:29px; }
.connector-state b { display:block; font-size:13px; font-weight:500; }
.connector-state span { display:block; font-size:11px; color:var(--muted); line-height:1.8; margin-top:5px; }
.scope-check { display:flex; align-items:flex-start; gap:10px; padding:14px 0; border-bottom:1px solid var(--line); font-size:12px; line-height:1.8; }
.scope-check input { margin-top:3px; }
.scope-check small { display:block; font-size:11px; color:var(--muted); }
.original-material { width:100%; max-height:60dvh; object-fit:contain; border-radius:10px; background:var(--paper); }
.pipeline-strip .blocked { color:var(--orange); }
.confirmation-contract { background:var(--soft); border-radius:9px; padding:14px; margin:14px 0; }
.confirmation-contract b { font-size:12px; font-weight:500; }
.confirmation-contract p { font-size:11px; line-height:1.9; color:var(--muted); margin-top:7px; }
.candidate-checkbox { flex-shrink:0; margin-top:5px; min-width:18px; }
.output-top>.candidate-checkbox+b { flex:1; }
.risk-result { padding:12px; border-radius:8px; background:#f2e5d4; margin:12px 0; }
.risk-result b { font-size:11px; font-weight:500; }
.risk-result p { font-size:11px; line-height:1.8; color:#95694a; margin-top:5px; }
.receipt-status.risk_blocked,.receipt-status.review_needed { background:#f0e3d2; }
@keyframes fade-in {
  from { opacity:0; transform:translateY(7px); }
  to { opacity:1; transform:translateY(0); }
}
@keyframes pulse {
  50% { opacity:.6; }
}
@media (max-width:760px) {
  .demo-pill { font-size:11px; color:var(--muted); border:1px solid var(--line); border-radius:5px; padding:3px 6px; }
  .schedule-tools { margin-bottom:5px; }
  .event-time { font-size:16px; gap:4px; margin-bottom:5px; }
  .event-time>span { font-size:12px; }
  .event-time .series-label { font-size:11px; margin-left:2px; padding:1px 3px; }
  .privacy-label { font-size:11px; margin-left:0; }
  .output-top>b { font-size:14px; }
  .output-card>p { font-size:12px; }
  .receipt-status p { font-size:12px; }
  .personal-pending h2 { font-size:16px; }
}
@media (max-width:360px) {
  .event-time .series-label { display:none; }
}
.cover { width:100%; height:100%; display:grid; place-items:center; background:#e7ebdf; color:#6d8263; }
.cover.talk { background:#e6e9ea; color:#637f8b; }
.cover.activity { background:#f0e4d5; color:#b48561; }
.cover svg { width:100%; height:100%; }
.school-tag { display:inline-flex; align-items:center; flex-shrink:0; padding:1px 6px; border:1px solid #c7cec2; border-radius:4px; font-size:11px; font-weight:600; line-height:1.6; white-space:nowrap; background:#e9eee5; color:#475b3f; }
.school-tag.pku { color:#8a3f3b; background:#f5e5df; border-color:#dfbbb3; }
.school-tag.tsinghua { color:#695080; background:#eee6f4; border-color:#d2bedf; }
.device-status { display:flex; align-items:center; gap:6px; padding:9px 4px; text-align:left; width:100%; min-height:34px; }
.device-status>i { width:5px; height:5px; border-radius:50%; background:var(--green); }
.device-status>i.warning { background:#ae7138; }
.device-status .icon { width:13px; height:13px; margin-left:auto; }
.demo-pill { min-height:28px; border-radius:4px; }
.status-pill { font-size:11px; padding:3px 6px; border:1px solid #dce5d4; border-radius:4px; background:#edf3e8; line-height:1.5; }
.status-pill.pending { border-color:#e6d9b8; background:#f6f0df; }
.data-notice { font-size:13px; line-height:1.8; padding:12px; background:var(--soft); border-radius:7px; }
.data-facts { margin:14px 0; }
.data-facts>div { display:grid; grid-template-columns:110px minmax(0,1fr); gap:10px; padding:10px 0; border-bottom:1px solid var(--line); font-size:12px; line-height:1.6; }
.data-facts dt { color:var(--muted); }
.data-facts dd { margin:0; }
@media (max-width:760px) {
  .demo-pill { font-size:11px; padding:2px 5px; }
  .data-facts>div { grid-template-columns:98px minmax(0,1fr); }
}
.account-summary { display:flex; align-items:center; gap:12px; margin-bottom:16px; }
.account-summary b { font-size:14px; overflow-wrap:anywhere; }
.account-summary p { font-size:12px; color:var(--muted); margin-top:5px; }
.account-avatar { display:grid; place-items:center; flex-shrink:0; width:40px; height:40px; border-radius:8px; background:var(--soft); color:var(--green); }
.account-avatar .icon { width:22px; height:22px; }
.account-signin { display:flex; justify-content:center; align-items:center; text-decoration:none; min-height:44px; }
.account-signout { display:block; width:max-content; padding:12px 0; font-size:12px; color:var(--muted); margin-top:12px; }
.source-files-list { margin:14px 0; border:1px solid var(--line); border-radius:10px; background:var(--surface); padding:10px 12px; }
.files-heading { display:flex; justify-content:space-between; gap:8px; font-size:12px; margin-bottom:4px; }
.files-heading>span,.source-file small { color:var(--muted); font-size:11px; }
.source-file { display:grid; grid-template-columns:28px minmax(0,1fr) auto; align-items:center; gap:9px; padding:9px 0; border-bottom:1px solid var(--line); }
.source-file:last-of-type { border-bottom:0; }
.source-file b { display:block; font-size:12px; font-weight:500; overflow-wrap:anywhere; }
.source-file small { display:block; margin-top:3px; line-height:1.5; }
.source-file-icon .icon { width:20px; height:20px; }
.source-file .secondary { padding:6px 10px; min-height:44px; }
.source-files-list>.text-link { margin-top:4px; min-height:36px; }
.share-files { padding:10px 12px; border:1px solid var(--line); border-radius:9px; margin:12px 0; }
.share-files legend { font-size:12px; font-weight:600; padding:0 4px; }
.share-files .scope-check { display:flex; align-items:center; gap:9px; min-height:44px; margin:5px 0; }
.share-files input { width:18px; height:18px; flex-shrink:0; }
.share-files b,.share-files small { display:block; font-size:12px; overflow-wrap:anywhere; }
.share-files small { font-size:11px; color:var(--muted); margin-top:3px; }
.share-revoke { display:block; margin:10px auto; color:#98504f; min-height:44px; }
.original-actions { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:10px; }
.original-actions a { min-height:44px; display:inline-flex; align-items:center; padding:8px 12px; }
.original-material { display:block; max-width:100%; max-height:66dvh; object-fit:contain; margin:auto; }
.original-pdf { display:block; width:100%; height:min(65dvh,640px); border:1px solid var(--line); border-radius:6px; background:white; }
.shared-originals { border-top:1px solid var(--line); padding-top:10px; margin-top:10px; font-size:12px; display:flex; flex-direction:column; gap:5px; }
.shared-originals a,.shared-originals button { display:flex; gap:6px; align-items:center; min-height:36px; overflow-wrap:anywhere; }
.shared-originals .icon { width:16px; height:16px; flex-shrink:0; }
@media (max-width:480px) {
  .source-files-list { padding:8px 10px; }
  .source-file { gap:6px; grid-template-columns:22px minmax(0,1fr) auto; }
  .source-file .secondary { padding:5px 8px; }
  .original-pdf { height:60dvh; }
  .share-files { padding:8px 10px; }
}
.pdf-preview { border:1px solid var(--line); border-radius:8px; background:#eceef0; padding:8px; min-height:140px; max-height:65dvh; overflow:auto; }
.pdf-preview canvas { display:block; max-width:100%; height:auto; margin:8px auto; background:white; box-shadow:0 1px 4px #1e293b1a; }
.pdf-preview [role="status"] { font-size:12px; line-height:1.7; color:var(--muted); padding:8px; }
.pdf-preview-controls,.pdf-preview-toolbar { display:flex; align-items:center; justify-content:space-between; gap:8px; position:sticky; top:0; background:var(--surface); border-radius:6px; padding:3px; z-index:1; font-size:12px; }
.pdf-preview-controls button,.pdf-preview-toolbar button { min-width:44px; min-height:44px; border:1px solid var(--line); border-radius:5px; padding:6px 10px; }
.pdf-preview-controls button:disabled,.pdf-preview-toolbar button:disabled { opacity:.4; cursor:default; }
/* Navigation and page frame. */
.shell { display: grid; grid-template-columns: 176px minmax(0, 1fr); min-height: 100dvh; }
.sidebar { height: calc(100dvh - 24px); position: sticky; top: 12px; margin: 12px 0 12px 12px; padding: 18px 10px 10px; display: flex; flex-direction: column; background: var(--surface); border: 1px solid #edf0f3; border-radius: 18px; box-shadow: var(--shadow-card); }
.wordmark { display: flex; align-items: center; gap: 7px; white-space: nowrap; font: 700 var(--text-brand)/1.2 var(--font-ui); letter-spacing: -1px; color: #242733; }
.brand-name { display: flex; flex-direction: column; gap: 1px; }
.brand-local { font-size: 11px; line-height: 1.3; letter-spacing: 2px; color: var(--muted); font-weight: 500; }
.brand-icon { width: 25px; height: 25px; flex-shrink: 0; }
.tagline { margin: 8px 0 24px; padding-left: 2px; font-size: 11px; color: var(--muted); }
.side-nav { display: flex; flex-direction: column; gap: 4px; }
.nav-btn { display: flex; align-items: center; gap: 10px; text-align: left; padding: 10px; min-height: 44px; border-radius: 10px; color: #636977; font-size: var(--text-nav); }
.nav-btn .icon { width: 20px; height: 20px; }
.nav-btn.active { background: #eaf0fc; color: #4f5ba5; font-weight: 600; }
.nav-btn .count { margin-left: auto; padding: 0 5px; border-radius: 6px; min-width: 20px; text-align: center; font: 600 11px/1.8 var(--font-ui); background: #f1f3f8; color: #656e84; }
.nav-btn.active .count { background: #dce6f4; color:#515c73; }
.sidebar-foot { margin-top: auto; padding-top: 12px; border-top: 1px solid var(--line); font-size: 11px; color: var(--muted); }
.main-column { min-width: 0; }
.workspace { position: relative; width: 100%; max-width: 1920px; margin: 0 auto; padding: 24px 24px 20px; }
.topline { position: absolute; top: 24px; right: 24px; margin: 0; }
.workspace-label, .view-caption { display: none; }
.icp-footer { margin-top: 18px; text-align: center; font-size: 10px; line-height: 1.5; }
.icp-footer a { color: var(--muted); }
.search { position: relative; width: 260px; }
.search .icon { position: absolute; left: 11px; top: 11px; width: 16px; height: 16px; color: var(--muted); }
.search input { padding: 10px 12px 10px 35px; font-size: 12px; height: 40px; background: white; border-color: #e9ebef; border-radius: 24px; box-shadow: 0 1px 3px #232b3e05; }
.view-title { display: flex; justify-content: space-between; align-items: center; gap: 12px; min-height: 40px; margin-bottom: 18px; padding-right: 282px; }
.compact-title h1 { font-size: var(--text-page); font-weight: 650; line-height: 1.35; letter-spacing: -.6px; color: #202430; }
.title-line, .mine-title { display: flex; align-items: center; gap: 10px; min-width: 0; }
.page-context, .mine-title p { font-size: 11px; line-height: 1.5; color: var(--muted); white-space: nowrap; margin: 0; }
.page-context { padding: 3px 7px; border: 0; border-radius: 6px; background: #eef1f7; color: #626c7c; }
.page-actions { display: flex; gap: 7px; flex-shrink: 0; }
.page-actions .secondary { min-height: 44px; padding: 6px 10px; }
.mobile-header, .mobile-nav { display: none; }
.primary, .secondary { min-width:44px; min-height:44px; display: inline-flex; align-items: center; justify-content: center; gap: 7px; border-radius: 10px; padding: 10px 14px; font-size: 13px; line-height: 1.5; font-weight: 500; }
.primary { background: var(--green); color: white; box-shadow: 0 2px 3px #3a479b12; }
.secondary { border: 1px solid var(--line); background: var(--surface); box-shadow: 0 1px 2px #232b3e04; }
.primary.wide, .secondary.wide { width: 100%; }
.text-link { display: inline-flex; align-items: center; gap: 5px; color: var(--green); text-decoration: none; font-size: 12px; min-height: 36px; padding: 3px 0; }
.schedule-panel, .records-panel { min-width: 0; background: var(--surface); border: 1px solid #edf0f4; border-radius: 18px; padding: 14px; box-shadow: var(--shadow-card); }

.calendar-layout { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; gap: 18px; }
.context-column { display: flex; flex-direction: column; gap: 18px; min-width: 0; }
.context-card { background: white; border: 1px solid #edf0f4; border-radius: 18px; padding: 16px; box-shadow: var(--shadow-card); }
.context-heading { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 12px; }
.context-heading h2 { font-size: 13px; font-weight: 650; }
.context-heading>span { font-size: 11px; color: var(--muted); }
.context-heading>.icon { width: 18px; height: 18px; color: #8d98b3; }
.context-feature { width: 100%; display: block; text-align: left; padding: 0; border: 1px solid #eceef3; border-radius: 12px; overflow: hidden; }
.context-feature>img { display: block; width: 100%; height: auto; aspect-ratio: 3/2; object-fit: cover; }
.context-feature-body { display: block; padding: 12px 12px 10px; }
.context-feature-body>b { display: block; font-size: 13px; font-weight: 600; line-height: 1.6; color: var(--ink); margin: 6px 0; }
.context-feature-body>small { font-size: 11px; color: var(--muted); }
.context-feature-action { display: flex; align-items: center; justify-content: space-between; padding: 9px 12px; border-top: 1px solid #edf0f4; font-size: 12px; color: var(--green); background: #fcfcfe; }
.context-feature-action .icon { width: 15px; height: 15px; }
.context-total { display: flex; align-items: baseline; gap: 9px; margin: 2px 0 10px; }
.context-total strong { font-size: 26px; line-height: 1.3; font-weight: 650; letter-spacing: -1px; }
.context-total span, .my-week-card>p { font-size: 12px; color: var(--muted); }
.my-week-card>p { margin-bottom: 15px; line-height: 1.7; }
.context-agenda { margin-bottom: 12px; }
.context-agenda>button { display: flex; gap: 10px; text-align: left; padding: 10px 0; width: 100%; border-bottom: 1px solid #edf0f4; align-items: flex-start; }
.context-agenda time { font-size: 11px; color: #6b7690; font-variant-numeric: tabular-nums; white-space: nowrap; }
.context-agenda time small { display: block; font-size: 11px; }
.context-agenda>button>span { font-size: 12px; line-height: 1.6; color: var(--ink); }
.context-card .secondary { min-height: 44px; font-size: 12px; }
.empty-art { display: block; object-fit: contain; margin: 0 auto 10px; width: 144px; height: 96px; border-radius: 12px; }
.empty>.empty-art { width: 180px; height: 120px; margin-bottom: 14px; }
.grid-event.compact-slot .grid-location { display: none; }
.grid-event.compact-slot strong { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
.sidebar-library { margin: 23px 2px 16px; padding-top: 16px; border-top: 1px solid #edf0f4; }
.sidebar-library h2 { font-size: 11px; font-weight: 600; color: #626c7c; margin-bottom: 9px; }
.sidebar-library>button { width: 100%; padding: 9px; text-align: left; border-radius: 9px; border: 1px solid #edf0f4; background: #fcfcfe; margin-bottom: 7px; }
.sidebar-library b { display: block; font-size: 12px; font-weight: 550; line-height: 1.6; }
.sidebar-library small { display: block; font-size: 10px; color: var(--muted); margin-top: 4px; }
.sidebar-library .empty-art { width: 112px; height: 74px; margin: 4px auto 8px; }
.sidebar-library>p { font-size: 11px; line-height: 1.7; color: var(--muted); text-align: center; }
@media (min-width:1360px) { .calendar-layout.with-context { grid-template-columns: minmax(0, 1fr) 228px; } }
/* Direct capture. The complete entry path stays on every page. */
.inline-capture { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0 6px; border: 1px solid #e8ebf1; background: #fafbfe; border-radius: 12px; padding: 3px 6px 3px 12px; margin-bottom: 12px; }
.inline-capture:focus-within { border-color: #a7b2db; box-shadow: 0 0 0 3px #4f5ba50b; background: white; }
.inline-capture.drag-active { border-style: dashed; border-color: var(--green); background: var(--soft); }
.inline-capture textarea { grid-column: 1; grid-row: 1; border: 0; background: transparent; padding: 8px 0; height: 40px; min-height: 40px; resize: none; font-size: 13px; line-height: 24px; outline: none; scrollbar-width: thin; }
.inline-capture textarea::placeholder { color: #6c7280; }
.inline-capture textarea:focus-visible { outline: 0; }
.capture-bar { grid-column: 2; grid-row: 1; display: flex; align-items: center; gap: 5px; }
.capture-methods { display: flex; align-items: center; gap: 0; }
.capture-methods .attach-button, .capture-methods .toolbar-mic, .capture-methods .wechat-entry { display: grid; place-items: center; position: relative; width: 44px; min-width: 44px; height: 44px; min-height: 44px; padding: 0; margin: 0; border: 0; border-radius: 6px; background: none; color: var(--muted); cursor: pointer; }
.capture-methods .icon { width: 18px; height: 18px; }
.capture-methods span { display: none; }
.capture-submit { display: flex; align-items: center; justify-content: center; gap: 6px; min-height: 44px; padding: 7px 12px; background: var(--green); color: white; border-radius: 9px; font-size: 12px; }
.capture-submit .icon { width: 16px; height: 16px; }
.inline-capture .attachment-previews { grid-column: 1/-1; grid-row: 2; margin: 5px 0 8px; }
.capture-footer { grid-column: 1/-1; grid-row: 3; display: none; justify-content: space-between; flex-wrap: wrap; gap: 3px 8px; font-size: 11px; color: var(--muted); line-height: 1.7; padding: 2px 0; }
.inline-capture:focus-within .capture-footer { display: flex; }
.inline-capture .hint, .inline-capture .form-error { grid-column: 1/-1; margin: 4px 0; font-size: 12px; line-height: 1.7; }
.inline-capture .hint:empty, .inline-capture .form-error:empty, .inline-capture .attachment-previews:empty { display: none; }
/* One toolbar and one date header. */
.calendar-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px; min-height: 40px; margin-bottom: 12px; }
.calendar-toolbar.with-filters { grid-template-columns: auto minmax(0, 1fr) auto; }
.period-navigation { display: flex; align-items: center; gap: 2px; min-width: 0; }
.period-navigation strong { order: -1; margin-right: 6px; font: 600 13px/1.5 var(--font-ui); font-variant-numeric: tabular-nums; white-space: nowrap; }
.period-arrow { display: grid; place-items: center; width: 28px; min-height: 34px; padding: 0; color: #788697; border: 1px solid transparent; border-radius: 5px; }
.period-arrow .icon { width: 15px; height: 15px; }
.period-arrow.next { order: 1; }
.period-arrow.next .icon { transform: rotate(180deg); }
.period-today { order: 2; min-height: 30px; padding: 3px 8px; margin-left: 5px; font-size: 11px; color: #5c687a; border: 1px solid var(--line); border-radius: 5px; }
.filter-row { display: flex; align-items: center; justify-content: flex-end; gap: 8px; min-width: 0; }
.type-chips { display: flex; gap: 2px; }
.chip { min-height: 34px; padding: 5px 10px; border-radius: 6px; font-size: 12px; color: #626c7c; }
.chip.active { background: var(--soft); color: var(--green); font-weight: 600; }
.type-filter { display: none; }
.school-filter { width: 105px; min-height: 34px; padding: 6px 7px; font-size: 12px; border-radius: 8px; border-color: #e8ebf0; }
.segmented { display: flex; align-items: center; flex-shrink: 0; padding: 3px; border: 1px solid #edf0f4; border-radius: 10px; background: #f5f6f9; }
.segmented button { min-height: 29px; min-width: 32px; padding: 4px 8px; border-radius: 7px; font-size: 12px; color: var(--muted); }
.segmented button.active { background: white; color: #333e5b; box-shadow: 0 1px 4px #26344812; font-weight: 600; }
/* The viewport controls scale; appointment coordinates remain percentages. */
.calendar-scroll { position: relative; overflow: clip; border: 1px solid #eceef2; border-radius: 12px; background: var(--surface); }
.week-grid { --event-gutter: 2px; display: grid; grid-template-columns: 34px repeat(7, minmax(0, 1fr)); min-width: 0; width: 100%; }
.grid-head { position:sticky; top:0; z-index:5; box-shadow:0 1px 0 #dce1ec; padding: 8px 2px; text-align: center; min-height: 54px; border-bottom: 1px solid var(--line); background: white; font-size: 12px; color: #626c7c; }
.grid-head b { display: block; font: 600 16px/1.35 var(--font-ui); font-variant-numeric: tabular-nums; color: #30384b; margin-top: 1px; }
.grid-head.today { background: #f3f5fe; color: #5862aa; }
.grid-head.today b { background: #5662af; color: white; width: 27px; height: 27px; line-height: 27px; border-radius: 9px; margin: 0 auto; }
.grid-times { position: relative; height: var(--timeline-height); border-right: 1px solid #f0f1f4; background: white; }
.grid-times span { position: absolute; left: 3px; font: 10px/1 var(--font-ui); font-variant-numeric: tabular-nums; color: #626c7c; transform: translateY(-50%); }
.grid-times span:first-child { transform: translateY(4px); }
.grid-times span:last-child { transform: translateY(-100%); }
.grid-day { position: relative; height: var(--timeline-height); box-shadow: inset -1px 0 #edf0f4; background-image: linear-gradient(to bottom, transparent calc(100% - 1px), #f0f1f5 calc(100% - 1px)); background-size: 100% calc(100% / var(--hour-count)); }
.grid-day:last-child { box-shadow: none; }
.grid-event, .week-cluster { --event-accent: #b2bce5; position: absolute; display: block; border-radius: 7px; border-left: 2px solid var(--event-accent); background: #edf0fc; color: #434e7a; min-height: 0; line-height: 1.5; text-align: left; overflow: hidden; }
.grid-event { padding: 6px 7px; min-height:44px; }
.grid-event.talk, .week-cluster.talk { --event-accent: #a6c9e7; background: #eaf4fb; color: #375e7c; }
.grid-event.activity, .week-cluster.activity { --event-accent: #e8c5a9; background: #fff1e6; color: #865c3e; }
.grid-event.personal, .week-cluster.personal { --event-accent: #b1d3c3; background: #ebf5ef; color: #3d6955; }
.school-point { display: none; }
.week-event-top { display: flex; align-items: center; justify-content: space-between; gap: 4px; flex-wrap: wrap; margin-bottom: 3px; }
.week-event-top small { display: block; font: 500 11px/1.5 var(--font-ui); font-variant-numeric: tabular-nums; white-space: nowrap; }
.grid-event strong { display: block; font-size: var(--text-event); font-weight: 600; line-height: 1.45; word-break: normal; overflow-wrap: break-word; }
.grid-location { display: block; margin-top: 4px; font-size: 11px; color: inherit; opacity: .86; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.grid-event.start-only { border-style: dashed; }
.week-school-tags { display: inline-flex; align-items: center; gap: 2px; flex-wrap: wrap; min-width: 0; }
.week-school-tags .school-tag { font-size: 10px; padding: 1px 4px; line-height: 1.2; min-height: 16px; border-radius: 3px; }
.school-tag.mixed { background: #ede5eb; border-color: #ccbcc9; color: #654b62; }
.week-cluster { left: var(--event-gutter); right: var(--event-gutter); display: flex; flex-direction: column; gap:3px; border:0; background:transparent; box-shadow:none; border-radius:0; }
.cluster-items { display:flex; flex-direction:column; gap:3px; min-height:0; overflow:hidden; }
.cluster-event { display:flex; flex-direction:column; align-items:stretch; justify-content:flex-start; min-height:44px; height:44px; flex-shrink:0; width:100%; padding:4px 5px; border-radius:6px; border-left:2px solid #a6c9e7; background:#eaf4fb; color:#294c69; overflow:hidden; text-align:left; }
.cluster-event.activity { background:#fff1e6; color:#70492e; border-color:#ddb28d; }
.cluster-event.course { background:#edf0fc; color:#364474; border-color:#a5b0da; }
.cluster-event.personal { background:#ebf5ef; color:#315c48; border-color:#97c4b0; }
.cluster-event strong { display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; font-size: var(--text-event); font-weight: 550; line-height: 1.5; overflow: hidden; }
.mobile-catalog-refresh { display:none; }
.week-more { border-radius:5px; color:#4f5ba5; width: 100%; min-height: 25px; height: 25px; flex-shrink: 0; padding: 2px 0; background: #ffffff70; border-top: 1px solid #2633480d; font-size: 11px; line-height: 1.5; color: inherit; white-space: nowrap; }
.short-cluster { flex: 1; height: 100%; min-height: 0; border-top: 0; display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 2px; }
.short-cluster .short-count { display: inline; font-size: 10px; white-space: nowrap; }
/* Short slots keep their title visible without changing the true duration. */
.grid-event.narrow-lane, .grid-event.short-event { padding: 3px 2px; }
.grid-event.narrow-lane .week-event-top, .grid-event.short-event .week-event-top { flex-wrap: nowrap; gap: 2px; margin-bottom: 1px; }
.grid-event.narrow-lane .week-school-tags .school-tag { padding: 0 2px; }
.grid-event.narrow-lane strong, .grid-event.short-event strong { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.grid-event.short-event { padding: 1px 2px; }
.grid-event.short-event .week-event-top small { line-height: 1.2; }
.grid-event.short-event strong { line-height: 1.35; }
.grid-event.short-event .grid-location { display: none; }
.grid-event.tiny { padding-top: 1px; padding-bottom: 0; }
.grid-event.tiny strong, .grid-event.tiny .grid-location { display: none; }
.week-empty { position: absolute; top: 42%; left: 50%; transform: translate(-50%, -50%); text-align: center; width: max-content; max-width: calc(100% - 40px); padding: 16px 22px; background: #ffffffef; border: 1px solid #eef0f5; border-radius: 16px; box-shadow: var(--shadow-card); }
.week-empty b { font-size: 15px; font-weight: 600; }
.week-empty p { font-size: 12px; color: var(--muted); margin: 5px 0 10px; }
.week-empty button { min-height: 44px; margin: 2px 5px; }
.week-empty .text-link { font-size: 12px; }
.calendar-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 6px 1px 0; font-size: 11px; line-height: 1.5; color: var(--muted); }
.calendar-foot .text-link { font-size: 11px; min-height: 28px; }
.calendar-foot .icon { width: 13px; height: 13px; }
.calendar-meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.sample-label { color: #626c7c; }
/* Month and agenda use the same content hierarchy. */
.month-calendar { border: 1px solid var(--line); border-radius: 8px; overflow: hidden; background: white; }
.month-weekdays, .month-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.month-weekdays { padding: 9px 0; border-bottom: 1px solid var(--line); background: #f9fafc; color: var(--muted); font-size: 11px; text-align: center; }
.month-cell { display: flex; flex-direction: column; align-items: stretch; text-align: left; min-width: 0; min-height: 90px; padding: 5px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); gap: 3px; }
.month-cell:nth-child(7n) { border-right: 0; }
.month-cell:nth-last-child(-n+7) { border-bottom: 0; }
.month-cell.outside { background: #fafbfc; color: #b1b8c3; }
.month-cell.active { background: #f1f5fb; }
.month-day-select { display: flex; flex-direction: column; align-items: flex-start; padding: 0; min-height: 28px; width: 100%; text-align: left; border-radius: 3px; }
.month-date { display: grid; place-items: center; align-self: flex-start; font: 500 14px/1.5 var(--font-ui); min-width: 26px; height: 26px; border-radius: 7px; }
.month-cell.today .month-date { color: var(--green); box-shadow: inset 0 0 0 1px #aebed4; }
.month-cell.active .month-date { background: var(--green); color: white; box-shadow: none; }
.month-events { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.month-event { min-height: 22px; text-align: left; font-size: 11px; line-height: 1.6; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 2px 4px; border-radius: 3px; background: #eaf1ec; color: #3c5a48; }
.month-event.talk { background: #eaf1f8; color: #405c76; }
.month-event.activity { background: #f7eee3; color: #7a5c3d; }
.month-more { min-height: 24px; width: 100%; padding: 2px 4px; text-align: left; border-radius: 4px; font-size: 11px; line-height: 1.6; color: var(--green); background: var(--soft); white-space: nowrap; }
.month-dots { display: none; }
.month-agenda { margin-top: 16px; }
.month-empty { padding: 12px 0; color: var(--muted); font-size: 12px; }
.date-strip { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); padding: 5px 0; border-bottom: 1px solid var(--line); margin-bottom: 14px; gap: 3px; }
.date-btn { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; border-radius: 6px; min-height: 47px; padding: 4px 2px; }
.day-name { font-size: 11px; color: var(--muted); }
.day-num { font: 600 18px var(--font-ui); }
.date-btn.today { color: var(--green); }
.date-btn.active { background: var(--soft); color: var(--green); }
.date-btn.active .day-name { color: inherit; }
.day-heading { display: flex; align-items: baseline; gap: 8px; margin: 15px 0 9px; font-size: 13px; }
.day-heading b { font-weight: 600; }
.day-heading span { font-size: 11px; color: var(--muted); }
.day-line { height: 1px; background: var(--line); flex: 1; }
.day-group { margin-bottom: 12px; }
.event-card { display: grid; grid-template-columns: 58px 76px minmax(0, 1fr) 44px; gap: 13px; align-items: center; background: white; border: 1px solid #e9ecf2; border-radius: 13px; padding: 12px; margin-bottom: 8px; box-shadow: 0 1px 3px #26344803; }
.event-card.no-media { grid-template-columns: 58px minmax(0, 1fr) 44px; }
.event-poster { width: 76px; height: 64px; display: block; padding: 0; min-height: 0; border-radius: 10px; overflow: hidden; background: var(--soft); }
.event-poster img { display: block; width: 100%; height: 100%; object-fit: cover; }
.event-body { width: 100%; min-width: 0; text-align: left; padding: 0; }
.event-meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 3px; font-size: 11px; line-height: 1.6; color: var(--muted); }
.event-body h3 { font-size: var(--text-card); font-weight: 600; line-height: 1.5; overflow-wrap: break-word; word-break: normal; margin-bottom: 4px; color: var(--ink); }
.event-location { display: flex; gap: 4px; align-items: flex-start; font-size: 12px; line-height: 1.5; color: var(--muted); overflow-wrap: anywhere; }
.event-location .icon { width: 13px; height: 16px; flex-shrink: 0; }
.time-block { align-self: start; padding-top: 1px; font: 600 16px/1.4 var(--font-ui); font-variant-numeric: tabular-nums; white-space: nowrap; }
.time-block small, .time-block>span { display: block; font: 11px/1.6 var(--font-ui); color: var(--muted); margin-top: 3px; }
.time-block>span { margin-top: 0; }
.add-btn { display: grid; place-items: center; width: 44px; height: 44px; min-height: 44px; border: 1px solid #e5e8ef; border-radius: 50%; background: white; color: #566174; }
.add-btn .icon { width: 18px; height: 18px; }
.add-btn.selected { background: var(--soft); color: var(--green); border-color: #d1ddec; }
.list-layout { display: grid; grid-template-columns: minmax(0, 1fr) 220px; gap: 18px; align-items: start; }
.list-main { min-width: 0; }
.list-summary { background: white; border: 1px solid #edf0f4; border-radius: 14px; padding: 16px; position: sticky; top: 20px; margin-top: 15px; box-shadow: var(--shadow-card); }
.summary-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 7px; margin-bottom: 10px; }
.summary-heading h2 { font-size: 15px; font-weight: 600; }
.summary-heading>span { font-size: 11px; color: var(--muted); white-space: nowrap; }
.summary-items { margin-bottom: 12px; }
.summary-items>button { width: 100%; display: block; text-align: left; padding: 9px 0; border-bottom: 1px solid var(--line); }
.summary-items span { display: block; font-size: 11px; color: var(--muted); margin-bottom: 3px; }
.summary-items b { display: block; font-size: 12px; font-weight: 500; line-height: 1.6; overflow-wrap: anywhere; }
.list-summary .primary { font-size: 12px; padding: 10px 7px; }
.list-summary>p { font-size: 12px; color: var(--muted); line-height: 1.8; margin: 10px 0 14px; }
/* Details are compact sheets, with a bounded poster and accessible actions. */
.modal-backdrop { position: fixed; inset: 0; background: #222a3b35; backdrop-filter: blur(5px); z-index: 50; display: flex; justify-content: center; align-items: center; padding: 24px; animation: fade-in .15s ease; }
.modal { background: white; width: 100%; max-width: 510px; max-height: calc(100dvh - 48px); overflow: auto; border: 1px solid #ffffffb0; border-radius: 20px; box-shadow: var(--shadow-dialog); position: relative; padding: 24px; }
.modal.wide-modal { max-width: 650px; }
.modal-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 18px; }
.modal-top h2 { font-size: var(--text-dialog); font-weight: 650; line-height: 1.4; letter-spacing: -.4px; overflow-wrap: break-word; word-break: normal; }
.modal-top p { font-size: 12px; color: var(--muted); margin-top: 5px; line-height: 1.7; }
.close-btn { display: grid; place-items: center; flex-shrink: 0; height: 44px; min-height: 44px; width: 44px; background: #f5f6f9; border: 0; border-radius: 50%; }
.close-btn .icon { width: 16px; height: 16px; }
.modal.detail-modal { max-width: 720px; padding: 22px; }
.detail-modal .modal-top, .day-events-modal .modal-top { margin-bottom: 14px; }
.detail-layout { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 12px 20px; align-items: start; }
.detail-layout.without-poster { grid-template-columns: minmax(0, 1fr); }
.detail-poster { grid-column: 1; grid-row: 1/3; display: flex; flex-direction: column; align-items: center; width: 100%; min-height: 0; padding: 7px; margin: 0; border: 1px solid #edf0f4; border-radius: 12px; background: #f7f8fb; }
.detail-poster img { display: block; width: 100%; height: 178px; max-width: 100%; object-fit: contain; }
.detail-poster>span { font-size: 10px; color: var(--muted); line-height: 1.5; margin-top: 4px; }
.detail-facts { min-width: 0; }
.detail-kind { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; margin-bottom: 10px; font-size: 12px; color: var(--muted); }
.detail-info { display: flex; gap: 8px; margin: 9px 0; font-size: 13px; line-height: 1.6; }
.detail-info .icon { width: 16px; height: 19px; margin-top: 2px; color: var(--muted); }
.detail-info>div { min-width: 0; overflow-wrap: break-word; word-break: normal; }
.detail-info small { display: block; font-size: 11px; color: var(--muted); margin-top: 2px; }
.detail-timezone { display: inline; font-size: 10px; margin-left: 7px; white-space: nowrap; color: var(--muted); }
.detail-description { grid-column: 2; border-top: 1px solid var(--line); padding-top: 10px; font-size: 13px; line-height: 1.8; color: #647084; white-space: pre-wrap; overflow-wrap: break-word; }
.detail-layout.without-poster .detail-description { grid-column: 1; }
.source-box { padding: 12px 14px; margin: 14px 0 0; font-size: 12px; line-height: 1.7; background: #f8f9fc; border-radius: 11px; color: var(--muted); }
.source-box b { color: #596678; font-weight: 500; }
.source-box a { overflow-wrap: anywhere; }
.source-box p { margin-top: 3px; }
.detail-source-top { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.detail-source-top b { overflow-wrap: anywhere; }
.detail-source-top a { white-space: nowrap; }
.detail-footer { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.detail-footer .primary { flex: 1; }
.detail-footer button { min-height: 44px; }
.detail-modal .hint { margin-top: 6px; }
.detail-history { border-top: 1px solid var(--line); margin-top: 12px; padding-top: 7px; }
.detail-history summary { font-size: 11px; color: var(--muted); cursor: pointer; min-height: 32px; line-height: 24px; }
.detail-history ol { font-size: 11px; line-height: 2; color: var(--muted); padding-left: 18px; }
.detail-back { display: flex; align-items: center; gap: 3px; min-height: 36px; margin: -3px 0 8px; text-decoration: none; }
.detail-back .icon { width: 14px; height: 14px; }
.modal.day-events-modal { max-width: 660px; padding: 20px; }
.expanded-day-list .event-card { grid-template-columns: 50px 44px minmax(0, 1fr) 44px; padding: 9px 10px; gap: 10px; }
.expanded-day-list .event-card.no-media { grid-template-columns: 50px minmax(0, 1fr) 44px; }
.expanded-day-list .event-poster { width: 44px; height: 56px; }
.expanded-day-list .event-card:last-child { margin-bottom: 0; }
.modal.poster-modal { max-width: 620px; padding: 18px; }
.poster-modal .modal-top { margin-bottom: 4px; }
.poster-modal .modal-top h2 { font-size: var(--text-dialog); }
.poster-full { display: block; max-width: 100%; width: auto; height: auto; max-height: calc(100dvh - 180px); margin: auto; object-fit: contain; }
.modal.account-modal { max-width: 440px; }
/* Records and account status are working UI, not explanatory cards. */
.intake-inbox { border: 1px solid #edf0f4; border-radius: 13px; overflow: hidden; background: white; }
.inbox-heading { display: flex; align-items: center; justify-content: space-between; padding: 10px 13px; border-bottom: 1px solid var(--line); background: #f9fafc; font-size: 11px; color: var(--muted); }
.source-row { display: flex; align-items: center; width: 100%; gap: 12px; padding: 13px 15px; text-align: left; border-bottom: 1px solid #edf0f4; min-height: 72px; }
.source-row:last-child { border-bottom: 0; }
.source-row-icon { display: grid; place-items: center; flex-shrink: 0; width: 38px; height: 42px; border: 0; border-radius: 10px; background: #eef1fc; color: #6473aa; }
.source-row-icon .icon { width: 18px; height: 18px; }
.source-row-body { flex: 1; min-width: 0; }
.source-row-body b { display: block; font-size: 13px; font-weight: 500; line-height: 1.5; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.source-row-body small { display: block; margin-top: 3px; font-size: 11px; color: var(--muted); }
.inbox-more { width: 100%; min-height: 44px; font-size: 12px; color: var(--green); border-top: 1px solid var(--line); }
.empty { background: white; border: 1px solid #edf0f4; border-radius: 14px; padding: 30px 18px; text-align: center; color: var(--muted); }
.empty h3 { font-size: 15px; font-weight: 600; color: var(--ink); margin-bottom: 7px; }
.empty p { font-size: 12px; line-height: 1.8; }
.empty button { margin: 12px 4px 0; }
.empty .text-link { display: flex; width: max-content; margin: 8px auto 0; }
.intake-inbox .empty { border: 0; }
.account-button { display: flex; align-items: center; gap: 7px; min-height: 44px; width: 100%; padding: 6px 8px; color: #62738b; font: 500 11px var(--font-ui); border-radius: 6px; text-align: left; white-space: nowrap; }
.account-dot { width: 6px; height: 6px; border-radius: 50%; background: #759486; flex-shrink: 0; }
.account-button.warning { color: #98652e; }
.account-button.warning .account-dot { background: #b47e3d; }
.account-slot { min-width: 0; }
.account-status { padding: 13px; background: #f5f8fc; border: 1px solid var(--line); border-radius: 8px; margin-bottom: 16px; font-size: 13px; line-height: 1.7; }
.account-status p { margin-top: 5px; color: var(--muted); }
.account-status small { display: block; margin-top: 5px; font-size: 11px; color: var(--muted); }
@media (hover: hover) {
  .nav-btn:hover, .account-button:hover, .capture-methods button:hover, .capture-methods .attach-button:hover, .secondary:hover, .period-arrow:hover, .period-today:hover, .chip:hover, .icon-button:hover { background: #f0f2fb; }
  .primary:not(:disabled):hover, .capture-submit:not(:disabled):hover { background: #414d96; }
  .grid-event:hover, .week-cluster:hover { box-shadow: 0 3px 8px #26344812, inset 0 0 0 1px #6576b533; }
  .event-card:hover { border-color: #b9c7db; }
  .event-body:hover h3 { color: var(--green); }
  .source-row:hover { background: #f8fafc; }
  .week-more:hover, .month-more:hover { background: #dde7f4; }
}
@media (max-width: 1200px) {
  .list-layout { grid-template-columns: minmax(0, 1fr); }
  .list-summary { display: none; }
  .chip { padding-left: 7px; padding-right: 7px; }
  .period-today { margin-left: 1px; padding: 3px 6px; }
}
@media (max-width: 1050px) {
  .workspace { padding: 16px; }
  .topline { position:static; right:16px; margin:0 0 10px; display:flex; justify-content:flex-end; }
  .view-title { padding-right:0; }
  .calendar-toolbar.with-filters { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "period views" "filters filters"; }
  .calendar-toolbar.with-filters .period-navigation { grid-area: period; }
  .calendar-toolbar.with-filters .filter-row { grid-area: filters; justify-content: flex-start; }
  .calendar-toolbar.with-filters .segmented { grid-area: views; }
  .week-grid { --event-gutter: .5px; grid-template-columns: 28px repeat(7, minmax(0, 1fr)); }
  .grid-event, .cluster-event { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: min-content min-content min-content; row-gap: 0; padding: 1px 0 0 1px; align-content: start; }
  .grid-event.short-event { padding: 1px 0 0 1px; }
  .grid-event.short-event:not(.tiny) .week-school-tags { display: none; }
  .grid-event.short-event:not(.tiny) .school-point { display: block; grid-row: 1; grid-column: 1; align-self: center; justify-self: end; width: 5px; height: 5px; margin-right: 3px; border-radius: 2px; }
  .school-point.pku { background: #a55953; }
  .school-point.tsinghua { background: #88679e; }
  .grid-event, .week-cluster { border-left-width: 0; box-shadow: inset 1px 0 var(--event-accent); }
  .week-event-top { display: contents; }
  .week-event-top>small { grid-row: 1; grid-column: 1; font-size: 10px; line-height: 12px; margin: 0; }
  .grid-event strong, .cluster-event strong { grid-row: 2; min-width: 0; display: block; -webkit-line-clamp: unset; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 11px; line-height: 1.35; writing-mode: horizontal-tb; overflow-wrap: normal; word-break: normal; }
  .week-school-tags { grid-row: 3; gap: 2px; margin-top: 1px; justify-self: start; }
  .week-school-tags .school-tag { font-size: 10px; line-height: 12px; padding: 0 2px; min-height: 14px; }
  .grid-event.compact-slot strong { display: block; -webkit-line-clamp: unset; white-space: nowrap; }
  .grid-location { display: none; }
  .grid-event.tiny { display: block; padding: 0 0 0 1px; }
  .grid-event.tiny .week-event-top { display: flex; margin: 0; }
  .grid-event.tiny strong, .grid-event.tiny .week-school-tags { display: none; }
  .week-more { height: 23px; min-height: 23px; font-size: 10px; }
  .short-cluster { height: 100%; min-height: 0; }
  .short-cluster .week-school-tags { margin: 0; }
  .short-cluster .short-count { font-size: 10px; }
}
@media (max-width: 760px) {
  .shell { display: block; }
  .sidebar { display: none; }
  .workspace { padding: 0 8px calc(72px + env(safe-area-inset-bottom)); width: 100%; max-width: none; }
  .mobile-header { display: flex; justify-content: space-between; align-items: center; padding: 2px 10px; min-height: 44px; }
  .mobile-header .wordmark { font-size: 21px; }
  .mobile-header .brand-name { flex-direction: row; align-items: center; gap: 7px; }
  .mobile-header .brand-local { font-size: 12px; letter-spacing: 0; }
  .mobile-header .brand-icon { width: 24px; height: 24px; }
  .header-actions { display: flex; align-items: center; gap: 2px; }
  .icon-button { display: grid; place-items: center; width: 40px; height: 40px; min-height: 40px; border-radius: 6px; }
  .icon-button .icon { width: 18px; height: 18px; }
  .mobile-header .account-button { min-height: 44px; padding: 5px 7px; font-size: 10px; gap: 5px; border: 1px solid var(--line); background: #ffffffb0; }
  .topline { position: static; margin: 0; }
  .search { width: 100%; margin: 3px 0 8px; }
  .search[data-mobile-hidden="true"] { display: none; }
  .view-title { padding-right: 0; min-height: 28px; margin: 0 2px 4px; }
  .compact-title h1 { font-size: 18px; letter-spacing: -.3px; }
  .title-line, .mine-title { gap: 8px; }
  .page-context, .mine-title p { font-size: 10px; }
  .page-context { padding: 2px 5px; }
  .page-actions .secondary { min-height: 44px; padding: 5px 8px; font-size: 11px; }
  .page-actions .icon { width: 16px; height: 16px; }
  .schedule-panel, .records-panel { padding: 0; border: 0; border-radius: 0; box-shadow: none; background: transparent; }
  .inline-capture { padding: 0 2px 0 8px; gap: 0; margin-bottom: 4px; background: white; }
  .inline-capture textarea { font-size: 13px; }
  .capture-methods .wechat-entry { display: none; }
  .capture-submit { height: 44px; min-height: 44px; width: 44px; padding: 0; }
  .capture-submit span { display: none; }
  .capture-bar { gap: 1px; }
  .capture-footer { font-size: 10px; }
  .calendar-toolbar { gap: 2px 4px; min-height: 32px; margin-bottom: 4px; }
  .calendar-toolbar.with-filters { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "filters views" "period period"; }
  .calendar-toolbar.with-filters .filter-row { grid-area: filters; gap: 5px; }
  .calendar-toolbar.with-filters .segmented { grid-area: views; }
  .calendar-toolbar.with-filters .period-navigation { grid-area: period; }
  .period-navigation { gap: 2px; }
  .period-navigation strong { font-size: 12px; }
  .period-arrow { min-height: 28px; width: 28px; }
  .period-today { min-height: 26px; font-size: 10px; margin-left: 4px; }
  .type-chips { display: none; }
  .type-filter, .school-filter { display: block; min-height: 30px; padding: 4px 5px; border-radius: 6px; font-size: 11px; background: white; flex-shrink: 0; }
  .type-filter { width: 72px; }
  .school-filter { width: 80px; }
  .segmented { padding: 2px; }
  .segmented button { min-width: 29px; min-height: 28px; padding: 4px 6px; font-size: 11px; }
  .catalog-status.catalog-ready { display:none; }
  .mobile-catalog-refresh { display:inline-flex; margin-left:auto; }
  .week-grid .week-school-tags { display:none; }
  .week-grid .week-event-top { display:flex; grid-row:1; align-items:center; justify-content:flex-start; gap:2px; margin:0; min-width:0; }
  .week-grid .school-point { display:block; flex-shrink:0; width:4px; height:4px; margin:0; border-radius:50%; }
  .week-grid .week-event-top small { margin-right:auto; }
  .week-grid .grid-event.short-event:not(.tiny) .school-point { margin-right:0; }
  .week-grid .cluster-event { min-height:30px; height:30px; flex:none; padding:1px 1px 1px 2px; grid-template-rows:min-content min-content; border:0; box-shadow:inset 1px 0 #a6c9e7; }
  .week-grid .cluster-event strong { display:block; -webkit-line-clamp:unset; }
  .week-grid .grid-event { min-height:30px; }
  .week-grid .week-cluster { box-shadow:none; }
  .week-grid .grid-event.tiny { display:grid; grid-template-rows:min-content min-content; }
  .week-grid .grid-event.tiny strong { display:block; }
  .week-grid { grid-template-columns: 25px repeat(7, minmax(0, 1fr)); }
  .grid-head { min-height: 45px; padding: 5px 1px; font-size: 10px; }
  .grid-head b { font-size: 16px; }
  .grid-head.today b { width: 23px; height: 23px; line-height: 23px; border-radius: 6px; }
  .grid-times span { font-size: 9px; left: 1px; }
  .calendar-foot { padding: 4px 2px 0; font-size: 10px; gap: 5px; }
  .calendar-meta { gap: 6px; }
  .calendar-foot .text-link { font-size: 10px; min-height: 26px; }
  .week-empty { padding: 13px; max-width: calc(100% - 44px); }
  .week-empty .empty-art { width: 96px; height: 64px; margin-bottom: 6px; }
  .context-column { display: none; }
  .sidebar-library { display: none; }
  .week-empty p { font-size: 11px; }
  .month-cell { min-height: 64px; padding: 3px; gap: 2px; }
  .month-day-select { min-height: 34px; }
  .month-weekdays { padding: 8px 0; font-size: 10px; }
  .month-date { font-size: 14px; min-width: 24px; height: 24px; }
  .month-events { display: none; }
  .month-more { min-height: 22px; font-size: 10px; padding: 2px 3px; }
  .month-dots { display: flex; gap: 3px; align-items: center; min-height: 8px; padding-left: 3px; }
  .month-dots i { width: 4px; height: 4px; border-radius: 50%; background: #7e9d8c; }
  .month-dots i.talk { background: #86a5bc; }
  .month-dots i.activity { background: #c3a17f; }
  .month-agenda { margin-top: 12px; }
  .event-card, .expanded-day-list .event-card { grid-template-columns: 45px 40px minmax(0, 1fr) 44px; gap: 7px; padding: 9px 8px; }
  .event-card.no-media, .expanded-day-list .event-card.no-media { grid-template-columns: 45px minmax(0, 1fr) 44px; }
  .event-poster, .expanded-day-list .event-poster { width: 40px; height: 52px; }
  .event-body h3 { font-size: var(--text-card); }
  .event-meta { font-size: 10px; gap: 4px; margin-bottom: 3px; }
  .event-meta .school-tag { font-size: 10px; padding: 0 4px; }
  .event-location { font-size: 11px; }
  .time-block { font-size: 16px; }
  .time-block small, .time-block>span { font-size: 10px; margin-top: 2px; }
  .add-btn { border-color: transparent; }
  .day-heading { font-size: 12px; margin-top: 12px; }
  .day-heading span { font-size: 10px; }
  .mobile-nav { display: flex; position: fixed; bottom: 0; left: 0; right: 0; z-index: 20; align-items: center; justify-content: space-around; padding: 5px 12px calc(5px + env(safe-area-inset-bottom)); background: #fffffff5; border-top: 1px solid var(--line); backdrop-filter: blur(12px); }
  .mobile-nav>button { display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; gap: 3px; color: #626c7c; min-width: 80px; min-height: 46px; padding: 0; font-size: 10px; }
  .mobile-nav>button.active { color: var(--green); }
  .mobile-nav .icon { width: 20px; height: 20px; }
  .badge { position: absolute; left: calc(50% + 10px); top: 0; font: 10px var(--font-ui); border-radius: 7px; background: #e8eef7; padding: 1px 4px; color: #465875; }
  .modal-backdrop { align-items: flex-end; padding: 0; }
  .modal, .modal.detail-modal, .modal.day-events-modal, .modal.poster-modal { max-width: 100%; max-height: calc(100dvh - 16px); border-radius: 16px 16px 0 0; padding: 16px 14px calc(16px + env(safe-area-inset-bottom)); }
  .modal-top { margin-bottom: 14px; gap: 8px; }
  .modal-top h2 { font-size: var(--text-dialog); }
  .detail-layout { grid-template-columns: 84px minmax(0, 1fr); gap: 10px 12px; }
  .detail-poster { grid-row: 1; padding: 5px; }
  .detail-poster img { height: 108px; }
  .detail-poster>span { font-size: 9px; margin-top: 3px; }
  .detail-kind { gap: 5px; margin-bottom: 7px; }
  .detail-info { font-size: 13px; margin: 7px 0; gap: 6px; }
  .detail-info .icon { width: 14px; height: 18px; }
  .detail-timezone { display: block; margin-left: 0; font-size: 10px; }
  .detail-description { grid-column: 1/-1; line-height: 1.75; padding-top: 9px; }
  .source-box { margin-top: 10px; padding: 8px 10px; }
  .detail-footer { margin-top: 10px; }
  .detail-footer .primary { min-width: 0; font-size: 12px; }
  .detail-footer .secondary { font-size: 12px; padding-left: 10px; padding-right: 10px; }
  .detail-history { margin-top: 8px; padding-top: 6px; }
  .source-row { padding: 10px; gap: 8px; min-height: 64px; }
  .source-row>.status-pill { max-width: 86px; font-size: 10px; }
  .source-row-body small { font-size: 10px; }
  .inbox-heading { padding: 9px 10px; }
  .toast { bottom: 78px; }
}
@media (max-width: 360px) {
  .wordmark { font-size: 21px; }
  .mobile-header { padding-left: 9px; padding-right: 9px; }
  .workspace { padding-left: 5px; padding-right: 5px; }
  .inline-capture { padding-left: 7px; }
  .mine-title { gap: 5px; }
  .mine-title p { font-size: 10px; }
  .page-context { display: none; }
  .type-filter { width: 72px; }
  .school-filter { width: 82px; }
  .segmented button { min-width: 27px; padding-left: 5px; padding-right: 5px; }
  .event-card, .expanded-day-list .event-card { grid-template-columns: 42px 36px minmax(0, 1fr) 44px; gap: 6px; padding: 8px 6px; }
  .event-card.no-media, .expanded-day-list .event-card.no-media { grid-template-columns: 42px minmax(0, 1fr) 44px; }
  .event-poster, .expanded-day-list .event-poster { width: 36px; height: 48px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *:before, *:after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}

.catalog-status { display:flex; align-items:center; justify-content:space-between; gap:8px; min-height:28px; margin:4px 0 2px; color:var(--muted); font-size:11px; }
.catalog-status .text-link { min-height:28px; margin:0; padding:0 4px; font-size:11px; flex-shrink:0; }
.catalog-warning { color:#8b5134; }
@media(max-width:760px) { .catalog-status { font-size:10px; margin:2px 1px 0; } .catalog-status .text-link { font-size:10px; } }

.media-unavailable { padding:24px 16px; border:1px solid var(--line); border-radius:12px; background:var(--paper); color:var(--muted); font-size:13px; line-height:1.8; }

.feed-switcher { display:flex; gap:5px; align-items:center; margin:0; }
.feed-switcher button { min-height:32px; padding:5px 10px; display:flex; align-items:center; gap:5px; font-size:12px; border-radius:8px; color:var(--muted); }
.feed-switcher .icon { width:15px; height:15px; }
.feed-switcher button.active { background:#eaf6f0; color:#315d4d; font-weight:600; box-shadow:inset 0 0 0 1px #d4eadd; }
.feed-switcher button[data-feed="campus"].active { background:#ecedfc; color:#4f5ba5; box-shadow:inset 0 0 0 1px #dbdef6; }
.week-empty .empty-art { filter:drop-shadow(0 4px 8px #525fa90a); }
@media(max-width:760px) {
 .feed-switcher { margin:0 1px 4px; gap:3px; }
 .feed-switcher button { min-height:28px; padding:3px 8px; font-size:11px; }
 .feed-switcher .icon { width:13px; height:13px; }
}

.contribution-card { background:#f2f8f4; border-color:#e0eee5; }
.contribution-card>img { display:block; width:100%; height:auto; border-radius:12px; margin-bottom:12px; }
.contribution-card h2 { font-size:14px; color:#315d4d; }
.contribution-card p { font-size:12px; color:#626c7c; margin:5px 0 12px; }
.contribution-card .secondary { background:white; }

.event-card.has-media { border-color:#edf0f3; box-shadow:0 3px 12px #26344804; }
.event-poster.illustrated { background:#eef4f7; }
.event-poster.illustrated img { object-fit:contain; }
.week-empty:has(img[src*="campus-friends"]) { border:0; box-shadow:none; background:#ffffffed; padding:12px 18px 16px; }
.week-empty img[src*="campus-friends"] { width:240px; height:120px; margin:0 auto 10px; }
@media(max-width:760px) {
 .week-empty img[src*="campus-friends"] { width:220px; height:110px; margin-bottom:8px; }
}
