/* The landing conversation (src/lander/ask-page.js, docs/ask.md §3 and §22),
   laid out as design/ask-landing draws it: frame 1 before an address, frame 3
   after one. The phone frames are 390px wide, and below 1000px the page is
   that one column at every width. From 1000px it is frames N1 and N2
   (AK63): two columns before an address, one 620px column after -- the
   last block of this file.

   Everything here is what stands still. What moves -- the turning models,
   the lights, the typed example, the wash, the sticker -- is written by
   public/ask-landing.js through each element's style object, and without
   script, or with reduced motion, the page is what this file alone says:
   the field ringed in solid gold, the badge flat at its angle, no lights.

   Tokens from /brand/tokens.css, the top bar from brand.css, the footer from
   lander.css. Colours that are the frames' own and no token: the five
   property tints (set per property by the script, the house's as default),
   gold for the one field to type in and for nothing else, the wash's blue
   and purple, and the grey of the visitor's own words. */

@font-face {
  font-family: "Sora";
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(/fonts/sora-latin-ext-800-normal.woff2) format("woff2");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: "Sora";
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(/fonts/sora-latin-800-normal.woff2) format("woff2");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

:root { --column: 390px; }
.talk-body { background: var(--surface); }
.talk-body .topbar { min-height: 0; padding-block: 12px; }
.talk-body .topbar a { min-height: 44px; }
.talk-body .topbar .wordmark { min-height: 0; }
.talk {
  --tint: #fde6dc;
  --accent: #f4a58f;
  display: flex;
  flex-direction: column;
  padding: 20px var(--space-4) 0;
  /* The sticker and the bubbles travel past the column's edge on purpose;
     the page root clips them, as the frame's does, and never scrolls sideways. */
  overflow-x: hidden;
  overflow-x: clip;
}

/* "Renting?" drifts through the five property colours (README, 7: kept as
   drawn for now). The colour is decoration: the link's name is its text and
   its focus ring is the page's own. */
.talk-renting { font: 600 15px/20px var(--font-sans); }
[data-rent] { color: var(--rent, #a77acb); }

/* --- Frame 1: the line, the stage ---------------------------------------- */

/* The page's two groups (src/lander/ask-page.js). On a phone neither is a box:
   their parts are the page's one column, in this order. */
.talk-lead, .talk-show { display: contents; }
.talk-line { order: 1; }
.talk-stage { order: 2; }
.talk-thread { order: 3; }
.talk-ask { order: 4; }
#talk-form { order: 5; }
.talk-challenge { order: 6; }
.talk-error { order: 7; }
.talk-extras { order: 8; }
.talk-line {
  margin: 0;
  font: 800 32px/38px var(--font-sans);
  letter-spacing: -0.015em;
  text-align: center;
  color: var(--charcoal);
}
/* The voice: the word's letters bob with a waveform that runs under them. */
.talk-voice { position: relative; display: inline-block; white-space: nowrap; }
.talk-voice > span { display: inline-block; }
.talk-voice svg { position: absolute; left: 0; bottom: -7px; width: 100%; height: 12px; overflow: visible; }
.talk-voice path { fill: none; stroke: var(--accent); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; vector-effect: non-scaling-stroke; }

.talk-stage { position: relative; height: 204px; margin-top: var(--space-4); border-block: 1px solid var(--line); }
/* The frame's own 358px canvas, centred, and shrunk by the script on a
   narrower phone so a bubble never meets the edge. */
.talk-stage-fit { position: absolute; left: 50%; top: 0; width: 358px; height: 204px; margin-left: -179px; transform-origin: 50% 0; }
.talk-model { position: absolute; top: 26px; width: 120px; height: 120px; }
.talk-model svg, .talk-figure svg { position: absolute; left: 0; top: 0; overflow: visible; }
.talk-model svg { width: 120px; height: 120px; }
.m-wire { fill: none; stroke: var(--charcoal); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
/* Sound rings: grey, never black, and none is ever left standing. */
.m-ring { fill: none; stroke: var(--ink-muted); stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; opacity: 0; }
.m-win { opacity: 0; }
.m-shade { fill: var(--charcoal); filter: blur(3px); opacity: 0; }
.m-bubble { filter: drop-shadow(0 0.5px 1px rgb(59 59 59 / 0.16)); opacity: 0; }
.m-pop { fill: none; stroke-width: 2.25; stroke-linecap: round; opacity: 0; }
.talk-says {
  position: absolute; left: 0; top: 0;
  display: flex; align-items: center; justify-content: center;
  transform-origin: 0 0;
  text-align: center; font-weight: 600; color: var(--charcoal);
  opacity: 0;
}
.talk-kinds { position: absolute; left: 0; right: 0; top: 168px; height: 26px; font: 600 16px/24px var(--font-sans); color: var(--charcoal); }
.talk-kind { position: absolute; left: 0; right: 0; top: 0; text-align: center; opacity: 0; }
.talk-kind span { display: inline-block; padding: 1px 12px; border-radius: var(--radius-sm); }

/* --- The address box ------------------------------------------------------ */

.talk-form { display: flex; flex-direction: column; gap: var(--space-2); margin: var(--space-6) 0 0; }
.talk-form label { font: 600 15px/22px var(--font-sans); }
.talk-field { position: relative; height: 56px; }
.talk-field input {
  display: block; width: 100%; height: 56px; padding: 0 14px; /* 16 from the edge, with the ring */
  font: 400 17px/24px var(--font-sans); color: var(--ink);
  background: var(--surface);
  border: 2px solid #d5d9d3;
  border-radius: 8px;
}
.talk-field input::placeholder { color: var(--ink-muted); opacity: 1; }
/* Gold marks the one field to type in, and never two (round 2). Still, its
   ring is gold all the way round; moving, the light laps a grey one. */
.talk-field.is-gold input { border-color: #f4c74a; }
.is-live .talk-field.is-gold input { border-color: #d5d9d3; }
.talk-field:not(.is-gold) .talk-light { display: none; }
.talk-field input:disabled { background: #f1f3f0; }
/* Focus is the field's own ring, in a deeper gold -- not the page's charcoal outline around it (AK65).
   Deep enough to be seen against white by itself, since it is what says where the keyboard is. */
.talk-field input:focus-visible, .is-live .talk-field.is-gold input:focus-visible { outline: none; border-color: #b8860b; }

/* In the conversation a field sends from inside itself: a 48px button at its
   right, white with a grey arrow until there is something to send, then
   charcoal with a white one. Off, and grey, while the property works. */
.talk-send {
  position: absolute; right: 4px; top: 4px; width: 48px; height: 48px;
  display: none; align-items: center; justify-content: center;
  border: 0; border-radius: 6px; background: var(--surface); color: #b8bdb7; cursor: pointer;
}
.is-talking .talk-send { display: flex; }
.is-talking .talk-field input { padding-right: 58px; }
.talk-field.has-text .talk-send { background: var(--charcoal); color: #fff; }
.talk-send[disabled] { background: #f1f3f0; color: #b8bdb7; cursor: default; }
.m-arrow { flex: none; width: 14px; height: 12px; }
.m-arrow.is-up { width: 16px; height: 18px; }
.m-arrow path { fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.m-arrow.is-up path { stroke-width: 2.25; }

/* A light on an outline: the gold one laps the field, the white ones the
   outlined rows and the renters' door, erasing the border as they pass. The
   script sizes each to its host and moves it. */
.talk-light { position: absolute; left: 0; top: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; }
.talk-light rect { fill: none; }
.talk-light.is-white { left: -1px; top: -1px; width: calc(100% + 2px); height: calc(100% + 2px); }
.talk-light.is-gold .glow { filter: blur(5px); opacity: 0.4; }
.talk-light.is-gold .glow rect { stroke: #f4c74a; }
.talk-light.is-gold .glow rect:nth-child(1) { stroke-width: 7; opacity: 0.45; }
.talk-light.is-gold .glow rect:nth-child(2) { stroke-width: 8; opacity: 0.6; }
.talk-light.is-gold .beam { opacity: 0.8; }
.talk-light.is-gold .beam rect { stroke: #f4c74a; stroke-width: 2; opacity: 0.2; }
.talk-light.is-gold .beam rect.head { stroke: #ffe7a0; opacity: 0.75; }
.talk-light.is-white rect { stroke: #fff; stroke-width: 2.5; opacity: 0.3; }
.talk-light.is-white rect.head { opacity: 1; }

/* Mint is the one main button. The wash is a soft circle clipped to the
   button's own shape, so it can never show outside it. */
.talk-go {
  position: relative; display: block; width: 100%; height: 56px; padding: 0;
  overflow: hidden; isolation: isolate; contain: paint;
  border: 0; border-radius: var(--radius-md);
  background: var(--mint); color: var(--charcoal);
  font: 600 17px/24px var(--font-sans);
  cursor: pointer;
}
.talk-go[disabled] { opacity: 0.6; cursor: default; }
.talk-go-label { position: relative; }
.talk-wash {
  --wash: 167 122 203;
  position: absolute; left: 250px; top: 30px; width: 660px; height: 660px; margin: -330px 0 0 -330px;
  border-radius: 50%; pointer-events: none;
  background: radial-gradient(circle closest-side, rgb(var(--wash) / 0.58) 0%, rgb(var(--wash) / 0.32) 36%, rgb(var(--wash) / 0.1) 68%, rgb(var(--wash) / 0) 100%);
}
.talk-free { margin: 2px 0 0; text-align: center; font: 400 15px/22px var(--font-sans); color: var(--ink-muted); }
.talk-free strong { font-weight: 600; color: var(--charcoal); }

.talk-error { margin: var(--space-3) 0 0; color: var(--danger); font: 400 15px/22px var(--font-sans); }
.talk-challenge { margin: var(--space-3) 0 0; min-height: 65px; }
.talk-challenge[hidden] { display: none; }

/* --- The sticker and the renters' door ------------------------------------ */

.talk-extras { display: flex; flex-direction: column; align-items: center; gap: 14px; margin: 44px 0 0; }
/* Applied like a sticker, and it sits three degrees crooked. */
.talk-sticker { position: relative; width: 180px; height: 50px; transform: rotate(-3deg); }
.talk-sticker-main, .talk-sticker-lift { position: absolute; left: 0; top: 0; width: 180px; height: 50px; }
.talk-sticker-lift { opacity: 0; transform-origin: 0 0; }
.talk-sticker-card { display: block; width: 180px; height: 50px; border-radius: 5px; overflow: hidden; }
.talk-sticker-card img { display: block; width: 180px; max-width: none; height: 50px; }
.talk-sticker-back { position: absolute; left: 0; top: 0; width: 180px; height: 50px; overflow: visible; opacity: 0; }
.talk-sticker-flap { fill: #f5f7f3; stroke: #c4c9c3; stroke-width: 1; stroke-linejoin: round; }
.talk-sticker-fold { fill: var(--charcoal); opacity: 0.1; }

.talk-door {
  position: relative; align-self: stretch;
  display: block; padding: 13px var(--space-4); /* 52 tall on one line; two lines on the narrowest phones */
  border: 1px solid var(--line-strong); border-radius: var(--radius-md);
  font: 600 17px/24px var(--font-sans); color: var(--charcoal); text-align: center; text-decoration: none;
}

.talk-foot { margin-top: 28px; }
/* Shown by the script only once the conversation says something about insurance (CLAUDE.md §5). */
.talk-disclaimer { margin: 0 0 var(--space-2); font: 400 12px/16px var(--font-sans); color: var(--ink-muted); }
.talk-disclaimer[hidden] { display: none; }
/* The footer's one line (AK65): the copyright and the two links, small and a lighter grey than the page's muted ink. */
.talk-legal { display: flex; flex-wrap: wrap; gap: 2px var(--space-4); margin: 0; font: 400 13px/20px var(--font-sans); color: #757575; }
.talk-legal a { color: inherit; }

/* --- Frame 3: the conversation -------------------------------------------- */

/* Once an address is in, the page is the conversation: the line, the stage,
   the sticker, the door and the mint button leave. Mint moves to what the
   property offers next. One box waits under the thread (round 2, item 5): the
   own-words box while a property is speaking, the address box before one is.
   Starting over is the address chip at the top, which opens in place into
   the address box. */
.is-talking { padding-top: var(--space-4); }
.is-talking .talk-line, .is-talking .talk-stage, .is-talking .talk-extras, .is-talking .talk-free, .is-talking .talk-go { display: none; }
.is-talking .talk-form { margin-top: var(--space-6); padding-top: 10px; border-top: 1px solid var(--line); gap: 6px; }
.is-talking.has-property #talk-form:not(.is-again) { display: none; }
.is-talking #talk-form.is-again { margin: 0 0 14px; padding-top: 0; border-top: 0; }
.talk-keep {
  display: none; align-self: flex-end; min-height: 48px; padding: 0 4px;
  border: 0; background: none; color: var(--charcoal);
  font: 600 15px/22px var(--font-sans); text-decoration: underline; cursor: pointer;
}
.is-again .talk-keep { display: block; }

.talk-thread { display: flex; flex-direction: column; }
.talk-thread[hidden] { display: none; }
.is-waiting { opacity: 0; pointer-events: none; }

/* The visitor's own words: a grey chip at the right. */
.talk-msg.from-visitor { display: flex; justify-content: flex-end; margin-top: 14px; }
.talk-msg.from-visitor:first-child { margin-top: 0; }
.talk-msg.from-visitor[hidden] { display: none; }
.talk-said {
  max-width: 100%; padding: 8px 14px;
  border: 0; border-radius: 18px 18px 5px 18px; background: #f1f3f0; color: var(--charcoal);
  font: 400 17px/24px var(--font-sans); overflow-wrap: anywhere;
}
/* The address chip is the way to start over: the address, and under it what a tap does. */
.talk-chip { text-align: right; cursor: pointer; }
.talk-chip span { display: block; }
.talk-chip-more { font: 400 15px/22px var(--font-sans); color: #5f5f5f; text-decoration: underline; }

/* The property: its model turning at the left with its address under it,
   and what it says beside it as tinted paper. There is one model (round 2,
   item 4): it stands in the rail of the newest reply, and earlier replies
   keep the rail's width, empty. */
.talk-property { display: flex; gap: 10px; margin-top: 14px; }
.talk-rail { flex: none; width: 104px; }
.talk-papers { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-2); padding-top: 4px; }
.talk-figure-col { flex: none; width: 104px; display: flex; flex-direction: column; align-items: center; gap: 2px; }
.talk-figure { position: relative; width: 104px; height: 100px; }
.talk-figure svg { width: 104px; height: 104px; }
/* One line where the address is short, as drawn; a long one wraps, and may sit a little wider than the model. */
.talk-tag { width: max-content; max-width: 124px; font: 600 14px/22px var(--font-sans); text-align: center; text-wrap: balance; overflow-wrap: anywhere; }
.talk-tag span { display: inline-block; padding: 1px 8px; border-radius: var(--radius-sm); background: var(--tint); }

.talk-msg.from-property { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-2); min-width: 0; margin-top: 14px; }
.talk-papers .talk-msg.from-property { align-self: stretch; margin-top: 0; }
.talk-bubble {
  position: relative; max-width: 100%; padding: 10px 14px;
  border-radius: 20px 22px 22px 20px; background: var(--tint);
  filter: drop-shadow(0 0.5px 1px rgb(59 59 59 / 0.16));
  font: 600 17px/24px var(--font-sans); color: var(--charcoal); overflow-wrap: anywhere;
  transform-origin: 0 50%;
}
/* Paper is cut by hand: no two corners alike, no two bubbles alike. */
.talk-bubble:nth-child(3n + 2) { border-radius: 18px 24px 20px 22px; }
.talk-bubble:nth-child(3n) { border-radius: 22px 18px 24px 20px; }
.talk-bubble p { margin: 0; }
.talk-tail { position: absolute; left: -8px; top: 15px; width: 10px; height: 14px; }
.talk-tail path { fill: var(--tint); }
/* Working: a slip in muted ink, and a highlight in the property's accent running the model's edges. */
.talk-slip { color: #5f5f5f; }
.m-trace { fill: none; stroke-width: 3.5; stroke-linecap: round; stroke-linejoin: round; }
/* A thing to open -- a guide, a phone line -- is a white row inside the paper, with an arrow at its right. */
.talk-open {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  margin-top: var(--space-2); min-height: 48px; padding: 4px 12px;
  border-radius: 8px; background: var(--surface); color: var(--charcoal);
  font: 600 17px/22px var(--font-sans); text-decoration: underline; overflow-wrap: anywhere;
}
/* The emergency decline: the number is a phone link, large enough to hit. */
.talk-call { display: inline-flex; align-items: center; min-height: 48px; font: 800 26px/32px var(--font-sans); color: inherit; }

/* A source is a white chip inside the bubble of what it supports, and it is
   never folded away on a public page. */
.talk-sources { list-style: none; display: flex; flex-direction: column; align-items: flex-start; gap: 6px; margin: var(--space-2) 0 0; padding: 0; }
.talk-sources li, .talk-copy {
  min-height: 32px; padding: 4px 10px;
  border: 1px solid rgb(59 59 59 / 0.28); border-radius: var(--radius-sm);
  background: var(--surface); color: var(--charcoal);
  font: 400 15px/22px var(--font-sans);
}
.talk-sources .source-label { color: var(--ink-muted); }
.talk-sources .source-line { font: 400 12px/16px var(--font-sans); color: var(--ink-muted); }
.talk-sources a { color: inherit; }
.talk-copy { margin: var(--space-2) 0 0; }

/* What the property offers next: one mint button under what it said, as wide
   as the paper's column; a second thing to do is outlined (round 2, item 7). */
.talk-actions { align-self: stretch; display: flex; flex-direction: column; gap: var(--space-2); }
.talk-actions .button {
  display: flex; align-items: center; justify-content: center; min-height: 50px; padding: 8px var(--space-4);
  border-radius: 10px; font: 600 17px/22px var(--font-sans); text-align: center;
}
.talk-actions .button.is-second { background: var(--surface); border: 1px solid var(--line-strong); color: var(--charcoal); }

/* What the property asks, and the answers to tap: equal outlined rows. */
.talk-msg.is-question { align-items: stretch; gap: 0; margin-top: 18px; }
.talk-question { margin: 0; font: 800 26px/32px var(--font-sans); letter-spacing: -0.015em; text-align: center; color: var(--charcoal); }
.talk-choices { align-self: stretch; display: flex; flex-direction: column; gap: var(--space-2); margin-top: var(--space-4); }
.talk-bubble + .talk-choices { margin-top: var(--space-2); }
.talk-choice {
  position: relative; min-height: 50px; padding: 12px var(--space-4);
  text-align: left; border: 1px solid var(--line-strong); border-radius: var(--radius-md);
  background: var(--surface); color: var(--charcoal);
  font: 600 17px/24px var(--font-sans); overflow-wrap: anywhere;
  cursor: pointer;
}
.talk-choice[disabled] { opacity: 0.55; cursor: default; }
.talk-choice[aria-pressed="true"] { background: var(--tint); border-color: var(--accent); }
.talk-choice[aria-pressed="true"] .talk-light { display: none; }

/* TP3: frame 3's foot, "Or say it in your own words", shown while the property takes typed questions. */
.talk-ask[hidden] { display: none; }

/* --- Desktop: frames N1 and N2 (AK63) -------------------------------------- */

/* From 1000px the page stops being the phone column. Before an address it is
   two lockups side by side -- the line and the address box on the left, the
   stage on the right at one and a half times its size (the script scales it
   to the room this gives it) -- and, under them, the sticker and the renters'
   door, centred on the page and low on it. After one it is a single 620px
   column, the model larger in its rail and the three answers to "Who am I
   talking to?" side by side. Nothing below 1000px reads any of this.

   Where this leaves frame N1 (AK64; Nick, Nov 13, 2026, looking at the live
   page): the two lockups sit close together -- the left column is as wide as
   its words, with a narrow gap -- and a little above the middle; N1 drew
   them 100px apart and centred. And the door is no longer under the stage:
   it is the page's last thing before the footer, centred. */
@media (min-width: 1000px) {
  .talk-body { min-height: 100vh; display: flex; flex-direction: column; }
  .talk-body .topbar { padding-inline: max(clamp(24px, 6.25vw, 80px), calc((100% - 1280px) / 2 + 80px)); }
  .talk-body .topbar-actions { gap: 28px; }
  .talk-body .topbar a, .talk-renting { font: 600 15px/20px var(--font-sans); }
  .talk-body .topbar .wordmark img { width: 130px; height: 24px; }

  .talk {
    flex: 1;
    width: 100%; max-width: 1280px; margin: 0 auto;
    padding: 32px clamp(24px, 6.25vw, 80px);
    display: grid;
    /* The left column is as wide as the line; the right is the stage's room. */
    grid-template-columns: max-content minmax(0, 537px);
    column-gap: clamp(24px, 3.2vw, 48px);
    /* Space above the lockups, the lockups, space, the door: two parts above to three between,
       so the lockups sit a little above the middle and the door low, just over the footer. */
    grid-template-rows: minmax(16px, 2fr) auto minmax(48px, 3fr) auto;
    justify-content: center; align-items: center;
  }
  .talk-lead { grid-column: 1; grid-row: 2; display: flex; flex-direction: column; min-width: 0; }
  /* Not a box here: the stage is the right lockup, and the sticker and the door are the page's own row. */
  .talk-show { display: contents; }
  .talk-stage { grid-column: 2; grid-row: 2; }
  .talk-extras { grid-column: 1 / -1; grid-row: 4; justify-self: center; }

  .talk-line { font: 800 52px/58px var(--font-sans); text-align: left; }
  /* The box and its button keep the width the phone frame gives them, under the line. */
  #talk-form, .talk-lead .talk-challenge, .talk-lead .talk-error { width: 358px; max-width: 100%; }
  #talk-form { margin-top: 36px; }

  .talk-stage { width: 100%; max-width: 537px; height: 306px; margin-top: 0; }
  .talk-extras { width: 358px; max-width: 100%; margin: 0; }

  .talk-foot { max-width: 1280px; padding-inline: clamp(24px, 6.25vw, 80px); margin-top: 0; padding-bottom: 22px; text-align: center; }
  .talk-legal { justify-content: center; }

  /* Frame N2: the conversation, one 620px column from the top. */
  .talk.is-talking {
    display: flex; flex-direction: column; flex: 1;
    /* The column is 620px whatever is in it: a short thread -- "Which one?" and three addresses -- is not shrunk to its words. */
    align-items: stretch;
    max-width: 620px; padding: 28px 0 32px;
  }
  .is-talking .talk-lead { display: flex; flex-direction: column; }
  .is-talking #talk-form, .is-talking .talk-lead .talk-challenge, .is-talking .talk-lead .talk-error { width: auto; }
  .is-talking #talk-form { margin-top: var(--space-6); }
  .is-talking #talk-form.is-again { margin: 0 0 14px; }
  .talk-said { max-width: 340px; }
  .talk-rail, .talk-figure-col { width: 168px; }
  .talk-figure { width: 168px; height: 164px; }
  .talk-figure svg { width: 168px; height: 168px; }
  .talk-tag { max-width: 188px; font: 600 15px/22px var(--font-sans); }
  /* The answers to a question, side by side: three across, as drawn. */
  .talk-msg.is-question .talk-choices { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
  .talk-msg.is-question .talk-choice { min-height: 56px; padding: 8px var(--space-4); text-align: center; line-height: 22px; }
}
