/* ═══════════════════════════════════════════════════════════════════════════
   THE PHONE FLOOR — the public site

   Nakul, 16 Oct 2026: "even jo website ka bhi phone view hai usko bahut
   accha karne ki koshish karo, dekho usme koi bug toh nahi hai."

   Measured at 375x812 before any of this was written. Two things the page
   got right and this file does not touch: nothing scrolls sideways, and
   every wide table already scrolls inside its own box. What was wrong was
   smaller and more ordinary.

   WHAT WAS MEASURED, AND WHAT IT MEANT
     - "Explore loan options" and "Talk to Nakul's team" — the two links the
       whole homepage is built to earn — were 18px tall with 11px text. A
       thumb is about 9mm. They were the hardest things on the page to press
       and the only ones that matter.
     - The grievance email and the phone number in the regulatory block were
       35px. Somebody with a complaint, on a phone, tapping to call.
     - Seventeen footer links and six story links, all just under the floor.
     - "Your Money, Your Future" — the brand's own line — set at 8.5px.
     - Section eyebrows ("01 / BORROW", "THE TRADE-OFF") at 9px.

   44px IS APPLE'S PUBLISHED MINIMUM and 36 is the lowest anything here was
   allowed to stay. Raising a link's min-height does not move the text or
   reflow the page — it grows the box the finger lands in, which is the
   whole point.

   WHAT THIS FILE DELIBERATELY LEAVES ALONE
   Eleven small labels sit inside .mf-shaft, the motion-graphics section,
   where the whole slab is transform-scaled to about 61% on a phone. Their
   8.5px is small because the illustration around them is small. Raising
   only the type there would make the labels wrong against the drawing they
   belong to, and the fix is to the composition, not the font size. Left as
   it is, on purpose, and worth looking at together.

   LOADED LAST so an equal-specificity rule here wins without !important.
   ═══════════════════════════════════════════════════════════════════════════ */

/* iOS inflates text inside narrow blocks in landscape unless this is pinned.
   Not a width rule, so it sits outside the media query. */
html { -webkit-text-size-adjust: 100%; }

/* ═══════════════════════════════════════════════════════════════════════════
   EVERY PAGE, NOT JUST THE HOMEPAGE

   All 23 shipped pages were measured at 375x812 after the homepage was done.
   Four of them were worse than the homepage had been:

     about.html          scrolled sideways by 262px — one inline grid in the
                         body said 1fr 1fr and never collapsed, so two 288px
                         cards sat side by side on a 375px screen. Fixed in
                         that file, because an inline style beats any
                         stylesheet rule and no sheet could have reached it.
     contact.html        six form fields at 14px — the lead form, zooming on
                         every tap.
     credit-cards.html   thirteen fields under 16px, 68 Apply buttons at 32px,
                         sixteen filter chips at 29px, and 408 labels at 9–9.5px.
     loans.html          93 controls under the floor, four fields under 16px.

   The rules below are the ones that are safe to apply everywhere: a font-size
   floor on form fields, a height floor on buttons and on controls that are
   already their own block, and a size floor on label classes. They change no
   layout above 480px and none at all on desktop.

   WHAT IS DELIBERATELY NOT HERE: a tap floor on links inside running text.
   privacy-policy and terms-conditions report ~20 small links each, and nearly
   all of them are words inside a sentence. Giving those 44px of height would
   break the paragraphs they live in, and a reader tapping a word mid-sentence
   is not the case the 44px rule exists for.
   ═══════════════════════════════════════════════════════════════════════════ */

@media (max-width: 480px) {

  /* The single highest-value rule in this file. iOS Safari zooms the page in
     on focus for any field under 16px and never zooms back out.

     THE ONE !important IN THIS FILE, AND IT IS EARNED. Written plainly, this
     rule is `input` — specificity (0,0,1) — and it lost to every .form-input
     and #marketing-view .field on the site. Measured: contact.html's six
     fields and credit-cards.html's thirteen stayed at 12–15px with the plain
     rule in place. There is also no page that legitimately wants a sub-16px
     field on a phone, so there is nothing here for a later rule to need to
     win back. Raising specificity with a :root:root:root hack would do the
     same job while hiding why. */
  input, select, textarea { font-size: 16px !important; }

  button { min-height: 44px; touch-action: manipulation; }

  /* Controls that are a link by markup and a button by behaviour. Named one
     by one rather than blanket-matching a, so a link inside a paragraph is
     left where it belongs. */
  .btn-back, .btn-apply, .chip, .logo, .brand, .hw-logo,
  .md-brand, .md-back, .lc-more, .theme-btn, .cc-tile a {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    touch-action: manipulation;
  }

  /* A checkbox is a tap target like any other, and 16px of it is not one.
     The label beside it usually works too, but not every one of these has
     a <label for>, so the box itself has to be reachable. */
  input[type="checkbox"], input[type="radio"] { min-width: 24px; min-height: 24px; }

  /* The "source" links under each published rate — the thing that makes the
     rate checkable — were 14px tall. */
  .lc-src { min-height: 44px; display: inline-flex; align-items: center; }

  /* Navigation that happens to be made of links, not prose:
       .toc a       the contents list down the side of the legal and
                    how-we-rank pages — block links at 29px
       .cm-value a  the contact email and phone number — a phone turns
                    these into "tap to mail" and "tap to call", which is
                    the single most likely tap on that page, at 19px
       footer a     site navigation, not a sentence
     Each is display:block or a standalone row already, so a height floor
     costs no layout. */
  /* On a phone these are not links, they are a call and a mail. Matched by
     href rather than by class, because the About page writes them with no
     class at all and the next page to carry a number will too. */
  a[href^="tel:"], a[href^="mailto:"] {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    touch-action: manipulation;
  }

  .toc a, .cm-value a, footer a {
    min-height: 44px;
    display: flex;
    align-items: center;
    touch-action: manipulation;
  }

  /* Label classes carrying 9–9.5px across the card, rate and preview pages.
     Named per class rather than blanket-raising every span, so a label that
     is already the right size is not touched. */
  .metric-key, .card-network-badge, .card-tier-badge, .recommended-badge,
  .lc-cat, .lc-apr, .pc-fam, .pc-spec, .pc-scale-cap,
  .ring-of, .cl, .tag, .chip { font-size: 11.5px; }
  /* .ctile .cl is (0,2,0) on the CIBIL preview and outranks a bare .cl, so
     that one is matched at its own weight. */
  .ctile .cl { font-size: 11.5px; }
  /* Same page, same shape: .acc-nums span is (0,2,1) and .strip-cap
     carries its 8.5px for the spans inside it to inherit. */
  .acc-nums span, .strip-cap, .strip-cap span { font-size: 11.5px; }

  /* NOT FIXED, AND NOT A BUG: the SIP sliders measure 6px tall, because 6px
     is the TRACK. Their thumb is 24px and the thumb is what a finger drags
     (sip-calculator.css:33). Forcing the element taller would turn a hairline
     track into a 36px bar to fix a target that already works. The audit
     counts the input's own height, so it reads these as too small; they are
     left alone on purpose. */
  .lc-apr span, .pc-spec span, .pc-scale-cap span { font-size: 11.5px; }

  /* small inherits its size, so a floor and not a fixed size — pinning it
     would shrink a small inside a heading. */
  small { font-size: max(11.5px, 1em); }
}

@media (max-width: 480px) {

  /* ─── what a thumb has to hit ─────────────────────────────────────────── */

  /* Links that already stand on their own line. They keep their own display
     and simply grow. */
  .footer-grid a,
  .rv-item a,
  .story-links a,
  .ml-service-links a {
    min-height: 44px;
    display: flex;
    align-items: center;
    touch-action: manipulation;
  }

  /* Links that sit in a line of text or at the end of a strip. inline-flex
     keeps them from taking the full width they were never given. */
  .story-next,
  .auth-trust a,
  .hc-more,
  .lstrip__link,
  .mn-cons-link,
  /* Moved down from the group above on 8 Nov 2026. The Privacy Policy link
     ends the cookie bar's sentence — it does not stand on its own line, so
     display:flex made it a full-width block and PUT it on one, with a 44px
     line box. On a 375px phone that cost the bar two extra lines: the
     sentence needs four and the bar was rendering six and a half. The tap
     target is the right idea and is kept; only the box changes. */
  .mn-cc-text a {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    touch-action: manipulation;
  }

  /* 34px is close enough to look fine and far enough to be missed. */
  button {
    min-height: 44px;
    touch-action: manipulation;
  }

  /* A round control has to grow in both directions or it turns into an
     oval. */
  .ml-motion-toggle {
    min-width: 44px;
    min-height: 44px;
  }

  /* ─── what an eye has to read ─────────────────────────────────────────── */

  /* The brand line. 8.5px is a legal-footnote size and this is not that. */
  .ms-brand small { font-size: 12px; }

  /* Eyebrows and captions. They are meant to be small — 11.5px is the
     smallest that still reads at arm's length on a phone, so they stay
     quiet without disappearing.

     THE SELECTORS ARE NOT TIDY ON PURPOSE. This site writes its rules as
     #marketing-view .thing, which is an id and outranks any plain class no
     matter what order it loads in. A rule here has to match that shape or
     it silently does nothing — which is exactly what the first cut of this
     file did: the sizes were right and not one of them applied. Where the
     shapes tie, this file loads last and wins. */
  #marketing-view .ml-value-strip,
  #marketing-view .ml-value-strip strong { font-size: 11.5px; }
  .ml-explain-steps .xs-step > span { font-size: 11.5px; }
  #marketing-view .mf-rail b { font-size: 11.5px; }
  .story-visual-top,
  .story-conclusion > span,
  .story-bill span,
  .ml-plan span,
  #marketing-view .ml-explain-steps .xs-interest { font-size: 11.5px; }

  /* The chapter rail is pinned to height:34px, so a min-height alone is
     overruled by the fixed height and the button stays 34. */
  #marketing-view .mf-rail button { height: auto; min-height: 44px; }
}
