Showing source for: https://www.rockymtnre.com/
Duration: 0.123955s
Server: Vercel

<!DOCTYPE html>
<html lang="en">
<head>
<script>document.documentElement.classList.add('js');</script>
<meta charset="UTF-8">
<title>Rocky Mountain Real Estate · Flathead Valley, MT</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Rocky Mountain Real Estate is a Whitefish, Montana brokerage serving the Flathead Valley — Whitefish, Kalispell, and Columbia Falls. Browse homes and connect with a local agent.">
<link rel="canonical" href="https://www.rockymtnre.com/">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Rocky Mountain Real Estate">
<meta property="og:title" content="Rocky Mountain Real Estate | Flathead Valley, MT">
<meta property="og:description" content="A Whitefish, Montana brokerage serving the Flathead Valley — Whitefish, Kalispell, and Columbia Falls. Browse homes and connect with a local agent.">
<meta property="og:url" content="https://www.rockymtnre.com/">
<meta property="og:image" content="https://www.rockymtnre.com/images/home_hero_sunset.jpg">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Rocky Mountain Real Estate | Flathead Valley, MT">
<meta name="twitter:description" content="A Whitefish, Montana brokerage serving the Flathead Valley — Whitefish, Kalispell, and Columbia Falls.">
<meta name="twitter:image" content="https://www.rockymtnre.com/images/home_hero_sunset.jpg">
<meta name="theme-color" content="#08243C">
<link rel="icon" type="image/svg+xml" href="/favicon.svg?v=6">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png?v=6">
<link rel="apple-touch-icon" href="/apple-touch-icon.png?v=6">
<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=Urbanist:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,500;1,600&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
<style>
  :root{
    --ink:#161A22;
    --stone:#EDEDE9;
    --paper:#FAFAF8;
    --spruce:#08243C;
    --spruce-2:#123A5C;
    --larch:#5F6541;
    --larch-2:#7C8459;
    --larch-3:#94A06C;
    --larch-dark:#454A30;
    --glacier:#6FA8DC;
    --line: rgba(22,26,34,0.13);
  }
  *{box-sizing:border-box; margin:0; padding:0;}
  html{scroll-behavior:smooth;}
  body{
    background:var(--stone);
    color:var(--ink);
    font-family:'Inter', sans-serif;
    font-weight:400;
    font-size:16.5px;
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
  }
  img{max-width:100%; display:block;}

  body::before{
    content:'';
    position:fixed; inset:0; z-index:9999; pointer-events:none;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    background-repeat:repeat;
    mix-blend-mode:overlay;
    opacity:0.5;
  }

  a{color:inherit; text-decoration:none;}
  /* ---------- accessibility: focus ring, skip link, reduced motion ---------- */
  a:focus-visible, button:focus-visible, .btn:focus-visible, .menu-toggle:focus-visible,
  input:focus-visible, select:focus-visible, textarea:focus-visible{
    outline:3px solid #FFFFFF;
    outline-offset:1px;
    box-shadow:0 0 0 5px var(--spruce);
  }
  .skip-link{
    position:absolute; left:-9999px; top:0; z-index:9999;
    background:var(--paper); color:var(--ink); padding:14px 22px;
    font-weight:600; font-size:14px; border-radius:0 0 4px 0;
  }
  .skip-link:focus{ left:0; }
  @media (prefers-reduced-motion: reduce){
    *, *::before, *::after{
      animation-duration:0.01ms !important;
      animation-iteration-count:1 !important;
      transition-duration:0.01ms !important;
      scroll-behavior:auto !important;
    }
  }
  .wrap{max-width:1180px; margin:0 auto; padding:0 32px;}
  .eyebrow{
    font-family:'JetBrains Mono', monospace;
    font-size:11px;
    letter-spacing:0.14em;
    text-transform:uppercase;
    color:var(--larch);
    font-weight:500;
  }
  h1,h2,h3{
    font-family:'Urbanist', sans-serif;
    font-weight:600;
    letter-spacing:-0.01em;
    color:var(--ink);
  }
  .btn{
    display:inline-flex; align-items:center; gap:8px;
    font-family:'Inter', sans-serif; font-weight:600; font-size:14px;
    padding:14px 26px; border-radius:2px;
    border:1px solid transparent;
    cursor:pointer;
    transition:transform .18s ease, background .18s ease, color .18s ease, border-color .18s ease;
  }
  .btn:hover{ transform:translateY(-1px); }
  .btn-primary{ background:var(--larch); color:var(--paper); }
  .btn-primary:hover{ background:var(--larch-dark); }
  .btn-ghost{ border-color:rgba(245,240,229,0.5); color:var(--paper); }
  .btn-ghost:hover{ background:rgba(245,240,229,0.12); }
  .btn-line{ border-color:var(--ink); color:var(--ink); }
  .btn-line:hover{ background:var(--ink); color:var(--paper); }


  /* ---------- nav ---------- */
  header.site{
    position:sticky; top:0; z-index:50;
    background:rgba(250,245,234,0.93);
    backdrop-filter:blur(8px);
    border-bottom:1px solid rgba(8,36,60,0.1);
  }
  nav{
    display:flex; align-items:center; justify-content:space-between;
    padding:20px 32px; max-width:1180px; margin:0 auto;
  }
  .logo{ display:flex; align-items:center; gap:14px; }
  .logo img{ height:58px; width:auto; display:block; filter:drop-shadow(0 0 0.3px currentColor) drop-shadow(0 0 0.3px currentColor); }
  .logo-text{ display:flex; flex-direction:column; line-height:1.05; }
  .logo-text-top{ font-family:'Urbanist',sans-serif; font-weight:700; font-size:20px; color:var(--spruce); letter-spacing:-0.01em; }
  .logo-text-bottom{ font-family:'JetBrains Mono',monospace; font-weight:500; font-size:11px; letter-spacing:0.14em; text-transform:uppercase; color:var(--larch); margin-top:3px; }
  .nav-links{ display:flex; gap:34px; align-items:center; font-size:14px; font-weight:500; color:var(--ink); }
  .nav-links a{ position:relative; padding:8px 0; color:var(--ink); }
  .nav-links a::after{
    content:''; position:absolute; left:0; bottom:-2px; width:0; height:1px; background:var(--larch);
    transition:width .2s ease;
  }
  .nav-links a:hover::after, .nav-links a:focus-visible::after{ width:100%; }
  .nav-cta{ display:flex; align-items:center; gap:18px; }
  .nav-phone{ font-family:'Inter',sans-serif; font-weight:700; font-size:16px; color:var(--spruce); }
  .nav-cta .btn-line{ border-color:var(--ink); color:var(--ink); }
  .nav-cta .btn-line:hover{ background:var(--ink); color:var(--paper); }

  .menu-toggle{
    display:none; flex-direction:column; justify-content:center; align-items:center; gap:5px;
    width:40px; height:40px; background:none; border:none; cursor:pointer; padding:0;
  }
  .menu-toggle span{
    display:block; width:22px; height:2px; background:var(--ink); border-radius:2px;
    transition:transform .25s ease, opacity .2s ease;
  }
  .menu-toggle[aria-expanded="true"] span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
  .menu-toggle[aria-expanded="true"] span:nth-child(2){ opacity:0; }
  .menu-toggle[aria-expanded="true"] span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

  .mobile-menu{
    display:none; flex-direction:column;
    position:absolute; top:100%; left:0; right:0;
    background:var(--paper); border-bottom:1px solid var(--line);
    padding:8px 32px 20px; gap:4px;
    box-shadow:0 16px 30px rgba(8,36,60,0.14);
  }
  .mobile-menu a:not(.btn){ padding:12px 4px; font-size:15px; font-weight:500; color:var(--ink); border-bottom:1px solid var(--line); }
  .mobile-menu a.btn{ margin-top:12px; justify-content:center; }
  .mobile-menu.open{ display:flex; }

  @media (max-width:860px){
    .nav-links, .nav-phone{ display:none; }
    .nav-cta .btn-line{ display:none; }
    .menu-toggle{ display:flex; }
  }

  /* ---------- hero ---------- */
  .hero{
    position:relative; color:var(--paper);
    overflow:hidden; padding:96px 0 0;
    background-image:
      linear-gradient(180deg, rgba(8,36,60,0.62) 0%, rgba(8,36,60,0.38) 38%, rgba(8,36,60,0.55) 72%, rgba(8,36,60,0.88) 100%),
      url(/images/home_hero_sunset.jpg);
    background-size:cover;
    background-position:center 60%;
  }
  /* ---------- bg-fade: gradient + photo fade in together once the photo ----------
     finishes loading, instead of popping in the instant its bytes arrive.
     Used by the cta-band photo section further down this page. */
  .bg-fade{
    position:absolute; inset:0; z-index:0;
    background-size:cover; opacity:0; transition:opacity .5s ease;
  }
  .bg-fade.loaded{ opacity:1; }
  .hero .wrap{ position:relative; z-index:2; padding-bottom:64px;}
  .hero-eyebrow{ color:var(--larch-2); }
  .hero h1{
    color:var(--paper); font-size:clamp(40px,6vw,74px); font-weight:600;
    max-width:820px; margin:22px 0 26px; line-height:1.08;
    text-shadow:0 2px 24px rgba(8,36,60,0.35);
  }
  .hero h1 em{ font-style:italic; color:var(--paper); font-weight:500;}
  .hero p.sub{
    max-width:500px; font-size:18.5px; line-height:1.6; color:rgba(250,248,244,0.9); margin-bottom:36px;
  }
  .hero-actions{ display:flex; gap:16px; flex-wrap:wrap; margin-bottom:80px;}
  .topo{
    position:absolute; inset:0; opacity:0.22; z-index:1;
  }

  /* ---------- search strip ---------- */
  .search-strip{
    background:var(--paper);
    border:1px solid var(--line);
    border-radius:3px;
    padding:22px 26px;
    display:flex; gap:0; flex-wrap:wrap;
    position:relative; z-index:3;
    margin:0 32px; max-width:1116px; margin:0 auto;
    transform:translateY(38px);
    box-shadow:0 24px 50px -20px rgba(33,29,24,0.35);
  }
  .search-strip[hidden]{ display:none; }
  .search-field{
    flex:1; min-width:140px; padding:0 22px; border-right:1px solid var(--line);
  }
  .search-field:last-of-type{ border-right:none; }
  .search-field .eyebrow{ display:block; margin-bottom:6px; color:var(--spruce-2);}
  .search-field select, .search-field input{
    font-family:'Inter',sans-serif; font-size:15px; border:none; background:none;
    width:100%; color:var(--ink); font-weight:500;
  }
  .search-go{
    background:var(--spruce); color:var(--paper); border:none;
    padding:0 32px; font-family:'Inter',sans-serif; font-weight:600; font-size:14px;
    cursor:pointer; border-radius:2px; margin-left:18px;
  }
  @media (max-width:760px){
    .search-strip{ flex-direction:column; }
    .search-field{ border-right:none; border-bottom:1px solid var(--line); padding:14px 4px;}
    .search-go{ margin:14px 4px 4px; padding:14px;}
  }

  /* ---------- sections generic ---------- */
  section{ padding:120px 0 90px; }
  .section-head{ max-width:600px; margin-bottom:56px; }
  .section-head .eyebrow{ margin-bottom:14px; }
  .section-head h2{ font-size:clamp(30px,4vw,44px); }
  .section-head p{ margin-top:16px; color:rgba(33,29,24,0.7); font-size:17.5px; line-height:1.6; max-width:540px;}

  /* ---------- process ---------- */
  .process{ background:var(--paper); }
  .process-list{ display:grid; grid-template-columns:repeat(3,1fr); gap:0; border-top:1px solid var(--line);}
  .process-item{
    padding:40px 30px 0; border-right:1px solid var(--line); position:relative;
  }
  .process-item:last-child{ border-right:none; }
  .process-num{
    font-family:'JetBrains Mono',monospace; font-size:13px; color:var(--larch); letter-spacing:0.05em;
    display:block; margin-bottom:22px;
  }
  .process-item h3{ font-size:22px; margin-bottom:12px; }
  .process-item p{ color:rgba(33,29,24,0.68); font-size:16px; line-height:1.6; max-width:300px; }
  @media (max-width:820px){
    .process-list{ grid-template-columns:1fr; }
    .process-item{ border-right:none; border-bottom:1px solid var(--line); padding-bottom:34px; margin-bottom:6px;}
  }

  /* ---------- listings ---------- */
  .listings-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:28px; }
  .listing-card{
    background:var(--paper); border:1px solid var(--line); border-radius:3px; overflow:hidden;
    transition:transform .25s ease, box-shadow .25s ease;
  }
  .listing-card:hover{ transform:translateY(-5px); box-shadow:0 20px 40px -22px rgba(33,29,24,0.3); }
  .listing-photo{
    height:200px; position:relative;
    display:flex; align-items:flex-end; padding:16px;
    overflow:hidden;
  }
  .listing-photo img{
    position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0;
  }
  .listing-photo::after{
    content:''; position:absolute; inset:0; z-index:1;
    background:linear-gradient(180deg, rgba(10,20,35,0) 45%, rgba(10,20,35,0.55) 100%);
  }
  .listing-photo .tag{
    position:relative; z-index:2;
    background:var(--ink); color:var(--paper); font-family:'JetBrains Mono',monospace;
    font-size:10.5px; letter-spacing:0.08em; padding:6px 10px; border-radius:2px;
  }
  .listing-body{ padding:22px 22px 26px; }
  .listing-price{ font-family:'Urbanist',sans-serif; font-weight:600; font-size:23px; margin-bottom:4px;}
  .listing-loc{ font-size:14.5px; color:rgba(33,29,24,0.62); margin-bottom:16px;}
  .listing-stats{
    display:flex; gap:16px; font-family:'JetBrains Mono',monospace; font-size:12.5px;
    color:var(--spruce-2); border-top:1px solid var(--line); padding-top:14px;
  }
  @media (max-width:900px){ .listings-grid{ grid-template-columns:1fr; } }

  /* ---------- team / about ---------- */
  .team{ background:var(--stone); }
  .about-grid{ display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:center; }
  .about-photo{
    aspect-ratio:4/3; border-radius:4px;
    position:relative; overflow:hidden;
  }
  .about-photo img{
    position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  }
  .about-content .eyebrow{ display:block; margin-bottom:14px; }
  .about-content h2{ font-size:clamp(28px,3.4vw,40px); margin-bottom:20px; }
  .about-content p{ font-size:17px; line-height:1.7; color:rgba(22,26,34,0.72); max-width:480px; margin-bottom:30px; }
  @media (max-width:860px){ .about-grid{ grid-template-columns:1fr; gap:32px; } }

  /* ---------- testimonials ---------- */
  .testimonials{ background:var(--spruce); color:var(--paper); position:relative; overflow:hidden; }
  .testimonials .topo{ position:absolute; inset:0; opacity:0.55; z-index:0; }
  .testimonials .wrap{ position:relative; z-index:1; }
  .testimonials .section-head{ text-align:center; margin-left:auto; margin-right:auto; }
  .testimonials .section-head p{ color:rgba(245,240,229,0.65); }
  .testimonials .section-head h2{ color:var(--paper); }
  .testimonials .eyebrow{ color:var(--larch-2); }
  @media (min-width:860px){
    .testimonials .section-head{ max-width:1100px; }
    .testimonials .section-head h2{ white-space:nowrap; font-size:clamp(27px,2.9vw,38px); }
  }
  .t-carousel{ max-width:700px; margin:0 auto; }
  .t-slide{
    display:none; text-align:center;
    background:rgba(255,255,255,0.10);
    backdrop-filter:blur(16px) saturate(160%);
    -webkit-backdrop-filter:blur(16px) saturate(160%);
    border:1px solid rgba(255,255,255,0.28);
    border-radius:8px;
    padding:48px 44px;
    box-shadow:0 20px 50px rgba(8,36,60,0.25), inset 0 1px 0 rgba(255,255,255,0.2);
  }
  .t-slide.active{ display:block; animation:tFade .5s ease; }
  @keyframes tFade{ from{ opacity:0; transform:translateY(8px); } to{ opacity:1; transform:translateY(0); } }
  .t-quote{ font-family:'Urbanist',sans-serif; font-weight:500; font-style:italic; font-size:27px; line-height:1.5; margin-bottom:24px;}
  .t-name{ font-family:'JetBrains Mono',monospace; font-size:11px; color:#F0B429; text-transform:uppercase; letter-spacing:0.05em; font-weight:600;}
  .t-controls{ display:flex; align-items:center; justify-content:center; gap:22px; margin-top:38px; }
  .t-arrow{
    display:flex; align-items:center; justify-content:center;
    width:38px; height:38px; border-radius:50%; border:1px solid rgba(245,240,229,0.3);
    background:none; color:var(--paper); cursor:pointer; padding:0;
    transition:background .2s ease, border-color .2s ease;
  }
  .t-arrow:hover{ background:rgba(245,240,229,0.14); border-color:rgba(245,240,229,0.55); }
  .t-dots{ display:flex; gap:10px; }
  .t-dot{
    width:9px; height:9px; border-radius:50%; border:none; padding:0; cursor:pointer;
    background:rgba(245,240,229,0.3); transition:background .2s ease, transform .2s ease;
  }
  .t-dot.active{ background:#F0B429; transform:scale(1.2); }
  @media (max-width:600px){
    .t-controls{ gap:16px; }
    .t-slide{ padding:36px 26px; }
    .t-quote{ font-size:21px; }
  }

  /* ---------- journal ---------- */
  .journal-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:32px; }
  .journal-card{
    display:block; position:relative;
    background:rgba(255,255,255,0.5);
    backdrop-filter:blur(14px) saturate(160%);
    -webkit-backdrop-filter:blur(14px) saturate(160%);
    border:1px solid rgba(255,255,255,0.7);
    border-radius:6px;
    padding:30px 26px 28px;
    box-shadow:0 10px 26px rgba(8,36,60,0.07), inset 0 1px 0 rgba(255,255,255,0.8);
    transition:transform .4s cubic-bezier(.2,.8,.2,1), box-shadow .4s ease, background .4s ease, border-color .4s ease;
  }
  .journal-card:hover{
    transform:translateY(-10px);
    background:rgba(255,255,255,0.74);
    border-color:rgba(255,255,255,0.95);
    box-shadow:0 28px 52px rgba(8,36,60,0.16), inset 0 1px 0 rgba(255,255,255,0.9);
  }
  .journal-tag{ color:var(--larch); }
  .journal-card h3{ font-size:19px; margin:12px 0 10px; }
  .journal-card p{ font-size:15.5px; line-height:1.6; color:rgba(33,29,24,0.65); }
  .journal-read{
    display:inline-flex; align-items:center; gap:6px;
    font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:0.07em; text-transform:uppercase;
    color:var(--larch); margin-top:18px; opacity:0; transform:translateX(-6px);
    transition:opacity .3s ease, transform .3s ease;
  }
  .journal-card:hover .journal-read, .journal-card:focus-within .journal-read{ opacity:1; transform:translateX(0); }
  @media (max-width:900px){ .journal-grid{ grid-template-columns:1fr; } }

  /* ---------- cta band ---------- */
  .cta-band{
    position:relative; color:var(--paper); padding:130px 0; text-align:center; overflow:hidden;
    background-color:var(--spruce);
  }
  .cta-band .bg-fade{
    background-image:
      linear-gradient(180deg, rgba(8,36,60,0.5) 0%, rgba(8,36,60,0.62) 55%, rgba(8,36,60,0.8) 100%),
      url("/images/home_cta_big-mountain.jpg");
    background-position:center 65%;
  }
  .cta-band .wrap{ position:relative; z-index:2; }
  .cta-band h2{ font-size:clamp(28px,4vw,42px); max-width:640px; margin:0 auto 28px; color:var(--paper); text-shadow:0 2px 20px rgba(8,36,60,0.4);}
  .cta-band .btn-line{ border-color:var(--paper); color:var(--paper); }
  .cta-band .btn-line:hover{ background:var(--paper); color:var(--larch); }

  /* ---------- footer ---------- */
  footer{ background:var(--ink); color:rgba(245,240,229,0.75); padding:70px 0 30px; }
  .foot-grid{ display:grid; grid-template-columns:1.6fr 1fr 1fr 1fr; gap:40px; padding-bottom:50px; border-bottom:1px solid rgba(245,240,229,0.14);}
  .foot-grid h4{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:0.1em; text-transform:uppercase; color:var(--larch-3); margin-bottom:18px;}
  .foot-grid a, .foot-grid p{ display:block; font-size:15px; margin-bottom:10px; color:rgba(245,240,229,0.72); }
  .foot-logo{ font-family:'Urbanist',sans-serif; font-weight:600; font-size:20px; color:var(--paper); margin-bottom:14px;}
  .foot-bottom{ display:flex; justify-content:space-between; padding-top:26px; font-size:12.5px; color:rgba(245,240,229,0.6); flex-wrap:wrap; gap:10px;}
  .foot-legal{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
  .foot-legal a{ font-size:12.5px; color:rgba(245,240,229,0.6); }
  .foot-legal a:hover{ color:var(--paper); }
  .eho-badge{ display:inline-flex; align-items:center; gap:6px; font-size:12.5px; color:rgba(245,240,229,0.6); }
  .eho-badge svg{ width:16px; height:16px; flex-shrink:0; }
  @media (max-width:800px){ .foot-grid{ grid-template-columns:1fr 1fr; } }

  /* Content is visible by default so the page works with JS off/blocked/slow.
     Only once .js confirms the script ran do items start hidden for the
     scroll-reveal animation to then fade them in. */
  .reveal{ opacity:1; transform:none; }
  html.js .reveal{ opacity:0; transform:translateY(18px); transition:opacity .7s ease, transform .7s ease; }
  html.js .reveal.in{ opacity:1; transform:none; }

  /* ---------- stats bar (custom-build only) ---------- */
  .stats-bar{
    background:var(--ink); padding:56px 0 44px; margin-top:64px;
  }
  .stats-grid{
    display:grid; grid-template-columns:repeat(3,1fr); gap:24px; text-align:center;
  }
  .stat-num{
    font-family:'Urbanist',sans-serif; font-size:clamp(32px,4vw,48px); color:var(--paper); font-weight:600;
  }
  .stat-label{
    font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:0.1em; text-transform:uppercase;
    color:rgba(245,240,229,0.55); margin-top:8px;
  }
  @media (max-width:760px){ .stats-grid{ grid-template-columns:1fr; gap:34px; } }

  /* ---------- live filter (custom-build only) ---------- */
  .listing-card{ transition:transform .25s ease, box-shadow .25s ease, opacity .3s ease; }
  .listing-card.hidden{ display:none; }
  .filter-empty{
    display:none; text-align:center; padding:50px 20px; color:rgba(33,29,24,0.55);
    font-family:'JetBrains Mono',monospace; font-size:13px; letter-spacing:0.04em;
    border:1px dashed var(--line); border-radius:3px;
  }
  .filter-empty.show{ display:block; }
  .live-tag{
    display:inline-flex; align-items:center; gap:6px;
    font-family:'JetBrains Mono',monospace; font-size:10.5px; letter-spacing:0.08em;
    color:var(--larch); margin-bottom:10px;
  }
  .live-dot{
    width:6px; height:6px; border-radius:50%; background:var(--larch);
    animation:pulse 1.6s ease-in-out infinite;
  }
  @keyframes pulse{ 0%,100%{ opacity:1; } 50%{ opacity:0.35; } }
</style>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "RealEstateAgent",
  "name": "Rocky Mountain Real Estate",
  "image": "https://www.rockymtnre.com/images/logo_mark.png",
  "url": "https://www.rockymtnre.com/",
  "telephone": "+1-406-862-9000",
  "email": "[email protected]",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "204 Wisconsin Ave",
    "addressLocality": "Whitefish",
    "addressRegion": "MT",
    "postalCode": "59937",
    "addressCountry": "US"
  },
  "areaServed": [
    { "@type": "City", "name": "Whitefish, MT" },
    { "@type": "City", "name": "Kalispell, MT" },
    { "@type": "City", "name": "Columbia Falls, MT" }
  ],
  "sameAs": [
    "https://www.instagram.com/rockymountain_realestate?igsi=MW90MGJmM3Bldm91bg==",
    "https://www.facebook.com/share/1DW6PzBBGe/?mibextid=wwXIfr"
  ]
}
</script>
</head>
<body>

<a class="skip-link" href="#main">Skip to main content</a>


<header class="site">
  <nav>
    <a class="logo" href="/"><img src="/images/logo_mark.png" alt="Rocky Mountain Real Estate"><span class="logo-text"><span class="logo-text-top">Rocky Mountain</span><span class="logo-text-bottom">Real Estate</span></span></a>
    <div class="nav-links">
      <a href="/buy">Buy</a>
      <a href="/sell">Sell</a>
      <a href="/agents">Agents</a>
      <a href="/community">Community</a>
      <a href="/contact">Contact</a>
    </div>
    <div class="nav-cta">
      <a class="btn btn-line" href="tel:4068629000" style="padding:11px 20px;">Call Today</a>
    </div>
    <button class="menu-toggle" aria-expanded="false" aria-label="Menu">
      <span></span><span></span><span></span>
    </button>
  </nav>
  <div class="mobile-menu">
    <a href="/buy">Buy</a>
    <a href="/sell">Sell</a>
    <a href="/agents">Agents</a>
    <a href="/community">Community</a>
    <a href="/contact">Contact</a>
    <a href="tel:4068629000" class="btn btn-primary">Call Today</a>
  </div>
</header>

<main id="main">

<section class="hero" style="padding-top:80px;">
  <svg class="topo" viewBox="0 0 1180 520" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
    <g fill="none" stroke="#FAFAF8" stroke-width="1">
      <path d="M-20,420 C 180,360 300,440 480,380 S 820,300 1200,360" opacity="0.5"/>
      <path d="M-20,450 C 200,400 320,470 500,410 S 840,340 1200,400" opacity="0.4"/>
      <path d="M-20,480 C 220,440 340,500 520,450 S 860,390 1200,440" opacity="0.3"/>
      <path d="M-20,220 C 160,180 260,240 420,190 S 700,120 1200,180" opacity="0.25"/>
      <path d="M-20,250 C 170,215 270,270 430,225 S 720,160 1200,215" opacity="0.2"/>
    </g>
  </svg>
  <div class="wrap">
    <h1>Your Guides To The <em>Flathead Valley</em>.</h1>
    <p class="sub">Welcome to Northwest Montana. We help you find the right property and simplify the process.</p>
    <div class="hero-actions">
      <a class="btn btn-primary" href="tel:4068629000">Call Today</a>
      <a class="btn btn-ghost" href="/contact">Contact Us</a>
    </div>
  </div>
</section>

<div class="search-strip" hidden>
  <div class="search-field">
    <label class="eyebrow" for="f-where">Where</label>
    <select id="f-where"><option value="any">Anywhere</option><option value="whitefish">Whitefish</option><option value="kalispell">Kalispell</option><option value="columbia-falls">Columbia Falls</option></select>
  </div>
  <div class="search-field">
    <label class="eyebrow" for="f-price">Price</label>
    <select id="f-price"><option value="any">Any price</option><option value="under-500">Under $500k</option><option value="500-1m">$500k–$1M</option><option value="1m-plus">$1M+</option></select>
  </div>
  <div class="search-field">
    <label class="eyebrow" for="f-type">Type</label>
    <select id="f-type"><option value="any">Any type</option><option value="single-family">Single Family</option><option value="condo">Condo / Townhome</option><option value="land">Land / Acreage</option></select>
  </div>
  <div class="search-field">
    <label class="eyebrow" for="f-beds">Beds</label>
    <select id="f-beds"><option value="any">Any</option><option value="2">2+</option><option value="3">3+</option><option value="4">4+</option></select>
  </div>
  <button class="search-go" id="f-go">Search →</button>
</div>

<div class="stats-bar">
  <div class="wrap">
    <div class="stats-grid">
      <div class="stat-item">
        <div class="stat-num" data-count="80" data-suffix="+">80+</div>
        <div class="stat-label">Combined Years Experience</div>
      </div>
      <div class="stat-item">
        <div class="stat-num" data-count="300" data-suffix="+">300+</div>
        <div class="stat-label">Homes Closed</div>
      </div>
      <div class="stat-item">
        <div class="stat-num" data-count="20" data-suffix=" yrs">20 yrs</div>
        <div class="stat-label">In The Valley</div>
      </div>
    </div>
  </div>
</div>

<section class="process" id="process">
  <div class="wrap">
    <div class="section-head">
      <h2>A clear plan, start to close.</h2>
      <p>Buying or selling in the Flathead Valley shouldn't feel like guesswork. Here's exactly what working with us looks like.</p>
    </div>
    <div class="process-list">
      <div class="process-item">
        <span class="process-num">01 · DISCOVER</span>
        <h3>We learn the goal</h3>
        <p>A real conversation about what you need, what you can move on, and what the Valley's market actually looks like right now.</p>
      </div>
      <div class="process-item">
        <span class="process-num">02 · DECIDE</span>
        <h3>We narrow it down</h3>
        <p>Curated listings or a pricing & prep strategy, no mass emails, no generic showings. Just what fits.</p>
      </div>
      <div class="process-item">
        <span class="process-num">03 · CLOSE</span>
        <h3>We carry the details</h3>
        <p>Inspections, financing, paperwork, negotiation, handled, explained, and on schedule to the closing table.</p>
      </div>
    </div>
  </div>
</section>

<section id="listings" hidden>
  <div class="wrap">
    <div class="section-head">
      <h2>Where to look first.</h2>
    </div>
    <div class="listings-grid" id="listings-grid">
      <div class="listing-card" data-town="whitefish" data-price="1275000" data-type="single-family" data-beds="4">
        <div class="listing-photo">
          <img src="/images/listing_whitefish.jpg" alt="Whitefish, MT property">
          <span class="tag">WHITEFISH LAKE</span>
        </div>
        <div class="listing-body">
          <div class="listing-price">$1,275,000</div>
          <div class="listing-loc">Lakeshore Dr, Whitefish, MT</div>
          <div class="listing-stats"><span>4 BD</span><span>3 BA</span><span>2,840 SF</span></div>
        </div>
      </div>
      <div class="listing-card" data-town="kalispell" data-price="489000" data-type="single-family" data-beds="3">
        <div class="listing-photo">
          <img src="/images/listing_kalispell.jpg" alt="Kalispell, MT property">
          <span class="tag">DOWNTOWN KALISPELL</span>
        </div>
        <div class="listing-body">
          <div class="listing-price">$489,000</div>
          <div class="listing-loc">3rd Ave, Kalispell, MT</div>
          <div class="listing-stats"><span>3 BD</span><span>2 BA</span><span>1,910 SF</span></div>
        </div>
      </div>
      <div class="listing-card" data-town="columbia-falls" data-price="725000" data-type="land" data-beds="3">
        <div class="listing-photo">
          <img src="/images/listing_columbia-falls.jpg" alt="Columbia Falls, MT property">
          <span class="tag">COLUMBIA FALLS ACREAGE</span>
        </div>
        <div class="listing-body">
          <div class="listing-price">$725,000</div>
          <div class="listing-loc">River Rd, Columbia Falls, MT</div>
          <div class="listing-stats"><span>3 BD</span><span>2 BA</span><span>12.4 AC</span></div>
        </div>
      </div>
    </div>
    <div class="filter-empty" id="filter-empty">No properties match those filters yet. Try widening your search.</div>
  </div>
</section>

<section class="team" id="team">
  <div class="wrap">
    <div class="about-grid">
      <div class="about-photo">
        <img src="/images/team_photo.jpg" alt="The Rocky Mountain Real Estate team">
      </div>
      <div class="about-content">
        <h2>Understanding The Flathead Market</h2>
        <p>Buying and selling a home doesn't have to be complicated. We've been doing this for years and we love to walk people through the process. We combine our passion and knowledge for the Flathead Valley with a client first focus. You might be ready to start the process today. Or, you might just have questions. Either way, we'd love to talk.</p>
        <a class="btn btn-primary" href="/agents">Meet The Team</a>
      </div>
    </div>
  </div>
</section>

<section class="testimonials">
  <svg class="topo" viewBox="0 0 1180 420" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
    <g fill="none" stroke="#FAFAF8" stroke-width="1">
      <path d="M-20,340 C 180,280 300,360 480,300 S 820,220 1200,280" opacity="0.5"/>
      <path d="M-20,370 C 200,320 320,390 500,330 S 840,260 1200,320" opacity="0.4"/>
      <path d="M-20,400 C 220,360 340,420 520,370 S 860,310 1200,360" opacity="0.3"/>
      <path d="M-20,140 C 160,100 260,160 420,110 S 700,40 1200,100" opacity="0.25"/>
      <path d="M-20,170 C 170,135 270,190 430,145 S 720,80 1200,135" opacity="0.2"/>
    </g>
  </svg>
  <div class="wrap">
    <div class="section-head">
      <h2>We pride ourselves in getting you where you want to be.</h2>
    </div>
    <div class="t-carousel" role="region" aria-roledescription="carousel" aria-label="Client reviews">
      <div class="t-track">
        <div class="t-slide active">
          <p class="t-quote">Brian goes above and beyond in helping clients buy and sell. He was so helpful and reassuring for me in dealing with my sister's estate. I recommend this firm without hesitation.</p>
          <div class="t-name">D.K. · Facebook Review</div>
        </div>
        <div class="t-slide">
          <p class="t-quote">Great agents who really do care.</p>
          <div class="t-name">D.W. · Google Review</div>
        </div>
        <div class="t-slide">
          <p class="t-quote">Phil is such a fantastic agent to work with! She knows her market, and her networking is incredible. She has been with me every step of the way. I love her!</p>
          <div class="t-name">M.W. · Facebook Review</div>
        </div>
      </div>
      <div class="t-controls">
        <button class="t-arrow t-prev" type="button" aria-label="Previous review">
          <svg viewBox="0 0 24 24" width="18" height="18" fill="none" aria-hidden="true" focusable="false"><path d="M15 5l-7 7 7 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
        </button>
        <div class="t-dots">
          <button class="t-dot active" type="button" aria-label="Review 1 of 3" aria-current="true"></button>
          <button class="t-dot" type="button" aria-label="Review 2 of 3" aria-current="false"></button>
          <button class="t-dot" type="button" aria-label="Review 3 of 3" aria-current="false"></button>
        </div>
        <button class="t-arrow t-next" type="button" aria-label="Next review">
          <svg viewBox="0 0 24 24" width="18" height="18" fill="none" aria-hidden="true" focusable="false"><path d="M9 5l7 7-7 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
        </button>
      </div>
    </div>
  </div>
</section>

<section id="journal">
  <div class="wrap">
    <div class="section-head">
      <h2>Life in the Flathead Valley.</h2>
    </div>
    <div class="journal-grid">
      <a class="journal-card" href="/blog-flathead-valley-market">
        <span class="eyebrow journal-tag">MARKET</span>
        <h3>How the market differs across the Flathead Valley</h3>
        <p>What separates Whitefish, Kalispell, and Columbia Falls when it comes to pricing, inventory, and pace.</p>
        <span class="journal-read">Read the post →</span>
      </a>
      <a class="journal-card" href="/blog-kalispell-vs-whitefish">
        <span class="eyebrow journal-tag">RELOCATING</span>
        <h3>Kalispell vs. Whitefish: which fits your life</h3>
        <p>A straightforward comparison for people moving to the Valley for the first time.</p>
        <span class="journal-read">Read the post →</span>
      </a>
      <a class="journal-card" href="/blog-prepping-home-for-photos">
        <span class="eyebrow journal-tag">SELLING</span>
        <h3>Prepping your home for photos</h3>
        <p>Small, high-impact fixes that make listing photos go further.</p>
        <span class="journal-read">Read the post →</span>
      </a>
    </div>
  </div>
</section>

<section class="cta-band" id="contact">
  <div class="bg-fade" data-src="/images/home_cta_big-mountain.jpg" aria-hidden="true"></div>
  <div class="wrap">
    <h2>Let's talk about buying and selling in Montana.</h2>
    <a class="btn btn-line" href="tel:4068629000">Call (406) 862-9000</a>
  </div>
</section>

</main>

<footer>
  <div class="wrap">
    <div class="foot-grid">
      <div>
        <div class="foot-logo">Rocky Mountain Real Estate</div>
        <p>204 Wisconsin Ave, Whitefish, MT 59937</p>
        <p>(406) 862-9000</p>
        <p>[email protected]</p>
      </div>
      <div>
        <h4>Search</h4>
        <a href="/buy">Whitefish Listings</a>
        <a href="/buy">Kalispell Listings</a>
        <a href="/buy">Columbia Falls Listings</a>
      </div>
      <div>
        <h4>Company</h4>
        <a href="/agents">Our Agents</a>
        <a href="/community">Community</a>
        <a href="/contact">Contact</a>
      </div>
      <div>
        <h4>Connect</h4>
        <a href="https://www.instagram.com/rockymountain_realestate?igsi=MW90MGJmM3Bldm91bg==" target="_blank" rel="noopener">Instagram</a>
        <a href="https://www.facebook.com/share/1DW6PzBBGe/?mibextid=wwXIfr" target="_blank" rel="noopener">Facebook</a>
      </div>
    </div>
    <div class="foot-bottom">
      <span>© 2026 Rocky Mountain Real Estate</span>
      <div class="foot-legal">
        <a href="/privacy">Privacy Policy</a>
        <a href="/accessibility">Accessibility Statement</a>
        <span class="eho-badge">
          <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
            <path d="M12 3L3 11V21H21V11L12 3Z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/>
            <line x1="7" y1="14" x2="17" y2="14" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/>
            <line x1="7" y1="17.5" x2="17" y2="17.5" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/>
          </svg>
          Equal Housing Opportunity
        </span>
      </div>
    </div>
  </div>
</footer>

<script>
  // ---- bg-fade: fade each hero/cta photo in once it finishes loading ----
  // (the gradient+photo are already combined in this element's CSS background-image;
  // we just preload the same URL to know the right moment to reveal it)
  document.querySelectorAll('.bg-fade[data-src]').forEach(function(el){
    var img = new Image();
    img.onload = function(){ el.classList.add('loaded'); };
    img.src = el.dataset.src;
    if(img.complete) img.onload();
  });

  const items = document.querySelectorAll('section:not(.hero), .process-item, .listing-card, .about-content, .t-card, .journal-card');
  const io = new IntersectionObserver((entries)=>{
    entries.forEach(e=>{ if(e.isIntersecting){ e.target.classList.add('in'); } });
  },{ threshold:0.1 });
  items.forEach(el=>{ el.classList.add('reveal'); io.observe(el); });

  // ---- animated stat counters ----
  // Markup already has the real final numbers baked in (see stat-num divs) so
  // the true value shows even if this script never runs. When it does run,
  // and the visitor hasn't asked for reduced motion, animate the count-up.
  const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
  const statEls = document.querySelectorAll('.stat-num');
  if(!prefersReducedMotion){
    const statIO = new IntersectionObserver((entries)=>{
      entries.forEach(entry=>{
        if(entry.isIntersecting){
          const el = entry.target;
          const target = parseInt(el.dataset.count, 10);
          const suffix = el.dataset.suffix || '';
          const duration = 1200;
          const start = performance.now();
          function tick(now){
            const progress = Math.min((now - start) / duration, 1);
            el.textContent = Math.floor(progress * target) + suffix;
            if(progress < 1) requestAnimationFrame(tick);
          }
          requestAnimationFrame(tick);
          statIO.unobserve(el);
        }
      });
    }, { threshold: 0.4 });
    statEls.forEach(el => statIO.observe(el));
  }

  // ---- live listing filter ----
  const whereEl = document.getElementById('f-where');
  const priceEl = document.getElementById('f-price');
  const typeEl = document.getElementById('f-type');
  const bedsEl = document.getElementById('f-beds');
  const goBtn = document.getElementById('f-go');
  const emptyMsg = document.getElementById('filter-empty');
  const cards = document.querySelectorAll('#listings-grid .listing-card');

  function priceInRange(price, bucket){
    if(bucket === 'any') return true;
    if(bucket === 'under-500') return price < 500000;
    if(bucket === '500-1m') return price >= 500000 && price <= 1000000;
    if(bucket === '1m-plus') return price > 1000000;
    return true;
  }

  function runFilter(){
    const where = whereEl.value;
    const price = priceEl.value;
    const type = typeEl.value;
    const beds = bedsEl.value;
    let visibleCount = 0;

    cards.forEach(card=>{
      const cardTown = card.dataset.town;
      const cardPrice = parseInt(card.dataset.price, 10);
      const cardType = card.dataset.type;
      const cardBeds = parseInt(card.dataset.beds, 10);

      const townMatch = (where === 'any' || where === cardTown);
      const priceMatch = priceInRange(cardPrice, price);
      const typeMatch = (type === 'any' || type === cardType);
      const bedsMatch = (beds === 'any' || cardBeds >= parseInt(beds, 10));

      const match = townMatch && priceMatch && typeMatch && bedsMatch;
      card.classList.toggle('hidden', !match);
      if(match) visibleCount++;
    });

    emptyMsg.classList.toggle('show', visibleCount === 0);
  }

  goBtn.addEventListener('click', runFilter);
  [whereEl, priceEl, typeEl, bedsEl].forEach(el => el.addEventListener('change', runFilter));


  (function () {
    var toggle = document.querySelector('.menu-toggle');
    var menu = document.querySelector('.mobile-menu');
    if (!toggle || !menu) return;
    function closeMenu(){ menu.classList.remove('open'); toggle.setAttribute('aria-expanded','false'); }
    function openMenu(){ menu.classList.add('open'); toggle.setAttribute('aria-expanded','true'); }
    toggle.addEventListener('click', function(e){
      e.stopPropagation();
      menu.classList.contains('open') ? closeMenu() : openMenu();
    });
    menu.addEventListener('click', function(e){
      if (e.target.tagName === 'A') closeMenu();
    });
    document.addEventListener('click', function(e){
      if (menu.classList.contains('open') && !menu.contains(e.target) && !toggle.contains(e.target)) {
        closeMenu();
      }
    });
  })();
</script>

<script>
  // ---- testimonial carousel: auto-rotates, click-through via arrows/dots ----
  (function(){
    document.querySelectorAll('.t-carousel').forEach(function(carousel){
      var slides = carousel.querySelectorAll('.t-slide');
      var dots = carousel.querySelectorAll('.t-dot');
      var prevBtn = carousel.querySelector('.t-prev');
      var nextBtn = carousel.querySelector('.t-next');
      var idx = 0;
      var timer = null;
      var prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;

      function show(newIdx){
        slides[idx].classList.remove('active');
        dots[idx].classList.remove('active');
        dots[idx].setAttribute('aria-current', 'false');
        idx = (newIdx + slides.length) % slides.length;
        slides[idx].classList.add('active');
        dots[idx].classList.add('active');
        dots[idx].setAttribute('aria-current', 'true');
      }
      function startAuto(){
        if (prefersReducedMotion) return;
        stopAuto();
        timer = setInterval(function(){ show(idx + 1); }, 6000);
      }
      function stopAuto(){ if (timer) clearInterval(timer); }

      if (nextBtn) nextBtn.addEventListener('click', function(){ show(idx + 1); startAuto(); });
      if (prevBtn) prevBtn.addEventListener('click', function(){ show(idx - 1); startAuto(); });
      dots.forEach(function(dot, i){
        dot.addEventListener('click', function(){ show(i); startAuto(); });
      });
      // Pause auto-rotation on hover/focus so it doesn't fight anyone reading or using keyboard/AT nav.
      carousel.addEventListener('mouseenter', stopAuto);
      carousel.addEventListener('mouseleave', startAuto);
      carousel.addEventListener('focusin', stopAuto);
      carousel.addEventListener('focusout', startAuto);

      startAuto();
    });
  })();
</script>
</body>
</html>

Latest requests

# Url Url Source Date
1 https://www.rockymtnre.com/ 2026-10-16 16:49:02
2 https://www.texarkanatwins.com/%25… 2026-10-16 16:49:02
3 https://www.texarkanatwins.com/%25… 2026-10-16 16:49:01
4 https://www.thebolditalic.com/?gi=… 2026-10-16 16:49:01
5 https://www.texarkanatwins.com/%25… 2026-10-16 16:49:00
6 https://www.thebolditalic.com/?gi=… 2026-10-16 16:49:00
7 https://www.texarkanatwins.com/%25… 2026-10-16 16:48:59
8 https://www.texarkanatwins.com/%25… 2026-10-16 16:48:59
9 https://www.texarkanatwins.com/%25… 2026-10-16 16:48:59
10 https://auth.mediacorp.sg/u/login?… 2026-10-16 16:48:59
11 https://www.thebolditalic.com/?gi=… 2026-10-16 16:48:58
12 https://contoh-psikotes-kerja.netl… 2026-10-16 16:48:58
13 https://www.texarkanatwins.com/%25… 2026-10-16 16:48:57
14 https://www.thebolditalic.com/?gi=… 2026-10-16 16:48:57
15 https://www.texarkanatwins.com/%25… 2026-10-16 16:48:57
16 https://www.thebolditalic.com/?gi=… 2026-10-16 16:48:56
17 https://www.thebolditalic.com/?gi=… 2026-10-16 16:48:54
18 https://www.thebolditalic.com/?gi=… 2026-10-16 16:48:54
19 https://www.texarkanatwins.com/%25… 2026-10-16 16:48:54
20 https://auth.mediacorp.sg/u/login?… 2026-10-16 16:48:53