html{--lumo-primary-color: hsl(354,62%,44%);--lumo-primary-color-50pct: hsla(354,62%,44%,0.5);--lumo-primary-color-10pct: hsla(354,62%,44%,0.1);--lumo-primary-text-color: hsl(354,62%,40%);--lumo-success-color: hsl(150,62%,33%);--lumo-success-text-color: hsl(150,62%,28%);--lumo-error-color: hsl(3,72%,48%);--lumo-error-text-color: hsl(3,72%,42%);--lumo-font-size-m: 0.9375rem;--lumo-font-size-s: 0.8125rem;--lumo-border-radius-m: 0.5rem;--lumo-border-radius-l: 0.75rem;--ehcf-numeric-font: ui-monospace,"SF Mono","JetBrains Mono","Fira Mono",monospace}[theme~="dark"]{--lumo-primary-color: hsl(354,70%,55%);--lumo-primary-color-50pct: hsla(354,70%,55%,0.5);--lumo-primary-color-10pct: hsla(354,70%,55%,0.1);--lumo-primary-text-color: hsl(354,75%,68%);--lumo-success-color: hsl(150,55%,40%);--lumo-success-text-color: hsl(150,60%,62%);--lumo-error-color: hsl(3,72%,55%);--lumo-error-text-color: hsl(3,80%,70%)}.app-title{font-size: var(--lumo-font-size-l);font-weight: 600;margin: 0;white-space: nowrap}vaadin-app-layout::part(drawer){background: var(--lumo-contrast-5pct)}.view-header{display: flex;flex-wrap: wrap;align-items: baseline;gap: var(--lumo-space-s) var(--lumo-space-m);width: 100%}.view-header h1,.view-header h2{font-size: var(--lumo-font-size-xl);font-weight: 600;margin: 0;line-height: 1.2}.view-header h2{font-size: var(--lumo-font-size-l)}.view-header .view-description{color: var(--lumo-secondary-text-color);font-size: var(--lumo-font-size-s);max-width: 70ch;flex: 1 1 20rem}.view-header.is-inset{padding: var(--lumo-space-m) var(--lumo-space-m) 0;box-sizing: border-box}.view-actions{display: flex;flex-wrap: wrap;gap: var(--lumo-space-s);align-items: center;margin-inline-start: auto}.form-section{display: block;font-size: var(--lumo-font-size-xs);font-weight: 600;letter-spacing: 0.06em;text-transform: uppercase;color: var(--lumo-secondary-text-color);padding-block-start: var(--lumo-space-s);border-block-start: 1px solid var(--lumo-contrast-10pct);width: 100%}vaadin-form-layout>vaadin-form-row:first-child .form-section{padding-block-start: 0;border-block-start: none}.metric-grid{display: grid;grid-template-columns: repeat(auto-fit,minmax(13rem,1fr));gap: var(--lumo-space-m);width: 100%}.metric-card{display: flex;flex-direction: column;gap: var(--lumo-space-xs);padding: var(--lumo-space-m);border-radius: var(--lumo-border-radius-l);background: var(--lumo-base-color);box-shadow: var(--lumo-box-shadow-xs);border: 1px solid var(--lumo-contrast-10pct)}.metric-label{font-size: var(--lumo-font-size-xs);font-weight: 600;letter-spacing: 0.06em;text-transform: uppercase;color: var(--lumo-secondary-text-color)}.metric-value{font-family: var(--ehcf-numeric-font);font-size: var(--lumo-font-size-xxl);font-weight: 600;line-height: 1.1;color: var(--lumo-header-text-color);font-variant-numeric: tabular-nums}.metric-value.is-text{font-family: var(--lumo-font-family);font-size: var(--lumo-font-size-l);overflow-wrap: anywhere}.metric-note{font-size: var(--lumo-font-size-xs);color: var(--lumo-tertiary-text-color)}.metric-card.is-alert{border-color: var(--lumo-error-color);background: var(--lumo-error-color-10pct)}.dashboard-columns{display: grid;grid-template-columns: repeat(auto-fit,minmax(24rem,1fr));gap: var(--lumo-space-m);width: 100%;align-items: start}.panel{display: flex;flex-direction: column;gap: var(--lumo-space-s);padding: var(--lumo-space-m);border-radius: var(--lumo-border-radius-l);background: var(--lumo-base-color);border: 1px solid var(--lumo-contrast-10pct);box-shadow: var(--lumo-box-shadow-xs);min-width: 0}.panel-title{display: flex;align-items: baseline;gap: var(--lumo-space-s);font-weight: 600}.panel-title .panel-hint{font-weight: 400;font-size: var(--lumo-font-size-xs);color: var(--lumo-tertiary-text-color);margin-inline-start: auto}.live-dot{width: 0.5rem;height: 0.5rem;border-radius: 50%;background: var(--lumo-success-color);display: inline-block;animation: live-pulse 2s ease-in-out infinite}@keyframes live-pulse{0%,100%{opacity: 1}50%{opacity: 0.25}}@media (prefers-reduced-motion: reduce){.live-dot{animation: none}}.scan-feed{display: flex;flex-direction: column;gap: 1px;background: var(--lumo-contrast-10pct);border-radius: var(--lumo-border-radius-m);overflow: hidden}.scan-row{display: grid;grid-template-columns: 4.5rem 1fr auto auto;align-items: center;gap: var(--lumo-space-s);padding: var(--lumo-space-xs) var(--lumo-space-s);background: var(--lumo-base-color);font-size: var(--lumo-font-size-s);min-width: 0}.scan-time{font-family: var(--ehcf-numeric-font);font-variant-numeric: tabular-nums;color: var(--lumo-secondary-text-color)}.scan-code{font-family: var(--ehcf-numeric-font);overflow: hidden;text-overflow: ellipsis;white-space: nowrap;min-width: 0}.scan-where{color: var(--lumo-tertiary-text-color);white-space: nowrap}.scan-row.is-new{animation: scan-arrive 1.2s ease-out}@keyframes scan-arrive{from{background: var(--lumo-primary-color-10pct)}to{background: var(--lumo-base-color)}}@media (prefers-reduced-motion: reduce){.scan-row.is-new{animation: none}}.feed-empty{padding: var(--lumo-space-m);text-align: center;color: var(--lumo-tertiary-text-color);font-size: var(--lumo-font-size-s)}.colour-swatch{width: 1.25rem;height: 1.25rem;border-radius: var(--lumo-border-radius-s);border: 1px solid var(--lumo-contrast-20pct);display: inline-block;vertical-align: middle;flex: none}.swatch-strip{display: flex;gap: 2px;align-items: center}.swatch-large{width: 100%;height: 3rem;border-radius: var(--lumo-border-radius-m)}vaadin-grid::part(needs-review){--vaadin-grid-cell-background: var(--lumo-primary-color-10pct)}.filter-bar{display: flex;flex-wrap: wrap;gap: var(--lumo-space-s) var(--lumo-space-m);align-items: flex-end;width: 100%;padding-block-end: var(--lumo-space-s)}.result-actions{display: flex;align-items: center;justify-content: flex-end;gap: var(--lumo-space-s);width: 100%;padding-block-end: var(--lumo-space-xs)}.master-pane{display: flex;flex-direction: column;height: 100%;min-height: 0;padding: var(--lumo-space-m);gap: var(--lumo-space-s);border-inline-end: 1px solid var(--lumo-contrast-10pct);background: var(--lumo-contrast-5pct);box-sizing: border-box}.venue-filters{display: flex;flex-direction: column;gap: var(--lumo-space-xs)}.venue-filters>div{display: flex;align-items: baseline;justify-content: space-between;gap: var(--lumo-space-s);font-size: var(--lumo-font-size-xs)}.venue-cards{display: flex;flex-direction: column;gap: var(--lumo-space-xs);overflow-y: auto;flex: 1;min-height: 0;padding-block-end: var(--lumo-space-s)}.venue-card{display: flex;flex-direction: column;gap: var(--lumo-space-xs);padding: var(--lumo-space-s) var(--lumo-space-m);border: 1px solid var(--lumo-contrast-10pct);border-radius: var(--lumo-border-radius-m);background: var(--lumo-base-color);cursor: pointer;transition: border-color 120ms ease,box-shadow 120ms ease}.venue-card:hover{border-color: var(--lumo-contrast-30pct);box-shadow: var(--lumo-box-shadow-xs)}.venue-card.is-selected{border-color: var(--lumo-primary-color);box-shadow: inset 3px 0 0 var(--lumo-primary-color)}.venue-card.is-incomplete .venue-card-title{color: var(--lumo-secondary-text-color)}.venue-card-head{display: flex;align-items: baseline;justify-content: space-between;gap: var(--lumo-space-s)}.venue-card-title{font-weight: 600;line-height: 1.25;overflow-wrap: anywhere}.venue-card-sub{font-size: var(--lumo-font-size-xs);color: var(--lumo-secondary-text-color)}.list-placeholder{display: block;padding: var(--lumo-space-m);color: var(--lumo-tertiary-text-color);font-size: var(--lumo-font-size-s)}.fact-grid{display: grid;grid-template-columns: repeat(auto-fit,minmax(11rem,1fr));gap: var(--lumo-space-s) var(--lumo-space-m);width: 100%;padding: var(--lumo-space-m);border: 1px solid var(--lumo-contrast-10pct);border-radius: var(--lumo-border-radius-m);background: var(--lumo-contrast-5pct);box-sizing: border-box}.fact{display: flex;flex-direction: column;gap: 2px;min-width: 0}.fact-label{font-size: var(--lumo-font-size-xs);font-weight: 600;letter-spacing: 0.06em;text-transform: uppercase;color: var(--lumo-tertiary-text-color)}.fact-value{font-size: var(--lumo-font-size-s);overflow-wrap: anywhere}.chips{display: flex;flex-wrap: wrap;gap: var(--lumo-space-xs);align-items: center}.detail-panel{overflow-y: auto;padding: var(--lumo-space-m);gap: var(--lumo-space-m)}.detail-head{display: flex;flex-direction: column;gap: var(--lumo-space-s);width: 100%}.detail-section{display: flex;flex-direction: column;gap: var(--lumo-space-s);width: 100%;padding-block-start: var(--lumo-space-s);border-block-start: 1px solid var(--lumo-contrast-10pct)}.window-preview{display: flex;flex-direction: column;align-items: flex-start;gap: var(--lumo-space-s);padding: var(--lumo-space-m);border-radius: var(--lumo-border-radius-m);background: var(--lumo-contrast-5pct);font-size: var(--lumo-font-size-s);width: 100%;box-sizing: border-box}.preview-heading{font-size: var(--lumo-font-size-xs);font-weight: 600;letter-spacing: 0.06em;text-transform: uppercase;color: var(--lumo-secondary-text-color)}.preview-hint{color: var(--lumo-tertiary-text-color)}.preview-cards{display: grid;grid-template-columns: repeat(2,minmax(0,1fr));gap: var(--lumo-space-s);width: 100%;max-height: 22rem;overflow-y: auto}.preview-cards:has(>:only-child){grid-template-columns: 1fr}@media (max-width: 40rem){.preview-cards{grid-template-columns: 1fr}}.preview-card{display: flex;flex-direction: column;gap: 2px;padding: var(--lumo-space-s) var(--lumo-space-m);border: 1px solid var(--lumo-contrast-10pct);border-radius: var(--lumo-border-radius-m);background: var(--lumo-base-color);box-shadow: var(--lumo-box-shadow-xs);min-width: 0}.preview-card-title{font-weight: 600;margin-block-end: var(--lumo-space-xs);overflow-wrap: anywhere}.preview-row{display: flex;gap: var(--lumo-space-s);align-items: baseline;font-size: var(--lumo-font-size-xs);min-width: 0}.preview-row-label{flex: 0 0 5.5rem;color: var(--lumo-tertiary-text-color)}.preview-row-value{color: var(--lumo-body-text-color);overflow-wrap: anywhere;min-width: 0;font-variant-numeric: tabular-nums}.preview-row.is-computed{background: var(--lumo-contrast-5pct);border-radius: var(--lumo-border-radius-s);padding: 1px var(--lumo-space-xs);margin-inline-start: calc(var(--lumo-space-xs) * -1)}.preview-row.is-computed .preview-row-value{font-weight: 600}.preview-card .chips{margin-block-start: var(--lumo-space-xs)}.warning-box{padding: var(--lumo-space-s) var(--lumo-space-m);border-radius: var(--lumo-border-radius-m);border: 1px solid var(--lumo-error-color);background: var(--lumo-error-color-10pct);color: var(--lumo-error-text-color);font-size: var(--lumo-font-size-s);width: 100%}.info-box{padding: var(--lumo-space-s) var(--lumo-space-m);border-radius: var(--lumo-border-radius-m);border: 1px solid var(--lumo-contrast-10pct);background: var(--lumo-contrast-5pct);font-size: var(--lumo-font-size-s);width: 100%}.info-box.is-active{border-color: var(--lumo-success-color);background: var(--lumo-success-color-10pct)}.info-box.is-blocked{border-color: var(--lumo-warning-color);background: var(--lumo-warning-color-10pct)}.mono{font-family: var(--ehcf-numeric-font);font-variant-numeric: tabular-nums}.muted{color: var(--lumo-tertiary-text-color)}