/* ==========================================================================
   NEXT GEO — page stylesheet for the VERİ SERVİSLERİ pair
     TR  23352  /cozumler/veri-servisleri/
     EN  25612  /en/solutions/data-services/
   One authored sheet for both; ng-page-apply.php --css-from copies it to
   data-services.css so the pair cannot drift.

   Loads last:
     ng-foundation → ng-components → ng-mobile → ng-shared → THIS FILE
   so a rule here at equal specificity beats all four.

   ===========================================================================
   VARIANCE PASS, 2026-08-17 — THIS SHEET WAS REWRITTEN, NOT EXTENDED.

   The pair was clean and reported clean, and that was the problem. Shot at
   1440 beside /cozumler/optimizasyon/, the two first screens are the same
   picture with different words in it: crumbs, eyebrow pill, an h1 on the left
   with one accent-display phrase in it, a lede, two buttons, a quoted hub
   question on a mist plate at the right, a three-number proof strip, then a
   grid of cards. That is 76 of 76 pages on this site and it is the whole brief
   of pages/ARCHETYPES.md. variance-plan.json assigns this pair:

       opening    D-NUMBER      one very large real figure, subordinate h1
       dark       NONE-MIST     no indigo band anywhere; mist carries the tone
       sections   3             including the masthead

   All three are honoured. What changed, and why each change is the one the
   subject asked for rather than a shuffle:

   1. THE FIRST SCREEN IS A NUMERAL. `4`, set at up to 184px, over VERİ İŞLEMİ
      / DATA OPERATIONS. It is countable from the page — four ruled rows in
      section 20 — and it is the smallest number on the page ON PURPOSE: the
      sample list has 1.240 rows and an 84.300-person catchment, and an
      illustrative figure at that size reads as a company metric whatever chip
      sits next to it. ng-shared.css §16a records the same decision from
      gayrimenkul and saglik, and supplies .ng-masthead--num and .ng-fig, so
      nothing about the opening is re-authored here.

   2. THE DOMINANT SHAPE IS A LEDGER, NOT A CARD GRID. Six sections became
      three, and the biggest merge is sections 20 and 30: the four operations
      were a card grid, and the fields they produce were a separate sample
      panel ~1.100px further down that listed those fields with no indication
      of which operation had written them. They are now one document — one
      ruled row per operation, the client's own paragraph on the left, the
      fields that operation produced on one sample address on the right. A data
      service IS a ledger: rows in, rows out, one line per operation. The shape
      is not applied to the subject, it is the subject.

   3. THERE IS NO INDIGO BAND. The page runs GROUND → MIST → GROUND, and the
      close is .ng-close__rail: the SUNKEN role holding two white chrome pills,
      copied from pages/gayrimenkul.css §4 (same assignment, same answer).
      Scrolling this page next to a sibling, the missing navy slab at the
      bottom is the second thing you notice after the numeral.

   NOT .ng-dtable, AND THAT WAS A DECISION. ng-shared §15b exists for exactly
   this kind of content and was the first thing tried. Its own comment says to
   size the columns to fit 342px before reaching for its overflow valve, and
   the widest cell here is a 60-word Turkish paragraph: four columns holding
   one of those cannot be sized to fit a phone, and the valve would have hidden
   a column from every phone. A grid that reflows to a stack costs nothing and
   hides nothing. §15b stays right for short tabular rows; this is not one.

   PRIMITIVES REUSED RATHER THAN RE-AUTHORED: .ng-masthead--num + .ng-fig
   (§16a), .ng-out and its whole chrome bar (§13b) for both documents,
   .ng-steps (§13c), .ng-pills, .ng-actions--chips, .ng-section--sunken,
   .ng-note, .ng-section-head, .ng-crumbs, .ng-btn. What is below is only what
   those do not do.

   THE NAME .ng-defter WAS CHECKED, the way the .ng-card collision taught this
   project to: it appears in no other stylesheet on this install (ng-foundation,
   ng-components, ng-mobile, ng-sections, ng-shared and all 39 page sheets
   grepped, not assumed). `.ng-led`, the first choice, is already two different
   components in adres-cozumleri.css and segmentasyon.css — not a collision,
   since page sheets never load together, but a name that already means two
   things is a name that will mean three. Turkish component names have
   precedent here: .ng-karne on akaryakit, .ng-rapor on gayrimenkul.

   ===========================================================================
   WHAT WAS WRONG BEFORE THE FIRST CONVERSION, kept because it is why several
   rules below exist. ng-page-check on both pages at 1440/1024/768/390:

     VISIBLE h1                0 at every width (one hidden: "Veri Servisleri")
                               — the only h1 lived in the theme's page-title
                               banner, which the site's own Additional CSS
                               hides with display:none
     tap targets under 44px    2 at 1024, 768 and 390 — both breadcrumb links
                               inside that same banner, 39x27 and 64x27
     dead air                  3.8% @1440 TR, 4.3% @1440 EN
     post_content              93 words; _elementor_data 149 KB

   THE 93 WORDS WERE NOT THE WHOLE STORY. post_content held only the intro and
   the two closing sentences; the four operation titles and their ~160 words of
   real client writing lived in `_elementor_data` inside four `neuros_icon_box`
   widgets, and both section headings shipped with Elementor's
   `elementor-invisible` (opacity:0) under LiteSpeed's optm-js_defer=2, so they
   never became visible at all. Recovering that copy into markup is most of
   what section 20 is, and it is all still on the page after this rewrite.

   Also in that payload and deliberately not carried forward: four 149x149
   base64 `svg_icon` blobs that never painted (what rendered was a FontAwesome
   fallback at ~15x17px), and a `bg_image` on every icon box hotlinked to the
   theme vendor's demo server at demo.artureanec.com. The literal URL is not
   repeated in any shipped markup so that HANDOFF's "grep the payload for the
   vendor domain" check keeps finding only pages that still carry it.
   ========================================================================== */


/* ==========================================================================
   1. THE D-NUMBER MASTHEAD — section 10

   .ng-masthead--num and .ng-fig* are ng-shared.css §16a and are NOT restated
   here. Two rules are this page's.
   ========================================================================== */

/* --- 1a. .ng-lead__src — whose question the h1 is -------------------------
   The h1 is the hub's own question in the second person. D-NUMBER writes no
   aside (§16a's single-column rule is (0,3,0) and beats §4's two-column rule
   inside §4's own min-width:960 query), so the attribution that used to sit in
   the aside has to be said out loud, with the hub's wording in quotation marks
   — otherwise the page looks like it is asking itself a question.

   A 3px accent rule, not a plate: D-NUMBER's whole premise is that there is no
   plate on the first screen. Same class name and the same job as
   pages/akaryakit.css's and pages/gayrimenkul.css's; the three sheets never
   load together, so this is a shared idiom rather than a collision. */
.ng-v2 .ng-lead__src{
  margin:16px 0 0;
  padding:2px 0 2px 14px;
  border-left:3px solid var(--ng-accent);
  font-size:16px; line-height:1.55;
  color:var(--ng-muted);
  max-width:58ch;
}

/* Held under the lede's own measure so the two do not read as one paragraph
   that changed size halfway through. */
.ng-v2 .ng-lead__note{ max-width:58ch; }


/* ==========================================================================
   2. THE MIST BAND — section 20

   The page's only tonal event, and under dark: NONE-MIST it is doing the work
   the indigo slab used to do, so it is the one band that holds raised surfaces.
   The surface rule is unchanged: mist holds white chrome, never bare text on
   nothing, which is why both documents in it are .ng-out panels.
   ========================================================================== */

/* Anchor offset for #ornek-cikti / #sample-output, which the masthead's second
   button points at. 104px clears the sticky header at desktop; the header is
   shorter under 1365, where the theme drops to its compact bar. */
.ng-v2 .ng-defter{ scroll-margin-top:104px; }
@media (max-width:1364px){
  .ng-v2 .ng-defter{ scroll-margin-top:84px; }
}

/* .ng-out sizes its body padding for a HALF-width panel (18px / 16px), because
   every other leaf on the site puts two of them side by side. Both panels here
   run the full 1120px container, and at that width 16px of side padding reads
   as a document with no margins. Same adjustment gayrimenkul makes for the same
   reason. */
.ng-v2 .ng-defter__body,
.ng-v2 .ng-parti__body{ padding:24px 20px 26px; }
@media (min-width:960px){
  .ng-v2 .ng-defter__body,
  .ng-v2 .ng-parti__body{ padding:30px 32px 32px; }
}

/* The three-word answer, at the head of the document rather than in an aside.
   It is the sentence the four rows below are an expansion of, so it sits above
   the incoming row and above both groups, at one step over the row text. */
.ng-v2 .ng-defter__ans{
  margin:0 0 22px;
  font-size:17px; line-height:1.6;
  color:var(--ng-muted);
  max-width:76ch;
}
.ng-v2 .ng-defter__ans b{ color:var(--ng-ink); font-weight:600; }


/* --- 2a. .ng-raw — the row as it arrives ----------------------------------
   The single most load-bearing element in this section, because "my data is
   messy" is the state the visitor arrived in and this is the only thing on the
   page that shows it rather than asserting it. A cleaned record listed on its
   own is just a table; the same record with the string it came from above it is
   a before and an after — and now that the four operations sit under it, it is
   the row all four of them are acting on.

   NO MONOSPACE FAMILY, and that is not an omission. ng-foundation.css removed
   --ng-font-mono entirely — all 30 call sites were rewritten to --ng-font-label
   — so writing one here would break rule 1 (tokens only) and reintroduce a font
   this site deliberately dropped. The "raw" quality is carried by the tile
   instead: sunken fill, hairline, tight tracking, and the string set at the
   reading floor rather than at chrome size, because a visitor is meant to
   actually read it and recognise their own data in it.

   overflow-wrap:anywhere because an incoming address string has no spaces where
   a 342px column wants them ("No:12/A" is one token). Without it the tile is the
   one thing on the page that can produce horizontal overflow at 390. */
.ng-v2 .ng-raw{
  margin:0;
  padding:12px 14px;
  background:var(--ng-surface-sunken);
  border:1px solid var(--ng-hairline);
  border-radius:var(--ng-radius-sm);
  font-family:var(--ng-font-label); font-weight:600;
  font-size:15px; line-height:1.45; letter-spacing:.01em;
  color:var(--ng-ink);
  overflow-wrap:anywhere;
}
.ng-v2 .ng-raw__note{
  display:block;
  margin-top:6px;
  font-weight:500;
  /* 13px would be under the floor: this is a sentence, not a tracked label, so
     it takes 14px like .ng-note and .ng-crumbs do for the same reason. */
  font-size:14px; line-height:1.45; letter-spacing:0;
  color:var(--ng-muted);
}


/* --- 2b. .ng-defter — the ledger itself -----------------------------------
   Two groups of rows, one row per operation. The group split is derived from
   the client's own adjectives (daha doğru, anlamlı ve kullanılabilir) using the
   client's own verbs in each description, and the client's order is preserved,
   which is also the hub card's pill order.

   A PER-ROW TAG WAS NOT USED for the grouping, for the reason the fuel leaf
   recorded and this page kept through two rewrites: a tag on a row reads as a
   property OF that row, when the thing being expressed is a grouping ACROSS
   rows. Two sub-heads say it once each. __against IS a per-row property — what
   that operation works against — and every value is lifted from that
   operation's own paragraph. */
.ng-v2 .ng-defter__group + .ng-defter__group{
  margin-top:30px;
  padding-top:28px;
  border-top:1px solid var(--ng-hairline);
}
.ng-v2 .ng-defter__group:first-of-type{ margin-top:30px; }

/* (0,3,0) via the doubled class, per ng-shared.css §11 — a page-level heading
   class needs the same defence or the theme's
   `body .content-wrapper h3:not(:first-child){margin-top:50px}` at (0,2,2)
   turns the authored 0 into a 50px hole above each group name. */
.ng-v2 .ng-defter__gname.ng-defter__gname{
  margin:0;
  font-size:21px; line-height:1.25;
  letter-spacing:-0.012em;
  color:var(--ng-ink);
}
.ng-v2 .ng-defter__gdesc{
  margin:8px 0 0;
  font-size:15px; line-height:1.6;
  color:var(--ng-muted);
  max-width:82ch;
}

.ng-v2 .ng-defter__rows{
  list-style:none; margin:18px 0 0; padding:0;
}

/* THE ROW GRID, in three stages, and the stages are set by the paragraph and
   not by a round number.

   Below 720 the row is a 40px ordinal rail and one column: name, meta,
   paragraph, then the sample record under them. At 342px that leaves ~288px
   for the text, which is the narrowest measure anything on this page runs at.

   720–1039 keeps the rail and widens the text; the sample record still sits
   below, because a 300px right column at 1039 leaves the paragraph ~340px and
   a 60-word Turkish sentence at that measure is nine lines against the
   record's four — an L-shaped row with a hole in it.

   1040 and up is the shape the section is for: description left, effect right,
   read across. minmax(0,300px) rather than a fixed track, so the record column
   gives width back to the paragraph before it wraps rather than after. */
.ng-v2 .ng-defter__row{
  display:grid;
  grid-template-columns:40px minmax(0,1fr);
  column-gap:14px; row-gap:14px;
  padding-top:18px;
  border-top:1px solid var(--ng-hairline);
}
.ng-v2 .ng-defter__row + .ng-defter__row{ margin-top:18px; }
.ng-v2 .ng-defter__main{ min-width:0; }
.ng-v2 .ng-defter__out{ min-width:0; grid-column:2; }
@media (min-width:1040px){
  .ng-v2 .ng-defter__row{
    /* 330, not 300. At 300 the record column is 268px of usable width and
       "Demografik yapı" / "Çevresel donatılar" both broke to two lines beside a
       one-line value, which reads as a rendering fault rather than as a wrapped
       label. 330 costs the paragraph 30px — one word on one line at 1440 — and
       clears every key in both languages. Found in the 1440 screenshot; the
       page reported clean before and after. */
    grid-template-columns:40px minmax(0,1fr) minmax(0,330px);
    column-gap:26px;
  }
  .ng-v2 .ng-defter__out{ grid-column:3; }
}

/* 12px at .1em tracking (ratio .10) is a tracked label BY MEASUREMENT, which is
   what ng-page-check actually tests. It is an ordinal glanced at beside a row,
   not read — and it is aria-hidden, because the <ol> already numbers these for
   a screen reader and "01 Eşleme" read aloud twice is noise. `start="3"` on the
   second list keeps the two agreeing. */
.ng-v2 .ng-defter__n{
  margin:0;
  font-family:var(--ng-font-label); font-weight:600;
  font-size:12px; line-height:1.9; letter-spacing:.1em;
  text-transform:none;
  color:var(--ng-accent);             /* 5.64:1 on white */
  font-variant-numeric:tabular-nums;
}
/* Doubled class again: this h4 is not the first child of its block. */
.ng-v2 .ng-defter__name.ng-defter__name{
  margin:0;
  font-size:19px; line-height:1.3;
  letter-spacing:-0.01em;
  color:var(--ng-ink);
}
.ng-v2 .ng-defter__against{
  margin:6px 0 0;
  font-family:var(--ng-font-label); font-weight:600;
  font-size:11px; line-height:1.4; letter-spacing:.1em;
  text-transform:none;                /* authored pre-uppercased: i -> İ */
  color:var(--ng-muted);
}
.ng-v2 .ng-defter__text{
  margin:12px 0 0;
  font-size:15px; line-height:1.62;
  color:var(--ng-muted);
}

/* THE SAMPLE COLUMN IS A MIST TILE INSIDE A WHITE DOCUMENT, and that is the
   honesty mechanism, not a decoration. The left column is the client's own
   description of what an operation does; the right column is what it did to one
   made-up address. Those two things must not look like one continuous
   statement. Same sunken inset .ng-raw uses two blocks up, so the tile reads as
   "data, quoted" both times.

   It also carries the fourth of the four illustrative labels this section
   ships: ÖRNEK chip in the chrome bar, "Örnek satır" in the subject line, this
   ÖRNEK SATIRDA on every row, and the caption under the band. */
.ng-v2 .ng-defter__out{
  padding:14px 16px;
  background:var(--ng-surface-sunken);
  border:1px solid var(--ng-hairline);
  border-radius:var(--ng-radius-sm);
  align-self:start;
}
.ng-v2 .ng-defter__outk{
  margin:0 0 10px;
  font-family:var(--ng-font-label); font-weight:600;
  font-size:11px; line-height:1.3; letter-spacing:.1em;
  text-transform:none;
  color:var(--ng-accent);             /* 4.98:1 on mist */
}

/* .ng-out__foot's border-top is right for a footnote closing a panel; here it
   is closing a document whose last row already ends on a rule, so the two would
   draw twice in ~30px. The rule is kept and the space above it opened instead. */
.ng-v2 .ng-defter__foot{ margin-top:28px; }
.ng-v2 .ng-defter__foot b{ color:var(--ng-ink); font-weight:600; }


/* --- 2c. .ng-parti — the batch summary ------------------------------------
   The second document, and the reason the page still claims two sample outputs.
   The ledger follows ONE row; a buyer with a 1.200-row spreadsheet also asks
   what happens to the whole file, and neither answer implies the other.

   TWO COLUMNS, NOT ONE STACK. Seven .ng-rec rows down a 1120px panel is a
   1.100px column of key/value pairs with 900px of white beside it. Split into
   "gelen liste" and "işlem sonucu" it is what it actually is: a before and an
   after, and the reader can check 1.107 + 37 = 1.144 across the gap, which the
   footnote explicitly invites. */
.ng-v2 .ng-parti{ margin-top:24px; }
.ng-v2 .ng-parti__lede{
  margin:0 0 22px;
  font-size:16px; line-height:1.6;
  color:var(--ng-muted);
  max-width:76ch;
}
.ng-v2 .ng-parti__cols{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:26px;
}
@media (min-width:760px){
  .ng-v2 .ng-parti__cols{
    grid-template-columns:repeat(2,minmax(0,1fr));
    column-gap:56px;
    align-items:start;
  }
}
.ng-v2 .ng-parti__col{ min-width:0; }


/* --- 2d. .ng-rec — the record rows ----------------------------------------
   Key/value rows separated by hairlines: a record, not a card grid. A data
   service's output IS a set of named fields, so the honest rendering of "what
   do I get back" is the field list, and the answer is readable in one vertical
   scan of the right column. Used in both documents, so the ledger's sample
   column and the batch summary are visibly the same kind of thing.

   dt/dd laid out with flex rather than a two-column grid so a long Turkish key
   ("Çevredeki aynı kategori noktası") wraps inside its own column instead of
   forcing the value onto its own line. The UA's `dd{margin-inline-start:40px}`
   is reset explicitly; without it every value sits 40px in from the right edge
   and the column looks broken at 390 only.

   THE STATE COLOURS ARE TOKENS, NOT NEW LITERALS. --ng-ok (#186B39) for a
   settled row; --ng-muted for one still in progress. An amber "warning" was the
   obvious third state and was rejected: there is no amber in this palette, and
   "elle kontrole düşen" is not an error — it is the client's own described
   output of verification. Colour is also never the only carrier: every state is
   a word or a number.

   tabular-nums matters more here than on any other leaf, because the batch
   panel is four figures a reader is explicitly invited to add up. */
.ng-v2 .ng-rec{ margin:0; }
/* flex-wrap AND margin-left:auto ON THE VALUE, and this is not belt-and-braces
   — it is a bug found in the 390 screenshot that ng-page-check reported clean
   through, twice.

   .ng-rec__v is `flex:0 0 auto`, i.e. it does not shrink, because a figure that
   wraps mid-number is worse than a long row. Inside the ledger's record tile at
   390 the usable width is ~262px, and "10 dk sürüş · 84.300 kişi" at the mobile
   floor is ~190px of it: the key was squeezed to its min-content, the value
   overflowed its own track, and the two painted on top of each other —
   "Demografi10 dk sürüş · 84.300 kişi / yapı". No horizontal overflow was
   reported because the collision happens inside a tile that is itself inside
   the container.

   With wrap, a value that cannot share the line takes the next one instead;
   margin-left:auto keeps it hard right when it does, so a wrapped pair still
   reads as key-left / value-right. 2px of row-gap rather than the 16px column
   gap: a wrapped pair is one row, not two. */
.ng-v2 .ng-rec__row{
  display:flex; align-items:baseline; flex-wrap:wrap; gap:2px 16px;
  padding:10px 0;
  border-top:1px solid var(--ng-hairline);
}
.ng-v2 .ng-rec__row:first-child{ border-top:0; padding-top:0; }
.ng-v2 .ng-rec__k{
  flex:1 1 auto; min-width:0;
  margin:0;
  font-size:14px; line-height:1.45;
  color:var(--ng-muted);
}
.ng-v2 .ng-rec__v{
  flex:0 0 auto;
  margin:0 0 0 auto;
  text-align:right;
  font-family:var(--ng-font-display); font-weight:600;
  font-size:15px; line-height:1.35;
  color:var(--ng-ink);
  font-variant-numeric:tabular-nums;
}
.ng-v2 .ng-rec__v.is-ok{ color:var(--ng-ok); }
.ng-v2 .ng-rec__v.is-wait{ color:var(--ng-muted); }

/* The caption for both documents. Centred under the pair, because it belongs to
   the band and not to either one. */
.ng-v2 .ng-defter-band__note{
  margin:26px auto 0;
  max-width:88ch;
  text-align:center;
}


/* ==========================================================================
   3. THE LAST SECTION — ladder, audience, close

   Three movements on one ground band, because the assignment is three sections
   and this is the third. The ladder and the audience list are both ruled — no
   raised surface anywhere in this section — so that the only two plates on the
   page stay the two documents in the mist band. That is what makes the mist
   band read as the page's centre rather than as one more stripe.
   ========================================================================== */

/* --- 3a. .ng-fit — who it is for ------------------------------------------
   FOUR CARDS WAS THE FIRST SHAPE AND WAS MEASURED AWAY, twice. Four one-line
   strings in .ng-grid--4 become four ~180px boxes of mostly air, ~500px of it,
   and dead air is measured on this site as a percentage of page height and
   reported against the page — so a shape that manufactures it is not neutral.

   IT ALSO LOST ITS WHITE PLATE IN THIS PASS. It had one while this content sat
   on a mist band, where the surface rule requires white chrome. The band is
   ground now and a raised plate here would be a third document competing with
   the two that matter.

   COLUMN FLOW, NOT ROW FLOW. `grid-auto-flow:column` with two explicit rows
   puts 01-02 in the first column and 03-04 in the second, so the numbers still
   read top-to-bottom in each column. Row flow would print 01 02 / 03 04, i.e. a
   numbered list you read in a Z, which is how a numbered list stops being one. */
.ng-v2 .ng-fit{
  margin-top:46px;
  padding-top:34px;
  border-top:2px solid var(--ng-hairline);
}
.ng-v2 .ng-fit__eyebrow{ margin:0; }
/* Doubled class: this h3 is not the first child of its block — the eyebrow is —
   so the theme's `h3:not(:first-child){margin-top:50px}` at (0,2,2) matches it. */
.ng-v2 .ng-fit__h.ng-fit__h{
  margin:14px 0 0;
  font-size:clamp(1.5rem, 3vw, 2rem);
  line-height:1.18;
  letter-spacing:-0.02em;
  color:var(--ng-ink);
  max-width:24ch;
  text-wrap:balance;
}
.ng-v2 .ng-fit__lede{
  margin:14px 0 0;
  font-size:17px; line-height:1.6;
  color:var(--ng-muted);
  max-width:72ch;
}
.ng-v2 .ng-fit__list{
  list-style:none; margin:26px 0 0; padding:0;
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:0 48px;
}
@media (min-width:760px){
  .ng-v2 .ng-fit__list{
    grid-template-columns:repeat(2,minmax(0,1fr));
    grid-template-rows:repeat(2,auto);
    grid-auto-flow:column;
  }
}
.ng-v2 .ng-fit__row{
  display:flex; align-items:baseline; gap:14px;
  padding:13px 0;
  border-top:1px solid var(--ng-hairline);
}
.ng-v2 .ng-fit__row:first-child{ border-top:0; padding-top:0; }
@media (min-width:760px){
  /* Item 3 is the first row of the SECOND column, so it loses its rule too and
     item 1 keeps the reset above. Hard-coded to :nth-child(3) because the list
     is a fixed four items of the client's own copy — if a fifth is ever added
     this rule is wrong, which is what this comment is for. */
  .ng-v2 .ng-fit__row:nth-child(3){ border-top:0; padding-top:0; }
  .ng-v2 .ng-fit__row:nth-child(2),
  .ng-v2 .ng-fit__row:nth-child(4){ padding-bottom:0; }
}
.ng-v2 .ng-fit__n{
  flex:0 0 auto;
  font-family:var(--ng-font-label); font-weight:600;
  font-size:12px; line-height:1.9; letter-spacing:.1em;
  text-transform:none;
  color:var(--ng-accent);             /* 5.35:1 on ground */
  font-variant-numeric:tabular-nums;
}
.ng-v2 .ng-fit__t{
  min-width:0;
  font-size:16px; line-height:1.5;
  color:var(--ng-ink);
}


/* --- 3b. .ng-close__rail — the close, with no indigo band to close on -----
   dark: NONE-MIST. The last band cannot be the navy slab, and the closing
   decision is not negotiable — one decision, two destinations that already
   exist on the contact page. So the rail is the SUNKEN role: mist plus a
   hairline, holding two white chrome pills. Copied from pages/gayrimenkul.css
   §4, which built it for the identical assignment; PATTERNS.md says copy and do
   not promote until three leaves want THE SAME ONE, and the three that exist
   are not the same one — saglik's inverts to a raised white panel because its
   last band is itself the mist.

   Deliberately no .ng-anim on it, per ng-shared.css §9: the last thing before
   the footer must not depend on an IntersectionObserver firing, which on this
   page is not hypothetical — two headings on the version this replaced were
   invisible for exactly that reason. */
.ng-v2 .ng-close__rail{
  margin-top:46px;
  padding:26px 22px;
  background:var(--ng-surface-sunken);
  border:1px solid var(--ng-hairline);
  border-radius:var(--ng-radius);
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:24px;
}
@media (min-width:900px){
  .ng-v2 .ng-close__rail{
    grid-template-columns:minmax(0,1fr) auto;
    column-gap:44px;
    align-items:center;
    padding:34px 36px;
  }
}
.ng-v2 .ng-close__eyebrow{ margin:0; }
/* Doubled class for the theme's 50px margin-top: this heading is NOT the first
   child of its block — the eyebrow is — so `h3:not(:first-child)` matches it,
   unlike the two section heads. */
.ng-v2 .ng-close__title.ng-close__title{
  margin:14px 0 0;
  font-size:clamp(1.6rem, 3.2vw, 2.1rem);
  line-height:1.15;
  letter-spacing:-0.02em;
  color:var(--ng-ink);
  max-width:22ch;
  text-wrap:balance;
}
.ng-v2 .ng-close__lede{
  margin:14px 0 0;
  font-size:17px; line-height:1.6;
  color:var(--ng-muted);              /* 5.42:1 on mist */
  max-width:54ch;
}
.ng-v2 .ng-close__side{
  display:flex; flex-direction:column;
  align-items:flex-start;
  gap:4px;
}
@media (min-width:900px){
  .ng-v2 .ng-close__side{ align-items:flex-end; text-align:right; }
}
.ng-v2 .ng-close__actions{ margin-top:0; }
/* 14px for the same reason .ng-cta__meta is: a phone number and an address are
   read and copied, and .04em tracking does not earn the label exception. */
.ng-v2 .ng-close__meta{
  margin:16px 0 0;
  font-family:var(--ng-font-label); font-weight:500;
  font-size:14px; line-height:1.6; letter-spacing:.04em;
  color:var(--ng-muted);
}


/* ==========================================================================
   4. RESPONSIVE
   ng-mobile.css §7 carries every 44px hit area (crumbs, buttons, pills, tel) at
   <=767, at 768–1023 and at exactly 1024. Every interactive thing on this page
   is one of those primitives — the ledger rows are deliberately unlinked, since
   an operation title is not a page — so this block is type and rhythm only.
   ========================================================================== */

@media (max-width:959px){
  .ng-v2 .ng-defter-band__note{ text-align:left; }
}

@media (max-width:767px){
  /* Mobile reading floor, 16px, for every sentence this page adds. .ng-fig__d
     and .ng-lead__src are already 16px; .ng-note is raised by ng-shared. */
  .ng-v2 .ng-defter__gdesc,
  .ng-v2 .ng-defter__text,
  .ng-v2 .ng-close__lede{ font-size:16px; }
  .ng-v2 .ng-defter__ans,
  .ng-v2 .ng-parti__lede,
  .ng-v2 .ng-fit__lede{ font-size:16px; }

  .ng-v2 .ng-lead__note,
  .ng-v2 .ng-how__note,
  .ng-v2 .ng-defter-band__note{ max-width:none; }

  .ng-v2 .ng-defter__gname.ng-defter__gname{ font-size:19px; }
  .ng-v2 .ng-defter__name.ng-defter__name{ font-size:18px; }

  /* The record rows at 390. Key and value both come up to the reading floor —
     these are words a visitor reads ("Elle kontrole düşen kayıt" is the point
     of the panel), not chrome — and the row padding comes down so eleven rows
     across two documents do not run past two screens. */
  .ng-v2 .ng-rec__k{ font-size:15px; }
  .ng-v2 .ng-rec__v{ font-size:16px; }
  .ng-v2 .ng-rec__row{ padding:9px 0; gap:2px 12px; }

  .ng-v2 .ng-defter__out{ padding:13px 14px; }
  .ng-v2 .ng-fit{ margin-top:38px; padding-top:30px; }
  .ng-v2 .ng-close__rail{ margin-top:36px; padding:22px 18px; }
  .ng-v2 .ng-close__meta{ margin-top:14px; }
}

@media (max-width:420px){
  /* At 390 the ledger row's usable width inside the document is ~288px after
     the ordinal rail. The rail comes down to 30px and the gap with it, which
     buys the paragraph 18px — one word per line at this measure. */
  .ng-v2 .ng-defter__row{ grid-template-columns:30px minmax(0,1fr); column-gap:10px; }
}


/* ==========================================================================
   5. REDUCED MOTION
   ng-shared.css §10 already flattens .ng-card and .ng-arrow under a reduce
   preference — including cancelling ng-components.css's !important marker
   transform — and ng-components.css §8 does the same for .ng-anim. This page
   adds no motion of its own: there are no bars, no transitions and no hover
   transforms outside .ng-arrow, precisely so a reduce preference has nothing
   left to switch off here. Left as a note rather than an empty block so the
   next person does not go looking for the missing rule.
   ========================================================================== */


/* ==========================================================================
   6. THE ONE CLIENT IMAGE — section 20, below both documents

   Appended after §5 rather than folded into §2 so the image pass is legible as
   a pass: everything above this line predates it and is unchanged.

   ONE PICTURE ON A D-NUMBER PAGE. The first screen is a 184px numeral and this
   band already carries two full documents; a grid of four supplied rasters here
   would be the third and fourth shapes in one band and would out-weigh the
   thing the page is built around. So: one row, copy left, figure right, using
   ng-shared §17a's .ng-figband--split unchanged. Nothing here restates §17 —
   the frame, the chip, the caption type and the 44/56 split are all shared.

   WHY IT SITS AFTER THE PARTİ ÖZETİ AND BEFORE THE BAND NOTE. The ledger
   follows one row, the parti özeti follows a thousand, and only then does the
   picture go back and open up ONE cell of row 01 — the match, and how much the
   match is trusted. Put above the ledger it would delay the shape the section
   head has just announced; put between the two documents it would break a pair
   the 24px in §2c deliberately makes. Left where it is, the band's own note
   still closes the band and now covers three illustrative artefacts instead of
   two, which is the same sentence doing more work rather than a new one.

   THE COPY COLUMN IS BARE ON MIST AND THAT IS THE EXISTING PRECEDENT, not a
   break with §2's "mist holds white chrome, never bare text": the section head
   at the top of this band is also eyebrow + heading + one paragraph directly on
   the mist. What the surface rule protects is a PANEL of data — a record, a
   table, a sample output — and the two that exist keep their plates. A third
   plate here would have made the picture look like a third document.
   ========================================================================== */

.ng-v2 .ng-defter-band__figband{ margin-top:44px; }

/* .ng-eyebrow carries the type; only the UA paragraph margin needs clearing,
   the same one-liner .ng-fit__eyebrow and .ng-close__eyebrow use. */
.ng-v2 .ng-defter-band__figk{ margin:0; }

/* Doubled class, for the fourth time in this sheet and for the same reason:
   this h3 is not the first child of its block — the eyebrow is — so the theme's
   `body .content-wrapper h3:not(:first-child){margin-top:50px}` at (0,2,2)
   matches it and would open a 50px hole above the question.

   Sized ABOVE .ng-defter__gname's 21px, not below it. The group names are
   headings INSIDE a document; this one is a heading in the band, at the same
   level as the two panels, and reading it as subordinate to a panel it sits
   outside of is the one thing that would make the row look like an offcut.
   It is still well under the section h2, which is the thing it must not
   compete with. */
.ng-v2 .ng-defter-band__figq.ng-defter-band__figq{
  margin:14px 0 0;
  font-size:clamp(1.3rem, 2.2vw, 1.5rem);
  line-height:1.22;
  letter-spacing:-0.015em;
  color:var(--ng-ink);
  max-width:22ch;
  text-wrap:balance;
}

/* 17px, the step .ng-defter__ans and .ng-close__lede take — this paragraph is
   the band's, not a row's, and it is doing load-bearing work: at 390 the asset
   renders at ~342px and its 11px cells come out near 5px, so the score range,
   the ambiguous row and the 14 candidate matches are READ HERE and merely
   confirmed in the picture. An image is never the only carrier of a fact.
   No max-width: the 44% column is already ~44ch at 1440 and a measure on top
   of that would leave the copy column short against a 600px figure. */
.ng-v2 .ng-defter-band__figt{
  margin:14px 0 0;
  font-size:17px; line-height:1.62;
  color:var(--ng-muted);              /* 5.42:1 on mist, as .ng-close__lede */
}

/* THE 780px CAP, and it is not dead code at any width this page is checked at.
   At >=960 the figure column is 56% of (1120 - 48) = ~600px and the cap does
   nothing. Below 960 the row stacks and the figure takes the whole container —
   which between roughly 830 and 959 viewport px is MORE than 780, and a 780x540
   raster stretched past its own width goes soft. 768 and 390 are under it, so
   this only ever fires in the band between the two checked widths, which is
   exactly where nobody looks.

   Left-aligned rather than margin-inline:auto. In the stacked state the copy
   above it is flush left, and a centred figure under flush-left copy reads as a
   third alignment on a page that has two. */
.ng-v2 .ng-defter-band__figband .ng-figband__fig{ max-width:780px; }

/* The band note closes the band, and after a figcaption 26px is two captions
   in a row. Opened to 40 so the centred note reads as the band's, not as a
   second line of the figure's. (0,3,0) beats §2's (0,2,0) rule and only
   restates margin-top, so the auto side margins that centre it survive. */
.ng-v2 .ng-defter-band__figband + .ng-defter-band__note{ margin-top:40px; }

@media (max-width:767px){
  .ng-v2 .ng-defter-band__figband{ margin-top:34px; }
  .ng-v2 .ng-defter-band__figband + .ng-defter-band__note{ margin-top:30px; }
  /* .ng-defter-band__figt is 17px and already clears §4's 16px mobile reading
     floor, so no type moves here. The question's 22ch measure does: at 390 the
     column is ~30ch wide and a 22ch cap breaks a six-word heading into three
     short lines with a ragged hole beside it. The clamp already brings the size
     down to its 1.3rem floor at this width. */
  .ng-v2 .ng-defter-band__figq.ng-defter-band__figq{ max-width:none; }
}
