Monday, 13 July 2026

House of ellora

 <!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>House of Ellora — Carved in Cloth</title>

<link rel="preconnect" href="https://fonts.googleapis.com">

<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

<link href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,300;0,9..144,500;0,9..144,600;1,9..144,500&family=Inter:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap" rel="stylesheet">

<style>

  :root{

    --stone-light:#EDE7D6;

    --stone-paper:#F8F4E9;

    --stone-mid:#B99458;

    --basalt:#211D18;

    --indigo:#2F4A55;

    --rust:#8B3A2B;

    --line: rgba(33,29,24,0.14);

    --display: 'Fraunces', serif;

    --body: 'Inter', sans-serif;

    --mono: 'IBM Plex Mono', monospace;

  }


  *{ box-sizing:border-box; }

  html{ scroll-behavior:smooth; }

  body{

    margin:0;

    background:var(--stone-light);

    color:var(--basalt);

    font-family:var(--body);

    line-height:1.5;

    -webkit-font-smoothing:antialiased;

  }

  img{ max-width:100%; display:block; }

  a{ color:inherit; }


  @media (prefers-reduced-motion: reduce){

    *{ animation:none !important; transition:none !important; scroll-behavior:auto !important; }

  }


  /* ---------- utility ---------- */

  .wrap{ max-width:1180px; margin:0 auto; padding:0 32px; }

  .eyebrow{

    font-family:var(--mono); font-size:12px; letter-spacing:0.14em; text-transform:uppercase;

    color:var(--indigo); display:flex; align-items:center; gap:10px;

  }

  .eyebrow::before{ content:""; width:22px; height:1px; background:var(--stone-mid); display:inline-block; }


  h1,h2,h3{ font-family:var(--display); font-weight:500; margin:0; }


  .btn{

    font-family:var(--body); font-weight:600; font-size:14.5px;

    border:1px solid var(--basalt); border-radius:2px;

    padding:13px 26px; cursor:pointer; background:transparent; color:var(--basalt);

    display:inline-flex; align-items:center; gap:8px; letter-spacing:0.01em;

    transition:background .18s ease, color .18s ease, transform .18s ease;

    text-decoration:none;

  }

  .btn:hover{ transform:translateY(-1px); }

  .btn-solid{ background:var(--basalt); color:var(--stone-light); }

  .btn-solid:hover{ background:#3a3226; }

  .btn-rust{ background:var(--rust); border-color:var(--rust); color:var(--stone-paper); }

  .btn-rust:hover{ background:#742f22; }

  .btn:focus-visible, a:focus-visible, button:focus-visible{

    outline:2px solid var(--indigo); outline-offset:3px;

  }


  /* ---------- relief frieze divider (signature element) ---------- */

  .frieze{

    height:34px; width:100%;

    background-color:var(--basalt);

    -webkit-mask-image:repeating-linear-gradient(90deg,

      transparent 0 6px,

      #000 6px 10px,

      transparent 10px 30px,

      #000 30px 34px,

      transparent 34px 60px

    );

    mask-image:repeating-linear-gradient(90deg,

      transparent 0 6px,

      #000 6px 10px,

      transparent 10px 30px,

      #000 30px 34px,

      transparent 34px 60px

    );

    opacity:0.9;

  }


  /* ---------- header ---------- */

  header{

    position:sticky; top:0; z-index:50;

    background:rgba(237,231,214,0.92); backdrop-filter:blur(6px);

    border-bottom:1px solid var(--line);

  }

  .nav{

    display:flex; align-items:center; justify-content:space-between;

    padding:20px 32px; max-width:1180px; margin:0 auto;

  }

  .logo{ font-family:var(--display); font-size:22px; letter-spacing:0.02em; }

  .logo span{ color:var(--rust); font-style:italic; }

  .nav-links{ display:flex; gap:32px; align-items:center; font-size:14.5px; }

  .nav-links a{ text-decoration:none; opacity:0.85; }

  .nav-links a:hover{ opacity:1; }

  .nav-cta{ display:flex; gap:12px; }

  .burger{ display:none; }


  @media (max-width:860px){

    .nav-links, .nav-cta .btn:last-child{ display:none; }

  }


  /* ---------- hero ---------- */

  .hero{

    padding:96px 32px 70px; max-width:1180px; margin:0 auto;

    display:grid; grid-template-columns:1.15fr 0.85fr; gap:60px; align-items:end;

  }

  .hero h1{

    font-size:clamp(42px, 6.4vw, 84px); line-height:0.98; margin:18px 0 26px;

    letter-spacing:-0.01em;

  }

  .hero h1 em{ font-style:italic; color:var(--rust); }

  .hero p{ font-size:17px; max-width:46ch; opacity:0.85; margin-bottom:34px; }

  .hero-actions{ display:flex; gap:14px; flex-wrap:wrap; }


  .hero-relief{

    aspect-ratio:3/4; border-radius:2px; position:relative; overflow:hidden;

    background:

      radial-gradient(circle at 30% 20%, rgba(185,148,88,0.5), transparent 60%),

      linear-gradient(160deg, #d8c9a3, #a98450 65%, #6f5432);

  }

  .hero-relief::before{

    content:""; position:absolute; inset:0;

    background-image:repeating-linear-gradient(115deg, rgba(33,29,24,0.08) 0 2px, transparent 2px 22px);

  }

  .hero-relief .tag{

    position:absolute; bottom:18px; left:18px; right:18px;

    background:rgba(33,29,24,0.82); color:var(--stone-paper);

    font-family:var(--mono); font-size:11.5px; padding:10px 14px; letter-spacing:0.06em;

  }


  @media (max-width:860px){

    .hero{ grid-template-columns:1fr; padding-top:56px; }

    .hero-relief{ order:-1; aspect-ratio:16/10; }

  }


  /* ---------- section shell ---------- */

  section{ padding:88px 0; }

  .section-head{ display:flex; justify-content:space-between; align-items:flex-end; margin-bottom:48px; gap:24px; flex-wrap:wrap; }

  .section-head h2{ font-size:clamp(28px,3.4vw,42px); margin-top:10px; max-width:20ch; }

  .section-head p.desc{ max-width:38ch; font-size:15px; opacity:0.75; }


  /* ---------- chambers (collections) ---------- */

  .chambers{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); }

  .chamber{ background:var(--stone-paper); padding:38px 30px; position:relative; }

  .chamber .num{ font-family:var(--mono); font-size:12px; color:var(--stone-mid); letter-spacing:0.1em; }

  .chamber h3{ font-size:24px; margin:14px 0 12px; }

  .chamber p{ font-size:14.5px; opacity:0.78; margin-bottom:22px; }

  .chamber a{ font-family:var(--mono); font-size:12.5px; text-decoration:none; border-bottom:1px solid var(--basalt); padding-bottom:2px; }


  @media (max-width:860px){ .chambers{ grid-template-columns:1fr; } }


  /* ---------- catalogue banner ---------- */

  .catalogue-band{

    background:var(--basalt); color:var(--stone-light);

    padding:64px 0;

  }

  .catalogue-inner{

    display:flex; justify-content:space-between; align-items:center; gap:30px; flex-wrap:wrap;

  }

  .catalogue-inner h2{ color:var(--stone-light); font-size:clamp(26px,3vw,36px); max-width:16ch; }

  .catalogue-inner p{ opacity:0.7; max-width:42ch; font-size:14.5px; margin-top:10px; }

  .catalogue-actions{ display:flex; gap:14px; flex-wrap:wrap; }

  .catalogue-band .btn{ border-color:var(--stone-light); color:var(--stone-light); }

  .catalogue-band .btn-solid{ background:var(--stone-light); color:var(--basalt); }

  .catalogue-band .btn-solid:hover{ background:#fff; }


  /* ---------- products ---------- */

  .products{ display:grid; grid-template-columns:repeat(3,1fr); gap:28px; }

  .product-card{ background:var(--stone-paper); border:1px solid var(--line); }

  .product-media{

    aspect-ratio:4/5; position:relative; overflow:hidden;

    background:linear-gradient(150deg,#dccdaa,#a5824d 60%,#5d4626);

  }

  .product-media::after{

    content:""; position:absolute; inset:0;

    background-image:repeating-radial-gradient(circle at 50% 0%, rgba(33,29,24,0.10) 0 2px, transparent 2px 26px);

  }

  .product-body{ padding:20px 22px 24px; }

  .product-body .pname{ font-family:var(--display); font-size:19px; margin-bottom:6px; }

  .product-body .pmeta{ display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; }

  .product-body .price{ font-family:var(--mono); font-size:14px; color:var(--indigo); }

  .product-body .btn{ width:100%; justify-content:center; }


  @media (max-width:860px){ .products{ grid-template-columns:1fr 1fr; } }

  @media (max-width:560px){ .products{ grid-template-columns:1fr; } }


  /* ---------- inscriptions (blog) ---------- */

  .posts{ display:flex; flex-direction:column; }

  .post{

    display:grid; grid-template-columns:120px 1fr auto; gap:28px; align-items:baseline;

    padding:30px 0; border-top:1px solid var(--line);

  }

  .posts .post:last-child{ border-bottom:1px solid var(--line); }

  .post .roman{ font-family:var(--display); font-style:italic; font-size:26px; color:var(--stone-mid); }

  .post h3{ font-size:21px; margin-bottom:8px; }

  .post p{ font-size:14.5px; opacity:0.75; max-width:56ch; }

  .post .read{ font-family:var(--mono); font-size:12.5px; text-decoration:none; white-space:nowrap; border-bottom:1px solid var(--basalt); padding-bottom:2px; }


  @media (max-width:700px){

    .post{ grid-template-columns:1fr; gap:8px; }

    .post .read{ margin-top:6px; }

  }


  /* ---------- footer ---------- */

  footer{ background:var(--stone-paper); border-top:1px solid var(--line); padding:56px 0 30px; }

  .footer-grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:40px; margin-bottom:40px; }

  .footer-grid h4{ font-family:var(--mono); font-size:12px; letter-spacing:0.1em; text-transform:uppercase; margin-bottom:16px; opacity:0.6; }

  .footer-grid p, .footer-grid a{ font-size:14.5px; text-decoration:none; opacity:0.85; display:block; margin-bottom:8px; }

  .footer-bottom{ display:flex; justify-content:space-between; font-size:12.5px; opacity:0.55; border-top:1px solid var(--line); padding-top:22px; flex-wrap:wrap; gap:10px; font-family:var(--mono); }

  .newsletter{ display:flex; gap:0; margin-top:10px; }

  .newsletter input{

    font-family:var(--body); font-size:14px; padding:11px 14px; border:1px solid var(--basalt); border-right:none;

    background:transparent; flex:1; min-width:0;

  }

  .newsletter button{ border-radius:0; }


  @media (max-width:760px){ .footer-grid{ grid-template-columns:1fr; } }


  /* ---------- modal ---------- */

  .modal-overlay{

    position:fixed; inset:0; background:rgba(33,29,24,0.55);

    display:none; align-items:center; justify-content:center; z-index:200; padding:20px;

  }

  .modal-overlay.open{ display:flex; }

  .modal{

    background:var(--stone-paper); max-width:420px; width:100%; padding:34px 30px;

    border:1px solid var(--line); position:relative;

  }

  .modal h3{ font-size:22px; margin-bottom:6px; }

  .modal p.sub{ font-size:13.5px; opacity:0.7; margin-bottom:22px; }

  .modal label{ font-family:var(--mono); font-size:11.5px; letter-spacing:0.06em; text-transform:uppercase; display:block; margin-bottom:6px; opacity:0.7; }

  .modal input, .modal select{

    width:100%; font-family:var(--body); font-size:14.5px; padding:11px 12px; margin-bottom:16px;

    border:1px solid var(--line); background:var(--stone-light);

  }

  .modal .close{

    position:absolute; top:18px; right:18px; background:none; border:none; cursor:pointer;

    font-size:20px; line-height:1; color:var(--basalt); padding:4px;

  }

  .modal-confirm{ display:none; text-align:center; padding:10px 0 4px; }

  .modal-confirm.open{ display:block; }

  .modal-confirm .mark{ font-family:var(--display); font-style:italic; font-size:34px; color:var(--rust); margin-bottom:10px; }

</style>

</head>

<body>


<header>

  <div class="nav">

    <div class="logo">House of <span>Ellora</span></div>

    <nav class="nav-links">

      <a href="#chambers">Chambers</a>

      <a href="#pieces">Pieces</a>

      <a href="#inscriptions">Inscriptions</a>

      <a href="#contact">Contact</a>

    </nav>

    <div class="nav-cta">

      <button class="btn" onclick="openCatalogue()">Get catalogue</button>

      <button class="btn btn-solid" onclick="scrollToId('pieces')">Shop pieces</button>

    </div>

  </div>

</header>


<div class="frieze"></div>


<section class="hero">

  <div>

    <p class="eyebrow">Est. in the vernacular of Ellora</p>

    <h1>Garments cut<br>from stone's <em>memory</em>.</h1>

    <p>House of Ellora translates the carved reliefs and hand-pigment traditions of India's rock-cut temples into clothing — natural fibre, deep dye, and silhouettes worn slow. Every piece ships with the story behind it.</p>

    <div class="hero-actions">

      <button class="btn btn-rust" onclick="scrollToId('pieces')">Shop the collection</button>

      <button class="btn" onclick="openCatalogue()">Download catalogue</button>

    </div>

  </div>

  <div class="hero-relief">

    <div class="tag">CHAMBER I — DRAPE · S/S CATALOGUE</div>

  </div>

</section>


<div class="frieze"></div>


<section id="chambers">

  <div class="wrap">

    <div class="section-head">

      <div>

        <p class="eyebrow">Collections, by chamber</p>

        <h2>Three rooms, three ways of working cloth.</h2>

      </div>

      <p class="desc">Named for the numbered chambers of the caves themselves — each one holds a distinct technique, not a season.</p>

    </div>

    <div class="chambers">

      <div class="chamber">

        <div class="num">CHAMBER I</div>

        <h3>Drape</h3>

        <p>Unstructured tailoring in raw silk and handloom cotton, cut to move like carved fabric caught mid-fold.</p>

        <a href="#pieces">View pieces →</a>

      </div>

      <div class="chamber">

        <div class="num">CHAMBER II</div>

        <h3>Relief</h3>

        <p>Raised embroidery worked to sit above the cloth, echoing the depth of temple stone-carving.</p>

        <a href="#pieces">View pieces →</a>

      </div>

      <div class="chamber">

        <div class="num">CHAMBER III</div>

        <h3>Pigment</h3>

        <p>Hand-dyed indigo and ochre, mixed using the mineral pigments once used in the cave murals.</p>

        <a href="#pieces">View pieces →</a>

      </div>

    </div>

  </div>

</section>


<div class="catalogue-band">

  <div class="wrap catalogue-inner">

    <div>

      <p class="eyebrow" style="color:var(--stone-mid)">The full archive</p>

      <h2>Every piece, every chamber — in one catalogue.</h2>

      <p>Sixty pages, sized and priced, with fabric notes for each garment. Sent straight to your inbox.</p>

    </div>

    <div class="catalogue-actions">

      <button class="btn btn-solid" onclick="openCatalogue()">Download catalogue (PDF)</button>

      <button class="btn" onclick="openBuy('Full Catalogue Order','—')">Order from catalogue</button>

    </div>

  </div>

</div>


<section id="pieces">

  <div class="wrap">

    <div class="section-head">

      <div>

        <p class="eyebrow">Featured pieces</p>

        <h2>From the current chambers.</h2>

      </div>

      <p class="desc">A short edit. The full range is in the catalogue.</p>

    </div>

    <div class="products">


      <div class="product-card">

        <div class="product-media"></div>

        <div class="product-body">

          <div class="pname">Basalt Wrap Dress</div>

          <div class="pmeta"><span class="price">£185</span><span class="eyebrow" style="font-size:11px">CH. I</span></div>

          <button class="btn btn-solid" onclick="openBuy('Basalt Wrap Dress','£185')">Buy now</button>

        </div>

      </div>


      <div class="product-card">

        <div class="product-media"></div>

        <div class="product-body">

          <div class="pname">Relief Embroidered Kurta</div>

          <div class="pmeta"><span class="price">£145</span><span class="eyebrow" style="font-size:11px">CH. II</span></div>

          <button class="btn btn-solid" onclick="openBuy('Relief Embroidered Kurta','£145')">Buy now</button>

        </div>

      </div>


      <div class="product-card">

        <div class="product-media"></div>

        <div class="product-body">

          <div class="pname">Indigo Pigment Scarf</div>

          <div class="pmeta"><span class="price">£65</span><span class="eyebrow" style="font-size:11px">CH. III</span></div>

          <button class="btn btn-solid" onclick="openBuy('Indigo Pigment Scarf','£65')">Buy now</button>

        </div>

      </div>


      <div class="product-card">

        <div class="product-media"></div>

        <div class="product-body">

          <div class="pname">Sandstone Linen Trousers</div>

          <div class="pmeta"><span class="price">£95</span><span class="eyebrow" style="font-size:11px">CH. I</span></div>

          <button class="btn btn-solid" onclick="openBuy('Sandstone Linen Trousers','£95')">Buy now</button>

        </div>

      </div>


      <div class="product-card">

        <div class="product-media"></div>

        <div class="product-body">

          <div class="pname">Carved Cuff Blouse</div>

          <div class="pmeta"><span class="price">£120</span><span class="eyebrow" style="font-size:11px">CH. II</span></div>

          <button class="btn btn-solid" onclick="openBuy('Carved Cuff Blouse','£120')">Buy now</button>

        </div>

      </div>


      <div class="product-card">

        <div class="product-media"></div>

        <div class="product-body">

          <div class="pname">Temple Column Coat</div>

          <div class="pmeta"><span class="price">£310</span><span class="eyebrow" style="font-size:11px">CH. III</span></div>

          <button class="btn btn-solid" onclick="openBuy('Temple Column Coat','£310')">Buy now</button>

        </div>

      </div>


    </div>

  </div>

</section>


<div class="frieze"></div>


<section id="inscriptions">

  <div class="wrap">

    <div class="section-head">

      <div>

        <p class="eyebrow">The journal</p>

        <h2>Inscriptions.</h2>

      </div>

      <p class="desc">Notes on craft, sourcing, and the caves that started it all.</p>

    </div>

    <div class="posts">

      <div class="post">

        <div class="roman">I.</div>

        <div>

          <h3>Why we carve, not print</h3>

          <p>On raised-thread embroidery, why it costs more, and why it wears better than anything printed.</p>

        </div>

        <a class="read" href="#" onclick="return false;">Read →</a>

      </div>

      <div class="post">

        <div class="roman">II.</div>

        <div>

          <h3>The pigments of Ajanta, reimagined</h3>

          <p>How we sourced a mineral-based indigo dye process close to the murals that first inspired us.</p>

        </div>

        <a class="read" href="#" onclick="return false;">Read →</a>

      </div>

      <div class="post">

        <div class="roman">III.</div>

        <div>

          <h3>Sizing like stone: our fit philosophy</h3>

          <p>Why our sizing runs generous, and how to read our fit notes before you order.</p>

        </div>

        <a class="read" href="#" onclick="return false;">Read →</a>

      </div>

    </div>

  </div>

</section>


<footer id="contact">

  <div class="wrap">

    <div class="footer-grid">

      <div>

        <h4>House of Ellora</h4>

        <p style="max-width:34ch; opacity:0.7;">Clothing carved from the craft traditions of India's rock-cut temples. Handmade in small runs.</p>

        <div class="newsletter">

          <input type="email" placeholder="you@email.com" aria-label="Email for newsletter">

          <button class="btn btn-solid" onclick="openCatalogue()">Get catalogue</button>

        </div>

      </div>

      <div>

        <h4>Shop</h4>

        <a href="#chambers">Chambers</a>

        <a href="#pieces">Pieces</a>

        <a href="#" onclick="openCatalogue(); return false;">Catalogue</a>

      </div>

      <div>

        <h4>Contact</h4>

        <a href="mailto:hello@houseofellora.com">hello@houseofellora.com</a>

        <a href="#">Instagram</a>

        <a href="#">Pinterest</a>

      </div>

    </div>

    <div class="footer-bottom">

      <span>© 2026 House of Ellora</span>

      <span>Cave-numbered since day one.</span>

    </div>

  </div>

</footer>


<!-- Buy modal -->

<div class="modal-overlay" id="buyModal">

  <div class="modal">

    <button class="close" onclick="closeModal('buyModal')" aria-label="Close">&times;</button>

    <div id="buyFormWrap">

      <h3 id="buyTitle">Buy now</h3>

      <p class="sub" id="buyPrice">Item — price</p>

      <form onsubmit="return submitBuy(event)">

        <label for="buyName">Name</label>

        <input id="buyName" type="text" required>

        <label for="buyEmail">Email</label>

        <input id="buyEmail" type="email" required>

        <label for="buySize">Size</label>

        <select id="buySize">

          <option>XS</option><option>S</option><option selected>M</option><option>L</option><option>XL</option>

        </select>

        <button class="btn btn-rust" type="submit" style="width:100%; justify-content:center;">Place order request</button>

      </form>

    </div>

    <div class="modal-confirm" id="buyConfirm">

      <div class="mark">✓</div>

      <h3>Order request received</h3>

      <p class="sub">We'll email you to confirm sizing and payment shortly.</p>

      <button class="btn" onclick="closeModal('buyModal')" style="width:100%; justify-content:center;">Close</button>

    </div>

  </div>

</div>


<!-- Catalogue modal -->

<div class="modal-overlay" id="catModal">

  <div class="modal">

    <button class="close" onclick="closeModal('catModal')" aria-label="Close">&times;</button>

    <div id="catFormWrap">

      <h3>Get the catalogue</h3>

      <p class="sub">Enter your email and we'll send the full 60-page PDF.</p>

      <form onsubmit="return submitCatalogue(event)">

        <label for="catEmail">Email</label>

        <input id="catEmail" type="email" required>

        <button class="btn btn-solid" type="submit" style="width:100%; justify-content:center;">Send me the catalogue</button>

      </form>

    </div>

    <div class="modal-confirm" id="catConfirm">

      <div class="mark">✓</div>

      <h3>On its way</h3>

      <p class="sub">Check your inbox in a few minutes for the catalogue PDF.</p>

      <button class="btn" onclick="closeModal('catModal')" style="width:100%; justify-content:center;">Close</button>

    </div>

  </div>

</div>


<script>

  function scrollToId(id){ document.getElementById(id).scrollIntoView({behavior:'smooth'}); }


  function openBuy(name, price){

    document.getElementById('buyTitle').textContent = 'Buy — ' + name;

    document.getElementById('buyPrice').textContent = name + '  ·  ' + price;

    document.getElementById('buyFormWrap').style.display = 'block';

    document.getElementById('buyConfirm').classList.remove('open');

    document.getElementById('buyModal').classList.add('open');

  }

  function openCatalogue(){

    document.getElementById('catFormWrap').style.display = 'block';

    document.getElementById('catConfirm').classList.remove('open');

    document.getElementById('catModal').classList.add('open');

  }

  function closeModal(id){ document.getElementById(id).classList.remove('open'); }


  function submitBuy(e){

    e.preventDefault();

    document.getElementById('buyFormWrap').style.display = 'none';

    document.getElementById('buyConfirm').classList.add('open');

    return false;

  }

  function submitCatalogue(e){

    e.preventDefault();

    document.getElementById('catFormWrap').style.display = 'none';

    document.getElementById('catConfirm').classList.add('open');

    return false;

  }


  document.querySelectorAll('.modal-overlay').forEach(function(ov){

    ov.addEventListener('click', function(e){ if(e.target === ov) ov.classList.remove('open'); });

  });

</script>


</body>

</html>

House of ellora

 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport...