:root {
  --banner: #0b3d6b;
  --banner-2: #0e4c86;
  --utility: #062a4d;
  --tab: #15569e;
  --tab-active: #ffffff;
  --grid-head: #2c6bb3;
  --accent: #1a5fb4;
  --accent-dark: #0d3c73;
  --accent-soft: #eaf1fb;
  --gold: #f4b400;
  --gold-dark: #c98f00;
  --bg: #f4f6f9;
  --card: #ffffff;
  --ink: #1a2431;
  --muted: #5c6a7a;
  --line: #e2e8f0;
  --line-soft: #eef2f7;
  --zebra: #f7f9fc;
  --good: #17794a;
  --bad: #c02617;
  --warn: #b25a06;
  --radius: 4px;
  --shadow: 0 1px 2px rgba(16, 42, 73, .10);
  --shadow-lg: 0 8px 24px rgba(16, 42, 73, .16);
  --serif: Georgia, "Iowan Old Style", "Times New Roman", serif;
  --sidebar-w: 240px;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, Helvetica, Arial, sans-serif;
  font-size: 15px;
  color: var(--ink);
  background: var(--bg);
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}
a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }
.wrap { max-width: 1200px; margin: 0 auto; }
.muted { color: var(--muted); }
h1 { font-size: 25px; letter-spacing: -.2px; }

/* ============ Official left sidebar rail + content ============ */
.app { display: grid; grid-template-columns: var(--sidebar-w) 1fr; min-height: 100vh; }

.sidebar { background: var(--banner); color: #dbe7f4; border-right: 1px solid #0a2f55;
  position: sticky; top: 0; height: 100vh; overflow-y: auto; display: flex; flex-direction: column; }
.sidebar .brand { display: flex; align-items: center; gap: 12px; padding: 16px 18px; color: #fff;
  border-bottom: 3px solid var(--gold); }
.sidebar .brand:hover { text-decoration: none; }
.brand-seal { width: 46px; height: 46px; border-radius: 50%; flex: none;
  background: radial-gradient(circle at 35% 30%, #ffe08a, #e8a200); color: var(--banner);
  display: grid; place-items: center; font-size: 24px; box-shadow: inset 0 0 0 3px rgba(255,255,255,.55); }
.brand-logo { max-height: 46px; width: auto; }
.brand-text { display: flex; flex-direction: column; line-height: 1.2; min-width: 0; }
.brand-text strong { font-family: var(--serif); font-size: 17px; letter-spacing: .2px; }
.brand-text small { color: #bcd4ec; font-size: 10px; text-transform: uppercase; letter-spacing: 1.1px; }

.sidenav { padding: 6px 0 22px; flex: 1; }
.nav-group { padding: 1px 0; }
.nav-group + .nav-group { border-top: 1px solid rgba(255,255,255,.07); margin-top: 4px; }
.nav-group-label { font-size: 10px; text-transform: uppercase; letter-spacing: .8px; color: #7fa0c4;
  padding: 12px 18px 4px; font-weight: 700; }
.sidenav a { display: flex; align-items: center; gap: 8px; padding: 8px 18px; color: #dbe7f4;
  font-size: 13.5px; font-weight: 500; border-left: 3px solid transparent; }
.sidenav a:hover { background: var(--banner-2); color: #fff; text-decoration: none; }
.sidenav a.active { background: var(--banner-2); color: #fff; border-left-color: var(--gold); font-weight: 700; }
.nav-badge { margin-left: auto; background: var(--gold); color: #3a2c00; font-size: 11px; font-weight: 700;
  border-radius: 3px; padding: 0 6px; line-height: 1.5; }

.content { display: flex; flex-direction: column; min-width: 0; }
/* Slim navy utility strip across the top of the content column */
.topbar { background: var(--utility); color: #cfe0f2; display: flex; align-items: center; gap: 16px;
  padding: 8px 22px; }
.nav-toggle-cb { display: none; }
.nav-toggle { display: none; font-size: 20px; line-height: 1; color: #cfe0f2; cursor: pointer; padding: 2px 8px; user-select: none; }
.banner-search { display: flex; flex: 1; max-width: 440px; }
.banner-search input { padding: 7px 11px; border: 1px solid #0a2f55; border-right: none; width: 100%;
  font-size: 13.5px; border-radius: 3px 0 0 3px; }
.banner-search button { background: var(--gold); color: #1f2937; border: 1px solid var(--gold-dark);
  padding: 7px 16px; cursor: pointer; font-weight: 700; border-radius: 0 3px 3px 0; }
.banner-search button:hover { background: #ffc41f; }
.util-right { margin-left: auto; display: flex; align-items: center; gap: 14px; font-size: 12.5px; }
.util-right > a { color: #cfe0f2; }
.util-right > a:hover { color: #fff; }

.main-area { padding: 24px; width: 100%; max-width: 1360px; flex: 1 0 auto; }
.page-head { margin-bottom: 18px; border-bottom: 1px solid var(--line); padding-bottom: 10px; }
.page-head h1 { margin: 0 0 3px; color: var(--accent-dark); font-family: var(--serif); }

/* Site-wide announcement banner */
.announce { display: flex; align-items: center; gap: 10px; padding: 11px 24px; font-size: 14px;
  font-weight: 600; border-bottom: 1px solid rgba(0, 0, 0, .08); }
.announce-ic { font-size: 16px; flex: none; }
.announce-text { line-height: 1.4; }
.announce-info { background: #e8f1fb; color: #0d3c73; border-bottom-color: #c9def5; }
.announce-warning { background: #fef3d6; color: #7a4f05; border-bottom-color: #f3dca0; }
.announce-urgent { background: #fde4e0; color: #8a1f14; border-bottom-color: #f3c0b8; }
@media (max-width: 860px) { .announce { padding: 10px 16px; } }

@media (max-width: 860px) {
  .app { grid-template-columns: 1fr; }
  .sidebar { position: fixed; z-index: 60; width: var(--sidebar-w); transform: translateX(-100%);
    transition: transform .2s ease; box-shadow: var(--shadow-lg); }
  .nav-toggle-cb:checked ~ .app .sidebar { transform: translateX(0); }
  .nav-toggle { display: inline-flex; }
  .main-area { padding: 18px 16px 44px; }
  .topbar { padding: 8px 14px; }
}

/* Hero (dashboard) */
.hero { background: linear-gradient(135deg, var(--banner), #1b5fa0); color: #fff;
  padding: 26px 30px; border-radius: var(--radius); margin-bottom: 20px; border: 1px solid var(--accent-dark); }
.hero h1 { margin: 0 0 6px; font-family: var(--serif); }
.hero p { margin: 0; max-width: 660px; color: #dbe9f7; }

/* Stat grid */
.stat-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px; margin-bottom: 20px; }
.stat-grid.small { grid-template-columns: repeat(4, 1fr); }
.stat { background: var(--card); border: 1px solid var(--line); border-top: 3px solid var(--accent);
  border-radius: var(--radius); padding: 13px 15px; display: flex; flex-direction: column; gap: 2px;
  box-shadow: var(--shadow); }
a.stat:hover { text-decoration: none; background: var(--zebra); }
.stat-n { font-size: 26px; font-weight: 800; color: var(--accent-dark); }
.stat-l { font-size: 11px; color: var(--muted); text-transform: uppercase; letter-spacing: .5px; font-weight: 600; }

/* Cards / panels */
.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
  margin-bottom: 18px; box-shadow: var(--shadow); }
.card-head { display: flex; align-items: center; justify-content: space-between; padding: 10px 15px;
  border-bottom: 1px solid var(--line); background: linear-gradient(180deg, #f7fafd, #eef3f9); }
.card-head h2 { margin: 0; font-size: 12.5px; text-transform: uppercase; letter-spacing: .5px; color: var(--accent-dark); font-weight: 700; }
.card-body { padding: 15px; }
.grid-2 { display: grid; grid-template-columns: 1.5fr 1fr; gap: 18px; }

/* Data grids — authoritative solid header band */
table.data { width: 100%; border-collapse: collapse; font-size: 13px; border: 1px solid var(--line); }
table.data thead th { background: var(--grid-head); color: #fff; text-align: left; padding: 8px 11px;
  font-size: 11.5px; font-weight: 600; text-transform: uppercase; letter-spacing: .4px;
  border-right: 1px solid rgba(255,255,255,.15); white-space: nowrap; }
table.data tbody td { padding: 8px 11px; border-bottom: 1px solid var(--line-soft); vertical-align: top; }
table.data tbody tr:nth-child(even) { background: var(--zebra); }
table.data tbody tr:hover { background: #e9f1fa; }
table.data.compact td, table.data.compact th { padding: 5px 8px; }
.title-cell { font-weight: 600; max-width: 480px; }
.title-cell .sub, .sub { color: var(--muted); font-size: 12px; font-weight: 400; margin-top: 2px; }
.result-count { margin: 0; }
.icon-col { text-align: center; white-space: nowrap; }
.doc-link { font-weight: 600; }
.doc-na { color: #b7c2cf; }

/* Badges (squared) */
.badge { display: inline-block; padding: 1px 8px; border-radius: 3px; font-size: 11.5px; font-weight: 700;
  background: #e7edf4; color: #3a4658; white-space: nowrap; border: 1px solid #d4deea; }
.badge.type { background: var(--accent-soft); color: var(--accent-dark); border-color: #cfe0f5; }
.st-passed, .st-enacted, .st-pass, .st-approved, .st-adopted { background: #e7f6ee; color: var(--good); border-color: #b9e3cb; }
.st-failed, .st-fail, .st-vetoed { background: #fdecea; color: var(--bad); border-color: #f3c5bf; }
.st-in-committee, .st-introduced, .st-on-agenda, .st-held { background: #fef3e8; color: var(--warn); border-color: #f6d8b3; }
.st-draft, .st-withdrawn, .st-tabled { background: #eef1f5; color: var(--muted); }

/* Buttons */
.btn { display: inline-flex; align-items: center; justify-content: center;
  background: var(--accent); color: #fff;
  padding: 8px 16px; border-radius: var(--radius); border: 1px solid var(--accent-dark); cursor: pointer;
  font-size: 13px; font-weight: 600; line-height: 1.2; white-space: nowrap;
  width: auto; max-width: max-content; text-align: center; transition: background .1s ease; }
.btn:hover { background: var(--accent-dark); border-color: var(--accent-dark); text-decoration: none; }
.btn.primary { background: var(--gold); color: #3a2c00; border-color: var(--gold-dark); }
.btn.primary:hover { background: #ffc41f; }
.btn.ghost { background: transparent; color: var(--accent); border-color: var(--line); }
.btn.ghost:hover { background: var(--accent-soft); border-color: var(--accent); color: var(--accent-dark); }
.btn-block { display: block; width: 100%; text-align: center; padding: 10px; }
.btn-link { color: var(--accent); font-size: 13px; font-weight: 600; }
.detail-head, .person-head { display: flex; gap: 12px; align-items: center; }
/* Action button rows wrap cleanly and don't stretch their buttons. */
.admin-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 18px; }
.admin-actions .btn, .head-actions .btn, .form-actions .btn { flex: 0 0 auto; }
.head-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.form-actions { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-top: 4px; }
.detail-head { justify-content: space-between; align-items: flex-start; margin: 6px 0 14px; }
.detail-head h1 { margin: 0; color: var(--accent-dark); max-width: 780px; }

/* Crumbs */
.crumbs { color: var(--muted); font-size: 12.5px; margin: 0 0 8px; }
.crumbs a { color: var(--accent); }

/* Record / detail field layout (Legistar-style) */
dl.meta { display: grid; grid-template-columns: 170px 1fr; gap: 0; margin: 0;
  border: 1px solid var(--line); border-bottom: none; }
dl.meta dt { background: #eef3f9; color: var(--accent-dark); font-weight: 600; font-size: 12.5px;
  padding: 7px 12px; border-bottom: 1px solid var(--line); border-right: 1px solid var(--line); }
dl.meta dd { margin: 0; padding: 7px 12px; border-bottom: 1px solid var(--line); }
.chips { display: flex; gap: 6px; flex-wrap: wrap; }
.chip { display: inline-block; background: #e8f0fb; padding: 2px 9px; border-radius: 3px; font-size: 12.5px;
  border: 1px solid #cfe0f5; }
.chip em { color: var(--muted); font-style: normal; }
pre.fulltext, pre { white-space: pre-wrap; font-family: "Cascadia Code", ui-monospace, Menlo, monospace;
  font-size: 12.5px; background: #f8fafc; padding: 14px; border-radius: 4px; border: 1px solid var(--line); }
.empty { color: var(--muted); font-style: italic; margin: 4px 0; }

/* Buckets */
.bucket-list { list-style: none; margin: 0; padding: 0; }
.bucket-list li a { display: flex; justify-content: space-between; padding: 7px 4px;
  border-bottom: 1px solid var(--line-soft); color: var(--ink); }
.bucket-list li a:hover { text-decoration: none; background: var(--zebra); }
.bucket-n { font-weight: 700; color: var(--accent-dark); }

/* People & bodies */
.person-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 12px; }
.person-card, .body-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 14px; box-shadow: var(--shadow); color: var(--ink); }
.person-card { display: flex; gap: 12px; align-items: center; border-left: 3px solid var(--accent); }
.person-card:hover, .body-card:hover { background: var(--zebra); text-decoration: none; }
.pc-body { display: flex; flex-direction: column; }
.avatar { width: 44px; height: 44px; border-radius: 50%; background: var(--banner); color: #fff;
  display: grid; place-items: center; font-weight: 700; flex: none; }
.avatar.lg { width: 72px; height: 72px; font-size: 24px; }
.body-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
.body-card { display: flex; flex-direction: column; gap: 3px; border-top: 3px solid var(--accent); }
.body-card p { margin: 6px 0; font-size: 13px; }
.body-card .meta-line { font-size: 12px; color: var(--muted); }
.person-head { gap: 20px; margin-bottom: 18px; }
.person-head h1 { margin: 0; color: var(--accent-dark); }
.contact { font-size: 13px; margin: 6px 0 0; }
ul.plain { list-style: none; padding: 0; margin: 0; }
ul.plain li { padding: 6px 0; border-bottom: 1px solid var(--line-soft); }

/* Agenda (public) */
ol.agenda { list-style: none; padding: 0; margin: 0; }
.agenda-item { padding: 11px 0; border-bottom: 1px solid var(--line-soft); }
.ai-head { display: flex; gap: 14px; }
.ai-num { font-weight: 700; color: var(--accent-dark); min-width: 42px; }
.ai-title { font-weight: 600; }
.ai-action { font-size: 12.5px; color: var(--muted); margin-top: 4px; }
.vote-summary { display: flex; gap: 8px; margin: 8px 0 0 56px; flex-wrap: wrap; }
.vote-summary .v { font-size: 11.5px; padding: 1px 8px; border-radius: 3px; background: #e7edf4; border: 1px solid #d4deea; }
.vote-summary .v.yea { background: #e7f6ee; color: var(--good); border-color: #b9e3cb; }
.vote-summary .v.nay { background: #fdecea; color: var(--bad); border-color: #f3c5bf; }
.vote-list { display: flex; flex-wrap: wrap; gap: 6px 16px; list-style: none; padding: 0; margin: 8px 0 0 56px; font-size: 12.5px; }
.vt { font-weight: 700; font-size: 11px; padding: 0 5px; border-radius: 3px; }
.vt-yea { color: var(--good); } .vt-nay { color: var(--bad); } .vt-absent, .vt-abstain, .vt-recused { color: var(--muted); }

/* Attachments */
.attach-list { list-style: none; padding: 0; margin: 0; }
.attach-list li { padding: 5px 0; border-bottom: 1px solid var(--line-soft); }
.attach-list li:before { content: "📎 "; }

/* Search panel */
.search-panel { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
  box-shadow: var(--shadow); margin-bottom: 14px; }
.search-panel .sp-head { background: linear-gradient(180deg, #f7fafd, #eef3f9); border-bottom: 1px solid var(--line);
  padding: 8px 14px; font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: .5px; color: var(--accent-dark); }
.sp-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px 16px; padding: 14px; }
.sp-field { display: flex; flex-direction: column; font-size: 12.5px; font-weight: 600; color: #34404f; gap: 4px; }
.sp-field input, .sp-field select { padding: 7px 9px; border: 1px solid var(--line); border-radius: 3px; font-size: 13px; font-family: inherit; font-weight: 400; }
.sp-actions { grid-column: 1 / -1; display: flex; gap: 10px; align-items: center; border-top: 1px solid var(--line-soft); padding-top: 12px; }
.sp-actions button { background: linear-gradient(180deg, #1b5fa0, var(--accent)); color: #fff; border: 1px solid var(--accent-dark);
  padding: 8px 22px; border-radius: 3px; cursor: pointer; font-weight: 700; }
.list-toolbar { display: flex; align-items: center; justify-content: space-between;
  background: #e9f0f8; border: 1px solid var(--line); border-bottom: none; padding: 7px 12px; }
.export-links { display: flex; gap: 14px; }

/* Forms */
.form label { display: block; margin-bottom: 13px; font-size: 13px; font-weight: 600; color: #34404f; }
.form input[type=text], .form input[type=url], .form input[type=date], .form input[type=search],
.form select, .form textarea { width: 100%; padding: 8px 10px; margin-top: 5px; border: 1px solid var(--line);
  border-radius: 3px; font-size: 13px; font-family: inherit; font-weight: 400; }
.form textarea { resize: vertical; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.form fieldset { border: 1px solid var(--line); border-radius: 4px; padding: 12px 14px; margin: 0 0 14px; }
.form legend { font-size: 12.5px; font-weight: 700; color: var(--accent-dark); padding: 0 6px; }
.chk-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 6px; }
.chk, .radio { font-weight: 400; display: flex; align-items: center; gap: 6px; margin: 0; }
.form-actions { display: flex; gap: 12px; align-items: center; margin-top: 8px; }
.inline-form { margin-bottom: 16px; }

/* Drag-to-reorder */
.reorder-hint { margin: 0 0 12px; font-size: 12.5px; }
.reorder-status { font-weight: 700; }
.reorder-status.ok { color: var(--good); }
.reorder-status.err { color: var(--bad); }
.drag-handle { cursor: grab; color: var(--muted); font-size: 18px; line-height: 1; user-select: none; padding: 0 2px; }
.agenda-manage-item { border: 1px solid var(--line); border-radius: 4px; padding: 14px; margin-bottom: 12px; background: #fff; }
.agenda-manage-item[draggable="true"] { transition: box-shadow .12s, opacity .12s; }
.agenda-manage-item.dragging { opacity: .55; box-shadow: 0 4px 14px rgba(13,40,70,.22); cursor: grabbing; }
.agenda-manage-item .ami-head { display: flex; gap: 10px; align-items: baseline; margin-bottom: 10px; }
.vote-grid { display: grid; gap: 6px; margin: 10px 0; }
.vote-row { display: grid; grid-template-columns: 200px 1fr; align-items: center; gap: 10px; padding: 6px 0; border-bottom: 1px solid var(--line-soft); }
.vote-opts { display: flex; gap: 14px; flex-wrap: wrap; }

/* Agenda packet */
.packet-toolbar { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; }
.packet { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 40px 48px;
  max-width: 820px; margin: 0 auto; box-shadow: var(--shadow); }
.pk-head { text-align: center; border-bottom: 2px solid var(--banner); padding-bottom: 16px; margin-bottom: 8px; }
.pk-head h1 { margin: 0 0 4px; color: var(--banner); }
.pk-sub { margin: 0; text-transform: uppercase; letter-spacing: 2px; font-size: 13px; color: var(--muted); }
.pk-when { margin: 8px 0 0; font-weight: 600; }
.pk-section { font-size: 14px; text-transform: uppercase; letter-spacing: .5px; color: var(--banner);
  border-bottom: 1px solid var(--line); padding-bottom: 4px; margin: 24px 0 10px; }
.pk-item { display: flex; gap: 14px; padding: 10px 0; border-bottom: 1px dotted var(--line); break-inside: avoid; page-break-inside: avoid; }
.pk-num { font-weight: 700; color: var(--banner); min-width: 44px; }
.pk-content { flex: 1; }
.pk-title { font-weight: 600; margin-bottom: 4px; }
.pk-file { color: var(--accent); font-weight: 700; }
.pk-summary { margin: 4px 0; color: #333; }
.pk-meta { margin: 3px 0; font-size: 13px; color: #444; }
.pk-foot { margin-top: 28px; padding-top: 12px; border-top: 1px solid var(--line); text-align: center; font-size: 12px; color: var(--muted); }
.pk-attachments { margin: 4px 0 0 0; padding-left: 18px; font-size: 13px; }
.pk-attachments li { margin: 2px 0; }
.file-num-preview { margin: -8px 0 10px; font-size: 13px; }
.saved-banner { background: #e7f6ee; color: var(--good); border: 1px solid #b9e3cb; border-radius: 4px; padding: 8px 14px; margin-bottom: 14px; font-weight: 600; }

@media print {
  body { background: #fff; }
  .sidebar, .topbar, .nav-toggle, .site-footer, .no-print, .page-head { display: none !important; }
  .app { display: block; }
  .main-area { padding: 0; max-width: none; }
  .packet { border: none; box-shadow: none; padding: 0; max-width: none; }
  a { color: #000; text-decoration: none; }
  .pk-file { color: #000; }
}

/* Utility-strip user / auth (dark) */
.util-user { color: #fff; }
.util-role { text-transform: uppercase; font-size: 10px; background: rgba(255,255,255,.15); color: #eaf2fb;
  padding: 1px 6px; border-radius: 3px; font-weight: 700; letter-spacing: .3px; }
.util-logout { display: inline; }
.util-logout button { background: none; border: none; color: #cfe0f2; cursor: pointer; font: inherit; padding: 0; text-decoration: underline; }
.util-logout button:hover { color: #fff; }
/* Auth page — standalone layout (no nav) */
body.auth-page { background: #edf2f7; min-height: 100vh; display: flex; flex-direction: column; }
.auth-shell { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; padding: 32px 16px; gap: 20px; }
.auth-brand { display: flex; align-items: center; gap: 14px; text-decoration: none; color: inherit; }
.auth-brand .brand-seal { width: 64px; height: 64px; font-size: 32px; background: linear-gradient(145deg, var(--accent), var(--accent-dark)); color: #fff; box-shadow: 0 2px 8px rgba(0,0,0,.18); }
.auth-brand .brand-logo { height: 52px; width: auto; }
.auth-brand-text strong { display: block; font-size: 18px; color: var(--accent-dark); }
.auth-brand-text small { font-size: 12px; color: #64748b; }
.auth-card { background: #fff; border: 1px solid var(--line); border-radius: 8px; box-shadow: 0 4px 16px rgba(0,0,0,.08); padding: 28px 32px; width: 100%; max-width: 420px; }
.auth-access-note { font-size: 12.5px; color: #64748b; margin: 0 0 18px; }
.sso-btn { display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; padding: 10px 16px; font-size: 14px; font-weight: 600; margin-bottom: 16px; background: #fff; color: #1f2937; border: 1px solid #d1d5db; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.sso-btn:hover { background: #f9fafb; border-color: #9ca3af; }
.sso-icon { flex-shrink: 0; }
.local-login { border-top: 1px solid var(--line); padding-top: 14px; }
.local-login summary { cursor: pointer; font-size: 12.5px; color: #64748b; list-style: none; user-select: none; margin-bottom: 12px; }
.local-login summary::-webkit-details-marker { display: none; }
.local-login summary::before { content: '▸ '; }
.local-login[open] summary::before { content: '▾ '; }
.local-form label { display: block; font-size: 13px; font-weight: 600; margin-bottom: 12px; }
.local-form input[type=email], .local-form input[type=password] { display: block; width: 100%; padding: 8px 10px; margin-top: 4px; border: 1px solid var(--line); border-radius: 4px; font-size: 13px; box-sizing: border-box; }
.auth-foot { font-size: 11.5px; color: #94a3b8; text-align: center; }
.auth-foot a { color: #94a3b8; }
.auth-wrap { max-width: 460px; margin: 20px auto; }
.form-error { background: #fdecea; color: var(--bad); border: 1px solid #f3c5bf; padding: 8px 12px; border-radius: 4px; margin-bottom: 12px; }
.form-warn { background: #fef9c3; color: #713f12; border: 1px solid #fde68a; padding: 8px 12px; border-radius: 4px; margin-bottom: 12px; }
.version-list { list-style: none; padding: 0; margin: 6px 0 0; }
.version-list li { padding: 5px 0; border-bottom: 1px solid var(--line); font-size: 13px; }
.comment-list { list-style: none; padding: 0; margin: 8px 0 16px; }
.comment-list li { padding: 10px 0; border-bottom: 1px solid var(--line); }
.comment-head { font-size: 13px; margin-bottom: 4px; }
.comment-body { margin: 4px 0 0; white-space: pre-wrap; }
.badge.pos-support { background: #f0fdf4; color: #166534; border-color: #bbf7d0; }
.badge.pos-oppose { background: #fdecea; color: #b4232a; border-color: #f3c5bf; }
.badge.pos-neutral { background: #f1f5f9; color: #475569; border-color: #e2e8f0; }
.badge.pending-badge { background: #fef9c3; color: #713f12; border-color: #fde68a; }
.hp-field { position: absolute; left: -9999px; top: -9999px; height: 1px; width: 1px; opacity: 0; }
/* Legislative progress tracker */
.track { display: flex; list-style: none; padding: 14px 16px; margin: 0 0 14px; background: #fff;
  border: 1px solid var(--line); border-radius: 4px; overflow-x: auto; }
.track li { flex: 1; min-width: 86px; position: relative; text-align: center; }
.track li + li::before { content: ''; position: absolute; top: 9px; left: -50%; width: 100%;
  height: 3px; background: #dbe4ee; }
.track li.tk-done + li::before, .track li.tk-current + li::before { background: var(--accent); }
.tk-dot { display: block; width: 18px; height: 18px; margin: 0 auto 5px; border-radius: 50%;
  background: #dbe4ee; border: 3px solid #fff; box-shadow: 0 0 0 1px var(--line); position: relative; z-index: 1; }
.tk-done .tk-dot { background: var(--accent); }
.tk-current .tk-dot { background: #fff; border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent); }
.tk-failed .tk-dot { background: #b4232a; }
.tk-failed::before { background: #f3c5bf !important; }
.tk-label { font-size: 11.5px; font-weight: 600; color: #64748b; letter-spacing: .2px; }
.tk-done .tk-label, .tk-current .tk-label { color: var(--accent-dark); }
.tk-current .tk-label { text-decoration: underline; text-underline-offset: 3px; }
.tk-failed .tk-label { color: #b4232a; }

/* Budget v2 */
.line-locked { font-size: 13px; color: #475569; white-space: nowrap; align-self: center; }
.bar-col { min-width: 120px; }
tr.over-row td { background: #fdecea; }

/* Amendment redline */
.redline { line-height: 1.7; }
ins.df-ins { background: #dcfce7; color: #14532d; text-decoration: none; padding: 0 1px; }
del.df-del { background: #fee2e2; color: #7f1d1d; padding: 0 1px; }
.form input[type=email], .form input[type=password] { width: 100%; padding: 8px 10px; margin-top: 5px; border: 1px solid var(--line); border-radius: 3px; font-size: 13px; }
.auth-hint { margin-top: 14px; padding: 12px; background: #f3f7fc; border: 1px solid var(--line); border-radius: 4px; font-size: 12.5px; }
.auth-hint ul { margin: 6px 0 0; padding-left: 18px; }

/* Word processor */
.wp { border: 1px solid var(--line); border-radius: 4px; background: #fff; margin-top: 5px; }
.wp-label { font-size: 12.5px; font-weight: 700; color: var(--accent-dark); padding: 8px 10px 0; }
.wp-toolbar { display: flex; flex-wrap: wrap; gap: 2px; align-items: center; padding: 6px 8px; border-bottom: 1px solid var(--line); background: #f3f7fc; }
.wp-btn { background: #fff; border: 1px solid var(--line); border-radius: 3px; min-width: 30px; height: 28px; cursor: pointer; font-size: 13px; padding: 0 7px; }
.wp-btn:hover { background: #e7f0fa; }
.wp-sep { width: 1px; height: 20px; background: var(--line); margin: 0 4px; }
.wp-area { padding: 14px 16px; min-height: 12em; outline: none; font-size: 14px; line-height: 1.6; }
.wp-area:focus { box-shadow: inset 0 0 0 2px #cfe0f5; }
.wp-area h2 { font-size: 18px; margin: 12px 0 6px; }
.wp-area h3 { font-size: 15px; margin: 10px 0 5px; }
.wp-area blockquote { border-left: 3px solid var(--line); margin: 8px 0; padding-left: 12px; color: #444; }

/* Document view */
.doc-view { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 32px 40px; max-width: 820px; box-shadow: var(--shadow); }
.doc-head { border-bottom: 2px solid var(--banner); padding-bottom: 12px; margin-bottom: 16px; }
.doc-head h1 { margin: 6px 0 4px; color: var(--accent-dark); }
.doc-body { font-size: 15px; line-height: 1.7; }
.doc-body h2 { font-size: 19px; color: var(--accent-dark); margin: 18px 0 8px; }
.doc-body h3 { font-size: 16px; margin: 14px 0 6px; }
.doc-body blockquote { border-left: 3px solid var(--line); margin: 10px 0; padding-left: 14px; color: #444; }
.doc-list li:before { content: "📄 "; }

/* Live voting */
.live-banner { display: block; background: #b42318; color: #fff; padding: 10px 16px; border-radius: 4px; font-weight: 700; margin-bottom: 16px; }
.live-banner:hover { background: #931b12; color: #fff; text-decoration: none; }
.live-pill { background: #9aa7b4; color: #fff; font-weight: 800; font-size: 12px; padding: 3px 10px; border-radius: 999px; letter-spacing: .5px; }
.live-pill.on { background: #b42318; animation: livepulse 1.6s infinite; }
@keyframes livepulse { 0%,100% { opacity: 1; } 50% { opacity: .55; } }
.live-active-card { border-top: 3px solid #b42318; }
.la-title { font-size: 18px; font-weight: 700; margin-bottom: 8px; }
.la-title .ai-num { color: var(--accent-dark); margin-right: 6px; }
.la-motion { color: #444; font-size: 13.5px; margin: 0 0 12px; }
.tally { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
.tally .v { font-size: 15px; font-weight: 700; padding: 6px 14px; border-radius: 4px; background: #eef1f5; border: 1px solid var(--line); }
.tally .v.yea { background: #e7f6ee; color: var(--good); border-color: #b9e3cb; }
.tally .v.nay { background: #fdecea; color: var(--bad); border-color: #f3c5bf; }
.la-roster { border: 1px solid var(--line); border-radius: 4px; }
.la-row { display: grid; grid-template-columns: 1fr auto auto; gap: 10px; align-items: center; padding: 7px 12px; border-bottom: 1px solid var(--line-soft); }
.la-row:last-child { border-bottom: none; }
.la-row.mine { background: #fff8e6; }
.la-name em { color: var(--muted); font-style: normal; font-size: 12px; }
.la-controls { display: flex; gap: 4px; flex-wrap: wrap; }
.chip-btn { border: 1px solid var(--line); background: #fff; border-radius: 3px; padding: 3px 8px; font-size: 12px; cursor: pointer; }
.chip-btn:hover { background: #e7f0fa; }
.la-myvote { margin-top: 14px; padding: 14px; background: #fff8e6; border: 1px solid #f0d98a; border-radius: 4px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.vote-btn { background: var(--accent); }
.la-actions { margin-top: 16px; }
.outcome-bar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 8px 12px; border-radius: 4px; background: #f4f7fb; border: 1px solid var(--line); margin-bottom: 14px; font-size: 13px; }
.ob-sep { color: var(--muted); }
.ob-threshold { color: var(--muted); }
.qb-met { color: var(--good); font-weight: 600; }
.qb-fail { color: var(--bad); font-weight: 600; }
.out-pass { color: var(--good); font-size: 14px; }
.out-fail { color: var(--bad); font-size: 14px; }
.out-noquorum { color: #b07300; font-size: 14px; }
.la-motion-form { margin-bottom: 14px; font-size: 13px; }
.la-motion-form summary { cursor: pointer; color: var(--accent-dark); font-weight: 600; padding: 6px 0; }
.la-motion-fields { display: flex; flex-wrap: wrap; gap: 10px; padding: 12px; background: #f4f7fb; border: 1px solid var(--line); border-radius: 4px; margin-top: 6px; }
.la-motion-fields label { display: flex; flex-direction: column; gap: 3px; font-size: 12px; font-weight: 600; color: var(--muted); }
.la-motion-fields select, .la-motion-fields input { font-size: 13px; padding: 4px 6px; border: 1px solid var(--line); border-radius: 3px; }
.live-agenda { list-style: none; padding: 0; margin: 0; }
.live-ag-item { display: flex; gap: 10px; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--line-soft); }
.lai-title { flex: 1; }

/* Tabs (record / meeting detail) */
.tabs { margin-bottom: 18px; }
.tab-nav { display: flex; flex-wrap: wrap; gap: 2px; border-bottom: 2px solid var(--grid-head); margin-bottom: 0; }
.tab-btn { background: #e9eff6; border: 1px solid var(--line); border-bottom: none; color: var(--accent-dark);
  padding: 9px 18px; font-size: 13px; font-weight: 600; cursor: pointer; border-radius: 4px 4px 0 0; }
.tab-btn:hover { background: #dde8f3; }
.tab-btn.active { background: var(--grid-head); color: #fff; border-color: var(--grid-head); }
.tab-count { display: inline-block; background: rgba(0,0,0,.12); border-radius: 999px; padding: 0 7px; font-size: 11px; margin-left: 4px; }
.tab-btn.active .tab-count { background: rgba(255,255,255,.25); }
.tab-panel { background: var(--card); border: 1px solid var(--line); border-top: none; padding: 16px; }
.tabs.js .tab-panel { display: none; }
.tabs.js .tab-panel.active { display: block; }
.tab-h { font-size: 13px; text-transform: uppercase; letter-spacing: .4px; color: var(--accent-dark);
  margin: 16px 0 8px; border-bottom: 1px solid var(--line-soft); padding-bottom: 4px; }
.tab-h:first-child { margin-top: 0; }

/* Record header (file / meeting detail) */
dl.meta.record-header dt { width: 150px; }
dl.meta.record-header dd { font-weight: 500; }

/* Meeting items grid */
table.meeting-items td { vertical-align: top; }
table.meeting-items .section-row td { background: #e3ecf6; color: var(--accent-dark); font-weight: 700;
  text-transform: uppercase; letter-spacing: .4px; font-size: 11.5px; }
table.meeting-items tr:hover td.section-row, table.meeting-items .section-row:hover td { background: #e3ecf6; }
/* Keep the fixed-purpose columns narrow so the title gets the room. */
table.meeting-items th:nth-child(1) { width: 68px; }
table.meeting-items th:nth-child(2) { width: 84px; }
table.meeting-items th:nth-child(3) { width: 92px; }
table.meeting-items th:nth-child(5) { width: 150px; }
table.meeting-items th:nth-child(6) { width: 78px; }
table.meeting-items th:nth-child(7) { width: 72px; }
/* Item type as a quiet colored label (a pill per row reads as clutter). */
.item-type { font-size: 12px; font-weight: 600; }
.item-type.it-action { color: #1d4ed8; }
.item-type.it-discussion { color: #a16207; }
.item-type.it-information { color: #15803d; }
.vote-details summary { cursor: pointer; font-weight: 700; color: var(--accent-dark); }
.vote-details .vote-list { margin: 6px 0 0; }

/* Organization tree */
.org-tree, .org-children { list-style: none; margin: 0; padding: 0; }
.org-children { margin-left: 22px; border-left: 1px dashed var(--line); padding-left: 14px; }
.org-node { margin: 2px 0; }
.org-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 7px 8px; border-bottom: 1px solid var(--line-soft); }
.org-row:hover { background: var(--zebra); }
.org-name { font-weight: 600; }
.org-leader { font-size: 13px; color: #36507a; }
.org-admin-actions { margin-left: auto; display: flex; gap: 12px; align-items: center; }
.inline-del { display: inline; }
.link-danger { background: none; border: none; color: var(--bad); cursor: pointer; font: inherit; padding: 0; text-decoration: underline; }
.org-lvl { display: inline-block; min-width: 78px; text-align: center; padding: 1px 8px; border-radius: 3px;
  font-size: 11px; font-weight: 700; border: 1px solid; }
.org-lvl-division { background: #e8f0fb; color: var(--accent-dark); border-color: #cfe0f5; }
.org-lvl-department { background: #e7f6ee; color: var(--good); border-color: #b9e3cb; }
.org-lvl-office { background: #fef3e8; color: var(--warn); border-color: #f6d8b3; }
.org-lvl-unit { background: #eef1f5; color: var(--muted); border-color: var(--line); }

/* Approval routing / workflow tracker */
ol.wf { list-style: none; margin: 0; padding: 0; }
.wf-step { position: relative; padding: 0 0 14px 26px; border-left: 2px solid var(--line); margin-left: 7px; }
.wf-step:last-child { border-left-color: transparent; padding-bottom: 0; }
.wf-dot { position: absolute; left: -9px; top: 2px; width: 16px; height: 16px; border-radius: 50%;
  background: #fff; border: 3px solid var(--muted); }
.wf-approved > .wf-dot { border-color: var(--good); background: var(--good); }
.wf-returned > .wf-dot { border-color: var(--bad); background: var(--bad); }
.wf-pending > .wf-dot { border-color: var(--warn); }
.wf-skipped > .wf-dot { border-color: var(--line); }
.wf-name { font-weight: 600; }
.wf-notes { font-style: italic; }
.wf-badge { display: inline-block; padding: 1px 8px; border-radius: 3px; font-size: 11px; font-weight: 700; border: 1px solid; }
.wf-b-approved { background: #e7f6ee; color: var(--good); border-color: #b9e3cb; }
.wf-b-returned { background: #fdecea; color: var(--bad); border-color: #f3c5bf; }
.wf-b-pending { background: #fef3e8; color: var(--warn); border-color: #f6d8b3; }
.wf-b-skipped { background: #eef1f5; color: var(--muted); border-color: var(--line); }

/* Sortable grid headers + pagination */
table.data.sortable thead th { padding: 0; }
.sort-link { display: block; color: #fff; padding: 7px 10px; }
.sort-link:hover { background: rgba(255,255,255,.12); text-decoration: none; }
.sort-link.active { font-weight: 800; }
.pager { display: flex; align-items: center; justify-content: center; gap: 16px; margin: 14px 0 0; }
.pager-info { font-size: 13px; color: var(--muted); }
.pager-disabled { color: #aebaccc0; font-size: 13px; font-weight: 600; }

/* Topics / indexes */
.topic-cloud { display: flex; flex-wrap: wrap; gap: 8px; }
.topic-tag { display: inline-flex; align-items: center; gap: 6px; background: #e8f0fb; border: 1px solid #cfe0f5;
  border-radius: 999px; padding: 5px 12px; font-size: 13px; }
.topic-tag:hover { background: #d7e6fa; text-decoration: none; }
.topic-n { background: var(--accent); color: #fff; border-radius: 999px; font-size: 11px; padding: 0 7px; font-weight: 700; }
.topic-notice { background: #fff8e6; border: 1px solid #f0d98a; border-radius: 4px; padding: 8px 12px; margin: 0 0 12px; font-size: 13px; }
.att-list li { display: flex; gap: 10px; align-items: center; }

/* Footer — anchored to the bottom, aligned with page content */
.site-footer { border-top: 3px solid var(--gold); background: var(--banner); color: #cfe0f2;
  padding: 20px 24px; margin-top: 0; flex-shrink: 0; }
.footer-inner { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px 48px;
  flex-wrap: wrap; max-width: 1360px; }
.site-footer strong { color: #fff; }
.site-footer p { margin: 4px 0 0; font-size: 13px; color: #b9cde2; }
.footer-links { display: flex; gap: 8px 18px; align-items: center; flex-wrap: wrap; font-size: 13px; }
.site-footer a { color: #cfe0f2; }
.site-footer a:hover { color: #fff; }
.footer-legal { max-width: 1360px; margin-top: 14px; padding-top: 12px;
  border-top: 1px solid rgba(255,255,255,0.15); font-size: 12px; color: #93aecb; }
.footer-legal a { color: #b9cde2; }

@media (max-width: 900px) {
  .stat-grid, .stat-grid.small { grid-template-columns: repeat(2, 1fr); }
  .grid-2 { grid-template-columns: 1fr; }
  .form-row, .sp-grid { grid-template-columns: 1fr; }
  .banner-search input { width: 150px; }
  dl.meta { grid-template-columns: 1fr; }
  dl.meta dt { border-right: none; }
  .vote-row { grid-template-columns: 1fr; }
  .util-left { display: none; }
}

/* Branding logo in the banner */
.brand-logo { height: 38px; width: auto; display: block; }

/* SSO sign-in button + separator on the login page */
.sso-btn { display: block; text-align: center; margin-bottom: 8px; }
.sso-or { text-align: center; margin: 8px 0 14px; }

/* Inline forms (e.g. roster actions) */
form.inline { display: inline; }
.reason-inp { font-size: 12px; padding: 3px 6px; width: 150px; margin-right: 6px; }
.btn-link.danger { color: #b4232a; }
.btn-link.vote-on { color: #15803d; }
.btn-link.vote-off { color: #94a3b8; }
.check-label { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 400; margin-bottom: 8px; }
.badge.it-action { background: #dbeafe; color: #1e40af; border-color: #bfdbfe; }
.badge.it-discussion { background: #fef9c3; color: #713f12; border-color: #fde68a; }
.badge.it-information { background: #f0fdf4; color: #166534; border-color: #bbf7d0; }
.row-inactive td { opacity: .6; }
.badge.st-inactive { background: #eee; color: #666; border-color: #ddd; }
.form-ok { background: #e6f4ea; border: 1px solid #b7dfc3; color: #1d6b38;
  padding: 8px 12px; border-radius: 4px; margin-bottom: 14px; }
.section-title { margin: 22px 0 10px; font-size: 15px; color: var(--accent-dark);
  border-bottom: 1px solid var(--line); padding-bottom: 4px; }

/* Roster import */
.import-stats { margin: 6px 0 12px; padding-left: 18px; }
.import-example { background: #f4f6f9; border: 1px solid var(--line); border-radius: 4px;
  padding: 10px; font-size: 12px; overflow-x: auto; white-space: pre; }
.import-help summary { cursor: pointer; font-weight: 600; color: var(--accent-dark); margin-top: 10px; }
.import-help code { background: #eef3f9; padding: 1px 4px; border-radius: 3px; font-size: 12px; }

/* Danger-zone button (destructive admin actions) */
.btn.danger-btn { background: #b4232a; border-color: #7d1a1f; }
.btn.danger-btn:hover { background: #7d1a1f; }

/* Member-motion (Nominate -> Approve -> Seat) cards */
.motion-card { border: 1px solid var(--line); border-left: 3px solid var(--accent);
  border-radius: 4px; padding: 12px 14px; margin-bottom: 12px; background: var(--card); }
.motion-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.motion-trail { list-style: none; padding: 0; margin: 8px 0; font-size: 12px; color: #555; }
.motion-trail li { padding: 1px 0; }

/* Budget */
td.num, th.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.budget-summary { display: flex; gap: 28px; flex-wrap: wrap; margin-bottom: 10px; }
.budget-summary .bs-n { display: block; font-size: 22px; font-weight: 800; color: var(--accent-dark); }
.budget-summary .bs-l { font-size: 12px; text-transform: uppercase; letter-spacing: .5px; color: var(--muted); }
.budget-bar { height: 8px; background: #eef1f5; border-radius: 5px; overflow: hidden; }
.budget-bar span { display: block; height: 100%; background: var(--accent); }
.budget-bar span.over { background: #b4232a; }
.cat-row th { background: #eef3f9; color: var(--accent-dark); text-align: left;
  font-size: 12.5px; text-transform: uppercase; letter-spacing: .4px; padding: 7px 10px; }
.policy-table .pol-no { white-space: nowrap; color: var(--muted); font-variant-numeric: tabular-nums; }
.budget-table .subtotal td, .data tr.subtotal td { font-weight: 600; background: #fafbfd; }
/* Over-committed appropriation (negative available balance). */
.num.over, dd.over { color: #b4232a; }
.budget-table .grand td { font-weight: 800; color: var(--accent-dark); border-top: 2px solid var(--accent-dark); }
.line-edit { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; padding: 6px 0;
  border-bottom: 1px solid var(--line); }
.line-edit input[type=text] { min-width: 120px; }
.line-edit input[type=number] { width: 120px; }

/* Live voting scoreboard */
.vote-board { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 0 0 16px; }
.vb-col { text-align: center; padding: 16px 10px; border-radius: 6px; border: 1px solid var(--line); background: #f4f7fb; }
.vb-yea { background: #e7f6ee; border-color: #b9e3cb; }
.vb-nay { background: #fdecea; border-color: #f3c5bf; }
.vb-n { display: block; font-size: 3rem; font-weight: 800; line-height: 1; color: var(--ink); }
.vb-yea .vb-n { color: var(--good); }
.vb-nay .vb-n { color: var(--bad); }
.vb-l { display: block; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em;
  margin-top: 4px; color: var(--muted); }
.chip-btn.active { background: var(--accent); color: #fff; border-color: var(--accent-dark); }
.vt-pending { color: var(--muted); }
@media (max-width: 600px) { .vote-board { grid-template-columns: repeat(2, 1fr); } }

/* Live voting — smooth in-place updates */
.la-active-fade { animation: la-fadein .28s ease; }
@keyframes la-fadein { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: none; } }
.vb-col { transition: background .3s ease, border-color .3s ease; }
.vb-n { transition: color .2s ease; will-change: transform; }
.vb-n.bump { animation: vb-bump .5s cubic-bezier(.2, .7, .3, 1.5); }
@keyframes vb-bump { 0% { transform: scale(1); } 32% { transform: scale(1.3); } 100% { transform: scale(1); } }
.la-row { transition: background .35s ease; }
.la-row .vt { transition: color .2s ease; }
.la-row.flash { animation: la-flash 1.1s ease; }
@keyframes la-flash { 0% { background: #fff4c2; } 100% { background: transparent; } }
.la-row.mine.flash { animation: la-flash-mine 1.1s ease; }
@keyframes la-flash-mine { 0% { background: #ffe6a0; } 100% { background: #fff8e6; } }
.vt-pending { color: var(--muted); }
.chip-btn { transition: background .12s ease, color .12s ease, border-color .12s ease; }
.chip-btn.active { animation: chip-pop .25s ease; }
@keyframes chip-pop { 0% { transform: scale(.9); } 60% { transform: scale(1.08); } 100% { transform: scale(1); } }
.vote-btn { transition: transform .08s ease, background .12s ease; }
.vote-btn:hover { background: var(--accent-dark); }
.vote-btn:active { transform: translateY(1px); }
.outcome-bar { transition: background .3s ease; }
.out-pass { transition: color .2s ease; }
@media (prefers-reduced-motion: reduce) {
  .la-active-fade, .vb-n.bump, .la-row.flash, .la-row.mine.flash, .chip-btn.active { animation: none; }
}

/* Session banner (dashboard) */
.session-banner { background: #1a7f4b; color: #fff; padding: 10px 18px; display: flex; align-items: center;
  gap: 14px; flex-wrap: wrap; }
.session-live { font-weight: 800; font-size: 13px; letter-spacing: .05em; animation: pulse 1.5s infinite; }
.session-link { color: #fff; font-size: 15px; font-weight: 600; flex: 1; }
.session-link:hover { color: #d4f5e3; }
.session-btn { background: rgba(255,255,255,.15); border-color: rgba(255,255,255,.3); color: #fff;
  font-size: 13px; padding: 5px 14px; }
.session-btn:hover { background: rgba(255,255,255,.25); }
@keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: .5; } }

/* Next-meeting strip (dashboard) */
.next-meeting-strip { background: var(--card); border-bottom: 1px solid var(--line); padding: 10px 18px;
  display: flex; align-items: center; gap: 16px; flex-wrap: wrap; font-size: 13px; }
.nm-label { font-weight: 700; font-size: 11px; text-transform: uppercase; letter-spacing: .05em;
  color: var(--muted); white-space: nowrap; }
.nm-body { font-weight: 600; }
.nm-when { color: var(--muted); flex: 1; }

