

<!DOCTYPE html>

<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=Edge">

  <link rel="stylesheet" href="/ZoningOrdinance/assets/css/just-the-docs-default.css">

  <link rel="stylesheet" href="/ZoningOrdinance/assets/css/just-the-docs-head-nav.css" id="jtd-head-nav-stylesheet">

  <style id="jtd-nav-activation">
  
    .site-nav ul li a {
      background-image: none;
    }

  </style>

  

  
    <script src="/ZoningOrdinance/assets/js/vendor/lunr.min.js"></script>
  

  <script src="/ZoningOrdinance/assets/js/just-the-docs.js"></script>

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

  



  <!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Zoning Ordinance (Beta) | Experimental online presentation of the Lebanon, NH Zoning Ordinance. Content may be incomplete or outdated.</title>
<meta name="generator" content="Jekyll v3.10.0" />
<meta property="og:title" content="Zoning Ordinance (Beta)" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="Experimental online presentation of the Lebanon, NH Zoning Ordinance. Content may be incomplete or outdated." />
<meta property="og:description" content="Experimental online presentation of the Lebanon, NH Zoning Ordinance. Content may be incomplete or outdated." />
<link rel="canonical" href="https://3dmcd.github.io/ZoningOrdinance/assets/css/just-the-docs-head-nav.css" />
<meta property="og:url" content="https://3dmcd.github.io/ZoningOrdinance/assets/css/just-the-docs-head-nav.css" />
<meta property="og:site_name" content="Zoning Ordinance (Beta)" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Zoning Ordinance (Beta)" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"Experimental online presentation of the Lebanon, NH Zoning Ordinance. Content may be incomplete or outdated.","headline":"Zoning Ordinance (Beta)","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://3dmcd.github.io/ZoningOrdinance/assets/images/beta-badge.svg"}},"url":"https://3dmcd.github.io/ZoningOrdinance/assets/css/just-the-docs-head-nav.css"}</script>
<!-- End Jekyll SEO tag -->


  <meta name="robots" content="noindex, nofollow, noarchive, nosnippet, noimageindex">
<meta name="googlebot" content="noindex, nofollow, noarchive, nosnippet, noimageindex">

<style>
  html {
    font-size: 1rem !important;
  }

  #main-content {
    container: ordinance-content / inline-size;
    font-size: clamp(1rem, 0.95rem + 0.45vw, 1.125rem);
    line-height: 1.72;
  }

  #main-content ul.legal-outline,
  #main-content ul.legal-outline ul {
    list-style: none;
  }

  #main-content ul.legal-outline {
    padding-left: 1.5rem;
  }

  #main-content ul.legal-outline ul {
    padding-left: 1.5rem;
    margin-top: 0.25rem;
  }

  #main-content ul.legal-outline li {
    margin: 0.25rem 0;
    padding-left: 0;
  }

  #main-content .legal-sublist {
    list-style: none;
    padding-left: 1.5rem;
    margin-top: 0.25rem;
  }

  #main-content .legal-sublist li {
    display: block;
    margin: 0.15rem 0;
    padding-left: 0;
  }

  #main-content .legal-sublist__text {
    display: block;
    width: 100%;
    min-width: 0;
    white-space: normal;
    word-break: normal;
    overflow-wrap: normal;
  }

  #main-content h3,
  #main-content h4,
  #main-content h5 {
    font-family: inherit;
    font-weight: 600;
    text-transform: none;
    letter-spacing: normal;
    line-height: 1.3;
  }

  #main-content h3 {
    font-size: 1.25rem !important;
    margin-top: 1.5rem;
    margin-bottom: 0.45rem;
  }

  #main-content .ordinance-heading__label {
    display: inline-block;
    margin-right: 0.35rem;
    font-weight: 700;
    color: var(--body-heading-color, var(--body-text-color, #2f3a46));
  }

  #main-content .ordinance-heading__title {
    color: var(--body-heading-color, var(--body-text-color, #2f3a46));
  }

  #main-content h4 {
    font-size: 1.125rem !important;
    margin-top: 1.25rem;
    margin-bottom: 0.35rem;
  }

  #main-content h5 {
    font-size: 1.0625rem !important;
    margin-top: 1rem;
    margin-bottom: 0.35rem;
  }

  @media (min-width: 31.25rem) {
    #main-content h3 {
      font-size: 1.375rem !important;
    }

    #main-content h4 {
      font-size: 1.25rem !important;
    }

    #main-content h5 {
      font-size: 1.125rem !important;
    }
  }

  #main-content .legal-item {
    display: grid;
    grid-template-columns: minmax(1.5rem, max-content) minmax(0, 1fr);
    column-gap: 0.5rem;
    align-items: start;
    margin: 0.5rem 0 0.5rem 2rem;
    text-indent: 0;
  }

  #main-content .ordinance-subsection--level4 {
    margin-left: 0.75rem;
  }

  #main-content .ordinance-subsection--level5 {
    margin-left: 1rem;
  }

  #main-content .ordinance-subsection--level4 > h4,
  #main-content .ordinance-subsection--level5 > h5 {
    margin-left: 0;
  }

  #main-content .ordinance-subsection--level5 > ul.legal-outline,
  #main-content .ordinance-subsection--level5 > ul.legal-outline ul,
  #main-content .ordinance-subsection--level5 > .legal-item {
    margin-left: 0.5rem;
  }

  #main-content .legal-marker {
    display: block;
    grid-column: 1;
    font-weight: 600;
    min-width: 1.5rem;
    width: auto;
    margin-left: 0;
    white-space: nowrap;
    word-break: keep-all;
  }

  #main-content .legal-body {
    display: block;
    width: 100%;
    min-width: 0;
  }

  #main-content .legal-item > .legal-body,
  #main-content ul.legal-outline li > .legal-body {
    grid-column: 2;
  }

  #main-content ul.legal-outline li {
    display: grid;
    grid-template-columns: minmax(1.5rem, max-content) minmax(0, 1fr);
    column-gap: 0.5rem;
    align-items: start;
    width: 100%;
  }

  #main-content ul.legal-outline li > .legal-marker {
    grid-column: 1;
  }

  #main-content ul.legal-outline li > :not(.legal-marker) {
    grid-column: 2;
  }

  #main-content ul.legal-outline > li::before,
  #main-content ul.legal-outline ul > li::before {
    display: none !important;
    content: none !important;
  }

  #main-content .ordinance-table-wrap {
    position: relative;
    margin: 1rem 0 1.5rem;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-color: rgba(92, 89, 98, 0.35) transparent;
    scrollbar-width: thin;
  }

  #main-content .ordinance-table-wrap::after {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0.5rem;
    width: 2rem;
    pointer-events: none;
    content: "";
    background: linear-gradient(90deg, rgba(255, 255, 255, 0), var(--body-background-color, #fff));
  }

  #main-content .ordinance-table-wrap--stacked::after {
    display: none;
  }

  #main-content .ordinance-table-wrap--stacked,
  #main-content .ordinance-table-wrap--stacked .table-wrapper {
    overflow-x: visible;
  }

  #main-content .ordinance-table-wrap .table-wrapper {
    margin-bottom: 0;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  #main-content .ordinance-table {
    width: 100%;
    border-collapse: collapse;
  }

  #main-content .ordinance-table caption {
    caption-side: top;
    text-align: left;
    font-weight: 600;
    margin-bottom: 0.5rem;
  }

  #main-content .ordinance-table th,
  #main-content .ordinance-table td {
    border: 1px solid var(--border-color, #d0d7de);
    padding: 0.5rem 0.75rem;
    vertical-align: top;
  }

  #main-content .ordinance-table thead th,
  #main-content .ordinance-table .ordinance-table__subhead {
    background: rgba(127, 140, 155, 0.12);
    font-weight: 600;
  }

  #main-content .ordinance-table th[scope="row"] {
    font-weight: 600;
  }

  #main-content .ordinance-table p {
    margin: 0 0 0.35rem;
  }

  #main-content .ordinance-table p:last-child {
    margin-bottom: 0;
  }

  #main-content .ordinance-table ul.legal-outline {
    padding-left: 0;
    margin: 0 0 0.5rem;
  }

  #main-content .ordinance-table ul.legal-outline:last-child {
    margin-bottom: 0;
  }

  #main-content .ordinance-definition-list,
  #main-content .ordinance-threshold-list {
    margin: 1rem 0 1.5rem;
    border: 1px solid var(--border-color, #d0d7de);
    border-radius: 0.35rem;
    overflow: hidden;
    background: var(--body-background-color, #fff);
  }

  #main-content .ordinance-definition-list__header,
  #main-content .ordinance-threshold-list__header,
  #main-content .ordinance-definition-list dl > div,
  #main-content .ordinance-threshold-list dl > div {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }

  #main-content .ordinance-definition-list__header,
  #main-content .ordinance-threshold-list__header {
    background: rgba(127, 140, 155, 0.12);
    font-weight: 600;
  }

  #main-content .ordinance-definition-list__header span,
  #main-content .ordinance-threshold-list__header span,
  #main-content .ordinance-definition-list dt,
  #main-content .ordinance-definition-list dd,
  #main-content .ordinance-threshold-list dt,
  #main-content .ordinance-threshold-list dd {
    min-width: 0;
    margin: 0;
    padding: 0.55rem 0.75rem;
    overflow-wrap: anywhere;
  }

  #main-content .ordinance-definition-list dt,
  #main-content .ordinance-threshold-list dt {
    font-weight: 600;
  }

  #main-content .ordinance-definition-list dd,
  #main-content .ordinance-threshold-list dd,
  #main-content .ordinance-definition-list__header span + span,
  #main-content .ordinance-threshold-list__header span + span {
    border-left: 1px solid var(--border-color, #d0d7de);
  }

  #main-content .ordinance-definition-list dl,
  #main-content .ordinance-threshold-list dl {
    margin: 0;
  }

  #main-content .ordinance-definition-list dl > div,
  #main-content .ordinance-threshold-list dl > div {
    border-top: 1px solid var(--border-color, #d0d7de);
  }

  @container ordinance-content (max-width: 52rem) {
    #main-content .ordinance-table--mobile-stack {
      display: block;
      width: 100%;
      min-width: 0;
      border-collapse: separate;
    }

    #main-content .ordinance-table--mobile-stack thead {
      position: absolute;
      width: 1px;
      height: 1px;
      overflow: hidden;
      clip: rect(0 0 0 0);
      white-space: nowrap;
      clip-path: inset(50%);
    }

    #main-content .ordinance-table--mobile-stack tbody,
    #main-content .ordinance-table--mobile-stack tr,
    #main-content .ordinance-table--mobile-stack th,
    #main-content .ordinance-table--mobile-stack td {
      display: block;
    }

    #main-content .ordinance-table--mobile-stack tr {
      border: 1px solid var(--border-color, #d0d7de);
      border-radius: 0.35rem;
      background: var(--body-background-color, #fff);
    }

    #main-content .ordinance-table--mobile-stack tr + tr {
      margin-top: 0.75rem;
    }

    #main-content .ordinance-table--mobile-stack th,
    #main-content .ordinance-table--mobile-stack td {
      border: 0;
      padding: 0.75rem 0.85rem;
      text-align: left;
    }

    #main-content .ordinance-table--mobile-stack th + td,
    #main-content .ordinance-table--mobile-stack td + td {
      border-top: 1px solid var(--border-color, #d0d7de);
    }

    #main-content .ordinance-table--mobile-stack th::before,
    #main-content .ordinance-table--mobile-stack td::before {
      display: block;
      margin-bottom: 0.2rem;
      font-size: 0.8125rem;
      font-weight: 600;
      line-height: 1.35;
      color: var(--body-text-color, #5c5962);
      content: attr(data-label);
      opacity: 0.82;
    }
  }

  @media (max-width: 52rem) {
    #main-content .ordinance-table--mobile-stack {
      display: block;
      width: 100%;
      min-width: 0;
      border-collapse: separate;
    }

    #main-content .ordinance-table--mobile-stack thead {
      position: absolute;
      width: 1px;
      height: 1px;
      overflow: hidden;
      clip: rect(0 0 0 0);
      white-space: nowrap;
      clip-path: inset(50%);
    }

    #main-content .ordinance-table--mobile-stack tbody,
    #main-content .ordinance-table--mobile-stack tr,
    #main-content .ordinance-table--mobile-stack th,
    #main-content .ordinance-table--mobile-stack td {
      display: block;
    }

    #main-content .ordinance-table--mobile-stack tr {
      border: 1px solid var(--border-color, #d0d7de);
      border-radius: 0.35rem;
      background: var(--body-background-color, #fff);
    }

    #main-content .ordinance-table--mobile-stack tr + tr {
      margin-top: 0.75rem;
    }

    #main-content .ordinance-table--mobile-stack th,
    #main-content .ordinance-table--mobile-stack td {
      border: 0;
      padding: 0.75rem 0.85rem;
      text-align: left;
    }

    #main-content .ordinance-table--mobile-stack th + td,
    #main-content .ordinance-table--mobile-stack td + td {
      border-top: 1px solid var(--border-color, #d0d7de);
    }

    #main-content .ordinance-table--mobile-stack th::before,
    #main-content .ordinance-table--mobile-stack td::before {
      display: block;
      margin-bottom: 0.2rem;
      font-size: 0.8125rem;
      font-weight: 600;
      line-height: 1.35;
      color: var(--body-text-color, #5c5962);
      content: attr(data-label);
      opacity: 0.82;
    }
  }

  @media (max-width: 31.24rem) {
    #main-content ul.legal-outline,
    #main-content ul.legal-outline ul,
    #main-content .legal-sublist {
      padding-left: 0.75rem;
    }

    #main-content .legal-item,
    #main-content .ordinance-subsection--level5 > .legal-item {
      margin-left: 0.5rem;
    }

    #main-content .ordinance-subsection--level4,
    #main-content .ordinance-subsection--level5,
    #main-content .ordinance-subsection--level5 > ul.legal-outline,
    #main-content .ordinance-subsection--level5 > ul.legal-outline ul {
      margin-left: 0;
    }

    #main-content .legal-item,
    #main-content ul.legal-outline li {
      grid-template-columns: minmax(1.25rem, max-content) minmax(0, 1fr);
      column-gap: 0.35rem;
    }

    #main-content .legal-marker {
      min-width: 1.25rem;
    }

    #main-content .ordinance-table th,
    #main-content .ordinance-table td {
      padding: 0.45rem 0.6rem;
    }

    #main-content .ordinance-definition-list__header span,
    #main-content .ordinance-threshold-list__header span,
    #main-content .ordinance-definition-list dt,
    #main-content .ordinance-definition-list dd,
    #main-content .ordinance-threshold-list dt,
    #main-content .ordinance-threshold-list dd {
      padding: 0.55rem 0.6rem;
    }
  }

  #main-content .ordinance-figure {
    margin: 1rem 0 1.5rem;
  }

  #main-content .ordinance-figure__image {
    display: block;
    max-width: 100%;
    height: auto;
  }

  #main-content .ordinance-figure__placeholder {
    border: 1px dashed var(--border-color, #d0d7de);
    border-radius: 0.5rem;
    padding: 1rem 1.125rem;
    background: rgba(127, 140, 155, 0.08);
  }

  #main-content .ordinance-figure__title,
  #main-content .ordinance-figure__note,
  #main-content .ordinance-figure__reference {
    margin: 0;
  }

  #main-content .ordinance-figure__title {
    font-weight: 600;
  }

  #main-content .ordinance-figure__note,
  #main-content .ordinance-figure__reference {
    margin-top: 0.45rem;
  }

  #main-content .ordinance-figure figcaption {
    margin-top: 0.5rem;
    font-size: 0.95em;
  }

  .site-nav .nav-list .nav-list-item--article-sections > .nav-list {
    padding-bottom: 0.35rem;
  }

  .site-nav .nav-list .nav-list-item--section-link .nav-list-link {
    min-height: auto;
    line-height: 1.35;
    padding-top: 0.35rem;
    padding-bottom: 0.35rem;
  }

  .site-nav .nav-list .nav-list-item--section-level-2 .nav-list-link {
    font-size: 0.98em;
    padding-top: 0.25rem;
    padding-bottom: 0.25rem;
  }

  @media (min-width: 50rem) {
    .site-nav .nav-list .nav-list-item--section-link .nav-list-link {
      padding-top: 0.3rem;
      padding-bottom: 0.3rem;
    }
  }

  .ordinance-site-footer {
    color: inherit;
    line-height: 1.5;
  }

  .ordinance-site-footer p {
    margin: 0;
  }

  .ordinance-site-footer a {
    font-weight: 500;
  }

  .theme-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.45rem 0.75rem;
    margin-bottom: 0.75rem;
    font-size: 0.8125rem;
    font-weight: 600;
    line-height: 1.2;
    color: #163a59;
    background: #e2ebf4;
    border: 1px solid #c1d1e0;
    border-radius: 999px;
    cursor: pointer;
    transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease, transform 150ms ease;
  }

  .theme-toggle:hover {
    color: #102c44;
    background: #d5e3ef;
    border-color: #adc3d6;
  }

  .theme-toggle:focus-visible {
    outline: 2px solid #2e6fa3;
    outline-offset: 2px;
  }

  .theme-toggle:active {
    transform: translateY(1px);
  }

  html[data-theme-mode="dark"] {
    --ordinance-dark-bg: #0f1822;
    --ordinance-dark-panel: #152331;
    --ordinance-dark-panel-alt: #1a2d3d;
    --ordinance-dark-panel-hover: #20384c;
    --ordinance-dark-border: #355269;
    --ordinance-dark-border-soft: rgba(115, 153, 180, 0.26);
    --ordinance-dark-text: #dbe5ee;
    --ordinance-dark-muted: #a7bac9;
    --ordinance-dark-heading: #f5f8fb;
    --ordinance-dark-link: #8fc7ff;
    --ordinance-dark-link-strong: #c2e0ff;
    --ordinance-dark-shadow: rgba(3, 10, 18, 0.45);
  }

  html[data-theme-mode="dark"] body,
  html[data-theme-mode="dark"] .side-bar,
  html[data-theme-mode="dark"] .side-bar + .main .main-header,
  html[data-theme-mode="dark"] .main-header {
    color: var(--ordinance-dark-text);
    background-color: var(--ordinance-dark-bg);
  }

  html[data-theme-mode="dark"] body {
    background-image: radial-gradient(circle at top, rgba(121, 170, 206, 0.08), transparent 38%);
  }

  html[data-theme-mode="dark"] .side-bar {
    background-color: #12202d;
    border-right-color: var(--ordinance-dark-border-soft);
    box-shadow: inset -1px 0 0 var(--ordinance-dark-border-soft);
  }

  html[data-theme-mode="dark"] .site-header,
  html[data-theme-mode="dark"] .main-header {
    border-bottom-color: var(--ordinance-dark-border-soft);
  }

  html[data-theme-mode="dark"] .site-title,
  html[data-theme-mode="dark"] .main-content h1,
  html[data-theme-mode="dark"] .main-content h2,
  html[data-theme-mode="dark"] .main-content h3,
  html[data-theme-mode="dark"] .main-content h4,
  html[data-theme-mode="dark"] .main-content h5,
  html[data-theme-mode="dark"] .main-content h6,
  html[data-theme-mode="dark"] #main-content .ordinance-heading__label,
  html[data-theme-mode="dark"] #main-content .ordinance-heading__title {
    color: var(--ordinance-dark-heading);
  }

  html[data-theme-mode="dark"] a,
  html[data-theme-mode="dark"] .icon,
  html[data-theme-mode="dark"] .main-content .anchor-heading svg,
  html[data-theme-mode="dark"] .nav-list.nav-category-list > .nav-list-item > .nav-list > .nav-list-item > .nav-list-link,
  html[data-theme-mode="dark"] .nav-list.nav-category-list > .nav-list-item > .nav-list > .nav-list-item > .nav-list-expander {
    color: var(--ordinance-dark-link);
  }

  html[data-theme-mode="dark"] a:not([class]) {
    text-decoration-color: rgba(143, 199, 255, 0.28);
  }

  html[data-theme-mode="dark"] a:not([class]):hover {
    color: var(--ordinance-dark-link-strong);
    text-decoration-color: rgba(194, 224, 255, 0.5);
  }

  html[data-theme-mode="dark"] .site-title:hover,
  html[data-theme-mode="dark"] .site-button:hover,
  html[data-theme-mode="dark"] .nav-list .nav-list-item .nav-list-expander:hover {
    background-image: linear-gradient(-90deg, rgba(32, 56, 76, 0.9) 0%, rgba(32, 56, 76, 0.45) 100%);
  }

  html[data-theme-mode="dark"] .nav-list .nav-list-item .nav-list-link,
  html[data-theme-mode="dark"] .nav-list .nav-list-item .nav-list-expander,
  html[data-theme-mode="dark"] .search-label .search-icon,
  html[data-theme-mode="dark"] .search-result-doc.search-result-doc-parent,
  html[data-theme-mode="dark"] .search-result-rel-url,
  html[data-theme-mode="dark"] .breadcrumb-nav-list-item::after,
  html[data-theme-mode="dark"] .site-footer {
    color: var(--ordinance-dark-muted);
  }

  html[data-theme-mode="dark"] .nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-link,
  html[data-theme-mode="dark"] .nav-list .nav-list-item > .nav-list .nav-list-item .nav-list-expander {
    color: var(--ordinance-dark-muted);
  }

  html[data-theme-mode="dark"] .nav-list .nav-list-item .nav-list-link:hover,
  html[data-theme-mode="dark"] .nav-list .nav-list-item .nav-list-link.active {
    color: var(--ordinance-dark-heading);
    background-image: linear-gradient(-90deg, rgba(32, 56, 76, 0.9) 0%, rgba(32, 56, 76, 0.18) 100%);
  }

  html[data-theme-mode="dark"] .search-input-wrap,
  html[data-theme-mode="dark"] .search-results,
  html[data-theme-mode="dark"] .table-wrapper,
  html[data-theme-mode="dark"] #main-content .ordinance-table-wrap {
    box-shadow: 0 12px 30px var(--ordinance-dark-shadow);
  }

  html[data-theme-mode="dark"] #main-content .ordinance-table-wrap::after {
    background: linear-gradient(90deg, rgba(21, 35, 49, 0), var(--ordinance-dark-panel));
  }

  html[data-theme-mode="dark"] #main-content .ordinance-table--mobile-stack tr {
    background: var(--ordinance-dark-panel);
    border-color: var(--ordinance-dark-border-soft);
  }

  html[data-theme-mode="dark"] #main-content .ordinance-table--mobile-stack th + td,
  html[data-theme-mode="dark"] #main-content .ordinance-table--mobile-stack td + td {
    border-top-color: var(--ordinance-dark-border-soft);
  }

  html[data-theme-mode="dark"] #main-content .ordinance-table--mobile-stack th::before,
  html[data-theme-mode="dark"] #main-content .ordinance-table--mobile-stack td::before {
    color: var(--ordinance-dark-muted);
  }

  html[data-theme-mode="dark"] #main-content .ordinance-definition-list,
  html[data-theme-mode="dark"] #main-content .ordinance-threshold-list {
    background: var(--ordinance-dark-panel);
    border-color: var(--ordinance-dark-border-soft);
  }

  html[data-theme-mode="dark"] #main-content .ordinance-definition-list__header,
  html[data-theme-mode="dark"] #main-content .ordinance-threshold-list__header {
    background: var(--ordinance-dark-panel-alt);
  }

  html[data-theme-mode="dark"] #main-content .ordinance-definition-list dd,
  html[data-theme-mode="dark"] #main-content .ordinance-threshold-list dd,
  html[data-theme-mode="dark"] #main-content .ordinance-definition-list__header span + span,
  html[data-theme-mode="dark"] #main-content .ordinance-threshold-list__header span + span,
  html[data-theme-mode="dark"] #main-content .ordinance-definition-list dl > div,
  html[data-theme-mode="dark"] #main-content .ordinance-threshold-list dl > div {
    border-color: var(--ordinance-dark-border-soft);
  }

  html[data-theme-mode="dark"] .search-input,
  html[data-theme-mode="dark"] .search-results,
  html[data-theme-mode="dark"] .search-active .search-input,
  html[data-theme-mode="dark"] th,
  html[data-theme-mode="dark"] td,
  html[data-theme-mode="dark"] #main-content .ordinance-table th,
  html[data-theme-mode="dark"] #main-content .ordinance-table td,
  html[data-theme-mode="dark"] #main-content .ordinance-figure__placeholder {
    color: var(--ordinance-dark-text);
    background-color: var(--ordinance-dark-panel);
  }

  html[data-theme-mode="dark"] .search-input,
  html[data-theme-mode="dark"] .search-results,
  html[data-theme-mode="dark"] .search-result-previews,
  html[data-theme-mode="dark"] th,
  html[data-theme-mode="dark"] td,
  html[data-theme-mode="dark"] #main-content .ordinance-table th,
  html[data-theme-mode="dark"] #main-content .ordinance-table td,
  html[data-theme-mode="dark"] #main-content .ordinance-figure__placeholder {
    border-color: var(--ordinance-dark-border-soft);
  }

  html[data-theme-mode="dark"] .search-input {
    border: 1px solid transparent;
  }

  html[data-theme-mode="dark"] .search-input:focus {
    border-color: rgba(143, 199, 255, 0.5);
    box-shadow: inset 0 0 0 1px rgba(143, 199, 255, 0.3);
  }

  html[data-theme-mode="dark"] .search-result:hover,
  html[data-theme-mode="dark"] .search-result.active {
    background-color: var(--ordinance-dark-panel-hover);
  }

  html[data-theme-mode="dark"] .search-result-doc .search-result-icon,
  html[data-theme-mode="dark"] .search-input:focus + .search-label .search-icon {
    color: var(--ordinance-dark-link);
  }

  html[data-theme-mode="dark"] .search-result-previews,
  html[data-theme-mode="dark"] .search-no-result {
    color: var(--ordinance-dark-text);
  }

  html[data-theme-mode="dark"] thead th,
  html[data-theme-mode="dark"] #main-content .ordinance-table thead th,
  html[data-theme-mode="dark"] #main-content .ordinance-table .ordinance-table__subhead {
    color: var(--ordinance-dark-heading);
    background-color: var(--ordinance-dark-panel-alt);
  }

  html[data-theme-mode="dark"] hr,
  html[data-theme-mode="dark"] blockquote,
  html[data-theme-mode="dark"] .nav-category,
  html[data-theme-mode="dark"] thead th,
  html[data-theme-mode="dark"] th,
  html[data-theme-mode="dark"] td,
  html[data-theme-mode="dark"] :not(pre, figure) > code,
  html[data-theme-mode="dark"] #main-content .ordinance-table th,
  html[data-theme-mode="dark"] #main-content .ordinance-table td,
  html[data-theme-mode="dark"] #main-content .ordinance-figure__placeholder {
    border-color: var(--ordinance-dark-border-soft);
  }

  html[data-theme-mode="dark"] .theme-toggle {
    color: var(--ordinance-dark-heading);
    background: var(--ordinance-dark-panel-alt);
    border-color: var(--ordinance-dark-border);
    box-shadow: 0 8px 24px rgba(1, 7, 12, 0.28);
  }

  html[data-theme-mode="dark"] .theme-toggle:hover {
    background: var(--ordinance-dark-panel-hover);
    border-color: rgba(143, 199, 255, 0.45);
  }
</style>
<script src="/ZoningOrdinance/assets/js/search-highlight.js"></script>
<script src="/ZoningOrdinance/assets/js/search-enhancements.js"></script>
<script>
  document.addEventListener('DOMContentLoaded', function () {
    var legalListPattern = /^(?:[A-Z]\.|[a-z]\.|\d+\.\d+|\d+\.|\(\d+\))/;
    var legalLists = document.querySelectorAll('#main-content ul');
    legalLists.forEach(function (list) {
      var firstItem = list.querySelector(':scope > li');
      if (!firstItem) {
        return;
      }
      var text = firstItem.textContent.trim();
      if (legalListPattern.test(text)) {
        list.classList.add('legal-outline');
      }
    });

    function wrapLegalBodies(containerSelector) {
      var items = Array.from(document.querySelectorAll(containerSelector));
      items.forEach(function (item) {
        var marker = item.querySelector(':scope > .legal-marker');
        if (!marker || item.querySelector(':scope > .legal-body')) {
          return;
        }
        /* Paragraph legal items only contain inline content, so keep a span
           wrapper there. List items may contain nested lists and paragraphs,
           so use a block wrapper to keep that DOM valid. */
        var bodyTag = item.tagName === 'P' ? 'span' : 'div';
        var body = document.createElement(bodyTag);
        body.className = 'legal-body';
        var child = marker.nextSibling;
        while (child) {
          var next = child.nextSibling;
          body.appendChild(child);
          child = next;
        }
        item.appendChild(body);
      });
    }

    wrapLegalBodies('#main-content .legal-item');
    wrapLegalBodies('#main-content ul.legal-outline li');

    function enhanceResponsiveTables() {
      var tables = Array.from(document.querySelectorAll('#main-content .ordinance-table'));
      tables.forEach(function (table) {
        var headerRow = table.querySelector('thead tr:last-child');
        if (!headerRow) {
          return;
        }

        var headers = Array.from(headerRow.querySelectorAll('th, td')).map(function (cell) {
          return cell.textContent.replace(/\s+/g, ' ').trim();
        });

        if (!headers.length) {
          return;
        }

        var bodyRows = Array.from(table.querySelectorAll('tbody tr'));
        bodyRows.forEach(function (row) {
          var cells = Array.from(row.querySelectorAll(':scope > th, :scope > td'));
          cells.forEach(function (cell, index) {
            if (headers[index]) {
              cell.setAttribute('data-label', headers[index]);
            }
          });
        });

        var wrap = table.closest('.ordinance-table-wrap');

        if (table.classList.contains('ordinance-table--mobile-stack')) {
          if (wrap) {
            wrap.classList.add('ordinance-table-wrap--stacked');
            wrap.classList.remove('ordinance-table-wrap--scrollable');
          }
          return;
        }

        if (wrap && headers.length > 2) {
          wrap.classList.add('ordinance-table-wrap--scrollable');
        }
      });
    }

    enhanceResponsiveTables();

    function wrapSubsections(selector, level) {
      var subsectionHeadings = Array.from(document.querySelectorAll(selector));
      subsectionHeadings.forEach(function (heading) {
        if (heading.parentElement && heading.parentElement.classList.contains('ordinance-subsection--level' + level)) {
          return;
        }
        var wrapper = document.createElement('div');
        wrapper.className = 'ordinance-subsection ordinance-subsection--level' + level;
        heading.parentNode.insertBefore(wrapper, heading);
        wrapper.appendChild(heading);

        var sibling = wrapper.nextElementSibling;
        var stopPattern = level === 4 ? /^H[1-4]$/ : /^H[1-5]$/;
        while (sibling && !stopPattern.test(sibling.tagName)) {
          var next = sibling.nextElementSibling;
          wrapper.appendChild(sibling);
          sibling = next;
        }
      });
    }

    var sectionHeadings = Array.from(document.querySelectorAll('#main-content h2'));
    sectionHeadings.forEach(function (heading) {
      if (heading.querySelector('.ordinance-heading__label')) {
        return;
      }
      var anchorLink = heading.querySelector(':scope > .anchor-heading');
      var text = Array.from(heading.childNodes)
        .filter(function (node) {
          return !(node.nodeType === Node.ELEMENT_NODE && node.classList && node.classList.contains('anchor-heading'));
        })
        .map(function (node) {
          return node.textContent;
        })
        .join(' ')
        .replace(/\s+/g, ' ')
        .trim();
      var match = text.match(/^(Section\s+\d+[A-Z]?)\s+(.+)$/);
      if (!match) {
        return;
      }
      heading.textContent = '';
      if (anchorLink) {
        heading.appendChild(anchorLink);
      }
      var label = document.createElement('span');
      label.className = 'ordinance-heading__label';
      label.textContent = match[1];
      var title = document.createElement('span');
      title.className = 'ordinance-heading__title';
      title.textContent = match[2];
      heading.appendChild(label);
      heading.appendChild(title);
    });

    function normalizePath(path) {
      if (!path) {
        return '/';
      }

      var pathname = path;
      try {
        pathname = new URL(path, window.location.origin).pathname;
      } catch (error) {
        pathname = path;
      }

      pathname = pathname.replace(/index\.html$/, '');

      if (!pathname.endsWith('/')) {
        pathname += '/';
      }

      return pathname;
    }

    function normalizeHash(hash) {
      if (!hash) {
        return '';
      }

      return hash.charAt(0) === '#' ? hash : '#' + hash;
    }

    function syncSidebarSectionNav() {
      var siteNav = document.getElementById('site-nav');
      if (!siteNav) {
        return;
      }

      var currentPath = normalizePath(window.location.pathname);
      var currentHash = normalizeHash(window.location.hash);
      var sectionItems = Array.from(siteNav.querySelectorAll('.nav-list-item--section-link'));

      sectionItems.forEach(function (item) {
        var link = item.querySelector(':scope > .nav-list-link');
        if (!link) {
          return;
        }

        var linkUrl = new URL(link.href, window.location.origin);
        var linkPath = normalizePath(linkUrl.pathname);
        var linkHash = normalizeHash(linkUrl.hash);
        var isActive = Boolean(currentHash) && linkPath === currentPath && linkHash === currentHash;
        link.classList.toggle('active', isActive);

        if (!item.classList.contains('nav-list-item--section-group')) {
          item.classList.toggle('active', isActive);
        }
      });

      var sectionGroups = Array.from(siteNav.querySelectorAll('.nav-list-item--section-group'));
      sectionGroups.forEach(function (item) {
        var directLink = item.querySelector(':scope > .nav-list-link');
        var expander = item.querySelector(':scope > .nav-list-expander');
        var directActive = directLink && directLink.classList.contains('active');
        var descendantActive = item.querySelector(':scope > .nav-list .nav-list-link.active');
        var shouldOpen = Boolean(directActive || descendantActive);

        item.classList.toggle('active', shouldOpen);
        if (expander) {
          expander.setAttribute('aria-expanded', shouldOpen ? 'true' : 'false');
        }
      });
    }

    var sectionGroupLinks = Array.from(document.querySelectorAll('#site-nav .nav-list-item--section-group > .nav-list-link'));
    sectionGroupLinks.forEach(function (link) {
      link.addEventListener('click', function (event) {
        if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) {
          return;
        }

        var linkUrl = new URL(link.href, window.location.origin);
        if (normalizePath(linkUrl.pathname) !== normalizePath(window.location.pathname)) {
          return;
        }

        event.preventDefault();
        var hash = normalizeHash(linkUrl.hash);
        if (hash) {
          if (window.history && window.history.pushState) {
            window.history.pushState(null, '', hash);
          } else {
            window.location.hash = hash;
          }

          var target = document.getElementById(hash.slice(1));
          if (target) {
            target.scrollIntoView();
          }
        }

        syncSidebarSectionNav();
      });
    });

    syncSidebarSectionNav();
    window.addEventListener('hashchange', syncSidebarSectionNav);

    wrapSubsections('#main-content h5', 5);
    wrapSubsections('#main-content h4', 4);

    var toggles = Array.from(document.querySelectorAll('[data-theme-toggle]'));

    function syncThemeState(theme) {
      document.documentElement.setAttribute('data-theme-mode', theme === 'dark' ? 'dark' : 'light');
    }

    function updateText(theme) {
      syncThemeState(theme);

      toggles.forEach(function (toggle) {
        var darkModeActive = theme === 'dark';
        toggle.textContent = darkModeActive ? 'Light mode' : 'Dark mode';
        toggle.setAttribute('aria-pressed', darkModeActive ? 'true' : 'false');
      });
    }

    var stored = localStorage.getItem('theme');
    if (stored) {
      jtd.setTheme(stored);
      updateText(stored);
    } else {
      updateText(jtd.getTheme());
    }

    toggles.forEach(function (toggle) {
      toggle.addEventListener('click', function () {
        var current = jtd.getTheme();
        var next = current === 'dark' ? 'default' : 'dark';
        jtd.setTheme(next);
        localStorage.setItem('theme', next);
        updateText(next);
      });
    });
  });
</script>


</head>

<body>
  <a class="skip-to-main" href="#main-content">Skip to main content</a>
  <svg xmlns="http://www.w3.org/2000/svg" class="d-none">
  <symbol id="svg-link" viewBox="0 0 24 24">
  <title>Link</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link">
    <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>
  </svg>
</symbol>

  <symbol id="svg-menu" viewBox="0 0 24 24">
  <title>Menu</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu">
    <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line>
  </svg>
</symbol>

  <symbol id="svg-arrow-right" viewBox="0 0 24 24">
  <title>Expand</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right">
    <polyline points="9 18 15 12 9 6"></polyline>
  </svg>
</symbol>

  <!-- Feather. MIT License: https://github.com/feathericons/feather/blob/master/LICENSE -->
<symbol id="svg-external-link" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-external-link">
  <title id="svg-external-link-title">(external link)</title>
  <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line>
</symbol>

  
    <symbol id="svg-doc" viewBox="0 0 24 24">
  <title>Document</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file">
    <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline>
  </svg>
</symbol>

    <symbol id="svg-search" viewBox="0 0 24 24">
  <title>Search</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search">
    <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line>
  </svg>
</symbol>

  
  
    <!-- Bootstrap Icons. MIT License: https://github.com/twbs/icons/blob/main/LICENSE.md -->
<symbol id="svg-copy" viewBox="0 0 16 16">
  <title>Copy</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard" viewBox="0 0 16 16">
    <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z"/>
    <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z"/>
  </svg>
</symbol>
<symbol id="svg-copied" viewBox="0 0 16 16">
  <title>Copied</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-check-fill" viewBox="0 0 16 16">
    <path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3Zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3Z"/>
    <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5v-1Zm6.854 7.354-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708.708Z"/>
  </svg>
</symbol>

  
</svg>

  
  
  
  <div class="main" id="top">
    <div id="main-header" class="main-header">
  
    

<div class="search" role="search">
  <div class="search-input-wrap">
    <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="Search Zoning Ordinance (Beta)" autocomplete="off">
    <label for="search-input" class="search-label">
      <span class="sr-only">Search Zoning Ordinance (Beta)</span>
      <svg viewBox="0 0 24 24" class="search-icon" aria-hidden="true"><use xlink:href="#svg-search"></use></svg>
    </label>
  </div>
  <div id="search-results" class="search-results"></div>
</div>

  
  
  
</div>

    <div class="main-content-wrap">
      
      <main id="main-content" class="main-content" tabindex="-1">
        <article class="ordinance-article" role="article">
          
            

          
        </article>

        
          
        

        
<hr>
<footer>
  

  

  <div class="d-md-none mt-4 fs-2">
    
    
      <div class="ordinance-site-footer">
  <button type="button" class="btn-reset theme-toggle" data-theme-toggle aria-pressed="false">Dark mode</button>
  <p>
    Experimental beta site. Content may be incomplete or outdated. For the official ordinance, visit
    <a href="https://lebanonnh.gov/ZoningOrdinance">the City of Lebanon website</a>.
  </p>
</div>

    
  </div>
</footer>

      </main>
    </div>
    
      

<div class="search-overlay"></div>

    
  </div>

  
</body>
</html>

