/* RACB PostMaker — base stylesheet */
*, *::before, *::after { box-sizing: border-box; }

:root {
  --color-primary: #0a66c2;
  --color-primary-dark: #004182;
  --color-danger: #cc1016;
  --color-success: #057642;
  --color-bg: #f3f2ef;
  --color-surface: #ffffff;
  --color-text: #000000e0;
  --color-muted: #666666;
  --color-border: #e0e0e0;
  --radius: 6px;
  --shadow: 0 1px 4px rgba(0,0,0,.12);
}

body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; margin:0; background:var(--color-bg); color:var(--color-text); }

/* Navbar */
.navbar { background:var(--color-surface); border-bottom:1px solid var(--color-border); padding:.75rem 1.5rem; display:flex; align-items:center; gap:1.5rem; flex-wrap:wrap; box-shadow:var(--shadow); }
.nav-brand a { font-weight:700; font-size:1.1rem; color:var(--color-primary); text-decoration:none; }
.nav-links { list-style:none; margin:0; padding:0; display:flex; gap:.75rem; flex-wrap:wrap; }
.nav-links a { color:var(--color-text); text-decoration:none; font-size:.875rem; padding:.25rem .5rem; border-radius:var(--radius); }
.nav-links a:hover { background:var(--color-bg); color:var(--color-primary); }

/* Container */
.container { max-width:1100px; margin:1.5rem auto; padding:0 1.5rem; }

/* Footer */
.footer { text-align:center; padding:1.5rem; color:var(--color-muted); font-size:.8rem; border-top:1px solid var(--color-border); }

/* Cards */
.stats-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:1rem; margin-bottom:1.5rem; }
.stat-card { background:var(--color-surface); border-radius:var(--radius); padding:1.25rem; box-shadow:var(--shadow); text-align:center; }
.stat-value { display:block; font-size:2rem; font-weight:700; color:var(--color-primary); }
.stat-label { font-size:.8rem; color:var(--color-muted); }

/* Page header */
.page-header { display:flex; align-items:center; gap:1rem; margin-bottom:1.25rem; }
.page-header h1 { margin:0; flex:1; }

/* Tables */
.table { width:100%; border-collapse:collapse; background:var(--color-surface); border-radius:var(--radius); box-shadow:var(--shadow); overflow:hidden; }
.table th, .table td { padding:.625rem 1rem; text-align:left; border-bottom:1px solid var(--color-border); font-size:.875rem; }
.table th { background:var(--color-bg); font-weight:600; }

/* Buttons */
.btn { display:inline-block; padding:.4rem .9rem; border-radius:var(--radius); border:1px solid var(--color-border); background:var(--color-surface); color:var(--color-text); cursor:pointer; font-size:.875rem; text-decoration:none; line-height:1.5; }
.btn:hover { background:var(--color-bg); }
.btn-primary { background:var(--color-primary); color:#fff; border-color:var(--color-primary); }
.btn-primary:hover { background:var(--color-primary-dark); }
.btn-danger { background:var(--color-danger); color:#fff; border-color:var(--color-danger); }
.btn-sm { padding:.25rem .6rem; font-size:.8rem; }

/* Forms */
.form-group { margin-bottom:1rem; }
.form-group label { display:block; margin-bottom:.3rem; font-size:.875rem; font-weight:500; }
.form-group input, .form-group select, .form-group textarea {
  width:100%; padding:.45rem .7rem; border:1px solid var(--color-border); border-radius:var(--radius); font-size:.875rem; background:var(--color-surface);
}
.form-group small { color:var(--color-muted); font-size:.78rem; }
.form-row { display:flex; gap:1rem; align-items:flex-end; flex-wrap:wrap; }
.form-row .form-group { flex:1; min-width:140px; }
.form-actions { margin-top:1.25rem; display:flex; gap:.75rem; }
fieldset { border:1px solid var(--color-border); border-radius:var(--radius); padding:1rem; margin-bottom:1rem; }
legend { font-weight:600; font-size:.875rem; }

/* Topic / schedule rows */
.topic-row, .schedule-row { display:flex; gap:.5rem; align-items:center; margin-bottom:.5rem; }
.topic-row input, .schedule-row input, .schedule-row select { flex:1; }

/* Badges */
.badge { display:inline-block; padding:.2rem .55rem; border-radius:99px; font-size:.75rem; font-weight:600; background:#e2e3e5; color:#383d41; }
.badge-ok, .badge-completed, .badge-approved { background:#d4edda; color:var(--color-success); }
.badge-error, .badge-failed, .badge-rejected { background:#f8d7da; color:var(--color-danger); }
.badge-pending { background:#fff3cd; color:#856404; }
.badge-published { background:#cce5ff; color:#004085; }

/* Alerts */
.alert { padding:.75rem 1rem; border-radius:var(--radius); margin-bottom:1rem; font-size:.875rem; }
.alert-error { background:#f8d7da; color:#721c24; border:1px solid #f5c6cb; }
.alert-success { background:#d4edda; color:#155724; border:1px solid #c3e6cb; }
.alert-warning { background:#fff3cd; color:#856404; border:1px solid #ffeeba; }

/* Login */
.login-page { display:flex; justify-content:center; align-items:center; min-height:100vh; background:var(--color-bg); }
.login-card { background:var(--color-surface); padding:2rem; border-radius:var(--radius); box-shadow:var(--shadow); width:100%; max-width:360px; }
.login-card h1 { margin-bottom:.25rem; }
.tagline { color:var(--color-muted); font-size:.875rem; margin-bottom:1.5rem; }

/* Help box */
.help-box { background:#e8f4fd; border:1px solid #bee3f8; border-radius:var(--radius); padding:.75rem 1rem; margin-bottom:1rem; font-size:.85rem; }

/* Content box */
.content-box { background:var(--color-bg); border-radius:var(--radius); padding:1rem; white-space:pre-wrap; font-size:.9rem; margin-bottom:1rem; }

/* Research card */
.research-card { background:var(--color-surface); border-radius:var(--radius); padding:1rem; margin-bottom:1rem; box-shadow:var(--shadow); }
.research-card h3 { margin-top:0; }

/* Empty state */
.empty { color:var(--color-muted); font-style:italic; }

/* Status table */
.status-table th { width:200px; }

/* Publication state machine */
.badge-invalid, .badge-publish_failed, .badge-pub-failed, .badge-job-failed { background:#f8d7da; color:var(--color-danger); }
.badge-needs_reconciliation, .badge-pub-unknown, .badge-warning { background:#ffe5b4; color:#8a4b00; }
.badge-publishing, .badge-pub-reserved, .badge-job-running { background:#e2e3ff; color:#2d2f8f; }
.badge-pub-published, .badge-job-completed { background:#cce5ff; color:#004085; }
.hint { color:#6c757d; font-size:.85rem; }
.form-inline { display:flex; flex-wrap:wrap; gap:.5rem; align-items:flex-end; margin:.5rem 0; }

/* Phase 2: classes replacing inline styles (CSP style-src 'self') */
.inline-form { display:inline; }
.full-width { width:100%; }
.wide-input { width:60%; }
.link-button { background:none; border:none; padding:0; color:inherit; font:inherit; cursor:pointer; text-decoration:underline; }
.nav-links .link-button { color:var(--color-text); text-decoration:none; font-size:.875rem; padding:.25rem .5rem; border-radius:var(--radius); }
.nav-links .link-button:hover { background:var(--color-bg); color:var(--color-primary); }

/* Phase 3A: LinkedIn setup and connection states */
.setup-steps li { margin-bottom:1rem; }
.setup-steps li.done > strong::after { content:" ✓"; color:var(--color-success); }
.badge-conn-connected { background:#d4edda; color:var(--color-success); }
.badge-conn-expired, .badge-conn-revoked, .badge-conn-needs_reauthorization, .badge-conn-insufficient_permissions { background:#f8d7da; color:var(--color-danger); }
.badge-conn-validation_error, .badge-conn-unvalidated { background:#fff3cd; color:#856404; }
.confirm-box { border:2px solid var(--color-danger); border-radius:var(--radius); padding:1rem; margin:1rem 0; }
.confirm-box.dry { border-color:#856404; }
