
/* These pages are documents, so they are set as one: a sheet of paper on a
   desk. The sheet is <body> itself, which already had the width and centring -
   only the background moves up to <html> - so nothing in the templates had to
   grow a wrapper element for it.
   min-height keeps a two-line protocol looking like a short page rather than a
   floating strip, and the sheet drops its margins, shadow and rounding on a
   phone, where a page inset on both sides is just wasted width. */
html { background: #e8eaed; }
body { font-family: system-ui, sans-serif; max-width: 900px; margin: 2.5rem auto; padding: 2.5rem 3rem 4rem; line-height: 1.6; background: #fff; color: #202124; box-shadow: 0 1px 3px rgba(0,0,0,.12), 0 8px 24px rgba(0,0,0,.08); border-radius: 2px; min-height: calc(100vh - 5rem); box-sizing: border-box; }
@media (max-width: 700px) {
  body { margin: 0; padding: 1.2rem 1rem 2.5rem; box-shadow: none; border-radius: 0; min-height: 100vh; }
}
nav { margin-bottom: 1.5rem; }
nav a { color: #1a0dab; }
/* The city banner, identical on a city's index and on every protocol inside
   it. The emblem is a fixed 56px box with object-fit: contain, because these
   come from two sources with nothing in common - a tall Commons SVG shield
   next to a wide logo lifted from a council's own site - and letting them set
   their own height makes the header jump between pages. */
.city-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.5rem; padding-bottom: 0.8rem; border-bottom: 1px solid #e3e3e3; }
.city-head nav { margin: 0; }
.city-id { display: flex; align-items: center; gap: 0.7rem; min-width: 0; }
.city-emblem { width: 56px; height: 56px; object-fit: contain; flex: none; }
.city-head-name { font-size: 1.3rem; font-weight: 700; margin: 0; color: inherit; text-decoration: none; overflow-wrap: break-word; }
a.city-head-name:hover { text-decoration: underline; }
/* Two real columns rather than a floated <dt>. The float version set its gap
   with margin-inline-start, which in RTL is the *right* edge - the outer side
   of the float - so no space ever landed between label and value and they ran
   together as "עירגלבוע". Grid also keeps values aligned when one wraps. */
.meta { display: grid; grid-template-columns: max-content 1fr; column-gap: 0.5em; row-gap: 0.3em; margin: 0; }
.meta dt { font-weight: bold; }
.meta dd { margin: 0; min-width: 0; overflow-wrap: break-word; }
/* The "only if the source is gone" note beside the mirror link: present, but
   never competing with the municipality's own link above it. */
.meta .muted { color: #5f6368; font-size: .9em; }
.protocol-text { overflow-wrap: break-word; border-top: 1px solid #ccc; padding-top: 1rem; margin-top: 1rem; font-family: inherit; }
.protocol-text p { margin: 0 0 0.15em; }
.protocol-text .pt-gap { height: 0.7em; margin: 0; }
.protocol-text h2 { font-size: 1.15rem; margin: 1.2em 0 0.4em; }
.protocol-text h3 { font-size: 1.05rem; margin: 1.1em 0 0.35em; padding-bottom: 0.15em; border-bottom: 1px solid #e3e3e3; }
.protocol-text .pt-decision { font-weight: 600; border-inline-start: 3px solid #1a73e8; padding-inline-start: 0.6em; margin: 0.5em 0; }
.protocol-text .pt-item { padding-inline-start: 1.1em; }
/* The agenda marker, kept as one LTR unit so "2." never renders as ".2".
   Weight is inherited so the marker matches whatever it introduces - these
   appear both in plain agenda lines and inside bold section headings. */
.protocol-text .pt-num { unicode-bidi: isolate; }
/* A speaker turn. The name carries the emphasis on its own - a rule or a tint
   here would draw a box around most of a discussion protocol. */
.protocol-text .pt-turn { margin-top: 0.5em; }
.protocol-text .pt-turn strong { font-weight: 700; }
.pt-raw { margin-top: 1.5rem; font-size: 0.95rem; }
.pt-raw summary { cursor: pointer; color: #5f6368; }
.pt-siblings { font-size: 0.9rem; color: #5f6368; }
.pt-warning { font-size: 0.9rem; background: #fef7e0; border: 1px solid #f0d78c; border-radius: 8px; padding: 0.6em 0.9em; }
.protocol-list li, .city-list li { margin-bottom: 0.4em; }
.city-row { display: flex; align-items: center; gap: 0.6rem; }
.city-emblem-sm { width: 28px; height: 28px; object-fit: contain; flex: none; }
.city-count { color: #5f6368; font-size: 0.9rem; }
.protocol-list a, .city-list a, .pdf-link { color: #1a0dab; }
.pdf-link { display: inline-block; margin: 0.5em 0; }
.city-filters { display: flex; gap: 0.6rem; flex-wrap: wrap; margin-bottom: 1rem; }
.city-filters select { border: 1px solid #dfe1e5; border-radius: 16px; padding: 0.5rem 0.9rem; min-height: 40px; font-size: 0.85rem; color: #3c4043; background: #f8f9fa; font-family: inherit; }

@media (prefers-color-scheme: dark) {
  html { background: #131416; }
  body { background: #202124; color: #e8eaed; box-shadow: none; }
  nav a, .protocol-list a, .city-list a, .pdf-link { color: #8ab4f8; }
  .protocol-text { border-top-color: #5f6368; }
  .pt-siblings, .meta .muted, .pt-raw summary { color: #9aa0a6; }
  .city-head { border-bottom-color: #5f6368; }
  .city-count { color: #9aa0a6; }
  .pt-warning { background: #3a3320; border-color: #6b5b2a; }
  .city-filters select { background: #303134; border-color: #5f6368; color: #e8eaed; }
}
.build-time { margin-top: 3rem; font-size: 0.7rem; color: #9aa0a6; }
