/* =========================================================================
   Tallinn Co. Justice
   A register bound in navy and gold.
   ========================================================================= */

/* `vendor` holds Leaflet's stylesheet (wrapped in that layer inside the vendored
   file). Declaring it first means every rule below can override Leaflet without
   reaching for !important. */
@layer vendor, reset, base, layout, components, map, utilities;

/* ------------------------------ TOKENS ---------------------------------- */

:root {
  color-scheme: dark;

  /* Tier 1 — literals */
  --ink-950: #070a10;
  --ink-900: #0b0f17;
  --ink-850: #10151f;
  --ink-800: #151b27;
  --ink-750: #1a2130;
  --ink-700: #1f2836;
  --ink-600: #2a3547;

  --gold-700: #7d6318;
  --gold-600: #9c7b1e;
  --gold-500: #c9a227;
  --gold-400: #d8b440;
  --gold-300: #e6cb74;
  --gold-200: #f0dfa8;

  --parchment: #e7e2d4;
  --text: #d9dee7;
  --muted: #8b96a9;
  --green: #5fcb92;
  --red: #e4736b;

  /* Tier 2 — semantic */
  --bg: var(--ink-900);
  --bg-raised: var(--ink-800);
  --bg-sunken: var(--ink-950);
  --accent: var(--gold-500);
  --accent-bright: var(--gold-300);

  --rule: color-mix(in oklab, var(--gold-500) 26%, transparent);
  --rule-soft: color-mix(in oklab, var(--gold-500) 13%, transparent);
  --rule-hard: color-mix(in oklab, var(--gold-500) 48%, transparent);

  --font-display: 'Cinzel', 'Times New Roman', Georgia, serif;
  --font-body: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;

  --masthead-h: 4.5rem;
  --radius: 3px;
  --shadow-panel: 0 1px 2px rgb(0 0 0 / 0.5), 0 12px 32px -12px rgb(0 0 0 / 0.7);

  --ease: cubic-bezier(0.32, 0.72, 0, 1);
}

/* ------------------------------ RESET ----------------------------------- */

@layer reset {
  html { box-sizing: border-box; }
  *, ::before, ::after { box-sizing: inherit; }

  body, h1, h2, h3, h4, p, figure, blockquote, dl, dd, fieldset {
    margin: 0;
  }
  ul, ol { margin: 0; padding: 0; }
  fieldset { border: 0; padding: 0; min-inline-size: 0; }
  button, input, select, textarea { font: inherit; color: inherit; }
  img, svg { display: block; max-inline-size: 100%; }
  table { border-collapse: collapse; }
}

/* ------------------------------ BASE ------------------------------------ */

@layer base {
  html { -webkit-text-size-adjust: 100%; }

  body {
    font-family: var(--font-body);
    font-size: 1rem;
    line-height: 1.55;
    color: var(--text);
    background-color: var(--bg);
    /* A faint vignette and a whisper of linen, so the navy is not flat. */
    background-image:
      radial-gradient(120rem 60rem at 50% -20%, color-mix(in oklab, var(--gold-500) 7%, transparent), transparent 60%),
      repeating-linear-gradient(90deg, rgb(255 255 255 / 0.011) 0 1px, transparent 0 3px),
      repeating-linear-gradient(0deg, rgb(255 255 255 / 0.011) 0 1px, transparent 0 3px);
    min-block-size: 100dvh;
    overflow-wrap: break-word;
  }

  a { color: var(--gold-300); text-underline-offset: 0.18em; }
  a:hover { color: var(--gold-200); }

  :is(a, button, input, select, textarea, [tabindex]):focus-visible {
    outline: 2px solid var(--gold-300);
    outline-offset: 2px;
    border-radius: 2px;
  }

  ::selection { background: color-mix(in oklab, var(--gold-500) 45%, transparent); color: #fff; }

  * { scrollbar-color: var(--ink-600) transparent; scrollbar-width: thin; }

  kbd {
    font-family: var(--font-mono);
    font-size: 0.8em;
    padding: 0.1em 0.4em;
    border: 1px solid var(--rule);
    border-block-end-width: 2px;
    border-radius: 3px;
    background: var(--ink-800);
  }

  code { font-family: var(--font-mono); font-size: 0.88em; }
}

/* ---------------------------- TYPOGRAPHY -------------------------------- */

@layer base {
  .display {
    font-family: var(--font-display);
    font-weight: 600;
    letter-spacing: 0.02em;
    line-height: 1.15;
    font-size: clamp(1.75rem, 1.2rem + 2.2vw, 2.75rem);
    color: var(--gold-200);
    text-wrap: balance;
  }
  .display--sm { font-size: clamp(1.15rem, 0.95rem + 0.9vw, 1.5rem); }

  .lede {
    color: var(--muted);
    max-inline-size: 62ch;
    text-wrap: pretty;
    margin-block-start: 0.5rem;
  }

  .muted { color: var(--muted); }
  .mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }

  .eyebrow {
    font-family: var(--font-display);
    font-size: 0.7rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--gold-500);
  }
}

/* ---------------------------- LAYOUT ------------------------------------ */

@layer layout {
  body { display: flex; flex-direction: column; block-size: 100dvh; }

  .masthead {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    padding-inline: clamp(0.75rem, 2vw, 1.5rem);
    block-size: var(--masthead-h);
    flex: 0 0 auto;
    background: linear-gradient(180deg, var(--ink-850), var(--ink-900));
    border-block-end: 1px solid var(--rule);
    position: relative;
    z-index: 500;
  }
  /* The thin gold rule that says "this is an official document". */
  .masthead::after {
    content: "";
    position: absolute;
    inset-block-end: -3px;
    inset-inline: 0;
    block-size: 2px;
    background: linear-gradient(90deg, transparent, var(--gold-600), var(--gold-400), var(--gold-600), transparent);
    opacity: 0.55;
  }

  #main { flex: 1 1 auto; min-block-size: 0; position: relative; }

  .view { display: none; block-size: 100%; }
  .view.is-active { display: block; }

  #view-register.is-active {
    display: grid;
    grid-template-columns: minmax(0, 1fr) min(26rem, 38vw);
    block-size: 100%;
  }
  #view-register:not(:has(#detail:not([hidden]))) { grid-template-columns: minmax(0, 1fr) 0; }

  :is(#view-docket, #view-orders) { overflow-y: auto; }

  .sheet {
    max-inline-size: 84rem;
    margin-inline: auto;
    padding: clamp(1.5rem, 3vw, 3rem) clamp(1rem, 3vw, 2.5rem) 5rem;
  }
  .sheet--prose { max-inline-size: 52rem; }
  .sheet__head { border-block-end: 1px solid var(--rule); padding-block-end: 1.25rem; margin-block-end: 1.75rem; }
}

/* -------------------------- BRAND / MASTHEAD ---------------------------- */

@layer components {
  .brand {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    text-decoration: none;
    color: var(--gold-500);
    flex: 0 0 auto;
  }
  .brand__seal { inline-size: 2.35rem; block-size: 2.35rem; flex: 0 0 auto; }
  .brand:hover .brand__seal { color: var(--gold-300); }
  .brand__text { display: flex; flex-direction: column; line-height: 1; }
  .brand__name {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 1.02rem;
    letter-spacing: 0.1em;
    color: var(--gold-200);
    text-transform: uppercase;
  }
  .brand__sub {
    font-family: var(--font-display);
    font-size: 0.68rem;
    letter-spacing: 0.42em;
    text-transform: uppercase;
    color: var(--gold-600);
    margin-block-start: 0.24rem;
  }

  .mastnav { display: flex; gap: 0.25rem; margin-inline-start: auto; }
  .mastnav__link {
    font-family: var(--font-display);
    font-size: 0.78rem;
    letter-spacing: 0.13em;
    text-transform: uppercase;
    text-decoration: none;
    color: var(--muted);
    padding: 0.55rem 0.85rem;
    border-radius: var(--radius);
    border: 1px solid transparent;
    min-block-size: 2.25rem;
    display: inline-flex;
    align-items: center;
    white-space: nowrap;
  }
  .mastnav__link:hover { color: var(--gold-200); background: var(--ink-800); }
  .mastnav__link.is-active {
    color: var(--gold-200);
    border-color: var(--rule);
    background: color-mix(in oklab, var(--gold-500) 9%, transparent);
  }

  .masthead__right { display: flex; align-items: center; gap: 0.6rem; flex: 0 0 auto; }

  .identity {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.1rem;
    background: var(--ink-800);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius);
    padding: 0.4rem 0.75rem;
    cursor: pointer;
    min-block-size: 2.5rem;
    text-align: start;
  }
  .identity:hover { border-color: var(--rule); background: var(--ink-750); }
  .identity__label {
    font-size: 0.6rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--gold-600);
    line-height: 1;
  }
  .identity__name {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--parchment);
    line-height: 1.2;
    max-inline-size: 11rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .identity:not(.is-signed) .identity__name { color: var(--muted); font-style: italic; font-weight: 400; }
}

/* ---------------------------- BUTTONS ----------------------------------- */

@layer components {
  .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    font-family: var(--font-display);
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    padding: 0.6rem 1.05rem;
    min-block-size: 2.5rem;
    border-radius: var(--radius);
    border: 1px solid var(--rule);
    background: var(--ink-750);
    color: var(--parchment);
    cursor: pointer;
    white-space: nowrap;
    transition: background-color 0.16s var(--ease), border-color 0.16s var(--ease), color 0.16s var(--ease);
  }
  .btn:hover:not(:disabled) { background: var(--ink-700); border-color: var(--rule-hard); color: var(--gold-200); }
  .btn:disabled { opacity: 0.45; cursor: not-allowed; }

  .btn--gold {
    background: linear-gradient(180deg, var(--gold-400), var(--gold-600));
    border-color: var(--gold-300);
    color: var(--ink-950);
    font-weight: 700;
  }
  .btn--gold:hover:not(:disabled) {
    background: linear-gradient(180deg, var(--gold-300), var(--gold-500));
    border-color: var(--gold-200);
    color: var(--ink-950);
  }

  .btn--ghost { background: transparent; border-color: var(--rule-soft); color: var(--muted); }
  .btn--ghost:hover:not(:disabled) { background: var(--ink-800); color: var(--gold-200); border-color: var(--rule); }

  .btn--danger { background: transparent; border-color: color-mix(in oklab, var(--red) 45%, transparent); color: var(--red); }
  .btn--danger:hover:not(:disabled) { background: color-mix(in oklab, var(--red) 14%, transparent); color: var(--red); border-color: var(--red); }

  .btn--sm { font-size: 0.7rem; padding: 0.4rem 0.7rem; min-block-size: 2rem; }
  .btn--block { inline-size: 100%; }

  @media (pointer: coarse) {
    .btn { min-block-size: 2.75rem; }
  }
}

/* ----------------------------- MAP RAIL --------------------------------- */

@layer map {
  #map {
    block-size: 100%;
    inline-size: 100%;
    background: var(--ink-950);
    z-index: 1;
    /* Keep the tint blend from reaching the page behind the map. */
    isolation: isolate;
  }

  .maprail {
    position: absolute;
    inset-block-start: 0.85rem;
    inset-inline-start: 0.85rem;
    z-index: 450;
    inline-size: min(21rem, calc(100% - 1.7rem));
    background: color-mix(in oklab, var(--ink-850) 92%, transparent);
    backdrop-filter: blur(10px);
    border: 1px solid var(--rule);
    border-radius: var(--radius);
    box-shadow: var(--shadow-panel);
    padding: 0.85rem;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
  }
  .maprail__search input {
    inline-size: 100%;
    background: var(--ink-950);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius);
    padding: 0.55rem 0.7rem;
    min-block-size: 2.5rem;
    font-size: 1rem;
  }
  .maprail__search input:focus { border-color: var(--rule-hard); }
  .maprail__hint { font-size: 0.78rem; color: var(--muted); line-height: 1.45; text-wrap: pretty; }
  .maprail__hint .mono { color: var(--gold-300); font-size: 0.92em; }
  .maprail__status { font-size: 0.74rem; color: var(--gold-300); margin-block-start: 0.4rem; line-height: 1.4; }
  .maprail__status:empty { display: none; }

  /* Search results: register hits first, then what OpenStreetMap knows. */
  .results {
    margin-block-start: 0.5rem;
    border: 1px solid var(--rule);
    border-radius: var(--radius);
    background: var(--ink-900);
    max-block-size: min(22rem, 46dvh);
    overflow-y: auto;
    overscroll-behavior: contain;
  }
  .results__label {
    font-family: var(--font-display);
    font-size: 0.58rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--gold-600);
    padding: 0.5rem 0.65rem 0.3rem;
    position: sticky;
    inset-block-start: 0;
    background: var(--ink-900);
  }
  .results__note, .results__attrib {
    font-size: 0.72rem;
    color: var(--muted);
    padding: 0.2rem 0.65rem 0.6rem;
  }
  .results__attrib { font-size: 0.64rem; border-block-start: 1px solid var(--rule-soft); padding-block-start: 0.45rem; }

  .result {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 0.1rem 0.5rem;
    inline-size: 100%;
    text-align: start;
    background: transparent;
    border: 0;
    border-block-start: 1px solid var(--rule-soft);
    padding: 0.55rem 0.65rem;
    cursor: pointer;
    min-block-size: 2.75rem;
  }
  .result:first-of-type { border-block-start: 0; }
  .result:hover, .result:focus-visible { background: color-mix(in oklab, var(--gold-500) 10%, transparent); }
  .result__main { font-size: 0.85rem; font-weight: 600; color: var(--parchment); }
  .result__meta {
    grid-column: 1 / -1;
    font-size: 0.7rem;
    color: var(--muted);
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
  }
  .result__kind { grid-column: 1 / -1; font-size: 0.66rem; color: var(--gold-600); font-family: var(--font-mono); }
  .result .sabbadge { align-self: start; }
  .result--action {
    grid-template-columns: 1fr;
    color: var(--gold-300);
    font-size: 0.78rem;
    font-weight: 500;
  }

  .pickpop__name { font-weight: 600; color: var(--parchment); margin-block-end: 0.2rem; font-size: 0.9rem; }
  .pickpop__coords { font-family: var(--font-mono); color: var(--gold-300); font-size: 0.85rem; margin-block-end: 0.55rem; }

  .maprail__legend {
    list-style: none;
    display: flex; gap: 0.35rem 0.9rem; flex-wrap: wrap;
    font-size: 0.72rem; color: var(--muted);
    padding-block-start: 0.15rem;
    border-block-start: 1px solid var(--rule-soft);
    padding-block: 0.6rem 0;
  }
  .maprail__legend li { display: inline-flex; align-items: center; gap: 0.35rem; }

  /* Legend swatches mirror the map pins exactly. */
  .pin {
    inline-size: 0.72rem; block-size: 0.72rem; border-radius: 50%;
    display: inline-block; border: 2px solid; flex: 0 0 auto; position: relative;
  }
  .pin--unknown   { background: color-mix(in oklab, var(--gold-500) 20%, transparent); border-color: var(--gold-300); border-style: dashed; }
  .pin--untouched    { background: color-mix(in oklab, var(--gold-500) 62%, transparent); border-color: var(--gold-300); }
  .pin--sabotaged { background: rgb(104 120 143 / 0.72); border-color: #b3c0d1; }
  .pin--sabotaged::after {
    content: "";
    position: absolute; inset: 1px;
    background:
      linear-gradient(45deg, transparent 43%, var(--ink-950) 43% 57%, transparent 57%),
      linear-gradient(-45deg, transparent 43%, var(--ink-950) 43% 57%, transparent 57%);
  }
  .pin--pick { background: color-mix(in oklab, var(--green) 55%, transparent); border-color: var(--green); }

  /* Segmented status filter */
  .segmented { display: flex; gap: 1px; background: var(--rule-soft); border: 1px solid var(--rule-soft); border-radius: var(--radius); overflow: hidden; }
  .segmented button {
    flex: 1 1 auto;
    background: var(--ink-900);
    border: 0;
    color: var(--muted);
    font-size: 0.66rem;
    letter-spacing: 0.04em;
    padding: 0.45rem 0.3rem;
    min-block-size: 2.25rem;
    cursor: pointer;
    display: flex; flex-direction: column; align-items: center; gap: 0.1rem;
    line-height: 1.1;
  }
  .segmented button:hover { background: var(--ink-750); color: var(--gold-200); }
  .segmented button[aria-pressed="true"] {
    background: color-mix(in oklab, var(--gold-500) 16%, var(--ink-800));
    color: var(--gold-200);
  }
  .seg__n { font-family: var(--font-mono); font-size: 0.78rem; font-weight: 600; color: var(--gold-300); }
  .segmented button[aria-pressed="true"] .seg__n { color: var(--gold-200); }

  /* Leaflet chrome, restyled to match */
  .leaflet-container { font-family: var(--font-body); background: var(--ink-950); }
  .leaflet-control-zoom a {
    background: var(--ink-850);
    color: var(--gold-300);
    border-block-end-color: var(--rule);
  }
  .leaflet-control-zoom a:hover { background: var(--ink-700); color: var(--gold-200); }
  .leaflet-control-attribution {
    background: color-mix(in oklab, var(--ink-950) 85%, transparent);
    color: var(--muted);
    font-size: 0.65rem;
  }
  .leaflet-control-attribution a { color: var(--gold-600); }
  .leaflet-bar { border: 1px solid var(--rule); }
  .leaflet-control-layers {
    background: var(--ink-850);
    border: 1px solid var(--rule);
    color: var(--text);
  }
  .leaflet-control-layers-expanded { padding: 0.5rem 0.7rem 0.5rem 0.5rem; font-size: 0.8rem; }
  .leaflet-tooltip {
    background: var(--ink-850);
    border: 1px solid var(--rule);
    color: var(--parchment);
    font-size: 0.78rem;
    box-shadow: var(--shadow-panel);
  }
  .leaflet-tooltip-top::before { border-top-color: var(--gold-600); }
  .leaflet-popup-content-wrapper, .leaflet-popup-tip {
    background: var(--ink-850);
    border: 1px solid var(--rule);
    color: var(--text);
    border-radius: var(--radius);
  }
  .leaflet-popup-content { margin: 0.75rem 0.85rem; }

  /* Dark cartography without a keyed tile service: invert OSM's light palette,
     put the hues back with a 180° rotation, then cool and calm what is left so
     it sits under gold without fighting it. */
  .tiles-dark {
    filter: invert(1) hue-rotate(186deg) brightness(0.84) contrast(1.06) saturate(0.32);
  }
  /* A navy wash over the basemap so it reads as one piece with the chrome.
     Sits above the tile pane (z 200) and below overlays and markers (400+), so
     only the cartography is tinted. Anchored to the map container rather than a
     Leaflet pane, because panes are transformed and have no intrinsic size. */
  #map:has(.tiles-dark)::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 300;
    pointer-events: none;
    background: #10203a;
    mix-blend-mode: color;
    opacity: 0.4;
  }

  .marker-entry {
    filter: drop-shadow(0 2px 4px rgb(0 0 0 / 0.7));
    background: none;
    border: 0;
  }
  .marker-entry svg { overflow: visible; }
}

/* --------------------------- DETAIL PANEL -------------------------------- */

@layer components {
  .detail {
    grid-column: 2;
    overflow-y: auto;
    background: linear-gradient(180deg, var(--ink-850), var(--ink-900));
    border-inline-start: 1px solid var(--rule);
    padding: 1.25rem 1.25rem 3rem;
    position: relative;
    z-index: 460;
  }
  .detail[hidden] { display: none; }

  .detail__close {
    position: absolute;
    inset-block-start: 0.6rem;
    inset-inline-end: 0.6rem;
    background: transparent;
    border: 1px solid transparent;
    color: var(--muted);
    font-size: 1.4rem;
    line-height: 1;
    min-inline-size: 2.25rem;
    min-block-size: 2.25rem;
    border-radius: var(--radius);
    cursor: pointer;
  }
  .detail__close:hover { color: var(--gold-200); border-color: var(--rule); }

  .detail__kicker {
    font-family: var(--font-display);
    font-size: 0.62rem;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--gold-600);
  }
  .detail__title {
    font-family: var(--font-display);
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--gold-200);
    line-height: 1.2;
    margin-block: 0.25rem 0.15rem;
    padding-inline-end: 2rem;
    text-wrap: balance;
  }
  .detail__place { font-size: 0.82rem; color: var(--muted); }

  .detail hr.rule {
    border: 0;
    border-block-start: 1px solid var(--rule-soft);
    margin-block: 1.1rem;
  }

  .section-label {
    font-family: var(--font-display);
    font-size: 0.64rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--gold-600);
    margin-block-end: 0.5rem;
    display: flex;
    align-items: center;
    gap: 0.6rem;
  }
  .section-label::after {
    content: "";
    flex: 1;
    block-size: 1px;
    background: var(--rule-soft);
  }
}

/* ------------------------- THE COORDINATE BLOCK -------------------------- */
/* The single most-used control on the site. It gets the gold frame.         */

@layer components {
  .coordblock {
    border: 1px solid var(--rule-hard);
    border-radius: var(--radius);
    background:
      linear-gradient(180deg, color-mix(in oklab, var(--gold-500) 10%, transparent), transparent),
      var(--ink-950);
    padding: 0.8rem 0.85rem 0.7rem;
    position: relative;
  }
  .coordblock__label {
    font-family: var(--font-display);
    font-size: 0.6rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--gold-500);
    margin-block-end: 0.45rem;
  }
  .coordblock__value {
    display: block;
    font-family: var(--font-mono);
    font-size: clamp(1rem, 0.85rem + 0.5vw, 1.2rem);
    font-weight: 500;
    color: var(--gold-200);
    letter-spacing: 0.01em;
    user-select: all;
    word-break: break-all;
    margin-block-end: 0.6rem;
  }
  .coordblock__actions { display: flex; gap: 0.4rem; flex-wrap: wrap; }
  .coordblock__actions .btn { flex: 1 1 auto; }
  .coordblock__hint { font-size: 0.7rem; color: var(--muted); margin-block-start: 0.5rem; }
  .coordblock.is-copied { border-color: var(--green); }
  .coordblock.is-copied .coordblock__label { color: var(--green); }
}

/* ------------------------------ FACTS ----------------------------------- */

@layer components {
  .facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; background: var(--rule-soft); border: 1px solid var(--rule-soft); border-radius: var(--radius); overflow: hidden; }
  .fact { background: var(--ink-850); padding: 0.6rem 0.7rem; }
  .fact dt { font-size: 0.62rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); }
  .fact dd { font-size: 0.95rem; font-weight: 600; color: var(--parchment); margin-block-start: 0.15rem; }
  .fact dd.mono { font-family: var(--font-mono); font-weight: 500; }
  .fact--wide { grid-column: 1 / -1; }

  .money { color: var(--green); font-variant-numeric: tabular-nums; }
  .money--est { color: var(--gold-300); }

  .badge {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: 0.63rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    font-weight: 600;
    padding: 0.16rem 0.45rem;
    border-radius: 2px;
    border: 1px solid;
  }
  .badge--est { color: var(--gold-300); border-color: var(--rule); background: color-mix(in oklab, var(--gold-500) 12%, transparent); }
  .badge--obs { color: var(--green); border-color: color-mix(in oklab, var(--green) 45%, transparent); background: color-mix(in oklab, var(--green) 12%, transparent); }
  .badge--assumed { color: var(--red); border-color: color-mix(in oklab, var(--red) 45%, transparent); background: color-mix(in oklab, var(--red) 10%, transparent); }
  .badge--removed { color: var(--red); border-color: var(--red); background: color-mix(in oklab, var(--red) 15%, transparent); }

  /* ---- sabotage status ---- */

  .sabbadge {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: 0.63rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    font-weight: 700;
    padding: 0.18rem 0.5rem;
    border-radius: 2px;
    border: 1px solid;
    white-space: nowrap;
  }
  .sabbadge--unknown   { color: var(--muted); border-color: var(--rule-soft); background: var(--ink-800); }
  .sabbadge--untouched    { color: var(--gold-300); border-color: var(--rule); background: color-mix(in oklab, var(--gold-500) 14%, transparent); }
  .sabbadge--sabotaged { color: #0a0d14; border-color: #b3c0d1; background: #93a2b6; }
  /* The struck-through mark, so status does not rest on colour alone. */
  .sabbadge--sabotaged::before {
    content: "✕";
    font-size: 0.78em;
    font-weight: 900;
  }

  .sabblock {
    border: 1px solid var(--rule-soft);
    border-inline-start: 3px solid var(--rule);
    border-radius: var(--radius);
    background: var(--ink-850);
    padding: 0.75rem 0.85rem;
  }
  .sabblock--sabotaged { border-inline-start-color: #93a2b6; background: color-mix(in oklab, #6c7b91 12%, var(--ink-850)); }
  .sabblock--untouched    { border-inline-start-color: var(--gold-500); }
  .sabblock--unknown   { border-inline-start-color: var(--ink-600); }

  .sabblock__head { display: flex; align-items: center; gap: 0.55rem; flex-wrap: wrap; font-size: 0.76rem; }
  .sabblock__blurb { font-size: 0.82rem; color: var(--parchment); margin-block-start: 0.4rem; }
  .sabblock__note {
    font-size: 0.8rem;
    color: var(--muted);
    margin-block-start: 0.4rem;
    padding-inline-start: 0.6rem;
    border-inline-start: 2px solid var(--rule-soft);
    text-wrap: pretty;
  }
  .sabblock__actions { margin-block-start: 0.7rem; gap: 0.35rem; }
  .sabblock .hint { margin-block-start: 0.5rem; }

  .stat__sub { font-size: 0.68rem !important; color: var(--muted) !important; font-weight: 400 !important; margin-block-start: 0.1rem; }

  .estimate-note {
    font-size: 0.74rem;
    color: var(--muted);
    line-height: 1.45;
    margin-block-start: 0.5rem;
    text-wrap: pretty;
  }

  /* The game's own headline number for a building. Given its own frame so it
     never reads as one of our estimates. */
  .appraisal {
    border: 1px solid var(--rule-hard);
    border-radius: var(--radius);
    background:
      linear-gradient(180deg, color-mix(in oklab, var(--gold-500) 9%, transparent), transparent),
      var(--ink-950);
    padding: 0.75rem 0.85rem;
  }
  .appraisal__value {
    font-family: var(--font-mono);
    font-size: clamp(1.15rem, 0.9rem + 1vw, 1.5rem);
    font-weight: 700;
    color: var(--gold-200);
    letter-spacing: -0.01em;
    line-height: 1.15;
  }
  .appraisal__meta { font-size: 0.78rem; color: var(--gold-300); margin-block-start: 0.3rem; font-family: var(--font-mono); }
  .appraisal__note { font-size: 0.72rem; color: var(--muted); margin-block-start: 0.4rem; }

  /* One list of everyone with a stake, deed holder first. */
  .ownerlist {
    list-style: none;
    display: flex; flex-direction: column; gap: 1px;
    background: var(--rule-soft);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius);
    overflow: hidden;
  }
  .ownerlist li {
    background: var(--ink-850);
    padding: 0.5rem 0.7rem;
    display: grid;
    grid-template-columns: 2.9rem 1fr;
    gap: 0.1rem 0.6rem;
    align-items: baseline;
    font-size: 0.85rem;
  }
  .ownerlist li.is-deed { background: color-mix(in oklab, var(--gold-500) 9%, var(--ink-850)); }
  .ol-role {
    font-family: var(--font-display);
    font-size: 0.56rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--gold-500);
    text-align: end;
  }
  .ownerlist li:not(.is-deed) .ol-role { font-family: var(--font-mono); font-size: 0.75rem; letter-spacing: 0; color: var(--muted); }
  .ol-name { font-weight: 600; color: var(--parchment); }
  .ol-npc {
    font-size: 0.58rem; letter-spacing: 0.1em; text-transform: uppercase;
    color: var(--muted); border: 1px solid var(--rule-soft); border-radius: 2px;
    padding: 0.05rem 0.28rem; margin-inline-start: 0.3rem; vertical-align: 0.1em;
  }
  .ol-meta { grid-column: 2; color: var(--muted); font-size: 0.75rem; }
  .ol-meta:empty { display: none; }

  .historylist { list-style: none; display: flex; flex-direction: column; gap: 0.45rem; font-size: 0.78rem; }
  .historylist li { display: flex; gap: 0.5rem; color: var(--muted); border-inline-start: 2px solid var(--rule-soft); padding-inline-start: 0.6rem; }
  .historylist b { color: var(--parchment); font-weight: 600; }
}

/* ---------------------------- NOTICES ----------------------------------- */

@layer components {
  .notice {
    border: 1px solid var(--rule-soft);
    border-inline-start: 3px solid var(--gold-600);
    border-radius: var(--radius);
    background: color-mix(in oklab, var(--gold-500) 6%, transparent);
    padding: 0.7rem 0.85rem;
    font-size: 0.8rem;
    line-height: 1.5;
    color: var(--muted);
    text-wrap: pretty;
  }
  .notice strong { color: var(--parchment); }
  .notice--warn { border-inline-start-color: var(--red); background: color-mix(in oklab, var(--red) 7%, transparent); }
  .notice--danger { border-inline-start-color: var(--red); background: color-mix(in oklab, var(--red) 12%, transparent); color: var(--parchment); }

  .callout {
    border-block: 1px solid var(--rule);
    padding-block: 0.9rem;
    margin-block: 1.25rem;
    color: var(--parchment);
    text-wrap: pretty;
  }

  .err { color: var(--red); font-size: 0.82rem; margin-block-start: 0.4rem; }
  .err[hidden] { display: none; }
}

/* ------------------------------ SHEETS ---------------------------------- */

@layer components {
  .stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
    gap: 1px;
    background: var(--rule-soft);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius);
    overflow: hidden;
    margin-block-end: 1.5rem;
  }
  .stat { background: var(--ink-850); padding: 0.85rem 1rem; }
  .stat dt { font-family: var(--font-display); font-size: 0.6rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--gold-600); }
  .stat dd { font-size: 1.35rem; font-weight: 600; color: var(--gold-200); font-variant-numeric: tabular-nums; margin-block-start: 0.2rem; line-height: 1.1; }

  .docket__controls { display: flex; gap: 1rem; align-items: center; flex-wrap: wrap; margin-block-end: 1rem; }
  .docket__controls input[type="search"] {
    background: var(--ink-950);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius);
    padding: 0.55rem 0.75rem;
    min-block-size: 2.5rem;
    flex: 1 1 22rem;
    max-inline-size: 32rem;
    font-size: 1rem;
  }
  .check { display: inline-flex; align-items: center; gap: 0.45rem; font-size: 0.85rem; color: var(--muted); cursor: pointer; }
  .check input { accent-color: var(--gold-500); inline-size: 1.05rem; block-size: 1.05rem; }

  .tablewrap { overflow-x: auto; border: 1px solid var(--rule-soft); border-radius: var(--radius); }

  table.docket, table.calib { inline-size: 100%; font-size: 0.85rem; }
  table.calib { font-size: 0.82rem; }
  table.calib caption { text-align: start; padding: 0.6rem 0.8rem; color: var(--muted); font-size: 0.75rem; }

  :is(table.docket, table.calib) th {
    text-align: start;
    font-family: var(--font-display);
    font-size: 0.64rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--gold-500);
    font-weight: 600;
    background: var(--ink-850);
    border-block-end: 1px solid var(--rule);
    padding: 0;
    white-space: nowrap;
    position: sticky;
    inset-block-start: 0;
    z-index: 2;
  }
  table.calib th { position: static; }
  :is(table.docket, table.calib) td {
    padding: 0.6rem 0.8rem;
    border-block-end: 1px solid var(--rule-soft);
    vertical-align: top;
  }
  table.docket tbody tr:hover td { background: color-mix(in oklab, var(--gold-500) 5%, transparent); }
  table.docket tbody tr { cursor: pointer; }
  table.docket tbody tr.is-removed td { opacity: 0.5; }

  .th-sort {
    background: none;
    border: 0;
    font: inherit;
    color: inherit;
    letter-spacing: inherit;
    text-transform: inherit;
    cursor: pointer;
    padding: 0.7rem 0.8rem;
    inline-size: 100%;
    text-align: start;
    min-block-size: 2.5rem;
  }
  .th-sort:hover { color: var(--gold-200); }
  .th-sort[data-dir]::after { content: " ▲"; font-size: 0.7em; }
  .th-sort[data-dir="desc"]::after { content: " ▼"; }

  table.docket th:not(:has(.th-sort)) { padding: 0.7rem 0.8rem; }

  .cell-name { font-weight: 600; color: var(--parchment); }
  .cell-sub { display: block; font-size: 0.72rem; color: var(--muted); font-weight: 400; margin-block-start: 0.1rem; }
  .cell-coords { font-family: var(--font-mono); font-size: 0.75rem; color: var(--gold-300); white-space: nowrap; }
  .copy-mini {
    background: transparent;
    border: 1px solid var(--rule-soft);
    color: var(--gold-500);
    border-radius: 2px;
    padding: 0.2rem 0.4rem;
    font-size: 0.65rem;
    cursor: pointer;
    margin-inline-start: 0.35rem;
    min-block-size: 1.6rem;
  }
  .copy-mini:hover { border-color: var(--gold-400); color: var(--gold-200); background: var(--ink-800); }
  .copy-mini.is-copied { color: var(--green); border-color: var(--green); }

  .docket__empty { text-align: center; padding: 3rem 1rem; color: var(--muted); }
}

/* --------------------------- STANDING ORDERS ----------------------------- */

@layer components {
  .order { margin-block-end: 2.25rem; }
  .order h2 {
    font-family: var(--font-display);
    font-size: 1.05rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    color: var(--gold-300);
    margin-block-end: 0.6rem;
    padding-block-end: 0.45rem;
    border-block-end: 1px solid var(--rule-soft);
  }
  .order p { margin-block-end: 0.8rem; max-inline-size: 68ch; text-wrap: pretty; color: var(--text); }
  .order p:last-child { margin-block-end: 0; }
  .order strong { color: var(--gold-200); }
  .order em { color: var(--parchment); font-style: italic; }

  .statelist {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    margin-block: 0 1rem;
    padding-inline-start: 0.2rem;
  }
  .statelist li { display: flex; align-items: flex-start; gap: 0.7rem; max-inline-size: 68ch; }
  .statelist .pin { margin-block-start: 0.42rem; }

  .order--rule {
    border: 1px solid var(--rule);
    border-radius: var(--radius);
    padding: 1.25rem 1.4rem;
    background: color-mix(in oklab, var(--gold-500) 5%, transparent);
  }
  .order--rule h2 { margin-block-start: 0; }
}

/* ------------------------------ MODALS ---------------------------------- */

@layer components {
  .modal {
    padding: 0;
    border: 1px solid var(--rule);
    border-radius: var(--radius);
    background: var(--ink-850);
    color: var(--text);
    inline-size: min(34rem, calc(100vw - 2rem));
    max-block-size: min(88dvh, 54rem);
    box-shadow: var(--shadow-panel);
    overflow: visible;
  }
  .modal--wide { inline-size: min(52rem, calc(100vw - 2rem)); }
  .modal::backdrop { background: rgb(4 6 10 / 0.72); backdrop-filter: blur(3px); }

  .modal__form { display: flex; flex-direction: column; max-block-size: inherit; }

  .modal__head {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem 1.25rem;
    border-block-end: 1px solid var(--rule);
    background: linear-gradient(180deg, color-mix(in oklab, var(--gold-500) 8%, transparent), transparent);
    flex: 0 0 auto;
  }
  .modal__head h2 { flex: 1; }
  .modal__x {
    background: transparent; border: 1px solid transparent; color: var(--muted);
    font-size: 1.5rem; line-height: 1; cursor: pointer;
    min-inline-size: 2.25rem; min-block-size: 2.25rem; border-radius: var(--radius);
  }
  .modal__x:hover { color: var(--gold-200); border-color: var(--rule); }

  .modal__body { padding: 1.25rem; overflow-y: auto; display: flex; flex-direction: column; gap: 1.25rem; flex: 1 1 auto; min-block-size: 0; }
  .modal__intro { font-size: 0.88rem; color: var(--muted); text-wrap: pretty; }

  .modal__foot {
    display: flex; align-items: center; gap: 0.6rem;
    padding: 0.9rem 1.25rem;
    border-block-start: 1px solid var(--rule);
    background: var(--ink-900);
    flex: 0 0 auto;
    flex-wrap: wrap;
  }
  .modal__attrib { font-size: 0.74rem; color: var(--muted); }
  .spacer { flex: 1 1 auto; }

  .fs {
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius);
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
  }
  .fs--plain { border: 0; padding: 0; }
  .fs > legend {
    font-family: var(--font-display);
    font-size: 0.64rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--gold-500);
    padding-inline: 0.45rem;
    margin-inline-start: -0.45rem;
  }

  .field { display: flex; flex-direction: column; gap: 0.3rem; min-inline-size: 0; }
  .field > label { font-size: 0.78rem; font-weight: 600; color: var(--parchment); letter-spacing: 0.01em; }
  .req { color: var(--gold-400); }

  .field :is(input, select, textarea) {
    background: var(--ink-950);
    border: 1px solid var(--rule-soft);
    border-radius: var(--radius);
    padding: 0.55rem 0.7rem;
    min-block-size: 2.6rem;
    font-size: 1rem;
    inline-size: 100%;
  }
  .field textarea { min-block-size: 4.5rem; resize: vertical; line-height: 1.5; }
  .field :is(input, select, textarea):hover { border-color: var(--rule); }
  .field :is(input, select, textarea):focus { border-color: var(--gold-500); }
  .field :is(input, textarea):user-invalid { border-color: var(--red); }
  .field :is(input, textarea)::placeholder { color: color-mix(in oklab, var(--muted) 65%, transparent); }
  .field select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--gold-500) 50%), linear-gradient(135deg, var(--gold-500) 50%, transparent 50%); background-position: calc(100% - 1.1rem) 1.15rem, calc(100% - 0.75rem) 1.15rem; background-size: 0.35rem 0.35rem; background-repeat: no-repeat; padding-inline-end: 2rem; }

  .hint { font-size: 0.72rem; color: var(--muted); line-height: 1.4; }
  .hint--block { margin-block-end: 0.2rem; }

  .grid { display: grid; gap: 0.85rem; }
  .grid--2 { grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); }
  .grid--3 { grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr)); }
  .row { display: flex; gap: 0.7rem; align-items: center; flex-wrap: wrap; }
  .lookup-status { font-size: 0.76rem; color: var(--muted); }

  .radio { display: flex; gap: 0.6rem; align-items: flex-start; padding: 0.6rem 0.7rem; border: 1px solid var(--rule-soft); border-radius: var(--radius); cursor: pointer; font-size: 0.85rem; color: var(--muted); }
  .radio:hover { border-color: var(--rule); background: var(--ink-800); }
  .radio:has(:checked) { border-color: var(--gold-500); background: color-mix(in oklab, var(--gold-500) 8%, transparent); }
  .radio input { accent-color: var(--gold-500); margin-block-start: 0.2rem; inline-size: 1.05rem; block-size: 1.05rem; flex: 0 0 auto; }
  .radio strong { color: var(--parchment); }

  .candidates { display: flex; flex-direction: column; gap: 0.4rem; max-block-size: 15rem; overflow-y: auto; }
  .candidate {
    display: flex; gap: 0.7rem; align-items: baseline;
    inline-size: 100%; text-align: start;
    background: var(--ink-950); border: 1px solid var(--rule-soft); border-radius: var(--radius);
    padding: 0.55rem 0.7rem; cursor: pointer; font-size: 0.82rem; color: var(--text);
    min-block-size: 2.5rem;
  }
  .candidate:hover { border-color: var(--gold-500); background: var(--ink-800); }
  .candidate .c-area { font-family: var(--font-mono); color: var(--gold-300); font-weight: 500; }
  .candidate .c-name { flex: 1; color: var(--parchment); }
  .candidate .c-tag { font-size: 0.7rem; color: var(--muted); }

  .ownerrows { display: flex; flex-direction: column; gap: 0.5rem; }
  .ownerrow {
    display: grid;
    grid-template-columns: 3.6rem minmax(7rem, 1.5fr) 3.2rem 4.2rem minmax(4.5rem, 0.8fr) minmax(5.5rem, 1fr) minmax(5rem, 0.9fr) 2.25rem;
    gap: 0.4rem;
    align-items: center;
  }
  .ownerrow input[type="text"], .ownerrow input[type="number"], .ownerrow select {
    background: var(--ink-950); border: 1px solid var(--rule-soft); border-radius: var(--radius);
    padding: 0.4rem 0.5rem; min-block-size: 2.4rem; font-size: 0.85rem; inline-size: 100%;
  }
  :is(.ownerrow__deed, .ownerrow__npc) {
    display: flex; flex-direction: column; align-items: center; gap: 0.1rem;
    font-size: 0.56rem; letter-spacing: 0.08em; text-transform: uppercase;
    color: var(--muted); cursor: pointer; min-block-size: 2.4rem;
    justify-content: center;
    border: 1px solid var(--rule-soft); border-radius: var(--radius);
  }
  :is(.ownerrow__deed, .ownerrow__npc):has(:checked) {
    border-color: var(--gold-500);
    background: color-mix(in oklab, var(--gold-500) 12%, transparent);
    color: var(--gold-200);
  }
  :is(.ownerrow__deed, .ownerrow__npc) input { accent-color: var(--gold-500); inline-size: 0.9rem; block-size: 0.9rem; }
  .ownerrow .rm {
    background: transparent; border: 1px solid var(--rule-soft); color: var(--red);
    border-radius: var(--radius); cursor: pointer; min-block-size: 2.4rem; min-inline-size: 2.25rem;
  }
  .ownerrow .rm:hover { border-color: var(--red); background: color-mix(in oklab, var(--red) 12%, transparent); }

  @media (width < 52rem) {
    .ownerrow {
      grid-template-columns: 3.6rem minmax(0, 1fr) 3.2rem 2.25rem;
      grid-auto-rows: auto;
    }
    .ownerrow > :nth-child(n+4):not(.rm) { grid-column: 1 / -1; }
  }

  /* Sticks to the bottom of the scrolling body, so the figure updates in view
     while the area and floor count are being typed rather than below the fold. */
  .estimate-preview {
    border: 1px solid var(--rule);
    border-radius: var(--radius);
    /* Opaque: it overlaps the fields it floats above, so nothing may show through. */
    background:
      linear-gradient(color-mix(in oklab, var(--gold-500) 9%, transparent),
                      color-mix(in oklab, var(--gold-500) 9%, transparent)),
      var(--ink-800);
    padding: 0.85rem 1rem;
    position: sticky;
    inset-block-end: -1.25rem;
    margin-block-end: -0.25rem;
    box-shadow: 0 -8px 20px -12px rgb(0 0 0 / 0.9);
  }
  .estimate-preview[hidden] { display: none; }
  .estimate-preview p { margin-block-end: 0.35rem; }
  .estimate-preview p:last-child { margin-block-end: 0; }
}

/* ------------------------------ TOAST ----------------------------------- */

@layer components {
  .toast {
    position: fixed;
    inset-block-end: 1.5rem;
    inset-inline: 0;
    margin-inline: auto;
    inline-size: fit-content;
    max-inline-size: calc(100vw - 2rem);
    background: var(--ink-800);
    border: 1px solid var(--gold-500);
    border-radius: var(--radius);
    padding: 0.7rem 1.1rem;
    font-size: 0.85rem;
    color: var(--parchment);
    box-shadow: var(--shadow-panel);
    z-index: 9999;
    animation: toast-in 0.22s var(--ease);
    --animation-reduced: none;
  }
  .toast[hidden] { display: none; }
  .toast--bad { border-color: var(--red); color: var(--red); }
  .toast--good { border-color: var(--green); color: var(--green); }

  @keyframes toast-in {
    from { opacity: 0; translate: 0 0.75rem; }
    to { opacity: 1; translate: 0 0; }
  }
}

/* ---------------------------- UTILITIES --------------------------------- */

@layer utilities {
  .visually-hidden {
    position: absolute;
    clip-path: inset(50%);
    overflow: hidden;
    inline-size: 1px;
    block-size: 1px;
    margin: -1px;
    padding: 0;
    border: 0;
    white-space: nowrap;
  }
  [hidden] { display: none !important; }
}

/* --------------------------- RESPONSIVE --------------------------------- */

@media (width < 62rem) {
  .mastnav__link { font-size: 0.68rem; padding: 0.5rem 0.6rem; letter-spacing: 0.08em; }
  .brand__sub { letter-spacing: 0.3em; }
  #file-entry-btn span[aria-hidden] { display: none; }
}

@media (width < 52rem) {
  :root { --masthead-h: auto; }
  .masthead { flex-wrap: wrap; padding-block: 0.6rem; gap: 0.6rem 1rem; }
  .mastnav { order: 3; inline-size: 100%; margin-inline-start: 0; overflow-x: auto; }
  .masthead__right { margin-inline-start: auto; }

  #view-register.is-active { grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); }
  .detail {
    grid-column: 1;
    grid-row: 1;
    position: absolute;
    inset-block-end: 0;
    inset-inline: 0;
    max-block-size: 68%;
    border-inline-start: 0;
    border-block-start: 2px solid var(--gold-600);
    border-start-start-radius: 8px;
    border-start-end-radius: 8px;
  }
  .maprail { inline-size: calc(100% - 1.7rem); }
  .maprail__hint { display: none; }
  .identity__name { max-inline-size: 7rem; }
}

@media (prefers-reduced-motion: reduce) {
  .toast { animation: var(--animation-reduced); }
  * { transition-duration: 0.01ms !important; }
}

/* Forced colors: never let gold-on-navy be the only signal. */
@media (forced-colors: active) {
  .btn, .modal, .maprail, .coordblock, .fs, .notice { border: 1px solid ButtonText; }
  .btn--gold { border: 2px solid ButtonText; }
  .coordblock.is-copied, .copy-mini.is-copied { outline: 2px solid Highlight; }
}
