/* Hallmark · macrostructure: Workbench · tone: austere editorial · anchor hue: 85
 * theme: Almanac-inspired local font adaptation · nav: N3 · footer: Ft2
 * audience: Propertit-käyttäjä ja ylläpitäjä · use: hankintaliidien seuranta
 * bold element: seuraavan jättöajan vuorokausiluku; kaikki muu hiljaista.
 */
* { box-sizing: border-box; }
html, body { overflow-x: clip; }
body { margin: 0; background: var(--color-paper); color: var(--color-ink); font: var(--text-base)/1.55 var(--font-body); }
button, input, select, textarea { font: inherit; color: var(--color-ink); }
h1, h2, h3 { line-height: 1.25; font-style: normal; overflow-wrap: anywhere; min-width: 0; margin: 0 0 var(--space-md); }
h1 { font: 700 var(--text-heading)/1.25 var(--font-display); }
h2 { font-size: var(--text-lg); }
h3 { font-size: var(--text-base); }
p { margin: 0 0 var(--space-md); overflow-wrap: anywhere; }
a { color: var(--color-accent); }
label { display: block; margin-bottom: var(--space-xs); font-weight: 650; }
button, input, select, textarea, .button-link, summary { min-height: 44px; max-width: 100%; }
button, .button-link { display: inline-flex; align-items: center; justify-content: center; padding: var(--space-xs) var(--space-md); border: 1px solid var(--color-control); border-radius: var(--radius-control); white-space: nowrap; text-decoration: none; background: var(--color-paper); color: var(--color-accent); cursor: pointer; }
button { font-weight: 650; }
button.primary { background: var(--color-accent); border-color: var(--color-accent); color: var(--color-accent-ink); }
input, select, textarea { width: 100%; min-width: 0; padding: var(--space-xs); border: 1px solid var(--color-control); border-radius: var(--radius-control); background: var(--color-paper); }
textarea { resize: vertical; }
:focus-visible { outline: 3px solid var(--color-focus); outline-offset: 3px; }
@media (hover: hover) {
  button:hover, .button-link:hover, nav a:hover, input:hover, select:hover, textarea:hover { background: var(--color-paper-2); color: var(--color-ink); }
  button.primary:hover { background: var(--color-ink); border-color: var(--color-ink); color: var(--color-paper); }
}
button:active, .button-link:active { background: var(--color-paper-2); color: var(--color-ink); }
button:disabled { opacity: .55; cursor: not-allowed; }
[aria-invalid="true"] { border-color: var(--color-error); }
[hidden] { display: none !important; }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.skip { position: absolute; inset-inline-start: -100rem; padding: var(--space-md); }
.skip:focus { position: relative; inset-inline-start: 0; display: block; background: var(--color-paper); }

/* Sivupalkki */
.sidebar { padding: var(--space-lg) var(--space-md); background: var(--color-paper-2); color: var(--color-ink); }
.brand { font: 700 1.5rem/1.3 var(--font-display); }
.brand a { color: inherit; text-decoration: none; }
.tenant-form { display: grid; gap: var(--space-xs); }
.tenant-form label { margin: 0; }
.tenant-name { font-weight: 650; }
nav { display: flex; flex-wrap: wrap; gap: var(--space-xs); margin-top: var(--space-lg); }
nav a { display: inline-flex; align-items: center; padding: var(--space-xs); min-height: 44px; white-space: nowrap; text-decoration: none; }
nav a[aria-current] { text-decoration: underline; text-underline-offset: .4rem; font-weight: 750; }
.logout { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-xs) var(--space-md); margin-top: var(--space-md); }
.who { margin: 0; color: var(--color-muted); font-size: var(--text-sm); overflow-wrap: anywhere; }

main { padding: var(--space-lg) var(--space-md); min-width: 0; }
.page-heading { margin-bottom: var(--space-lg); }
.context, .muted, .help { color: var(--color-muted); }
.context, .help { font-size: var(--text-sm); }
section { margin-block: var(--space-xl); }
.section-heading { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-md); justify-content: space-between; margin-bottom: var(--space-md); }
.section-heading h2 { margin: 0; }
.back { font-size: var(--text-sm); }

/* Ainoa korostus: seuraavan jättöajan vuorokaudet */
.countdown { margin-block: var(--space-lg) var(--space-xl); padding-block: var(--space-md) var(--space-lg); border-block: 2px solid var(--color-ink); }
.countdown-label { margin: 0; font: 650 var(--text-sm)/1.4 var(--font-body); color: var(--color-muted); }
.countdown-figure { margin: var(--space-xs) 0 0; line-height: 1; color: var(--color-accent); }
.countdown-number { font: 700 clamp(4.5rem, 18vw, 8rem)/1 var(--font-display); font-variant-numeric: lining-nums tabular-nums; letter-spacing: -.02em; }
.countdown-unit { font: 650 var(--text-lg)/1 var(--font-body); color: var(--color-ink); }
.countdown-target { margin: var(--space-md) 0 var(--space-xs); font-size: var(--text-lg); font-weight: 650; line-height: 1.35; }
.countdown-target a { color: var(--color-ink); text-underline-offset: .2em; }

/* Välilehdet ja liidirivit */
.tabs { display: flex; flex-wrap: wrap; gap: 0 var(--space-lg); margin-top: var(--space-lg); border-bottom: 1px solid var(--color-rule); }
.tabs a { display: inline-flex; align-items: center; gap: .4rem; min-height: 44px; padding: 0; margin-bottom: -1px; border-bottom: 3px solid transparent; color: var(--color-ink); text-decoration: none; }
.tabs a[aria-current] { border-bottom-color: var(--color-ink); font-weight: 750; }
.tabs .count { color: var(--color-muted); font-variant-numeric: tabular-nums; }
.leads { list-style: none; margin: 0; padding: 0; }
.lead-row { padding-block: var(--space-md); border-bottom: 1px solid var(--color-rule); }
.lead-title { display: inline-block; font-size: var(--text-lg); font-weight: 650; line-height: 1.35; color: var(--color-ink); text-decoration-color: var(--color-rule); text-underline-offset: .2em; overflow-wrap: anywhere; }
.lead-buyer { margin: var(--space-xs) 0 0; }
.lead-meta { margin: 0; color: var(--color-muted); font-size: var(--text-sm); }
.empty { padding-block: var(--space-lg); }

.filters, .admin-form { display: flex; flex-wrap: wrap; align-items: end; gap: var(--space-md); padding-block: var(--space-md); border-block: 1px solid var(--color-rule); }
.filters > div, .admin-form > div { flex: 1 1 12rem; min-width: 0; }
dl { margin: 0; }
dt { color: var(--color-muted); }
dd { margin: 0; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
summary { cursor: pointer; padding-block: var(--space-sm); }
.notice, .feedback { padding: var(--space-md); background: var(--color-paper-2); color: var(--color-ink); }
.success { background: var(--color-success-paper); color: var(--color-accent); }
.error { background: var(--color-error-paper); color: var(--color-error); }

/* Kohde */
.decision { padding-block: var(--space-lg); border-block: 1px solid var(--color-rule); }
.decision-form { max-width: 40rem; }
.decision-actions { display: flex; flex-wrap: wrap; gap: var(--space-xs); margin-top: var(--space-md); }
.decided { margin-bottom: var(--space-xs); font-weight: 650; }
.facts { display: grid; gap: var(--space-md); }
.plain { margin: 0 0 var(--space-md); padding-inline-start: var(--space-lg); }
.plain li { padding-block: .15rem; }
.source-text { max-width: 75ch; white-space: pre-line; }

/* Lähteet ja hallinta */
.health-row { padding-block: var(--space-lg); border-top: 1px solid var(--color-rule); display: grid; gap: var(--space-md); }
.health-row h2, .health-row h3 { margin-bottom: var(--space-xs); }
.health-row dl { display: grid; gap: var(--space-sm); }
.status { color: var(--color-ink); }
.status[data-state="FAILED"], .status[data-state="PARTIAL"], .status[data-state="BLOCKED"] { color: var(--color-error); }
.table-scroll { overflow-x: auto; margin-bottom: var(--space-lg); }
.ledger-table { width: 100%; border-collapse: collapse; }
.ledger-table th, .ledger-table td { padding: var(--space-xs) var(--space-md) var(--space-xs) 0; border-bottom: 1px solid var(--color-rule); text-align: left; vertical-align: top; }
.ledger-table th { color: var(--color-muted); font-size: var(--text-sm); font-weight: 650; }
.inline-form { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-xs); margin-bottom: var(--space-xs); }
button.quiet { padding-inline: var(--space-sm); font-weight: 500; font-size: var(--text-sm); }

.downloads, .form-actions { display: flex; flex-wrap: wrap; gap: var(--space-xs); }
.tags { list-style: none; display: flex; gap: var(--space-xs); flex-wrap: wrap; padding: 0; margin: var(--space-xs) 0 0; }
.tags li { background: var(--color-paper-2); color: var(--color-ink); padding: .25rem var(--space-xs); font-size: var(--text-sm); }
.settings-form { max-width: 52rem; }
.field { margin-bottom: var(--space-lg); }
.help { margin-top: var(--space-xs); }
.version { overflow-wrap: anywhere; }
.progress { margin-top: var(--space-md); }

/* Kirjautuminen ja virhesivut */
.login { max-width: 30rem; margin-inline: auto; padding-block: var(--space-xl); }
.login-form { display: grid; gap: var(--space-sm); margin-bottom: var(--space-lg); }
.login-form label { margin: 0; }
footer { border-top: 1px solid var(--color-rule); padding-block: var(--space-lg); margin-top: var(--space-2xl); color: var(--color-muted); font-size: var(--text-sm); }

@media (max-width: 63.999rem) {
  .tenant-form { grid-template-columns: minmax(0, 1fr) auto; align-items: center; }
  .tenant-form label { grid-column: 1 / -1; }
}
@media (max-width: 39.999rem) {
  /* Käyttäjätaulukko pinoutuu puhelimessa; ei vaakavieritystä. */
  .ledger-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .ledger-table tr { display: block; padding-block: var(--space-sm); border-bottom: 1px solid var(--color-rule); }
  .ledger-table td { display: block; padding: .15rem 0; border: 0; }
  .ledger-table td:first-child { font-weight: 650; }
}
@media (min-width: 40rem) {
  main { padding: var(--space-xl); }
  .health-row { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 40rem) and (max-width: 63.999rem) {
  .sidebar { display: grid; grid-template-columns: 12rem minmax(0, 1fr); gap: var(--space-xs) var(--space-lg); padding: var(--space-md); align-items: center; }
  .brand { margin: 0; }
  .tenant-form { grid-template-columns: minmax(0, 1fr) auto; align-items: center; }
  .tenant-form label { grid-column: 1 / -1; }
  .sidebar nav, .logout { grid-column: 1 / -1; margin-top: 0; }
}
@media (min-width: 64rem) {
  .shell { display: grid; grid-template-columns: 18rem minmax(0, 1fr); }
  .shell-plain { display: block; }
  .sidebar { padding-block: var(--space-xl); }
  .sidebar nav { display: grid; margin-top: var(--space-xl); }
  .logout { margin-top: var(--space-2xl); }
  main { max-width: 72rem; }
}
@media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto; } }
