/* ==========================================================================
   Tenpoint portal — application chrome.
   Denser than the marketing stylesheet on purpose: 13–14px base, tight rows,
   panel widgets.

   Palette follows assets/home.css so the two surfaces stop drifting apart:
   #006994 deep blue, a blue-tinted neutral ramp, #87ceeb as a bright chip on
   dark. The previous violet-cast greys existed to push an orange accent
   forward; with a blue brand they fight it, so the whole ramp is re-tinted to
   the blue family.

   Two things here do NOT come from the marketing sheet, because an app is not
   a page:

   - The ramp is monotonic and ends near-black at --gray-950, but the rail is
     --slab (#15405a). Same reasoning as marketing: text ink can be near-black,
     a full-height slab of it cannot.
   - #006994 is too dark to serve as a focus ring on that slab (1.6:1). The
     rail overrides the ring to --sky. A focus indicator that cannot be seen on
     the surface it lands on is not an indicator.
   ========================================================================== */

:root {
  /* Ramp, then aliased by role. Changing the palette should be one line here,
     not a search and replace through the file. */
  --gray-0:   #ffffff;
  --gray-25:  #f8fafc;
  --gray-50:  #eff5f9;
  --gray-75:  #e7eff5;
  --gray-100: #dbe6ed;
  --gray-200: #c6d6e1;
  --gray-300: #9fb4c2;
  /* --muted. Tuned against the DARKEST surface it lands on (--gray-75, inside
     .tag--grey), not against white: on white it had headroom at 5.4:1 while
     sitting at 4.2:1 in a tag and 4.47:1 on --bg. Measuring only the easy
     background is how those two shipped failing. */
  --gray-400: #566d7a;
  --gray-600: #4a5c66;
  --gray-700: #35505f;
  --gray-800: #1c3d4d;
  --gray-900: #0d2b3a;
  --gray-950: #08202c;

  --ink:      var(--gray-950);
  --ink-2:    var(--gray-900);
  --ink-3:    var(--gray-800);

  /* The full-bleed dark surface: rail, login field, skip link. Deliberately
     lighter than --ink — see the header note. */
  --slab:     #15405a;

  --accent:   #006994;
  --accent-h: #0a7fb0; /* hover — lighter, because the fill carries white text */
  --sky:      #87ceeb; /* bright chip on dark: rail focus, active nav, glows */

  --bg:       var(--gray-50);
  --card:     var(--gray-0);
  --line:     var(--gray-100);
  --line-2:   var(--gray-75);

  --text:     var(--gray-900);
  --text-2:   var(--gray-600);
  --muted:    var(--gray-400);

  --ok:       #14663f;
  --ok-bg:    #e6f6ee;
  --warn:     #a15200;
  --warn-bg:  #fff3e0;
  --bad:      #b3261e;
  --bad-bg:   #fdecea;
  /* Info is the brand blue, not a separate one. A true blue (#1b4bb8) beside
     a teal brand reads as a mistake rather than a second meaning. */
  --info:     #00506f;
  --info-bg:  #e2eef5;

  /* 85, not 78. At 78 the widest label ("Organizations") overflowed the nav's
     content box, and .rail__nav sets overflow-y: auto — which per spec forces
     the other axis to compute to auto as well, so a horizontal scrollbar
     appeared inside the rail. */
  --rail-w:   85px;
  --top-h:    52px;

  --sans: "Segoe UI Variable Text", "Segoe UI", -apple-system, BlinkMacSystemFont,
          Inter, Roboto, "Helvetica Neue", Arial, sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }
html, body { height: 100%; }
body {
  margin: 0;
  font-family: var(--sans);
  font-size: 14px;
  line-height: 1.5;
  color: var(--text);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
}
svg { display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; }
h1, h2, h3, h4 { margin: 0; font-weight: 650; letter-spacing: -.015em; }
ul { margin: 0; padding: 0; list-style: none; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 3px; }

.skip { position: absolute; left: -9999px; }
.skip:focus { left: 8px; top: 8px; z-index: 999; background: var(--slab); color: #fff; padding: 8px 14px; border-radius: 6px; }

/* ---------- Shell --------------------------------------------------------- */
.app { display: grid; grid-template-columns: var(--rail-w) 1fr; min-height: 100vh; }
.app.is-collapsed { --rail-w: 56px; }
.main { display: flex; flex-direction: column; min-width: 0; }

/* ---------- Icon rail ----------------------------------------------------- */
.rail {
  background: var(--slab);
  display: flex; flex-direction: column;
  position: sticky; top: 0; height: 100vh;
}

/* #006994 on #15405a is 1.6:1 — a ring nobody can see. Keyboard users navigate
   the rail constantly, so it gets the bright chip instead. */
.rail :focus-visible { outline-color: var(--sky); }
.rail__brand {
  height: var(--top-h); display: grid; place-items: center; flex-shrink: 0;
  border-bottom: 1px solid rgba(255, 255, 255, .08);
}
.rail__brand svg { width: 26px; height: 26px; }
/* overflow-x is set explicitly. Per spec, an overflow value other than visible
   on one axis forces the other to compute to auto — so `overflow-y: auto` alone
   was enough to put a horizontal scrollbar in the rail the moment a label was a
   fraction of a pixel too wide. The vertical scroll is wanted; the horizontal
   one never is. */
.rail__nav { padding: 8px 6px; display: grid; gap: 2px; overflow-y: auto; overflow-x: hidden; }
.rail__item {
  display: grid; justify-items: center; gap: 4px;
  /* 3px, not 4. "Organizations" is one unbreakable word measuring 64.3px, and
     4px padding left it 64px — clipping by a third of a pixel is still
     clipping, and with overflow-x hidden it would be silent. */
  padding: 9px 3px; border-radius: 7px; cursor: pointer;
  color: #a9c6d6; font-size: 10.5px; line-height: 1.2; text-align: center;
  border: 0; background: none; width: 100%;
  transition: background-color .14s ease, color .14s ease;
}
.rail__item svg { width: 19px; height: 19px; }
.rail__item:hover { background: rgba(255, 255, 255, .08); color: #e2eef5; }
.rail__item.is-on { background: rgba(135, 206, 235, .18); color: #fff; }
.rail__item.is-on svg { color: var(--sky); }
.is-collapsed .rail__item span { display: none; }
.rail__foot { margin-top: auto; padding: 8px 6px; border-top: 1px solid rgba(255, 255, 255, .08); }

/* The chevron points the way it will go: "<" to collapse, ">" to expand.
   A static "<" while already collapsed reads as a dead control. */
[data-collapse] svg { transition: transform .16s ease; }
.is-collapsed [data-collapse] svg { transform: rotate(180deg); }

/* ---------- Top bar ------------------------------------------------------- */
.top {
  height: var(--top-h); flex-shrink: 0;
  background: var(--card); border-bottom: 1px solid var(--line);
  display: flex; align-items: center; gap: 14px; padding: 0 16px;
  position: sticky; top: 0; z-index: 20;
}
.top__crumb { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--muted); min-width: 0; }
.top__crumb a:hover { color: var(--text); }
.top__crumb b { color: var(--text); font-weight: 650; font-size: 14.5px; }
/* Was --gray-300, which measured 2.15:1. A breadcrumb separator is close enough
   to decorative to argue about, but it is cheaper to make it pass than to have
   the argument. --gray-300 stays a border/decoration tone only. */
.top__crumb .sep { color: var(--muted); }
.top__actions { margin-left: auto; display: flex; align-items: center; gap: 6px; }

.search {
  display: flex; align-items: center; gap: 7px;
  border: 1px solid var(--line); border-radius: 6px; background: var(--gray-25);
  padding: 5px 9px; width: 230px; color: var(--muted);
}
.search svg { width: 14px; height: 14px; flex-shrink: 0; }
.search input { border: 0; background: none; outline: 0; font: inherit; font-size: 13px; width: 100%; color: var(--text); }
.search kbd {
  font: inherit; font-size: 10px; color: var(--muted); background: #fff;
  border: 1px solid var(--line); border-radius: 3px; padding: 1px 4px;
}

.iconbtn {
  width: 30px; height: 30px; display: grid; place-items: center;
  border: 0; background: none; border-radius: 6px; cursor: pointer; color: var(--text-2);
}
.iconbtn:hover { background: var(--line-2); color: var(--text); }
.iconbtn svg { width: 17px; height: 17px; }

.avatar {
  width: 28px; height: 28px; border-radius: 50%; border: 0; cursor: pointer;
  background: var(--ink-3); color: #fff; font-size: 11px; font-weight: 650;
  display: grid; place-items: center; letter-spacing: .02em;
}

/* ---------- Dropdown ------------------------------------------------------ */
.menu { position: relative; }
.menu__pop {
  position: absolute; right: 0; top: calc(100% + 6px); min-width: 190px;
  background: var(--card); border: 1px solid var(--line); border-radius: 8px;
  box-shadow: 0 8px 28px rgba(13, 43, 58, .16); padding: 5px; z-index: 40;
}
.menu__pop[hidden] { display: none; }
.menu__pop a, .menu__pop button {
  display: flex; align-items: center; gap: 9px; width: 100%;
  padding: 7px 10px; border-radius: 6px; font-size: 13px; border: 0; background: none;
  cursor: pointer; text-align: left; color: var(--text);
}
.menu__pop a:hover, .menu__pop button:hover { background: var(--line-2); }
.menu__pop svg { width: 15px; height: 15px; color: var(--muted); }
.menu__sep { height: 1px; background: var(--line); margin: 5px 0; }
.menu__head { padding: 8px 10px 6px; border-bottom: 1px solid var(--line); margin-bottom: 4px; }
.menu__head b { display: block; font-size: 13px; }
.menu__head span { font-size: 11.5px; color: var(--muted); }

/* ---------- Page ---------------------------------------------------------- */
.page { padding: 18px 20px 40px; flex: 1; min-width: 0; }
.page__head { display: flex; align-items: center; gap: 14px; margin-bottom: 16px; flex-wrap: wrap; }
.page__head h1 { font-size: 19px; }
.page__head .sub { font-size: 12.5px; color: var(--muted); }
.page__head .spacer { margin-left: auto; }

/* ---------- Buttons ------------------------------------------------------- */
.btn {
  display: inline-flex; align-items: center; gap: 7px; cursor: pointer;
  padding: 6px 13px; border-radius: 6px; font-size: 13px; font-weight: 600;
  border: 1px solid var(--line); background: var(--card); color: var(--text);
  transition: background-color .14s ease, border-color .14s ease;
}
.btn:hover { background: var(--gray-25); border-color: var(--gray-200); }
.btn svg { width: 14px; height: 14px; }
.btn--primary { background: var(--accent); border-color: var(--accent); color: #fff; }
.btn--primary:hover { background: var(--accent-h); border-color: var(--accent-h); }
.btn--sm { padding: 4px 9px; font-size: 12px; }
.btn--danger { color: var(--bad); }
.btn--danger:hover { background: var(--bad-bg); border-color: #f3c6c2; }

/* ---------- Panels -------------------------------------------------------- */
.panel { background: var(--card); border: 1px solid var(--line); border-radius: 7px; overflow: hidden; }
.panel + .panel { margin-top: 14px; }
.panel__head {
  display: flex; align-items: center; gap: 9px;
  padding: 9px 13px; border-bottom: 1px solid var(--line); background: var(--gray-25);
}
.panel__head h2, .panel__head h3 { font-size: 13px; font-weight: 650; }
.panel__head .chev { color: var(--muted); }
.panel__head .spacer { margin-left: auto; }
.panel__body { padding: 14px; }
.panel__body--flush { padding: 0; }
.panel__foot {
  padding: 8px 13px; border-top: 1px solid var(--line); background: var(--gray-25);
  display: flex; align-items: center; gap: 10px; font-size: 12px; color: var(--muted);
}

.grid { display: grid; gap: 14px; }
.grid-2 { grid-template-columns: repeat(2, 1fr); }
.grid-3 { grid-template-columns: repeat(3, 1fr); }
.grid-4 { grid-template-columns: repeat(4, 1fr); }

/* ---------- KPI tiles ----------------------------------------------------- */
.kpi {
  background: var(--card); border: 1px solid var(--line); border-radius: 7px; padding: 12px 14px;
}
.kpi b { display: block; font-size: 24px; font-weight: 650; letter-spacing: -.02em; line-height: 1.1; }
.kpi span { font-size: 11px; color: var(--muted); text-transform: uppercase; letter-spacing: .07em; font-weight: 600; }
.kpi--alert b { color: var(--bad); }

/* ---------- Tables -------------------------------------------------------- */
.tbl { width: 100%; border-collapse: collapse; font-size: 13px; }
.tbl th, .tbl td { padding: 9px 13px; text-align: left; border-bottom: 1px solid var(--line-2); }
.tbl thead th {
  background: var(--gray-25); font-size: 10.5px; text-transform: uppercase; letter-spacing: .08em;
  color: var(--muted); font-weight: 700; white-space: nowrap; border-bottom-color: var(--line);
}
.tbl tbody tr:last-child td { border-bottom: 0; }
.tbl tbody tr:hover { background: var(--gray-25); }
.tbl td.num { text-align: right; font-variant-numeric: tabular-nums; }
.tbl .strong { font-weight: 600; }
.tbl .dim { color: var(--muted); font-size: 12px; }
.tbl--click tbody tr { cursor: pointer; }
.table-scroll { overflow-x: auto; }

/* ---------- Tags ---------------------------------------------------------- */
.tag {
  display: inline-block; padding: 2px 8px; border-radius: 999px;
  font-size: 11px; font-weight: 650; white-space: nowrap;
}
.tag--ok    { background: var(--ok-bg);   color: var(--ok); }
.tag--warn  { background: var(--warn-bg); color: var(--warn); }
.tag--bad   { background: var(--bad-bg);  color: var(--bad); }
.tag--info  { background: var(--info-bg); color: var(--info); }
.tag--grey  { background: var(--gray-75);  color: var(--muted); }

/* ---------- Property cards ------------------------------------------------ */
.props { display: grid; grid-template-columns: repeat(auto-fill, minmax(310px, 1fr)); gap: 14px; }
.prop {
  display: block; background: var(--card); border: 1px solid var(--line); border-radius: 7px;
  padding: 15px 16px; transition: border-color .14s ease, box-shadow .14s ease, transform .14s ease;
}
.prop:hover { border-color: var(--gray-200); box-shadow: 0 3px 12px rgba(13, 43, 58, .09); transform: translateY(-1px); }
.prop__top { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 10px; }
.prop__top h3 { font-size: 14.5px; }
.prop__top .addr { font-size: 12px; color: var(--muted); }
.prop__badge { margin-left: auto; }
.prop__progs { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 12px; }
.prop__stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; border-top: 1px solid var(--line-2); padding-top: 10px; }
.prop__stats div b { display: block; font-size: 16px; font-weight: 650; line-height: 1.2; }
.prop__stats div span { font-size: 10.5px; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; }
.prop__stats .alert b { color: var(--bad); }

/* ---------- Forms --------------------------------------------------------- */
.form { display: grid; gap: 14px; max-width: 620px; }
.field { display: grid; gap: 5px; }
.field label { font-size: 12px; font-weight: 650; color: var(--text-2); }
.field input, .field select, .field textarea {
  font: inherit; font-size: 13px; padding: 7px 10px; border-radius: 6px;
  border: 1px solid var(--line); background: var(--card); color: var(--text);
}
.field input:focus, .field select:focus, .field textarea:focus {
  outline: 0; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(0, 105, 148, .15);
}
.field .hint { font-size: 11.5px; color: var(--muted); }
.field--row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.check { display: flex; align-items: flex-start; gap: 9px; font-size: 13px; }
.check input { margin-top: 3px; }

/* ---------- Empty / misc -------------------------------------------------- */
.empty { padding: 40px 20px; text-align: center; color: var(--muted); font-size: 13px; }
.note {
  background: var(--warn-bg); border: 1px solid #ffdcb0; border-radius: 7px;
  padding: 11px 14px; font-size: 12.5px; color: #7a3a18;
}
.note b { color: var(--warn); }

/* ---------- Login ---------------------------------------------------------
   Centred card on a deep field. Restraint is the point: this is a door people
   walk through every morning, not a place to sell to them. One background
   treatment, no pattern overlays, no marketing copy, generous spacing.

   Sized independently of .form / .field / .btn above — that scale is tuned for
   dense tables, and 36px inputs on a sign-in page look unfinished.
   -------------------------------------------------------------------------- */
.login {
  min-height: 100vh;
  display: grid;
  place-items: center;
  /* 32px, not 40 — at 720px the taller padding pushed the page 2px over and
     produced a scrollbar, which also knocked the card off centre. */
  padding: 32px 24px;
  background: var(--slab);
  position: relative;
  overflow: hidden;
}
/* A single, wide, very soft light. Nothing else. Same gesture as the marketing
   hero bloom, so the door and the front page read as one brand. */
.login::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(120% 80% at 50% -20%, rgba(135, 206, 235, .20), transparent 60%);
  pointer-events: none;
}

.login__box { position: relative; width: 100%; max-width: 424px; }

/* The wordmark, identical to the marketing sheet — the sign-in page is wide
   enough to carry it, so this is the one place in the app where the brand
   appears as type rather than as the decagon. Both colours sit higher here than
   on the marketing hero, because #15405a is darker than #006994.

   letter-spacing appends after the final character too; the negative margin
   pulls that phantom space back so the mark is optically centred. */
.login__brand {
  display: flex; align-items: center; justify-content: center;
  margin-bottom: 26px;
}
.login__brand .wordmark {
  font-size: 21px;
  font-weight: 700;
  letter-spacing: .32em;
  margin-right: -.32em;
  text-transform: uppercase;
}
.login__brand .wm-ten   { color: var(--sky); }
.login__brand .wm-point { color: #ccd5da; }

.login__card {
  background: var(--card);
  border-radius: 12px;
  padding: 40px 40px 32px;
  box-shadow: 0 1px 2px rgba(0, 0, 0, .18), 0 24px 56px rgba(0, 0, 0, .30);
}

.login__card h1 {
  font-size: 21px; letter-spacing: -.022em; font-weight: 650; margin-bottom: 7px;
}
.login__card .sub { font-size: 13.5px; color: var(--muted); margin: 0 0 30px; }

.login__field { display: grid; gap: 7px; margin-bottom: 20px; }
.login__field label { font-size: 13px; font-weight: 600; color: var(--text); }
.login__field input {
  /* 16px, not 15. Mobile Safari zooms the viewport on focus for any input
     below 16px and never zooms back out — on the sign-in page that strands
     someone mid-credential on a page they cannot see the rest of. */
  font: inherit; font-size: 16px; padding: 12px 14px;
  border: 1.5px solid var(--line); border-radius: 8px;
  background: var(--card); color: var(--text);
  transition: border-color .15s ease, box-shadow .15s ease;
}
.login__field input::placeholder { color: var(--muted); }
.login__field input:focus {
  outline: 0; border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(0, 105, 148, .18);
}

.login__row {
  display: flex; align-items: center; justify-content: space-between;
  gap: 14px; font-size: 13px; margin: 0 0 26px;
}
.login__row label {
  display: flex; align-items: center; gap: 8px; color: var(--text-2); cursor: pointer;
}
.login__row input[type="checkbox"] {
  width: 15px; height: 15px; accent-color: var(--accent); cursor: pointer;
}
.login__row a { color: var(--info); font-weight: 600; }
.login__row a:hover { text-decoration: underline; }

.login__submit {
  width: 100%; padding: 13px; border: 0; border-radius: 8px; cursor: pointer;
  background: var(--accent); color: #fff;
  font-size: 15px; font-weight: 650; letter-spacing: -.005em;
  transition: background-color .15s ease;
}
.login__submit:hover { background: var(--accent-h); }
.login__submit:active { background: #00506f; }

.login__divider {
  border: 0; border-top: 1px solid var(--line-2); margin: 28px 0 18px;
}
.login__help { font-size: 13px; color: var(--muted); text-align: center; margin: 0; }
.login__help a { color: var(--info); font-weight: 600; }
.login__help a:hover { text-decoration: underline; }

/* Deliberately quiet — visible to anyone who reads, invisible as decoration. */
.login__prototype {
  margin: 14px 0 0; text-align: center;
  font-size: 12px; color: #92b4c6;
}

.login__legal {
  margin: 22px 0 0; text-align: center;
  font-size: 12px; line-height: 1.6; color: #9fc0d2;
}

.login__error {
  margin: 0 0 20px; padding: 11px 13px; border-radius: 8px;
  background: var(--bad-bg); border: 1px solid #f3c6c2;
  font-size: 13px; line-height: 1.5; color: var(--bad);
}
.login__error[hidden] { display: none; }

.login__submit:disabled { opacity: .65; cursor: default; }

/* Dev sign-in — rendered only when the API reports AUTH_DRIVER=dev, so it
   cannot appear in a deployed environment. */
.login__dev {
  margin-top: 22px; padding: 16px; border-radius: 8px;
  background: var(--gray-25); border: 1px solid var(--line);
}
.login__dev-title {
  margin: 0 0 4px; font-size: 12px; font-weight: 700;
  letter-spacing: .07em; text-transform: uppercase; color: var(--muted);
}
.login__dev-body { margin: 0 0 12px; font-size: 12.5px; color: var(--text-2); line-height: 1.5; }
.login__dev-users { display: grid; gap: 6px; }
.login__dev-user {
  display: grid; gap: 1px; text-align: left; cursor: pointer;
  padding: 8px 11px; border-radius: 6px;
  border: 1px solid var(--line); background: var(--card);
  transition: border-color .14s ease, background-color .14s ease;
}
.login__dev-user:hover { border-color: var(--gray-200); background: var(--gray-25); }
.login__dev-user b { font-size: 13px; font-weight: 600; color: var(--text); }
.login__dev-user span { font-size: 11.5px; color: var(--muted); }

/* Tenant data stays hidden until the session resolves, so nothing flashes
   before we know who is looking. */
body[data-requires-session] .main,
body[data-requires-session] .app { opacity: 0; transition: opacity .12s ease; }
body[data-requires-session].is-ready .main,
body[data-requires-session].is-ready .app { opacity: 1; }

@media (max-width: 480px) {
  .login { padding: 28px 16px; align-content: center; }
  .login__card { padding: 30px 24px 26px; }
}

/* ---------- Admin console -------------------------------------------------
   Visually distinct from the tenant portal on purpose: staff should always be
   able to tell at a glance that they are looking across customers rather than
   inside one.
   -------------------------------------------------------------------------- */
/* Deep plum, not a darker blue. The point is that staff can tell at a glance
   they are looking ACROSS customers rather than inside one, and a hue shift
   carries that instantly where a lightness shift does not. Plum is the one dark
   hue that collides with neither the brand blue nor any status colour. */
.rail--staff { background: #332145; border-right: 2px solid var(--sky); }
.rail--staff .rail__item.is-on { background: rgba(135, 206, 235, .20); }

.admin__drawer > td { background: var(--gray-25); border-bottom: 1px solid var(--line); }
.admin__drawer-inner { padding: 12px 16px 14px 44px; }
.admin__drawer-inner .tbl th { background: transparent; }
.admin__drawer-inner .tbl td,
.admin__drawer-inner .tbl th { padding-left: 0; }

body[data-requires-admin] .app { opacity: 0; transition: opacity .12s ease; }
body[data-requires-admin].is-ready .app { opacity: 1; }

/* ---------- Responsive ---------------------------------------------------- */
@media (max-width: 900px) {
  .grid-4 { grid-template-columns: repeat(2, 1fr); }
  .grid-3, .grid-2 { grid-template-columns: 1fr; }
  .search { display: none; }
}
@media (max-width: 640px) {
  .app { grid-template-columns: 56px 1fr; }
  .rail__item span { display: none; }
  .grid-4 { grid-template-columns: 1fr; }
  .page { padding: 14px 12px 30px; }
  .field--row { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition-duration: .01ms !important; }
}
