{
  "title": "Our Process — The Swiss Standard | The Swiss Laundry Kolkata",
  "description": "12 steps. No exceptions. Just extraordinary garment care by The Swiss Laundry, Kolkata. Dry cleaning, laundry and stain removal since 2013.",
  "keywords": "",
  "robots": "index,follow",
  "canonical": "https://www.theswisslaundry.com/our-process",
  "hreflangs": [
    {
      "hreflang": "en-IN",
      "href": "https://www.theswisslaundry.com/our-process"
    }
  ],
  "og": {
    "title": "Our Process — The Swiss Standard | The Swiss Laundry",
    "description": "Twelve steps. No exceptions. Just extraordinary garment care. The Swiss Laundry, Kolkata since 2013.",
    "url": "https://www.theswisslaundry.com/our-process",
    "image": "https://www.theswisslaundry.com/images/og-default.svg",
    "image:width": "1200",
    "image:height": "630",
    "site_name": "The Swiss Laundry",
    "locale": "en_IN",
    "type": "website"
  },
  "geo": {
    "region": "IN-WB",
    "placename": "Kolkata"
  },
  "jsonLd": [
    [
      {
        "@context": "https://schema.org",
        "@type": "LocalBusiness",
        "name": "The Swiss Laundry",
        "telephone": "+919836233354",
        "url": "https://www.theswisslaundry.com/our-process",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "P-4 Kasba Industrial Estate, Phase III, E.M. Bypass (East)",
          "addressLocality": "Kolkata",
          "addressRegion": "West Bengal",
          "postalCode": "700107",
          "addressCountry": "IN"
        },
        "openingHours": "Mo-Sa 10:00-17:00"
      },
      {
        "@context": "https://schema.org",
        "@type": "BreadcrumbList",
        "itemListElement": [
          {
            "@type": "ListItem",
            "position": 1,
            "name": "Home",
            "item": "https://www.theswisslaundry.com/"
          },
          {
            "@type": "ListItem",
            "position": 2,
            "name": "Our Process",
            "item": "https://www.theswisslaundry.com/our-process"
          }
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "SpeakableSpecification",
        "cssSelector": [
          "h1",
          "h2",
          ".hero-title",
          ".section-title"
        ]
      }
    ]
  ],
  "styleCss": "\n:root{\n  --cream:#F5F0E8;--dark:#0c0b0a;--dark2:#1a1918;\n  --pink:#C0415A;--pink2:#a8324a;\n  --gold:#C9A84C;--gold-l:#E2C97E;\n  --serif:'Cormorant Garamond',Georgia,'Times New Roman',serif;\n  --sans:'Jost','Helvetica Neue',Arial,sans-serif;\n}\n*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}\nhtml{font-size:16px;scroll-behavior:smooth;-webkit-text-size-adjust:100%}\nbody{font-family:'Jost',sans-serif;background:var(--dark2);color:#fff;-webkit-font-smoothing:antialiased;overflow-x:hidden}\nbutton,a,[role=\"button\"]{touch-action:manipulation}\na{color:inherit;text-decoration:none}\ninput,select,textarea{font-size:16px!important}\n\n.scroll-bar{position:fixed;top:0;left:0;height:2px;width:0%;background:var(--gold);z-index:9999;transition:width 0.08s linear}\n.scroll-thread{position:fixed;left:0;top:0;width:2px;height:100vh;z-index:500;pointer-events:none}\n.scroll-thread-fill{width:100%;height:0%;background:linear-gradient(to bottom,var(--gold),var(--pink));transition:height 0.1s linear}\n\n/* NAV */\nnav{position:fixed;top:0;left:0;right:0;z-index:200;display:flex;align-items:center;justify-content:space-between;padding:0 3rem;height:70px;transition:background 0.5s,border-color 0.5s,box-shadow 0.5s;border-bottom:0.5px solid transparent}\nnav.on-dark{background:rgba(12,11,10,0.2);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border-bottom-color:rgba(255,255,255,0.07)}\nnav.on-light{background:rgba(245,240,232,0.97);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border-bottom-color:rgba(0,0,0,0.08);box-shadow:0 2px 28px rgba(0,0,0,0.07)}\n.nav-logo a{display:block;line-height:0}\n.nav-logo img{height:46px;width:auto;display:block}\n\n\nnav.on-dark \nnav.on-dark \nnav.on-light \nnav.on-light \n.nav-right{display:flex;align-items:center;gap:0.7rem;flex-shrink:0}\n.btn-track{font-family:var(--sans);font-size:9px;letter-spacing:0.15em;text-transform:uppercase;text-decoration:none;padding:9px 20px;transition:all 0.3s;white-space:nowrap}.btn-connect{font-family:var(--sans);font-size:9px;letter-spacing:0.15em;text-transform:uppercase;text-decoration:none;padding:9px 20px;transition:all 0.3s;white-space:nowrap}\nnav.on-dark .btn-track{border:1px solid rgba(255,255,255,0.35);color:rgba(255,255,255,0.9)}.btn-connect{border:1px solid rgba(255,255,255,0.35);color:rgba(255,255,255,0.9)}\nnav.on-dark .btn-track:hover{border-color:#fff;color:#fff;background:rgba(255,255,255,0.08)}.btn-connect:hover{border-color:#fff;color:#fff;background:rgba(255,255,255,0.08)}\nnav.on-light .btn-track{border:1px solid rgba(192,65,90,0.5);color:var(--pink)}.btn-connect{border:1px solid rgba(192,65,90,0.5);color:var(--pink)}\nnav.on-light .btn-track:hover{border-color:var(--pink);background:rgba(192,65,90,0.05)}.btn-connect:hover{border-color:var(--pink);background:rgba(192,65,90,0.05)}\n.btn-book{font-family:var(--sans);font-size:9px;font-weight:500;letter-spacing:0.15em;text-transform:uppercase;text-decoration:none;padding:10px 22px;background:var(--pink);color:#fff;border:1px solid var(--pink);transition:background 0.25s;white-space:nowrap}\n.btn-book:hover{background:var(--pink2);border-color:var(--pink2)}\n\n\nnav.on-dark \nnav.on-light \n.mob-menu{display:none;position:fixed;top:70px;left:0;right:0;background:var(--cream);z-index:199;flex-direction:column;border-bottom:0.5px solid rgba(0,0,0,0.1);box-shadow:0 8px 24px rgba(0,0,0,0.08)}\n.mob-menu.open{display:flex}\n.mob-menu a{font-family:var(--sans);font-size:11px;letter-spacing:0.18em;text-transform:uppercase;color:var(--dark2);text-decoration:none;padding:1rem 2rem;border-bottom:0.5px solid rgba(0,0,0,0.07);transition:color 0.2s}\n.mob-menu a:hover{color:var(--pink)}\n.mob-menu .mob-track{color:var(--pink)}\n.mob-menu .mob-book{background:var(--pink);color:#fff;text-align:center;border-bottom:none;font-weight:500}\n.mob-menu .mob-book:hover{background:var(--pink2);color:#fff}\n\n\n/* ══ HERO ══ */\n.proc-hero{min-height:100vh;background:var(--cream);display:flex;flex-direction:column;padding:0 8vw;position:relative;overflow:hidden}\n.ledger-header{padding-top:8rem;border-bottom:0.5px solid rgba(26,25,24,0.12);padding-bottom:1.5rem;opacity:0;transform:translateY(12px)}\n.ledger-vol{font-family:'Jost',sans-serif;font-size:9px;letter-spacing:0.28em;text-transform:uppercase;color:rgba(26,25,24,0.4);margin-bottom:0.4rem}\n.ledger-name{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:13px;color:var(--gold);letter-spacing:0.06em}\n.hero-h1{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:clamp(64px,11vw,160px);line-height:0.88;color:var(--dark2);letter-spacing:-0.03em;padding:4rem 0 3rem;flex:1;display:flex;flex-direction:column;justify-content:center}\n.hero-h1-line{display:block;overflow:hidden}\n.hero-h1-line span{display:block;transform:translateY(110%)}\n.hero-h1 em{font-style:normal;color:var(--pink)}\n.hero-foot{display:grid;grid-template-columns:1fr auto;gap:3rem;border-top:0.5px solid rgba(26,25,24,0.1);padding:2rem 0 4rem;opacity:0}\n.hero-desc{font-family:'Jost',sans-serif;font-size:12px;font-weight:300;line-height:2;color:rgba(26,25,24,0.45);max-width:400px}\n.hero-read{font-family:'Jost',sans-serif;font-size:9px;letter-spacing:0.28em;text-transform:uppercase;color:var(--dark2);display:flex;align-items:center;gap:0.8rem;align-self:flex-end;transition:gap 0.3s}\n.hero-read:hover{gap:1.2rem}\n.hero-read::after{content:'↓'}\n\n/* ══ INDEX ══ */\n.proc-index{background:var(--cream);padding:0 8vw 6rem}\n.index-head{display:flex;justify-content:space-between;border-bottom:0.5px solid rgba(26,25,24,0.12);padding-bottom:0.8rem}\n.index-head-label{font-family:'Jost',sans-serif;font-size:9px;letter-spacing:0.28em;text-transform:uppercase;color:rgba(26,25,24,0.35)}\n.index-grid{display:grid;grid-template-columns:repeat(3,1fr)}\n.index-item{padding:2.2rem 2rem 2.2rem 0;border-bottom:0.5px solid rgba(26,25,24,0.08);border-right:0.5px solid rgba(26,25,24,0.08);cursor:pointer;transition:background 0.25s;opacity:0;transform:translateY(8px)}\n.index-item:nth-child(3n){border-right:none}\n.index-item:hover{background:rgba(26,25,24,0.03)}\n.index-num{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:clamp(28px,3.5vw,44px);color:var(--pink);line-height:1;margin-bottom:0.4rem;display:block}\n.index-title{font-family:'Cormorant Garamond',serif;font-weight:300;font-size:clamp(16px,1.8vw,22px);color:var(--dark2);display:block;margin-bottom:0.4rem}\n.index-mode{font-family:'Jost',sans-serif;font-size:8px;letter-spacing:0.26em;text-transform:uppercase}\n.index-mode.set{color:rgba(26,25,24,0.3)}\n.index-mode.filmed{color:var(--pink);opacity:0.7}\n\n/* ══ TICKER ══ */\n.step-ticker{overflow:hidden;padding:0.7rem 0;border-top:0.5px solid rgba(255,255,255,0.06);border-bottom:0.5px solid rgba(255,255,255,0.06);background:#0c0b0a;-webkit-mask-image:linear-gradient(to right,transparent,#000 10%,#000 90%,transparent);mask-image:linear-gradient(to right,transparent,#000 10%,#000 90%,transparent)}\n.ticker-track{display:flex;white-space:nowrap;animation:ticker 38s linear infinite}\n.ticker-track:hover{animation-play-state:paused}\n@keyframes ticker{from{transform:translateX(0)}to{transform:translateX(-50%)}}\n.ticker-item{flex-shrink:0;font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:14px;color:rgba(255,255,255,0.18);padding:0 2rem;display:flex;align-items:center;gap:2rem}\n.ticker-item::after{content:'·';color:rgba(201,168,76,0.3);font-style:normal}\n\n/* ══ DESKTOP PINNED ══ */\n.proc-pin-outer{display:block;position:relative}\n.proc-pin{position:relative;height:100vh;transition:background 0.65s ease}\n.pin-layout{position:absolute;inset:0;display:grid;grid-template-columns:1fr 2fr 1fr;height:100%}\n\n/* Left col */\n.pin-left{display:flex;flex-direction:column;justify-content:center;padding:0 3vw 0 6vw;position:relative}\n.ws-rec{display:flex;align-items:center;gap:0.6rem;font-family:'Jost',sans-serif;font-size:8px;letter-spacing:0.28em;text-transform:uppercase;color:rgba(201,168,76,0.5);margin-bottom:1.5rem}\n.ws-rec-dot{width:7px;height:7px;border-radius:50%;background:var(--pink);animation:blink 1.4s ease-in-out infinite}\n@keyframes blink{0%,100%{opacity:1}50%{opacity:0.2}}\n.pin-section-mark{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:10px;letter-spacing:0.08em;margin-bottom:1.5rem;opacity:0.7;transition:color 0.4s}\n.pin-step-num{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:clamp(80px,10vw,140px);line-height:0.88;color:transparent;letter-spacing:-0.04em;transition:-webkit-text-stroke 0.6s,transform 0.35s cubic-bezier(0.34,1.56,0.64,1),opacity 0.3s}\n.pin-step-num.num-exit{transform:scale(0.82) translateY(-6px);opacity:0}\n.pin-step-num.num-enter{transform:scale(0.82) translateY(6px);opacity:0}\n.pin-step-label{font-family:'Jost',sans-serif;font-size:8px;font-weight:400;letter-spacing:0.3em;text-transform:uppercase;color:var(--gold);margin-top:1rem}\n.pin-step-title{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:clamp(14px,1.3vw,17px);margin-top:0.3rem;line-height:1.3;transition:color 0.4s,opacity 0.25s,transform 0.3s}\n.pin-step-title.text-exit{opacity:0;transform:translateY(-6px)}\n.pin-step-title.text-enter{opacity:0;transform:translateY(6px)}\n.pin-progress{position:absolute;left:6vw;bottom:3rem;width:40px;height:1px;overflow:hidden}\n.pin-progress-fill{height:100%;width:0%;background:var(--gold);transition:width 0.12s linear}\n\n/* Centre col */\n.pin-centre{position:relative;overflow:hidden}\n.pin-img-slot{position:absolute;inset:0;opacity:0;transition:opacity 0.65s ease;pointer-events:none}\n.pin-img-slot.active{opacity:1;pointer-events:auto}\n.pin-img-slot.exit-left{opacity:0}\n.pin-img-fill{width:100%;height:100%;will-change:transform;transition:transform 0.1s linear}\n.img-corner{position:absolute;width:14px;height:14px;z-index:2;opacity:0.4;pointer-events:none}\n.img-corner.tl{top:1.2rem;left:1.2rem;border-top:0.5px solid var(--gold);border-left:0.5px solid var(--gold)}\n.img-corner.br{bottom:1.2rem;right:1.2rem;border-bottom:0.5px solid var(--gold);border-right:0.5px solid var(--gold)}\n\n/* Right col */\n.pin-right{display:flex;flex-direction:column;justify-content:center;padding:0 6vw 0 3vw;position:relative;overflow:hidden}\n.pin-ogilvy{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:clamp(20px,2vw,28px);line-height:1.2;margin-bottom:1.8rem;transition:color 0.4s,opacity 0.25s,transform 0.3s}\n.pin-ogilvy.text-exit{opacity:0;transform:translateY(-8px)}\n.pin-ogilvy.text-enter{opacity:0;transform:translateY(8px)}\n.pin-copy{font-family:'Jost',sans-serif;font-size:12px;font-weight:300;line-height:2;max-width:320px;transition:color 0.4s,opacity 0.25s,transform 0.3s}\n.pin-copy.text-exit{opacity:0;transform:translateY(-6px)}\n.pin-copy.text-enter{opacity:0;transform:translateY(6px)}\n.pin-marginalia{margin-top:2rem;padding-left:1rem;border-left:1.5px solid rgba(192,65,90,0.35);opacity:0;transition:opacity 0.4s,transform 0.3s;transform:translateX(-4px)}\n.pin-marginalia.visible{opacity:1;transform:translateX(0)}\n.pin-marg-label{font-family:'Jost',sans-serif;font-size:7px;letter-spacing:0.28em;text-transform:uppercase;color:var(--pink);opacity:0.7;margin-bottom:0.5rem;display:block}\n.pin-marg-text{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:13px;line-height:1.7;color:rgba(192,65,90,0.75)}\n.pin-scroll-hint{position:absolute;bottom:2.5rem;right:6vw;font-family:'Jost',sans-serif;font-size:8px;letter-spacing:0.22em;text-transform:uppercase;writing-mode:vertical-rl;display:flex;align-items:center;gap:0.8rem;transition:color 0.4s;pointer-events:none}\n.pin-scroll-hint::after{content:'';width:1px;height:36px;background:linear-gradient(to bottom,currentColor,transparent)}\n\n/* ══ BREATH CHAPTER ══ */\n.proc-breath{background:#0c0b0a;padding:10rem 8vw;text-align:center;position:relative;overflow:hidden;opacity:0}\n.breath-ornament{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:11px;color:rgba(201,168,76,0.4);letter-spacing:0.5em;display:block;margin-bottom:2.5rem}\n.breath-label{font-family:'Jost',sans-serif;font-size:8px;letter-spacing:0.34em;text-transform:uppercase;color:rgba(201,168,76,0.35);margin-bottom:0.6rem;display:block}\n.breath-h2{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:clamp(36px,6vw,80px);line-height:1.05;color:#fff;letter-spacing:-0.02em;margin-bottom:3rem}\n.breath-sub{font-family:'Jost',sans-serif;font-size:10px;letter-spacing:0.22em;text-transform:uppercase;color:rgba(255,255,255,0.2)}\n\n/* ══ MOBILE SWIPE ══ */\n.proc-mobile{display:none;position:relative;background:var(--dark2)}\n.mob-header{position:relative;z-index:2;display:flex;align-items:flex-end;justify-content:space-between;padding:4rem 6vw 0;background:inherit;transition:background 0.5s ease}\n.mob-step-num{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:clamp(60px,18vw,90px);line-height:0.85;color:transparent;letter-spacing:-0.04em;-webkit-text-stroke:1px rgba(201,168,76,0.3);transition:-webkit-text-stroke 0.5s}\n.mob-step-info{text-align:right}\n.mob-section-mark{font-family:'Jost',sans-serif;font-size:7px;letter-spacing:0.26em;text-transform:uppercase;color:var(--gold);opacity:0.6;display:block;margin-bottom:0.2rem}\n.mob-step-label{font-family:'Jost',sans-serif;font-size:8px;font-weight:400;letter-spacing:0.22em;text-transform:uppercase;color:var(--gold);display:block}\n.mob-step-title{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:clamp(15px,4.5vw,20px);transition:color 0.4s;display:block}\n.mob-progress-line{height:1px;margin:1.2rem 6vw 0;background:rgba(255,255,255,0.07);position:relative;overflow:hidden}\n.mob-progress-fill{height:100%;background:var(--gold);transition:width 0.5s ease}\n.mob-img-area{position:relative;height:56vw;overflow:hidden;touch-action:pan-y}\n.mob-img-slot{position:absolute;inset:0;opacity:0;transform:translateX(100%);transition:transform 0.55s cubic-bezier(0.16,1,0.3,1),opacity 0.4s ease}\n.mob-img-slot.active{opacity:1;transform:translateX(0)}\n.mob-img-slot.exit-left{opacity:0;transform:translateX(-100%)}\n.mob-img-slot.enter-right{transform:translateX(100%);opacity:0}\n.mob-img-slot.enter-left{transform:translateX(-100%);opacity:0}\n.mob-arrow{position:absolute;top:50%;transform:translateY(-50%);width:38px;height:38px;background:rgba(0,0,0,0.35);backdrop-filter:blur(8px);border:0.5px solid rgba(201,168,76,0.25);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:3;transition:background 0.25s,border-color 0.25s}\n.mob-arrow:hover{background:rgba(0,0,0,0.7);border-color:var(--gold)}\n.mob-arrow svg{width:13px;height:13px;color:#fff}\n.mob-arrow-prev{left:0.8rem}\n.mob-arrow-next{right:0.8rem}\n.mob-dots{position:absolute;bottom:0.6rem;left:50%;transform:translateX(-50%);display:flex;gap:5px;z-index:3}\n.mob-dot{width:4px;height:4px;border-radius:50%;background:rgba(255,255,255,0.22);transition:background 0.3s,transform 0.3s}\n.mob-dot.active{background:var(--gold);transform:scale(1.4)}\n.mob-footer{position:relative;z-index:2;padding:0 6vw 3rem;background:inherit;transition:background 0.5s ease;min-height:180px}\n.mob-ogilvy{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:clamp(19px,5.5vw,26px);line-height:1.2;margin:1.5rem 0 0.8rem;transition:color 0.4s}\n.mob-copy{font-family:'Jost',sans-serif;font-size:12px;font-weight:300;line-height:1.9;transition:color 0.4s}\n.mob-marginalia{margin-top:1.2rem;padding-left:0.8rem;border-left:1.5px solid rgba(192,65,90,0.3)}\n.mob-marg-label{font-family:'Jost',sans-serif;font-size:7px;letter-spacing:0.26em;text-transform:uppercase;color:var(--pink);opacity:0.65;margin-bottom:0.3rem;display:block}\n.mob-marg-text{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:12px;line-height:1.65;color:rgba(192,65,90,0.7)}\n\n/* ══ QUOTE ══ */\n.proc-quote{background:var(--dark2);padding:8rem 8vw;position:relative}\n.quote-inner{max-width:900px;margin:0 auto;text-align:center;opacity:0}\n.quote-label{font-family:'Jost',sans-serif;font-size:8px;letter-spacing:0.28em;text-transform:uppercase;color:rgba(255,255,255,0.25);margin-bottom:2rem;display:block}\n.quote-text{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:clamp(24px,3.5vw,46px);line-height:1.25;color:#fff;letter-spacing:-0.01em;margin-bottom:1.5rem}\n.quote-attr{font-family:'Jost',sans-serif;font-size:9px;letter-spacing:0.22em;text-transform:uppercase;color:rgba(255,255,255,0.2);display:flex;align-items:center;justify-content:center;gap:1rem}\n.quote-attr::before,.quote-attr::after{content:'';width:28px;height:0.5px;background:currentColor}\n\n/* ══ NUMBERS ══ */\n.proc-numbers{background:var(--cream);padding:8rem 8vw}\n.numbers-head{font-family:'Jost',sans-serif;font-size:8px;letter-spacing:0.28em;text-transform:uppercase;color:rgba(26,25,24,0.3);margin-bottom:3rem;display:flex;align-items:center;gap:1rem}\n.numbers-head::after{content:'';flex:1;height:0.5px;background:rgba(26,25,24,0.08)}\n.numbers-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:0.5px solid rgba(26,25,24,0.08);border-left:0.5px solid rgba(26,25,24,0.08)}\n.num-cell{padding:3rem 2.5rem;border-bottom:0.5px solid rgba(26,25,24,0.08);border-right:0.5px solid rgba(26,25,24,0.08);opacity:0;transform:translateY(10px)}\n.num-big{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:clamp(40px,5vw,70px);color:var(--pink);line-height:1;display:block;margin-bottom:0.8rem}\n.num-label{font-family:'Jost',sans-serif;font-size:8px;letter-spacing:0.2em;text-transform:uppercase;color:rgba(26,25,24,0.35);display:block}\n\n/* ══ HONEST COLUMN ══ */\n.proc-honest{background:var(--cream);padding:0 8vw 8rem}\n.honest-head{border-top:0.5px solid rgba(26,25,24,0.1);padding:4rem 0 3rem;display:flex;justify-content:space-between;align-items:baseline;opacity:0}\n.honest-h2{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:clamp(32px,5vw,68px);color:var(--dark2);letter-spacing:-0.02em;line-height:1}\n.honest-label{font-family:'Jost',sans-serif;font-size:8px;letter-spacing:0.26em;text-transform:uppercase;color:rgba(26,25,24,0.3);align-self:flex-end;padding-bottom:0.5rem}\n.honest-item{border-top:0.5px solid rgba(26,25,24,0.1);opacity:0}\n.honest-btn{width:100%;display:flex;align-items:baseline;justify-content:space-between;gap:3rem;padding:2rem 0;background:none;border:none;cursor:pointer;text-align:left}\n.honest-num{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:clamp(18px,2.5vw,28px);color:var(--pink);flex-shrink:0;line-height:1;width:3rem}\n.honest-q{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:clamp(18px,2.5vw,30px);color:var(--dark2);line-height:1.2;flex:1;transition:color 0.25s}\n.honest-btn:hover .honest-q{color:var(--pink)}\n.honest-icon{width:22px;height:22px;flex-shrink:0;border:0.5px solid rgba(26,25,24,0.18);position:relative;transition:border-color 0.25s,transform 0.35s}\n.honest-icon::before,.honest-icon::after{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(26,25,24,0.4);transition:opacity 0.3s,background 0.25s}\n.honest-icon::before{width:9px;height:0.5px}\n.honest-icon::after{width:0.5px;height:9px}\n.honest-btn[aria-expanded=\"true\"] .honest-icon{transform:rotate(45deg);border-color:var(--pink)}\n.honest-btn[aria-expanded=\"true\"] .honest-icon::before,\n.honest-btn[aria-expanded=\"true\"] .honest-icon::after{background:var(--pink)}\n.honest-body{max-height:0;overflow:hidden;transition:max-height 0.4s cubic-bezier(0.4,0,0.2,1)}\n.honest-body p{font-family:'Jost',sans-serif;font-size:13px;font-weight:300;line-height:2.1;color:rgba(26,25,24,0.55);padding:0 0 2.5rem 4rem}\n\n/* ══ POSTCARD ══ */\n.proc-postcard{background:var(--cream);border-top:0.5px solid rgba(26,25,24,0.1);padding:6rem 8vw 7rem;position:relative;overflow:hidden}\n.postcard-label{font-family:'Jost',sans-serif;font-size:8px;letter-spacing:0.28em;text-transform:uppercase;color:rgba(26,25,24,0.3);margin-bottom:2rem;display:block}\n.postcard-h2{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:clamp(40px,7vw,100px);line-height:0.92;color:var(--dark2);letter-spacing:-0.03em;margin-bottom:2rem}\n.postcard-h2 em{font-style:normal;color:var(--pink)}\n.postcard-contact{font-family:'Jost',sans-serif;font-size:11px;font-weight:300;letter-spacing:0.06em;color:rgba(26,25,24,0.4);margin-bottom:3.5rem;display:flex;align-items:center;gap:0.5rem;flex-wrap:wrap}\n.postcard-contact a{color:var(--pink);letter-spacing:0;border-bottom:0.5px solid rgba(192,65,90,0.3);padding-bottom:1px;transition:border-color 0.2s}\n.postcard-contact a:hover{border-color:var(--pink)}\n.postcard-btns{display:flex;align-items:center;gap:2rem;flex-wrap:wrap}\n.btn-primary{display:inline-flex;align-items:center;gap:0.7rem;background:var(--dark2);color:var(--cream);font-family:'Jost',sans-serif;font-size:9px;font-weight:500;letter-spacing:0.22em;text-transform:uppercase;padding:1.1rem 2.8rem;transition:background 0.3s,gap 0.3s}\n.btn-primary:hover{background:#333;gap:1.1rem}\n.btn-ghost{display:inline-flex;align-items:center;gap:0.7rem;font-family:'Jost',sans-serif;font-size:9px;font-weight:500;letter-spacing:0.22em;text-transform:uppercase;color:rgba(26,25,24,0.4);border-bottom:0.5px solid rgba(26,25,24,0.2);padding-bottom:3px;transition:color 0.3s,gap 0.3s}\n.btn-ghost:hover{color:var(--dark2);gap:1.1rem}\n\n/* ═══ FOOTER BASE ═══ */\n\n/* ═══ FOOTER CSS ═══ */\n/* ═══ FOOTER BASE ═══ */\n.site-footer{\n  background:#0a0906;\n  position:relative;\n}\n\n/* ── CONTACT FORM STRIP ── */\n.footer-form-strip{\n  border-bottom:0.5px solid rgba(201,168,76,0.1);\n  padding:5rem 4rem;\n  background:rgba(255,255,255,0.01);\n}\n.footer-form-wrap{\n  max-width:1000px;\n  margin:0 auto;\n}\n.footer-form-header{\n  margin-bottom:2.5rem;\n}\n.footer-form-eye{\n  font-family:var(--sans);font-size:9px;\n  letter-spacing:0.32em;text-transform:uppercase;\n  color:var(--gold);margin-bottom:0.8rem;\n}\n.footer-form-title{\n  font-family:var(--serif);font-style:italic;font-weight:300;\n  font-size:clamp(20px,2.5vw,32px);\n  color:#fff;line-height:1.3;letter-spacing:-0.01em;\n}\n\n/* Form grid */\n.footer-form-row{\n  display:grid;\n  grid-template-columns:repeat(4,1fr);\n  gap:1rem;\n  margin-bottom:1rem;\n}\n.footer-form-field{\n  display:flex;flex-direction:column;gap:0.4rem;\n}\n.footer-form-field-full{\n  margin-bottom:1.2rem;\n}\n.footer-form-label{\n  font-family:var(--sans);font-size:9px;\n  letter-spacing:0.18em;text-transform:uppercase;\n  color:rgba(255,255,255,0.4);\n}\n.footer-form input,\n.footer-form select,\n.footer-form textarea{\n  background:rgba(255,255,255,0.04);\n  border:0.5px solid rgba(255,255,255,0.1);\n  color:#fff;\n  font-family:var(--sans);font-size:13px;font-weight:300;\n  padding:10px 14px;\n  outline:none;\n  transition:border-color 0.3s,background 0.3s;\n  width:100%;\n  appearance:none;\n  -webkit-appearance:none;\n}\n.footer-form input::placeholder,\n.footer-form textarea::placeholder{\n  color:rgba(255,255,255,0.2);\n}\n.footer-form input:focus,\n.footer-form select:focus,\n.footer-form textarea:focus{\n  border-color:rgba(201,168,76,0.5);\n  background:rgba(255,255,255,0.06);\n}\n.footer-form select{\n  background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='rgba(201,168,76,0.6)'/%3E%3C/svg%3E\");\n  background-repeat:no-repeat;\n  background-position:right 14px center;\n  padding-right:32px;\n  cursor:pointer;\n}\n.footer-form select option{\n  background:#1a1918;color:#fff;\n}\n.footer-form textarea{\n  resize:vertical;min-height:80px;\n}\n\n/* Submit row */\n.footer-form-submit-row{\n  display:flex;align-items:center;\n  justify-content:space-between;\n  gap:1rem;flex-wrap:wrap;\n}\n.footer-form-legal{\n  font-family:var(--sans);font-size:10px;\n  color:rgba(255,255,255,0.2);line-height:1.6;\n}\n.footer-form-legal a{\n  color:rgba(255,255,255,0.35);\n  text-decoration:none;\n}\n.footer-form-btn{\n  display:inline-flex;align-items:center;gap:0.6rem;\n  background:var(--pink);border:none;cursor:pointer;\n  font-family:var(--sans);font-size:10px;\n  font-weight:500;letter-spacing:0.2em;text-transform:uppercase;\n  color:#fff;padding:12px 28px;\n  transition:background 0.25s,gap 0.3s;\n  white-space:nowrap;\n}\n.footer-form-btn:hover{background:var(--pink2);gap:0.9rem}\n.footer-form-btn-arrow{\n  display:inline-block;transition:transform 0.3s;\n}\n.footer-form-btn:hover .footer-form-btn-arrow{transform:translateX(4px)}\n\n/* Success message */\n.footer-form-success{\n  padding:1rem 0;\n  font-family:var(--serif);font-style:italic;\n  font-size:16px;color:var(--gold-l);\n}\n\n/* ── MAIN COLUMNS ── */\n.footer-main{\n  display:grid;\n  grid-template-columns:1.5fr 1fr 1fr 1.2fr;\n  gap:3rem;\n  max-width:1200px;margin:0 auto;\n  padding:5rem 4rem;\n  border-bottom:0.5px solid rgba(201,168,76,0.1);\n}\n\n/* Brand col */\n.footer-logo{\n  display:block;height:40px;width:auto;\n  margin-bottom:1.6rem;\n  opacity:0.85;\n}\n.footer-seo-text{\n  font-family:var(--sans);font-size:11px;\n  font-weight:300;line-height:1.85;\n  color:rgba(255,255,255,0.38);\n  margin-bottom:2rem;\n}\n\n/* Chotusingh */\n.footer-chotu{\n  margin-bottom:1.2rem;\n}\n.footer-chotu-img{\n  display:block;height:100px;width:auto;\n  object-fit:contain;\n  mix-blend-mode:lighten;\n  filter:brightness(1.1) contrast(1.05);\n  margin-bottom:0.4rem;\n}\n.footer-chotu-line{\n  font-family:var(--serif);font-style:italic;font-weight:300;\n  font-size:11px;color:rgba(255,255,255,0.22);\n  line-height:1.5;\n}\n\n/* Nav cols */\n.footer-col{\n  display:flex;flex-direction:column;\n}\n.footer-col-brand{\n  display:flex;\n  flex-direction:column;\n}\n.footer-col-title{\n  font-family:var(--sans);font-size:9px;\n  font-weight:500;letter-spacing:0.28em;text-transform:uppercase;\n  color:var(--gold);\n  margin-bottom:1.4rem;\n  padding-bottom:0.8rem;\n  border-bottom:0.5px solid rgba(201,168,76,0.15);\n}\n.footer-links{\n  list-style:none;\n  display:flex;flex-direction:column;gap:0.65rem;\n}\n.footer-links a{\n  font-family:var(--sans);font-size:12px;font-weight:300;\n  color:rgba(255,255,255,0.42);text-decoration:none;\n  transition:color 0.3s ease, padding-left 0.3s ease;\n  line-height:1.4;display:block;\n}\n.footer-links a:hover{\n  color:rgba(255,255,255,0.85);\n  padding-left:4px;\n}\n\n/* Contact col */\n.footer-col-contact{\n  justify-content:space-between;\n  display:flex;\n  flex-direction:column;\n}\n.footer-col-contact .footer-apps{\n  margin-top:auto;\n}\n.footer-contact-item{margin-bottom:1.1rem}\n.footer-contact-lbl{\n  display:block;\n  font-family:var(--sans);font-size:8px;\n  letter-spacing:0.22em;text-transform:uppercase;\n  color:var(--gold);opacity:0.65;margin-bottom:0.25rem;\n}\n.footer-address{\n  font-family:var(--sans);font-size:11px;font-weight:300;\n  line-height:1.7;color:rgba(255,255,255,0.38);\n  font-style:normal;\n}\n.footer-contact-val{\n  display:block;\n  font-family:var(--sans);font-size:12px;font-weight:300;\n  color:rgba(255,255,255,0.42);text-decoration:none;\n  line-height:1.7;transition:color 0.25s;\n}\na.footer-contact-val:hover{color:rgba(255,255,255,0.8)}\n\n/* Social */\n.footer-social{\n  display:flex;gap:0.6rem;flex-wrap:wrap;\n  margin-top:1.2rem;margin-bottom:1.6rem;\n}\n.footer-social-ico{\n  width:32px;height:32px;\n  border:0.5px solid rgba(255,255,255,0.12);\n  display:flex;align-items:center;justify-content:center;\n  color:rgba(255,255,255,0.4);text-decoration:none;\n  transition:border-color 0.3s,color 0.3s;\n}\n.footer-social-ico:hover{\n  border-color:rgba(201,168,76,0.5);color:var(--gold-l);\n}\n.footer-social-ico svg{width:14px;height:14px}\n.footer-social-wa:hover{\n  border-color:rgba(37,211,102,0.5);color:#25D366;\n}\n\n/* App badges */\n.footer-apps{margin-top:auto}\n.footer-apps-label{\n  font-family:var(--sans);font-size:8px;\n  letter-spacing:0.22em;text-transform:uppercase;\n  color:var(--gold);opacity:0.65;margin-bottom:0.8rem;\n}\n.footer-apps-row{display:flex;flex-direction:column;gap:0.5rem}\n.footer-app-badge{\n  display:block;text-decoration:none;\n  border:0.5px solid rgba(255,255,255,0.15);\n  padding:8px 14px;\n  transition:border-color 0.3s,background 0.3s;\n}\n.footer-app-badge:hover{\n  border-color:rgba(201,168,76,0.4);\n  background:rgba(255,255,255,0.03);\n}\n.footer-app-inner{\n  display:flex;align-items:center;gap:10px;\n}\n.footer-app-icon{\n  font-size:22px;color:#fff;\n  line-height:1;flex-shrink:0;\n}\n.footer-app-text{\n  display:flex;flex-direction:column;gap:1px;\n}\n.footer-app-sub{\n  font-family:var(--sans);font-size:8px;\n  color:rgba(255,255,255,0.45);letter-spacing:0.06em;\n}\n.footer-app-name{\n  font-family:var(--sans);font-size:13px;\n  font-weight:500;color:#fff;letter-spacing:0.02em;\n}\n\n/* Legal strip */\n.footer-legal{\n  background:#070604;\n  padding:1.4rem 4rem;\n}\n.footer-legal-inner{\n  max-width:1200px;margin:0 auto;\n  display:flex;flex-direction:column;\n  align-items:center;gap:0.5rem;text-align:center;\n}\n.footer-legal-links{\n  display:flex;flex-wrap:wrap;align-items:center;\n  justify-content:center;gap:0.5rem;\n}\n.footer-legal-links a,\n.footer-legal-txt{\n  font-family:var(--sans);font-size:10px;\n  color:rgba(255,255,255,0.28);text-decoration:none;\n  transition:color 0.25s;\n}\n.footer-legal-links a:hover{color:rgba(255,255,255,0.6)}\n.footer-sep{color:rgba(255,255,255,0.18);font-size:10px}\n.footer-copyright{\n  font-family:var(--sans);font-size:10px;\n  color:rgba(255,255,255,0.18);line-height:1.6;\n}\n\n/* Mobile */\n@media(max-width:1024px){\n  .footer-form-row{grid-template-columns:1fr 1fr;}\n  .footer-main{grid-template-columns:1fr 1fr;padding:4rem 3rem;}\n  .footer-col-brand{grid-column:1/-1;}\n  .footer-form-strip{padding:4rem 3rem;}\n}\n@media(max-width:640px){\n  .footer-form-row{grid-template-columns:1fr;}\n  .footer-main{grid-template-columns:1fr;padding:3rem 1.5rem;gap:2.5rem;}\n  .footer-form-strip{padding:3rem 1.5rem;}\n  .footer-legal{padding:1.2rem 1.5rem;}\n  .footer-form-submit-row{flex-direction:column;align-items:flex-start;}\n  .footer-form-btn{width:100%;justify-content:center;}\n}\n\n\n\n\n\n/* ── Footer SEO text — hidden from visitors, present for Google ── */\n.footer-seo-hidden{\n  position:absolute !important;\n  width:1px !important;\n  height:1px !important;\n  overflow:hidden !important;\n  clip:rect(0,0,0,0) !important;\n  white-space:nowrap !important;\n  pointer-events:none !important;\n  visibility:hidden !important;\n  opacity:0 !important;\n  display:block !important;\n  font-size:0 !important;\n  line-height:0 !important;\n}\n/* ── Footer brand statement — visible, premium ── */\n.footer-brand-statement{\n  font-family:var(--serif);\n  font-style:italic;\n  font-weight:300;\n  font-size:clamp(14px,1.3vw,17px);\n  line-height:1.7;\n  color:rgba(255,255,255,0.45);\n  margin-bottom:1.8rem;\n}\n\n\n\n\n \n \n \n\n\n\n.back-to-top{\n  position:fixed;\n  bottom:2rem;\n  left:2rem;\n  width:44px;height:44px;\n  border:0.5px solid rgba(201,168,76,0.35);\n  display:flex;align-items:center;justify-content:center;\n  color:rgba(255,255,255,0.5);\n  background:rgba(12,11,10,0.85);\n  backdrop-filter:blur(8px);\n  text-decoration:none;\n  z-index:998;\n  opacity:0;\n  transform:translateY(8px);\n  transition:opacity 0.3s ease,transform 0.3s ease,\n             border-color 0.3s ease,color 0.3s ease;\n  pointer-events:none;\n}\n.back-to-top.visible{\n  opacity:1;\n  transform:translateY(0);\n  pointer-events:auto;\n}\n.back-to-top:hover{\n  border-color:rgba(201,168,76,0.7);\n  color:var(--gold-l);\n}\n.back-to-top svg{\n  width:16px;height:16px;\n}\n@media(max-width:768px){\n  .back-to-top{\n    bottom:5.5rem;\n    left:1rem;\n    width:40px;height:40px;\n  }\n}\n\n\n\n\n\n\n/* ── Compact contact ── */\n.footer-contact-compact{\n  display:flex;flex-direction:column;gap:0.55rem;\n  margin-bottom:1rem;\n}\n.footer-contact-row{\n  font-family:var(--sans);font-size:11px;font-weight:300;\n  color:rgba(255,255,255,0.42);line-height:1.5;\n  display:flex;align-items:baseline;gap:0.5rem;\n  flex-wrap:wrap;\n}\n.footer-contact-row a{\n  color:rgba(255,255,255,0.42);text-decoration:none;\n  transition:color 0.25s;\n}\n.footer-contact-row a:hover{color:rgba(255,255,255,0.8)}\n.fcc-lbl{font-size:10px;flex-shrink:0;opacity:0.6}\n.fcc-sep{opacity:0.35;margin:0 2px}\n\n/* ── App icon buttons ── */\n.footer-apps-row{\n  display:flex;gap:0.8rem;\n  flex-direction:row !important;\n}\n.footer-app-icon-btn{\n  display:flex;align-items:center;justify-content:center;\n  width:40px;height:40px;\n  border:0.5px solid rgba(255,255,255,0.15);\n  color:rgba(255,255,255,0.5);\n  text-decoration:none;\n  transition:border-color 0.3s,color 0.3s;\n}\n.footer-app-icon-btn:hover{\n  border-color:rgba(201,168,76,0.5);\n  color:var(--gold-l);\n}\n.footer-app-icon-btn svg{width:20px;height:20px}\n\n\n\n.footer-threshold{\n  width:100%;height:1px;\n  background:linear-gradient(90deg,\n    transparent,rgba(201,168,76,0.4) 50%,transparent);\n}\n\n.seo-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;pointer-events:none}\n.footer-form-btn-txt{font-family:'Jost',sans-serif;font-size:9px;font-weight:500;letter-spacing:0.22em;text-transform:uppercase}\n.footer-social-wa{display:inline-flex;align-items:center;gap:0.5rem;font-family:'Jost',sans-serif;font-size:11px;font-weight:300;color:rgba(255,255,255,0.5);transition:color 0.2s}\n.footer-social-wa:hover{color:#25D366}\n\n/* ── Focus styles ── */\n:focus-visible{outline:2px solid var(--gold);outline-offset:3px}\nbutton:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:3px}\n.skip-link:focus{left:1rem!important;width:auto!important;height:auto!important}\n\n/* ── Noise grain overlay ── */\nbody::after{\n  content:'';\n  position:fixed;inset:0;\n  pointer-events:none;z-index:9999;\n  opacity:.025;\n  background-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E\");\n  background-repeat:repeat;\n  background-size:128px 128px;\n  mix-blend-mode:overlay;\n}\n\n.wa-float{position:fixed;bottom:2rem;right:2rem;width:56px;height:56px;background:#25D366;border-radius:50%;display:flex;align-items:center;justify-content:center;z-index:9990;box-shadow:0 4px 20px rgba(37,211,102,.4);transition:transform .3s,box-shadow .3s;text-decoration:none;cursor:pointer}\n.wa-float:hover{transform:scale(1.1) translateY(-2px);box-shadow:0 8px 30px rgba(37,211,102,.5)}\n.wa-float svg{width:28px;height:28px;fill:#fff}\n.wa-float::before{content:'';position:absolute;inset:-4px;border-radius:50%;border:2px solid rgba(37,211,102,.4);animation:waPulse 2.5s ease-out infinite}\n@keyframes waPulse{0%{transform:scale(1);opacity:.6}100%{transform:scale(1.5);opacity:0}}\n.wa-tooltip{position:absolute;right:68px;background:#1a1918;color:#fff;font-family:var(--sans,sans-serif);font-size:11px;letter-spacing:.08em;white-space:nowrap;padding:6px 12px;border-radius:2px;opacity:0;transform:translateX(8px);transition:opacity .3s,transform .3s;pointer-events:none}\n.wa-float:hover .wa-tooltip{opacity:1;transform:translateX(0)}\n\n/* ═══════════════════════════════════════════════\n   GLOBAL FEATURES — added to every page\n   ═══════════════════════════════════════════════ */\n\n/* ── Sticky booking pill (mobile only) ── */\n.book-pill{\n  display:none;\n  position:fixed;bottom:1.5rem;left:50%;transform:translateX(-50%);\n  background:var(--pink);color:#fff;\n  font-family:var(--sans);font-size:10px;font-weight:500;\n  letter-spacing:.18em;text-transform:uppercase;\n  padding:.75rem 1.8rem;border-radius:30px;\n  text-decoration:none;white-space:nowrap;\n  box-shadow:0 4px 20px rgba(192,65,90,.4);\n  z-index:9985;\n  animation:pillIn .4s cubic-bezier(.16,1,.3,1);\n  transition:opacity .3s,transform .3s;\n}\n.book-pill:hover{background:var(--pink2,#a8324a);transform:translateX(-50%) translateY(-2px)}\n.book-pill.hidden{opacity:0;pointer-events:none;transform:translateX(-50%) translateY(8px)}\n@keyframes pillIn{from{opacity:0;transform:translateX(-50%) translateY(16px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}\n@media(max-width:768px){.book-pill{display:flex;align-items:center;gap:.5rem}}\n/* Hide pill on the pickup page itself */\nbody.page-pickup .book-pill{display:none!important}\n\n/* ── Seasonal banner ── */\n.seasonal-banner{\n  background:var(--dark2,#1a1918);color:rgba(255,255,255,.75);\n  font-family:var(--sans);font-size:10px;font-weight:400;letter-spacing:.08em;\n  text-align:center;padding:.45rem 3rem;position:relative;z-index:10000;\n  border-bottom:.5px solid rgba(255,255,255,.08);\n}\n.seasonal-banner a{color:var(--gold,#C9A84C);text-decoration:none;margin-left:.5rem;font-weight:500}\n.seasonal-banner a:hover{text-decoration:underline}\n.banner-close{position:absolute;right:1rem;top:50%;transform:translateY(-50%);\n  background:none;border:none;color:rgba(255,255,255,.4);cursor:pointer;\n  font-size:14px;line-height:1;padding:.2rem;transition:color .2s}\n.banner-close:hover{color:#fff}\n.seasonal-banner.hidden{display:none}\n@media(prefers-color-scheme:light){\n  .seasonal-banner{background:var(--dark2,#1a1918)}\n}\n\n/* ── Dark/light toggle in nav ── */\n.theme-toggle{\n  width:32px;height:32px;border-radius:50%;\n  background:none;border:.5px solid rgba(128,128,128,.25);\n  cursor:pointer;display:flex;align-items:center;justify-content:center;\n  transition:border-color .2s,background .2s;flex-shrink:0;\n}\n.theme-toggle:hover{border-color:var(--gold,#C9A84C);background:rgba(201,168,76,.08)}\n.theme-toggle svg{width:14px;height:14px;transition:opacity .2s}\n.theme-toggle .icon-dark{display:block}\n.theme-toggle .icon-light{display:none}\n[data-theme=\"light\"] .theme-toggle .icon-dark{display:none}\n[data-theme=\"light\"] .theme-toggle .icon-light{display:block}\n\n/* ── Google rating badge in footer ── */\n.g-rating-badge{\n  display:inline-flex;align-items:center;gap:.5rem;\n  text-decoration:none;\n  font-family:var(--sans);\n  padding:.5rem .8rem;\n  border-radius:6px;\n  border:.5px solid rgba(255,255,255,.12);\n  background:rgba(255,255,255,.04);\n  transition:border-color .2s,background .2s;\n  margin-bottom:.8rem;\n}\n.g-rating-badge:hover{border-color:rgba(201,168,76,.3);background:rgba(201,168,76,.05)}\n.g-rating-stars{color:#FBBC04;font-size:13px;letter-spacing:.05em;line-height:1}\n.g-rating-num{font-family:var(--sans);font-size:13px;font-weight:500;color:#fff}\n.g-rating-label{font-family:var(--sans);font-size:9px;font-weight:300;\n  color:rgba(255,255,255,.45);letter-spacing:.08em}\n.g-rating-logo{font-family:var(--sans);font-size:9px;font-weight:700;\n  color:#4285F4;letter-spacing:-.02em}\n@media(prefers-color-scheme:light){\n  .g-rating-badge{border-color:rgba(26,25,24,.12);background:#fff}\n  .g-rating-num{color:#1a1918}\n  .g-rating-label{color:rgba(26,25,24,.45)}\n}\n\n/* ── WhatsApp share button (blogs/guides) ── */\n.wa-share{\n  display:inline-flex;align-items:center;gap:.5rem;\n  background:#25D366;color:#fff;\n  font-family:var(--sans);font-size:9px;font-weight:500;\n  letter-spacing:.15em;text-transform:uppercase;\n  padding:.65rem 1.2rem;border-radius:6px;text-decoration:none;\n  transition:background .2s;\n}\n.wa-share:hover{background:#1da851}\n.wa-share svg{width:14px;height:14px;flex-shrink:0}\n\n/* ── Reading time indicator ── */\n.reading-time{\n  font-family:var(--sans);font-size:10px;font-weight:300;\n  color:var(--txt3,rgba(255,255,255,.4));letter-spacing:.08em;\n  display:inline-flex;align-items:center;gap:.35rem;\n}\n.reading-time svg{width:11px;height:11px;opacity:.6}\n\n/* ── Was this helpful ── */\n.helpful-block{\n  display:flex;align-items:center;gap:1rem;flex-wrap:wrap;\n  padding:1.2rem 0;margin-top:2rem;\n  border-top:1px solid rgba(128,128,128,.12);\n}\n.helpful-label{font-family:var(--sans);font-size:12px;font-weight:300;\n  color:var(--txt3,rgba(255,255,255,.4))}\n.helpful-btn{\n  font-family:var(--sans);font-size:10px;font-weight:400;letter-spacing:.1em;\n  text-transform:uppercase;padding:.4rem 1rem;border-radius:4px;cursor:pointer;\n  border:.5px solid rgba(128,128,128,.2);background:none;\n  color:var(--txt3,rgba(255,255,255,.4));transition:all .2s;\n}\n.helpful-btn:hover,.helpful-btn.active{\n  border-color:var(--pink);color:var(--pink);background:rgba(192,65,90,.06)}\n.helpful-thanks{font-family:var(--sans);font-size:11px;color:var(--pink);display:none}\n.helpful-thanks.show{display:block}\n\n/* ── Page reading progress (long guides) ── */\n.read-progress{\n  position:fixed;top:0;left:0;height:2px;\n  background:var(--gold,#C9A84C);z-index:9999;width:0;\n  transition:width .1s linear;\n}\n\n@media print{\n  .wa-float,.wa-float-btn,.bookPill,.seasonal-banner,.scroll-bar,.read-progress,\n  .mob-sidebar-toggle,.sidebar-cta-btn,.loc-ctas,.loc-cta-primary,.loc-cta-wa,\n  nav#nav,.nav-cta,.global-pill{display:none!important}\n  body{font-size:11pt;color:#000;background:#fff}\n  a[href]::after{content:\" (\" attr(href) \")\";font-size:9pt;color:#666}\n  a[href^=\"#\"]::after,a[href^=\"tel:\"]::after,a[href^=\"https://wa.me\"]::after{content:\"\"}\n  h1,h2,h3{page-break-after:avoid}\n  .chapter,.loc-section{page-break-inside:avoid}\n}\n\n\n/* theme: dark default */\n:root{--bg:#1a1918;--bg2:#201e1d;--surf:rgba(255,255,255,.05);--surf-b:rgba(255,255,255,.1);--txt:#fff;--txt2:rgba(255,255,255,.82);--txt3:rgba(255,255,255,.55);}\n@media(prefers-color-scheme:light){\n  :root{--bg:#F5F0E8;--bg2:#EDE7D9;--surf:#fff;--surf-b:rgba(26,25,24,.1);--txt:#1a1918;--txt2:#3d3a36;--txt3:#7a7168;}\n}\n\n\n[data-reveal]{transition:opacity .8s ease,transform .8s cubic-bezier(.16,1,.3,1)}\n\n\n.scroll-hint-wrap{position:absolute;bottom:1.5rem;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:.4rem;opacity:.28;pointer-events:none;z-index:2}\n.scroll-hint-wrap span{font-family:var(--sans,'Jost',sans-serif);font-size:8px;letter-spacing:.28em;text-transform:uppercase;color:#fff}\n.scroll-hint-line{width:1px;height:28px;background:linear-gradient(180deg,transparent,rgba(255,255,255,.7));animation:shPulse 2.2s ease-in-out infinite}\n@keyframes shPulse{0%,100%{opacity:.3;transform:scaleY(.7)}50%{opacity:.9;transform:scaleY(1)}}\n\n\n/* ── Custom cursor ── */\n@media(hover:hover) and (pointer:fine){\n  *{cursor:none!important}\n  .cursor-dot{\n    position:fixed;top:0;left:0;z-index:99999;\n    pointer-events:none;\n    width:8px;height:8px;\n    background:var(--gold,#C9A84C);\n    border-radius:50%;\n    transform:translate(-50%,-50%);\n    transition:width .2s,height .2s,background .2s,opacity .3s;\n    mix-blend-mode:difference;\n  }\n  .cursor-ring{\n    position:fixed;top:0;left:0;z-index:99998;\n    pointer-events:none;\n    width:32px;height:32px;\n    border:1px solid rgba(201,168,76,.4);\n    border-radius:50%;\n    transform:translate(-50%,-50%);\n    transition:width .35s cubic-bezier(.16,1,.3,1),\n               height .35s cubic-bezier(.16,1,.3,1),\n               border-color .2s,opacity .3s;\n  }\n  body.cursor-hover .cursor-dot{width:6px;height:6px;background:#fff}\n  body.cursor-hover .cursor-ring{width:44px;height:44px;border-color:rgba(201,168,76,.6)}\n  body.cursor-link .cursor-dot{width:12px;height:12px;background:var(--pink,#C0415A)}\n  body.cursor-link .cursor-ring{width:48px;height:48px;border-color:rgba(192,65,90,.5)}\n  body.cursor-hidden .cursor-dot,\n  body.cursor-hidden .cursor-ring{opacity:0}\n}\n\n/* ── Intro / loading screen ── */\n.intro-screen{\n  position:fixed;inset:0;z-index:99997;\n  background:var(--dark2,#1a1918);\n  display:flex;align-items:center;justify-content:center;\n  flex-direction:column;gap:1.2rem;\n  transition:opacity .6s ease,transform .6s cubic-bezier(.16,1,.3,1);\n}\n.intro-screen.hidden{\n  opacity:0;pointer-events:none;\n  transform:translateY(-8px);\n}\n.intro-monogram{\n  font-family:'Cormorant Garamond',Georgia,serif;\n  font-style:italic;font-weight:300;\n  font-size:clamp(48px,8vw,96px);\n  color:var(--gold,#C9A84C);\n  letter-spacing:-.04em;\n  opacity:0;\n  animation:introFadeIn .8s cubic-bezier(.16,1,.3,1) .1s forwards;\n}\n.intro-wordmark{\n  font-family:'Jost','Helvetica Neue',Arial,sans-serif;\n  font-size:9px;font-weight:300;\n  letter-spacing:.35em;text-transform:uppercase;\n  color:rgba(255,255,255,.25);\n  opacity:0;\n  animation:introFadeIn .6s ease .5s forwards;\n}\n.intro-line{\n  width:0;height:.5px;background:var(--gold,#C9A84C);opacity:.3;\n  animation:introLine .8s cubic-bezier(.16,1,.3,1) .3s forwards;\n}\n@keyframes introFadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}\n@keyframes introLine{from{width:0}to{width:80px}}\n\n\n.tsl-crumbs{max-width:1200px;margin:0 auto;padding:14px 8vw 0;position:relative;z-index:5}\n.tsl-crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;font-family:var(--sans,'Jost',sans-serif);font-size:11px;letter-spacing:.06em}\n.tsl-crumbs li{display:flex;align-items:center;gap:6px;color:inherit;opacity:.55}\n.tsl-crumbs li:not(:last-child)::after{content:'›';opacity:.6}\n.tsl-crumbs a{color:inherit;text-decoration:none;transition:opacity .2s}\n.tsl-crumbs a:hover{opacity:1;text-decoration:underline}\n.tsl-crumbs li:last-child{opacity:.85}\n@media(max-width:600px){.tsl-crumbs{padding:12px 6vw 0}}\n\n\n\n<!-- Back to Top -->\n\n\n\n\n\n\n\n\n\n.seo-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;pointer-events:none}\n\n/* ══ RESPONSIVE ══ */\n@media(min-width:901px){.proc-mobile{display:none}.proc-pin-outer{display:block}}\n@media(max-width:900px){\n  .proc-pin-outer{display:none}.proc-mobile{display:block}\n  .proc-breath{padding:6rem 6vw}\n  .numbers-grid{grid-template-columns:repeat(2,1fr)}\n  .proc-postcard,.proc-honest,.proc-numbers{padding:5rem 6vw}\n  .honest-head{padding:3rem 0 2rem}\n  .index-grid{grid-template-columns:repeat(2,1fr)}\n  .proc-index{padding:0 6vw 5rem}\n  .honest-body p{padding:0 0 2rem 0}\n}\n@media(max-width:480px){\n  .index-grid{grid-template-columns:1fr}\n  .index-item{border-right:none}\n  .numbers-grid{grid-template-columns:1fr}\n  .hero-h1{font-size:clamp(52px,15vw,80px)}\n  .hero-foot{grid-template-columns:1fr}\n  .proc-hero{padding:0 6vw}\n}\n\n\n\n/* breadcrumb contrast */\n.tsl-crumbs a,.tsl-crumbs li{color:rgba(255,255,255,.75)!important}\n.tsl-crumbs a:hover{color:var(--gold,#C9A84C)!important}\n.tsl-crumbs li[aria-current=\"page\"]{color:rgba(255,255,255,.95)!important}\n[data-theme=\"light\"] .tsl-crumbs a,\n[data-theme=\"light\"] .tsl-crumbs li,\n.s-cream .tsl-crumbs a,\n.s-cream .tsl-crumbs li{\n  color:rgba(26,25,24,.75)!important;\n}\n[data-theme=\"light\"] .tsl-crumbs a:hover,\n.s-cream .tsl-crumbs a:hover{color:var(--pink,#C0415A)!important}\n@media (prefers-color-scheme: light){\n  /* crumbs sit on cream body above dark heroes */\n  body > .tsl-crumbs a,\n  body > .tsl-crumbs li,\n  main > .tsl-crumbs a,\n  .scroll-bar + .tsl-crumbs a,\n  .scroll-bar + .tsl-crumbs li,\n  #introScreen + .tsl-crumbs a,\n  div > .tsl-crumbs a,\n  div > .tsl-crumbs li{\n    color:rgba(26,25,24,.75)!important;\n  }\n}\n\n/* ═══ Force dark-default shell ═══ */\n:root{\n  --off:#1a1918 !important;\n  --pink-pale:#1a1918 !important;\n}\nbody{\n  background:var(--bg,var(--off,#1a1918))!important;\n  color:var(--txt,#fff)!important;\n}\n/* When a page hardcodes cream body vars, keep body dark unless OS wants light */\n@media (prefers-color-scheme: light){\n  :root{\n    --off:#FAFAF8 !important;\n    --pink-pale:#fdf0f2 !important;\n  }\n  body{\n    background:var(--cream,var(--off,#F5F0E8))!important;\n    color:var(--dark2,var(--ink,#1a1918))!important;\n  }\n}\n\n\n\n\n\n\n/* ═══ Universal dark-default content readability v3 ═══ */\n.faq-a{color:rgba(255,255,255,.78)!important}\n.faq-q{color:rgba(255,255,255,.92)!important}\n.faq-item.open .faq-q,.faq-q:hover{color:var(--gold,#C9A84C)!important}\n\n.hub-faq,.hub-faq-inner{background:#1a1918!important;color:#fff!important}\n.hub-faq-h2{color:#fff!important}\n.hub-faq-h2 em{color:var(--gold,#C9A84C)!important}\n.hub-faq-ey{color:var(--gold,#C9A84C)!important}\n\n/* cream hub sections */\n.hub-grid-sec.cream .hub-sec-h2{color:var(--ink,#1a1918)!important}\n.hub-grid-sec.cream .hub-sec-h2 em{color:var(--gold,#C9A84C)!important}\n.hub-grid-sec.cream .hub-sec-sub{color:rgba(26,25,24,.65)!important}\n.hub-grid-sec.cream .hub-sec-ey{color:var(--gold,#C9A84C)!important}\n/* dark/off hub sections */\n.hub-grid-sec.off .hub-sec-h2,.hub-grid-sec.off .hub-sec-h2,\n.off .hub-sec-h2{color:#fff!important}\n.hub-grid-sec.off .hub-sec-h2 em{color:var(--gold,#C9A84C)!important}\n.hub-grid-sec.off .hub-sec-sub,.off .hub-sec-sub{color:rgba(255,255,255,.65)!important}\n.hub-grid-sec.off .hub-sec-ey{color:var(--gold,#C9A84C)!important}\n\n/* Cream FAQ bands */\n.aeo-faq .faq-q,.bsc-faq .faq-q,.dcm-faq .faq-q,.dpc-faq .faq-q,.g-faq .faq-q,\n.sp-faq .faq-q,.sscg-faq .faq-q,.wcg-faq .faq-q,.wcs-faq .faq-q,\n.guide-faq .faq-q,.csr-faq .faq-q,.ex-faq .faq-q{\n  color:rgba(26,25,24,.92)!important;\n}\n.aeo-faq .faq-a,.bsc-faq .faq-a,.dcm-faq .faq-a,.dpc-faq .faq-a,.g-faq .faq-a,\n.sp-faq .faq-a,.sscg-faq .faq-a,.wcg-faq .faq-a,.wcs-faq .faq-a,\n.guide-faq .faq-a,.csr-faq .faq-a,.ex-faq .faq-a{\n  color:rgba(26,25,24,.7)!important;\n}\n.aeo-faq .faq-item.open .faq-q,.aeo-faq .faq-q:hover,\n.bsc-faq .faq-item.open .faq-q,.bsc-faq .faq-q:hover,\n.g-faq .faq-item.open .faq-q,.g-faq .faq-q:hover,\n.dcm-faq .faq-item.open .faq-q,.dpc-faq .faq-item.open .faq-q,\n.sp-faq .faq-item.open .faq-q,.sscg-faq .faq-item.open .faq-q,\n.wcg-faq .faq-item.open .faq-q,.wcs-faq .faq-item.open .faq-q,\n.guide-faq .faq-item.open .faq-q,.csr-faq .faq-item.open .faq-q,\n.ex-faq .faq-item.open .faq-q{color:var(--gold,#C9A84C)!important}\n\n/* Dark FAQ shells */\n.dvw-faq .faq-q,.lk-faq .faq-q,.to-faq .faq-q,.hub-faq .faq-q{color:rgba(255,255,255,.92)!important}\n.dvw-faq .faq-a,.lk-faq .faq-a,.to-faq .faq-a,.hub-faq .faq-a{color:rgba(255,255,255,.78)!important}\n.dvw-faq .faq-item.open .faq-q,.lk-faq .faq-item.open .faq-q,.to-faq .faq-item.open .faq-q,\n.hub-faq .faq-item.open .faq-q,.hub-faq .faq-q:hover{color:var(--gold,#C9A84C)!important}\n\n/* AEO */\n.aeo-h2,.aeo-h3,.aeo-title{color:#fff!important}\n.aeo-p,.aeo-lead,.aeo-li,.aeo-body,.aeo-text{color:rgba(255,255,255,.78)!important}\n.aeo-section td,.aeo-section th,.aeo-body td,.aeo-body th,\n.care-cell,.yes-cell,.exp-cell,.warn-cell{\n  color:rgba(255,255,255,.8)!important;border-color:rgba(255,255,255,.12)!important;\n}\n\n/* Guide cards on dark */\n.guide-card,.gc-card{\n  background:rgba(255,255,255,.05)!important;\n  border-color:rgba(255,255,255,.12)!important;\n  color:rgba(255,255,255,.85)!important;\n}\n.gc-title,.gc-tag,.gc-meta,.gc-desc{color:rgba(255,255,255,.8)!important}\n.gc-title{color:#fff!important}\n.gc-tag{color:var(--gold,#C9A84C)!important}\n\n/* Guides index grid */\n.gd-grid{background:transparent!important;border-color:rgba(255,255,255,.1)!important}\n.gd-grid a,.gd-grid a:visited{\n  background:rgba(255,255,255,.05)!important;\n  color:rgba(255,255,255,.85)!important;\n}\n.gd-grid a:hover{background:rgba(255,255,255,.08)!important}\n.gd-grid .t{color:#fff!important}\n.gd-grid .d{color:rgba(255,255,255,.6)!important}\n.gd-label{color:var(--gold,#C9A84C)!important}\n\n/* Callouts + inline links on dark */\n.box-title,.garment-fabric,.sym-pro,.lw-method-note,.lw-fab-note,\n.garment-note-text{color:rgba(255,255,255,.85)!important}\n.box-title a,.sym-pro a,.garment-note-text a,.warn-box a,.fact-box a,\n.clause-body a,.aeo-p a,.aeo-li a{\n  color:var(--gold,#C9A84C)!important;\n}\n\n/* Site map */\n.sm-grid a,.sm-grid a:visited{color:rgba(255,255,255,.85)!important}\n.sm-grid a:hover{color:var(--gold,#C9A84C)!important}\n.sm-sec h2,.sm-hero h1{color:#fff!important}\n.sm-sec .note,.sm-sub,.sm-sec h2 .cnt{color:rgba(255,255,255,.55)!important}\n\n.to-section-h2,.lk-h2{color:#fff!important}\n\n\n/* cream hub guide cards = dark text on light cards */\n.hub-grid-sec.cream .guide-card,\n.cream .guide-card{\n  background:#fff!important;\n  border-color:rgba(26,25,24,.08)!important;\n  color:rgba(26,25,24,.85)!important;\n}\n.hub-grid-sec.cream .gc-title,\n.cream .gc-title{color:#1a1918!important}\n.hub-grid-sec.cream .gc-desc,\n.cream .gc-desc{color:rgba(26,25,24,.55)!important}\n.hub-grid-sec.cream .gc-tag,\n.cream .gc-tag{color:var(--gold,#C9A84C)!important}\n.hub-grid-sec.cream .gc-meta,\n.cream .gc-meta{color:rgba(26,25,24,.45)!important}\n/* off/dark hub guide cards stay light-on-dark */\n.hub-grid-sec.off .guide-card,\n.off .guide-card{\n  background:rgba(255,255,255,.05)!important;\n  color:rgba(255,255,255,.85)!important;\n}\n.hub-grid-sec.off .gc-title,.off .gc-title{color:#fff!important}\n.hub-grid-sec.off .gc-desc,.off .gc-desc{color:rgba(255,255,255,.7)!important}\n/* pink CTA links on dark — brighten */\n.pro-trigger-text a,.sym-pro a,.garment-note-text a{\n  color:#E8A0AD!important;\n  text-decoration:underline;\n}\n",
  "scriptJs": "\nfunction acceptCookies(){\n  try {\n    localStorage.setItem('tsl_cookies','accepted');\n    document.querySelectorAll('.cookie-bar').forEach(function(bar){ bar.classList.remove('show'); bar.style.display='none'; });\n  } catch(e){}\n}\nwindow.addEventListener('DOMContentLoaded', function(){\n  try {\n    if(!localStorage.getItem('tsl_cookies')){\n      setTimeout(function(){\n        var bar = document.getElementById('cookieBar')\n        if(bar) bar.classList.add('show')\n      }, 2000)\n    }\n  } catch(e){}\n})\n\n;\n\nwindow.addEventListener('load', function(){\n  setTimeout(function(){\n    var pl = document.getElementById('preloader')\n    if(pl) pl.classList.add('hidden')\n  }, 1200)\n})\n\n;\n\nfunction acceptCookies(){\n  try {\n    localStorage.setItem('tsl_cookies','accepted')\n    var bar = document.getElementById('cookieBar')\n    if(bar) bar.classList.remove('show')\n  } catch(e){}\n}\nwindow.addEventListener('DOMContentLoaded', function(){\n  try {\n    if(!localStorage.getItem('tsl_cookies')){\n      setTimeout(function(){\n        var bar = document.getElementById('cookieBar')\n        if(bar) bar.classList.add('show')\n      }, 2000)\n    }\n  } catch(e){}\n})\n\n;\n\n(function() {\n  gsap.registerPlugin(ScrollTrigger)\n  var TOTAL = 12\n\n  // Step data\n  var STEPS = [\n  {num:1,title:\"Booking\",ogilvy:\"Your care begins with a single message.\",copy:\"Reach us by phone, WhatsApp, app or website — whichever suits you. Every booking is personally confirmed by our team within the hour during working hours.\",marginalia:\"If you book outside our hours, we call you first thing the next working day.\",gradient:\"linear-gradient(160deg,#1c1510 0%,#251a0e 60%,#1a1210 100%)\",textCol:\"#ffffff\",subCol:\"rgba(255,255,255,0.42)\",isDark:true},\n  {num:2,title:\"Collection\",ogilvy:\"We come to you. On your schedule.\",copy:\"You choose the slot. Our team arrives at your door at the agreed time, with our branded collection bag and everything needed to receive your order correctly.\",marginalia:\"We scale the team to the order — a single garment or an entire wardrobe.\",gradient:\"linear-gradient(160deg,#120d0a 0%,#1e1510 60%,#160f0a 100%)\",textCol:\"#ffffff\",subCol:\"rgba(255,255,255,0.42)\",isDark:true},\n  {num:3,title:\"Intake\",ogilvy:\"Every garment has a file.\",copy:\"Before any garment moves to cleaning, it receives its own printed taffeta tag — order number, garment type, fabric, colour, brand, special instructions, any declared issue.\",marginalia:\"Nothing is processed without a complete record.\",gradient:\"linear-gradient(160deg,#0e0c0a 0%,#1a1612 60%,#120e0b 100%)\",textCol:\"#ffffff\",subCol:\"rgba(255,255,255,0.42)\",isDark:true},\n  {num:4,title:\"Fabric Assessment\",ogilvy:\"The fabric tells us everything we need to know.\",copy:\"Every garment is assessed by the same trained team — care label, physical composition, colour stability, brand, and previous treatments on record. The cleaning method is decided at this stage.\",marginalia:\"Assessment and method are one decision, not two.\",gradient:\"linear-gradient(160deg,#e8e2d5 0%,#ddd6c6 60%,#d2cab8 100%)\",textCol:\"#1a1918\",subCol:\"rgba(26,25,24,0.52)\",isDark:false},\n  {num:5,title:\"Stain Identification\",ogilvy:\"Every stain is different.\",copy:\"Our team examines every garment visually under examination light — identifying each mark before deciding whether pre-treatment is needed at all.\",marginalia:\"We only treat stains that require it. If a stain is unlikely to resolve, we tell you before we proceed.\",gradient:\"linear-gradient(160deg,#ece6d8 0%,#e2dac8 60%,#d6ceba 100%)\",textCol:\"#1a1918\",subCol:\"rgba(26,25,24,0.52)\",isDark:false},\n  {num:6,title:\"Your Approval\",ogilvy:\"If there is a concern, we ask first.\",copy:\"Whenever our assessment finds a pre-existing issue that our process may not fully resolve, we stop. A WhatsApp message goes to you immediately. If there is no response, we call.\",marginalia:\"If we cannot reach you within 48 hours, the garment is returned uncleaned. The step most laundries skip.\",gradient:\"linear-gradient(160deg,#ede7db 0%,#e3dbd0 60%,#d8d0c4 100%)\",textCol:\"#1a1918\",subCol:\"rgba(26,25,24,0.52)\",isDark:false},\n  {num:7,title:\"Cleaning\",ogilvy:\"The method chosen for the fabric. Not convenience.\",copy:\"We operate three cleaning methods at our facility — Hydrocarbon dry cleaning, Perchloroethylene dry cleaning and wet cleaning. Garments are sorted by colour and fabric type before loading.\",marginalia:\"The method was decided at assessment. Here, it is simply executed with precision.\",gradient:\"linear-gradient(160deg,#1a0a0d 0%,#220d10 60%,#180b0e 100%)\",textCol:\"#ffffff\",subCol:\"rgba(255,255,255,0.42)\",isDark:true},\n  {num:8,title:\"Stain Treatment\",ogilvy:\"What remains is treated by hand.\",copy:\"Specialist stain treatment is performed by a dedicated trained stain removal specialist — before the main cleaning cycle as pre-treatment, and again after if needed.\",marginalia:\"The equipment depends on the stain: spotting board with vacuum and steam gun, enzyme treatment, solvent spotting.\",gradient:\"linear-gradient(160deg,#150808 0%,#1c0b0e 60%,#130709 100%)\",textCol:\"#ffffff\",subCol:\"rgba(255,255,255,0.42)\",isDark:true},\n  {num:9,title:\"Inspection\",ogilvy:\"We check before we press.\",copy:\"A dedicated quality control team member — separate from whoever cleaned the garment — checks every piece under strong light before it moves to finishing.\",marginalia:\"Stain resolution, colour uniformity, fabric integrity, care label compliance, finish quality. On failure: re-clean immediately.\",gradient:\"linear-gradient(160deg,#120709 0%,#190a0d 60%,#110608 100%)\",textCol:\"#ffffff\",subCol:\"rgba(255,255,255,0.42)\",isDark:true},\n  {num:10,title:\"Steam Pressing\",ogilvy:\"A perfectly pressed garment is a statement.\",copy:\"Every garment is pressed on our industrial steam press — calibrated to a specific protocol per garment type. A sherwani is pressed differently from a formal shirt, which is pressed differently from a trouser.\",marginalia:\"After pressing, each garment rests through a cooling period so the press sets properly before packaging.\",gradient:\"linear-gradient(160deg,#f0ebe2 0%,#e6dfcf 60%,#dcd6c5 100%)\",textCol:\"#1a1918\",subCol:\"rgba(26,25,24,0.52)\",isDark:false},\n  {num:11,title:\"Final Check\",ogilvy:\"Two pairs of eyes. Every single time.\",copy:\"At a dedicated final check station, a team member different from whoever pressed the garment checks it one last time against its intake record.\",marginalia:\"What we collected is what we return. In better condition.\",gradient:\"linear-gradient(160deg,#ece6dc 0%,#e4ddd2 60%,#dbd4c8 100%)\",textCol:\"#1a1918\",subCol:\"rgba(26,25,24,0.52)\",isDark:false},\n  {num:12,title:\"Delivery\",ogilvy:\"Back at your door. Exactly as promised.\",copy:\"When your order is ready, you receive an SMS. Delivery is made in your chosen slot — Same Day, Next Day, Express or Standard.\",marginalia:\"The Swiss Standard does not end at the facility. It ends at your door.\",gradient:\"linear-gradient(160deg,#e8e2d8 0%,#e0d9d0 60%,#d8d0c8 100%)\",textCol:\"#1a1918\",subCol:\"rgba(26,25,24,0.52)\",isDark:false},\n]\n\n  // Map step num to group\n  var GROUP_STEPS = {A:[1,2,3,4,5,6], B:[7,8,9,10], C:[11,12]}\n\n  // Scroll bar + thread\n  var bar = document.getElementById('scrollBar')\n  var thread = document.getElementById('scrollThread')\n  window.addEventListener('scroll', function() {\n    var pct = window.scrollY / (document.documentElement.scrollHeight - window.innerHeight) * 100\n    if(bar) bar.style.width = pct + '%'\n    if(thread) thread.style.height = pct + '%'\n  }, {passive:true})\n\n  // Hero entrance\n  var heroTl = gsap.timeline({delay:0.2})\n  heroTl\n    .to('#ledgerHeader',     {opacity:1,y:0,duration:0.7,ease:'power2.out'}, 0)\n    .to('.hero-h1-line span',{y:0,duration:1,ease:'power3.out',stagger:0.1}, 0.2)\n    .to('#heroFoot',         {opacity:1,duration:0.8,ease:'power2.out'}, 0.7)\n\n  // Index items\n  gsap.to('.index-item',{opacity:1,y:0,stagger:0.04,duration:0.6,ease:'power2.out',\n    scrollTrigger:{trigger:'#procIndex',start:'top 75%',once:true}})\n\n  // Index click\n  document.querySelectorAll('.index-item').forEach(function(item) {\n    item.addEventListener('click', function() {\n      var n = parseInt(item.getAttribute('data-goto'))\n      var gid = n<=6?'A':n<=10?'B':'C'\n      var outer = document.getElementById('procPinOuter'+gid)\n      if(outer && window.innerWidth>900) {\n        var stepsInGroup = GROUP_STEPS[gid]\n        var idxInGroup = stepsInGroup.indexOf(n)\n        var SCROLL_PER_STEP = window.innerHeight * 0.85\n        var target = outer.getBoundingClientRect().top + window.scrollY + (idxInGroup * SCROLL_PER_STEP)\n        window.scrollTo({top:target,behavior:'smooth'})\n      }\n    })\n  })\n\n  // ── Generic pin section builder ──\n  function initPin(gid, stepNums) {\n    var pinEl    = document.getElementById('procPin'+gid)\n    var pinLeft  = document.getElementById('pinLeft'+gid)\n    var pinRight = document.getElementById('pinRight'+gid)\n    var pinNum   = document.getElementById('pinNum'+gid)\n    var pinSMark = document.getElementById('pinSMark'+gid)\n    var pinLabel = document.getElementById('pinLabel'+gid)\n    var pinTitle = document.getElementById('pinTitle'+gid)\n    var pinOgilvy= document.getElementById('pinOgilvy'+gid)\n    var pinCopy  = document.getElementById('pinCopy'+gid)\n    var pinMarg  = document.getElementById('pinMarg'+gid)\n    var pinMargTx= document.getElementById('pinMargTx'+gid)\n    var pinProg  = document.getElementById('pinProgress'+gid)\n    var pinHint  = document.getElementById('pinHint'+gid)\n    if(!pinEl) return\n\n    var curIdx = 0\n    var localTotal = stepNums.length\n\n    function setStep(idx, dir) {\n      if(idx<0||idx>=localTotal) return\n      var s = STEPS[stepNums[idx]-1]\n      var onLight = !s.isDark\n      var tc = s.textCol\n      var sc = s.subCol\n\n      // BG\n      pinEl.style.transition='background 0.65s ease'\n      pinEl.style.background = s.isDark?'var(--dark2)':'var(--cream)'\n\n      // Border colours\n      var bc = onLight?'rgba(26,25,24,0.07)':'rgba(255,255,255,0.06)'\n      if(pinLeft)  pinLeft.style.borderRight  = '0.5px solid '+bc\n      if(pinRight) pinRight.style.borderLeft  = '0.5px solid '+bc\n\n      // Image crossfade\n      var prev = pinEl.querySelector('.pin-img-slot.active')\n      var next = document.getElementById('pimg'+s.num)\n      if(prev&&prev!==next){\n        prev.classList.add('exit-left'); prev.classList.remove('active')\n        setTimeout(function(){prev.classList.remove('exit-left')},700)\n      }\n      if(next) next.classList.add('active')\n\n      var FADE=200\n      if(pinNum)    pinNum.classList.add('num-exit')\n      if(pinOgilvy) pinOgilvy.classList.add('text-exit')\n      if(pinCopy)   pinCopy.classList.add('text-exit')\n      if(pinTitle)  pinTitle.classList.add('text-exit')\n      if(pinMarg)   pinMarg.classList.remove('visible')\n\n      setTimeout(function(){\n        if(pinNum){pinNum.textContent=String(s.num).padStart(2,'0');pinNum.style.webkitTextStroke=s.isDark?'1px rgba(201,168,76,0.3)':'1px rgba(26,25,24,0.14)';pinNum.classList.remove('num-exit');pinNum.classList.add('num-enter')}\n        if(pinSMark) pinSMark.textContent='§'+String(s.num).padStart(2,'0')+' of 12'\n        if(pinLabel) pinLabel.textContent='Step '+String(s.num).padStart(2,'0')\n        if(pinTitle){pinTitle.textContent=s.title;pinTitle.style.color=tc;pinTitle.classList.remove('text-exit');pinTitle.classList.add('text-enter')}\n        if(pinOgilvy){pinOgilvy.innerHTML=s.ogilvy;pinOgilvy.style.color=tc;pinOgilvy.classList.remove('text-exit');pinOgilvy.classList.add('text-enter')}\n        if(pinCopy){pinCopy.textContent=s.copy;pinCopy.style.color=sc;pinCopy.classList.remove('text-exit');pinCopy.classList.add('text-enter')}\n        if(pinMargTx) pinMargTx.textContent=s.marginalia\n        if(pinHint)   pinHint.style.color=onLight?'rgba(26,25,24,0.18)':'rgba(255,255,255,0.18)'\n        requestAnimationFrame(function(){requestAnimationFrame(function(){\n          if(pinNum)    pinNum.classList.remove('num-enter')\n          if(pinOgilvy) pinOgilvy.classList.remove('text-enter')\n          if(pinCopy)   pinCopy.classList.remove('text-enter')\n          if(pinTitle)  pinTitle.classList.remove('text-enter')\n          if(pinMarg)   setTimeout(function(){pinMarg.classList.add('visible')},200)\n        });})\n      },FADE)\n      curIdx=idx\n    }\n\n    // Init first step\n    setStep(0,1)\n\n    // Scroll pin\n    var SCROLL_PER_STEP = window.innerHeight * 0.85\n    var PIN_HEIGHT = SCROLL_PER_STEP * localTotal\n    var pinTop = 0\n    var lastIdx = -1\n    var outer = document.getElementById('procPinOuter'+gid)\n\n    var spacer = document.createElement('div')\n    spacer.style.cssText='height:'+PIN_HEIGHT+'px;pointer-events:none'\n    spacer.id='pinSpacer'+gid\n    pinEl.parentNode.insertBefore(spacer, pinEl.nextSibling)\n\n    function onScroll() {\n      var scrolled = window.scrollY - pinTop\n      if(scrolled<0){\n        pinEl.style.position='relative';pinEl.style.top='0';pinEl.style.width='';pinEl.style.left='';pinEl.style.zIndex=''\n      }else if(scrolled>=PIN_HEIGHT-window.innerHeight){\n        pinEl.style.position='absolute';pinEl.style.top=(PIN_HEIGHT-window.innerHeight)+'px';pinEl.style.width='100%';pinEl.style.left='0';pinEl.style.zIndex='1'\n      }else{\n        pinEl.style.position='fixed';pinEl.style.top='0';pinEl.style.left='0';pinEl.style.width='100%';pinEl.style.zIndex='1'\n      }\n      var rawProg=Math.max(0,Math.min(1,scrolled/(PIN_HEIGHT-window.innerHeight)))\n      var idx=Math.min(localTotal-1,Math.floor(rawProg*localTotal))\n      var stepFrac=(rawProg*localTotal)%1\n      var pct=((idx+stepFrac)/localTotal*100).toFixed(1)\n      if(pinProg) pinProg.style.width=pct+'%'\n      if(pinNum&&stepFrac>0.75) pinNum.style.opacity=(1-(stepFrac-0.75)/0.25*0.07).toString()\n      else if(pinNum) pinNum.style.opacity='1'\n      var activeImg=pinEl.querySelector('.pin-img-slot.active img')\n      if(activeImg) activeImg.style.transform='translateY(-'+(stepFrac*22).toFixed(1)+'px)'\n      if(idx!==lastIdx){\n        var prevImg=pinEl.querySelector('.pin-img-slot.active img')\n        if(prevImg) prevImg.style.transform='translateY(0)'\n        setStep(idx,idx>lastIdx?1:-1);lastIdx=idx\n      }\n    }\n\n    function calcTop(){\n      if(outer) pinTop=outer.getBoundingClientRect().top+window.scrollY\n    }\n\n    window.addEventListener('scroll',onScroll,{passive:true})\n    window.addEventListener('load',function(){calcTop();onScroll()})\n    window.addEventListener('resize',function(){\n      calcTop()\n      SCROLL_PER_STEP=window.innerHeight*0.85\n      PIN_HEIGHT=SCROLL_PER_STEP*localTotal\n      spacer.style.height=PIN_HEIGHT+'px'\n      onScroll()\n    },{passive:true})\n    calcTop();onScroll()\n  }\n\n  // Init all three pin sections\n  initPin('A',[1,2,3,4,5,6])\n  initPin('B',[7,8,9,10])\n  initPin('C',[11,12])\n\n  // Breath chapter\n  ScrollTrigger.create({trigger:'#procBreath',start:'top 75%',once:true,\n    onEnter:function(){gsap.to('#procBreath',{opacity:1,duration:1,ease:'power2.out'})}\n  })\n\n  // Quote\n  ScrollTrigger.create({trigger:'#procQuote',start:'top 70%',once:true,\n    onEnter:function(){gsap.to('#quoteInner',{opacity:1,duration:1,ease:'power2.out'})}\n  })\n\n  // Numbers\n  ScrollTrigger.create({trigger:'#procNumbers',start:'top 70%',once:true,\n    onEnter:function(){gsap.to('.num-cell',{opacity:1,y:0,stagger:0.08,duration:0.7,ease:'power2.out'})}\n  })\n\n  // Honest column\n  ScrollTrigger.create({trigger:'#procHonest',start:'top 75%',once:true,\n    onEnter:function(){\n      gsap.to('#honestHead',{opacity:1,duration:0.8,ease:'power2.out'})\n      gsap.to('.honest-item',{opacity:1,stagger:0.08,duration:0.6,ease:'power2.out',delay:0.3})\n    }\n  })\n\n  // Honest accordion\n  document.querySelectorAll('.honest-btn').forEach(function(btn){\n    btn.addEventListener('click',function(){\n      var id=btn.getAttribute('aria-controls')\n      var body=document.getElementById(id)\n      var open=btn.getAttribute('aria-expanded')==='true'\n      document.querySelectorAll('.honest-btn').forEach(function(b){\n        b.setAttribute('aria-expanded','false')\n        var bd=document.getElementById(b.getAttribute('aria-controls'))\n        if(bd) bd.style.maxHeight='0'\n      })\n      if(!open&&body){btn.setAttribute('aria-expanded','true');body.style.maxHeight=body.scrollHeight+'px'}\n    })\n    btn.addEventListener('keydown',function(e){if(e.key==='Enter'||e.key===' '){e.preventDefault();btn.click()}})\n  })\n\n  // ══ MOBILE ══\n  var mobHeader=document.getElementById('mobHeader')\n  var mobFooter=document.getElementById('mobFooter')\n  var mobNum=document.getElementById('mobNum')\n  var mobSMark=document.getElementById('mobSectionMark')\n  var mobLabel=document.getElementById('mobLabel')\n  var mobTitle=document.getElementById('mobTitle')\n  var mobOgilvy=document.getElementById('mobOgilvy')\n  var mobCopy=document.getElementById('mobCopy')\n  var mobMargTx=document.getElementById('mobMargTx')\n  var mobProg=document.getElementById('mobProgress')\n  var mobDots=document.getElementById('mobDots')\n  var mobPrev=document.getElementById('mobPrev')\n  var mobNext=document.getElementById('mobNext')\n  var mobArea=document.getElementById('mobImgArea')\n  var curMob=0\n\n  function setMobStep(idx,dir){\n    if(idx<0||idx>=TOTAL) return\n    var s=STEPS[idx]\n    var bg=s.isDark?'var(--dark2)':'var(--cream)'\n    if(mobHeader) mobHeader.style.background=bg\n    if(mobFooter) mobFooter.style.background=bg\n    var prev=document.querySelector('.mob-img-slot.active')\n    var next=document.getElementById('mimg'+s.num)\n    if(prev&&prev!==next){prev.classList.add('exit-left');prev.classList.remove('active');setTimeout(function(){prev.classList.remove('exit-left')},650)}\n    if(next){next.classList.remove('enter-right','enter-left','active');next.classList.add(dir>=0?'enter-right':'enter-left');requestAnimationFrame(function(){requestAnimationFrame(function(){next.classList.remove('enter-right','enter-left');next.classList.add('active')});})}\n    var els=[mobNum,mobSMark,mobLabel,mobTitle,mobOgilvy,mobCopy]\n    els.forEach(function(el){if(el){el.style.transition='opacity 0.2s ease';el.style.opacity='0'}}  )\n    setTimeout(function(){\n      if(mobNum) mobNum.textContent=String(s.num).padStart(2,'0')\n      if(mobSMark) mobSMark.textContent='§'+String(s.num).padStart(2,'0')+' of 12'\n      if(mobLabel) mobLabel.textContent='Step '+String(s.num).padStart(2,'0')\n      if(mobTitle){mobTitle.textContent=s.title;mobTitle.style.color=s.textCol}\n      if(mobOgilvy){mobOgilvy.innerHTML=s.ogilvy;mobOgilvy.style.color=s.textCol}\n      if(mobCopy){mobCopy.textContent=s.copy;mobCopy.style.color=s.subCol}\n      if(mobMargTx) mobMargTx.textContent=s.marginalia\n      if(mobProg) mobProg.style.width=((idx+1)/TOTAL*100)+'%'\n      if(mobDots) mobDots.querySelectorAll('.mob-dot').forEach(function(d,i){d.classList.toggle('active',i===idx)})\n      if(mobPrev) mobPrev.style.opacity=idx===0?'0.3':'1'\n      if(mobNext) mobNext.style.opacity=idx===TOTAL-1?'0.3':'1'\n      requestAnimationFrame(function(){els.forEach(function(el){if(el) el.style.opacity='1'})})\n    },200)\n    curMob=idx\n  }\n\n  if(mobArea){\n    setMobStep(0,1)\n    if(mobPrev) mobPrev.addEventListener('click',function(){setMobStep(curMob-1,-1)})\n    if(mobNext) mobNext.addEventListener('click',function(){setMobStep(curMob+1,1)})\n    if(mobDots) mobDots.querySelectorAll('.mob-dot').forEach(function(d,i){\n      d.addEventListener('click',function(){setMobStep(i,i>curMob?1:-1)})\n    })\n    var tx=0,ty=0\n    mobArea.addEventListener('touchstart',function(e){tx=e.touches[0].clientX;ty=e.touches[0].clientY},{passive:true})\n    mobArea.addEventListener('touchend',function(e){\n      var dx=e.changedTouches[0].clientX-tx,dy=e.changedTouches[0].clientY-ty\n      if(Math.abs(dx)>Math.abs(dy)&&Math.abs(dx)>40){if(dx<0)setMobStep(curMob+1,1);else setMobStep(curMob-1,-1)}\n    },{passive:true})\n  }\n\n})()\n\n;\n\n/* ── Global features JS ── */\n(function(){\n  /* Seasonal banner */\n  var banner=document.getElementById('seasonalBanner');\n  var bannerClose=document.getElementById('bannerClose');\n  if(banner && bannerClose){\n    var dismissed=sessionStorage.getItem('bannerDismissed');\n    if(dismissed) banner.classList.add('hidden');\n    bannerClose.addEventListener('click',function(){\n      banner.classList.add('hidden');\n      sessionStorage.setItem('bannerDismissed','1');\n    });\n  }\n\n  /* Sticky booking pill — show after 5s, hide when near footer */\n  var pill=document.getElementById('bookPill');\n  if(pill){\n    var pillTimer=setTimeout(function(){\n      pill.classList.remove('hidden');\n    },5000);\n    /* Hide pill when footer is visible */\n    var footer=document.querySelector('footer');\n    if(footer){\n      var pillObs=new IntersectionObserver(function(entries){\n        entries.forEach(function(e){\n          pill.classList.toggle('hidden',e.isIntersecting);\n        });\n      },{threshold:0.1});\n      pillObs.observe(footer);\n    }\n  }\n\n  /* Dark/light theme toggle */\n  var toggle=document.getElementById('themeToggle');\n  if(toggle){\n    var stored=localStorage.getItem('theme');\n    if(stored) document.documentElement.setAttribute('data-theme',stored);\n    toggle.addEventListener('click',function(){\n      var current=document.documentElement.getAttribute('data-theme');\n      var next=current==='light'?'dark':'light';\n      document.documentElement.setAttribute('data-theme',next);\n      localStorage.setItem('theme',next);\n    });\n  }\n\n  /* Reading progress bar */\n  var prog=document.getElementById('readProgress');\n  if(prog){\n    window.addEventListener('scroll',function(){\n      var h=document.documentElement;\n      var pct=(h.scrollTop||document.body.scrollTop)/(h.scrollHeight-h.clientHeight)*100;\n      prog.style.width=Math.min(100,pct)+'%';\n    },{passive:true});\n  }\n\n  /* Was this helpful */\n  document.querySelectorAll('.helpful-btn').forEach(function(btn){\n    btn.addEventListener('click',function(){\n      var block=btn.closest('.helpful-block');\n      var thanks=block && block.querySelector('.helpful-thanks');\n      if(thanks){thanks.classList.add('show');}\n      if(btn.dataset.helpful==='no'){\n        var wa=document.createElement('a');\n        wa.href='https://wa.me/919836233354?text=I+had+a+question+about+your+guide';\n        wa.target='_blank';wa.rel='noopener';\n        wa.style.cssText='font-family:var(--sans);font-size:11px;color:#25D366;margin-left:.5rem';\n        wa.textContent='Chat with us →';\n        if(thanks) thanks.appendChild(wa);\n      }\n      document.querySelectorAll('.helpful-btn').forEach(function(b){b.classList.remove('active')});\n      btn.classList.add('active');\n    });\n  });\n\n})();\n\n;\n\nif(window.Lenis){var _lenis=new window.Lenis({duration:1.2,smoothWheel:true});(function _raf(t){_lenis.raf(t);requestAnimationFrame(_raf)})(0);}\n\n;\n\n(function(){var els=document.querySelectorAll('[data-reveal]');if(!els.length)return;var obs=new IntersectionObserver(function(evts){evts.forEach(function(e){if(!e.isIntersecting)return;e.target.style.opacity='1';e.target.style.transform='translateY(0)';obs.unobserve(e.target);});},{threshold:0.12});requestAnimationFrame(function(){els.forEach(function(el){el.style.opacity='0';el.style.transform='translateY(16px)';el.style.transition='opacity .8s ease,transform .8s cubic-bezier(.16,1,.3,1)';obs.observe(el);});});})();\n\n;\n\n(function(){\n  document.querySelectorAll('[data-count]').forEach(function(el){\n    var triggered=false;\n    var obs=new IntersectionObserver(function(entries){\n      if(!entries[0].isIntersecting||triggered)return;\n      triggered=true;\n      var end=parseFloat(el.dataset.count);\n      var dec=parseInt(el.dataset.dec||'0');\n      var prefix=el.dataset.prefix||'';\n      var suffix=el.dataset.suffix||'';\n      var dur=parseInt(el.dataset.dur||'1200');\n      var start=null;\n      function step(ts){\n        if(!start)start=ts;\n        var p=Math.min((ts-start)/dur,1);\n        var ease=1-Math.pow(1-p,4);\n        var val=end*ease;\n        el.textContent=prefix+(dec===0?Math.round(val).toLocaleString('en-IN'):val.toFixed(dec))+suffix;\n        if(p<1)requestAnimationFrame(step);\n        else el.textContent=prefix+(dec===0?end.toLocaleString('en-IN'):parseFloat(end).toFixed(dec))+suffix;\n      }\n      requestAnimationFrame(step);\n    },{threshold:.5});\n    obs.observe(el);\n  });\n})();\n\n;\n\n(function(){\n'use strict';\n\n/* ── Intro screen — runs once per session ── */\nvar SESSION_KEY = 'tsl_intro_shown';\nvar introEl = document.getElementById('introScreen');\nif(introEl){\n  if(sessionStorage.getItem(SESSION_KEY)){\n    introEl.style.display = 'none';\n  } else {\n    setTimeout(function(){\n      introEl.classList.add('hidden');\n      setTimeout(function(){\n        introEl.style.display = 'none';\n        sessionStorage.setItem(SESSION_KEY,'1');\n      }, 700);\n    }, 1400);\n  }\n}\n\n/* ── Custom cursor — desktop only ── */\nif(window.matchMedia('(hover:hover) and (pointer:fine)').matches){\n  var dot  = document.createElement('div'); dot.className  = 'cursor-dot';\n  var ring = document.createElement('div'); ring.className = 'cursor-ring';\n  document.body.appendChild(dot);\n  document.body.appendChild(ring);\n\n  var mx=0,my=0,rx=0,ry=0;\n  document.addEventListener('mousemove',function(e){\n    mx=e.clientX; my=e.clientY;\n    dot.style.left  = mx+'px'; dot.style.top  = my+'px';\n  },{passive:true});\n\n  /* Ring follows with spring lag */\n  (function lerp(){\n    rx+=(mx-rx)*.12; ry+=(my-ry)*.12;\n    ring.style.left=rx+'px'; ring.style.top=ry+'px';\n    requestAnimationFrame(lerp);\n  })();\n\n  /* Hover states */\n  document.addEventListener('mouseover',function(e){\n    var t=e.target;\n    var isLink=t.closest('a,button,[role=\"button\"],[tabindex]');\n    var isText=t.closest('p,h1,h2,h3,h4,li,span');\n    document.body.classList.toggle('cursor-link',!!isLink);\n    document.body.classList.toggle('cursor-hover',!!isText && !isLink);\n  },{passive:true});\n\n  document.addEventListener('mouseleave',function(){\n    document.body.classList.add('cursor-hidden');\n  },{passive:true});\n  document.addEventListener('mouseenter',function(){\n    document.body.classList.remove('cursor-hidden');\n  },{passive:true});\n}\n\n/* ── Page transition fade ── */\nvar style=document.createElement('style');\nstyle.textContent=[\n  '.page-transition-overlay{',\n  'position:fixed;inset:0;z-index:99996;',\n  'background:var(--dark2,#1a1918);',\n  'opacity:0;pointer-events:none;',\n  'transition:opacity .35s ease;}',\n  '.page-transition-overlay.active{opacity:1;pointer-events:all}'\n].join('');\ndocument.head.appendChild(style);\n\nvar overlay=document.createElement('div');\noverlay.className='page-transition-overlay';\ndocument.body.appendChild(overlay);\n\n/* Fade out on click, fade in on load */\ndocument.addEventListener('click',function(e){\n  var a=e.target.closest('a');\n  if(!a||!a.href||a.target==='_blank'||a.href.startsWith('tel:')||\n     a.href.startsWith('mailto:')||a.href.startsWith('https://wa.me')||\n     a.href.includes('#')||e.metaKey||e.ctrlKey)return;\n  var dest=a.href;\n  if(new URL(dest).host!==location.host)return;\n  e.preventDefault();\n  overlay.classList.add('active');\n  setTimeout(function(){location.href=dest;},320);\n});\n\n/* Fade in on arrival */\noverlay.classList.add('active');\nrequestAnimationFrame(function(){\n  requestAnimationFrame(function(){\n    overlay.classList.remove('active');\n  });\n});\n\n})();\n\n;\ndocument.addEventListener('DOMContentLoaded',function(){var o={};document.querySelectorAll('[data-tsl-orig]').forEach(function(e){o[e.getAttribute('data-tsl-orig')]=e.src;});document.querySelectorAll('[data-tsl-dup]').forEach(function(e){var s=o[e.getAttribute('data-tsl-dup')];if(s)e.src=s;});});",
  "bodyHtml": "<div id=\"introScreen\" class=\"intro-screen\" role=\"status\" aria-label=\"Loading The Swiss Laundry\">\n  <p class=\"intro-monogram\" aria-hidden=\"true\">TSL</p>\n  <div class=\"intro-line\" aria-hidden=\"true\"></div>\n  <p class=\"intro-wordmark\" aria-hidden=\"true\">The Swiss Laundry</p>\n</div>\n<div class=\"seasonal-banner\" id=\"seasonalBanner\" role=\"banner\" aria-label=\"Free pickup offer\">\n  🧺 Want a home pickup? Complimentary pickup on invoices above ₹1,000.\n  <a href=\"/pickup\">Book Now →</a>\n  <button class=\"banner-close\" id=\"bannerClose\" aria-label=\"Close banner\">✕</button>\n</div>\n\n<a href=\"#mainContent\" class=\"skip-link\" style=\"position:absolute;left:-999px;top:auto;width:1px;height:1px;overflow:hidden;z-index:999;background:var(--gold);color:var(--dark2);padding:.5rem 1rem;font-family:var(--sans);font-size:12px;font-weight:500;letter-spacing:.1em\">Skip to main content</a>\n\n<div class=\"scroll-bar\" id=\"scrollBar\"></div>\n<div class=\"scroll-thread\" aria-hidden=\"true\"><div class=\"scroll-thread-fill\" id=\"scrollThread\"></div></div>\n<p class=\"seo-hidden\">Professional dry cleaning and laundry in Kolkata. 12-step garment care. Hydrocarbon dry cleaning, Perc dry cleaning, wet cleaning, stain removal, steam pressing. Doorstep pickup delivery across Kolkata. The Swiss Laundry — Exclusive Dry Cleaners since 2013.</p>\n\n\n<nav class=\"tsl-crumbs\" aria-label=\"Breadcrumb\"><ol><li><a href=\"/\">Home</a></li><li aria-current=\"page\">Our Process</li></ol></nav>\n\n\n<!-- HERO -->\n<section class=\"proc-hero\" id=\"procHero\">\n  <div class=\"ledger-header\" id=\"ledgerHeader\">\n    <p class=\"ledger-vol\">Volume XII &nbsp;·&nbsp; Folio 1 &nbsp;·&nbsp; Kolkata &nbsp;·&nbsp; Established 2013</p>\n    <p class=\"ledger-name\">The Intake Ledger — The Swiss Standard, since 2013</p>\n  </div>\n  <h1 class=\"hero-h1\">\n    <span class=\"hero-h1-line\"><span><em>Twelve</em> steps,</span></span>\n    <span class=\"hero-h1-line\"><span>no exceptions,</span></span>\n    <span class=\"hero-h1-line\"><span>just extraordinary care.</span></span>\n  </h1>\n  <div class=\"hero-foot\" id=\"heroFoot\">\n    <p class=\"hero-desc\">Most laundries clean, press, and return. We do twelve things, in the same order, every day, since two thousand and thirteen. No exceptions. Just extraordinary care.</p>\n    <a href=\"#procIndex\" class=\"hero-read\">Read the Ledger</a>\n  </div>\n</section>\n\n<!-- INDEX -->\n<section class=\"proc-index\" id=\"procIndex\">\n  <div class=\"index-head\">\n    <span class=\"index-head-label\">The Index</span>\n    <span class=\"index-head-label\">All Twelve, In Order</span>\n  </div>\n  <div class=\"index-grid\">    <div class=\"index-item\" data-goto=\"1\">\n      <span class=\"index-num\">§01</span>\n      <span class=\"index-title\">Booking</span>\n      <span class=\"index-mode set\">Set in Type</span>\n    </div>\n    <div class=\"index-item\" data-goto=\"2\">\n      <span class=\"index-num\">§02</span>\n      <span class=\"index-title\">Collection</span>\n      <span class=\"index-mode set\">Set in Type</span>\n    </div>\n    <div class=\"index-item\" data-goto=\"3\">\n      <span class=\"index-num\">§03</span>\n      <span class=\"index-title\">Intake</span>\n      <span class=\"index-mode set\">Set in Type</span>\n    </div>\n    <div class=\"index-item\" data-goto=\"4\">\n      <span class=\"index-num\">§04</span>\n      <span class=\"index-title\">Fabric Assessment</span>\n      <span class=\"index-mode set\">Set in Type</span>\n    </div>\n    <div class=\"index-item\" data-goto=\"5\">\n      <span class=\"index-num\">§05</span>\n      <span class=\"index-title\">Stain Identification</span>\n      <span class=\"index-mode set\">Set in Type</span>\n    </div>\n    <div class=\"index-item\" data-goto=\"6\">\n      <span class=\"index-num\">§06</span>\n      <span class=\"index-title\">Your Approval</span>\n      <span class=\"index-mode set\">Set in Type</span>\n    </div>\n    <div class=\"index-item\" data-goto=\"7\">\n      <span class=\"index-num\">§07</span>\n      <span class=\"index-title\">Cleaning</span>\n      <span class=\"index-mode filmed\">Filmed</span>\n    </div>\n    <div class=\"index-item\" data-goto=\"8\">\n      <span class=\"index-num\">§08</span>\n      <span class=\"index-title\">Stain Treatment</span>\n      <span class=\"index-mode filmed\">Filmed</span>\n    </div>\n    <div class=\"index-item\" data-goto=\"9\">\n      <span class=\"index-num\">§09</span>\n      <span class=\"index-title\">Inspection</span>\n      <span class=\"index-mode filmed\">Filmed</span>\n    </div>\n    <div class=\"index-item\" data-goto=\"10\">\n      <span class=\"index-num\">§10</span>\n      <span class=\"index-title\">Steam Pressing</span>\n      <span class=\"index-mode filmed\">Filmed</span>\n    </div>\n    <div class=\"index-item\" data-goto=\"11\">\n      <span class=\"index-num\">§11</span>\n      <span class=\"index-title\">Final Check</span>\n      <span class=\"index-mode set\">Set in Type</span>\n    </div>\n    <div class=\"index-item\" data-goto=\"12\">\n      <span class=\"index-num\">§12</span>\n      <span class=\"index-title\">Delivery</span>\n      <span class=\"index-mode set\">Set in Type</span>\n    </div>\n</div>\n</section>\n\n<div class=\"step-ticker\" aria-hidden=\"true\"><div class=\"ticker-track\">\n  <span class=\"ticker-item\">Booking</span>\n  <span class=\"ticker-item\">Collection</span>\n  <span class=\"ticker-item\">Intake</span>\n  <span class=\"ticker-item\">Fabric Assessment</span>\n  <span class=\"ticker-item\">Stain Identification</span>\n  <span class=\"ticker-item\">Your Approval</span>\n  <span class=\"ticker-item\">Cleaning</span>\n  <span class=\"ticker-item\">Stain Treatment</span>\n  <span class=\"ticker-item\">Inspection</span>\n  <span class=\"ticker-item\">Steam Pressing</span>\n  <span class=\"ticker-item\">Final Check</span>\n  <span class=\"ticker-item\">Delivery</span>\n  <span class=\"ticker-item\">Booking</span>\n  <span class=\"ticker-item\">Collection</span>\n  <span class=\"ticker-item\">Intake</span>\n  <span class=\"ticker-item\">Fabric Assessment</span>\n  <span class=\"ticker-item\">Stain Identification</span>\n  <span class=\"ticker-item\">Your Approval</span>\n  <span class=\"ticker-item\">Cleaning</span>\n  <span class=\"ticker-item\">Stain Treatment</span>\n  <span class=\"ticker-item\">Inspection</span>\n  <span class=\"ticker-item\">Steam Pressing</span>\n  <span class=\"ticker-item\">Final Check</span>\n  <span class=\"ticker-item\">Delivery</span>\n</div></div>\n\n\n<!-- PIN A: Steps 1-6 (Ledger phase) -->\n\n<!-- ══ PIN A: Steps 01—06 ══ -->\n<div class=\"proc-pin-outer\" id=\"procPinOuterA\" style=\"position:relative\">\n<div class=\"proc-pin\" id=\"procPinA\" data-pingroup=\"A\" style=\"background:var(--cream)\">\n  <div class=\"pin-layout\">\n\n    <!-- Left -->\n    <div class=\"pin-left\" id=\"pinLeftA\" style=\"border-right:0.5px solid rgba(255,255,255,0.06)\">\n      \n      <span class=\"pin-section-mark\" id=\"pinSMarkA\" style=\"color:var(--gold)\">§01 of 12</span>\n      <div class=\"pin-step-num\" id=\"pinNumA\" style=\"-webkit-text-stroke:1px rgba(201,168,76,0.3)\">01</div>\n      <p class=\"pin-step-label\" id=\"pinLabelA\" style=\"color:var(--gold)\">Step 01</p>\n      <p class=\"pin-step-title\" id=\"pinTitleA\" style=\"color:#ffffff\"></p>\n      <div class=\"pin-progress\"><div class=\"pin-progress-fill\" id=\"pinProgressA\"></div></div>\n    </div>\n\n    <!-- Centre -->\n    <div class=\"pin-centre\" id=\"pinCentreA\">\n      <div class=\"pin-img-slot active\" id=\"pimg1\" data-step=\"1\">\n        <img src=\"/images/extracted/4b67d770aa2fc3d6.jpg\" data-tsl-orig=\"1\" alt=\"Booking app confirmation — The Swiss Laundry Kolkata\" loading=\"eager\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" fetchpriority=\"high\" decoding=\"async\">\n      </div>\n      <div class=\"pin-img-slot\" id=\"pimg2\" data-step=\"2\">\n        <img src=\"/images/extracted/f5d70e343bac5560.jpg\" data-tsl-orig=\"2\" alt=\"Branded pickup bag — The Swiss Laundry Kolkata\" loading=\"lazy\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" decoding=\"async\">\n      </div>\n      <div class=\"pin-img-slot\" id=\"pimg3\" data-step=\"3\">\n        <img src=\"/images/extracted/62654618e55220de.jpg\" data-tsl-orig=\"3\" alt=\"Garment intake tagging — The Swiss Laundry Kolkata\" loading=\"lazy\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" decoding=\"async\">\n      </div>\n      <div class=\"pin-img-slot\" id=\"pimg4\" data-step=\"4\">\n        <img src=\"/images/extracted/29994270ebaa62fd.jpg\" data-tsl-orig=\"4\" alt=\"Fabric assessment — The Swiss Laundry Kolkata\" loading=\"lazy\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" decoding=\"async\">\n      </div>\n      <div class=\"pin-img-slot\" id=\"pimg5\" data-step=\"5\">\n        <img src=\"/images/extracted/ba694f5f7146de8a.jpg\" data-tsl-orig=\"5\" alt=\"Stain identification — The Swiss Laundry Kolkata\" loading=\"lazy\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" decoding=\"async\">\n      </div>\n      <div class=\"pin-img-slot\" id=\"pimg6\" data-step=\"6\">\n        <img src=\"/images/extracted/f8848abe8ec6ea87.jpg\" data-tsl-orig=\"6\" alt=\"WhatsApp approval Zegna shirt — The Swiss Laundry Kolkata\" loading=\"lazy\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" decoding=\"async\">\n      </div>\n      <div class=\"img-corner tl\" aria-hidden=\"true\"></div>\n      <div class=\"img-corner br\" aria-hidden=\"true\"></div>\n    </div>\n\n    <!-- Right -->\n    <div class=\"pin-right\" id=\"pinRightA\" style=\"border-left:0.5px solid rgba(255,255,255,0.06)\">\n      <div class=\"pin-ogilvy\" id=\"pinOgilvyA\" style=\"color:#ffffff\"></div>\n      <p class=\"pin-copy\" id=\"pinCopyA\" style=\"color:rgba(255,255,255,0.42)\"></p>\n      <div class=\"pin-marginalia\" id=\"pinMargA\">\n        <span class=\"pin-marg-label\">Marginalia</span>\n        <p class=\"pin-marg-text\" id=\"pinMargTxA\"></p>\n      </div>\n      <p class=\"pin-scroll-hint\" id=\"pinHintA\" aria-hidden=\"true\" style=\"color:rgba(255,255,255,0.18)\">Scroll</p>\n    </div>\n\n  </div>\n</div>\n</div>\n\n<!-- BREATH CHAPTER -->\n<section class=\"proc-breath\" id=\"procBreath\">\n  <span class=\"breath-ornament\" aria-hidden=\"true\">❦ &nbsp; A PAUSE BETWEEN STEPS &nbsp; ❦</span>\n  <span class=\"breath-label\">Steps 01—06 complete</span>\n  <h2 class=\"breath-h2\">Some garments wait.<br>We wait with them.</h2>\n  <p class=\"breath-sub\">From here, Steps 07—10 are live from the workshop floor.</p>\n</section>\n\n<!-- PIN B: Steps 7-10 (Workshop phase) -->\n\n<!-- ══ PIN B: Steps 07—10 ══ -->\n<div class=\"proc-pin-outer\" id=\"procPinOuterB\" style=\"position:relative\">\n<div class=\"proc-pin\" id=\"procPinB\" data-pingroup=\"B\" style=\"background:var(--dark2)\">\n  <div class=\"pin-layout\">\n\n    <!-- Left -->\n    <div class=\"pin-left\" id=\"pinLeftB\" style=\"border-right:0.5px solid rgba(255,255,255,0.06)\">\n      <div class=\"ws-rec\" style=\"margin-bottom:1.5rem\"><div class=\"ws-rec-dot\"></div><div class=\"ws-rec-dot\" style=\"animation-delay:0.3s\"></div>REC &nbsp;·&nbsp; Workshop Floor</div>\n      <span class=\"pin-section-mark\" id=\"pinSMarkB\" style=\"color:var(--gold)\">§07 of 12</span>\n      <div class=\"pin-step-num\" id=\"pinNumB\" style=\"-webkit-text-stroke:1px rgba(201,168,76,0.3)\">07</div>\n      <p class=\"pin-step-label\" id=\"pinLabelB\" style=\"color:var(--gold)\">Step 07</p>\n      <p class=\"pin-step-title\" id=\"pinTitleB\" style=\"color:#ffffff\"></p>\n      <div class=\"pin-progress\"><div class=\"pin-progress-fill\" id=\"pinProgressB\"></div></div>\n    </div>\n\n    <!-- Centre -->\n    <div class=\"pin-centre\" id=\"pinCentreB\">\n      <div class=\"pin-img-slot active\" id=\"pimg7\" data-step=\"7\">\n        <img src=\"/images/extracted/9358b28ae0857470.jpg\" data-tsl-orig=\"7\" alt=\"Professional cleaning machine — The Swiss Laundry Kolkata\" loading=\"eager\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" fetchpriority=\"high\" decoding=\"async\">\n      </div>\n      <div class=\"pin-img-slot\" id=\"pimg8\" data-step=\"8\">\n        <img src=\"/images/extracted/231f661ac9eb39d5.jpg\" data-tsl-orig=\"8\" alt=\"Stain treatment spotting board — The Swiss Laundry Kolkata\" loading=\"lazy\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" decoding=\"async\">\n      </div>\n      <div class=\"pin-img-slot\" id=\"pimg9\" data-step=\"9\">\n        <img src=\"/images/extracted/4c482cb14e432e8b.jpg\" data-tsl-orig=\"9\" alt=\"Quality inspection — The Swiss Laundry Kolkata\" loading=\"lazy\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" decoding=\"async\">\n      </div>\n      <div class=\"pin-img-slot\" id=\"pimg10\" data-step=\"10\">\n        <img src=\"/images/extracted/d30495a878e837b6.jpg\" data-tsl-orig=\"10\" alt=\"Industrial steam press trouser — The Swiss Laundry Kolkata\" loading=\"lazy\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" decoding=\"async\">\n      </div>\n      <div class=\"img-corner tl\" aria-hidden=\"true\"></div>\n      <div class=\"img-corner br\" aria-hidden=\"true\"></div>\n    </div>\n\n    <!-- Right -->\n    <div class=\"pin-right\" id=\"pinRightB\" style=\"border-left:0.5px solid rgba(255,255,255,0.06)\">\n      <div class=\"pin-ogilvy\" id=\"pinOgilvyB\" style=\"color:#ffffff\"></div>\n      <p class=\"pin-copy\" id=\"pinCopyB\" style=\"color:rgba(255,255,255,0.42)\"></p>\n      <div class=\"pin-marginalia\" id=\"pinMargB\">\n        <span class=\"pin-marg-label\">Marginalia</span>\n        <p class=\"pin-marg-text\" id=\"pinMargTxB\"></p>\n      </div>\n      <p class=\"pin-scroll-hint\" id=\"pinHintB\" aria-hidden=\"true\" style=\"color:rgba(255,255,255,0.18)\">Scroll</p>\n    </div>\n\n  </div>\n</div>\n</div>\n\n\n<!-- PIN C: Steps 11-12 (Closing ledger) -->\n\n<!-- ══ PIN C: Steps 11—12 ══ -->\n<div class=\"proc-pin-outer\" id=\"procPinOuterC\" style=\"position:relative\">\n<div class=\"proc-pin\" id=\"procPinC\" data-pingroup=\"C\" style=\"background:var(--cream)\">\n  <div class=\"pin-layout\">\n\n    <!-- Left -->\n    <div class=\"pin-left\" id=\"pinLeftC\" style=\"border-right:0.5px solid rgba(26,25,24,0.07)\">\n      \n      <span class=\"pin-section-mark\" id=\"pinSMarkC\" style=\"color:var(--gold)\">§11 of 12</span>\n      <div class=\"pin-step-num\" id=\"pinNumC\" style=\"-webkit-text-stroke:1px rgba(26,25,24,0.14)\">11</div>\n      <p class=\"pin-step-label\" id=\"pinLabelC\" style=\"color:var(--gold)\">Step 11</p>\n      <p class=\"pin-step-title\" id=\"pinTitleC\" style=\"color:#1a1918\"></p>\n      <div class=\"pin-progress\"><div class=\"pin-progress-fill\" id=\"pinProgressC\"></div></div>\n    </div>\n\n    <!-- Centre -->\n    <div class=\"pin-centre\" id=\"pinCentreC\">\n      <div class=\"pin-img-slot active\" id=\"pimg11\" data-step=\"11\">\n        <img src=\"/images/extracted/163e8f5f4ed048f4.jpg\" data-tsl-orig=\"11\" alt=\"Final check packaged garments — The Swiss Laundry Kolkata\" loading=\"eager\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" fetchpriority=\"high\" decoding=\"async\">\n      </div>\n      <div class=\"pin-img-slot\" id=\"pimg12\" data-step=\"12\">\n        <img src=\"/images/extracted/f6c36f091572948f.jpg\" data-tsl-orig=\"12\" alt=\"The Swiss Laundry gentleman — The Swiss Laundry Kolkata\" loading=\"lazy\" style=\"width:100%;height:100%;object-fit:contain;background:#1a1918\" decoding=\"async\">\n      </div>\n      <div class=\"img-corner tl\" aria-hidden=\"true\"></div>\n      <div class=\"img-corner br\" aria-hidden=\"true\"></div>\n    </div>\n\n    <!-- Right -->\n    <div class=\"pin-right\" id=\"pinRightC\" style=\"border-left:0.5px solid rgba(26,25,24,0.07)\">\n      <div class=\"pin-ogilvy\" id=\"pinOgilvyC\" style=\"color:#1a1918\"></div>\n      <p class=\"pin-copy\" id=\"pinCopyC\" style=\"color:rgba(26,25,24,0.52)\"></p>\n      <div class=\"pin-marginalia\" id=\"pinMargC\">\n        <span class=\"pin-marg-label\">Marginalia</span>\n        <p class=\"pin-marg-text\" id=\"pinMargTxC\"></p>\n      </div>\n      <p class=\"pin-scroll-hint\" id=\"pinHintC\" aria-hidden=\"true\" style=\"color:rgba(26,25,24,0.18)\">Scroll</p>\n    </div>\n\n  </div>\n</div>\n</div>\n\n<!-- QUOTE BREAK -->\n<section class=\"proc-quote\" id=\"procQuote\">\n  <div class=\"quote-inner\" id=\"quoteInner\">\n    <span class=\"quote-label\">Step 05 · Stain Identification · The Policy, In Plain Words</span>\n    <p class=\"quote-text\">\"If a stain is unlikely to be fully resolved, or may damage the garment during cleaning, we tell you before we proceed.\"</p>\n    <p class=\"quote-attr\">The Swiss Laundry · Kolkata · Est. 2013</p>\n  </div>\n</section>\n\n\n\n<!-- NUMBERS -->\n<section class=\"proc-numbers\" id=\"procNumbers\">\n  <p class=\"numbers-head\">The Standard, In Numbers</p>\n  <div class=\"numbers-grid\">\n    <div class=\"num-cell\"><span class=\"num-big\">12</span><h3 class=\"num-label\">Steps, every garment, every time</h3></div>\n    <div class=\"num-cell\"><span class=\"num-big\">3</span><h3 class=\"num-label\">Cleaning methods on the floor</h3></div>\n    <div class=\"num-cell\"><span class=\"num-big\">2</span><h3 class=\"num-label\">Independent inspections per piece</h3></div>\n    <div class=\"num-cell\"><span class=\"num-big\">12,000+</span><h3 class=\"num-label\">Garments cared for — dry cleaning, laundry, carpet &amp; stain removal</h3></div>\n    <div class=\"num-cell\"><span class=\"num-big\">48,000+</span><h3 class=\"num-label\">Orders completed since 2013</h3></div>\n    <div class=\"num-cell\"><span class=\"num-big\">1,50,000+</span><h3 class=\"num-label\">Customers who trust The Swiss Standard</h3></div>\n    <div class=\"num-cell\"><span class=\"num-big\">48h</span><h3 class=\"num-label\">Maximum wait before we return a garment uncleaned</h3></div>\n    <div class=\"num-cell\"><span class=\"num-big\">4</span><h3 class=\"num-label\">Delivery slots — Same Day to Standard</h3></div>\n    <div class=\"num-cell\"><span class=\"num-big\">2013</span><h3 class=\"num-label\">Year we began in Kolkata</h3></div>\n  </div>\n</section>\n\n<!-- HONEST COLUMN -->\n<section class=\"proc-honest\" id=\"procHonest\">\n  <div class=\"honest-head\" id=\"honestHead\">\n    <h2 class=\"honest-h2\">An honest<br>column.</h2>\n    <span class=\"honest-label\">Editor's Notes</span>\n  </div>\n  <div class=\"honest-list\">\n    <div class=\"honest-item\"><button class=\"honest-btn\" aria-expanded=\"false\" aria-controls=\"hb1\"><span class=\"honest-num\">01</span><h3 class=\"honest-q\">Why twelve steps?</h3><span class=\"honest-icon\" aria-hidden=\"true\"></span></button><div class=\"honest-body\" id=\"hb1\"><p>Because intake, fabric assessment, stain identification, your approval, specialist treatment, two independent inspections and considered packaging are the real work. Cleaning is one step of twelve.</p></div></div>\n    <div class=\"honest-item\"><button class=\"honest-btn\" aria-expanded=\"false\" aria-controls=\"hb2\"><span class=\"honest-num\">02</span><h3 class=\"honest-q\">How long does dry cleaning take?</h3><span class=\"honest-icon\" aria-hidden=\"true\"></span></button><div class=\"honest-body\" id=\"hb2\"><p>Same Day if collected before 10 AM — returned same evening. Next Day, Express (within 2 days) and Standard (within 4–5 days). All twelve steps are completed for every turnaround. Same Day means an accelerated timeline, not a shorter process.</p></div></div>\n    <div class=\"honest-item\"><button class=\"honest-btn\" aria-expanded=\"false\" aria-controls=\"hb3\"><span class=\"honest-num\">03</span><h3 class=\"honest-q\">How is the cleaning method chosen?</h3><span class=\"honest-icon\" aria-hidden=\"true\"></span></button><div class=\"honest-body\" id=\"hb3\"><p>At fabric assessment — not at the machine. Hydrocarbon, Perc or wet cleaning is chosen based on fabric composition, colour stability, care label and our records of any previous treatments. Never by default, never by convenience.</p></div></div>\n    <div class=\"honest-item\"><button class=\"honest-btn\" aria-expanded=\"false\" aria-controls=\"hb4\"><span class=\"honest-num\">04</span><h3 class=\"honest-q\">What happens if you find a pre-existing issue?</h3><span class=\"honest-icon\" aria-hidden=\"true\"></span></button><div class=\"honest-body\" id=\"hb4\"><p>We stop. A WhatsApp message goes to you immediately. If there is no response, we call. If we cannot reach you within 48 hours, the garment is returned to you uncleaned. We never proceed without your informed consent.</p></div></div>\n    <div class=\"honest-item\"><button class=\"honest-btn\" aria-expanded=\"false\" aria-controls=\"hb5\"><span class=\"honest-num\">05</span><h3 class=\"honest-q\">Which areas of Kolkata do you cover?</h3><span class=\"honest-icon\" aria-hidden=\"true\"></span></button><div class=\"honest-body\" id=\"hb5\"><p>We cover all major neighbourhoods across Kolkata. Our collection and delivery teams operate across the city — contact us by phone, WhatsApp or app and we will confirm if your area is on our current route. We are expanding continuously.</p></div></div>\n  </div>\n</section>\n\n<!-- POSTCARD CTA -->\n<section class=\"proc-postcard\" id=\"procPostcard\">\n  <span class=\"postcard-label\">Begin here</span>\n  <h2 class=\"postcard-h2\">Twelve steps begin<br>with <em>one call.</em></h2>\n  <p class=\"postcard-contact\">Phone or WhatsApp &nbsp;·&nbsp; <a href=\"tel:+919836233354\">+91 83358 88167</a> &nbsp;·&nbsp; <a href=\"https://wa.me/919836233354\">wa.me/919836233354</a> &nbsp;·&nbsp; <a href=\"mailto:info@theswisslaundry.com\">info@theswisslaundry.com</a></p>\n  <div class=\"postcard-btns\">\n    <a href=\"/pickup\" class=\"btn-primary\">Book a Pickup &nbsp;→</a>\n    <a href=\"/dry-cleaning\" class=\"btn-ghost\">Our Services &nbsp;→</a>\n  </div>\n</section>\n\n<!-- MOBILE SWIPE -->\n<div class=\"proc-mobile\" id=\"procMobile\">\n  <div class=\"mob-header\" id=\"mobHeader\">\n    <div class=\"mob-step-num\" id=\"mobNum\">01</div>\n    <div class=\"mob-step-info\">\n      <span class=\"mob-section-mark\" id=\"mobSectionMark\">§01 of 12</span>\n      <span class=\"mob-step-label\" id=\"mobLabel\">Step 01</span>\n      <span class=\"mob-step-title\" id=\"mobTitle\"></span>\n    </div>\n  </div>\n  <div class=\"mob-progress-line\"><div class=\"mob-progress-fill\" id=\"mobProgress\" style=\"width:8.33%\"></div></div>\n  <div class=\"mob-img-area\" id=\"mobImgArea\">\n        <div class=\"mob-img-slot active\" id=\"mimg1\" data-step=\"1\">\n      <img src=\"data:image/gif;base64,R0lGODlhAQABAAAAACw=\" data-tsl-dup=\"1\" alt=\"Booking app confirmation — The Swiss Laundry Kolkata\" loading=\"eager\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" fetchpriority=\"high\" decoding=\"async\">\n    </div>\n    <div class=\"mob-img-slot\" id=\"mimg2\" data-step=\"2\">\n      <img src=\"data:image/gif;base64,R0lGODlhAQABAAAAACw=\" data-tsl-dup=\"2\" alt=\"Branded pickup bag — The Swiss Laundry Kolkata\" loading=\"lazy\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" decoding=\"async\">\n    </div>\n    <div class=\"mob-img-slot\" id=\"mimg3\" data-step=\"3\">\n      <img src=\"data:image/gif;base64,R0lGODlhAQABAAAAACw=\" data-tsl-dup=\"3\" alt=\"Garment intake tagging — The Swiss Laundry Kolkata\" loading=\"lazy\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" decoding=\"async\">\n    </div>\n    <div class=\"mob-img-slot\" id=\"mimg4\" data-step=\"4\">\n      <img src=\"data:image/gif;base64,R0lGODlhAQABAAAAACw=\" data-tsl-dup=\"4\" alt=\"Fabric assessment — The Swiss Laundry Kolkata\" loading=\"lazy\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" decoding=\"async\">\n    </div>\n    <div class=\"mob-img-slot\" id=\"mimg5\" data-step=\"5\">\n      <img src=\"data:image/gif;base64,R0lGODlhAQABAAAAACw=\" data-tsl-dup=\"5\" alt=\"Stain identification — The Swiss Laundry Kolkata\" loading=\"lazy\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" decoding=\"async\">\n    </div>\n    <div class=\"mob-img-slot\" id=\"mimg6\" data-step=\"6\">\n      <img src=\"data:image/gif;base64,R0lGODlhAQABAAAAACw=\" data-tsl-dup=\"6\" alt=\"WhatsApp approval Zegna shirt — The Swiss Laundry Kolkata\" loading=\"lazy\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" decoding=\"async\">\n    </div>\n    <div class=\"mob-img-slot\" id=\"mimg7\" data-step=\"7\">\n      <img src=\"data:image/gif;base64,R0lGODlhAQABAAAAACw=\" data-tsl-dup=\"7\" alt=\"Professional cleaning machine — The Swiss Laundry Kolkata\" loading=\"eager\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" fetchpriority=\"high\" decoding=\"async\">\n    </div>\n    <div class=\"mob-img-slot\" id=\"mimg8\" data-step=\"8\">\n      <img src=\"data:image/gif;base64,R0lGODlhAQABAAAAACw=\" data-tsl-dup=\"8\" alt=\"Stain treatment spotting board — The Swiss Laundry Kolkata\" loading=\"lazy\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" decoding=\"async\">\n    </div>\n    <div class=\"mob-img-slot\" id=\"mimg9\" data-step=\"9\">\n      <img src=\"data:image/gif;base64,R0lGODlhAQABAAAAACw=\" data-tsl-dup=\"9\" alt=\"Quality inspection — The Swiss Laundry Kolkata\" loading=\"lazy\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" decoding=\"async\">\n    </div>\n    <div class=\"mob-img-slot\" id=\"mimg10\" data-step=\"10\">\n      <img src=\"data:image/gif;base64,R0lGODlhAQABAAAAACw=\" data-tsl-dup=\"10\" alt=\"Industrial steam press trouser — The Swiss Laundry Kolkata\" loading=\"lazy\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" decoding=\"async\">\n    </div>\n    <div class=\"mob-img-slot\" id=\"mimg11\" data-step=\"11\">\n      <img src=\"data:image/gif;base64,R0lGODlhAQABAAAAACw=\" data-tsl-dup=\"11\" alt=\"Final check packaged garments — The Swiss Laundry Kolkata\" loading=\"eager\" style=\"width:100%;height:100%;object-fit:cover;object-position:center top\" fetchpriority=\"high\" decoding=\"async\">\n    </div>\n    <div class=\"mob-img-slot\" id=\"mimg12\" data-step=\"12\">\n      <img src=\"data:image/gif;base64,R0lGODlhAQABAAAAACw=\" data-tsl-dup=\"12\" alt=\"The Swiss Laundry gentleman — The Swiss Laundry Kolkata\" loading=\"lazy\" style=\"width:100%;height:100%;object-fit:contain;background:#1a1918\" decoding=\"async\">\n    </div>\n\n    <button class=\"mob-arrow mob-arrow-prev\" id=\"mobPrev\" aria-label=\"Previous step\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M15 19l-7-7 7-7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg></button>\n    <button class=\"mob-arrow mob-arrow-next\" id=\"mobNext\" aria-label=\"Next step\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M9 5l7 7-7 7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg></button>\n    <div class=\"mob-dots\" id=\"mobDots\"><div class=\"mob-dot  active\" data-step=\"1\"></div>\n<div class=\"mob-dot\" data-step=\"2\"></div>\n<div class=\"mob-dot\" data-step=\"3\"></div>\n<div class=\"mob-dot\" data-step=\"4\"></div>\n<div class=\"mob-dot\" data-step=\"5\"></div>\n<div class=\"mob-dot\" data-step=\"6\"></div>\n<div class=\"mob-dot\" data-step=\"7\"></div>\n<div class=\"mob-dot\" data-step=\"8\"></div>\n<div class=\"mob-dot\" data-step=\"9\"></div>\n<div class=\"mob-dot\" data-step=\"10\"></div>\n<div class=\"mob-dot\" data-step=\"11\"></div>\n<div class=\"mob-dot\" data-step=\"12\"></div></div>\n  </div>\n  <div class=\"mob-footer\" id=\"mobFooter\">\n    <div class=\"mob-ogilvy\" id=\"mobOgilvy\"></div>\n    <p class=\"mob-copy\" id=\"mobCopy\"></p>\n    <div class=\"mob-marginalia\"><span class=\"mob-marg-label\">Marginalia</span><p class=\"mob-marg-text\" id=\"mobMargTx\"></p></div>\n  </div>\n</div>\n\n<h2 style=\"position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)\">Booking — The Swiss Laundry Kolkata garment care</h2><h2 style=\"position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)\">Collection — The Swiss Laundry Kolkata garment care</h2><h2 style=\"position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)\">Intake — The Swiss Laundry Kolkata garment care</h2><h2 style=\"position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)\">Fabric Assessment — The Swiss Laundry Kolkata garment care</h2><h2 style=\"position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)\">Stain Identification — The Swiss Laundry Kolkata garment care</h2><h2 style=\"position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)\">Your Approval — The Swiss Laundry Kolkata garment care</h2><h2 style=\"position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)\">Cleaning — The Swiss Laundry Kolkata garment care</h2><h2 style=\"position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)\">Stain Treatment — The Swiss Laundry Kolkata garment care</h2><h2 style=\"position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)\">Inspection — The Swiss Laundry Kolkata garment care</h2><h2 style=\"position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)\">Steam Pressing — The Swiss Laundry Kolkata garment care</h2><h2 style=\"position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)\">Final Check — The Swiss Laundry Kolkata garment care</h2><h2 style=\"position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)\">Delivery — The Swiss Laundry Kolkata garment care</h2>\n\n<!-- WhatsApp Floating Button -->\n<a href=\"https://wa.me/919836233354?text=Hi%2C%20I%20would%20like%20to%20book%20a%20pickup%20with%20The%20Swiss%20Laundry\" class=\"wa-float\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Chat on WhatsApp\">\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347z\"></path>\n <path d=\"M12 0C5.373 0 0 5.373 0 12c0 2.123.554 4.118 1.528 5.849L.057 24l6.306-1.654A11.954 11.954 0 0012 24c6.627 0 12-5.373 12-12S18.627 0 12 0zm0 21.818a9.818 9.818 0 01-5.002-1.366l-.359-.213-3.722.976.994-3.632-.234-.373A9.818 9.818 0 1112 21.818z\"></path>\n </svg>\n <span class=\"wa-tooltip\">Chat on WhatsApp</span>\n</a>\n\n\n<!-- Sticky Mobile Book Button -->\n<div class=\"mob-sticky-cta\">\n <a href=\"/pickup\" class=\"mob-sticky-btn\">Book a Pickup</a>\n</div>\n\n<!-- Cookie Consent -->\n<div class=\"cookie-bar\" id=\"cookieBar\">\n <p class=\"cookie-txt\">We use cookies to improve your experience. By continuing you agree to our <a href=\"/privacy-policy\" class=\"cookie-link\">Privacy Policy</a>.</p>\n <button class=\"cookie-btn\" onclick=\"acceptCookies()\">Accept</button>\n</div>\n\n\n<!-- Page Preloader -->\n<div class=\"preloader\" id=\"preloader\">\n <div class=\"pre-inner\">\n <div class=\"pre-monogram\">TSL</div>\n <div class=\"pre-line\"></div>\n <p class=\"pre-text\">Est. 2013</p>\n </div>\n</div>\n\n\n\n<!-- Back to Top -->\n<a href=\"#\" class=\"back-to-top\" id=\"backToTop2\" aria-label=\"Back to top\" style=\"display:none\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n <path d=\"M12 19V5M5 12l7-7 7 7\"></path>\n </svg>\n</a>\n\n\n\n\n\n<!-- Sticky booking pill — mobile only, hidden on /pickup -->\n<a href=\"/pickup\" class=\"book-pill\" id=\"bookPill\" aria-label=\"Book a pickup\">\n  <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 12h14M12 5l7 7-7 7\"></path></svg>\n  Book Pickup · 2 min\n</a>"
}
