/* ==========================================================================
   /sektorler/gayrimenkul/  +  /en/sectors/real-estate/
   One stylesheet, two pages (--css-from). Loads AFTER ng-shared.css, so
   anything restated here wins at equal specificity.

   VARIANCE PASS ASSIGNMENT (variance-plan.json, not chosen):
       opening   D-NUMBER    one very large figure, h1 subordinate beneath it
       dark      NONE-MIST   no indigo band anywhere; mist carries the tone
       sections  3           masthead · report · titles+close

   THE SILHOUETTE, so the next person can see it without opening the markup:

       GROUND   giant 12 · subordinate h1 · lede · CTAs · 4/2/2 strip
       MIST     one full-width report panel (6 fields ACROSS + a 6-row table)
                followed by the 3-step provenance ladder
       GROUND   four ruled ledger rows · note · mist closing rail

   Three shapes, none of them a card grid: a numeral, a report, a ledger.
   That is the whole point of this pass — the page it replaces was a masthead
   with a plate, a 2x2 of white cards, two sample panels, a step ladder and an
   indigo band, which is also an exact description of its 27 siblings.

   NOTHING ON THIS PAGE IS DARK. `.is-dark` appears nowhere: the closing
   decision is .ng-close__rail, the SUNKEN role holding two white chrome pills.
   The pattern is copied from pages/akaryakit.css §4, which built it for the
   same reason (its dark band is assigned MIDDLE). PATTERNS.md says copy it and
   do not promote until three leaves want one; this is the second.

   Primitives reused rather than re-authored: .ng-masthead, .ng-out, .ng-steps,
   .ng-pills--onmist, .ng-facts (§15c), .ng-dtable (§15b), .ng-section--sunken,
   .ng-note, .ng-actions--chips. What is below is only what those do not do.
   ========================================================================== */

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

   .ng-masthead--num AND .ng-fig* WERE PROMOTED TO ng-shared.css §16a on
   2026-08-17, when the second D-NUMBER page (/sektorler/saglik/) was built and
   four more were queued behind it. The bodies there are this sheet's, lifted
   character for character together with their reasoning — nothing was
   redesigned on the way, because this page is live and the owner has seen it.
   The copies were deleted from here in the same pass: page CSS loads AFTER
   ng-shared.css, so a copy left behind would keep winning and the promotion
   would be inert.

   Only .ng-lead__src stays, below: it is one sheet's idiom and three pages
   write it three different ways.
   ========================================================================== */

/* --- 1c. .ng-lead__src — whose sentence the h1 is -------------------------
   The h1 is the hub's question, verbatim from the Gayrimenkul card on
   /sektorler/. With no aside to quote it in, the attribution has to be said
   out loud or the page looks like it is asking itself a question. Same class
   name and the same job as pages/akaryakit.css's; the two sheets never load
   together, so this is a shared idiom rather than a collision.

   A 3px accent rule, not a plate: D-NUMBER's whole premise is that there is no
   plate on the first screen. */
.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;
}

/* ==========================================================================
   2. THE REPORT — section 20, the mist band
   ========================================================================== */

/* The band is the page's only tonal break, so it gets a little more air than
   --ng-section-pad and the panel inside it runs the full container. */
.ng-v2 .ng-rapor{ scroll-margin-top:104px; }
@media (max-width:1364px){
  .ng-v2 .ng-rapor{ scroll-margin-top:84px; }
}

/* .ng-out sizes its body for a half-width panel (18px/16px). At 1120px wide
   that reads as a document with no margins, so the padding grows with the
   panel. */
.ng-v2 .ng-rapor__panel .ng-out__body{ padding:26px 24px 28px; }
@media (min-width:960px){
  .ng-v2 .ng-rapor__panel .ng-out__body{ padding:30px 32px 32px; }
}
.ng-v2 .ng-rapor__part + .ng-rapor__part{
  margin-top:34px;
  padding-top:30px;
  border-top:1px solid var(--ng-hairline);
}
.ng-v2 .ng-rapor__def{
  margin:0 0 22px;
  font-size:15px; line-height:1.6;
  color:var(--ng-muted);
  max-width:82ch;
}
.ng-v2 .ng-rapor__note{
  margin:26px auto 0;
  max-width:86ch;
  text-align:center;
}

/* --- 2a. the six fields, ACROSS the container -----------------------------
   §15c's .ng-facts is the right primitive and its default 3-up grid is the
   right grid; what it does not handle is SIX cells, i.e. two rows. Its
   dividers are left borders on the cells, which is correct for one row and
   leaves a dangling rule at the start of a second one, and its >=960 rule
   zeroes the vertical padding, which collapses two rows into each other.

   Both are fixed here rather than in the shared file, because "what happens
   when the strip wraps" is a property of how many facts a page has. Selectors
   are (0,4,0) via the section class so they beat §15c's own :first-child /
   :last-child rules at (0,3,0) on specificity rather than on load order. */
.ng-v2 .ng-rapor .ng-facts--rapor .ng-facts__cell{
  padding:14px 14px 14px 0;
  border-top:1px solid var(--ng-hairline);
  border-left:0;
}
@media (max-width:639px){
  /* 2 up */
  .ng-v2 .ng-rapor .ng-facts--rapor .ng-facts__cell:nth-child(-n+2){
    border-top:0; padding-top:0;
  }
  .ng-v2 .ng-rapor .ng-facts--rapor .ng-facts__cell:nth-child(2n){
    padding-left:14px; padding-right:0;
    border-left:1px solid var(--ng-hairline);
  }
}
@media (min-width:640px){
  /* 3 up, two rows */
  .ng-v2 .ng-rapor .ng-facts--rapor .ng-facts__cell{
    padding:16px 20px;
    border-left:1px solid var(--ng-hairline);
  }
  .ng-v2 .ng-rapor .ng-facts--rapor .ng-facts__cell:nth-child(3n+1){
    padding-left:0;
    border-left:0;
  }
  .ng-v2 .ng-rapor .ng-facts--rapor .ng-facts__cell:nth-child(3n){
    padding-right:0;
  }
  .ng-v2 .ng-rapor .ng-facts--rapor .ng-facts__cell:nth-child(-n+3){
    border-top:0; padding-top:0;
  }
}
/* "6 okul · 2 sağlık · 3 park" / "6 schools · 2 health · 3 parks" is a
   composite value in a cell sized for "84.300". It comes down one step rather
   than being allowed to wrap to three lines and drag the row's baseline; 17px
   is still three over the reading floor. */
.ng-v2 .ng-rapor .ng-facts__v--long{ font-size:17px; }

/* --- 2b. the six categories, as a real table ------------------------------
   §15b's .ng-dtable carries the semantics, the theme defences and the type;
   the column widths are the page's, per its own note. Three columns: the
   category (row header), a distribution bar, the count.

   THE BAR COLUMN IS A REDUNDANT ENCODING of the count in the next column,
   which is what makes it safe to drop below 480px — unlike hiding a data
   column, which would hide information from every phone. Between 480 and 767
   it survives at 72px, which is still enough to read as a proportion.

   THE <tfoot> CARRIES AN EMPTY CELL IN THE BAR COLUMN, ON PURPOSE, and it is
   worth knowing why before anyone "tidies" it into a colspan. The first build
   wrote `<th colspan="2">` there, which made the total row's cells
   nth-child(1) and nth-child(2) while every other row's were 1, 2 and 3. Two
   defects followed, both invisible to ng-page-check, which called the page
   clean before and after:

     - `tr > :nth-child(2){width:42%}` landed on the TOTAL VALUE, so the
       browser gave the count column half the table. At 1440 "Kafe ve restoran"
       wrapped to two lines with 400px of empty space beside it and the
       BOŞ KATEGORİ chip broke INSIDE its own pill.
     - the <=479 rule below, which drops the redundant bar column, hid the
       total value itself. At 390 the table read "Kesitteki toplam perakende
       noktası" with NO NUMBER — found in the 390 screenshot.

   Three cells in every row means one set of column rules that cannot be wrong
   for one row in three. */
.ng-v2 .ng-rapor__t tr > :nth-child(2){ width:42%; }
.ng-v2 .ng-rapor__t tr > :nth-child(3){ width:84px; }
.ng-v2 .ng-rapor__bar{
  display:block;
  height:6px; border-radius:3px;
  background:var(--ng-surface-sunken);
  overflow:hidden;
  max-width:420px;
}
.ng-v2 .ng-rapor__bar i{
  display:block; height:100%; border-radius:3px;
  background:var(--ng-indigo);
}

/* THE EMPTY CATEGORY IS THE FINDING, so it is the only accented line in the
   table. A CHIP AND A COLOUR, NOT A TINTED ROW: ng-shared §15b's own note says
   a summary row is separated by a rule and never by a fill, because a shaded
   row inside a white panel is a third surface role and this system has two.
   The previous composition of this page did tint the row (accent-wash at 8%);
   inside a <table> that reads as a selected row in a UI, which is not what is
   being said. The bar track stays visible and empty — painting the absence
   would be a lie in the same chart.

   11px x .1em = ratio .10, so the chip takes the tracked-label exception by
   measurement. --ng-accent (not display) at 4.87:1 on the wash. */
.ng-v2 .ng-rapor__chip{
  display:inline-block;
  margin-left:10px;
  padding:3px 9px;
  border-radius:var(--ng-radius-pill);
  background:var(--ng-accent-wash);
  color:var(--ng-accent);
  font-family:var(--ng-font-label); font-weight:600;
  font-size:11px; line-height:1.3; letter-spacing:.1em;
  text-transform:none;
  white-space:nowrap;                 /* "BOŞ / KATEGORİ" broke inside the pill */
  vertical-align:2px;
}
.ng-v2 .ng-rapor__t tr.is-gap td.is-num{ color:var(--ng-accent); }

/* --- 2c. .ng-prov — the provenance ladder ---------------------------------
   The three steps used to be a section of their own. On a three-section page
   they are the report's provenance and they sit under it, inside the same
   band, separated by a rule rather than by a band change.

   THE STEP RULES HAD TO CHANGE COLOUR ON MIST, and this is not a style
   preference. .ng-steps__item draws a 2px --ng-hairline rule, which is 1.26:1
   on the #FAFBFF ground and 1.06:1 on #EDEFF9 mist — on this band the sequence
   the ladder is made of simply disappeared. --ng-border-strong composites to
   ~#7A7DA4 over mist, which is a legible divider, and it drops to 1px because
   2px of it would be heavier than the 2px hairline ever looked on ground.
   Worth knowing for any page that puts a shared primitive on a sunken band:
   hairlines are tuned for the ground, not for mist. */
.ng-v2 .ng-prov{
  margin-top:50px;
  padding-top:42px;
  border-top:1px solid var(--ng-hairline);
}
.ng-v2 .ng-prov__title.ng-prov__title{
  margin:12px 0 0;
  font-size:clamp(1.5rem, 3vw, 1.9rem);
  line-height:1.2;
  letter-spacing:-0.018em;
  color:var(--ng-ink);
  max-width:26ch;
}
.ng-v2 .ng-prov__lede{ margin-top:14px; max-width:62ch; }
.ng-v2 .ng-prov .ng-steps{ margin-top:32px; }
.ng-v2 .ng-prov .ng-steps__item{
  border-top-width:1px;
  border-top-color:var(--ng-border-strong);
}
.ng-v2 .ng-prov__note{ margin-top:34px; max-width:84ch; }
.ng-v2 .ng-prov__links{ margin-top:18px; }

/* ==========================================================================
   3. THE LEDGER — section 30
   The client's four analysis titles. NOT a 2x2 of raised cards: that is the
   shape every leaf on this site uses for its value list, and four white cards
   look identical whatever is written in them. Ruled rows across the full
   container read as an index of named analyses, which is what this is.

   The whole ROW is the anchor — the fix for the four identical "Daha Fazla
   Bilgi" / "More Info" links (109x17px and 63x17px, a tap-target failure at
   1024, 768 and 390) that the previous pass removed and this one keeps
   removed. A row is 120px+ tall at every width, so it needs no hit-area rule.
   ========================================================================== */
.ng-v2 .ng-titles__group + .ng-titles__group{ margin-top:40px; }
.ng-v2 .ng-titles__gname.ng-titles__gname{
  margin:0 0 4px;
  font-size:22px; line-height:1.25;
  letter-spacing:-0.012em;
  color:var(--ng-ink);
}
.ng-v2 .ng-titles__note{ margin-top:30px; max-width:88ch; }

.ng-v2 .ng-defs{ list-style:none; margin:0; padding:0; }
.ng-v2 .ng-defs__item{ border-top:1px solid var(--ng-hairline); }
.ng-v2 .ng-defs__item:last-child{ border-bottom:1px solid var(--ng-hairline); }
.ng-v2 .ng-defs__link{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:12px;
  padding:22px 0;
  color:var(--ng-ink);
  text-decoration:none;
}
/* Three tracks at >=900: the numeral, the name rail, the reading column. The
   destination sits UNDER the rail rather than in a fourth track — akaryakit's
   .ng-offer put it in its own right-hand column on a fixed 230px track and the
   longest label filled the line exactly, pushing its arrow onto a line of its
   own where it read as a stray glyph. Two rows in the middle track cannot do
   that, and the reading column is free to take all the remaining width.

   Source order is no / rail / body / to, which is also the reading order when
   the grid collapses at <900: number, title, description, destination. Putting
   the destination inside the rail (the first build) meant a phone read
   "go here" before it read what the thing was. */
@media (min-width:900px){
  .ng-v2 .ng-defs__link{
    grid-template-columns:46px minmax(0,290px) minmax(0,1fr);
    grid-template-rows:auto 1fr;
    grid-template-areas:
      "no rail body"
      "no to   body";
    column-gap:34px;
    row-gap:0;
    padding:28px 0;
  }
  .ng-v2 .ng-defs__no{ grid-area:no; }
  .ng-v2 .ng-defs__rail{ grid-area:rail; }
  .ng-v2 .ng-defs__to{ grid-area:to; align-self:start; }
  .ng-v2 .ng-defs__body{ grid-area:body; }
}
.ng-v2 .ng-defs__no{
  font-family:var(--ng-font-label); font-weight:600;
  font-size:12px; line-height:1.3; letter-spacing:.1em;
  text-transform:none;
  color:var(--ng-accent);
  font-variant-numeric:tabular-nums;
}
.ng-v2 .ng-defs__rail{ min-width:0; }
/* h4. Doubled class for the theme's `h?:not(:first-child){margin-top:50px}` at
   (0,2,2) — see ng-shared.css §11. It is not the first child of the row. */
.ng-v2 .ng-defs__name.ng-defs__name{
  margin:0;
  font-size:20px; line-height:1.25;
  letter-spacing:-0.012em;
  color:var(--ng-ink);
}
.ng-v2 .ng-defs__meta{
  display:block; margin-top:8px;
  font-family:var(--ng-font-label); font-weight:500;
  font-size:12px; line-height:1.35; letter-spacing:.1em;
  text-transform:none;                /* authored pre-uppercased */
  color:var(--ng-muted);
}
.ng-v2 .ng-defs__to{
  display:block; margin-top:14px;
  font-family:var(--ng-font-label); font-weight:600;
  font-size:14px; line-height:1.35; letter-spacing:.02em;
  color:var(--ng-accent);
}
.ng-v2 .ng-defs__to .ng-arrow{ margin-left:8px; }
.ng-v2 .ng-defs__body{
  margin:0;
  font-size:15px; line-height:1.65;
  color:var(--ng-muted);
  max-width:66ch;
}
.ng-v2 .ng-defs__link:hover .ng-defs__name{ color:var(--ng-accent); }
.ng-v2 .ng-defs__link:hover .ng-defs__to{ color:var(--ng-accent-hover); }
.ng-v2 .ng-defs__link:hover .ng-arrow{ transform:translateX(4px); }

/* ==========================================================================
   4. THE CLOSING RAIL — end of section 30
   Copied, with its reasoning, from pages/akaryakit.css §4. That page's dark
   band is assigned MIDDLE and this one's is NONE-MIST, and both end up with
   the same problem: the page cannot close on the indigo slab, so the closing
   decision is the SUNKEN role doing exactly its job — mist + hairline holding
   two white chrome pills.

   It sits inside the last section rather than in a section of its own, because
   the assignment is three sections and this is the third. The reader who has
   just read the four analysis titles is the reader deciding whether to ask for
   them.
   ========================================================================== */
.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 h2 is NOT the first
   child of its block — the eyebrow is — so `h2: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;
  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);
}

/* ==========================================================================
   5. RESPONSIVE
   ng-mobile.css §7 carries every 44px hit area (crumbs, buttons, pills, tel)
   at <=767, at 768–1023 and at exactly 1024. The only interactive thing this
   page adds is .ng-defs__link, a row over 120px tall at every width, so this
   block is type and rhythm only.
   ========================================================================== */

@media (max-width:959px){
  .ng-v2 .ng-rapor__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-v2 .ng-rapor__def,
  .ng-v2 .ng-defs__body,
  .ng-v2 .ng-close__lede{ font-size:16px; }
  .ng-v2 .ng-titles__note,
  .ng-v2 .ng-prov__note,
  .ng-v2 .ng-rapor__note{ max-width:none; }

  /* .ng-fig's two mobile rules moved to ng-shared.css §16a with the rest of
     the primitive; they are not restated here. */
  .ng-v2 .ng-titles__gname.ng-titles__gname{ font-size:20px; }
  .ng-v2 .ng-defs__name.ng-defs__name{ font-size:19px; }
  .ng-v2 .ng-defs__link{ padding:20px 0; gap:10px; }
  .ng-v2 .ng-prov{ margin-top:38px; padding-top:32px; }
  .ng-v2 .ng-close__rail{ margin-top:36px; padding:22px 18px; }
  .ng-v2 .ng-close__meta{ margin-top:14px; }

  /* The table at 768 and below. The bar column narrows first; the category
     names are the content and keep the reading floor. */
  .ng-v2 .ng-rapor__t tr > :nth-child(2){ width:72px; }
  .ng-v2 .ng-rapor__bar{ max-width:72px; }
  .ng-v2 .ng-rapor__t tr > :nth-child(3){ width:64px; }
  .ng-v2 .ng-rapor__chip{ margin-left:8px; }
}

@media (max-width:479px){
  /* At 390 the panel body is 314px of usable width and the category names run
     to "Elektronik ve teknoloji" plus a BOŞ KATEGORİ chip. The distribution bar
     is dropped here — and ONLY here — because it encodes exactly what the count
     column next to it already says, so nothing is hidden from a phone. A data
     column would never be dropped this way; .ng-dtable__wrap's scroll is the
     valve for that, and it is deliberately not being relied on. */
  .ng-v2 .ng-rapor__t tr > :nth-child(2){ display:none; }
}

/* ==========================================================================
   6. 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 beyond those two: the distribution bars are static widths
   rather than transitions, precisely so a reduce preference has nothing to
   switch off here, and the only hover transform is .ng-arrow's. Left as a note
   rather than an empty block so the next person does not go looking for the
   missing rule.
   ========================================================================== */

/* ==========================================================================
   7. THE TWO SAMPLE OUTPUTS — foot of section 30

   Added by the content-image rollout. The two client rasters for this page
   sit at the very BOTTOM of the ledger section, as an equal two-up, one
   picture per group: row 02's output on the left, row 03's on the right. The
   pair is therefore the h1's two halves shown once each, in the ledger's own
   order.

   WHY NOTHING WAS ADDED ABOVE THE FOLD, WHICH MATTERS MORE HERE THAN THE
   LAYOUT DOES. This page's opening is D-NUMBER — a giant 12 with the h1
   subordinate under it — and /sektorler/saglik/ is built from the identical
   triple. The pass that separated the two gave saglik a framed picture BESIDE
   its display numeral. Putting one anywhere near this page's numeral would
   hand the two pages the same first screen again. Section 10 is untouched;
   these two frames are at the foot, which is a place saglik has nothing.

   EVERYTHING INSIDE EACH CELL IS ng-shared.css §17a — .ng-figband__fig /
   __frame / __img / __flag / __cap are authored as standalone selectors and
   work without §17a's own one-column .ng-figband wrapper. What is added here
   is the two-column track, the block's rule and lead-in, and the small label
   that ties each frame to its ledger row. Nothing restates §17a.

   NO max-width CAP ON THESE FRAMES, and that is measured rather than assumed.
   The assets are 780x540 and a frame wider than 780 upscales them. Two equal
   columns inside a 1120px container land near 520px at 1440 and near 470px at
   1024; below the break the single column is the container itself, which is
   under 780 at every width where one column applies. There is no width at
   which either frame reaches 780, so a cap would be inert.
   ========================================================================== */

/* A RULE, NOT A BAND. The page's only tonal break is section 20, per its
   NONE-MIST assignment, so this block is separated from the ledger the same
   way .ng-prov is separated from the report above: a hairline and air. */
.ng-v2 .ng-titles__figs{
  margin-top:46px;
  padding-top:40px;
  border-top:1px solid var(--ng-hairline);
}
.ng-v2 .ng-titles__figkick{ margin:0; }

/* THE PAIR. 768 is the break, so the two frames stack on a phone and stand
   side by side from a portrait tablet up. align-items:start rather than §17a's
   center: the two captions run to different lengths and centring floats the
   shorter frame off the taller one's top edge. The frames themselves are the
   same height because the two assets are. */
.ng-v2 .ng-titles__figpair{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:30px;
  align-items:start;
  margin-top:30px;
}
@media (min-width:768px){
  .ng-v2 .ng-titles__figpair{
    grid-template-columns:repeat(2,minmax(0,1fr));
    column-gap:32px;
  }
}

/* WHICH LEDGER ROW THIS FRAME IS THE OUTPUT OF — deliberately NOT the
   artefact's title. The title belongs in the figcaption under the frame, where
   it reads as the picture's name; this line above the frame names the GROUP the
   row sits in, so the two labels do different jobs instead of saying the same
   thing twice. Each title is therefore printed twice on the page and no more:
   once as an h4 in the ledger, once in its own figcaption.

   .ng-defs__meta's spec exactly (12px, .1em, muted, tabular numerals), because
   this label points AT a .ng-defs row and reading as the same kind of thing is
   the whole point. 12px at .1em is ratio .10, over the 0.08 the sweep measures
   for the tracked-label exception, and the text is authored pre-uppercased —
   Turkish i maps to I with a dot. */
.ng-v2 .ng-titles__figlabel{
  margin:0 0 12px;
  font-family:var(--ng-font-label); font-weight:500;
  font-size:12px; line-height:1.35; letter-spacing:.1em;
  text-transform:none;
  color:var(--ng-muted);
  font-variant-numeric:tabular-nums;
}

@media (max-width:767px){
  .ng-v2 .ng-titles__figs{ margin-top:36px; padding-top:32px; }
  .ng-v2 .ng-titles__figpair{ gap:26px; margin-top:26px; }
}

/* REMOVED 2026-08-20 — .ng-titles__figlede. Its element is gone: it carried the
   sample hedges and the "solda … sağda" pointers into two rasters that no longer
   contain a left and a right half. .ng-titles__figlabel survives and still names
   the ledger row, which is true; the comment beside it claiming the title is
   "already burnt into the raster in 28px type" is not, and has been corrected.

   RESTORED 2026-08-20 — the .ng-figband__cap under each frame. Stripping it left
   two unlabelled pictures at the foot of the page with only a group label above
   them, which named neither analysis. The caption takes ng-shared §17's own spec
   unchanged, so nothing is added here for it. The grid was already two equal
   columns and stays that way: the two assets share one aspect ratio and there is
   no reason for either frame to be the larger. */
