:root{--white:#f5f0e5;--paper:#eee7d9;--navy:#123e4c;--navy-2:#0c303b;--emerald:#075144;--gold:#8a702e;--ink:#173d45;--t-cap:12px;--t-body:16px;--wrap:1320px}
.site-header{position:relative;background:var(--white);border-bottom:0;box-shadow:none;z-index:20}.header-in{max-width:1500px;min-height:124px;gap:24px;padding:16px 3.5%}.brand{gap:12px;flex-shrink:0}.brand .brand-crest{width:84px;height:116px;object-fit:contain}.brand-name b{font-family:var(--serif);font-size:35px;font-weight:400;letter-spacing:1.5px;line-height:1.1;color:var(--navy)}.brand-name span{font-size:12px;letter-spacing:2.6px;color:var(--navy)}.brand-name small{display:block;border-top:1px solid #b69864;margin-top:7px;padding-top:6px;font-size:9px;letter-spacing:1px;color:#935d44}.nav-main{gap:23px;margin-left:auto}.nav-main a{font-size:14px;padding:9px 0}.header-actions{gap:12px}.header-actions>.btn{display:none}.lang-btn{font-size:12px}.heritage-hero{min-height:430px;position:relative;isolation:isolate;overflow:hidden}.heritage-art{position:absolute;width:64%;height:100%;right:0;top:0;object-fit:cover;object-position:center 53%;mix-blend-mode:multiply;z-index:-1;mask-image:linear-gradient(to right,transparent,black 18%)}.heritage-copy{width:48%;padding:18px 0 40px 16.8%}.heritage-copy>.kicker{display:none}.heritage-copy h1{font-family:var(--serif);font-size:clamp(48px,4.8vw,76px);line-height:1.06;letter-spacing:-2px;color:var(--navy);text-wrap:initial}.heritage-copy h1 em{display:block;font-size:.72em;font-weight:400;letter-spacing:-1.4px;margin-top:12px;white-space:nowrap}.heritage-copy .brass-rule{margin:20px 0 16px;width:47px;background:#a9654e;height:2px}.heritage-copy p{max-width:340px;font-size:16px;line-height:1.6}.heritage-link{display:inline-flex;align-items:center;gap:26px;font-size:12px;text-transform:uppercase;letter-spacing:1.4px;font-weight:500;padding:12px 0 4px;border-bottom:1px solid #ab9367;margin-top:12px}.heritage-link span{font-size:26px;line-height:1}.heritage-link:hover{color:#9b5b44}.ledger-band{padding:16px 0 18px;background:var(--navy)}.ledger-band .wrap{max-width:none;padding:0 4%}.ledger-band .kicker{font-size:12px;color:#d2bd81;margin-bottom:8px}.ledger-grid{gap:0;margin:0;grid-template-columns:repeat(4,1fr)}.ledger-grid>div{position:relative;padding:0 26px 0 50px;min-height:48px;border-right:1px solid #78908066;text-align:left}.ledger-grid>div:last-child{border:0}.ledger-grid .ic{position:absolute;left:10px;top:10px;width:27px;height:27px;margin:0;color:#d2bd81}.ledger-grid dd{font-size:26px;line-height:1.15;margin:0;color:#f6f0df}.ledger-grid dt{font-size:12px;margin-top:4px;color:#dddccf}.ledger-grid .note{display:none}.heritage-overview{display:grid;grid-template-columns:32% 31% 37%;border-bottom:1px solid var(--rule)}.heritage-products{padding:24px 32px 20px 12%}.heritage-products>.kicker{color:#96694d;font-size:12px;margin-bottom:10px;display:block}.heritage-products>a{display:flex;align-items:center;gap:16px;border-bottom:1px solid #cfc3aa;padding:10px 4px;font-family:var(--serif);font-size:20px;line-height:1.2;transition:background .2s,padding .2s}.heritage-products>a:hover{background:#e7dfce;padding-left:12px}.heritage-products .ic{color:#9c6047;width:24px;height:24px;flex-shrink:0}.heritage-products b{margin-left:auto;color:#9d8050;font-weight:400;font-size:24px}.heritage-products>a.all-solutions{font:12px var(--sans);text-transform:uppercase;letter-spacing:1px;border:0}.heritage-about{padding:30px 32px}.heritage-about .kicker{color:#94634b}.heritage-about h2,.heritage-contact h2{font-family:var(--serif);font-size:29px;line-height:1.2;margin:12px 0 16px}.heritage-about p{font-size:14px;line-height:1.7;max-width:330px}.heritage-contact{background:var(--emerald);color:#ede7d6;padding:30px 13%}.heritage-contact .kicker{color:#d9d5ba}.heritage-contact h2{color:#f1ebdb}.heritage-contact p,.contact-email{display:flex;gap:14px;font-size:14px;line-height:1.7;margin:16px 0;color:#e6e4d6;overflow-wrap:anywhere}.heritage-contact .ic{width:20px;height:24px;flex-shrink:0;color:#c5ab6a}.heritage-contact .heritage-link{color:#e5d7a7}.contact-motto{display:block;margin-top:28px;padding-top:18px;border-top:1px solid #b9ae7944;font-family:var(--serif);font-style:italic;font-size:18px;color:#c2d1bc}.section{padding-block:64px}.site-footer{background:var(--navy-2)}.btn{border-radius:0}.hero-house{background-color:var(--white)}
@media(min-width:1600px){.heritage-hero{min-height:520px}.heritage-copy{padding-top:45px}.heritage-art{object-position:center}}
@media(max-width:1150px){.header-in{gap:16px}.nav-main{gap:14px}.nav-main a{font-size:12px}.brand .brand-crest{width:64px;height:89px}.brand-name b{font-size:29px}.brand-name span{font-size:10px}.brand-name small{font-size:8px}.heritage-copy{padding-left:9%;width:49%}.heritage-hero{min-height:400px}.heritage-products{padding-left:24px}.heritage-contact{padding:28px}.heritage-about{padding:28px 24px}.heritage-products>a{font-size:18px}}
@media(max-width:900px){.header-in{min-height:106px;flex-wrap:wrap}.nav-toggle{display:block;margin-left:auto}.nav-main{display:none;width:100%;order:4;margin:0}.nav-main[data-open="true"]{display:flex;flex-wrap:wrap}.header-actions{margin-left:0}.heritage-copy{padding-left:6%;width:55%}.heritage-copy h1{font-size:54px}.heritage-art{width:62%;opacity:.85}.heritage-overview{grid-template-columns:1fr 1fr}.heritage-contact{grid-column:1/-1;display:block;padding:30px 6%}.heritage-contact p{max-width:450px}.contact-motto{margin-top:20px}.ledger-grid>div{padding-left:38px;padding-right:10px}.ledger-grid .ic{left:0}.ledger-grid dd{font-size:23px}}
@media(max-width:600px){.header-in{padding:12px 20px;gap:12px}.brand .brand-crest{width:54px;height:75px}.brand-name b{font-size:27px}.brand-name small{display:none}.lang-btn{padding:8px}.header-actions{margin-left:auto}.nav-toggle{font-size:12px}.heritage-hero{min-height:650px}.heritage-copy{padding:28px 24px;width:100%}.heritage-copy h1{font-size:53px;letter-spacing:-1.5px}.heritage-copy h1 em{font-size:39px}.heritage-copy p{max-width:315px}.heritage-art{top:auto;bottom:0;width:100%;height:310px;opacity:1;object-position:center;mask-image:linear-gradient(to bottom,transparent,black 25%)}.heritage-copy .heritage-link{margin-top:4px}.ledger-grid{grid-template-columns:1fr 1fr;row-gap:20px}.ledger-grid>div:nth-child(2){border:0}.ledger-band{padding:20px 8px}.ledger-band .kicker{margin-bottom:16px}.heritage-overview{grid-template-columns:1fr}.heritage-products,.heritage-about,.heritage-contact{padding:28px 24px}.heritage-about{border-top:1px solid var(--rule)}.heritage-products>a{padding:13px 2px;font-size:21px}.heritage-about p{font-size:16px}.heritage-contact p,.contact-email{font-size:16px}.heritage-contact{grid-column:auto}.section{padding-block:44px}.heritage-copy h1 em{white-space:normal}.brand-name span{letter-spacing:1.8px}}
html:not([lang=en]) .heritage-copy{padding-left:6%;padding-right:16px}html:not([lang=en]) .heritage-copy h1{font-size:clamp(30px,3.8vw,55px);line-height:1.25;letter-spacing:0}html:not([lang=en]) .heritage-copy h1 em{white-space:normal;letter-spacing:0}html:not([lang=en]) .heritage-hero{min-height:500px}@media(max-width:600px){html:not([lang=en]) .heritage-hero{min-height:780px}}

.ledger-grid>div{align-items:flex-start;gap:3px}.ledger-band .kicker{text-align:left}.ledger-grid dt{letter-spacing:.06em}.brand-name span{display:block}@media(max-width:900px){.nav-main{background:var(--white);position:absolute;top:100%;left:0;right:0;padding:12px 20px;box-shadow:0 10px 18px #123e4c14}.nav-main[data-open="true"]{display:flex;flex-direction:column;align-items:stretch}.nav-main a{font-size:14px;padding:12px}}


/* ==========================================================================
   Browser-verification pass. Every rule below fixes a defect measured in
   Chromium across 871 page x locale x width combinations. Appended last so
   it wins over the layer above without editing it.
   ========================================================================== */

/* V1 — CONTRAST. This file re-tinted --white, --navy, --emerald and --gold.
   The new parchment (#f5f0e5) is darker than theme.css's #FBF8F1 and the new
   --gold is lighter, so four inherited token pairs dropped under WCAG AA:
     --gold      on parchment  4.16:1  (.eyebrow, .steps .n, .timeline .year,
                                        .memoriam .name — all 12px text)
     --ink-3     on parchment  4.38:1  (.disclaimer, .calc label, .facts dt,
                                        .form .hint, .lang-menu .en-name)
     --ink-3     on --paper    4.05:1
     --on-emerald-2 on the new emerald 4.25:1  (.contact-band sub-text)
   Re-tinted to the nearest hue that clears 4.5:1 on every ground it lands on. */
:root{
  --gold:#7D6427;          /* 4.96:1 on parchment, 4.9:1 on --tint */
  --ink-3:#5F646D;         /* 5.23:1 on parchment, 4.83:1 on --paper */
  --on-emerald-2:#A8BFB6;  /* 4.76:1 on --emerald */
  --gold-lift:#D7B45E;     /* the new --emerald is lighter than theme.css's,
                              so #C8A24C fell to 3.85:1 on it (.contact-band
                              .kicker / h3 / .btn-on-navy). 4.66:1 on the new
                              emerald, 5.6:1 on the new navy. */
}
/* the two new heritage kickers were 4.18:1 and 4.46:1 on parchment */
.heritage-products>.kicker{color:#8A5C3F}   /* 5.02:1 */
.heritage-about .kicker{color:#8A5C3F}      /* 5.02:1 */

/* V2 — LEDGER BAND, 320–400px. `.ledger-grid > div` had the grid default
   `min-width:auto`, so each cell's intrinsic minimum was its 48px icon gutter
   plus its longest unbreakable value ("₹5,00,00,000" = 141px, Tamil
   "பன்னிரண்டு" = 158px). The 1fr tracks were forced past the container and the
   page scrolled horizontally: /legacy/ 331px wide in a 320px viewport, /ta/
   361px, /ml/ 713px. Let the tracks shrink, let long values wrap, and drop to
   one column where two can never fit. */
.ledger-grid>div{min-width:0}
.ledger-grid dd,.ledger-grid dt{overflow-wrap:anywhere}
@media(max-width:400px){
  .ledger-grid{grid-template-columns:1fr}
  .ledger-grid>div{border-right:0}
}

/* V3 — HERITAGE OVERVIEW, Malayalam. Same `min-width:auto` failure, an order
   of magnitude worse: the Malayalam product names are single long words, so
   the 32%/31%/37% tracks (and the 1fr collapses below them) inflated the band
   to 713px at 360–600 and 965px at 768–900, taking the whole page with it. */
.heritage-overview>*{min-width:0}
.heritage-products>a{min-width:0}
.heritage-products>a>span,.heritage-about h2,.heritage-about p,
.heritage-contact h2,.heritage-products>.kicker{overflow-wrap:anywhere}

/* V4 — HERO ART OVER HERO COPY. `.heritage-art` is multiply-blended and its
   mask reaches full opacity 18% into the image, which at 601–1150px is well
   inside the copy column: 3–4% of the lede's box measured below 4.5:1 against
   dark detail in the photograph at 768px. Push the fade out so the art is
   still transparent where the text sits. Below 600 the art moves to the
   bottom of the hero and its top edge ran under `.heritage-link`; same fix
   on the vertical axis. */
@media(min-width:601px) and (max-width:1150px){
  .heritage-art{mask-image:linear-gradient(to right,transparent,black 46%)}
}
@media(max-width:600px){
  /* Masking alone could not clear it: the Tamil and Malayalam hero copy is
     tall enough that `.heritage-link` still landed 128px inside the image.
     Below 600 the art stops being a backdrop and becomes the block under the
     copy, so no text is ever over the photograph. */
  .heritage-hero{display:flex;flex-direction:column;min-height:0}
  .heritage-copy{order:1;width:100%;padding-bottom:26px}
  .heritage-hero picture{order:2;display:block;width:100%;line-height:0}
  .heritage-art{position:static;width:100%;height:250px;z-index:auto;
    object-position:center;mask-image:linear-gradient(to bottom,transparent,black 22%)}
}

/* V5 — 2.5.8 Target Size. At 390px the range thumbs measured 20px tall and
   the consent checkbox 13x13. Both are pre-existing site.css geometry, but
   they are cheap to floor here. */
.calc input[type=range]{height:26px}
.form .consent input[type=checkbox]{width:24px;height:24px;flex-shrink:0}

/* V6 — /ta/ at 320px: `h.recordTitle` is a single long Tamil word, and
   `.record-intro h2` had no wrap opportunity, pushing the document to 329px
   in a 320px viewport. */
.record>*{min-width:0}
.record-intro h2,.record-intro p{overflow-wrap:anywhere}
.record-table th,.record-table td{overflow-wrap:anywhere}

/* V7 — theme.css paints .ledger-grid's own background and lets a 1px gap show
   through as the cell divider. remodel widens that to row-gap:20px below 600px,
   which turned the divider into a 20px olive bar between every row. The band is
   one navy field on mobile; the dividers there are the cells' own borders. */
@media (max-width:600px){
  .ledger-grid{background:transparent}
  .ledger-grid > div{border-right:0}
}

/* V8 — the founder portrait. .memoriam .portrait was a 128x160 placeholder box
   with centred placeholder text; it is now a real image, so it needs its own
   sizing, a parchment mat and a hairline rather than the box treatment. */
.memoriam picture{display:block}
.memoriam img.portrait{display:block;width:236px;height:auto;margin:0 auto 24px;
  padding:9px;background:var(--paper);border:1px solid var(--gold);border-radius:0;
  outline:1px solid var(--rule-2);outline-offset:6px}
@media (max-width:600px){.memoriam img.portrait{width:200px}}
.cards .heritage-link{margin-top:10px;display:inline-block}

/* V9 — the lending creed on the home page, the founder figure on the About and
   Legacy pages, and the proof band now shared by four pages. */
.creed{max-width:760px;margin:26px auto 0;list-style:none;padding:0;text-align:left}
.creed li{position:relative;padding:14px 0 14px 34px;border-top:1px solid var(--rule-2);
  font-size:16px;line-height:1.65;color:var(--ink)}
.creed li:first-child{border-top:0}
.creed li::before{content:"";position:absolute;left:8px;top:24px;width:7px;height:7px;
  background:var(--gold);transform:rotate(45deg)}
@media (max-width:600px){.creed li{padding-left:26px;font-size:15px}.creed li::before{left:2px}}

.founder-figure{margin:0 0 22px;float:right;width:156px;max-width:44%;
  margin-left:28px;text-align:center}
.founder-figure img{display:block;width:100%;height:auto;padding:7px;background:var(--paper);
  border:1px solid var(--gold);outline:1px solid var(--rule-2);outline-offset:4px}
.founder-figure figcaption{margin-top:16px;font-size:12px;line-height:1.5}
.founder-figure .label{display:block;letter-spacing:.16em;text-transform:uppercase;
  font-size:10px;color:var(--gold)}
.founder-figure b{display:block;font-family:var(--serif);font-weight:400;font-size:15px;
  margin:5px 0 3px;color:var(--navy)}
.founder-figure .role{display:block;letter-spacing:.12em;text-transform:uppercase;
  font-size:10px;color:var(--ink-3)}
@media (max-width:640px){
  .founder-figure{float:none;width:170px;margin:0 auto 28px}
}
.founder-quote{display:flex;gap:38px;align-items:center;justify-content:center;
  max-width:820px;margin-inline:auto;margin-top:26px}
.founder-quote .founder-figure{float:none;margin:0;flex:0 0 auto;width:132px;max-width:none}
.founder-quote .pullquote{margin:0;text-align:left}
@media (max-width:700px){
  .founder-quote{flex-direction:column;gap:24px}
  .founder-quote .pullquote{text-align:center}
}

/* V10 — mobile. The proof band is a 4-up grid on desktop; at one column it ran
   to nearly 700px of navy on a 320px screen, so below 600px it becomes 2x2 with
   compact rows, and the founder figure beside the Legacy quote gets a usable
   size instead of the desktop 132px. */
@media (max-width:600px){
  .ledger-band{padding:22px 0 24px}
  .ledger-grid{grid-template-columns:repeat(2,1fr);row-gap:18px;column-gap:10px}
  .ledger-grid > div{padding:0 8px 0 34px;min-height:44px}
  .ledger-grid .ic{left:0;top:6px;width:22px;height:22px}
  .ledger-grid dd{font-size:21px;overflow-wrap:anywhere}
  .ledger-grid dt{font-size:11px;letter-spacing:.05em}
  .founder-quote .founder-figure{width:168px}
}
@media (max-width:400px){
  /* the capital figure is the one value that will not sit in half a 320px
     screen, so it takes the full row rather than breaking mid-number */
  .ledger-grid dd{font-size:19px}
  /* the capital figure is the one value too long for half a 320px screen */
  .ledger-grid > div:last-child dd{font-size:16px;letter-spacing:-.01em}
}

/* V11 — typography uniformity. The brand wordmark was pinned to Georgia while
   every heading used Playfair; it now takes --serif like everything else, which
   also means the Indic locales render the wordmark in their own face rather than
   falling back to a Latin serif. The chat close button inherited the UA default
   (Arial), the only element on the site that was not on the two-face system. */
button,input,select,textarea,output,[data-chat-close]{font-family:inherit}

/* V12 — the consent banner. It sits above the floating buttons, never covers
   more than a third of a phone screen, and is hidden until site.js decides
   there is a choice to make. */
.cookiebar{position:fixed;left:0;right:0;bottom:0;z-index:60;background:var(--navy);
  color:#EDE7D6;border-top:2px solid var(--gold-lift);box-shadow:0 -8px 24px #12323c26}
.cookiebar-in{max-width:1180px;margin-inline:auto;padding:18px 22px;display:flex;
  gap:26px;align-items:center;justify-content:space-between}
.cookiebar b{display:block;font-family:var(--serif);font-size:17px;font-weight:400;
  color:#F6F0DF;margin-bottom:5px}
.cookiebar p{font-size:13.5px;line-height:1.6;color:#DDE2DC;max-width:74ch}
.cookiebar a{color:#E5D7A7;text-decoration:underline;text-underline-offset:2px}
.cookiebar-actions{display:flex;gap:12px;flex-shrink:0}
.cookiebar .btn{min-height:44px;padding:11px 20px;font-size:13px;white-space:nowrap;
  border:1px solid #7E9A98;color:#EDE7D6;background:transparent}
.cookiebar .btn-primary{background:var(--gold-lift);border-color:var(--gold-lift);color:#123E4C}
@media (max-width:760px){
  .cookiebar-in{flex-direction:column;align-items:stretch;gap:14px;padding:16px 18px}
  .cookiebar-actions{gap:10px}
  .cookiebar .btn{flex:1 1 0;text-align:center;padding:11px 8px}
}

/* V13 — form validation and the honeypot. The trap field is positioned out of
   view rather than display:none, because some bots skip hidden inputs. */
.form{position:relative}
.form .trap{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.field-err{margin-top:6px;font-size:13px;line-height:1.45;color:#8E2433}
.form [aria-invalid="true"]{border-color:#8E2433;outline:1px solid #8E243333}

/* V14 — three contrast and target-size fixes found by axe after this round.
   .strip p carried opacity:.86, which dropped the teal and slate tiles to
   4.3:1 and 4.15:1; the sage tile sat at 4.51:1 with the opacity removed, so
   its ground is darkened a step as well. The footer copyright had opacity:.7
   over navy (4.25:1). The two footer email links stacked 23.8px apart, one
   pixel under the 24px target minimum. */
.strip p{opacity:1}
.strip .t-sage{background:#556C59}
.footer-legal .copyright{opacity:1;color:#93AAB6}
.site-footer a.mail{display:inline-block;padding-block:4px}

/* V15 — the closing call to action. Plain ground with a hairline above it, so it
   never lands next to another colour block on pages that already end in one. */
.cta-close{border-top:1px solid var(--rule-2)}
.cta-close .btn-row{margin-top:26px}
