/* Contribution composition; shared tokens, controls and shell stay in their modules. */
.contribution-site { --c-bg:var(--editorial-paper); --c-surface:var(--editorial-white); --c-ink:var(--editorial-ink); --c-muted:var(--editorial-muted); --c-line:var(--editorial-line); --c-accent:var(--editorial-forest); color:var(--c-ink); }
.c-main { min-height:65vh; padding-bottom:48px; }
.contribution-site .c-main.container { max-width:1320px; }
.c-hero { display:grid; grid-template-columns:minmax(0,1.4fr) minmax(0,1fr); align-items:center; gap:64px; padding:64px 0; }
.c-eyebrow { color:var(--c-muted); font-size:12px; letter-spacing:.14em; margin-bottom:18px; }
.c-hero h1 { font-size:clamp(32px,4.1vw,52px); line-height:1.3; letter-spacing:-.03em; }
.c-lead { font-size:17px; max-width:35em; color:var(--c-muted); margin:24px 0 30px; }
.c-secondary { display:inline-flex; align-items:center; min-height:44px; margin:16px 0 0 20px; }
.c-hero-note { padding:32px; border-left:1px solid var(--c-line); }
.c-hero-note > i { font-size:52px; color:var(--c-accent); }
.c-hero-note h2 { font-size:23px; margin:20px 0 16px; }
.c-hero-note p { color:var(--c-muted); }
.c-process { display:flex; gap:10px; align-items:center; flex-wrap:wrap; font-size:13px; margin-top:26px; }
.c-starts { counter-reset:entry; }
.c-starts > a { counter-increment:entry; display:grid; grid-template-columns:48px minmax(0,1fr) 24px; align-items:center; gap:20px; padding:28px 0; border-bottom:1px solid var(--c-line); text-decoration:none; }
.c-starts > a::before { content:counter(entry,decimal-leading-zero); font:36px var(--font-serif); color:var(--c-muted); white-space:nowrap; }
.c-starts > a > i:first-child { display:none; }
.c-starts > a:hover h2 { text-decoration:underline; text-underline-offset:5px; }
.c-starts i { font-size:25px; }
.c-starts h2 { font-size:24px; font-weight:500; margin:0 0 5px; }
.c-starts p { color:var(--c-muted); margin:0; font-size:16px; }
.c-start-prep { font-size:14px; color:var(--c-muted); margin-top:8px; padding-left:14px; border-left:1px solid var(--c-line); }
.c-start-prep strong { color:var(--c-ink); font-weight:500; }
.c-todo { font-size:13px; font-weight:500; color:var(--amber-text); border-left:2px solid var(--editorial-amber); padding-left:8px; }
.c-todo-hint { font-size:13px; color:var(--c-muted); margin-top:4px; }
.c-guidance { padding:56px 0 20px; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.3fr); gap:56px; }
.c-guidance h2 { font-size:25px; }
.c-guidance p { color:var(--c-muted); }
.c-page-title { padding:var(--page-title-space) 0; margin-bottom:var(--page-content-space); border-bottom:1px solid var(--c-line); }
.c-page-title h1 { font-size:clamp(36px,3.7vw,52px); font-weight:500; margin:12px 0; }
.c-page-title p { color:var(--c-muted); }
.c-title-row { display:flex; justify-content:space-between; align-items:center; gap:20px; }
.c-panel { padding:28px 0; margin-bottom:32px; }
.c-panel + .c-panel { border-top:1px solid var(--c-line); }
.c-panel h2 { font-size:28px; font-weight:500; margin-bottom:20px; }
.c-panel h2 small { font-size:15px; color:var(--c-muted); margin-left:12px; }
.c-narrow { max-width:760px; margin-inline:auto; }
.c-help { font-size:14px; color:var(--c-muted); margin-top:6px; }
.c-columns { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; margin:18px 0; }
.c-columns > div { min-width:0; }
.c-panel label { display:block; font-size:15px; font-weight:500; width:100%; margin:12px 0 7px; }
.c-panel label > .form-control,.c-panel label > .form-select { margin-top:8px; }
.c-field { border-bottom:1px solid var(--c-line); margin:10px 0; }
.c-field summary { padding:15px 0; min-height:44px; cursor:pointer; font-weight:500; overflow-wrap:anywhere; }
.c-field summary span { float:right; font-size:13px; font-weight:400; color:var(--c-muted); }
.c-field-body { padding:0 0 20px; }
.c-original { border-left:1px solid var(--c-line); padding:16px; }
.c-original h3 { font-size:14px; color:var(--c-muted); }
.c-original p,.c-read-field p { white-space:pre-wrap; overflow-wrap:anywhere; font-size:15px; }
.c-actions { display:flex; align-items:center; gap:16px; flex-wrap:wrap; margin:24px 0 8px; }
/* 草稿區是清單不是相簿：縮圖夠認得出是哪一張就好，要看細節點開放大。 */
.c-photo-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:20px; }
.c-photo-grid figure { margin:0; padding:8px 0; min-width:0; }
.c-photo-grid img { width:100%; height:150px; object-fit:contain; background:var(--editorial-paper); border:1px solid var(--c-line); }
.c-photo-grid figcaption > * { display:block; font-size:14px; overflow-wrap:anywhere; }
.c-photo-grid figcaption { padding-top:12px; margin-top:12px; }
.c-caption-list { margin:18px 0 4px; border-left:2px solid var(--c-accent); padding-left:16px; }
.c-caption-row { display:grid; grid-template-columns:minmax(0,16rem) minmax(0,1fr); gap:14px; align-items:center; padding:10px 0; }
.c-caption-row + .c-caption-row { border-top:1px solid var(--c-line); }
.c-caption-row-single { grid-template-columns:minmax(0,1fr); }
.c-caption-row label { margin:0; font-size:14px; font-weight:400; color:var(--c-muted); overflow-wrap:anywhere; }
.c-preview { display:flex; gap:12px; align-items:center; min-width:0; }
.c-preview-image { width:72px; height:72px; object-fit:cover; flex:none; cursor:zoom-in; background:var(--editorial-paper); border:1px solid var(--c-line); }
.c-preview-meta { min-width:0; display:flex; flex-direction:column; gap:2px; }
.c-preview-name { font-size:14px; overflow-wrap:anywhere; }
.c-preview-meta small { font-size:12px; color:var(--c-muted); }
.c-preview-drop { align-self:flex-start; margin-top:2px; font-size:13px; min-height:32px; padding:0; }
.c-preview-oversize { color:var(--amber-text); font-weight:500; }
/* 已上傳照片：滑過才顯示放大提示，平時不干擾閱讀。 */
.c-photo-grid figure a { position:relative; display:block; }
.c-zoom-hint { position:absolute; right:8px; bottom:8px; font-size:12px; padding:4px 8px; border-radius:var(--radius-sm);
  background:rgba(0,0,0,.62); color:#fff; opacity:0; transition:opacity .15s; pointer-events:none; }
.c-photo-grid figure a:hover .c-zoom-hint,.c-photo-grid figure a:focus-visible .c-zoom-hint { opacity:1; }
.c-zoom { position:fixed; inset:0; z-index:1080; display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:14px; padding:32px; background:rgba(16,18,15,.9); }
.c-zoom img { max-width:min(100%,1200px); max-height:78vh; object-fit:contain; background:var(--editorial-paper); }
.c-zoom-caption { color:#fff; font-size:15px; text-align:center; max-width:60ch; margin:0; overflow-wrap:anywhere; }
.c-zoom-close { position:absolute; top:20px; right:24px; min-height:44px; padding:8px 18px; cursor:pointer;
  background:transparent; color:#fff; border:1px solid rgba(255,255,255,.55); border-radius:var(--radius-sm); }
.c-zoom-close:hover { background:rgba(255,255,255,.14); }
.c-upload { max-width:700px; margin:25px auto 0; padding-top:12px; border-top:1px solid var(--c-line); }
.c-upload .c-button { margin-top:20px; }
.c-history { padding:15px 0; border-bottom:1px solid var(--c-line); }
.c-history time { color:var(--c-muted); font-size:13px; display:block; }
.c-history p { white-space:pre-wrap; overflow-wrap:anywhere; margin-bottom:0; }
.c-status { font-size:13px; color:var(--c-accent); font-weight:500; border:1px solid var(--c-line); border-radius:var(--radius-sm); padding:4px 9px; display:inline-block; margin:0 12px; overflow-wrap:anywhere; }
.c-submission-row { display:flex; gap:24px; align-items:center; padding:24px 8px; text-decoration:none; border-bottom:1px solid var(--c-line); }
.c-submission-row > div { flex:1; min-width:0; }
.c-submission-row h2 { font-size:19px; margin:10px 0 5px; }
.c-submission-row p,.c-submission-row time { font-size:14px; color:var(--c-muted); margin:0; }
.c-submission-row time { display:block; }
.c-submission-result { margin:12px 8px 24px; }
.c-empty { padding:70px 20px; }
.c-empty > i { font-size:24px; }
.c-empty h2 { font-size:23px; margin:20px 0; }
.c-empty p { color:var(--c-muted); }
.c-tabs { display:flex; gap:20px; flex-wrap:wrap; border-bottom:1px solid var(--c-line); margin-bottom:25px; }
.c-tabs a { min-height:44px; padding:12px 0; text-decoration:none; }
.c-tabs a.active { border-bottom:1px solid var(--c-ink); color:var(--c-ink); }
.c-read-field { margin:24px 0; }
.c-read-field h3 { font-size:18px; }
.c-terms h2 { margin-top:34px; }
.c-selected { font-weight:600; }
.c-entry-title { max-width:50rem; }
.c-field-group { margin-top:32px; }
.c-field-group > summary { display:flex; justify-content:space-between; align-items:baseline; gap:16px; flex-wrap:wrap; cursor:pointer; min-height:44px; padding:12px 0; border-bottom:1px solid var(--c-ink); }
.c-group-name { font-size:20px; font-weight:500; }
.c-group-count { font-size:13px; color:var(--c-muted); white-space:nowrap; }
.c-field-group.has-included .c-group-count { color:var(--c-accent); font-weight:500; }
.c-field-group-body { padding-top:4px; }
.c-group-hint { margin:12px 0 4px; }
.c-field summary { display:flex; justify-content:space-between; align-items:baseline; gap:12px; flex-wrap:wrap; }
.c-field-name { overflow-wrap:anywhere; }
.c-field-state { font-size:13px; font-weight:400; color:var(--c-muted); white-space:nowrap; }
.c-field.is-included .c-field-state { color:var(--c-accent); font-weight:500; }
.c-field.is-included > summary { border-left:2px solid var(--c-accent); padding-left:12px; margin-left:-14px; }
.c-field-foot { margin-top:16px; padding-top:14px; border-top:1px solid var(--c-line); }
.c-field-switch { font-weight:500; }
.c-field-more { margin-top:14px; }
.c-field-more > summary { min-height:44px; padding:10px 0; cursor:pointer; font-size:14px; color:var(--c-muted); }
.c-progress { margin:18px 0 10px; padding:14px 18px; border-left:2px solid var(--c-accent); background:var(--c-surface); }
.c-progress-line { display:flex; gap:22px; flex-wrap:wrap; align-items:baseline; margin:0; font-size:15px; }
.c-progress-line strong { font-size:20px; font-weight:600; margin-right:4px; }
.c-progress-flag { color:var(--c-muted); font-size:14px; }
.c-summary { margin:18px 0 24px; }
.c-summary h3 { font-size:16px; font-weight:500; margin:18px 0 8px; }
.c-summary-list { list-style:none; padding:0; margin:0; }
.c-summary-list li { display:grid; grid-template-columns:minmax(0,10rem) minmax(0,1fr) auto; gap:14px; align-items:baseline; padding:10px 0; border-bottom:1px solid var(--c-line); font-size:15px; }
.c-summary-list span { color:var(--c-muted); overflow-wrap:anywhere; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.c-summary-warn { font-size:13px; font-style:normal; color:var(--amber-text); white-space:nowrap; }
.c-version { font-size:.875rem; font-weight:600; }
.c-permission-required { padding:12px; color:var(--c-ink); border-left:3px solid var(--editorial-amber); }
[data-unsaved-notice]:focus { outline:2px solid var(--editorial-amber); outline-offset:3px; }
/* 草稿頁只有一條操作列：貼在編輯區底部，捲到哪裡都按得到；捲過編輯區就回到原位，不會蓋住送件歷史。 */
.c-actionbar { position:sticky; bottom:0; z-index:30; margin:0 0 40px; padding:14px 18px; background:var(--c-surface);
  border:1px solid var(--c-line); border-radius:var(--radius-sm); box-shadow:0 -8px 20px rgba(20,24,18,.08); }
.c-actionbar .c-notice { margin:0 0 10px; }
.c-actionbar-row { display:flex; align-items:center; justify-content:space-between; gap:12px 24px; flex-wrap:wrap; }
.c-actionbar-info { flex:1 1 320px; min-width:0; }
.c-agree { display:flex; gap:8px; align-items:flex-start; margin:0; font-size:14px; font-weight:400; cursor:pointer; }
.c-agree input { margin-top:4px; flex:none; }
.c-actionbar-status { margin:4px 0 0 24px; font-size:13px; color:var(--c-muted); }
.c-actionbar.is-ready .c-actionbar-status { color:var(--c-accent); font-weight:500; }
.c-actionbar-buttons { display:flex; gap:10px; flex-wrap:wrap; }
.c-actionbar-buttons button[disabled] { opacity:.45; cursor:not-allowed; }
.c-upload-title { font-size:18px; font-weight:500; margin:0 0 6px; }
/* The three original/candidate/current values and private notes stay distinct. */
.c-review-field { border-top:1px solid var(--c-ink); margin-top:28px; padding:24px 0 20px; }
.c-review-field h3 { font-size:24px; font-weight:500; }
.c-diff { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); border-block:1px solid var(--c-line); }
.c-diff > div { min-width:0; padding:20px; border-right:1px solid var(--c-line); }
.c-diff > div:last-child { border-right:0; border-top:2px solid var(--editorial-amber); }
.c-diff strong { display:block; color:var(--c-ink); margin-bottom:8px; font-size:14px; font-weight:500; }
.c-diff p { white-space:pre-wrap; overflow-wrap:anywhere; font-size:16px; }
.c-conflict { display:inline-flex; gap:6px; align-items:center; margin:8px 0; padding:6px 10px; font-size:13px; border-left:2px solid var(--editorial-amber); color:var(--amber-text); }
.c-review-note,.c-review-internal { border-left:2px solid var(--c-line); padding:4px 0 4px 20px; margin-block:24px; }
.c-review-note { border-color:var(--c-accent); }
.c-review-internal { border-color:var(--editorial-amber); }
.c-review-note > p,.c-review-internal > p { margin-top:0; }
@media(max-width:760px) {
 .c-tabs { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px 12px; }
 .c-tabs a { text-align:center; }
 .c-hero { grid-template-columns:minmax(0,1fr); gap:30px; padding:38px 0; }
 .c-hero-note { padding:24px; }
 .c-hero-note > i { font-size:36px; }
 .c-hero-note h2 { margin:14px 0; font-size:21px; }
 .c-secondary { margin-left:14px; font-size:14px; }
 .c-guidance { grid-template-columns:minmax(0,1fr); gap:14px; padding:40px 0 10px; }
 .c-starts > a { gap:12px; grid-template-columns:40px minmax(0,1fr) 22px; }
 .c-starts > a::before { font-size:32px; }
 .c-starts h2 { font-size:20px; }
 .c-starts p { font-size:14px; }
 .c-page-title h1 { font-size:clamp(28px,6vw,36px); }
 .c-columns,.c-diff { grid-template-columns:minmax(0,1fr); }
 .c-columns { gap:10px; }
 .c-field-body { padding-bottom:14px; }
 .c-photo-grid { grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); gap:14px; }
 .c-photo-grid img { height:120px; }
 .c-submission-row { flex-wrap:wrap; gap:12px; }
 .c-submission-row > div { flex-basis:100%; }
 .c-submission-row > i { margin-left:auto; }
 .c-title-row { align-items:flex-start; flex-direction:column; }
 .c-field summary span { float:none; }
 .c-summary-list li { grid-template-columns:minmax(0,1fr); gap:4px; }
 .c-caption-row { grid-template-columns:minmax(0,1fr); gap:8px; }
 .c-zoom { padding:16px; }
 .c-zoom img { max-height:66vh; }
 .c-zoom-close { top:12px; right:12px; }
 .c-actionbar { padding:12px; border-radius:0; margin-inline:calc(var(--bs-gutter-x, 1.5rem) * -.5); }
 .c-actionbar-buttons { width:100%; }
 .c-actionbar-buttons button { flex:1 1 0; }
 .c-progress-line { gap:6px 18px; }
 .c-diff > div { border-right:0; border-bottom:1px solid var(--c-line); padding:20px 0; }
 .c-diff > div:last-child { border-bottom:0; }
}
