/* Kingaroy Containers — design system "Red Soil"
   A parts-catalogue layout: tight modular grid, ruled panels, tabular data early,
   monospaced figures, almost no decoration and no rounded corners.

   CONTRAST NOTE — read this before changing a single colour.
   Every text/background pair used below is listed with its measured ratio. All
   text pairs clear 4.5:1 (WCAG AA), and every one of them clears 6:1. If you add
   a pair, measure it first and add it to this table.

   The CRM brand colour for KIN is #74243D, a deep burgundy. Unlike the paler
   brand colours elsewhere in the group it is dark enough to carry text safely
   (10.18:1 on white), so it is used for links, headings and solid fills. The
   only colour restricted to non-text use is --wheat.

     --brand        #74243D  10.18:1 on --paper   9.45:1 on --shell   8.37:1 on --straw
                             White on it: 10.18:1. Links, headings, solid buttons.
     --brand-deep   #4E1829  14.13:1 on --paper  13.10:1 on --shell
                             White on it: 14.13:1. Dark bands, link hover, footer.
     --soil         #8A3413   8.14:1 on --paper   7.55:1 on --shell   6.69:1 on --straw
                             White on it: 8.14:1. The CTA / phone colour, both ways.
     --soil-deep    #6B280E  10.85:1 on --paper. CTA hover.
     --ink          #211A15  17.17:1 on --paper  15.93:1 on --shell  14.11:1 on --straw
                             Headings and dark bands. White on it: 17.17:1.
     --body         #3D332B  12.30:1 on --paper  11.41:1 on --shell  10.11:1 on --straw
                             Body copy.
     --muted        #5D5045   7.78:1 on --paper   7.22:1 on --shell   6.39:1 on --straw
                             Fine print. Deliberately this dark so small text still passes.
     --wheat        #E3C98F   1.61:1 on --paper  → NEVER text on a light background.
                             10.64:1 with --ink on it and 8.76:1 with --brand-deep on it,
                             so it is safe as a background carrying dark text, and it is
                             safe as a marker/heading ON dark: 6.31:1 over --brand,
                             8.76:1 over --brand-deep, 10.64:1 over --ink.
     --straw        #F2E8D3   background band only (14.11:1 with --ink on it).
     --shell        #FAF6EE   background band only (15.93:1 with --ink on it).
     --line         #DDD1B8   1.51:1 → rules and borders only, never text.
     --line-dark    #B6A688   2.39:1 → heavier rules and borders only, never text.
*/

:root {
  --brand: #74243d;
  --brand-deep: #4e1829;
  --soil: #8a3413;
  --soil-deep: #6b280e;
  --ink: #211a15;
  --body: #3d332b;
  --muted: #5d5045;
  --wheat: #e3c98f;
  --straw: #f2e8d3;
  --shell: #faf6ee;
  --paper: #ffffff;
  --line: #ddd1b8;
  --line-dark: #b6a688;
  --w: 1220px;
  --gut: 20px;
  --head: "Archivo", "Helvetica Neue", Arial, sans-serif;
  --sans: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--sans);
  color: var(--body);
  background: var(--paper);
  line-height: 1.62;
  font-size: 16.5px;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; height: auto }
a { color: var(--brand); text-decoration: underline; text-underline-offset: 2px; text-decoration-thickness: 1px; }
a:hover { color: var(--brand-deep); }
h1, h2, h3, h4 {
  font-family: var(--head);
  color: var(--ink);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.015em;
}
h1 { font-size: clamp(1.9rem, 4vw, 2.8rem); }
h2 { font-size: clamp(1.35rem, 2.4vw, 1.8rem); margin-bottom: 0.55em; }
h3 { font-size: 1.08rem; letter-spacing: 0; }
h4 { font-size: 0.78rem; letter-spacing: 0.14em; text-transform: uppercase; }
p { margin-bottom: 1em; }
p:last-child { margin-bottom: 0; }
ul, ol { margin: 0 0 1em 1.15em; }
li { margin-bottom: 0.4em; }
strong { color: var(--ink); font-weight: 600; }

.wrap { max-width: var(--w); margin: 0 auto; padding: 0 var(--gut); }
.narrow { max-width: 820px; }
.mono { font-family: var(--mono); font-variant-numeric: tabular-nums; }
.fine { font-size: 0.82rem; color: var(--muted); }
.skip { position: absolute; left: -9999px; }
.skip:focus { position: static; display: inline-block; padding: 8px 14px; background: var(--ink); color: #fff; }

/* ---------- masthead: one compact rule-bounded row ---------- */
.mast { border-bottom: 1px solid var(--line); background: var(--paper); }
.mast-in {
  max-width: var(--w); margin: 0 auto; padding: 12px var(--gut);
  display: flex; align-items: center; gap: 20px;
}
.brand { display: block; line-height: 0; text-decoration: none; }
.brand svg { height: 44px; width: auto; }
.mast-sp { flex: 1; }
.mast-tag {
  font-size: 0.74rem; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--muted); border-left: 2px solid var(--line-dark); padding-left: 14px;
}
.mast-phone {
  font-family: var(--mono); font-weight: 600; font-size: 1.16rem;
  color: var(--soil); text-decoration: none; display: block; line-height: 1.2;
}
.mast-phone small {
  display: block; font-family: var(--sans); font-weight: 400;
  font-size: 0.68rem; letter-spacing: 0.07em; text-transform: uppercase; color: var(--muted);
}
.burger {
  display: none; width: 42px; height: 38px; border: 1px solid var(--line-dark);
  background: var(--paper); cursor: pointer; padding: 9px 10px;
}
.burger span { display: block; height: 2px; background: var(--ink); margin-bottom: 5px; }
.burger span:last-child { margin-bottom: 0; }

/* ---------- catalogue index bar: the navigation, as an index strip ---------- */
.index-bar { background: var(--ink); border-bottom: 3px solid var(--brand); }
.index-bar .wrap { display: flex; align-items: stretch; }
.index-bar .idx-label {
  font-family: var(--head); font-size: 0.7rem; font-weight: 700; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--wheat); display: flex; align-items: center;
  padding-right: 18px; margin-right: 4px; border-right: 1px solid #4a3d33; white-space: nowrap;
}
.index-bar ul { display: flex; list-style: none; margin: 0; flex: 1; flex-wrap: wrap; }
.index-bar li { margin: 0; }
.index-bar a {
  display: block; padding: 12px 15px; color: #fff; text-decoration: none;
  font-size: 0.83rem; font-weight: 500; letter-spacing: 0.02em;
}
.index-bar a:hover { background: var(--brand); color: #fff; }

/* ---------- buttons: square, ruled, no gradients ---------- */
.btn {
  display: inline-block; padding: 12px 22px; font-family: var(--head); font-weight: 700;
  font-size: 0.86rem; letter-spacing: 0.05em; text-transform: uppercase;
  text-decoration: none; border: 1px solid transparent; cursor: pointer; text-align: center;
}
.btn-primary { background: var(--soil); color: #fff; border-color: var(--soil); }
.btn-primary:hover { background: var(--soil-deep); border-color: var(--soil-deep); color: #fff; }
.btn-brand { background: var(--brand); color: #fff; border-color: var(--brand); }
.btn-brand:hover { background: var(--brand-deep); border-color: var(--brand-deep); color: #fff; }
.btn-line { background: transparent; color: var(--brand); border-color: var(--line-dark); }
.btn-line:hover { background: var(--straw); color: var(--brand-deep); border-color: var(--brand); }
.btn-pale { background: var(--wheat); color: var(--ink); border-color: var(--wheat); }
.btn-pale:hover { background: #fff; color: var(--brand-deep); border-color: #fff; }
.acts { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 22px; }

/* ---------- page head strip ---------- */
.crumb {
  font-size: 0.78rem; color: var(--muted); padding: 10px var(--gut);
  max-width: var(--w); margin: 0 auto; border-bottom: 1px solid var(--line);
}
.crumb a { color: var(--muted); }
.crumb strong { color: var(--ink); font-weight: 600; }
.kicker {
  display: block; font-family: var(--mono); font-size: 0.74rem; font-weight: 600;
  letter-spacing: 0.16em; text-transform: uppercase; color: var(--brand); margin-bottom: 12px;
}
.phead { background: var(--shell); border-bottom: 1px solid var(--line); padding: 34px 0 30px; }
.phead p.big { max-width: 760px; font-size: 1.06rem; margin-top: 14px; }

/* ---------- hero: headline left, live order board right ---------- */
.board { background: var(--shell); border-bottom: 1px solid var(--line); padding: 40px 0 44px; }
.board-in { display: grid; grid-template-columns: 1.05fr 0.95fr; gap: 40px; align-items: start; }
.board h1 { margin-bottom: 16px; }
.board .lede { font-size: 1.08rem; max-width: 620px; }
.sheet { border: 2px solid var(--ink); background: var(--paper); }
.sheet-h {
  background: var(--ink); color: #fff; padding: 10px 16px;
  font-family: var(--head); font-size: 0.76rem; font-weight: 700;
  letter-spacing: 0.16em; text-transform: uppercase;
  display: flex; justify-content: space-between; gap: 12px;
}
.sheet-h span:last-child { color: var(--wheat); }
.sheet table { width: 100%; border-collapse: collapse; }
.sheet th, .sheet td { padding: 9px 16px; border-bottom: 1px solid var(--line); text-align: left; font-size: 0.9rem; }
.sheet thead th {
  background: var(--straw); font-family: var(--head); font-size: 0.7rem; font-weight: 700;
  letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink);
}
.sheet td.n { font-family: var(--mono); font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
.sheet tbody tr:last-child td { border-bottom: 1px solid var(--line); }
.sheet-f { padding: 12px 16px; font-size: 0.78rem; color: var(--muted); }

/* ---------- ruled fact strip ---------- */
.strip { background: var(--paper); border-bottom: 1px solid var(--line); }
.strip dl { display: grid; grid-template-columns: repeat(4, 1fr); margin: 0; }
.strip div { padding: 16px 20px; border-left: 1px solid var(--line); }
.strip div:first-child { border-left: 0; padding-left: 0; }
.strip dt {
  font-family: var(--head); font-size: 0.68rem; font-weight: 700; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--brand); margin-bottom: 5px;
}
.strip dd { margin: 0; font-size: 0.9rem; color: var(--body); }

/* ---------- sections ---------- */
.sec { padding: 46px 0; }
.sec-shell { background: var(--shell); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.sec-straw { background: var(--straw); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.sec-head { border-bottom: 2px solid var(--ink); padding-bottom: 12px; margin-bottom: 26px; }
.sec-head h2 { margin-bottom: 0; }
.sec-head p { margin-top: 8px; margin-bottom: 0; color: var(--muted); font-size: 0.92rem; }

/* ---------- the specification matrix ---------- */
.matrix-wrap { overflow-x: auto; border: 1px solid var(--line-dark); }
table.matrix { width: 100%; border-collapse: collapse; font-size: 0.88rem; background: var(--paper); min-width: 640px; }
table.matrix caption {
  caption-side: top; text-align: left; padding: 11px 14px; background: var(--ink); color: #fff;
  font-family: var(--head); font-size: 0.72rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
}
table.matrix th, table.matrix td { padding: 10px 14px; border-bottom: 1px solid var(--line); border-right: 1px solid var(--line); text-align: left; vertical-align: top; }
table.matrix th:last-child, table.matrix td:last-child { border-right: 0; }
table.matrix thead th {
  background: var(--straw); font-family: var(--head); font-size: 0.7rem; font-weight: 700;
  letter-spacing: 0.09em; text-transform: uppercase; color: var(--ink); white-space: nowrap;
}
table.matrix tbody tr:nth-child(even) { background: var(--shell); }
table.matrix td.n { font-family: var(--mono); font-variant-numeric: tabular-nums; white-space: nowrap; }
table.matrix tbody th { font-family: var(--head); font-weight: 700; color: var(--ink); white-space: nowrap; }

/* ---------- compact spec cards on a tight modular grid ---------- */
.grid { display: grid; gap: 0; border-top: 1px solid var(--line-dark); border-left: 1px solid var(--line-dark); }
.grid-3 { grid-template-columns: repeat(3, 1fr); }
.grid-4 { grid-template-columns: repeat(4, 1fr); }
.grid-2 { grid-template-columns: repeat(2, 1fr); }
.cell {
  border-right: 1px solid var(--line-dark); border-bottom: 1px solid var(--line-dark);
  padding: 20px; background: var(--paper);
}
.cell h3 { margin-bottom: 8px; }
.cell p { font-size: 0.9rem; margin-bottom: 12px; }
.cell .code {
  font-family: var(--mono); font-size: 0.7rem; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--muted); display: block; margin-bottom: 8px;
}
dl.kv { margin: 0 0 14px; font-size: 0.84rem; border-top: 1px solid var(--line); }
dl.kv > div { display: flex; justify-content: space-between; gap: 10px; padding: 5px 0; border-bottom: 1px solid var(--line); }
dl.kv dt { color: var(--muted); }
dl.kv dd { margin: 0; font-family: var(--mono); font-variant-numeric: tabular-nums; color: var(--ink); text-align: right; }
.cell .btn { width: 100%; padding: 9px 12px; font-size: 0.76rem; }

/* ---------- bullet list with square markers ---------- */
ul.checks { list-style: none; margin: 0 0 1em; }
ul.checks li { position: relative; padding-left: 22px; margin-bottom: 9px; }
ul.checks li::before {
  content: ""; position: absolute; left: 0; top: 0.55em; width: 9px; height: 9px;
  background: var(--brand);
}

/* ---------- numbered ruled FAQ list ---------- */
ol.faqs { list-style: none; margin: 0; counter-reset: fq; border-top: 2px solid var(--ink); }
ol.faqs li { counter-increment: fq; margin: 0; padding: 18px 0 18px 52px; border-bottom: 1px solid var(--line); position: relative; }
ol.faqs li::before {
  content: counter(fq, decimal-leading-zero); position: absolute; left: 0; top: 18px;
  font-family: var(--mono); font-size: 0.82rem; font-weight: 600; color: var(--brand);
  border: 1px solid var(--line-dark); padding: 2px 7px;
}
ol.faqs h3 { margin-bottom: 7px; }
ol.faqs p { font-size: 0.94rem; margin-bottom: 0; }

/* ---------- docket: the locality data block ---------- */
.docket { border: 2px solid var(--ink); background: var(--paper); margin-top: 24px; }
.docket-h {
  background: var(--brand); color: #fff; padding: 9px 16px; font-family: var(--head);
  font-size: 0.72rem; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase;
}
.docket dl { display: grid; grid-template-columns: repeat(4, 1fr); margin: 0; }
.docket dl > div { padding: 14px 16px; border-right: 1px solid var(--line); }
.docket dl > div:last-child { border-right: 0; }
.docket dt {
  font-family: var(--head); font-size: 0.66rem; font-weight: 700; letter-spacing: 0.13em;
  text-transform: uppercase; color: var(--muted); margin-bottom: 5px;
}
.docket dd { margin: 0; font-size: 0.88rem; color: var(--ink); }

/* ---------- index of towns, as a ruled column list ---------- */
.townlist { columns: 4; column-gap: 24px; list-style: none; margin: 0; }
.townlist li { break-inside: avoid; margin: 0; border-bottom: 1px solid var(--line); }
.townlist a { display: block; padding: 8px 2px; text-decoration: none; font-size: 0.9rem; }
.townlist a:hover { background: var(--straw); }

/* ---------- quote band ---------- */
.band { background: var(--brand-deep); color: #fff; padding: 46px 0; }
.band-in { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: start; }
.band h2 { color: #fff; }
.band .kicker { color: var(--wheat); }
.band p { color: #f3ebe0; }
.band .band-phone {
  display: inline-block; margin-top: 18px; font-family: var(--mono); font-weight: 600;
  font-size: 1.3rem; color: var(--wheat); text-decoration: none;
}
.band .band-phone:hover { color: #fff; }
.qcard { background: var(--paper); border: 2px solid var(--ink); padding: 20px; }
.qcard h3 { margin-bottom: 4px; }
.qcard > p.fine { margin-bottom: 14px; }
.qtoggle { display: flex; border: 1px solid var(--line-dark); margin-bottom: 16px; }
.qtoggle input { position: absolute; opacity: 0; pointer-events: none; }
.qtoggle label {
  flex: 1; text-align: center; padding: 9px; cursor: pointer; font-family: var(--head);
  font-size: 0.78rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted);
}
.qtoggle input:checked + label { background: var(--brand); color: #fff; }
.qtoggle input:focus-visible + label { outline: 2px solid var(--soil); outline-offset: -2px; }
.qrow { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.qcard label:not(.qtoggle label) { display: block; font-size: 0.76rem; font-weight: 600; color: var(--muted); margin-bottom: 4px; letter-spacing: 0.03em; }
.qcard input, .qcard select, .qcard textarea {
  width: 100%; padding: 9px 11px; border: 1px solid var(--line-dark); background: var(--paper);
  font-family: var(--sans); font-size: 0.92rem; color: var(--ink); margin-bottom: 12px;
}
.qcard textarea { resize: vertical; }
.qcard input:focus, .qcard select:focus, .qcard textarea:focus { outline: 2px solid var(--brand); outline-offset: -2px; }
.q-ok { background: var(--paper); border: 2px solid var(--brand); padding: 22px; color: var(--body); }
.q-bad { background: #fdf0ec; border: 1px solid var(--soil); color: var(--soil-deep); padding: 11px 13px; margin-bottom: 14px; font-size: 0.9rem; }

/* ---------- access checker ---------- */
.checker { border: 2px solid var(--ink); background: var(--paper); padding: 20px; }
.checker .step { display: none; }
.checker .step.on { display: block; }
.opt {
  display: block; width: 100%; text-align: left; padding: 11px 14px; margin-bottom: 8px;
  border: 1px solid var(--line-dark); background: var(--shell); cursor: pointer;
  font-family: var(--sans); font-size: 0.92rem; color: var(--body);
}
.opt:hover { border-color: var(--brand); background: var(--straw); color: var(--ink); }
.verdict { background: var(--straw); border-left: 4px solid var(--brand); padding: 14px; margin-bottom: 14px; font-size: 0.92rem; }

/* ---------- prose (blog) ---------- */
.prose { max-width: 780px; }
.prose h2 { margin-top: 34px; border-top: 1px solid var(--line); padding-top: 20px; }
.prose h2:first-of-type { margin-top: 26px; }
.prose .intro { font-size: 1.08rem; color: var(--ink); border-left: 4px solid var(--brand); padding-left: 18px; margin-bottom: 8px; }
.prose table.matrix { margin: 20px 0; min-width: 0; }

/* ---------- post index ---------- */
.posts { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0; border-top: 1px solid var(--line-dark); border-left: 1px solid var(--line-dark); }
.post { border-right: 1px solid var(--line-dark); border-bottom: 1px solid var(--line-dark); padding: 20px; }
.post time { font-family: var(--mono); font-size: 0.72rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted); }
.post h3 { margin: 6px 0 8px; }
.post h3 a { text-decoration: none; }
.post h3 a:hover { text-decoration: underline; }
.post p { font-size: 0.9rem; margin-bottom: 0; }

/* ---------- footer ---------- */
.foot { background: var(--ink); color: #ddd2c6; padding: 44px 0 0; }
.foot a { color: #ddd2c6; text-decoration: none; }
.foot a:hover { color: var(--wheat); text-decoration: underline; }
.foot h4 { color: var(--wheat); margin-bottom: 12px; }
.foot-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1.3fr; gap: 30px; }
.foot ul { list-style: none; margin: 0; font-size: 0.9rem; }
.foot li { margin-bottom: 7px; }
.foot-phone { display: inline-block; font-family: var(--mono); font-weight: 600; font-size: 1.24rem; color: var(--wheat) !important; margin: 14px 0 8px; }
.foot-note { font-size: 0.88rem; margin-top: 12px; }
.foot-base { border-top: 1px solid #4a3d33; margin-top: 38px; padding: 16px 0; font-size: 0.8rem; }
.foot-base .wrap { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; }

/* ---------- sticky action bar (mobile) ---------- */
.actionbar { display: none; position: fixed; left: 0; right: 0; bottom: 0; z-index: 50; border-top: 2px solid var(--ink); }
.actionbar a { flex: 1; padding: 14px 8px; font-size: 0.8rem; }

/* ---------- responsive ---------- */
@media (max-width: 1020px) {
  .board-in, .band-in { grid-template-columns: 1fr; gap: 28px; }
  .grid-4 { grid-template-columns: repeat(2, 1fr); }
  .townlist { columns: 3; }
}
@media (max-width: 860px) {
  .burger { display: block; }
  .mast-tag { display: none; }
  .index-bar .wrap { display: block; padding: 0; }
  .index-bar .idx-label { display: none; }
  .index-bar ul { display: none; flex-direction: column; }
  .index-bar ul.show { display: flex; }
  .index-bar a { padding: 13px var(--gut); border-bottom: 1px solid #4a3d33; }
  .grid-3, .grid-4, .grid-2, .posts { grid-template-columns: 1fr; }
  .strip dl, .docket dl { grid-template-columns: repeat(2, 1fr); }
  .strip div { border-left: 0; border-top: 1px solid var(--line); padding-left: 0; }
  .strip div:nth-child(1), .strip div:nth-child(2) { border-top: 0; }
  .docket dl > div { border-right: 0; border-bottom: 1px solid var(--line); }
  .townlist { columns: 2; }
  .qrow { grid-template-columns: 1fr; }
  .actionbar { display: flex; }
  body { padding-bottom: 56px; }
  .sec { padding: 34px 0; }
}
@media (max-width: 520px) {
  .townlist { columns: 1; }
  .mast-phone { font-size: 1rem; }
  .brand svg { height: 38px; }
}
@media print {
  .index-bar, .band, .actionbar, .checker { display: none; }
  body { font-size: 11pt; }
}
