/* ==========================================================================
   REVISION 2026-09-13 — four client directives, applied on top of the panel's
   file. Nothing about the tariff tables, the strip or the tokens changed.
     1. THE BAND IS PAPER. #pricing no longer turns to the house green ("it
        looks bad"); §17's retreat is applied in §3 and the run is one cream.
     2. FOUR BOXES. page-templates/longstay.php now wraps the column's groups:
        .jd-box--who (suitable for + Duration), .jd-box--standard (model 01 and
        the deposit ladder), .jd-box--flex (model 02), a .jd-note footnote, and
        .jd-box--services. .new_stay_left is a transparent grid of boxes; every
        selector that read `.new_stay_left > …` now reads `.jd-box > …`, and the
        old eyebrow / tail-heading / :has(+table) devices are gone — every box
        title is the same Fraunces title. See the REVISION section before §10.
   REVISION II, 2026-09-13 p.m. — the client sent two screenshots as the
        reference: the pricing ledger of the best-luxury landing page
        (sections2.css, .jd-p-*) for the Standard Pricing Model, and the
        strip paragraph set in the serif. §19 (before §14) sets the four
        titles as bold sans bands and the tables as that ledger; §2's
        paragraph is now Fraunces. The "same Fraunces title" line above is
        superseded by §19. Template hooks: page-templates/longstay.php
        (.bkp-ledger-2026.09.13); stylesheet backup .bkp-ledger-2026.09.13.
     3. PREVIOUS / NEXT. js/custom.js passes nav:true, navElement:'button' and
        a visually-hidden label; §8 styles the two buttons on the recess and
        hides the numbered film index. The staycation page shares that init and
        keeps its index (stay-lux.css hides .owl-nav there).
     4. THE AMENITIES ARE CARDS: a plate with a 12px radius, a soft shadow, a
        tinted 40px disc holding the line-art icon, the name in Karla 700 ink —
        the clubhouse amenity list on infinityheights.in, in this palette. The
        ruled register (§9's original) is replaced wholesale.
   ========================================================================== */
/* ==========================================================================
   JAGRITI DHAM  —  LONG STAY   ·   page 1504 only
   /best-old-age-home-in-kolkata/   ·   page-templates/longstay.php
   "PAPER, PLATE, PAPER"          css/longstay-lux.css   rev C  2026-09-10
   Replaces the shipped file in full.
   ==========================================================================

   THE IDEA, IN ONE SENTENCE
   -------------------------
   The strip is paper. The pricing band turns over to the house deep green —
   the SAME band the home page already uses for Green Advantages, quoted
   character for character from css/home-lux.css:2906 — and onto that dark
   ground is laid ONE flat, ungrained, brass-capped cream plate that holds
   every word and every one of the fourteen figures in the section. Beside it
   one darker object: the viewing recess. Then the amenities are paper again.

   The green arrives at three scales, which is what gives a 3,500px scroll a
   shape instead of a sequence of treatments: a small nameplate behind LONG
   STAY, the whole band under the prices, eighteen icon chips in the register.

   The material rule, stated as a rule:
        PAPER HAS GRAIN.  PLATE DOES NOT.
   That is one declaration (`background-image:none` on the plate) and it is
   why the plate reads as a polished surface laid on a textured one, and why
   the 1px #a58c55 rules inside it are allowed to exist at all — #a58c55 is
   3.13:1 on flat cream and 2.77:1 on grained cream. Add grain to the plate
   "for consistency" and every meaningful rule in the price matrix silently
   drops below 3:1.

   THE PLATE IS `.new_stay_left` — THE COLUMN DIV ALREADY IN THE TEMPLATE
   ----------------------------------------------------------------------
   That single decision is what the rest of the file hangs on. It means every
   word of body copy in the section (the four "suitable for" statements, the
   three notes, the fifteen included services — roughly 300 words) is dark ink
   on cream at 10.07:1 rather than light ink on a dark band, which matters for
   a readership skewing 65+. It also means no inherited theme colour can
   strand a paragraph: style.css:3392's #000 h6 and :3429's #151515 cells land
   on cream as merely-dark ink instead of as invisible text on the page's
   conversion block. And it means:

   THIS FILE NEEDS NO MARKUP CHANGE. NOT ONE.
   Every selector is written against longstay.php exactly as it stands today,
   including the third table living in `.flexible_model` rather than
   `.new_stay_left_table`, the untitled middle table, the colspan admission
   cell and the eighteen `col-lg-3 col-md-4` amenity columns. There is
   therefore no "unmigrated fallback" block in this file and no half-applied
   state it can fail in. ONE optional five-tag markup edit (§16) upgrades the
   figures from correct to display-typeset; the file detects it, and both
   states are correct.

   THE EDITING CONTRACT — binding, and the reason for most of the restraint
   -------------------------------------------------------------------------
   No price leaves the template. No number is duplicated anywhere. Nothing
   here computes, derives, restates or ranges a figure. Changing a price is
   still: open longstay.php, edit digits. There is no break-even, no "from"
   price, no equivalence claim between the two models and no recommendation —
   both models get identical visual weight and are told apart by a numeral,
   never by mass, fill or colour. The only marks this stylesheet adds to the
   page are "01" and "02".

   ==========================================================================
   LOAD-BEARING — DO NOT "TIDY" ANY OF THESE
   ==========================================================================
   This project has shipped bugs twice by simplifying selectors that looked
   redundant. Each item below fails SILENTLY, not loudly.

   L1  `.stay_banner_strip .container .row [class*="col-"] …`
       `.container` is a SPECIFICITY TERM, not tidiness. banner-lux.css:939,
       :964 and :971 own this band with
       `.stay_banner_strip [class*="col-"]:not(:has(.whatsapp_block)) p`,
       which is (0,3,1) — `:not()` takes its argument's specificity and
       `:has(.whatsapp_block)` is (0,1,0). Adding `.container` makes every
       strip rule here (0,4,x), which wins OUTRIGHT instead of tying and
       relying on enqueue order. Drop it and the paragraph reverts to
       banner-lux's ~789px justified measure under this file's nameplate.
       Two of the four panel designs died on exactly this.

   L2  `#pricing .owl-nav.disabled{ display:none !important; }`
       THE FLAG IS NOT OPTIONAL. style.css:680 says
       `.owl-carousel .owl-nav.disabled{ display:inherit !important }` and
       owl.carousel.js builds prev/next unconditionally even though
       js/custom.js:197 passes `nav:false`. Without a flagged rule of greater
       weight, two live 35x35 #bf8349 orange chevrons render inside the new
       dark recess. Only a flagged rule beats a flagged rule; the `#pricing`
       id is what beats the theme's (0,3,0).

   L3  `--bs-gutter-x` / `--bs-gutter-y` are zeroed on `.stay_aminities .row`
       AND ON NOTHING ELSE. Never on a `.container`. Setting the gutter on a
       container overflows this page and has shipped twice on this project.

   L4  THE md TRAP, and it is a PAIR. `#pricing .row > [class*="col-"]
       {width:100%}` at (1,2,0), with the 8/4 split restored at the SAME
       specificity inside `@media (min-width:992px)` so source order settles
       it. The template is `col-lg-8 col-md-8` + `col-lg-4 col-md-4`, so at
       768–991 the price column is 456px — NARROWER than the 516px it gets at
       576–767. A pricing table that gets worse as the screen gets bigger is a
       bug. Delete either half and it comes back.

   L5  `@media (prefers-reduced-motion:reduce)` sets
       `visibility:visible !important; animation:none !important` on `.wow`.
       WOW.js writes `visibility:hidden` as an INLINE style and animate.css
       gives `.animated` `animation-fill-mode:both`, which outranks unflagged
       author declarations. Without BOTH flags the entire run is BLANK for
       anyone who asked for less motion — the worst possible way to honour
       the request.

   L6  THE LEAF BLEED. `.new_stay_left_table` / `.flexible_model` carry
       `margin-left/right: calc(var(--jd-pad) * -1)`, so the tables use the
       plate's full inner width. `--jd-pad` is the plate's own padding, so the
       two can never drift — but hard-code either and the tables overflow the
       plate at 320px. This bleed is what buys 294px of table room on a 320px
       phone; see the arithmetic in §7.

   L7  `border-collapse:separate; border-spacing:0` on the price tables.
       Not a preference. The first column is `position:sticky` and no engine
       has ever positioned a sticky cell correctly inside a COLLAPSED table
       (crbug 702927) — the collapsed border scrolls away from the cell it
       belongs to. Every rule is therefore drawn as a per-cell border. Switch
       to `collapse` and the frozen label column breaks on a phone, which is
       the only place it is ever needed.

   L8  `counter-increment` fires on `h3` inside `.new_stay_left`, and the
       untitled middle table gets NO numeral ON PURPOSE — that absence is what
       parents the deposit ladder to model 01, which is exactly what it is.
       DO NOT ADD AN `<h3>` TO THE MIDDLE TABLE. It would number the ladder 02
       and push Zero Deposit to 03, silently reversing the one structural
       statement this file makes about the money.

   L9  THE AMENITY CHIP IS THE BOX'S `::before`, NOT THE `<img>`'s BACKGROUND.
       `filter` applies to an element's ENTIRE rendering, background included.
       Put the green on the `<img>` and `brightness(0)` turns the chip black,
       `invert(1)` turns it white, and the now-white line art vanishes into a
       white square: eighteen blank chips. So the chip is a `::before` and the
       icon is laid over it in the SAME explicitly-placed grid cell (both
       `grid-area:1/1`, the label at `1/2` — once a `::before` exists,
       auto-placement would otherwise push the icon into the label track).
       Only the `<img>` carries the filter.

   L10 FIGURES ARE NEVER `white-space:nowrap` IN THE UN-MIGRATED STATE --
       WITH ONE EXCEPTION, THE DEPOSIT LADDER FROM 390px UP.
       An un-migrated cell's text node in leaves 1 and 3 is the WHOLE string —
       "INR 55,000 + GST & applicable taxes" — and nowrap makes that one
       ~340px line, which pushes those leaves hundreds of pixels past their
       rails. The ladder is different: its cells hold a bare figure and no
       qualifier, so from 390px it IS nowrap (§6), because with normal
       wrapping its six figures broke inconsistently across 576-767 and
       992-1199. Below 390 "INR 30,00,000" breaks after INR and the ladder
       FITS a 320px phone. For leaves 1 and 3, nowrap is switched on from
       576 up and ONLY in the migrated state, where the text node is just
       the figure.

   L11 `overflow-x:auto` on each leaf is a GUARD, not a plan (§7). No
       `tabindex` is added: Chrome and Firefox make an overflowing scroll
       container focusable natively, and only WHEN it overflows, so the
       keyboard gets a region exactly when it needs one instead of three
       permanently empty tab stops. Safari does not do this yet; that gap is
       named in `openRisks` rather than hidden.

   L12 `filter:brightness(0) invert(1)` on the eighteen amenity PNGs, and
       `filter:none` on them inside `@media (forced-colors:active)`. All
       eighteen are single-colour #1D0764 line art on transparency, so the
       two-step is deterministic and source-independent — it is the identical
       chain home-lux.css already runs on the Green Advantages icons. Under
       forced colours the OS inverts as well, and without the reset the icons
       come back as solid blocks.

   L13 `#a58c55` NEVER TOUCHES GRAINED CREAM OR THE GREEN BAND, and `#cbb279`
       NEVER CARRIES MEANING ON CREAM. Measured: #a58c55 is 2.77:1 at the
       worst pixel of grained cream and 2.59:1 at the worst pixel of the
       grained green, but 3.13:1 on the flat plate. #cbb279 is 1.93:1 on cream
       and 4.06:1 at the worst pixel of the band. So brass boundaries live on
       the PLATE (#a58c55) or on the BAND (#cbb279), never the other way
       round, and anything that must be seen on grained cream is #6b5426
       (6.14:1 worst) or #2b3f2f (9.68:1 worst).

   L14 SOURCE ORDER AND SCOPE. `.new_stay`, `.tick`, `.sectiongap`,
       `.section-title`, `.sticky_div` and `.longstay_video_carousel` are all
       GENERIC. page-templates/newshortstay.php (page 1511) emits
       `.new_stay tick sectiongap` with NO id and has not been redesigned;
       only `.stay_aminities` is unique to 1504. Two protections, deliberately
       doubled: functions.php:316 enqueues this under `is_page(1504)`, and
       every pricing selector is additionally scoped under `#pricing`, which
       only longstay.php emits. The strip and the amenities have no id, so the
       enqueue is all they have. NOTHING IN THIS FILE MAY BE MOVED INTO
       style.css OR responsive.css.

   ==========================================================================
   CONTRAST — sRGB relative luminance, computed, at the WORST composited
   pixel of each ground (the grains are real and they move the number)
   ==========================================================================
   A. PAPER  #faf7ef + feTurbulence .04   worst grain pixel #f0ede5
                                                        flat / worst   need
        #2b3f2f  heads, amenity names ............ 10.57 / 9.68   4.5  PASS
        #3a4238  strip body copy ................... 9.73 / 8.90   4.5  PASS
        #6b5426  amenity lattice, section mark ...... 6.71 / 6.14   3.0  PASS
        #5b6357  (available, unused here) ........... 5.83 / 5.33   4.5  PASS
        #a58c55  BANNED here ........................ 3.03 / 2.77   3.0  FAIL
        #cbb279  BANNED here ........................ 1.93 / 1.76   3.0  FAIL

   B. BAND  #pricing = #2b3f2f + grain .05 + the house sheen
      G1 flat #2b3f2f · G2 sheen top #364939 · G3 worst pixel #405243
        #fdfbf6  the plate, as an AREA ..... 10.95 / 9.36 / 8.10   3.0  PASS
        #f4ecd8  nameplate ink (flat chip) .. 9.62 / 8.22 / 7.12   4.5  PASS
        #cbb279  plate edge, cap, recess edge 5.49 / 4.70 / 4.06   3.0  PASS
        #a58c55  NEVER USED HERE ............ 3.49 / 2.99 / 2.59   3.0  FAIL
      NO TYPE OF ANY KIND IS SET ON THIS GROUND. Every word in #pricing is on
      the plate or in the recess. That is the whole point of §4.

   C. PLATE  #fdfbf6 — FLAT and ungrained, so one number and no worst case
        #2b3f2f  every figure, titles, option heads ..... 10.95  4.5  PASS
        #3a4238  row labels, stub head, list copy ....... 10.07  4.5  PASS
        #6b5426  numerals, model rules, links, footings .. 6.95  4.5  PASS
        #5b6357  the *Effective-from footnote ............ 6.03  4.5  PASS
        #a58c55  ROW RULES, head rule, stub seam ......... 3.13  3.0  PASS
      The row rules are the panel's standing fix: all four submitted designs
      shipped them at 1.34–1.59:1 and offered a mouse-only hover as the
      remedy. On a six-figure deposit matrix read by people in their seventies
      the structure has to be visible without a pointer.

   D. PLATE, ROW-HOVER WASH  #f4eee0
        #2b3f2f  row label, lifted from #3a4238 ......... 9.79  4.5  PASS
        #3a4238  figures ............................... 9.00  4.5  PASS
        #6b5426  the row rule, switched up from #a58c55 .. 6.21  3.0  PASS
        #a58c55  2.80  <- WHICH IS WHY THE RULE SWITCHES. The wash alone is a
                 1.09:1 change and cannot carry a state; leaving #a58c55 in
                 place would drop the row boundary below 3:1 in the exact
                 state the design added.

   E. DURATION FACT PLATE  #f7f2e6
        #2b3f2f  the value ........................... 10.14  4.5  PASS
        #6b5426  the label and the 1px edge ............ 6.43  3.0  PASS
      OPTIONAL-MARKUP CHIP  #e6d4a6  (the .jd-refund chip, §16.2)
        #6b5426  "100% REFUNDABLE" .................... 4.91  4.5  PASS

   F. RECESS  #22331f
        #f4ecd8  dot numeral on hover ground .......... 11.42  4.5  PASS
        #dcd5c4  dot numerals at rest .................. 9.20  4.5  PASS
        #e6d4a6  iframe and dot focus rings ............ 9.18  3.0  PASS
        #cbb279  current-dot fill, recess edge ......... 6.52  3.0  PASS
        rgba(203,178,121,.7) = #988c5e, the dot lattice . 4.00  3.0  PASS
        current vs inactive dot differ by FILL and by INK, never by colour
        alone.

   G. CHIP  #2b3f2f          icon at brightness(0) invert(1) = #ffffff 11.32
      CHIP HOVERED #cbb279   icon at brightness(0) = #000000 ......... 10.18

   TARGETS AND FOCUS
     · Carousel dots: 44 x 44 minimum in both axes (SC 2.5.5), seventeen of
       them in an auto-fill 44px grid.
     · Every focus indicator is `:focus-visible` with an offset: links 2px
       #6b5426 (6.95), rails 2px #6b5426 (6.95), dots 2px #e6d4a6 (9.18),
       iframes 3px #e6d4a6 over a dark inset band (9.18).
     · The mailto/tel links take a real underline indicator rather than a 44px
       box, under SC 2.5.5's inline exception.

   ==========================================================================
   MEDIA QUERY TOPOLOGY
   ==========================================================================
   EVERY query is `min-width`, applied on top of a working default, plus
   `prefers-reduced-motion`, `hover`, `forced-colors`, `print` and two
   `@supports selector(:has(*))`. THERE IS NOT ONE max-width QUERY AND NOT ONE
   min/max PAIR, so the 767.184px dead band measured on this project cannot
   occur. Breakpoints are Bootstrap's own: 480 (register only), 576, 768, 992,
   1200. The sticky video column follows the same rule — `position:static` is
   the DEFAULT and sticky is switched ON at >=992, rather than switched off
   again with a max-width undo.

   `:has()` is load-bearing in exactly two places (the Duration fact plate and
   the figure-size switch). Both are single-selector rules inside their own
   `@supports`, and NO `:has()` selector anywhere in this file shares a comma
   list with a non-`:has()` selector — that mistake invalidates the whole list
   on a pre-`:has()` engine and is precisely how a competing proposal put
   horizontal page overflow on this block at 320px. Degradation: the Duration
   heading falls back to a readable h6, the figures stay at their un-migrated
   size. Nothing breaks.

   ==========================================================================
   COPY DEFECTS IN THE SOURCE — FOR THE EDITOR, NOT FOR CSS
   ==========================================================================
   Flagged, deliberately NOT fixed here and deliberately not laundered through
   a stylesheet. Each needs the client's sign-off.
     · longstay.php:111 and :112 — "applicale Taxes" (twice). "applicable".
     · longstay.php:38 — "No Lockin Period". Should be "No lock-in period".
     · longstay.php:36 — "gerontologyrelated", missing a space.
     · longstay.php:53 and :55 — a bare `&` where `&amp;` belongs.
     · longstay.php:92, :121, :122 — INR 5,00,000 printed THREE times across
       two tables. One shared footing is the right editorial answer and every
       judge picked it, but it is a markup restructure needing sign-off, not a
       CSS change. What this file does instead is refuse to AMPLIFY it: both
       admission rows are set as footings at 15.5px Karla behind a 2px rule,
       so the same figure is never rendered twice on one line at display size.
     · longstay.php:251 — "Amenities:", a trailing colon on a section head.
     · All seventeen iframes carry the identical title "YouTube video player".

   ==========================================================================
   WHAT NO STYLESHEET CAN FIX — FLAGGED, NOT GLOSSED
   ==========================================================================
     · js/custom.js:199 sets `autoplay:true` with only `autoplayHoverPause` on
       a seventeen-item carousel beside the prices. A live WCAG 2.2.2 failure;
       hover-pause serves neither keyboard nor touch; no CSS can stop a JS
       timer. One-word fix: `autoplay:false`.
     · owl.carousel.js builds each dot as `$("<div>")` — no role, no tabindex,
       no accessible name — so the dots are keyboard-inoperable and CSS cannot
       make an element focusable. The `:focus-visible` ring in §8 is written
       and waiting for `navElement:"button"` (or three lines of jQuery).
     · Seventeen YouTube iframes load eagerly, plus Owl's loop clones, on the
       page that has to convert. `loading="lazy"` on iframes 2–17 is free.
     · Heading order in the section runs h2 -> h6 -> h6 -> h3 -> h6 -> h6.
       Skipped levels are a best-practice problem rather than an A/AA failure;
       fixing it means retyping four h6s and retargeting five selectors, and
       belongs in its own pass.
   ========================================================================== */


/* ==========================================================================
   §1  TOKENS
   --------------------------------------------------------------------------
   Declared on the three section roots rather than on :root, so nothing here
   can leak into another template's cascade if this file is ever mis-enqueued.
   ========================================================================== */
.stay_banner_strip,
#pricing,
.stay_aminities{
  --jd-serif:"Fraunces","Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --jd-sans:"Karla","Segoe UI",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;

  /* grounds */
  --jd-paper:#faf7ef;          /* the two cream sections, grained */
  --jd-band:#2b3f2f;           /* the pricing ground, and the chip material */
  --jd-plate:#fdfbf6;          /* the tariff plate — FLAT, never grained */
  --jd-recess:#22331f;         /* the video well, the darkest value in play */
  --jd-row-wash:#f4eee0;       /* price-row hover, on the plate */
  --jd-inset:#f7f2e6;          /* the Duration fact plate */

  /* ink */
  --jd-ink:#2b3f2f;            /* headings and every figure */
  --jd-body:#3a4238;           /* body copy and row labels */
  --jd-brass-ink:#6b5426;      /* numerals, links, meaningful rules on cream */
  --jd-quiet:#5b6357;          /* footnotes */
  --jd-cream-ink:#f4ecd8;      /* type on the band, the chip, the recess */
  --jd-cream-quiet:#dcd5c4;    /* dot numerals on the recess */
  --jd-ring:#e6d4a6;           /* focus rings on dark ground */

  /* rules — see L13, these three are not interchangeable */
  --jd-rule-plate:#a58c55;     /* 3.13:1 — ON THE FLAT PLATE ONLY */
  --jd-rule-band:#cbb279;      /* 4.06:1 worst — ON THE BAND ONLY, non-text */
  --jd-rule-paper:#6b5426;     /* 6.14:1 worst — ON GRAINED CREAM ONLY */
  --jd-hair:rgba(203,178,121,.55);

  --jd-ease:cubic-bezier(.2,.7,.2,1);
  --jd-t:.24s;
}


/* ==========================================================================
   §2  PAPER  —  .stay_banner_strip
   --------------------------------------------------------------------------
   banner-lux.css:793 already gives this band the cream and the grain, and it
   also serves page 1511, so this section LAYERS rather than replaces. Four
   things change and nothing else is touched.

   1. THE HAIRLINE GOES. The band below changes colour and carries its own
      brass seam; a second 1px rule immediately above it would stack into a
      2px line that reads as a mistake.
   2. THE H2 BECOMES A NAMEPLATE. The editor types "LONG STAY" in capitals; at
      banner-lux's 36px Fraunces that is a slab of capitals arguing with the
      banner caption 40px above it. Reversed out of a small deep-green plate
      it stops competing and starts doing a job — it is the first appearance,
      at the smallest scale, of the material the pricing band is made of.
      `text-transform` is deliberately NOT set: which case the head is in
      stays the editor's call, exactly as banner-lux.css:804 argues.
   3. THE PARAGRAPH STOPS BEING JUSTIFIED and gets a real measure.
   4. FROM 1200 IT RUNS IN TWO COLUMNS. 110 words in one measure is ten long
      lines a family reads before reaching the number they came for; two
      ~61-character columns is five short ones, both on screen at once, and
      the strip is roughly 190px shorter — which on a page this long is a
      commercial argument, not a typographic one.

   SEE L1. Every selector here carries `.container` for specificity.
   ========================================================================== */
.stay_banner_strip{
  border-bottom:0;
  padding:44px 0 50px;
}

.stay_banner_strip .container .row [class*="col-"] h2{
  position:relative;
  display:block;
  width:-moz-fit-content;
  width:fit-content;
  max-width:100%;
  /* fit-content + margin-right:auto is what left-aligns the PLATE. The column
     carries Bootstrap's .text-center with !important, which cannot be beaten
     on the ancestor — but a fitted block with a zero left margin and an auto
     right margin ignores text-align entirely, and needs no flag. */
  margin:26px auto 26px 0;
  padding:12px 22px 13px;
  background-color:var(--jd-band);
  border:1px solid var(--jd-rule-band);
  font-family:var(--jd-serif);
  font-optical-sizing:auto;
  font-size:clamp(19px, 2.3vw, 28px);
  font-weight:600;
  line-height:1.12;
  letter-spacing:.07em;
  color:var(--jd-cream-ink);            /* 9.62:1 on the chip */
  text-align:left;
}
/* banner-lux:817 draws the house 46px mark as a centred block above the head
   and :967 unsets its auto margins. Kept as a mark, moved out of the plate's
   padding box, and given a colour that can be seen: #cbb279 is 1.93:1 on
   cream — decorative at best — so it becomes #6b5426 at 6.71:1. */
.stay_banner_strip .container .row [class*="col-"] h2::before{
  content:"";
  position:absolute;
  top:-18px;
  left:0;
  display:block;
  width:46px;
  height:2px;
  margin:0;
  background:var(--jd-brass-ink);
}

.stay_banner_strip .container .row [class*="col-"] p{
  /* 2026-09-13 p.m. II: the client's screenshot — the paragraph in the
     serif, one column, the full container. Fraunces at its text optical
     size is the same face as the plate above it; the heading ink rather
     than the body ink so a 20px serif does not read grey on the grain.
     (Was Karla 17px/1.78 on a 70ch measure.) */
  max-width:none;
  margin:0;
  font-family:var(--jd-serif);
  font-optical-sizing:auto;
  font-size:clamp(17px, 1.9vw, 20.5px);
  font-weight:500;                      /* the lightest Fraunces the theme
                                           loads (500/600/700); 400 would only
                                           be this instance under another name */
  line-height:1.42;
  letter-spacing:0;
  color:var(--jd-ink);                  /* 10.95 flat / ~10 worst pixel */
  text-align:left;
  -webkit-hyphens:manual;
          hyphens:manual;
}


/* ==========================================================================
   §3  THE BAND  —  #pricing
   --------------------------------------------------------------------------
   The colour, the grain, the sheen and the two seams are quoted VERBATIM from
   css/home-lux.css:2906 (#whatsmore, the Green Advantages band), so the band
   on this page and the band on the home page are provably the same object
   rather than two greens that nearly match. If the house band ever changes,
   change this by copying, not by eyeballing.

   style.css:271 gives `.sectiongap` 20px of padding at (0,1,0); `#pricing` is
   (1,0,0) and takes it back. A band needs room to be a band.
   ========================================================================== */
#pricing{
  position:relative;
  padding:40px 0 44px;
  /* 2026-09-13: paper, not the green band (§17's retreat, applied). The grain
     string is the strip's, so the run is one material; the seams are the
     brass hairline. */
  background-color:var(--jd-paper);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='.04'/%3E%3C/svg%3E");
  border-top:1px solid rgba(107,84,38,.35);      /* ≈2.1:1: a quiet rule between
                                                    three sections of one cream;
                                                    the brass hairline was 1.41 */
  border-bottom:1px solid rgba(107,84,38,.35);
}

/* L4 — the md trap, first half. (1,2,0) against Bootstrap's (0,1,0). No
   column class is edited in the template and --bs-gutter-x is not touched. */
#pricing .row > [class*="col-"]{
  flex:0 0 auto;
  width:100%;
  max-width:100%;
}


/* ==========================================================================
   §4  THE PLATE  —  #pricing .new_stay_left
   --------------------------------------------------------------------------
   One flat cream object on the dark band. Square, a 1px #cbb279 edge, a 3px
   brass cap. NO CAST SHADOW: this is a square-cornered, brass-hairline site
   and a material-design drop shadow would argue against everything else on
   it. The plate is lit because it is the brightest thing between two darker
   surfaces, not because something is faked underneath it.

   --jd-pad is the plate's own HORIZONTAL padding AND the negative margin the
   three leaves bleed by (L6) — change it in one place. --jd-pad-y is separate
   because the vertical rhythm and the measure want different numbers, and
   because this section is already ~2,400px tall: every 10px of symmetric
   padding is 20px of scroll a family does not need.
   --jd-edge-x is the inset the leaf headings and the first/last cells share,
   so the figures line up with the body copy above them. Below 576 it is
   deliberately SMALLER than --jd-pad: that is where the 320px fit is won.
   ========================================================================== */
#pricing .new_stay_left{
  --jd-pad:16px;               /* horizontal plate padding AND the leaf bleed */
  --jd-pad-y:20px;
  --jd-edge-x:6px;             /* outer inset: headings, first/last cell */
  --jd-cell-x:4px;             /* between-column cell padding */
  --jd-cell-y:14px;
  --jd-stub-gap:8px;           /* label column -> first figure */

  /* 2026-09-13: no longer the plate — a transparent grid of the four boxes
     (the plate itself is now `.jd-box`, REVISION section). The tokens stay
     here because every box inherits them. */
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:22px;
  background:transparent;
  border:0;
  padding:0;
  font-family:var(--jd-sans);
  color:var(--jd-body);
}


/* ==========================================================================
   §5  THE LEAD-IN  —  headings, ticks, lists, links, the Duration plate
   --------------------------------------------------------------------------
   Every heading is reached STRUCTURALLY, never by :nth-of-type. This template
   is hand-edited; an editor inserting one h6 must not silently re-assign the
   styling of three others. `h6:first-child`, `h6:has(+ .new_stay_left_table)`,
   `.flexible_model + h6` and `.flexible_model + h6 + ul + h6` cannot be
   broken that way. (The commented-out `<ul>` at lines 133–137 is a comment,
   not an element, so the adjacency chain is unaffected.)

   UPPERCASE BUDGET: this file makes THREE `text-transform` declarations at
   two tracking values (.14em and .2em). The house average is one to two per
   stylesheet. Twelve tracked-caps micro-labels at five tracking values is a
   2018 SaaS idiom that will date, and it is avoided deliberately.
   ========================================================================== */

/* base h6 — beats style.css:3392 (0,2,1) and responsive.css:831 at (1,1,1) */
#pricing .new_stay_left h6{
  font-family:var(--jd-sans);
  font-size:15px;
  font-weight:700;
  line-height:1.5;
  color:var(--jd-ink);                  /* 10.95:1 on the plate */
  margin:0 0 10px;
}
#pricing .new_stay_left h6 strong{ font-weight:700; }
/* the box titles and the footnote head carry ALL their text inside <strong>
   (a heading rule saying 600 would otherwise lose to a 700 strong) */
#pricing .jd-box > h6:first-child strong,
#pricing .jd-note > h6 strong{ font-weight:inherit; }

/* 2026-09-13: the "suitable for" eyebrow is gone — it is box 1's title now
   (REVISION section). */

/* 2026-09-13: the two tail headings ("Note:", "Services Included…") are no
   longer reached by adjacency — one is the footnote's head (.jd-note > h6),
   the other box 4's title. REVISION section. */

/* THE TICK LISTS.
   style.css:501 draws the Font Awesome check-circle in #cbb279, which on this
   plate is 1.93:1 — present, but not perceivable. It becomes #6b5426 at
   6.95:1. The theme's own -20px hang and 6px gap are kept; only the colour
   and the size change, so there is one mechanism rather than two.
   `> ul > li` (direct children only) is deliberate: it must NOT reach the
   nested <ol> under "24x7 Medical Support", whose markers style.css:3553 and
   :3557 already set correctly. An id-carrying selector would otherwise
   outrank that fix and put a check-circle in front of all eight points. */
#pricing :is(.jd-box, .jd-note) > ul{
  margin:0 0 20px 30px;
  padding-left:0;
}
#pricing :is(.jd-box, .jd-note) > ul > li{
  font-family:var(--jd-sans);
  font-size:15.5px;
  line-height:1.64;
  color:var(--jd-body);                 /* 10.07:1 on the plate */
  margin:0 0 9px;
}
#pricing :is(.jd-box, .jd-note) > ul > li::before{
  color:var(--jd-brass-ink);            /* 6.95:1 */
  font-size:15px;
}
#pricing .new_stay_left ol{
  margin:10px 0 6px;
  padding-left:22px;
}
#pricing .new_stay_left ol li{
  font-family:var(--jd-sans);
  font-size:15px;
  line-height:1.6;
  color:var(--jd-body);
  margin:0 0 6px;
}
#pricing .new_stay_left ol li::marker{
  color:var(--jd-brass-ink);
  font-weight:600;
}

/* THE TWO CONTACT LINKS in the Note list. style.css:3627 sets weight 600 and
   :3631 hovers them to #4f6f52, a green from no palette. SC 2.5.5's inline
   exception applies, so they get a real indicator rather than a 44px box that
   would wreck the sentence. */
#pricing .new_stay_left a{
  color:var(--jd-brass-ink);            /* 6.95:1 on the plate */
  font-weight:600;
  text-decoration:underline;
  text-decoration-thickness:1px;
  text-decoration-color:var(--jd-brass-ink);     /* 6.95:1 -- the .5 alpha
                                                    version was 2.27:1 and only
                                                    reached full strength on
                                                    hover, i.e. for a mouse */
  text-underline-offset:3px;
  transition:color var(--jd-t) var(--jd-ease),
             text-decoration-color var(--jd-t) var(--jd-ease);
}
#pricing .new_stay_left a:focus-visible{
  outline:2px solid var(--jd-brass-ink);
  outline-offset:3px;
}

/* THE DURATION FACT PLATE.
   "Duration: No Lockin Period" rehearses the label/value pattern the tariff
   is about to use, one beat before the prices arrive. Making the h6 a flex
   container turns the bare text node after <strong> into an anonymous flex
   item — which is how the value gets its own spacing and its own size with no
   wrapper added to the template.
   :has() is load-bearing here and only here in the lead-in, so it is
   isolated: its own rule, its own @supports, never in a comma list. Without
   :has() the base h6 above still renders as a readable heading.  [caps 2/3] */
/* 2026-09-13: the Duration h6 carries class jd-fact in the template, so the
   fact plate needs no :has() any more. */
#pricing .new_stay_left .jd-fact{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:4px 12px;
  margin:24px 0 0;
  padding:13px 16px 14px;
  background-color:var(--jd-inset);
  border:1px solid var(--jd-brass-ink);    /* 6.43:1 on #f7f2e6 */
  font-family:var(--jd-serif);
  font-optical-sizing:auto;
  font-size:20px;
  font-weight:600;
  line-height:1.2;
  letter-spacing:-.005em;
  color:var(--jd-ink);                     /* 10.14:1 on #f7f2e6 */
}
#pricing .new_stay_left .jd-fact strong{
  font-family:var(--jd-sans);
  font-size:11.5px;
  font-weight:700;
  letter-spacing:.16em;
  text-transform:uppercase;
  line-height:1.6;
  color:var(--jd-brass-ink);               /* 6.43:1 on #f7f2e6 */
}


/* ==========================================================================
   §6  THE TARIFF  —  three leaves, two models, one plate
   --------------------------------------------------------------------------
   Leaves 1 and 2 are ONE offer (a refundable deposit and a low monthly rent).
   Leaf 3 is the OTHER (nothing down, roughly 2.4x the rent). The page has
   never said so. It says so here with three devices and NO new copy:

     a) THE NUMERAL. `counter-increment` fires on h3. Leaf 1 prints 01, leaf 3
        prints 02, and the untitled deposit ladder — which has no h3 — gets
        NOTHING and therefore visibly parents itself to model 01, which is
        exactly what it is. It is the one genuinely orphaned object in the
        template and it is adopted with zero markup. (L8.)
     b) RULE WEIGHT. A 2px #6b5426 rule opens and closes each MODEL; a 1px
        #a58c55 hairline separates the two leaves INSIDE model 01. Two ruled
        blocks on one plate, not three boxes.
     c) SPACE. 38px between models, none inside one.

   NEITHER MODEL IS FEATURED. Same ground, same edge, same type, same
   alignment. If the two need telling apart they are told apart by a numeral,
   never by mass. The business has published no recommendation and this file
   does not invent one.

   The leaves are reached by ADJACENCY, never by :nth-of-type or
   :first-of-type — an editor inserting a heading or a div cannot re-assign
   them, and an editor adding a floor row keeps the pattern because nothing
   here counts rows.
   ========================================================================== */

#pricing .jd-box > .new_stay_left_table,
#pricing .jd-box > .flexible_model{
  position:relative;
  /* L6 — bleed to the plate's inner edge */
  margin:30px calc(var(--jd-pad) * -1) 0;
  padding:26px 0 24px;
  background-color:transparent;
  border:0;
  border-top:2px solid var(--jd-brass-ink);   /* opens model 01 */

  /* L11 — a guard, not a plan. Four background layers: two plate-coloured
     covers attached `local` so they travel with the content, two dark slivers
     attached `scroll` so they stay pinned to the box. The covers park over
     the slivers until the content actually runs past an edge, so a shadow can
     only ever appear when there genuinely IS more table in that direction.
     Covers are listed first because the first layer paints on top. */
  overflow-x:auto;
  overscroll-behavior-x:contain;
  background-image:
    linear-gradient(90deg,  #fdfbf6 40%, rgba(253,251,246,0) 100%),
    linear-gradient(270deg, #fdfbf6 40%, rgba(253,251,246,0) 100%),
    linear-gradient(90deg,  rgba(43,63,47,.55), rgba(43,63,47,0)),
    linear-gradient(270deg, rgba(43,63,47,.55), rgba(43,63,47,0));
    /* .55 composites to #8a9489 on the plate = 3.04:1 at the darkest stop; the
       earlier .18 was 1.38:1, which is a shadow that keeps a secret */
  background-repeat:no-repeat;
  background-size:28px 100%, 28px 100%, 18px 100%, 18px 100%;
  background-position:left center, right center, left center, right center;
  background-attachment:local, local, scroll, scroll;

  /* a real scrollbar on every platform that draws one. Hiding the scrollbar
     on the most important table on the site is a design keeping a secret. */
  scrollbar-width:thin;
  scrollbar-color:var(--jd-brass-ink) #f0ebdd;   /* 6.04:1 -- #a58c55 is 2.72
                                                  on this track, so L13 applies
                                                  here too */
}
#pricing .jd-box > .new_stay_left_table::-webkit-scrollbar,
#pricing .jd-box > .flexible_model::-webkit-scrollbar{ height:6px; }
#pricing .jd-box > .new_stay_left_table::-webkit-scrollbar-track,
#pricing .jd-box > .flexible_model::-webkit-scrollbar-track{ background:#f0ebdd; }
#pricing .jd-box > .new_stay_left_table::-webkit-scrollbar-thumb,
#pricing .jd-box > .flexible_model::-webkit-scrollbar-thumb{ background:var(--jd-brass-ink); }

#pricing .jd-box > .new_stay_left_table:focus-visible,
#pricing .jd-box > .flexible_model:focus-visible{
  outline:2px solid var(--jd-brass-ink);      /* 6.95:1 on the plate */
  outline-offset:-2px;
}

/* (b) leaf 2 — same offer as leaf 1, so a hairline and no space at all above
   it: the two are one object. A 2px rule closes model 01 underneath. */
#pricing .jd-box > .new_stay_left_table + .new_stay_left_table{
  margin-top:0;
  padding-top:22px;
  padding-bottom:26px;
  border-top:1px solid var(--jd-rule-plate);  /* 3.13:1 on the plate */
  border-bottom:2px solid var(--jd-brass-ink);
}
/* (b) leaf 3 — the other offer, opened and closed by its own 2px rules.
   Bootstrap's .mb-3 gives it margin-bottom:1rem !important; left alone, it is
   the last leaf and 16px is harmless. */
#pricing .jd-box > .flexible_model{
  /* 2026-09-13: leaf 3 is alone in its own box, whose edge and cap now frame
     it — no rules of its own, no space above its title, and no .mb-3 (the
     template's flagged 16px could not collapse through the box padding and
     made box 3 deeper than the other three; the class is gone from
     longstay.php) */
  margin-top:0;
  margin-bottom:0;
  padding:0;
  border-top:0;
  border-bottom:0;
}

/* ---- the leaf title and the numeral ------------------------------------
   `position:sticky; left:0` because these are block children of a scroll
   container: without it they slide out of view to the left while their own
   table moves. Cheap, and no markup. */
#pricing .new_stay_left h3{
  position:sticky;
  left:0;
  margin:0 0 18px;
  padding:0 var(--jd-edge-x);
  font-family:var(--jd-serif);
  font-optical-sizing:auto;
  font-size:clamp(20px, 2vw, 26px);
  font-weight:600;
  line-height:1.18;
  letter-spacing:-.006em;
  color:var(--jd-ink);                        /* 10.95:1 on the plate */
}
/* A NUMERAL, NOT A PLINTH. No box, no badge, no tile in a gutter — that is an
   agency tic that dates faster than the hairlines. And a numeral, not a word:
   nothing here writes English copy into a stylesheet where an editor cannot
   reach it. If a reviewer asks for "Model 01" that is a two-word content
   decision and it belongs in the <h3>. */
#pricing .new_stay_left h3::before{
  content:none;                               /* 2026-09-13: four boxes, no
                                                 model numerals — every title
                                                 is the same object (L8's
                                                 counter is gone with them) */
  display:none;
  margin:0 0 8px;
  font-family:var(--jd-sans);
  font-size:12px;
  font-weight:700;
  letter-spacing:.2em;
  line-height:1;
  color:var(--jd-brass-ink);                  /* 6.95:1 */
}

/* the "*Effective from 1st July, 2026..." line only leaf 3 carries */
#pricing .new_stay_left .flexible_model > strong{
  position:sticky;
  left:0;
  display:block;
  margin:18px 0 0;
  padding:0 var(--jd-edge-x);
  font-family:var(--jd-sans);
  font-size:12.5px;
  font-weight:600;
  line-height:1.55;
  letter-spacing:.01em;
  color:var(--jd-quiet);                      /* 6.03:1 on the plate */
}

/* ---- the table ----------------------------------------------------------
   style.css:3409/:3419/:3429 give it #d8d8d8 borders, a #4f6f52 header fill
   and #151515 cell ink at (0,2,1)/(0,2,2); responsive.css:821/:826 re-pad the
   cells below 480 at (0,2,2). Everything below is (1,1,2) or better, which
   the id supplies, so not one flag is needed anywhere in this section.

   NO VERTICAL RULES EXCEPT THE STUB SEAM, AND NO CELL FILLS ANYWHERE. A 2px
   rule under the heads, 1px #a58c55 between rows, and one vertical hairline
   at the label column — the classic stub rule of a printed tariff, and the
   thing that makes the frozen column comprehensible when a leaf does scroll.
   A filled header bar would make the object read as a spreadsheet.

   THE COMPARISON MECHANISM IS RIGHT-ALIGNMENT. Every figure ends on the
   same axis, so the 5-lakh step between floors reads as a shape and the four
   monthly rents can be compared without being read. The colspan="2"
   admission cell is a last child too, so it lands on the same axis.
   NOTE: `tabular-nums` / "tnum" are declared on the figures but are INERT
   with the Fraunces build Google Fonts serves -- measured: "11111" 91px vs
   "00000" 133px at 40px with tabular-nums requested, identical to
   proportional. The figures are proportional lining figures, and a wider
   digit CAN widen a column by a pixel or two. Right-alignment carries the
   comparison regardless. The declarations stay because they cost nothing and
   would engage if a self-hosted Fraunces with tnum ever replaced the Google
   build.
   ------------------------------------------------------------------------ */
#pricing .new_stay_left table{
  /* L7 — separate + spacing 0 is what lets the first column be sticky. */
  border-collapse:separate;
  border-spacing:0;
  width:100%;
  margin:0;
  border:0;
  border-radius:0;
  line-height:1.4;
  font-family:var(--jd-sans);
  color:var(--jd-body);
}

/* a <caption>, should the optional markup of §16.3 ever be applied. Costs
   nothing until then. */
#pricing .new_stay_left table caption{
  caption-side:top;
  padding:0 var(--jd-edge-x) 14px;
  text-align:left;
  font-family:var(--jd-serif);
  font-size:clamp(19px, 2.2vw, 24px);
  font-weight:600;
  line-height:1.22;
  color:var(--jd-ink);
}

/* ---- column heads ------------------------------------------------------ */
/* [caps 3 of 3] — and only on the OPTION heads, which are short. */
#pricing .new_stay_left thead th{
  background-color:transparent;
  border:0;
  border-bottom:2px solid var(--jd-brass-ink);   /* 6.95:1 on the plate */
  padding:0 var(--jd-cell-x) 11px;
  font-family:var(--jd-sans);
  font-size:11.5px;
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
  line-height:1.45;
  color:var(--jd-ink);                           /* 10.95:1 */
  text-align:right;
  vertical-align:bottom;
}
#pricing .new_stay_left thead th:last-child{ padding-right:var(--jd-edge-x); }

/* THE STUB HEAD STAYS A SENTENCE.
   In the deposit ladder it is forty-eight characters long — "One-Time Payable
   Security Deposit 100% Refundable" — and forty-eight characters of
   micro-tracked capitals is the least readable setting on the page applied to
   the single most persuasive fact on it. Refused explicitly. */
#pricing .new_stay_left thead th:first-child{
  font-family:var(--jd-sans);
  font-size:13.5px;
  font-weight:600;
  letter-spacing:0;
  text-transform:none;
  line-height:1.4;
  color:var(--jd-body);                          /* 10.07:1 */
  text-align:left;
  overflow-wrap:break-word;
}

/* AND IN THE DEPOSIT LADDER IT BECOMES THE LEAF'S NAME.
   Leaf 2 is the only table in the template with no <h3>, and its stub head is
   the only place the words "100% Refundable" appear — today at 14px, reversed
   out of a #4f6f52 bar, in the corner cell nobody reads. Promoting it in
   place gives the untitled table a visible name and moves the most persuasive
   fact on the page from the least readable setting to the most readable one,
   with ZERO new words and ZERO markup: the copy already exists, it is only
   set properly. Selected by adjacency at (1,4,2), so it beats the (1,2,2)
   rule above without a flag.
   Sized in steps rather than by viewport: this head lives in the LABEL
   column, so on a phone a 19px display face would take four lines of name and
   ~25px of table width the figures need more. */
#pricing .jd-box > .new_stay_left_table + .new_stay_left_table thead th:first-child{
  font-family:var(--jd-serif);
  font-optical-sizing:auto;
  font-size:15px;
  font-weight:600;
  line-height:1.26;
  letter-spacing:-.004em;
  color:var(--jd-ink);                           /* 10.95:1 */
  padding-bottom:13px;
}

/* ---- body cells -------------------------------------------------------- */
#pricing .new_stay_left tbody td,
#pricing .new_stay_left tbody th{
  background-color:var(--jd-plate);
  border:0;
  border-top:1px solid var(--jd-rule-plate);     /* 3.13:1 — and it is the
                                                    ONLY thing telling Ground
                                                    / First / Second Floor
                                                    apart, so it is not
                                                    allowed to be decorative */
  padding:var(--jd-cell-y) var(--jd-cell-x);
  font-family:var(--jd-sans);
  font-size:13.5px;
  font-weight:500;
  line-height:1.45;
  color:var(--jd-body);                          /* 10.07:1 */
  text-align:right;
  vertical-align:baseline;                       /* a 13.5px label sits on the
                                                    same baseline as the
                                                    figure beside it */
  transition:background-color var(--jd-t) var(--jd-ease),
             border-color var(--jd-t) var(--jd-ease),
             color var(--jd-t) var(--jd-ease);
}
#pricing .new_stay_left tbody tr:first-child > *{ border-top:0; }
#pricing .new_stay_left tbody td:last-child,
#pricing .new_stay_left tbody th:last-child{ padding-right:var(--jd-edge-x); }

/* THE FROZEN LABEL COLUMN.
   The template ships <td>Ground Floor</td>, not <th scope="row">, so this is
   written against td AND th: the affordance exists today with no markup, and
   it survives the optional scope promotion in `php`. The seam is a box-shadow
   rather than a border so it adds no width to the 320px arithmetic. A column
   that visibly sits still while its neighbours move is the plainest statement
   in interface design that something scrolls, and it is what makes the guard
   in L11 comprehensible rather than merely possible. */
#pricing .new_stay_left tbody td:first-child,
#pricing .new_stay_left tbody th:first-child,
#pricing .new_stay_left thead th:first-child{
  position:sticky;
  left:0;
  z-index:2;
  background-color:var(--jd-plate);
  box-shadow:1px 0 0 0 var(--jd-rule-plate);     /* the stub seam, 3.13:1 */
  padding-left:var(--jd-edge-x);
  padding-right:var(--jd-stub-gap);
  text-align:left;
  overflow-wrap:break-word;
}
#pricing .new_stay_left thead th:first-child{ z-index:3; }

/* ---- THE FIGURE -------------------------------------------------------
   UN-MIGRATED STATE, and it is correct on its own — correct forever if the
   five <small> tags of §16 never go in. Each money cell in leaves 1 and 3
   holds ONE text node that is a price AND its qualifier, and no stylesheet
   can split a text node, so the whole cell is set at a moderate display size:
   large enough to be a figure, small enough that twenty-four characters of
   qualifier behind it are not shouting.
   Sizes are STEPPED rather than clamped so the 320px arithmetic in §7 cannot
   drift with a viewport unit, and so nothing steps DOWN when the plate
   narrows at 992.  L10 — never nowrap here. */
#pricing .new_stay_left tbody td:not(:first-child),
#pricing .new_stay_left tbody th:not(:first-child){
  font-family:var(--jd-serif);
  font-optical-sizing:auto;
  font-weight:600;
  font-size:16px;
  line-height:1.3;
  letter-spacing:-.008em;
  color:var(--jd-ink);                           /* 10.95:1 */
  text-align:right;
  white-space:normal;
  overflow-wrap:normal;
  background-color:transparent;                  /* see the note below */
  font-variant-numeric:lining-nums tabular-nums;
  -webkit-font-feature-settings:"lnum" 1,"tnum" 1;
          font-feature-settings:"lnum" 1,"tnum" 1;
}
/* background-color:transparent above is load-bearing for the scroll guard.
   The leaf's four-layer scroll shadow (§6) is painted on the LEAF, and an
   opaque cell would sit on top of it -- measured at a 280px viewport with the
   ladder 25px over its rail, the cut-off figures showed no shadow at all
   because every tbody cell was #fdfbf6. Only the frozen first column needs
   an opaque background (it has one, in the sticky rule above), and the
   row-hover wash still paints because it is (1,2,3) against this (1,2,2). */

/* THE ONE EXCEPTION TO L10: the deposit ladder. Its figure cells hold a bare
   "INR 30,00,000" and nothing else -- no qualifier -- so nowrap is safe
   there, and it is NEEDED: with normal wrapping, auto table layout hands the
   slack to the stub column (whose max-content is the promoted 48-character
   head) and leaves the figure columns 1-3px short of a single line, so the
   six deposits wrapped INCONSISTENTLY -- "INR / 35,00,000" on rows 1 and 3
   and "INR 37,50,000" on row 2 -- across the whole 576-767 range and every
   laptop from 992 to 1199. Measured with nowrap from 390: one line on every
   row at every width, min-content slack 17.8px at 390 / 38.8 at 412 / 67 at
   576-767 / 178 at 768-991 / 82 at 992-1199, no leaf scrolls and the page
   never overflows. Below 390 the figures keep the wrap after INR on purpose:
   a nowrap ladder needs 347px and would overflow a 375px phone by 13px.
   The stub column narrows as a result, so the promoted head runs 6 lines at
   390 and 5 at 412-767. That is the honest count. */
@media (min-width:390px){
  #pricing .jd-box > .new_stay_left_table + .new_stay_left_table tbody td:not(:first-child),
  #pricing .jd-box > .new_stay_left_table + .new_stay_left_table tbody th:not(:first-child){
    white-space:nowrap;
  }
}
/* "Nil" therefore lands at the size, in the slot and in the typeface of a
   real rupee figure, with no markup at all. That is deliberate: for many
   families the ABSENCE of a deposit is the deciding fact and it must not be
   typeset as an apology. */

/* MIGRATED STATE. One :has() at the PLATE level flips the whole tariff at
   once, so a single <small> anywhere proves the migration. Its own rule, its
   own @supports, never in a comma list with a non-:has() selector, and it
   lives in the breakpoint blocks of §11 rather than here.

   THERE IS NO SIZE BUMP BELOW 576, AND THAT IS A MEASURED DECISION, NOT AN
   OVERSIGHT. I applied the five <small> tags in a browser at 320px and the
   deposit ladder went 36px OVER its rail — the migration raises EVERY figure
   in the tariff, including the six deposit figures that have no qualifier to
   subordinate, and each pixel of figure size costs the ladder about 10px of
   width. On a phone the whole point is that all six deposit figures are on
   screen without a gesture, so below 576 the migration keeps the 16px figure
   and spends itself entirely on what it is actually for: lifting the
   qualifier out of the figure's own text node and setting it as a separate
   12.5px line. The figure does not get bigger; it gets clean.

   The alternative — bumping the rents and capping the deposits — is the trap
   the panel flagged as "the type scale editorialising the money", and it is
   refused here: every figure in this tariff is the same size at every width. */

/* THE QUALIFIER. Subordination by SIZE, FACE and WEIGHT — never by dropping
   the contrast, so nothing quiet is also hard to read. This rule needs no
   :has() and no @supports: even on an engine that cannot do the size switch
   above, a migrated cell still reads as a figure with a qualifier under it. */
#pricing .new_stay_left tbody td small{
  display:block;
  margin:8px 0 0;
  font-family:var(--jd-sans);
  font-size:12.5px;
  font-weight:500;
  letter-spacing:.02em;
  line-height:1.5;
  color:var(--jd-brass-ink);                     /* 6.95:1 */
  white-space:normal;
  font-variant-numeric:normal;
}

/* THE FOOTING ROW — the admission fee.
   In leaves 2 and 3 the last body row is the One-Time Payable Admission Fee.
   It is not a deposit, it is not refundable, and it is not part of the
   floor/facing matrix, so it is set as a footing: a 2px rule above it and the
   figure at label scale rather than display scale. That also stops the design
   AMPLIFYING a defect it cannot fix — INR 5,00,000 is printed three times in
   the source and leaf 3 prints it twice on ONE line. At display size that
   duplication would be conspicuous; at footing size it is what it is.
   `:not(:only-child)` excludes leaf 1, whose single row IS the headline rent.
   (1,4,3) — above both figure rules, so it needs no @supports twin. */
#pricing .new_stay_left tbody tr:not(:only-child):last-child > *{
  border-top:2px solid var(--jd-brass-ink);      /* 6.95:1 */
  padding-top:calc(var(--jd-cell-y) + 4px);
}
#pricing .new_stay_left tbody tr:not(:only-child):last-child td:not(:first-child),
#pricing .new_stay_left tbody tr:not(:only-child):last-child th:not(:first-child){
  font-family:var(--jd-sans);
  font-size:15.5px;
  font-weight:600;
  letter-spacing:0;
  color:var(--jd-body);                          /* 10.07:1 */
}

/* a <tfoot>, should the optional markup of §16.3 ever be applied */
#pricing .new_stay_left tfoot td,
#pricing .new_stay_left tfoot th{
  border-top:2px solid var(--jd-brass-ink);
  padding-top:calc(var(--jd-cell-y) + 4px);
}

/* optional sub-lines and chip inside the ladder's column heads (§16.2) */
#pricing .new_stay_left thead th .jd-th-sub{
  display:block;
  margin-top:5px;
  font-family:var(--jd-serif);
  font-style:italic;
  font-size:13.5px;
  font-weight:400;
  letter-spacing:0;
  text-transform:none;
  color:var(--jd-quiet);                         /* 6.03:1 */
}
#pricing .new_stay_left thead th .jd-refund{
  display:inline-block;
  margin-top:8px;
  padding:4px 9px;
  background:var(--jd-ring);
  border:1px solid var(--jd-rule-plate);
  color:var(--jd-brass-ink);                     /* 4.91:1 on #e6d4a6 */
  font-family:var(--jd-sans);
  font-size:11px;
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
  white-space:nowrap;
}


/* ==========================================================================
   §7  THE THREE-COLUMN TABLES ON A PHONE — THEY FIT
   ==========================================================================
   They do not reflow. Every block-level reflow of a <table> destroys the
   header associations that make a price matrix readable to a screen reader,
   and `data-label` attributes would duplicate six column headers into places
   an editor has to keep in sync — which breaks the editing contract at the
   top of this file. `display` is therefore NEVER changed on any table part at
   any width.

   HOW THE ROOM IS FOUND AT A 320px VIEWPORT
     320   viewport
     -24   .container padding (--bs-gutter-x 24, halved each side)
     =296  container content. .row's -12px margins put its edges back on the
           viewport and .col-* returns them, so the column content is 296.
     -2    the plate's 1px left and right borders
     =294  plate border-box interior. Each leaf bleeds by --jd-pad (16px) on
           both sides, so THE TABLE GETS THE FULL 294. (L6.)

   MEASURED IN CHROME AGAINST THE REAL TEMPLATE with bootstrap.min.css,
   style.css, responsive.css and banner-lux.css all loaded, reading each
   table's own min-content width against its rail. Slack, in px, un-migrated
   and then with the five optional <small> tags of §16.1 applied:

       viewport    leaf 1      leaf 2 (ladder)   leaf 3
       320         21 / 21     15 / 15           21 / 21
       375         76 / 76     70 / 70           76 / 76
       480        181 /181    175 /175          181 /181
       576/767    166 /109    143 / 24          181 / 76
       768–991    297 /226    262 /121          321 /189
       992–1199   201 /130    166 / 25          225 / 93
       1200       325 /199    290 / 74          350 /153
       1440       348 /222    313 / 97          373 /176

   Nothing scrolls at any of them and document.scrollWidth == clientWidth at
   all of them, in both states. The ladder is the tightest object on the page
   and it is what the four variables were tuned against.

   Four things buy that room below 576 and all four are variables in §4, so
   they cannot drift: --jd-edge-x 6px, --jd-cell-x 4px, --jd-stub-gap 8px,
   and a 16px figure size. The first draft used 8/5/10px and the ladder had
   6px of slack; these numbers give it 15. IF YOU RAISE ANY OF THEM, OR RAISE
   ANY FIGURE SIZE, RE-MEASURE AT 320 AND AT 992 BEFORE SHIPPING — the fit is
   engineered, not generous, and 992 is the width where the plate NARROWS
   (694px at 768–991, 614px at 992–1199) while the type does not.

   The figures are PROPORTIONAL on the served font (Google Fonts' Fraunces
   ships no tnum -- see §6), so a future price CAN widen a column by a pixel
   or two per digit. The 320 fit still holds 14.5px against the widest
   realistic digits; re-measure if a price ever gains a digit.

   And if a future price is longer than any of these, L11's guard engages: the
   leaf scrolls inside itself, the label column freezes, and a shadow appears
   that BY CONSTRUCTION can only appear when there really is more table. The
   page itself never scrolls sideways at any width — nothing in this file is
   ever wider than its own container, the leaves bleed only into padding the
   plate already owns, and --bs-gutter-x is touched on exactly one row (§9),
   never on a container.
   ========================================================================== */


/* ==========================================================================
   §8  THE RECESS  —  the sticky video column
   --------------------------------------------------------------------------
   The plate is lit; this is the well. FOUR INHERITED DEFECTS, all live on the
   page today, all fixed here.

   1. TWO DEAD ORANGE CHEVRONS. js/custom.js:197 passes `nav:false`, so Owl
      builds the buttons, marks the wrapper `.owl-nav.disabled` and hides it —
      and style.css:680 then un-hides every disabled control in the theme with
      `display:inherit !important`. Two 35x35 #bf8349 buttons wired to nothing
      are rendering under every video right now. See L2: the flag is required.
   2. SEVENTEEN INVISIBLE DOTS. `dots:true` is set, but the markup carries
      `owl-carousel` WITHOUT `owl-theme`, and every dot rule in
      css/owl.theme.default.min.css is scoped under `.owl-theme` — so the only
      control that works is the one nobody can see. Rebuilt below as a printed
      film index: a numbered lattice, not carousel furniture. The numerals
      come from a CSS counter, so there is no markup and no JavaScript, and
      the count is whatever the template holds.
   3. LETTERBOXED FRAMES. `height="300"` on a 100%-wide iframe is roughly 5:4
      in this column, so every 16:9 video plays letterboxed inside its own
      frame. A presentational HTML attribute has no specificity, so an
      unflagged author declaration beats it.
   4. `.owl-carousel .item{margin:10px}` (style.css:648) makes every frame
      20px narrower than its stage inside a one-item carousel.
   ========================================================================== */

/* 2026-09-13: PREVIOUS / NEXT. js/custom.js now passes nav:true with
   navElement:'button' and a visually-hidden label in each, so Owl 2.1.6
   prints `<button class="owl-prev">` / `.owl-next` inside `.owl-nav` under
   the stage. Two 46px cells on the recess, a brass edge (6.52:1 on #22331f),
   a chevron drawn with borders (no glyph font, no English in content). The
   index below is hidden (the client: "the pagination looks bad"). L2 still
   holds for the DISABLED wrapper: with loop:true it never is. */
#pricing .owl-nav{
  display:flex;
  justify-content:space-between;
  gap:12px;
  margin:12px 0 0;
  padding:0;
}
#pricing .owl-nav button.owl-prev,
#pricing .owl-nav button.owl-next{
  flex:1 1 0;
  display:flex;
  align-items:center;
  justify-content:center;
  min-width:46px;
  min-height:46px;
  margin:0;
  padding:0;
  background:transparent;
  border:1px solid var(--jd-rule-band);
  border-radius:0;
  color:var(--jd-cream-ink);
  cursor:pointer;
  -webkit-appearance:none;
          appearance:none;
  transition:background-color var(--jd-t) var(--jd-ease),
             color var(--jd-t) var(--jd-ease),
             border-color var(--jd-t) var(--jd-ease);
}
#pricing .owl-nav button.owl-prev::before,
#pricing .owl-nav button.owl-next::before{
  content:"";
  width:12px;
  height:12px;
  border-left:2px solid currentColor;
  border-bottom:2px solid currentColor;
  transform:translateX(3px) rotate(45deg);
}
#pricing .owl-nav button.owl-next::before{ transform:translateX(-3px) rotate(-135deg); }
#pricing .owl-nav button.owl-prev:focus-visible,
#pricing .owl-nav button.owl-next:focus-visible{
  outline:2px solid var(--jd-ring);              /* 9.18:1 on the recess */
  outline-offset:3px;
}
/* style.css:674 `.owl-carousel .owl-nav .owl-prev:hover, .owl-next:hover{
   background:#151515; color:#fff}` is unconditioned, and on a phone :hover
   matches on a tap and sticks — so without this reset the tapped button went
   black until the next tap elsewhere. (1,3,1), outside any query: the real
   hover in §10 is the same weight and later in source, so it still wins where
   a pointer can hover. */
#pricing .owl-nav button.owl-prev:hover,
#pricing .owl-nav button.owl-next:hover{
  background-color:transparent;
  border-color:var(--jd-rule-band);
  color:var(--jd-cream-ink);
}
#pricing .owl-nav button.disabled{ opacity:.4; cursor:default; }
#pricing .owl-dots{ display:none !important; }
#pricing .owl-nav.disabled{ display:none !important; }

/* 4 */
#pricing .owl-carousel .item{ margin:0; }

/* Stacked below 992 the column is full container width, and a 936px video
   panel under a 936px plate is a slab, not a companion. Capped and centred
   until the columns split, then released. */
#pricing .new_stay_right{
  max-width:660px;
  margin:34px auto 0;
}

#pricing .new_stay_right_slider{
  background-color:var(--jd-recess);
  border:1px solid rgba(107,84,38,.72);   /* composites over the recess to
                                             (86,75,35): the recess/paper
                                             boundary is the 12.45:1 fill, the
                                             edge only finishes it (2026-09-13:
                                             the old #cbb279 was 1.93 on cream) */
  padding:12px;
  margin:0;
}

/* 3 */
#pricing .owl-carousel .item iframe{
  display:block;
  width:100%;
  height:auto;
  aspect-ratio:16 / 9;
  box-sizing:border-box;
  border:3px solid transparent;           /* becomes the dark band on focus;
                                             transparent at rest so the 16:9
                                             box does not shift */
  background-color:#1b2a1e;               /* a dark letterbox while YouTube
                                             loads, not a white flash */
}
/* Two-tone, because a single-colour ring over an unpredictable video frame is
   not reliable: a cream ring at 9.18:1 sitting on a dark band. The band is
   the iframe's own BORDER, not an inset box-shadow -- an inset shadow paints
   below a replaced element's content and is therefore invisible on an
   iframe (measured: the cream ring landed straight on a white video document
   at 1.47:1). A border paints outside the content box and is always visible.
   The ring is held at -3px, exactly on the border, so it has #22331f on its
   inner side and the slider's 12px recess padding on its outer side: 9.18:1
   both ways, whatever the video is showing. Do NOT switch to a positive
   outline-offset: owl.carousel.css puts overflow:hidden on .owl-stage-outer
   and the ring would be clipped. All seventeen frames are real, reachable
   tab stops today with no indicator of any kind. */
#pricing .owl-carousel .item iframe:focus-visible{
  border-color:var(--jd-recess);
  outline:3px solid var(--jd-ring);
  outline-offset:-3px;
  box-shadow:none;
}

/* 2026-09-13: the numbered film index (dots) is hidden above; the
   previous / next buttons replace it. */

/* STICKY, CORRECTED, AND DEFAULT-OFF.
   style.css:690 pins `.sticky_div` at top:100px underneath a fixed header
   that measures --jd-h-total (header-lux.css:512 declares it on :root; the
   146px fallback is 30 + 70 + 46), so the top of the column has been hiding
   behind the bar. Below 992 the column is the last thing in its section,
   where sticking it pinned it to the top of the viewport and rode it down the
   whole amenities band. Written default-static and switched on at 992, this
   file needs no max-width undo anywhere. */
#pricing .new_stay_right.sticky_div{
  position:static;
  top:auto;
}


/* ==========================================================================
   §9  PAPER AGAIN  —  .stay_aminities
   --------------------------------------------------------------------------
   Eighteen white cards with `rgba(0,0,0,.24) 0 3px 8px` and a 10px radius,
   floating on an #ece3ce sand that belongs to no other part of the rebuilt
   site. They stop being cards and become ONE RULED REGISTER: a printed
   schedule of inclusions, which is what they are, and the natural companion
   object to the tariff above. No shadow, no radius, no lift.

   The grain string is banner-lux.css:793's, character for character, so the
   strip and this section are literally the same paper and the run closes on
   the material it opened with.

   THE COLUMN COUNT IS ARITHMETIC, NOT TASTE. 18 = 18x1 = 9x2 = 6x3, so 1, 2
   and 3 all divide it exactly and the last row is never short. The template's
   col-lg-3 (four across) leaves two cells and two holes, which inside a ruled
   block reads as a mistake rather than as a layout — so the Bootstrap classes
   are NEUTRALISED inside a grid rather than rewritten in eighteen places.

   The eighteen names are set in Fraunces 500, not a sans. Setting them in the
   display face is what turns a grid of captions into a LIST OF NAMES, and it
   is the cheapest thing in the file.
   ========================================================================== */
.stay_aminities.sectiongap{
  background-color:var(--jd-paper);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='.04'/%3E%3C/svg%3E");
  padding:48px 0 54px;
}

.stay_aminities .section-title{ margin:0 0 32px; }
.stay_aminities .section-title h2{
  font-family:var(--jd-serif);
  font-optical-sizing:auto;
  font-size:clamp(28px, 3.2vw, 42px);
  font-weight:600;
  line-height:1.14;
  letter-spacing:-.012em;
  color:var(--jd-ink);                  /* 10.57 flat / 9.68 worst pixel */
  text-align:center;
  margin:0;
}
/* the house section mark — home-lux's 17x9 diamond punching a hole in a
   fading rule. Used ONCE in the whole run, here, so it marks the end rather
   than decorating a seam. The diamond's own SVG paints the ground colour
   behind itself, which is how the hole is made. */
.stay_aminities .section-title h2::after{
  content:"";
  display:block;
  width:170px;
  height:9px;
  margin:24px auto 0;
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='9'%3E%3Crect width='17' height='9' fill='%23faf7ef'/%3E%3Cpath d='M8.5 1.2L11.8 4.5 8.5 7.8 5.2 4.5z' fill='%236b5426'/%3E%3C/svg%3E"),
    linear-gradient(90deg, rgba(107,84,38,0) 0%, rgba(107,84,38,.5) 24%, rgba(107,84,38,.5) 76%, rgba(107,84,38,0) 100%);
  background-repeat:no-repeat, no-repeat;
  background-position:center center, center center;
  background-size:17px 9px, 100% 1px;
}

/* 2026-09-13 — THE CARDS. The client pointed at the clubhouse amenity list on
   infinityheights.in: white rounded cards, a tinted disc with the icon, the
   name in a bold sans, a soft shadow, a lift on hover. That list, in this
   palette: the flat plate instead of white, a brass-tinted hairline edge, the
   disc tinted with the house green, the icon as black line art on it (the
   theme's PNGs are alpha line art, so brightness(0) is source-independent),
   the name in Karla 700 ink. 1 / 2 / 3 across at phone / 768 / 992 — 18 divides
   by all three, so the last row is never short. The gutter is zeroed here
   (L3) and the grid's own gap spaces the cards. */
.stay_aminities .row{
  --bs-gutter-x:0;
  --bs-gutter-y:0;
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:14px;
  margin:0;
  border:0;
}
.stay_aminities .row > [class*="col-"]{
  flex:none;
  width:auto;
  max-width:none;
  min-width:0;
  margin:0;
  padding:0;
  display:flex;
  border:0;
}
.stay_aminities .stay_aminities_box{
  position:relative;
  display:grid;
  grid-template-columns:40px minmax(0, 1fr);
  align-items:center;
  gap:0 14px;
  flex:1 1 auto;
  min-width:0;
  padding:16px 18px 16px 16px;
  background-color:var(--jd-plate);
  border:1px solid rgba(107,84,38,.85);         /* ≈(129,109,69) on the paper:
                                                   4.6:1 on the grain. The fill
                                                   is 1.08:1 against the paper
                                                   and the shadow 1.15:1, so the
                                                   edge IS the boundary (the .5
                                                   alpha first tried was 2.12:1
                                                   — refuted) */
  border-radius:12px;
  box-shadow:0 2px 10px rgba(43,63,47,.07);
  transition:transform var(--jd-t) var(--jd-ease),
             box-shadow var(--jd-t) var(--jd-ease),
             border-color var(--jd-t) var(--jd-ease);
}
/* the disc: the reference's rgba(green,.10) fill + .18 edge, in the house green */
.stay_aminities .stay_aminities_box::before{
  content:"";
  grid-area:1 / 1;
  align-self:center;
  justify-self:center;
  width:40px;
  height:40px;
  border-radius:50%;
  background-color:rgba(43,63,47,.10);
  border:1px solid rgba(43,63,47,.18);
  transition:background-color var(--jd-t) var(--jd-ease),
             border-color var(--jd-t) var(--jd-ease);
}
.stay_aminities .stay_aminities_box img{
  box-sizing:border-box;
  grid-area:1 / 1;
  align-self:center;
  justify-self:center;
  width:40px;
  height:40px;
  padding:6px;                                  /* 28px of art, as the register had:
                                                   at 22px the 1.5px strokes
                                                   antialiased to grey (4.5:1 on
                                                   the disc) */
  object-fit:contain;
  background-color:transparent;
  border:0;
  filter:brightness(0);                         /* black line art on the tinted disc */
  opacity:.92;
  transition:filter var(--jd-t) var(--jd-ease),
             opacity var(--jd-t) var(--jd-ease);
}
.stay_aminities .stay_aminities_box h3{
  grid-area:1 / 2;
  align-self:center;
  margin:0;
  font-family:var(--jd-sans);
  font-size:16.5px;
  font-weight:700;
  line-height:1.35;
  letter-spacing:.01em;
  color:var(--jd-ink);                          /* 10.95:1 on the plate */
  transition:color var(--jd-t) var(--jd-ease);
}


/* ==========================================================================
   §9b  REVISION 2026-09-13  —  THE FOUR BOXES AND THE FOOTNOTE
   --------------------------------------------------------------------------
   The template (page-templates/longstay.php) wraps the column in:
     .jd-box.jd-box--who       h6 title + the four "suitable for" points + .jd-fact
     .jd-box.jd-box--standard  .new_stay_left_table (h3 + table) + the deposit ladder
     .jd-box.jd-box--flex      .flexible_model (h3 + table + the effective-from line)
     .jd-note                  h6 "Note:" + three points  (a footnote, not a box)
     .jd-box.jd-box--services  h6 title + the fifteen inclusions
   Each box is the plate §4 used to be: flat cream, a solid #6b5426 edge (6.14:1
   worst on the grain — §17's own recipe for a plate on paper), a 3px brass-ink
   cap, the column's padding tokens, a soft green-tinted shadow (the blog and
   gallery pages' plates cast the same one). The four titles are ONE object —
   Fraunces 600 at the leaf-title size — whether the template printed them as
   h6 or as the leaf's h3; the leaf titles keep their §6 rule and lose the
   numeral. The leaves bleed to the box edge exactly as they bled to the plate,
   because --jd-pad is inherited from .new_stay_left.
   ========================================================================== */
#pricing .jd-box{
  position:relative;
  min-width:0;
  background-color:var(--jd-plate);
  background-image:none;                      /* the plate is not paper (L13) */
  border:1px solid var(--jd-rule-paper);     /* SOLID #6b5426, as §17 prescribes:
                                                 6.14:1 worst on the grain. The
                                                 .72 alpha first tried composites
                                                 over the plate, not the paper,
                                                 and measured 3.35:1 on the grain
                                                 and 2.91 along the bottom edge
                                                 inside the shadow (refuted) */
  border-top:3px solid var(--jd-brass-ink);
  padding:var(--jd-pad-y) var(--jd-pad) calc(var(--jd-pad-y) + 4px);
  /* §4 forbade a cast shadow on the ONE plate that sat on the dark band —
     "lit because it is the brightest thing between two darker surfaces". Four
     plates on cream have no darker surface to be lit by, so they cast the soft
     green-tinted shadow the blog and gallery plates cast; it is the one thing
     that keeps four cream boxes on cream from reading as ruled paragraphs. */
  box-shadow:0 18px 34px -26px rgba(43,63,47,.38);
}
/* the h6 titles of boxes 1 and 4 — the same type as the leaf h3 (§6), inset to
   the same axis the leaf titles use (edge-x equals pad from 576; below it the
   difference is taken back so the four titles share one left edge) */
#pricing .jd-box > h6:first-child{
  position:relative;
  margin:0 calc(var(--jd-edge-x) - var(--jd-pad)) 18px;
  padding:0;
  font-family:var(--jd-serif);
  font-optical-sizing:auto;
  font-size:clamp(20px, 2vw, 26px);
  font-weight:600;
  line-height:1.18;
  letter-spacing:-.006em;
  text-transform:none;
  color:var(--jd-ink);                        /* 10.95:1 on the plate */
}
/* the leaf title inside its box: the box's cap is above it now, so no rule of
   its own and no space above (the base §6 leaf rule gives 30px + 2px) */
#pricing .jd-box > .new_stay_left_table:first-child{
  margin-top:0;
  padding-top:0;
  border-top:0;
}
/* the last leaf in a box: the box's own bottom edge closes it */
#pricing .jd-box > .new_stay_left_table:last-child{
  padding-bottom:0;
  border-bottom:0;
}
/* the lists inside a box run to the box's inner edge, not the old plate's */
#pricing .jd-box > ul{ margin-bottom:0; }
#pricing .jd-box > ul + .jd-fact{ margin-top:22px; }
#pricing .jd-box--services > ul > li:last-child{ margin-bottom:0; }

/* THE FOOTNOTE — "Note:" and its three points sit between the tariff boxes
   and the services box on the paper itself, one size down, a brass tick above
   the head: the tail-heading device §5 used to use, now for the one heading
   that is a note rather than a title. */
#pricing .jd-note{
  position:relative;
  padding:14px 0 0 calc(var(--jd-edge-x) + 1px);   /* the box titles' text axis
                                                       (edge-x inside a 1px
                                                       border) */
}
#pricing .jd-note::before{
  content:"";
  position:absolute;
  top:0;
  left:calc(var(--jd-edge-x) + 1px);
  width:34px;
  height:2px;
  background:var(--jd-brass-ink);             /* 6.71:1 on the paper */
}
#pricing .jd-note > h6{
  margin:0 0 8px;
  font-family:var(--jd-sans);
  font-size:12.5px;
  font-weight:700;
  letter-spacing:.16em;
  text-transform:uppercase;
  line-height:1.6;
  color:var(--jd-brass-ink);                  /* 6.71:1 on the paper */
}
#pricing .jd-note > ul{ margin-bottom:0; }
#pricing .jd-note > ul > li{
  font-size:14.5px;
  line-height:1.6;
  color:var(--jd-quiet);                      /* 5.83:1 on the paper */
}
#pricing .jd-note > ul > li:last-child{ margin-bottom:0; }

@media (min-width:768px){
  #pricing .new_stay_left{ gap:28px; }
  #pricing .jd-note{ padding-top:16px; }
}

/* ==========================================================================
   §10  STATES
   --------------------------------------------------------------------------
   Every hover below is inside `@media (hover:hover)`. A hover state that
   sticks on a touch screen is worse than no hover state at all, and three of
   the four below are reading assistance rather than affordances — on a phone
   they would simply lie. FOCUS states are deliberately outside this block.

   DELIBERATELY NOT DONE: nothing lifts, nothing pulses, and there is no
   scroll-driven animation anywhere. Translating a cell inside a 1px lattice
   tears a hole in the rules behind it, and a plate that lifts stops being a
   plate. The icon may scale; the cell may not move.
   ========================================================================== */
@media (hover:hover){

  /* THE PRICE ROW. A money row here is three columns and up to 760px wide;
     the wash is what keeps a label and its two figures together while the eye
     travels that distance. But a 1.09:1 wash cannot carry a state on its own,
     so the STATE is carried by the row rule going #a58c55 (3.13) to #6b5426
     (6.21 on the wash) and by the label ink going #3a4238 to #2b3f2f. Two
     perceivable channels, neither of them colour-alone, and nothing moves.
     (1,2,3) — deliberately above the (1,2,2) frozen-column rule, or the
     sticky first cell would keep its unwashed background as it scrolled. */
  #pricing .new_stay_left tbody tr:hover td,
  #pricing .new_stay_left tbody tr:hover th{
    background-color:var(--jd-row-wash);
    border-top-color:var(--jd-brass-ink);
  }
  #pricing .new_stay_left tbody tr:hover td:first-child,
  #pricing .new_stay_left tbody tr:hover th:first-child{
    color:var(--jd-ink);                        /* 9.79:1 on the wash */
    box-shadow:1px 0 0 0 var(--jd-brass-ink);   /* 6.21:1 on the wash */
  }
  /* The hovered row's LOWER edge is the next row's border-top. Without this
     it stays #a58c55, which is 2.80:1 against the wash directly above it --
     the same argument that switched the upper edge applies to the lower. */
  #pricing .new_stay_left tbody tr:hover + tr > td,
  #pricing .new_stay_left tbody tr:hover + tr > th{
    border-top-color:var(--jd-brass-ink);       /* 6.21:1 wash / 6.95:1 plate */
  }

  /* THE TICK MARKS. The four statements are a "is this us?" checklist, and
     the marker acknowledging the line you are on is what makes it feel like
     one. Scaled from its left edge so no text shifts. */
  #pricing :is(.jd-box, .jd-note) > ul > li::before{
    display:inline-block;
    transform-origin:left center;
    transition:transform var(--jd-t) var(--jd-ease),
               color var(--jd-t) var(--jd-ease);
  }
  #pricing :is(.jd-box, .jd-note) > ul > li:hover::before{
    transform:scale(1.16);
    color:var(--jd-ink);
  }

  #pricing .new_stay_left a:hover{
    color:var(--jd-ink);                        /* 10.95:1 on the plate */
    text-decoration-thickness:2px;
    text-decoration-color:var(--jd-ink);
  }

  /* THE PREVIOUS / NEXT BUTTONS fill brass with recess ink under the pointer:
     6.52:1, and an area change rather than a colour change. */
  #pricing .owl-nav button.owl-prev:hover,
  #pricing .owl-nav button.owl-next:hover{
    background-color:var(--jd-rule-band);
    border-color:var(--jd-rule-band);
    color:var(--jd-recess);
  }

  /* THE AMENITY CARD lifts 4px with a deeper shadow and a firmer edge, and
     the disc fills with the house green under white line art — the
     reference's hover, in this palette. The card is not a .wow element (the
     column is), so the transform is honoured. */
  .stay_aminities .row > [class*="col-"]:hover .stay_aminities_box,
  .stay_aminities .row > [class*="col-"]:focus-within .stay_aminities_box{
    transform:translateY(-4px);
    box-shadow:0 14px 26px rgba(43,63,47,.16);
    border-color:rgba(43,63,47,.65);            /* ≈(116,129,119): 3.5:1 on the
                                                   paper — firmer than at rest,
                                                   which .4 (1.86:1) was not */
  }
  .stay_aminities .row > [class*="col-"]:hover .stay_aminities_box::before,
  .stay_aminities .row > [class*="col-"]:focus-within .stay_aminities_box::before{
    background-color:var(--jd-band);
    border-color:var(--jd-band);
  }
  .stay_aminities .row > [class*="col-"]:hover .stay_aminities_box img,
  .stay_aminities .row > [class*="col-"]:focus-within .stay_aminities_box img{
    filter:brightness(0) invert(1);             /* white line art on the green */
    opacity:1;
  }
}


/* ==========================================================================
   §11  BREAKPOINTS
   --------------------------------------------------------------------------
   EVERY QUERY IS min-width, IN ASCENDING SOURCE ORDER, AND THERE IS NOT ONE
   min/max PAIR IN THE FILE.
   ========================================================================== */

/* --- 480 : (2026-09-13: the cards go two across at 768, not 480 or 576 — a
   222px or 250px card put the 40px disc beside a three- or four-line name) --- */

/* --- 576 : the plate opens up and the figures step up -------------------- */
@media (min-width:576px){
  #pricing{ padding:54px 0 58px; }
  #pricing .new_stay_left{
    --jd-pad:22px; --jd-pad-y:26px; --jd-edge-x:22px; --jd-cell-x:10px;
    --jd-cell-y:16px; --jd-stub-gap:18px;
  }
  #pricing .new_stay_left tbody td,
  #pricing .new_stay_left tbody th{ font-size:14.5px; }
  #pricing .new_stay_left tbody td:not(:first-child),
  #pricing .new_stay_left tbody th:not(:first-child){ font-size:18px; }
  #pricing .jd-box > .new_stay_left_table + .new_stay_left_table thead th:first-child{
    font-size:17px;
  }

  /* L10, second half. nowrap FROM 576 AND ONLY IN THE MIGRATED STATE:
     un-migrated, the cell's text node is the whole "INR 55,000 + GST &
     applicable taxes" string and nowrap would make that one ~340px line.
     Its own @supports, its own single selector. */
  @supports selector(:has(*)){
    #pricing .new_stay_left:has(td small) tbody td:not(:first-child){
      font-size:21px;
      white-space:nowrap;
    }
  }

  .stay_aminities.sectiongap{ padding:60px 0 66px; }
  .stay_aminities .row{ gap:16px; }
  .stay_aminities .stay_aminities_box{ padding:18px 20px 18px 18px; }
}

/* --- 768 : the register goes three across (18 = 6 x 3) ------------------- */
@media (min-width:768px){
  .stay_banner_strip{ padding:56px 0 62px; }

  #pricing{ padding:68px 0 74px; }
  #pricing .new_stay_left{
    --jd-pad:32px; --jd-pad-y:34px; --jd-edge-x:32px; --jd-cell-x:12px;
    --jd-cell-y:18px; --jd-stub-gap:22px;
  }
  #pricing .new_stay_left tbody td,
  #pricing .new_stay_left tbody th{ font-size:15.5px; }
  #pricing .new_stay_left tbody td:not(:first-child),
  #pricing .new_stay_left tbody th:not(:first-child){ font-size:20px; }
  #pricing .new_stay_left thead th{ font-size:12px; }
  #pricing .jd-box > .new_stay_left_table + .new_stay_left_table thead th:first-child{
    font-size:19px;
  }
  /* 24, not 26. The migrated ladder wants ~10px of extra width for every
     extra pixel of figure, and the plate NARROWS at 992 (694px at 768–991,
     614px at 992–1199, because the col-lg-8 split takes over from the md-trap
     fix). 26px measured 3px OVER its rail at a 992 viewport. 24px holds at
     both, so the scale steps 21 -> 24 -> 30 and never steps back down. */
  @supports selector(:has(*)){
    #pricing .new_stay_left:has(td small) tbody td:not(:first-child){ font-size:24px; }
  }

  .stay_aminities.sectiongap{ padding:72px 0 80px; }
  .stay_aminities .section-title{ margin-bottom:40px; }
  .stay_aminities .row{ grid-template-columns:repeat(2, minmax(0,1fr)); gap:18px; }   /* 339px cards: the longest
                                                   name runs three lines; at 576
                                                   a 250px card ran it four */
  .stay_aminities .stay_aminities_box{ padding:20px 22px 20px 20px; }
}

/* --- 992 : the two columns split, and the recess sticks ------------------ */
@media (min-width:992px){
  .stay_banner_strip{ padding:66px 0 74px; }

  /* 78/84 rather than a rounder number: home-lux.css:2906 gives the house
     Green Advantages band 78px/82px, and this is the same band. */
  #pricing{ padding:78px 0 84px; }
  #pricing .new_stay_left{ --jd-pad:40px; --jd-pad-y:38px; --jd-edge-x:40px; }

  /* L4, second half — restored at exactly the specificity that set 100%
     above, (1,2,0), so source order settles it. */
  #pricing .row > .col-lg-8{ width:66.6666666667%; }
  #pricing .row > .col-lg-4{ width:33.3333333333%; }

  #pricing .new_stay_right{ max-width:none; margin:0; }
  #pricing .new_stay_right.sticky_div{
    position:sticky;
    top:calc(var(--jd-h-total, 146px) + 18px);
  }
  /* --jd-h-total is the header's UN-condensed height (30+70+46). header-lux.js
     adds .jd-scrolled once y > 96 and header-lux.css:486-487 collapses the
     ribbon to 0 and the bar to 56px, so by the time this column is actually
     sticking the fixed header is 56px + nav tall and the column would float
     62px below it for the whole scroll. Track the condensed state instead. */
  @supports selector(:has(*)){
    body:has(.jd-header.jd-scrolled) #pricing .new_stay_right.sticky_div{
      top:calc(56px + var(--jd-h-nav, 46px) + 18px);
    }
  }

  .stay_aminities.sectiongap{ padding:84px 0 92px; }
  .stay_aminities .row{ grid-template-columns:repeat(3, minmax(0,1fr)); gap:20px; }
}

/* --- 1200 : the foreword goes to two columns ----------------------------- */
@media (min-width:1200px){
  /* 2026-09-13: the strip's paragraph used to split into two 61-character
     columns with a brass rule between them from 1200 up. The client asked
     for ONE paragraph, so the base rule's 70ch measure (§2) now holds at
     every width and nothing is restated here. */

  #pricing .new_stay_left{ --jd-pad:48px; --jd-pad-y:40px; --jd-edge-x:48px; }
  #pricing .new_stay_left tbody td:not(:first-child),
  #pricing .new_stay_left tbody th:not(:first-child){ font-size:21px; }
  @supports selector(:has(*)){
    #pricing .new_stay_left:has(td small) tbody td:not(:first-child){ font-size:30px; }
  }

  /* THE FIFTEEN INCLUDED SERVICES STAY IN ONE MEASURE — TRIED AND REJECTED.
     I set that list in two columns to shorten the plate, measured it, and
     took it out again: it is 827px in one column and 700px in two, so the
     saving is 127px, not the ~400 the arithmetic promises. The reason is in
     the content — the "24x7 Medical Support" item carries a nested eight-
     point <ol> and is 461px tall on its own, so with `break-inside:avoid` the
     two columns cannot balance, and without it a numbered sub-list splits
     across a column boundary. 127px is not worth a 44-character measure for
     a readership skewing 65+. The section is honestly taller than the
     baseline (see `openRisks`) and this was the wrong place to buy it back. */

  .stay_aminities .stay_aminities_box{ padding:22px 24px 22px 22px; }
}


/* ==========================================================================
   §12  ENTRANCE
   --------------------------------------------------------------------------
   NOTHING IN THIS FILE STARTS AN ANIMATION. WOW.js and animate.css are
   already loaded and the template already carries the classes; all that
   happens here is that the eighteen amenity columns get a stagger they do not
   have. WOW writes an inline animation-delay ONLY when `data-wow-delay` is
   present, and the amenity columns have no such attribute — so a CSS
   animation-delay is the one that applies, and the register lights up a row
   at a time with no markup change at all. The three tariff leaves keep the
   0 / .09 / .18s stagger the template already declares.

   The cycle length matches the column count at each breakpoint and each block
   sets a delay on EVERY child, so a later breakpoint fully replaces an
   earlier one rather than leaving some cells on a stale value. All three
   selector shapes are (0,3,0), so source order is the only thing deciding.

   NO `transform` IS DECLARED ON A `.wow` ELEMENT ANYWHERE IN THIS FILE.
   animate.css holds the last keyframe with `animation-fill-mode:both`, which
   outranks an unflagged author declaration, so such a rule would silently do
   nothing. The amenity hover moves the ICON, which is not a .wow element.
   ========================================================================== */
.stay_aminities .row > [class*="col-"]{ animation-delay:0s; }

@media (min-width:768px){
  .stay_aminities .row > [class*="col-"]:nth-child(2n+1){ animation-delay:0s; }
  .stay_aminities .row > [class*="col-"]:nth-child(2n){   animation-delay:.08s; }
}
@media (min-width:992px){
  .stay_aminities .row > [class*="col-"]:nth-child(3n+1){ animation-delay:0s; }
  .stay_aminities .row > [class*="col-"]:nth-child(3n+2){ animation-delay:.07s; }
  .stay_aminities .row > [class*="col-"]:nth-child(3n){   animation-delay:.14s; }
}


/* ==========================================================================
   §13  prefers-reduced-motion
   --------------------------------------------------------------------------
   L5 — the two flags are mandatory, not lazy. States are preserved and only
   the movement is removed: the price row still washes and still darkens its
   rule, the amenity cell still fills, the tick mark still changes colour.
   Nothing that carries information is switched off.
   `.owl-stage` is stilled too, though nothing in CSS can stop the Owl
   autoplay TIMER — `autoplay:false` in js/custom.js:199 is the one-word fix.
   ========================================================================== */
@media (prefers-reduced-motion:reduce){
  /* `*` never matches pseudo-elements, and the amenity chip ::before and the
     tick li::before carry their own transitions. */
  .stay_banner_strip *,   .stay_banner_strip *::before,   .stay_banner_strip *::after,
  #pricing *,             #pricing *::before,             #pricing *::after,
  .stay_aminities *,      .stay_aminities *::before,      .stay_aminities *::after{
    transition:none !important;
    animation-duration:1ms !important;
    animation-iteration-count:1 !important;
    scroll-behavior:auto !important;
  }
  .stay_banner_strip .wow,
  #pricing .wow,
  .stay_aminities .wow,
  .stay_aminities .row > [class*="col-"]{
    visibility:visible !important;
    animation:none !important;
    animation-delay:0s !important;
    opacity:1 !important;
    transform:none !important;
  }
  #pricing .owl-stage{ transition:none !important; }

  #pricing :is(.jd-box, .jd-note) > ul > li:hover::before{ transform:none; }
  .stay_aminities .row > [class*="col-"]:hover .stay_aminities_box,
  .stay_aminities .row > [class*="col-"]:focus-within .stay_aminities_box{
    transform:none;                             /* the state stays (shadow, edge, disc) */
  }
}


/* ==========================================================================
   §19  THE LEDGER  —  REVISION II, 2026-09-13 p.m.
   --------------------------------------------------------------------------
   The client sent the pricing block of the best-luxury landing page
   (best-luxury-senior-citizen-home-kolkata/css/sections2.css, the .jd-p-*
   rules) as the reference for the Standard Pricing Model. This section sets
   the boxes' tables as that ledger, in this page's own faces: Karla where
   the landing page has Helvetica, Fraunces where it has Georgia.
     - every box title is one bold sans band (the landing page's .jd-p-band).
       The four titles were one Fraunces object before and are one Karla
       object now, so the column stays coherent instead of one box changing
       voice.
     - column heads 13px/700 tracked .08em on a 2px rule; the stub 17px/400;
       the FIGURE alone on its line at 20px/700 tabular, its qualifier under
       it at 15px; hairline rows; the admission fee opened by a 2px rule and
       centred across both facing columns.
     - the deposit table is titled by a centred serif head with
       "100% Refundable" tracked beneath it: an <h4 class="jd-p-cap"> before
       the table, sticky in the scroll container like the h3s (so on a phone
       it stays centred over the visible part of a wider table); the table
       names itself through aria-labelledby.
     - the flexible model's table is the same ledger — on the landing page
       both models share one .jd-p-table, and two adjacent tables in two
       voices would read as a mistake.
   Everything mechanical from §6/§7 — the scroll container, the frozen stub,
   the scroll shadows, the 390px nowrap — is untouched; only type, colour and
   rules are restated, at equal specificity and later in source, which is
   enough. Colours are the landing page's own (#22331f and #3a5240 ink,
   hairlines from #4f6f52 at .20/.34), measured there on the same paper.
   Markup hooks (page-templates/longstay.php, .bkp-ledger-2026.09.13, no
   visible words changed): th[scope=row] stubs, .jd-p-fig, .jd-p-qual,
   .jd-p-term, h4.jd-p-cap, tr.jd-p-fee, td.jd-p-span.
   Phone-first like the rest of the file: base = the landing page's <=575
   sizes, 768 = its desktop sizes.
   ========================================================================== */
/* the titles — one bold sans band */
#pricing .jd-box > h6:first-child,
#pricing .new_stay_left h3{
  font-family:var(--jd-sans);
  font-size:clamp(19px, 1.55vw, 22px);
  font-weight:700;
  line-height:1.3;
  letter-spacing:.01em;
  text-transform:none;
  color:var(--jd-ink);                        /* 10.95:1 on the plate */
}
#pricing .jd-box > h6:first-child strong{ font-weight:700; }

/* the sticky rows (§6's h3, the deposit head, the flexible model's footnote)
   sit on the leaf's own background, where §6's scroll-shadow sliver shows
   through the fade of its cover as a faint 6px tick beside them even when
   nothing scrolls; the table cells hide it because they are opaque. Opaque
   plate on the three rows too — on a phone a frozen title over a scrolling
   table is the h3s' existing behaviour. */
#pricing .new_stay_left h3,
#pricing .new_stay_left .jd-p-cap,
#pricing .new_stay_left .flexible_model > strong{ background-color:var(--jd-plate); }

/* the two standard leaves: 30px of air between them, no seam, no closing
   rule (§6 drew a 1px seam and a 2px brass close; the ledger draws neither) */
#pricing .jd-box > .new_stay_left_table + .new_stay_left_table{
  border-top:0;
  padding-top:30px;
}

/* the deposit head above its table */
#pricing .new_stay_left .jd-p-cap{
  position:sticky;
  left:0;
  margin:0 0 12px;
  padding:0 var(--jd-edge-x);
  font-family:var(--jd-serif);
  font-optical-sizing:auto;
  font-size:16px;
  font-weight:700;
  line-height:1.3;
  letter-spacing:.01em;
  text-align:center;
  text-transform:none;
  color:var(--jd-recess);                     /* 12.8:1 on the plate */
}
#pricing .new_stay_left .jd-p-cap::before,
#pricing .new_stay_left .jd-p-cap::after{ content:none; }
#pricing .new_stay_left .jd-p-cap .jd-p-term{
  display:block;
  margin-top:6px;
  font-family:var(--jd-sans);
  font-size:12px;
  font-weight:700;
  line-height:1.35;
  letter-spacing:.06em;
  white-space:normal;
}

/* column heads */
#pricing .new_stay_left thead th,
#pricing .new_stay_left thead th:first-child,
#pricing .jd-box > .new_stay_left_table + .new_stay_left_table thead th:first-child{
  font-family:var(--jd-sans);
  font-size:12px;
  font-weight:700;
  line-height:1.4;
  letter-spacing:.06em;
  text-transform:none;
  color:#3a5240;                              /* 7.4:1 on the plate */
  vertical-align:bottom;
  padding-top:0;
  padding-bottom:8px;
  border-bottom:2px solid rgba(79,111,82,.34);
}

/* the stub and the figure cells */
#pricing .new_stay_left tbody td,
#pricing .new_stay_left tbody th,
#pricing .new_stay_left tbody td:not(:first-child),
#pricing .new_stay_left tbody th:not(:first-child){
  font-family:var(--jd-sans);
  font-size:16px;
  font-weight:400;
  line-height:1.45;
  letter-spacing:0;
  color:var(--jd-recess);                     /* 12.8:1 on the plate */
  padding-top:13px;
  padding-bottom:13px;
  border-top:1px solid rgba(79,111,82,.20);
  vertical-align:baseline;
}
#pricing .new_stay_left tbody tr:first-child > *{ border-top:0; }   /* restated:
                                                 the group above ties §6's
                                                 (1,2,2) and would otherwise
                                                 double the head rule */
#pricing .new_stay_left .jd-p-fig{
  display:block;
  font-family:var(--jd-sans);
  font-size:16px;                             /* the landing page's <=575 size;
                                                 18 from 576, 20 from 768 */
  font-weight:700;
  line-height:1.3;
  letter-spacing:0;
  color:var(--jd-recess);
  white-space:nowrap;
  font-variant-numeric:lining-nums tabular-nums;
  -webkit-font-feature-settings:"lnum" 1,"tnum" 1;
          font-feature-settings:"lnum" 1,"tnum" 1;
}
#pricing .new_stay_left .jd-p-qual{
  display:block;
  margin-top:4px;
  font-family:var(--jd-sans);
  font-size:14px;
  font-weight:400;
  line-height:1.4;
  letter-spacing:0;
  color:#3a5240;                              /* 7.4:1 */
  white-space:normal;
}
#pricing .new_stay_left .jd-p-term{
  font-family:var(--jd-sans);
  font-size:13px;
  font-weight:700;
  line-height:1.35;
  letter-spacing:.05em;
  color:var(--jd-recess);
  white-space:nowrap;
}
/* §6's footing row (1,3,2)/(1,4,3) opened the LAST row of every multi-row
   table with a brass 2px rule and set its figures one size down. The ledger
   has no footing: the flexible model's admission fee is a plain row there,
   and the deposit table's is the one row that carries tr.jd-p-fee. Restated
   at the same specificity, later, and then the fee rule above both. */
#pricing .new_stay_left tbody tr:not(:only-child):last-child > *{
  border-top:1px solid rgba(79,111,82,.20);
  padding-top:13px;
}
#pricing .new_stay_left tbody tr:not(:only-child):last-child td:not(:first-child),
#pricing .new_stay_left tbody tr:not(:only-child):last-child th:not(:first-child){
  font-size:16px;
  font-weight:400;
  color:var(--jd-recess);
}
#pricing .new_stay_left .jd-box tbody tr.jd-p-fee > *{          /* (1,3,2) */
  border-top:2px solid rgba(79,111,82,.34);
  padding-top:14px;
}
#pricing .new_stay_left tbody td.jd-p-span{ text-align:center; }
#pricing .new_stay_left .jd-p-span .jd-p-fig,
#pricing .new_stay_left .jd-p-span .jd-p-term{ display:inline; }

/* the flexible model's footnote — the landing page's .jd-p-effective */
#pricing .new_stay_left .flexible_model > strong{
  margin:20px 0 0;
  padding:14px var(--jd-edge-x) 0;
  border-top:1px solid rgba(203,178,121,.45);
  font-family:var(--jd-sans);
  font-size:14.5px;
  font-weight:700;
  line-height:1.55;
  letter-spacing:0;
  color:var(--jd-recess);
}

@media (min-width:576px){
  #pricing .new_stay_left .jd-p-fig{ font-size:18px; }
}
@media (min-width:768px){
  #pricing .new_stay_left thead th,
  #pricing .new_stay_left thead th:first-child,
  #pricing .jd-box > .new_stay_left_table + .new_stay_left_table thead th:first-child{
    font-size:13px;
    letter-spacing:.08em;
    padding-bottom:10px;
  }
  #pricing .new_stay_left tbody td,
  #pricing .new_stay_left tbody th,
  #pricing .new_stay_left tbody td:not(:first-child),
  #pricing .new_stay_left tbody th:not(:first-child){
    font-size:17px;
    padding-top:15px;
    padding-bottom:15px;
  }
  #pricing .new_stay_left tbody tr:not(:only-child):last-child > *{ padding-top:15px; }
  #pricing .new_stay_left tbody tr:not(:only-child):last-child td:not(:first-child),
  #pricing .new_stay_left tbody tr:not(:only-child):last-child th:not(:first-child){ font-size:17px; }
  #pricing .new_stay_left .jd-box tbody tr.jd-p-fee > *{ padding-top:16px; }
  #pricing .new_stay_left .jd-p-fig{ font-size:20px; }
  #pricing .new_stay_left .jd-p-qual{ font-size:15px; margin-top:5px; }
  #pricing .new_stay_left .jd-p-term{ font-size:14px; }
  #pricing .new_stay_left .jd-p-cap{ font-size:18px; margin-bottom:14px; }
  #pricing .new_stay_left .jd-p-cap .jd-p-term{ font-size:13px; margin-top:7px; }
  #pricing .new_stay_left .flexible_model > strong{ font-size:15.5px; }
  #pricing .jd-box > .new_stay_left_table + .new_stay_left_table{ padding-top:34px; }
  /* the stub seam (§6's 1px box-shadow on the frozen first column) exists for
     a column that freezes while the rest scrolls; from 768 the tables fit
     their box and the ledger has no vertical rule — the screenshot has none */
  #pricing .new_stay_left tbody td:first-child,
  #pricing .new_stay_left tbody th:first-child,
  #pricing .new_stay_left thead th:first-child{ box-shadow:none; }
}

@media (forced-colors:active){
  #pricing .new_stay_left .jd-p-cap,
  #pricing .new_stay_left .jd-p-fig,
  #pricing .new_stay_left .jd-p-qual,
  #pricing .new_stay_left .jd-p-term{ color:CanvasText; }
  #pricing .new_stay_left .jd-box tbody tr.jd-p-fee > *{ border-top-color:CanvasText; }
}


/* ==========================================================================
   §14  forced-colors  (Windows High Contrast and equivalents)
   --------------------------------------------------------------------------
   Everything structural in this design is a background or a 1px hairline —
   the plate, the leaf rules, the row rules, the stub seam, the register
   lattice, the recess, the dot index — and forced colours discards every one
   of them. Without this block the price matrix loses all of its boundaries
   for exactly the readers most likely to have High Contrast switched on, and
   the icons come back as solid blocks because the OS inversion lands on top
   of brightness(0) invert(1).
   ========================================================================== */
@media (forced-colors:active){
  #pricing .jd-box,
  #pricing .new_stay_right_slider{
    border:1px solid CanvasText;
  }
  #pricing .jd-box > .new_stay_left_table,
  #pricing .jd-box > .flexible_model{
    border-top:1px solid CanvasText;
    border-bottom:1px solid CanvasText;
    background-image:none;
  }
  #pricing .new_stay_left thead th,
  #pricing .new_stay_left tbody td,
  #pricing .new_stay_left tbody th{
    border:1px solid CanvasText;
    box-shadow:none;
  }
  #pricing .jd-box > h6:first-child,
  #pricing .jd-box > .new_stay_left_table > h3,
  #pricing .jd-box > .flexible_model > h3{ border-bottom:1px solid CanvasText; }
  #pricing .owl-nav button.owl-prev,
  #pricing .owl-nav button.owl-next{ border:1px solid ButtonText; color:ButtonText; }
  .stay_aminities .stay_aminities_box{ border:1px solid CanvasText; box-shadow:none; grid-template-columns:minmax(0,1fr); gap:0; }
  .stay_aminities .stay_aminities_box h3{ grid-area:auto; }   /* the disc and icon are hidden
                                                                 below: no empty 40px track */
  #pricing .jd-note{ border-top:1px solid CanvasText; }
  #pricing .jd-note::before{ background:CanvasText; }
  .stay_aminities .stay_aminities_box::before{ display:none; }
  /* L12 -- the icons are alt="" decorative raster line art (#1D0764 indigo on
     alpha). forced-colors cannot recolour raster content, so on a dark
     High Contrast theme they sit at 1.27:1 whatever filter is applied. Every
     cell's name is set in text, so the honest move is to hide the glyph
     rather than frame an invisible one. */
  .stay_aminities .stay_aminities_box img{ display:none; }
}


/* ==========================================================================
   §15  print
   --------------------------------------------------------------------------
   A family will print this page. The dark band, the grain and the video
   column are all cost and no benefit on paper.
   ========================================================================== */
@media print{
  .stay_banner_strip,
  #pricing,
  .stay_aminities.sectiongap{
    background-color:#fff !important;
    background-image:none !important;
    border-color:#000 !important;
    padding:0 0 16pt !important;
  }
  .stay_banner_strip .container .row [class*="col-"] h2{
    background-color:transparent;
    border:0;
    border-bottom:1pt solid #000;
    color:#000;
    padding:0 0 4pt;
  }
  .stay_banner_strip .container .row [class*="col-"] p{ max-width:none; }
  #pricing .jd-box{
    border:1pt solid #000;
    padding:12pt;
    box-shadow:none;
  }
  #pricing .new_stay_left h3,
  #pricing .new_stay_left .flexible_model > strong{ padding-left:0; padding-right:0; }   /* the bleed is
                                                   removed below, so the titles
                                                   meet the h6 titles' edge */
  #pricing .jd-note{ padding-left:0; }
  #pricing .jd-note::before{ left:0; }
  #pricing .new_stay_left h3,
  #pricing .new_stay_left h6,
  #pricing .new_stay_left thead th,
  #pricing .new_stay_left tbody td,
  #pricing .new_stay_left tbody th{ color:#000; }
  #pricing .jd-box > .new_stay_left_table,
  #pricing .jd-box > .flexible_model{
    overflow:visible !important;
    background-image:none !important;
    margin-left:0;
    margin-right:0;
    -moz-column-break-inside:avoid;
         break-inside:avoid;
  }
  #pricing .new_stay_left tbody td,
  #pricing .new_stay_left tbody th{ border-top-color:#000; box-shadow:none; }
  #pricing .new_stay_right,
  #pricing .owl-dots{ display:none !important; }
  .stay_aminities .row{ grid-template-columns:repeat(2, minmax(0,1fr)); }
  .stay_aminities .stay_aminities_box{ border:1pt solid #000; border-radius:0; box-shadow:none; }
  .stay_aminities .stay_aminities_box::before{ display:none; }
  .stay_aminities .stay_aminities_box img{
    filter:none;
    background-color:transparent;
    border:1pt solid #000;
  }
  .stay_aminities .stay_aminities_box h3{ color:#000; }
  .wow{ visibility:visible !important; animation:none !important; }
}


/* ==========================================================================
   §16  OPTIONAL MARKUP  —  ADDITIVE, NEVER REQUIRED
   ==========================================================================
   NOTHING BELOW IS NEEDED. The page is correct, legible, accessible and
   truthful with the template exactly as it is today; the CSS for all of it is
   already written above and costs nothing until the markup arrives. It is
   listed here so this file is the single place the next person looks.

   16.1  THE FIVE <small> TAGS — the biggest single upgrade, five cells.
         In leaves 1 and 3 each money cell holds ONE text node that is a price
         AND its qualifier, and no stylesheet can split a text node. Wrapping
         the condition in <small> drops the qualifier onto its own 12.5px
         Karla line at 6.95:1 and takes the figure from 16/18/20/21px to
         16/21/24/30px (there is no bump below 576 — see the note above the
         @supports rule in §6, which is measured, not arbitrary).
             <td>INR 55,000 <small>+ GST &amp; applicable taxes</small></td>
         DO NOT RETYPE ANY DIGITS. Wrap only, and leave the bare `&` and the
         "applicale" spelling exactly as they are — those are the editor's
         call, listed in the copy-defect block at the top of this file.
         THE EDITOR RULE IS ONE SENTENCE:
              THE MONEY IS THE CELL. THE CONDITION IS THE <small>.
         Failure is loud, never silent: forget a tag and "+ GST & applicable
         taxes" renders at figure size, which is immediately visible and
         cannot misstate a number. One tag anywhere flips the whole tariff, so
         apply all of them or none.

   16.2  THE LADDER'S TWO FACING SUB-LINES, AND THE REFUNDABLE CHIP.
         "(Temple Facing)" is the reason a family picks a side of the building
         and it currently lives inside a parenthesis nobody reads.
             <th>North Facing Rooms <span class="jd-th-sub">(Temple Facing)</span></th>
         and optionally
             <th>One-Time Payable Security Deposit <span class="jd-refund">100% Refundable</span></th>
         No words change, only their wrapping.

   16.3  <caption> AND <tfoot> — existing copy moved, no new words.
         WARNING: the model numerals increment on <h3>. If you move a title
         into a <caption> and DELETE the <h3>, that leaf stops being numbered.
         Keep the <h3>, or move `counter-increment:jdmodel` to the caption
         rule in §6. And under no circumstances ADD an <h3> to the untitled
         middle table — see L8.

   16.4  ONE SHARED ADMISSION FOOTING — EDITORIAL, needs sign-off.
         INR 5,00,000 is printed three times (longstay.php:92, :121, :122).
         Three copies of one number is three chances to drift, and drift on a
         price page is how it starts lying. Printing it once as a footing
         common to BOTH models is the right answer and every judge picked it —
         but it changes the page's words, so it is the client's decision, not
         this file's. Write it so it says the fee is common to both models;
         do not characterise the Zero Deposit model's fee in words the source
         does not use.

   16.5  FREE WINS, NO DESIGN IMPACT.
         `loading="lazy"` on iframes 2–17; a distinct `title` on each of the
         seventeen; `autoplay:false` at js/custom.js:199; and three lines of
         jQuery giving the dots `role="button"`, `tabindex="0"` and an
         Enter/Space handler, which is what the focus ring in §8 is waiting
         for.

   ==========================================================================
   §17  THE COMMENTED RETREAT — if the client wants ONE ground across the run
   ==========================================================================
   The client asked for the same background across all three sections and is
   getting two grounds: one palette, one grain, one seam, one ornament, but
   the middle band is dark, because a uniform run cannot make the prices the
   focal point. Show them both. If their own reading of the dark band objects,
   THIS IS THE WHOLE RETREAT — one paste, no layout change, no markup change,
   no arithmetic change. The plate simply stops being the only lit object and
   becomes a plate on paper.

   #pricing{
     background-color:#faf7ef;
     background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='.04'/%3E%3C/svg%3E");
     border-top:1px solid rgba(203,178,121,.55);
     border-bottom:1px solid rgba(203,178,121,.55);
   }
   #pricing .new_stay_left{
     border:1px solid #6b5426;
     border-top:3px solid #6b5426;
   }

   NOTE IF YOU PASTE IT: #cbb279 measures 1.93:1 on grained cream, so the
   plate's OUTER edge and cap MUST move to #6b5426 as above — that is the two
   lines that matter. The row rules INSIDE the plate stay #a58c55, because the
   plate itself is still flat and ungrained where #a58c55 is 3.13:1.
   DO NOT ADD THE GRAIN TO THE PLATE. (L13.)
   ========================================================================== */
