:root{
    --estate:#121C17;
    --estate-soft:#1E2B24;
    --ivory:#F1EDE2;
    --brass:#9C8A5A;
    --brass-dark:#8A7848;
    --stone:#B9B3A2;
    --parchment:#E5DFCF;
    --iron:#59554A;

    --display:"Cormorant Garamond", Georgia, serif;
    --label:"Archivo", system-ui, sans-serif;

    --edge:clamp(1.25rem, 5vw, 5.5rem);
    --rule:rgba(156,138,90,.34);
  }

  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0;
    background:var(--estate);
    color:var(--ivory);
    font-family:var(--display);
    font-weight:300;
    line-height:1.5;
    -webkit-font-smoothing:antialiased;
    text-rendering:optimizeLegibility;
    overflow-x:hidden;
  }
  ::selection{background:var(--brass);color:var(--estate);}

  /* visually hidden, available to screen readers & crawlers */
  .sr-only{
    position:absolute;width:1px;height:1px;padding:0;margin:-1px;
    overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
  }

  a{color:inherit;text-decoration:none;}
  a:focus-visible,button:focus-visible{
    outline:1px solid var(--brass);
    outline-offset:6px;
  }

  /* ---- ambient frame: fine-stationery hairline ---- */
  .frame{
    position:fixed;
    inset:clamp(.7rem,1.6vw,1.4rem);
    border:1px solid rgba(156,138,90,.28);
    pointer-events:none;
    z-index:50;
  }

  /* ---- shared type ---- */
  .eyebrow{
    font-family:var(--label);
    font-weight:300;
    text-transform:uppercase;
    letter-spacing:.44em;
    font-size:.66rem;
    color:var(--brass);
    margin:0;
  }
  .meta{
    font-family:var(--label);
    font-weight:300;
    text-transform:uppercase;
    letter-spacing:.32em;
    font-size:.66rem;
    color:var(--stone);
  }
  .lede{
    font-size:clamp(1.35rem,2.6vw,1.9rem);
    line-height:1.5;
    color:var(--ivory);
    max-width:24ch;
    font-weight:300;
  }
  .hair{
    height:1px;
    background:var(--rule);
    border:0;
    margin:0;
  }

  /* ---- nav ---- */
  .nav{
    position:fixed;
    top:0;left:0;right:0;
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:clamp(1.1rem,2.4vw,1.9rem) var(--edge);
    z-index:40;
    mix-blend-mode:difference;
  }
  .nav .mark{width:30px;height:30px;display:block;}
  .nav .mark circle{stroke:var(--ivory);}
  .nav .mark text{fill:var(--ivory);}
  .nav a.inquire{
    font-family:var(--label);
    text-transform:uppercase;
    letter-spacing:.34em;
    font-size:.64rem;
    color:var(--ivory);
    padding-bottom:3px;
    border-bottom:1px solid transparent;
    transition:border-color .5s ease;
  }
  .nav a.inquire:hover{border-color:var(--ivory);}

  /* ---- layout ---- */
  section{padding:clamp(5.5rem,13vh,10rem) var(--edge);}
  .band-light{background:var(--parchment);color:var(--iron);}
  .band-light .eyebrow{color:var(--brass-dark);}
  .band-light .lede,
  .band-light .display-2{color:var(--estate);}
  .band-light .hair{background:rgba(138,120,72,.4);}

  /* ---- hero ---- */
  .hero{
    min-height:100vh;
    min-height:100svh;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    text-align:center;
    padding-top:6rem;
    padding-bottom:6rem;
    gap:2.4rem;
  }
  .hero .ring{width:clamp(96px,15vw,150px);height:clamp(96px,15vw,150px);}
  .wordmark{
    font-size:clamp(2.6rem,8.5vw,6.4rem);
    line-height:.98;
    letter-spacing:.02em;
    font-weight:300;
    margin:0;
  }
  .wordmark .rule-word{
    display:block;
    font-size:clamp(2.4rem,7.8vw,5.8rem);
  }
  .tagline{
    font-family:var(--label);
    text-transform:uppercase;
    letter-spacing:.4em;
    font-size:clamp(.6rem,1.4vw,.72rem);
    color:var(--stone);
  }
  .hero-foot{
    position:absolute;
    bottom:clamp(1.6rem,4vh,2.8rem);
    left:0;right:0;
    display:flex;
    justify-content:center;
  }

  /* ---- two-column editorial ---- */
  .split{
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);
    gap:clamp(2rem,6vw,6rem);
    align-items:start;
  }
  .split .aside{position:sticky;top:clamp(6rem,14vh,9rem);}
  .display-2{
    font-family:var(--display);
    font-weight:300;
    font-size:clamp(2rem,4.4vw,3.4rem);
    line-height:1.08;
    letter-spacing:.01em;
    margin:.9rem 0 0;
    color:var(--ivory);
    max-width:16ch;
  }
  .prose{
    font-size:clamp(1.2rem,2vw,1.55rem);
    line-height:1.62;
    color:var(--stone);
    max-width:40ch;
    font-weight:300;
  }
  .band-light .prose{color:var(--iron);}
  .prose + .prose{margin-top:1.4rem;}

  /* ---- the model: three tenets ---- */
  .tenets{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    margin-top:clamp(2.5rem,5vw,4rem);
    border-top:1px solid rgba(138,120,72,.4);
  }
  .tenet{
    padding:clamp(1.8rem,3vw,2.6rem) clamp(1.2rem,2vw,2rem) 0 0;
    border-right:1px solid rgba(138,120,72,.28);
  }
  .tenet:last-child{border-right:0;padding-right:0;}
  .tenet h3{
    font-family:var(--display);
    font-weight:300;
    font-size:clamp(1.5rem,2.6vw,2.1rem);
    margin:.8rem 0 .7rem;
    color:var(--estate);
  }
  .tenet p{
    font-size:1.02rem;
    line-height:1.55;
    color:var(--iron);
    margin:0;
    max-width:26ch;
  }
  .tenet .num{color:var(--brass-dark);}

  /* ---- capabilities index (not a sequence — no numbers) ---- */
  .index{
    margin-top:clamp(2.5rem,5vw,3.5rem);
    border-top:1px solid var(--rule);
  }
  .index-row{
    display:flex;
    align-items:baseline;
    justify-content:space-between;
    gap:2rem;
    padding:clamp(1.15rem,2.4vw,1.7rem) 0;
    border-bottom:1px solid var(--rule);
  }
  .index-row .name{
    font-family:var(--display);
    font-weight:300;
    font-size:clamp(1.5rem,3.6vw,2.6rem);
    letter-spacing:.01em;
    color:var(--ivory);
    transition:color .5s ease, letter-spacing .6s ease;
  }
  .index-row:hover .name{color:var(--brass);letter-spacing:.05em;}
  .index-row .cat{
    font-family:var(--label);
    text-transform:uppercase;
    letter-spacing:.3em;
    font-size:.6rem;
    color:var(--stone);
    white-space:nowrap;
  }

  /* ---- coverage ---- */
  .coverage{text-align:center;}
  .coverage .big{
    font-size:clamp(2rem,5.5vw,4rem);
    line-height:1.2;
    font-weight:300;
    color:var(--ivory);
    max-width:20ch;
    margin:1.4rem auto 0;
  }
  .coverage .big em{font-style:italic;color:var(--brass);}

  /* ---- contact ---- */
  .contact{text-align:center;}
  .contact .addr{
    font-family:var(--label);
    text-transform:uppercase;
    letter-spacing:.28em;
    font-size:.68rem;
    line-height:2.1;
    color:var(--stone);
    margin-top:2.5rem;
  }
  .contact .email{
    display:inline-block;
    font-family:var(--display);
    font-weight:300;
    font-size:clamp(1.8rem,5vw,3.2rem);
    letter-spacing:.01em;
    color:var(--ivory);
    margin-top:1.4rem;
    padding-bottom:.35rem;
    border-bottom:1px solid var(--rule);
    transition:border-color .5s ease,color .5s ease;
  }
  .contact .email:hover{color:var(--brass);border-color:var(--brass);}
  .contact .tel{
    display:inline-block;
    font-family:var(--label);
    text-transform:uppercase;
    letter-spacing:.28em;
    font-size:.68rem;
    color:var(--stone);
    margin-top:1.7rem;
    transition:color .5s ease;
  }
  .contact .tel:hover{color:var(--brass);}
  .contact .principal{
    font-family:var(--label);
    text-transform:uppercase;
    letter-spacing:.4em;
    font-size:.62rem;
    color:var(--brass);
    margin-top:2.8rem;
  }

  /* ---- footer ---- */
  footer{
    padding:clamp(3rem,7vh,5rem) var(--edge) clamp(2.4rem,5vh,3.4rem);
    border-top:1px solid var(--rule);
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    justify-content:space-between;
    gap:1.4rem;
  }
  footer .mark{width:26px;height:26px;}
  footer .mark circle{stroke:var(--stone);}
  footer .mark text{fill:var(--stone);}
  footer .fmeta{
    font-family:var(--label);
    text-transform:uppercase;
    letter-spacing:.26em;
    font-size:.58rem;
    color:var(--stone);
    line-height:1.9;
  }
  footer .fmeta.right{text-align:right;}

  /* ---- reveal ---- */
  .reveal{opacity:0;transform:translateY(26px);transition:opacity 1.1s cubic-bezier(.22,.61,.36,1),transform 1.1s cubic-bezier(.22,.61,.36,1);}
  .reveal.in{opacity:1;transform:none;}
  .reveal.d1{transition-delay:.12s;}
  .reveal.d2{transition-delay:.24s;}
  .reveal.d3{transition-delay:.36s;}

  /* ---- monogram draw ---- */
  .ring .r-outer,.ring .r-inner{
    stroke-dasharray:var(--c);
    stroke-dashoffset:var(--c);
    animation:draw 1.6s cubic-bezier(.4,0,.2,1) forwards;
  }
  .ring .r-inner{animation-delay:.18s;}
  .ring .r-letters{opacity:0;animation:fadein 1s ease .95s forwards;}
  @keyframes draw{to{stroke-dashoffset:0;}}
  @keyframes fadein{to{opacity:1;}}

  @media (max-width:820px){
    .split{grid-template-columns:1fr;gap:2.2rem;}
    .split .aside{position:static;}
    .tenets{grid-template-columns:1fr;border-top:0;}
    .tenet{border-right:0;border-top:1px solid rgba(138,120,72,.4);padding:1.6rem 0 0;}
    .index-row{flex-direction:column;gap:.5rem;align-items:flex-start;}
    .nav{mix-blend-mode:normal;}
  }

  @media (prefers-reduced-motion:reduce){
    *{animation-duration:.001ms!important;animation-delay:0s!important;transition-duration:.001ms!important;}
    .reveal{opacity:1;transform:none;}
    html{scroll-behavior:auto;}
    .ring .r-outer,.ring .r-inner{stroke-dashoffset:0;}
    .ring .r-letters{opacity:1;}
  }


  /* ================= service pages ================= */
  .crumb{
    font-family:var(--label);text-transform:uppercase;letter-spacing:.4em;
    font-size:.62rem;color:var(--brass);display:inline-block;
    transition:color .5s ease;
  }
  .crumb:hover{color:var(--ivory);}
  .subhero{
    min-height:62vh;min-height:62svh;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    text-align:center;padding:9rem 0 4rem;gap:1.5rem;
  }
  .subhero .cat{
    font-family:var(--label);text-transform:uppercase;letter-spacing:.4em;
    font-size:clamp(.6rem,1.4vw,.72rem);color:var(--stone);
  }
  .subhero h1{
    font-family:var(--display);font-weight:300;
    font-size:clamp(2.4rem,6.5vw,4.6rem);line-height:1.02;letter-spacing:.02em;
    margin:0;color:var(--ivory);max-width:18ch;
  }
  .subhero .sub{
    font-family:var(--display);font-weight:300;font-style:italic;
    font-size:clamp(1.2rem,2.4vw,1.7rem);color:var(--brass);max-width:34ch;margin:0;
  }
  .points{list-style:none;margin:clamp(2.2rem,4vw,3.2rem) 0 0;padding:0;border-top:1px solid var(--rule);}
  .points li{
    font-family:var(--display);font-weight:300;
    font-size:clamp(1.3rem,2.8vw,2rem);letter-spacing:.01em;color:var(--ivory);
    padding:clamp(1rem,2.2vw,1.5rem) 0;border-bottom:1px solid var(--rule);
  }
  .band-light .points{border-top-color:rgba(138,120,72,.4);}
  .band-light .points li{color:var(--estate);border-bottom-color:rgba(138,120,72,.28);}
  .textlink{
    font-family:var(--label);text-transform:uppercase;letter-spacing:.3em;
    font-size:.64rem;color:var(--brass);display:inline-block;margin-top:clamp(2.5rem,5vw,3.5rem);
    border-bottom:1px solid var(--rule);padding-bottom:.4rem;transition:color .5s ease,border-color .5s ease;
  }
  .textlink:hover{color:var(--ivory);border-color:var(--brass);}
