/* t3-tablets-portrait : responsive rules for this tier only. Every rule lives inside an @media block that can never match 1440x900. */
/* Tier: (min-width:768px) and (max-width:1023px). Sizes perfected: 768x1024, 820x1180, 834x1194, plus the landscape
   phones 844x390 and 932x430, which take the (max-height:500px) refinements at the end of the file.
   Order follows the parent stylesheet's contract: the width band first, then its narrower width refinements
   (768 to 859 for the About head, 820 and up for the nav labels), then the height refinement last.
   Round 2 (council fixes): team icon row rebuilt on the desktop's 32px pitch, rail and disc at the 44px floor,
   consent compacted and narrowed on landscape phones, contact tiles paired, nav labels at desktop size from 820,
   About head three lines at 768 to 859, card and contact titles balanced.
   Round 2 fixer pass: family drawer CLOSE at 44 for 881 to 1023, consent buttons back to 44 on landscape phones and the
   banner 24px clear of the eyebrow, instrument below the 390px fold, DIRECTIONS links 44 wide, dossier portrait buttons
   and the map attribution link given 44px hit areas without changing their look.
   Round 2 closer: Ask Linville.ai placeholder truncates with the browser's ellipsis instead of a hard clip; the panel
   intro wraps pretty so its last line never carries the single word "firm." (834 and 844).

   Specificity note: the page carries <style> blocks AFTER the tier links (the hero and about block at line 325 of the
   head, and every board, team, contact, footer, drawer and consent block in the body), so a tier rule that merely ties
   the page's selector loses on source order. Every selector below is therefore prefixed with "body " (one type
   selector, +0,0,1), which settles the tie without a single !important. */

@media (min-width:768px) and (max-width:1023px){

  /* ---- tokens. The page gutter grows from 34px to 52px so the fixed social rail (44px cells) and the back-to-top
     disc live in the margin with 7px to spare, as they do at 1440 (63px gutter, 46px rail), and never sit on a frame. ---- */
  :root{--pad:52px}

  /* ---- nav: the desktop plat, kept, compressed so all five lots fit 768 inside the 52px gutters.
     Baseline: the plat ran to 831px at 768 and the whole page scrolled sideways. ---- */
  body .lot{padding:0 13px}
  body .lot-logo{padding:0 18px 0 0}
  body .lot i{font-size:.48rem;letter-spacing:.22em;margin-bottom:6px}
  body .lot b{font-size:.62rem;letter-spacing:.14em}
  body .lot-cta{margin-left:10px;padding:0 15px;min-height:44px}
  body .lot-cta b{font-size:.56rem;letter-spacing:.14em}
  /* the family strap gets a real box (the zero-height container printed the line twice in mobile renders) and a
     44px hit row on touch, kept visually where it was with negative margins */
  body .plat-sub{height:auto;margin-top:0}
  body .plat-sub .plat-biz{min-height:44px;display:inline-flex;align-items:center;margin:-6px 0 -18px}

  /* ---- hero: the instrument wraps (page rule at 1240); the count stays left and the submit goes to the right end
     so the second row reads balanced. 44px submit on touch. ---- */
  body .hr-inst{gap:12px 22px}
  body .hr-submit{margin-left:auto;min-height:44px}
  /* the four metrics stay one row, as at 1440 (the page's 2x2 fallback at 1100 is not needed: the narrowest cell,
     "in closed transactions", fits 152px at 768) */
  body .hr-led{grid-template-columns:repeat(4,minmax(0,1fr))}
  body .hr-cell{padding:14px 0 16px 18px;border-left:1px solid rgba(247,246,242,.5)}
  body .hr-cell:nth-child(odd){padding-left:18px;border-left:1px solid rgba(247,246,242,.5)}
  body .hr-cell:first-child{padding-left:0;border-left:0}
  body .hr-k{white-space:normal}

  /* ---- about: the desktop ledger grammar comes back (stacked numbered rows with hairline rules) instead of three
     150px columns; the awards leave the narrow figure column and run as one full-width band under the ledger,
     so no mark is ever clipped at the right edge (baseline: COMMERCIAL REAL ESTATE cut at 768 to 834). ---- */
  body #sec-about.ab-elev .ab-spread{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);grid-template-rows:auto auto auto auto auto;
    grid-template-areas:"head cap" "head fig" "body fig" "arg arg" "marks marks";column-gap:clamp(28px,4vw,44px);align-items:start}
  body #sec-about.ab-elev .ab-fig2{display:contents}
  body #sec-about.ab-elev .ab-fig2 .ab-cap{grid-area:cap;align-self:start;padding-top:8px}
  body #sec-about.ab-elev .ab-el{grid-area:fig;align-self:start;margin-top:14px}
  body #sec-about.ab-elev .ab-body{grid-area:body}
  body #sec-about.ab-elev .ab-argw{grid-area:arg;border-top:0;padding-top:clamp(18px,2.6vh,28px)}
  body #sec-about.ab-elev .ab-arg{grid-template-columns:minmax(0,1fr);max-width:none}
  body #sec-about.ab-elev .ab-arow{grid-template-columns:58px minmax(0,1fr) auto;grid-template-areas:"num txt amt";column-gap:14px;row-gap:0;padding:12px 0 13px}
  body #sec-about.ab-elev .ab-arow+.ab-arow{padding-left:0;border-left:0}
  body #sec-about.ab-elev .ab-arow::before,body #sec-about.ab-elev .ab-arow:last-child::after{display:block}
  body #sec-about.ab-elev .ab-nsvg{width:46px;height:32px}
  body #sec-about.ab-elev .ab-ad{font-size:.96rem}
  body #sec-about.ab-elev .ab-amt{justify-self:end;padding-top:1px}
  body #sec-about.ab-elev .ab-fig2 .ab-co-marks{grid-area:marks;margin-top:clamp(24px,3.2vh,34px);display:flex;justify-content:space-between;align-items:center}
  body #sec-about.ab-elev .ab-co-marks li{height:72px;padding:0}

  /* ---- board: the rail folds into two columns that read as one composition. Left: the live count over the map,
     the map filling the column to the assistant's height (the desktop rail's own move). Right: Ask Linville.ai.
     Then the tab strip runs frame edge to frame edge, and the filters and cards follow. ---- */
  body .lx-body{gap:clamp(26px,3.4vh,36px)}
  body .lx-side{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);
    gap:0 clamp(22px,3vw,32px);align-items:stretch;margin-bottom:0}
  body .lx-side .r2-board{grid-column:1;grid-row:1;margin:0 0 18px}
  body .lx-side .ask{grid-column:2;grid-row:1/3;margin:0;min-height:0}
  body .lx-side .lx-map{grid-column:1;grid-row:2;max-width:none;margin:0;display:flex;flex-direction:column;min-height:0}
  body .lx-side .lx-map .lx-osm{flex:1 1 auto;aspect-ratio:auto;min-height:220px}
  /* the side cut: frame edge to frame edge, its own hairline above, no rail divider (the rail plate is gone here) */
  body .lx-seg.r2-segtabs{margin:0 calc(-1 * var(--lxpadx)) 0 calc(-1 * var(--lxpadx));border-left:0;border-top:1px solid var(--hair)}
  body .lx-left>.lx-filters::after{left:calc(-1 * var(--lxpadx))}

  /* ---- 44px touch floors. This width band is a touch device in practice; the page's (hover:none) floors are
     restated here so they do not depend on the hover media feature. Visual sizes are unchanged where the hit
     area grows through padding or negative margins. ---- */
  body .pl-seg{min-height:44px}
  body .pl-acts button{min-height:44px}
  body .lx-mbtn{width:44px;height:44px}
  body .lx-mbtn svg{width:17px;height:17px}
  body .lf-heart::after{content:'';position:absolute;inset:-7px}
  body .ask-send{min-width:44px;min-height:44px;padding:0 6px;display:grid;place-items:center}
  body .ask-seed{min-height:44px;display:inline-flex;align-items:center;padding:7px 12px}
  body .ask-in{min-height:44px}
  /* Ask Linville.ai intro: at 834 and 844 the three-line description ended on the single word "firm.", which read as a
     mistake against the desktop's two-line version. Pretty wrapping moves "the" down so the last line is "the firm.";
     still three lines, panel height unchanged (57.5px), no change at 768, 820 or 932. */
  body .ask-sub{text-wrap:pretty}
  /* Ask Linville.ai placeholder: on touch the page sets the input at 16px, so "Ask about a listing, or about LTP and the
     team" needs 310px against an input of 208px at 768 and 317px at 1023, and was hard-clipped mid-word through the
     whole tier. The browser now draws its own ellipsis (no character is typed here): whole words at 768, 820 and 844
     ("or about...", "about LTP..."), a character cut at 932 ("LTP and th..."). Typed text, arrow glyph and rule
     unchanged. Only a shorter placeholder string lands it on a word at every width (needs markup). */
  body #askIn{text-overflow:ellipsis}
  body #askIn::placeholder{text-overflow:ellipsis}
  body .lx-left>.lx-filters select,body .r2-msbtn{min-height:44px}
  body .lx-sel.r2-per{min-height:44px}
  body .r2-ins input{min-height:44px}
  body .le-pgbtn{min-height:44px;padding:12px 0}
  body .le-pgnum{min-width:44px;min-height:44px;padding:12px 10px}
  /* bench icon links: 44px hit boxes laid on the desktop's own geometry (26px boxes, 32px pitch, last glyph 15px
     inside the card). The boxes overlap each other by 12px, exactly as the desktop's touch rule would; the previous
     right-only negative margin made the row 123px wide and pushed Ben Bloodworth's LinkedIn glyph off the card. */
  body .tb-links{gap:0;margin-right:-9px}
  body .tb-links a,body .tb-links button{width:44px;height:44px;margin:-9px -3px -9px -9px}
  body .ct-cta{min-height:44px}
  /* family drawer CLOSE: the page's own 44px floor for it lives in a (max-width:880px) block, so 881 to 1023 fell back to
     the 82x31 desktop button while the contact and listing drawers kept 44 */
  body .fam-x{min-width:44px;min-height:44px}
  /* contact drawer DIRECTIONS: the Google, Apple and Waze glyphs keep their 18 to 20px size and the first stays put, while
     each link becomes a 44px wide hit box (they measured 18 to 20 wide); the row has 362px and needs about 180 */
  body .dw-dirs .dv:has(a.dw-map){gap:24px}
  body .dw-dirs .dv a.dw-map{min-width:44px;justify-content:center;margin:0 -12px}
  /* listing dossier, LISTED BY: the two round portrait buttons were 40x40. A 2px transparent border takes the box to 44
     (the portrait stays 40, the row geometry is held by the negative margin). The page's hairline ring was a box-shadow
     on the button, which would now float 2px off the photo, so it is redrawn as an inset ring on a pseudo element over
     the photo's edge; on hover the border carries the 2px green ring the page drew with a box-shadow. Look unchanged. */
  body .le-bk .bk-shot.bk-door{box-sizing:border-box;position:relative;width:44px;height:44px;border:2px solid transparent;margin:-2px;background-clip:padding-box;box-shadow:none}
  body .le-bk .bk-shot.bk-door::after{content:'';position:absolute;inset:0;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(43,44,45,.22);pointer-events:none}
  body .le-bk .bk-shot.bk-door:hover{box-shadow:none;border-color:var(--green-deep)}
  /* map attribution: the OpenStreetMap credit is a 12px text link; an invisible pseudo area makes it 44px tall to tap */
  body .lx-attr a{position:relative}
  body .lx-attr a::after{content:'';position:absolute;left:-6px;right:-6px;top:-16px;bottom:-16px}
  body .ft-brand{padding:12px 0}
  body .ft-legal a,body .ft-legal button{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}
  /* the size slider: a 44px track row, the thumb the touch size the page already uses */
  body .r2-track{height:44px;margin:0 10px 6px}
  body .r2-track::before{top:21px}
  body .r2-track input[type=range]{height:44px}
  body .r2-track input[type=range]::-webkit-slider-thumb{width:26px;height:26px}
  body .r2-track input[type=range]::-moz-range-thumb{width:26px;height:26px}

  /* ---- consent: the desktop placement (top right, under the nav plat, the page's own rule at 1101 and up) rather
     than the phone's bottom-left card. With the hero filling the tablet fold, a bottom card lands on the
     instrument's submit at 768 to 834 on first visit; under the nav it covers only photograph. ---- */
  body .consent{left:auto;right:var(--pad);bottom:auto;top:calc(14px + 76px + 30px);width:min(480px,calc(100vw - 2*var(--pad)));padding:18px 20px}
  /* a touch tighter than the desktop card so its foot clears the hero eyebrow by a full line at 768 (was 5px) */
  body .consent h2{font-size:1.3rem}
  body .consent p{margin-top:7px;font-size:.9rem;line-height:1.45}
  body .consent-actions{margin-top:12px}

  /* ---- fixed chrome: rail cells and the back-to-top disc at the 44px touch floor, the disc in the rail's own
     column (right:3px); at 768 the rail clears the board and team frames by 7px and the disc by 5px. ---- */
  body .cta-social a{width:44px;height:44px}
  body .totop{right:3px;width:44px;height:44px}
  body .totop svg{width:18px;height:18px}

  /* ---- team: three cards across (page rule at 1100). Eleven brokers leave two on the last row; the grid is cut in
     six tracks so that final pair centres under the rows above instead of ragging left. The rule keys on "first
     in its row and second from last", so it survives a roster change. ---- */
  body .tb-body{grid-template-columns:repeat(6,minmax(0,1fr))}
  body .tb-rail{grid-column:1/-1}
  body .tb-rail .tb-lede{max-width:62ch}
  body .tb-grid .tb-card{grid-column:span 2}
  body .tb-grid .tb-card:nth-child(3n+1):nth-last-child(2){grid-column:2/span 2}
  body .tb-grid .tb-card:nth-child(3n+1):nth-last-child(2)+.tb-card{grid-column:4/span 2}

  /* ---- contact: the desktop pair of tiles, side by side (the page stacks them under 900). Two 322px tiles hold
     the headline on two lines at 768 and read as the 1440 composition. ---- */
  body .ct-in{grid-template-columns:repeat(2,minmax(0,1fr))}
  /* the tile headline balances its two lines (Tell us what you're / looking for.) instead of orphaning "for." at 840 to 900 */
  body .ct-head{text-wrap:balance}

  /* ---- board cards: balanced title wraps, so a two-line address never leaves one word on its second line
     (Mecklenburg Highway & E. Waterlynn / Road at 834). Works with the page's two-line clamp. ---- */
  body .lx-card .pl-cap-addr{text-wrap:balance}
}

/* ---- 768 to 859: the About head column takes a larger share of the spread so the headline keeps its three
   desktop lines (The resources of / a national firm. / The memory of a local one.) at the page's own 1.9rem. The
   third line needs about 325px; the even split gives 302 at 768 and only 322 at 813, so the head column is widened
   to 336px at 768 (the skyline drawing gives up 36px) and the band runs to 859, where the even split reaches 343.
   Chosen over a smaller headline size, which would have needed !important against the page's own !important. ---- */
@media (min-width:768px) and (max-width:859px){
  body #sec-about.ab-elev .ab-spread{grid-template-columns:minmax(0,1.12fr) minmax(0,1fr)}
}

/* ---- 820 and up: the nav lots have 55px or more of slack, so the lot labels and the CTA label return to the
   desktop sizes (.7rem / .58rem). 768 to 819 keeps the compressed .62rem so the plat still fits. ---- */
@media (min-width:820px) and (max-width:1023px){
  body .lot b{font-size:.7rem}
  body .lot-cta b{font-size:.58rem}
}

/* ---- landscape phones inside this width band (844x390, 932x430): the hero tightens its vertical rhythm so the
   composition is not a tall stack of air, and the consent banner compacts so it never covers half the screen. ---- */
@media (min-width:768px) and (max-width:1023px) and (max-height:500px){
  /* the eyebrow clears the family strap by a full line (parent wart 5: landscape headlines hugging the bar) */
  body .hr-in{padding-top:calc(14px + 88px + 44px);padding-bottom:20px}
  body .hr-h1{font-size:clamp(2.25rem,9.6svh,2.8rem)}
  body .hr-rule{margin-top:18px}
  body .hr-chip{margin-top:16px}
  body .hr-cap{top:clamp(10px,4svh,24px);margin-bottom:8px}
  /* 34px floor: at 844x390 the 28px floor left the instrument's top hairline as a 5px sliver at the foot of the fold
     (y 385 to 390), reading as a stray line under the family chip; it now starts just below the fold */
  body .hr-inst{margin-top:clamp(34px,7svh,40px)}
  body .hr-led{margin-top:18px}
  /* the banner narrows so it starts well right of the eyebrow's last word (the eyebrow ends at x 484; the banner's
     left edge is 512 at 844 and 514 at 932, so the label never reads as running into the dialog border) and covers
     photograph only, as the desktop's does */
  body .consent{padding:12px 14px;width:clamp(280px,calc(100vw - 566px),480px)}
  body .consent h2{font-size:1.1rem}
  /* at the 280px minimum the copy runs four lines; pretty wrapping keeps "Privacy Policy." together on the last line
     instead of orphaning "Policy." (296px would give three lines but only 12px of air after WINSTON-SALEM) */
  body .consent p{margin-top:4px;font-size:.82rem;line-height:1.38;text-wrap:pretty}
  body .consent-actions{margin-top:8px}
  /* buttons keep the 44px touch floor (the page's own hover:none floor); the banner foot lands at 275, 51px above the
     Fig. 01 caption at 844 and 65px at 932, and Accept, Reject and Customize still share one row at the 280px minimum */
  body .consent button{min-height:44px;padding:7px 11px}
}
