/* Shared control contract. Page CSS owns composition; these tokens own the controls. */
:root{--ui-font:Arial,Helvetica,sans-serif;--ui-ink:#10375a;--ui-muted:#526c83;--ui-accent:#00859c;--ui-border:#dce7ee;--ui-surface:#fff;--ui-background:#f7fafc;--ui-radius:10px;--ui-control:44px;--ui-space:8px;--ui-max:1320px;--ui-sidebar:228px;--ui-rail:260px}
body .button{font-family:var(--ui-font);font-size:14px;line-height:1.35;min-height:var(--ui-control);padding:10px 16px;border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-surface);color:var(--ui-ink);display:inline-flex;align-items:center;justify-content:center;gap:8px;box-sizing:border-box;text-decoration:none;font-weight:600;cursor:pointer;box-shadow:none}
body .button.primary{background:var(--ui-accent);color:#fff;border-color:var(--ui-accent)}
/* Hero actions need an explicit foreground/background pair. */
body .button.glass{background:#123c53;color:#fff;border-color:#567586}
body .button.danger{color:#a5354a;background:#fff;border-color:#e5c7ce}
body .button:hover:not(:disabled){filter:brightness(.97)}body .button:disabled{opacity:.55;cursor:not-allowed}
body :focus-visible{outline:3px solid #0098b3;outline-offset:3px}
body :is(.ui-dialog,dialog.settings-dialog,dialog#dialog){font:15px/1.5 var(--ui-font);color:var(--ui-ink);background:white;border:1px solid var(--ui-border);border-radius:12px;box-sizing:border-box;width:min(680px,calc(100vw - 32px));max-width:none;max-height:calc(100dvh - 32px);padding:24px;overflow:auto;box-shadow:0 20px 60px #092e4e29}
body dialog::backdrop{background:#092e4e80}body dialog h2{font-size:22px;line-height:1.3;margin:0 32px 12px 0}body dialog p{font-size:15px;color:var(--ui-muted)}
.ui-dialog footer,.ui-dialog-heading{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:24px}.ui-dialog-heading{justify-content:space-between;margin:0 0 24px;padding-bottom:16px;border-bottom:1px solid var(--ui-border)}
body .ui-dialog input:not([type=checkbox]),body .ui-dialog select,body .ui-dialog textarea{font:16px var(--ui-font);min-height:44px;border:1px solid var(--ui-border);border-radius:7px;padding:10px 12px;box-sizing:border-box;color:var(--ui-ink);background:white;max-width:100%}
.ui-help{font-size:13px!important;line-height:1.5;color:var(--ui-muted)}
[data-tone=error]{color:#a5354a!important;background:#fff3f5;border-radius:8px;padding:12px}
body [hidden]{display:none!important}
.contribution-tools{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:0 0 20px;padding:16px 0;border-bottom:1px solid var(--ui-border)}
.contribution-tools>span{flex:1;font-size:14px;color:var(--ui-muted);min-width:180px}.contribution-tools a{color:#00758c;font-size:14px}
.contribution-toolbar{display:flex;align-items:end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}.contribution-toolbar label{display:grid;gap:6px;font-size:14px}.contribution-toolbar input,.contribution-toolbar select{font:15px var(--ui-font);padding:10px 12px;min-height:44px;border-radius:7px;border:1px solid var(--ui-border);background:white;color:var(--ui-ink)}
.contribution-tabs{display:flex;gap:20px;border-bottom:1px solid var(--ui-border);margin:16px 0 20px}.contribution-tabs button{border:0;border-bottom:3px solid transparent;background:none;padding:12px 2px;font:600 14px var(--ui-font);color:var(--ui-muted);cursor:pointer}.contribution-tabs [aria-pressed=true]{border-bottom-color:var(--ui-accent);color:#00758c}
.contribution-row{display:grid;grid-template-columns:80px minmax(0,1fr) auto;gap:16px;align-items:center;padding:20px 0;border-bottom:1px solid var(--ui-border)}.contribution-thumb{width:80px;height:64px;border-radius:8px;object-fit:cover;background:#eef5f8;display:grid;place-items:center;color:var(--ui-muted);font-size:13px}.contribution-row h3{font-size:17px;line-height:1.35;margin:0 0 5px}.contribution-row p{font-size:13px;color:var(--ui-muted);margin:4px 0}.contribution-row-actions{display:flex;flex-wrap:wrap;gap:8px;max-width:340px;justify-content:flex-end}.contribution-row-actions .button{font-size:13px;padding:8px 12px}.contribution-badge{font-size:12px;font-weight:600;background:#edf4f8;color:#526c83;border-radius:16px;padding:4px 8px;display:inline-block}.contribution-badge.published{background:#e6f6ef;color:#146b50}
.contribution-empty{text-align:center;padding:40px 20px}.contribution-empty h3{font-size:20px}.contribution-empty p{color:var(--ui-muted);font-size:15px}.contribution-new{display:flex;gap:8px}.contribution-notice{padding:14px 16px;border:1px solid #d3e8ee;border-radius:8px;background:#eff8fa;font-size:14px;line-height:1.5;margin-bottom:16px}.contribution-notice a{color:#00758c;text-decoration:underline}
.contribution-preview{width:min(840px,calc(100vw - 32px))!important}.contribution-preview h1{font-size:28px;line-height:1.25;margin:16px 0}.contribution-preview .community-prose{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65}.contribution-preview .community-photos{display:flex;gap:12px;overflow:auto}.contribution-preview .community-photos img{height:180px;max-width:100%;border-radius:8px;object-fit:cover}.contribution-details{display:grid;grid-template-columns:1fr 1fr;gap:12px 20px;margin:20px 0}.contribution-details div{min-width:0;border-bottom:1px solid var(--ui-border);padding:10px 0}.contribution-details dt{font-size:13px;color:var(--ui-muted)}.contribution-details dd{font-size:15px;margin:6px 0;white-space:pre-wrap;overflow-wrap:anywhere}.community-stops li{margin-bottom:16px}.community-stops p{white-space:pre-wrap}
@media(max-width:760px){.contribution-row{grid-template-columns:64px minmax(0,1fr)}.contribution-thumb{width:64px;height:56px}.contribution-row-actions{grid-column:2;justify-content:flex-start;max-width:none}.contribution-details{grid-template-columns:1fr}.contribution-tabs{gap:12px}.contribution-toolbar{align-items:stretch}.contribution-toolbar label{width:100%}.contribution-tools{align-items:flex-start}}
