/* Plain, responsive shared styles. No fonts, frameworks, or network dependencies. */
:root { color-scheme: light; --ink:#24313d; --muted:#576574; --line:#d7dfe5; --paper:#fff; --blue:#245b87; --light:#edf4fa; --red:#a33125; --green:#236641; }
* { box-sizing: border-box; }
body { margin:0; color:var(--ink); background:#f5f7f9; font:16px/1.5 Arial, Helvetica, sans-serif; }
a { color:var(--blue); }
button, input, select, textarea { font:inherit; }
button, .button { display:inline-flex; justify-content:center; align-items:center; gap:.35rem; min-height:42px; padding:.5rem .85rem; border:1px solid #aebcc7; border-radius:5px; background:#fff; color:var(--ink); text-decoration:none; cursor:pointer; font-weight:600; }
button:hover, .button:hover { background:#edf2f6; }
button.primary, .button.primary { color:#fff; background:var(--blue); border-color:var(--blue); }
button.primary:hover, .button.primary:hover { background:#194568; }
button.danger { color:var(--red); border-color:#ce9d97; }
button:disabled { opacity:.58; cursor:default; }
button.link { border:0; background:none; padding:0; min-height:32px; color:var(--blue); text-align:left; text-decoration:underline; justify-content:flex-start; }
:focus-visible { outline:3px solid #3e8bc5; outline-offset:3px; }
[hidden] { display:none !important; }
.skip { position:absolute; top:-80px; left:16px; z-index:10; background:#fff; padding:10px; }
.skip:focus { top:8px; }
.topbar { background:#fff; border-bottom:1px solid var(--line); }
.topbar-inner { max-width:1240px; margin:auto; padding:18px 24px; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:14px; }
.brand { font-weight:700; font-size:21px; color:var(--ink); text-decoration:none; }
.subbrand, .muted { color:var(--muted); }
.subbrand { font-size:13px; margin:1px 0 0; }
.user { display:flex; gap:16px; align-items:center; flex-wrap:wrap; }
.user-name { font-size:14px; }
nav { max-width:1240px; margin:auto; padding:0 24px; display:flex; flex-wrap:wrap; gap:3px; }
nav a { padding:12px 15px; color:var(--ink); text-decoration:none; border-bottom:3px solid transparent; font-weight:600; font-size:15px; }
nav a:hover { background:#f4f7f9; }
nav a[aria-current=page] { color:var(--blue); border-bottom-color:var(--blue); background:var(--light); }
main { max-width:1240px; margin:0 auto; padding:28px 24px 48px; }
h1 { font-size:27px; margin:0 0 5px; line-height:1.25; }
h2 { font-size:20px; margin:0 0 14px; }
h3 { font-size:17px; margin:0 0 10px; }
p { margin:0 0 14px; }
.page-heading { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:14px; margin-bottom:24px; }
.page-heading p { margin:7px 0 0; }
.panel { background:var(--paper); border:1px solid var(--line); border-radius:7px; padding:23px; margin-bottom:20px; }
.narrow { max-width:820px; }
.login { max-width:530px; margin:35px auto; }
.login h1 { margin:8px 0 10px; }
.login .intro { padding-bottom:15px; border-bottom:1px solid var(--line); margin-bottom:22px; }
.login form button { width:100%; margin-top:6px; }
.eyebrow { color:var(--blue); font-size:13px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; }
.row { display:flex; align-items:center; flex-wrap:wrap; gap:12px; }
.between { justify-content:space-between; }
.field { display:flex; flex-direction:column; gap:6px; min-width:0; margin-bottom:16px; }
.field label, .field > span { font-weight:600; font-size:14px; }
input, select, textarea { width:100%; padding:10px 11px; border:1px solid #aebcc7; border-radius:5px; background:#fff; color:var(--ink); min-height:43px; }
textarea { resize:vertical; min-height:76px; }
input[type=checkbox] { width:18px; min-height:18px; }
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:0 18px; }
.span-2 { grid-column:1 / -1; }
.filters { display:grid; grid-template-columns:1.2fr 1fr 1fr 1fr 1fr; gap:16px; }
.filters .field { margin:0; }
.filters.people { grid-template-columns:1.3fr 1fr 1fr 1.1fr; }
.filters label strong { color:var(--blue); }
.notice { padding:12px 15px; border:1px solid #aac7dd; background:#eff6fb; border-radius:5px; margin:0 0 18px; }
.notice.success { color:var(--green); background:#edf8f0; border-color:#a8cfb4; }
.notice.error { color:var(--red); background:#fff1ef; border-color:#dcaca5; }
.helper { color:var(--muted); font-size:14px; margin:7px 0 0; }
.badge { display:inline-block; padding:3px 8px; font-size:12px; font-weight:600; border-radius:4px; color:#465564; background:#edf1f4; white-space:nowrap; }
.dialog-content .badge { white-space:normal; }
.badge.blue { color:#1d5178; background:#e8f1f9; }
.badge.green { color:#235d3b; background:#e8f3eb; }
.badge.red { color:#942f25; background:#fdece8; }
.flag { display:inline-flex; align-items:center; justify-content:center; color:#fff; background:var(--red); width:22px; height:22px; border-radius:50%; margin-right:7px; font-weight:700; }
.person-result { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:15px 0; border-top:1px solid var(--line); }
.person-result .meta { color:var(--muted); font-size:14px; }
.registration { border-top:1px solid var(--line); margin-top:20px; padding-top:22px; }
.empty { color:var(--muted); padding:25px 12px; text-align:center; background:#f8fafb; border-radius:5px; }
.table-wrap { width:100%; overflow-x:auto; }
table { border-collapse:collapse; width:100%; font-size:14px; }
th, td { padding:12px 13px; text-align:left; border-bottom:1px solid var(--line); vertical-align:top; }
th { font-weight:600; color:#435363; background:#f6f8fa; }
td.num, th.num { text-align:right; font-variant-numeric:tabular-nums; }
tbody tr:last-child td { border-bottom:0; }
.stats-summary { display:flex; gap:28px; flex-wrap:wrap; margin-bottom:21px; padding-bottom:18px; border-bottom:1px solid var(--line); }
.stat strong { display:block; font-size:25px; font-weight:600; }
.stat span { color:var(--muted); font-size:14px; }
.group-title { margin:24px 0 10px; }
.calendar-controls { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:16px; margin-bottom:18px; }
.calendar-controls h2 { margin:0; font-size:20px; }
.calendar-controls select { width:auto; min-width:190px; }
.calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); border-left:1px solid var(--line); border-top:1px solid var(--line); }
.weekday { text-align:center; padding:9px 0; background:#f5f7f9; border-right:1px solid var(--line); border-bottom:1px solid var(--line); color:var(--muted); font-size:13px; font-weight:600; }
.day { min-height:110px; padding:8px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
.day.outside { background:#f8fafb; }
.day.today { background:#f0f6fb; }
.day-number { display:block; font-size:13px; margin-bottom:7px; }
.today .day-number { color:var(--blue); font-weight:700; }
.calendar-event { display:block; width:100%; min-height:0; padding:6px 7px; margin-bottom:4px; background:#edf4fa; color:#244f70; border:1px solid #c0d4e4; text-align:left; font-size:12px; line-height:1.35; font-weight:600; overflow-wrap:anywhere; }
.calendar-event .event-time { display:block; font-size:11px; font-weight:400; margin-top:3px; }
.calendar-event.past { background:#f1f3f5; border-color:#d1d8df; color:#465564; }
.calendar-event.live { background:#e9f5ed; border-color:#b6d7c0; color:#235d3b; }
.agenda { display:none; }
.agenda-item { padding:16px 0; border-top:1px solid var(--line); }
.alert-item { border-bottom:1px solid var(--line); padding:18px 0; }
.alert-item:first-child { padding-top:0; }
.alert-item:last-child { border-bottom:0; padding-bottom:0; }
.alert-item.unread { border-left:3px solid var(--blue); padding-left:14px; }
.alert-item h3 { margin:8px 0 6px; }
.alert-item p { margin-bottom:9px; }
details summary { cursor:pointer; font-weight:600; }
details[open] summary { margin-bottom:18px; }
dialog { border:1px solid #bfccd5; border-radius:8px; padding:0; color:var(--ink); width:min(860px, calc(100% - 32px)); max-height:90vh; background:white; }
dialog::backdrop { background:rgba(25,37,47,.4); }
.dialog-header { padding:20px 24px; border-bottom:1px solid var(--line); display:flex; align-items:center; justify-content:space-between; gap:18px; }
.dialog-header h2 { margin:0; }
.dialog-content { padding:24px; }
.dialog-content .panel { padding:15px; }
.dialog-content h3 { margin-top:22px; }
.dialog-content h3:first-child { margin-top:0; }
.dialog-meta { display:grid; grid-template-columns:1fr 1fr; gap:12px 24px; margin:18px 0; }
.dialog-meta dt { font-size:13px; color:var(--muted); }
.dialog-meta dd { margin:2px 0 0; font-weight:600; }
.modal-actions { padding-top:18px; border-top:1px solid var(--line); margin-top:20px; }
.footer { max-width:1240px; margin:auto; padding:0 24px 25px; color:var(--muted); font-size:13px; }
.section-note { margin-bottom:18px; }
.worksheet-filters { grid-template-columns:repeat(3,minmax(0,1fr)); }
.source-notes { margin-top:18px; padding-top:15px; border-top:1px solid var(--line); font-size:14px; }
.source-notes p:last-child { margin-bottom:0; }
.worksheet-table { font-size:13px; }
.worksheet-table caption { text-align:left; font-weight:600; padding:0 0 12px; }
.worksheet-table thead th { min-width:70px; vertical-align:bottom; }
.worksheet-table thead th:first-child { min-width:260px; }
.worksheet-table tr[data-activity] > th { position:sticky; left:0; background:#fff; min-width:260px; max-width:300px; border-right:1px solid var(--line); }
.worksheet-table th .link { font-size:13px; font-weight:400; line-height:1.45; }
.worksheet-table .worksheet-group th { padding:12px; background:#e7eef4; color:#244d6c; }
.worksheet-table .unassigned { background:#fff8e6; min-width:115px; }
.worksheet-total { font-weight:700; background:#f4f8fb; }
.source-total { color:var(--muted); }
.worksheet-entry-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0 16px; }
@media(max-width:1000px) { .filters { grid-template-columns:repeat(3,1fr); } .filters.people { grid-template-columns:1fr 1fr; } }
@media(max-width:700px) {
  .topbar-inner { padding:16px; } nav { padding:0 8px; } nav a { font-size:14px; padding:11px 9px; }
  main { padding:22px 16px; } .panel { padding:18px; } .login { margin-top:12px; }
  h1 { font-size:24px; } .filters, .filters.people, .form-grid, .dialog-meta { grid-template-columns:1fr; }
  .worksheet-entry-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .worksheet-table tr[data-activity] > th, .worksheet-table thead th:first-child { min-width:175px; max-width:200px; }
  .calendar-grid { display:none; } .agenda { display:block; } .calendar-controls select { width:100%; }
  .person-result { align-items:flex-start; flex-direction:column; } .person-result button { align-self:flex-start; }
  .dialog-header, .dialog-content { padding:17px; } .stats-summary { gap:20px; } td, th { padding:10px; }
  .user { width:100%; justify-content:space-between; } button,.button { min-height:44px; }
  .calendar-controls h2 { font-size:18px; } .calendar-controls .row { gap:8px; }
}
