/* Redline colour system for charts and accents. Categorical slots validated with the dataviz validator
   (lightness band, chroma, colour blind separation, normal vision floor) on the light #FFFFFF and dark #161D19 surfaces.
   Slot 2 (ochre) is under 3:1 on white, so charts using it always carry direct labels or a table view.
   Use slots in this fixed order; never cycle. Text stays in --chalk/--smoke/--dim, never in a series colour. */
:root{
  --viz-1:#1E8050; /* racing green */
  --viz-2:#D08A12; /* ochre */
  --viz-3:#3A6FC0; /* slate blue */
  --viz-4:#C8553A; /* terracotta */
  --viz-5:#8B4FB0; /* plum */
  --viz-6:#0A8F9C; /* teal */
  /* soft tints for chips, badges and section backgrounds */
  --tint-1:#E6F2EC;--tint-2:#FBF1DF;--tint-3:#E7EEF8;--tint-4:#F8E9E4;--tint-5:#F1E8F6;--tint-6:#E0F2F4;
  /* sequential (magnitude): one green hue, light to dark */
  --seq-1:#DCEFE4;--seq-2:#A9D6BC;--seq-3:#6FB891;--seq-4:#3A9A6C;--seq-5:#1E8050;--seq-6:#135A38;
  /* cost bands are ordinal: one warm hue, light to dark */
  --cost-low:#E0956A;--cost-medium:#C8553A;--cost-high:#8E2F1F;
  /* status, reserved: always with an icon and a label */
  --ok:#1E8050;--warn:#B7791F;--bad:#B5452E;
  --viz-grid:#E3E7E1;--viz-axis:#9AA59E;
}
@media (prefers-color-scheme:dark){:root:where(:not([data-theme="light"])){
  --viz-1:#2E9A66;--viz-2:#BC8018;--viz-3:#4F86D9;--viz-4:#D2664A;--viz-5:#9A6ACD;--viz-6:#0E9CA8;
  --tint-1:#17302A;--tint-2:#33281A;--tint-3:#1B2638;--tint-4:#36211C;--tint-5:#2A2036;--tint-6:#14302F;
  --seq-1:#1A3027;--seq-2:#1F4A35;--seq-3:#2A6A4A;--seq-4:#3A8A60;--seq-5:#5DAF83;--seq-6:#9AD3B2;
  --cost-low:#C9A44E;--cost-medium:#D07A34;--cost-high:#D9654A;
  --ok:#5DAF83;--warn:#D6A04A;--bad:#E0775C;--viz-grid:#2A352E;--viz-axis:#6E7B72;
}}
:root[data-theme="dark"]{
  --viz-1:#2E9A66;--viz-2:#BC8018;--viz-3:#4F86D9;--viz-4:#D2664A;--viz-5:#9A6ACD;--viz-6:#0E9CA8;
  --tint-1:#17302A;--tint-2:#33281A;--tint-3:#1B2638;--tint-4:#36211C;--tint-5:#2A2036;--tint-6:#14302F;
  --seq-1:#1A3027;--seq-2:#1F4A35;--seq-3:#2A6A4A;--seq-4:#3A8A60;--seq-5:#5DAF83;--seq-6:#9AD3B2;
  --cost-low:#C9A44E;--cost-medium:#D07A34;--cost-high:#D9654A;
  --ok:#5DAF83;--warn:#D6A04A;--bad:#E0775C;--viz-grid:#2A352E;--viz-axis:#6E7B72;
}

/* the no photos panel used wherever a listing has no photos */
.nophoto{width:100%;height:100%;min-height:120px;display:grid;place-content:center;justify-items:center;gap:6px;background:linear-gradient(160deg,var(--pit2),var(--pit3));color:var(--dim);font-size:.82rem;font-weight:600;letter-spacing:.02em}

/* text is justified wherever it runs as prose. Zero specificity, so any rule that centres or aligns a block on purpose still wins */
:where(#app,.sheet) :where(p,li,dd,blockquote,figcaption),:where(footer .foot-tag){text-align:justify;text-justify:inter-word;hyphens:auto;-webkit-hyphens:auto;overflow-wrap:break-word}
:where(#app) :where([style*="text-align:center"],[style*="text-align: center"],.center,.tc,.empty,td,th,button,.btn,.chip,nav,.tabs) :where(p,li){text-align:inherit;hyphens:manual}

/* ALL running text is justified: paragraphs, headings, captions, list items, notes and text boxes.
   !important because individual components set text-align:left; centred and single line UI (buttons, chips, nav,
   table cells, inputs, anything centred on purpose) is left alone. */
:is(#app,.sheet,#modal,footer) :is(p,li,dd,dt,blockquote,figcaption,h1,h2,h3,h4,h5,h6,summary,legend,small,.tiny,.small,.muted,.lede,.sub):not(.btn):not(.chip):not(.tab):not(.center):not(.tc):not([style*="text-align:center"]):not([style*="text-align: center"]):not([align="center"]):not(button *):not(a.btn *):not(.chip *):not(nav *):not(th):not(td){text-align:justify !important;text-align-last:auto !important;text-justify:inter-word;hyphens:auto;-webkit-hyphens:auto;overflow-wrap:break-word}
:is(#app,.sheet,#modal) :is(textarea,.ed-fig,.ed-card-m):not(x){text-align:justify}
