{"id":742,"date":"2026-07-30T09:21:41","date_gmt":"2026-07-30T01:21:41","guid":{"rendered":"https:\/\/luminvolt.com\/"},"modified":"2026-07-30T10:37:59","modified_gmt":"2026-07-30T02:37:59","slug":"calculateur-de-charge-structurelle-de-montage-solaire","status":"publish","type":"page","link":"https:\/\/luminvolt.com\/fr\/calculateur-de-charge-structurelle-de-montage-solaire\/","title":{"rendered":"Calculateur de charge structurale pour montage solaire"},"content":{"rendered":"\n<style>\n  body.page-id-742 #right-sidebar {\n    display: none !important;\n  }\n\n  body.page-id-742 #primary {\n    float: none !important;\n    width: 100% !important;\n  }\n\n  body.page-id-742 #page.site {\n    max-width: none !important;\n  }\n\n  body.page-id-742 .site-content {\n    display: block !important;\n    padding: 0 !important;\n  }\n\n  body.page-id-742 .site-main {\n    margin: 0 !important;\n  }\n\n  body.page-id-742 .inside-article {\n    padding: 0 !important;\n    background: transparent !important;\n  }\n\n  body.page-id-742 .entry-content {\n    margin: 0 !important;\n  }\n\n  .slc {\n    --slc-ink: #10251f;\n    --slc-ink-soft: #1b3b31;\n    --slc-green: #16815d;\n    --slc-green-dark: #0d6749;\n    --slc-green-bright: #39b98a;\n    --slc-mint: #e8f5ef;\n    --slc-mint-strong: #d6eee4;\n    --slc-sand: #f3f5f0;\n    --slc-white: #fff;\n    --slc-text: #51635d;\n    --slc-line: #d9e4df;\n    --slc-danger: #a44334;\n    --slc-warning: #9b6725;\n    color: var(--slc-ink);\n    font-family: inherit;\n    line-height: 1.6;\n  }\n\n  .slc,\n  .slc * {\n    box-sizing: border-box;\n  }\n\n  .slc [hidden] {\n    display: none !important;\n  }\n\n  .slc .slc-wrap {\n    width: min(100% - 40px, 1240px);\n    margin: 0 auto;\n  }\n\n  .slc h1,\n  .slc h2,\n  .slc h3,\n  .slc h4,\n  .slc p {\n    margin-top: 0;\n  }\n\n  .slc h1,\n  .slc h2,\n  .slc h3,\n  .slc h4 {\n    color: var(--slc-ink);\n    font-weight: 760;\n    letter-spacing: -0.025em;\n    line-height: 1.12;\n  }\n\n  .slc h1 {\n    max-width: 780px;\n    margin-bottom: 22px;\n    color: #fff;\n    font-size: clamp(40px, 6vw, 68px);\n  }\n\n  .slc h2 {\n    margin-bottom: 16px;\n    font-size: clamp(30px, 4vw, 46px);\n  }\n\n  .slc h3 {\n    margin-bottom: 12px;\n    font-size: 22px;\n  }\n\n  .slc h4 {\n    margin-bottom: 0;\n    font-size: 16px;\n  }\n\n  .slc p {\n    color: var(--slc-text);\n  }\n\n  .slc .slc-eyebrow {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin-bottom: 18px;\n    color: #78dfb9;\n    font-size: 12px;\n    font-weight: 850;\n    letter-spacing: 0.15em;\n    text-transform: uppercase;\n  }\n\n  .slc .slc-eyebrow::before {\n    width: 28px;\n    height: 2px;\n    background: currentColor;\n    content: \"\";\n  }\n\n  .slc .slc-hero {\n    position: relative;\n    isolation: isolate;\n    overflow: hidden;\n    padding: clamp(70px, 9vw, 112px) 0;\n    background:\n      radial-gradient(circle at 82% 18%, rgba(57, 185, 138, 0.2), transparent 27%),\n      linear-gradient(135deg, #0d251e 0%, #12392e 58%, #0c2b21 100%);\n  }\n\n  .slc .slc-hero::after {\n    position: absolute;\n    z-index: -1;\n    inset: 0;\n    background-image:\n      linear-gradient(rgba(255, 255, 255, 0.035) 1px, transparent 1px),\n      linear-gradient(90deg, rgba(255, 255, 255, 0.035) 1px, transparent 1px);\n    background-size: 60px 60px;\n    content: \"\";\n    mask-image: linear-gradient(to right, #000, transparent 92%);\n  }\n\n  .slc .slc-hero-grid {\n    display: grid;\n    grid-template-columns: minmax(0, 1.25fr) minmax(300px, 0.55fr);\n    gap: clamp(42px, 7vw, 96px);\n    align-items: center;\n  }\n\n  .slc .slc-hero-lead {\n    max-width: 720px;\n    margin-bottom: 26px;\n    color: rgba(255, 255, 255, 0.72);\n    font-size: clamp(17px, 2vw, 21px);\n  }\n\n  .slc .slc-hero-actions,\n  .slc .slc-guide-actions {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 12px;\n  }\n\n  .slc .slc-button {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 48px;\n    padding: 12px 20px;\n    border: 1px solid #47c99a;\n    border-radius: 8px;\n    background: #47c99a;\n    color: #0a2b20;\n    font-size: 14px;\n    font-weight: 800;\n    text-decoration: none;\n    transition: background 180ms ease, border-color 180ms ease, transform 180ms ease;\n  }\n\n  .slc .slc-button:hover {\n    border-color: #70deb7;\n    background: #70deb7;\n    color: #0a2b20;\n    transform: translateY(-1px);\n  }\n\n  .slc .slc-button--ghost {\n    border-color: rgba(255, 255, 255, 0.34);\n    background: rgba(255, 255, 255, 0.05);\n    color: #fff;\n  }\n\n  .slc .slc-button--ghost:hover {\n    border-color: rgba(255, 255, 255, 0.58);\n    background: rgba(255, 255, 255, 0.12);\n    color: #fff;\n  }\n\n  .slc .slc-hero-panel {\n    display: grid;\n    gap: 1px;\n    overflow: hidden;\n    border: 1px solid rgba(255, 255, 255, 0.14);\n    border-radius: 8px;\n    background: rgba(255, 255, 255, 0.14);\n  }\n\n  .slc .slc-hero-panel div {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 20px;\n    min-height: 62px;\n    padding: 14px 18px;\n    background: rgba(7, 32, 24, 0.76);\n  }\n\n  .slc .slc-hero-panel span {\n    color: rgba(255, 255, 255, 0.58);\n    font-size: 11px;\n    font-weight: 800;\n    letter-spacing: 0.1em;\n    text-transform: uppercase;\n  }\n\n  .slc .slc-hero-panel strong {\n    color: #fff;\n    font-size: 14px;\n    text-align: right;\n  }\n\n  .slc .slc-hero-visual {\n    position: relative;\n    min-height: 330px;\n    overflow: hidden;\n    padding: 22px;\n    border: 1px solid rgba(255, 255, 255, 0.16);\n    border-radius: 8px;\n    background:\n      linear-gradient(145deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.02)),\n      rgba(7, 32, 24, 0.72);\n    box-shadow: 0 24px 64px rgba(0, 0, 0, 0.18);\n  }\n\n  .slc .slc-visual-head,\n  .slc .slc-visual-metrics {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 16px;\n  }\n\n  .slc .slc-visual-head {\n    position: relative;\n    z-index: 2;\n  }\n\n  .slc .slc-visual-head span {\n    color: rgba(255, 255, 255, 0.55);\n    font-size: 10px;\n    font-weight: 850;\n    letter-spacing: 0.12em;\n    text-transform: uppercase;\n  }\n\n  .slc .slc-visual-head strong {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n    color: #fff;\n    font-size: 12px;\n  }\n\n  .slc .slc-visual-head strong::before {\n    width: 7px;\n    height: 7px;\n    border-radius: 50%;\n    background: #58d5a6;\n    box-shadow: 0 0 0 4px rgba(88, 213, 166, 0.12);\n    content: \"\";\n  }\n\n  .slc .slc-panel-diagram {\n    position: relative;\n    height: 195px;\n    margin: 9px 0 4px;\n  }\n\n  .slc .slc-panel-array {\n    position: absolute;\n    top: 54px;\n    left: 50%;\n    display: grid;\n    grid-template-columns: repeat(3, 52px);\n    grid-template-rows: repeat(2, 39px);\n    gap: 4px;\n    padding: 7px;\n    border: 1px solid rgba(120, 223, 185, 0.5);\n    background: #173e34;\n    box-shadow: 0 16px 32px rgba(0, 0, 0, 0.2);\n    transform: translateX(-50%) skewY(-8deg);\n  }\n\n  .slc .slc-panel-array span {\n    border: 1px solid rgba(120, 223, 185, 0.28);\n    background:\n      linear-gradient(rgba(120, 223, 185, 0.08) 1px, transparent 1px),\n      linear-gradient(90deg, rgba(120, 223, 185, 0.08) 1px, transparent 1px),\n      linear-gradient(145deg, #164d40, #0e3028);\n    background-size: 12px 12px;\n  }\n\n  .slc .slc-panel-diagram::before,\n  .slc .slc-panel-diagram::after {\n    position: absolute;\n    left: 50%;\n    background: rgba(120, 223, 185, 0.55);\n    content: \"\";\n  }\n\n  .slc .slc-panel-diagram::before {\n    top: 137px;\n    width: 2px;\n    height: 34px;\n  }\n\n  .slc .slc-panel-diagram::after {\n    top: 169px;\n    width: 128px;\n    height: 2px;\n    transform: translateX(-50%);\n  }\n\n  .slc .slc-load-arrow {\n    position: absolute;\n    z-index: 2;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    color: rgba(255, 255, 255, 0.62);\n    font-size: 9px;\n    font-weight: 820;\n    letter-spacing: 0.09em;\n    text-transform: uppercase;\n  }\n\n  .slc .slc-load-arrow::after {\n    width: 30px;\n    height: 1px;\n    background: #78dfb9;\n    clip-path: polygon(0 0, 78% 0, 78% -3px, 100% 50%, 78% calc(100% + 3px), 78% 100%, 0 100%);\n    content: \"\";\n  }\n\n  .slc .slc-load-arrow--wind {\n    top: 101px;\n    left: 2px;\n  }\n\n  .slc .slc-load-arrow--snow {\n    top: 20px;\n    right: 21px;\n    flex-direction: row-reverse;\n    transform: rotate(90deg);\n    transform-origin: right center;\n  }\n\n  .slc .slc-visual-metrics {\n    position: relative;\n    z-index: 2;\n    padding-top: 15px;\n    border-top: 1px solid rgba(255, 255, 255, 0.11);\n  }\n\n  .slc .slc-visual-metrics div {\n    min-width: 0;\n  }\n\n  .slc .slc-visual-metrics span,\n  .slc .slc-visual-metrics strong {\n    display: block;\n  }\n\n  .slc .slc-visual-metrics span {\n    margin-bottom: 3px;\n    color: rgba(255, 255, 255, 0.44);\n    font-size: 9px;\n    font-weight: 800;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n  }\n\n  .slc .slc-visual-metrics strong {\n    color: #fff;\n    font-size: 13px;\n  }\n\n  .slc .slc-tool {\n    padding: clamp(62px, 8vw, 96px) 0;\n    background: #f7faf8;\n  }\n\n  .slc .slc-intro {\n    display: grid;\n    grid-template-columns: minmax(0, 1fr) minmax(280px, 0.62fr);\n    gap: 36px;\n    align-items: end;\n    margin-bottom: 32px;\n  }\n\n  .slc .slc-intro p {\n    max-width: 520px;\n    margin-bottom: 0;\n    justify-self: end;\n  }\n\n  .slc .slc-mode-tabs {\n    display: inline-grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 4px;\n    width: min(100%, 620px);\n    margin-bottom: 18px;\n    padding: 4px;\n    border: 1px solid var(--slc-line);\n    border-radius: 8px;\n    background: #e9f0ed;\n  }\n\n  .slc .slc-mode-tab {\n    min-height: 48px;\n    padding: 10px 18px;\n    border: 0;\n    border-radius: 6px;\n    background: transparent;\n    color: var(--slc-text);\n    cursor: pointer;\n    font: inherit;\n    font-size: 14px;\n    font-weight: 760;\n  }\n\n  .slc .slc-mode-tab[aria-selected=\"true\"] {\n    background: #fff;\n    color: var(--slc-green-dark);\n    box-shadow: 0 4px 16px rgba(16, 37, 31, 0.1);\n  }\n\n  .slc .slc-calculator {\n    display: grid;\n    grid-template-columns: minmax(360px, 0.86fr) minmax(0, 1.14fr);\n    overflow: hidden;\n    border: 1px solid var(--slc-line);\n    border-radius: 8px;\n    background: var(--slc-line);\n    box-shadow: 0 24px 70px rgba(16, 37, 31, 0.11);\n  }\n\n  .slc .slc-inputs,\n  .slc .slc-results {\n    min-width: 0;\n    padding: clamp(24px, 3.4vw, 42px);\n  }\n\n  .slc .slc-inputs {\n    border-right: 1px solid var(--slc-line);\n    background: #fbfcfb;\n  }\n\n  .slc .slc-results {\n    background:\n      radial-gradient(circle at 100% 0, rgba(57, 185, 138, 0.11), transparent 28%),\n      linear-gradient(180deg, rgba(232, 245, 239, 0.8), rgba(255, 255, 255, 0) 360px),\n      #fff;\n  }\n\n  .slc .slc-panel-head {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 18px;\n    margin-bottom: 24px;\n    padding-bottom: 17px;\n    border-bottom: 1px solid var(--slc-line);\n  }\n\n  .slc .slc-panel-head h3,\n  .slc .slc-panel-head p {\n    margin-bottom: 0;\n  }\n\n  .slc .slc-panel-head p {\n    font-size: 13px;\n  }\n\n  .slc .slc-live-badge {\n    display: inline-flex;\n    flex: none;\n    align-items: center;\n    gap: 7px;\n    padding: 7px 10px;\n    border: 1px solid #bfe2d4;\n    border-radius: 6px;\n    background: rgba(255, 255, 255, 0.78);\n    color: var(--slc-green-dark);\n    font-size: 10px;\n    font-weight: 850;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n  }\n\n  .slc .slc-live-badge::before {\n    width: 6px;\n    height: 6px;\n    border-radius: 50%;\n    background: var(--slc-green);\n    box-shadow: 0 0 0 3px rgba(22, 129, 93, 0.1);\n    content: \"\";\n  }\n\n  .slc .slc-reset {\n    flex: none;\n    padding: 8px 11px;\n    border: 1px solid var(--slc-line);\n    border-radius: 6px;\n    background: #fff;\n    color: var(--slc-green-dark);\n    cursor: pointer;\n    font: inherit;\n    font-size: 12px;\n    font-weight: 760;\n  }\n\n  .slc .slc-group {\n    counter-increment: slc-group;\n    margin-bottom: 12px;\n    border: 1px solid var(--slc-line);\n    border-radius: 8px;\n    background: #fff;\n    box-shadow: 0 1px 0 rgba(16, 37, 31, 0.02);\n  }\n\n  .slc .slc-group:last-child {\n    margin-bottom: 0;\n  }\n\n  .slc .slc-group summary {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 16px;\n    min-height: 52px;\n    padding: 13px 16px;\n    color: var(--slc-ink);\n    cursor: pointer;\n    font-size: 14px;\n    font-weight: 780;\n    list-style: none;\n  }\n\n  .slc .slc-inputs {\n    counter-reset: slc-group;\n  }\n\n  .slc .slc-group summary > span:first-child {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n  }\n\n  .slc .slc-group summary > span:first-child::before {\n    display: inline-flex;\n    flex: 0 0 25px;\n    align-items: center;\n    justify-content: center;\n    width: 25px;\n    height: 25px;\n    border-radius: 6px;\n    background: var(--slc-mint);\n    color: var(--slc-green-dark);\n    content: counter(slc-group, decimal-leading-zero);\n    font-size: 9px;\n    font-weight: 900;\n    letter-spacing: 0.04em;\n  }\n\n  .slc .slc-group summary::-webkit-details-marker {\n    display: none;\n  }\n\n  .slc .slc-group-icon {\n    position: relative;\n    display: inline-flex;\n    flex: 0 0 24px;\n    align-items: center;\n    justify-content: center;\n    width: 24px;\n    height: 24px;\n    border-radius: 50%;\n    background: var(--slc-mint);\n  }\n\n  .slc .slc-group-icon::before,\n  .slc .slc-group-icon::after {\n    position: absolute;\n    width: 10px;\n    height: 2px;\n    background: var(--slc-green);\n    content: \"\";\n  }\n\n  .slc .slc-group-icon::after {\n    transform: rotate(90deg);\n    transition: transform 0.18s ease;\n  }\n\n  .slc .slc-group[open] .slc-group-icon::after {\n    transform: rotate(0deg);\n  }\n\n  .slc .slc-group-body {\n    padding: 3px 16px 18px;\n    border-top: 1px solid var(--slc-line);\n  }\n\n  .slc .slc-fields {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 14px;\n    padding-top: 16px;\n  }\n\n  .slc .slc-fields--three {\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n  }\n\n  .slc .slc-subhead {\n    grid-column: 1 \/ -1;\n    margin: 6px 0 -2px;\n    color: var(--slc-green-dark);\n    font-size: 11px;\n    font-weight: 850;\n    letter-spacing: 0.1em;\n    text-transform: uppercase;\n  }\n\n  .slc .slc-field {\n    min-width: 0;\n  }\n\n  .slc .slc-field label {\n    display: block;\n    margin-bottom: 6px;\n    color: var(--slc-text);\n    font-size: 12px;\n    font-weight: 720;\n    line-height: 1.35;\n  }\n\n  .slc .slc-input {\n    display: grid;\n    grid-template-columns: minmax(0, 1fr) auto;\n    align-items: center;\n    overflow: hidden;\n    border: 1px solid #cddbd5;\n    border-radius: 6px;\n    background: #fff;\n    transition: border-color 0.18s ease, box-shadow 0.18s ease;\n  }\n\n  .slc .slc-input:focus-within {\n    border-color: var(--slc-green);\n    box-shadow: 0 0 0 3px rgba(22, 129, 93, 0.11);\n  }\n\n  .slc .slc-input input {\n    width: 100%;\n    min-width: 0;\n    height: 42px;\n    padding: 0 10px;\n    border: 0;\n    outline: 0;\n    background: transparent;\n    color: var(--slc-ink);\n    font: inherit;\n    font-size: 14px;\n    font-weight: 680;\n  }\n\n  .slc .slc-unit {\n    padding: 0 10px;\n    color: #71827c;\n    font-size: 11px;\n    white-space: nowrap;\n  }\n\n  .slc .slc-note {\n    margin: 12px 0 0;\n    color: #71827c;\n    font-size: 12px;\n  }\n\n  .slc .slc-primary-results {\n    display: grid;\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n    gap: 10px;\n    margin-bottom: 18px;\n  }\n\n  .slc .slc-result-card {\n    position: relative;\n    min-width: 0;\n    overflow: hidden;\n    padding: 16px;\n    border: 1px solid var(--slc-line);\n    border-radius: 8px;\n    background: #fff;\n  }\n\n  .slc .slc-result-card::before {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    height: 3px;\n    background: var(--slc-mint-strong);\n    content: \"\";\n  }\n\n  .slc .slc-result-card--accent {\n    border-color: transparent;\n    background:\n      radial-gradient(circle at 100% 0, rgba(57, 185, 138, 0.2), transparent 38%),\n      var(--slc-ink);\n  }\n\n  .slc .slc-result-card--accent::before {\n    background: var(--slc-green-bright);\n  }\n\n  .slc .slc-result-label {\n    display: block;\n    min-height: 34px;\n    margin-bottom: 8px;\n    color: #6d7e78;\n    font-size: 11px;\n    font-weight: 780;\n    letter-spacing: 0.06em;\n    line-height: 1.35;\n    text-transform: uppercase;\n  }\n\n  .slc .slc-result-card--accent .slc-result-label {\n    color: rgba(255, 255, 255, 0.6);\n  }\n\n  .slc .slc-result-value {\n    display: block;\n    overflow-wrap: anywhere;\n    color: var(--slc-green-dark);\n    font-size: clamp(22px, 3vw, 32px);\n    font-variant-numeric: tabular-nums;\n    font-weight: 800;\n    letter-spacing: -0.035em;\n    line-height: 1;\n  }\n\n  .slc .slc-result-card--accent .slc-result-value {\n    color: #fff;\n  }\n\n  .slc .slc-result-unit {\n    display: block;\n    margin-top: 6px;\n    color: #7c8b86;\n    font-size: 11px;\n  }\n\n  .slc .slc-result-card--accent .slc-result-unit {\n    color: rgba(255, 255, 255, 0.52);\n  }\n\n  .slc .slc-result-section {\n    margin-top: 18px;\n  }\n\n  .slc .slc-result-section h4 {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    margin-bottom: 10px;\n  }\n\n  .slc .slc-result-section h4::after {\n    flex: 1;\n    height: 1px;\n    background: var(--slc-line);\n    content: \"\";\n  }\n\n  .slc .slc-metric-list {\n    overflow: hidden;\n    border: 1px solid var(--slc-line);\n    border-radius: 8px;\n    background: #fff;\n  }\n\n  .slc .slc-metric-row {\n    display: grid;\n    grid-template-columns: minmax(0, 1fr) auto;\n    gap: 18px;\n    align-items: center;\n    min-height: 48px;\n    padding: 11px 14px;\n    border-bottom: 1px solid var(--slc-line);\n  }\n\n  .slc .slc-metric-row:last-child {\n    border-bottom: 0;\n  }\n\n  .slc .slc-metric-row span {\n    color: var(--slc-text);\n    font-size: 13px;\n  }\n\n  .slc .slc-metric-row strong {\n    color: var(--slc-ink);\n    font-size: 14px;\n    font-variant-numeric: tabular-nums;\n    text-align: right;\n  }\n\n  .slc .slc-table-wrap {\n    overflow-x: auto;\n    border: 1px solid var(--slc-line);\n    border-radius: 8px;\n    background: #fff;\n  }\n\n  .slc .slc-table {\n    width: 100%;\n    min-width: 520px;\n    margin: 0;\n    border-collapse: collapse;\n    font-size: 13px;\n  }\n\n  .slc .slc-table th,\n  .slc .slc-table td {\n    padding: 11px 12px;\n    border: 0;\n    border-bottom: 1px solid var(--slc-line);\n    text-align: left;\n    vertical-align: middle;\n  }\n\n  .slc .slc-table tr:last-child td {\n    border-bottom: 0;\n  }\n\n  .slc .slc-table th {\n    background: #f5f8f6;\n    color: #6c7d77;\n    font-size: 10px;\n    font-weight: 850;\n    letter-spacing: 0.07em;\n    text-transform: uppercase;\n  }\n\n  .slc .slc-table td:not(:first-child),\n  .slc .slc-table th:not(:first-child) {\n    text-align: right;\n  }\n\n  .slc .slc-status {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-width: 58px;\n    padding: 4px 8px;\n    border-radius: 5px;\n    font-size: 10px;\n    font-weight: 850;\n    letter-spacing: 0.05em;\n    text-transform: uppercase;\n  }\n\n  .slc .slc-status--pass {\n    background: var(--slc-mint);\n    color: var(--slc-green-dark);\n  }\n\n  .slc .slc-status--fail {\n    background: #f9e8e4;\n    color: var(--slc-danger);\n  }\n\n  .slc .slc-field-help {\n    margin: 6px 0 0;\n    font-size: 10px;\n    line-height: 1.4;\n  }\n\n  .slc .slc-field-help a {\n    color: var(--slc-green-dark);\n    font-weight: 760;\n    text-decoration: none;\n  }\n\n  .slc .slc-field-help a:hover,\n  .slc .slc-field-help a:focus-visible {\n    text-decoration: underline;\n    text-underline-offset: 3px;\n  }\n\n  .slc .slc-reference {\n    margin-top: clamp(52px, 7vw, 78px);\n    scroll-margin-top: 24px;\n  }\n\n  .slc .slc-reference-head {\n    display: grid;\n    grid-template-columns: minmax(0, 1fr) minmax(280px, 0.6fr);\n    gap: 36px;\n    align-items: end;\n    margin-bottom: 24px;\n  }\n\n  .slc .slc-reference-head h2,\n  .slc .slc-reference-head p {\n    margin-bottom: 0;\n  }\n\n  .slc .slc-reference-head p {\n    max-width: 520px;\n    justify-self: end;\n  }\n\n  .slc .slc-reference-grid {\n    display: grid;\n    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);\n    gap: 18px;\n    align-items: start;\n  }\n\n  .slc .slc-reference-card {\n    min-width: 0;\n    overflow: hidden;\n    border: 1px solid var(--slc-line);\n    border-radius: 8px;\n    background: #fff;\n    box-shadow: 0 16px 44px rgba(16, 37, 31, 0.07);\n  }\n\n  .slc .slc-reference-card--wide {\n    grid-column: 1 \/ -1;\n  }\n\n  .slc .slc-reference-card-head {\n    display: flex;\n    align-items: flex-start;\n    justify-content: space-between;\n    gap: 18px;\n    padding: 20px;\n    border-bottom: 1px solid var(--slc-line);\n    background:\n      linear-gradient(135deg, rgba(232, 245, 239, 0.86), rgba(255, 255, 255, 0.92));\n  }\n\n  .slc .slc-reference-card-head h3,\n  .slc .slc-reference-card-head p {\n    margin-bottom: 0;\n  }\n\n  .slc .slc-reference-card-head p {\n    margin-top: 5px;\n    font-size: 12px;\n  }\n\n  .slc .slc-reference-tag {\n    flex: none;\n    padding: 5px 8px;\n    border: 1px solid #bfe2d4;\n    border-radius: 5px;\n    background: #fff;\n    color: var(--slc-green-dark);\n    font-size: 9px;\n    font-weight: 850;\n    letter-spacing: 0.07em;\n    text-transform: uppercase;\n  }\n\n  .slc .slc-reference-table-wrap {\n    overflow-x: auto;\n  }\n\n  .slc .slc-reference-table {\n    width: 100%;\n    margin: 0;\n    border-collapse: collapse;\n    table-layout: fixed;\n    font-size: 12px;\n  }\n\n  .slc .slc-reference-table th,\n  .slc .slc-reference-table td {\n    padding: 10px 11px;\n    border: 0;\n    border-bottom: 1px solid var(--slc-line);\n    text-align: left;\n    vertical-align: middle;\n  }\n\n  .slc .slc-reference-table tr:last-child td {\n    border-bottom: 0;\n  }\n\n  .slc .slc-reference-table th {\n    background: #f5f8f6;\n    color: #6c7d77;\n    font-size: 9px;\n    font-weight: 850;\n    letter-spacing: 0.06em;\n    text-transform: uppercase;\n  }\n\n  .slc .slc-reference-table tbody tr:nth-child(even) {\n    background: #fbfcfb;\n  }\n\n  .slc .slc-reference-table td:not(:first-child),\n  .slc .slc-reference-table th:not(:first-child) {\n    text-align: center;\n  }\n\n  .slc .slc-check-label {\n    display: inline-flex;\n    padding: 4px 7px;\n    border-radius: 5px;\n    background: var(--slc-mint);\n    color: var(--slc-green-dark);\n    font-size: 9px;\n    font-weight: 850;\n    letter-spacing: 0.04em;\n    text-transform: uppercase;\n  }\n\n  .slc .slc-terrain-notes {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 1px;\n    padding: 1px 0 0;\n    background: var(--slc-line);\n  }\n\n  .slc .slc-terrain-note {\n    padding: 13px 15px;\n    background: #fff;\n  }\n\n  .slc .slc-terrain-note strong {\n    display: block;\n    margin-bottom: 3px;\n    color: var(--slc-green-dark);\n    font-size: 11px;\n  }\n\n  .slc .slc-terrain-note span {\n    display: block;\n    color: #6c7d77;\n    font-size: 10px;\n    line-height: 1.45;\n  }\n\n  .slc .slc-snow-reference-body {\n    display: grid;\n    grid-template-columns: minmax(300px, 0.72fr) minmax(0, 1.28fr);\n    align-items: stretch;\n  }\n\n  .slc .slc-roof-figure {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 280px;\n    padding: 24px;\n    border-right: 1px solid var(--slc-line);\n    background:\n      radial-gradient(circle at 50% 45%, rgba(57, 185, 138, 0.1), transparent 44%),\n      #f8fbf9;\n  }\n\n  .slc .slc-roof-figure svg {\n    display: block;\n    width: min(100%, 430px);\n    height: auto;\n    overflow: visible;\n  }\n\n  .slc .slc-mur-panel {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    min-width: 0;\n    padding: clamp(22px, 3vw, 34px);\n  }\n\n  .slc .slc-mur-panel h4 {\n    margin-bottom: 7px;\n  }\n\n  .slc .slc-mur-panel > p {\n    margin-bottom: 18px;\n    font-size: 12px;\n  }\n\n  .slc .slc-mur-values {\n    display: grid;\n    grid-template-columns: repeat(8, minmax(0, 1fr));\n    overflow: hidden;\n    border: 1px solid var(--slc-line);\n    border-radius: 8px;\n    background: var(--slc-line);\n    gap: 1px;\n  }\n\n  .slc .slc-mur-cell {\n    min-width: 0;\n    padding: 12px 5px;\n    background: #fff;\n    text-align: center;\n  }\n\n  .slc .slc-mur-cell span,\n  .slc .slc-mur-cell strong {\n    display: block;\n  }\n\n  .slc .slc-mur-cell span {\n    margin-bottom: 6px;\n    color: #71827c;\n    font-size: 10px;\n    font-weight: 720;\n    white-space: nowrap;\n  }\n\n  .slc .slc-mur-cell strong {\n    color: var(--slc-green-dark);\n    font-size: 18px;\n    font-variant-numeric: tabular-nums;\n    font-weight: 820;\n    letter-spacing: -0.02em;\n  }\n\n  .slc .slc-mur-legend {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 16px;\n    margin-top: 12px;\n    color: #71827c;\n    font-size: 10px;\n  }\n\n  .slc .slc-mur-legend strong {\n    color: var(--slc-ink);\n  }\n\n  .slc .slc-guide {\n    padding: 70px 0;\n    background: #f3f7f4;\n  }\n\n  .slc .slc-guide-card {\n    display: grid;\n    grid-template-columns: minmax(0, 1fr) auto;\n    gap: 36px;\n    align-items: center;\n    padding: clamp(30px, 5vw, 52px);\n    border-radius: 8px;\n    background:\n      radial-gradient(circle at 88% 12%, rgba(57, 185, 138, 0.2), transparent 31%),\n      #102f26;\n    box-shadow: 0 20px 54px rgba(16, 37, 31, 0.12);\n  }\n\n  .slc .slc-guide-card h2 {\n    max-width: 760px;\n    margin-bottom: 12px;\n    color: #fff;\n  }\n\n  .slc .slc-guide-card p {\n    max-width: 750px;\n    margin-bottom: 0;\n    color: rgba(255, 255, 255, 0.7);\n  }\n\n  .slc .slc-guide-card .slc-button {\n    min-width: 230px;\n  }\n\n  .slc .slc-method {\n    padding: clamp(62px, 8vw, 92px) 0;\n    background: #fff;\n  }\n\n  .slc .slc-method-grid {\n    display: grid;\n    grid-template-columns: 0.72fr 1.28fr;\n    gap: clamp(36px, 7vw, 90px);\n    align-items: start;\n  }\n\n  .slc .slc-method-copy {\n    position: sticky;\n    top: 30px;\n  }\n\n  .slc .slc-method-copy p {\n    margin-bottom: 0;\n  }\n\n  .slc .slc-formulas {\n    display: grid;\n    gap: 12px;\n  }\n\n  .slc .slc-formula {\n    padding: 20px;\n    border: 1px solid var(--slc-line);\n    border-radius: 8px;\n    background: var(--slc-sand);\n  }\n\n  .slc .slc-formula strong {\n    display: block;\n    margin-bottom: 7px;\n    color: var(--slc-ink);\n    font-size: 14px;\n  }\n\n  .slc .slc-formula code {\n    display: block;\n    overflow-wrap: anywhere;\n    color: var(--slc-green-dark);\n    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n    font-size: 13px;\n    line-height: 1.6;\n    white-space: normal;\n  }\n\n  .slc .slc-disclaimer {\n    padding: 22px 0;\n    border-top: 1px solid var(--slc-line);\n    background: #fff;\n  }\n\n  .slc .slc-disclaimer p {\n    margin: 0;\n    color: #71827c;\n    font-size: 12px;\n  }\n\n  @media (max-width: 980px) {\n    .slc .slc-hero-grid,\n    .slc .slc-intro,\n    .slc .slc-reference-head,\n    .slc .slc-guide-card,\n    .slc .slc-method-grid {\n      grid-template-columns: 1fr;\n    }\n\n    .slc .slc-hero-panel {\n      max-width: 620px;\n    }\n\n    .slc .slc-intro p {\n      justify-self: start;\n    }\n\n    .slc .slc-reference-head p {\n      justify-self: start;\n    }\n\n    .slc .slc-reference-grid {\n      grid-template-columns: 1fr;\n    }\n\n    .slc .slc-reference-card--wide {\n      grid-column: auto;\n    }\n\n    .slc .slc-snow-reference-body {\n      grid-template-columns: 1fr;\n    }\n\n    .slc .slc-roof-figure {\n      min-height: 240px;\n      border-right: 0;\n      border-bottom: 1px solid var(--slc-line);\n    }\n\n    .slc .slc-calculator {\n      grid-template-columns: 1fr;\n    }\n\n    .slc .slc-inputs {\n      border-right: 0;\n      border-bottom: 1px solid var(--slc-line);\n    }\n\n    .slc .slc-method-copy {\n      position: static;\n    }\n  }\n\n  @media (max-width: 680px) {\n    .slc .slc-wrap {\n      width: min(100% - 28px, 1240px);\n    }\n\n    .slc .slc-hero {\n      padding: 62px 0;\n    }\n\n    .slc .slc-hero-actions,\n    .slc .slc-guide-actions {\n      align-items: stretch;\n      flex-direction: column;\n    }\n\n    .slc .slc-button,\n    .slc .slc-guide-card .slc-button {\n      width: 100%;\n      min-width: 0;\n    }\n\n    .slc .slc-mode-tabs {\n      width: 100%;\n    }\n\n    .slc .slc-mode-tab {\n      padding-inline: 10px;\n      font-size: 12px;\n    }\n\n    .slc .slc-inputs,\n    .slc .slc-results {\n      padding: 20px 16px;\n    }\n\n    .slc .slc-fields,\n    .slc .slc-fields--three {\n      grid-template-columns: 1fr;\n    }\n\n    .slc .slc-primary-results {\n      grid-template-columns: 1fr 1fr;\n    }\n\n    .slc .slc-result-card--accent {\n      grid-column: 1 \/ -1;\n    }\n\n    .slc .slc-result-label {\n      min-height: 0;\n    }\n\n    .slc .slc-table {\n      min-width: 0;\n      table-layout: fixed;\n      font-size: 11px;\n    }\n\n    .slc .slc-table th,\n    .slc .slc-table td {\n      padding: 9px 5px;\n      overflow-wrap: anywhere;\n    }\n\n    .slc .slc-table th {\n      font-size: 8px;\n      letter-spacing: 0.04em;\n    }\n\n    .slc .slc-table th:first-child,\n    .slc .slc-table td:first-child {\n      width: 23%;\n    }\n\n    .slc .slc-table th:last-child,\n    .slc .slc-table td:last-child {\n      width: 21%;\n    }\n\n    .slc .slc-status {\n      min-width: 0;\n      width: 100%;\n      padding-inline: 4px;\n      font-size: 8px;\n    }\n\n    .slc .slc-reference-card-head {\n      padding: 17px 15px;\n    }\n\n    .slc .slc-reference-table {\n      min-width: 0;\n      font-size: 9px;\n    }\n\n    .slc .slc-reference-table th,\n    .slc .slc-reference-table td {\n      padding: 8px 4px;\n      overflow-wrap: anywhere;\n    }\n\n    .slc .slc-reference-table th {\n      font-size: 7px;\n      letter-spacing: 0.02em;\n    }\n\n    .slc .slc-check-label {\n      padding: 3px 4px;\n      font-size: 7px;\n    }\n\n    .slc .slc-terrain-notes {\n      grid-template-columns: 1fr;\n    }\n\n    .slc .slc-mur-panel {\n      padding: 18px 15px;\n    }\n\n    .slc .slc-mur-values {\n      grid-template-columns: repeat(4, minmax(0, 1fr));\n    }\n\n    .slc .slc-mur-cell {\n      padding-block: 11px;\n    }\n\n    .slc .slc-mur-cell strong {\n      font-size: 16px;\n    }\n\n    .slc .slc-mur-legend {\n      align-items: flex-start;\n      flex-direction: column;\n      gap: 4px;\n    }\n\n    .slc .slc-panel-head {\n      align-items: flex-start;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .slc *,\n    .slc *::before,\n    .slc *::after {\n      scroll-behavior: auto !important;\n      transition-duration: 0.01ms !important;\n    }\n  }\n<\/style>\n\n<main class=\"slc\" id=\"solar-structural-load-calculator\">\n  <section class=\"slc-hero\">\n    <div class=\"slc-wrap slc-hero-grid\">\n      <div>\n        <span class=\"slc-eyebrow\">Engineering calculator<\/span>\n        <h1>Solar Mounting Structural Load Calculator<\/h1>\n        <p class=\"slc-hero-lead\">\n          Calculate wind pressure, snow pressure, member utilization, deflection\n          and tracker torque from one engineering-ready interface.\n        <\/p>\n        <div class=\"slc-hero-actions\">\n          <a class=\"slc-button\" href=\"#slc-fixed\">Open calculator<\/a>\n          <a class=\"slc-button slc-button--ghost\" href=\"https:\/\/luminvolt.com\/how-to-use-solar-mounting-structural-load-calculator\/\">Read the beginner\u2019s guide<\/a>\n        <\/div>\n      <\/div>\n      <div class=\"slc-hero-visual\" aria-label=\"Structural load calculation model\">\n        <div class=\"slc-visual-head\">\n          <span>Structural load model<\/span>\n          <strong>Live calculation<\/strong>\n        <\/div>\n        <div class=\"slc-panel-diagram\" aria-hidden=\"true\">\n          <span class=\"slc-load-arrow slc-load-arrow--wind\">Wind<\/span>\n          <span class=\"slc-load-arrow slc-load-arrow--snow\">Snow<\/span>\n          <div class=\"slc-panel-array\">\n            <span><\/span><span><\/span><span><\/span>\n            <span><\/span><span><\/span><span><\/span>\n          <\/div>\n        <\/div>\n        <div class=\"slc-visual-metrics\">\n          <div><span>Systems<\/span><strong>2 modes<\/strong><\/div>\n          <div><span>Load types<\/span><strong>3 forces<\/strong><\/div>\n          <div><span>Response<\/span><strong>Instant<\/strong><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"slc-tool\">\n    <div class=\"slc-wrap\">\n      <div class=\"slc-intro\">\n        <div>\n          <span class=\"slc-eyebrow\" style=\"color: var(--slc-green)\">Workbook converted<\/span>\n          <h2>Choose the mounting system<\/h2>\n        <\/div>\n        <p>\n          Defaults reproduce the supplied engineering workbook. Change any field\n          to update all dependent results immediately.\n        <\/p>\n      <\/div>\n\n      <div class=\"slc-mode-tabs\" role=\"tablist\" aria-label=\"Mounting system\">\n        <button class=\"slc-mode-tab\" type=\"button\" role=\"tab\" aria-selected=\"true\" aria-controls=\"slc-fixed\" id=\"slc-tab-fixed\" data-mode=\"fixed\">\n          Fixed-tilt structure\n        <\/button>\n        <button class=\"slc-mode-tab\" type=\"button\" role=\"tab\" aria-selected=\"false\" aria-controls=\"slc-tracker\" id=\"slc-tab-tracker\" data-mode=\"tracker\">\n          Single-axis tracker\n        <\/button>\n      <\/div>\n\n      <section class=\"slc-calculator\" id=\"slc-fixed\" role=\"tabpanel\" aria-labelledby=\"slc-tab-fixed\">\n        <div class=\"slc-inputs\">\n          <div class=\"slc-panel-head\">\n            <div>\n              <h3>Fixed-tilt inputs<\/h3>\n              <p>Fixed-mount structural model<\/p>\n            <\/div>\n            <button class=\"slc-reset\" type=\"button\" data-reset=\"fixed\">Reset<\/button>\n          <\/div>\n\n          <details class=\"slc-group\" open>\n            <summary><span>Module and layout<\/span><span class=\"slc-group-icon\" aria-hidden=\"true\"><\/span><\/summary>\n            <div class=\"slc-group-body\">\n              <div class=\"slc-fields\">\n                <div class=\"slc-field\">\n                  <label for=\"f-module-length\">Module length<\/label>\n                  <div class=\"slc-input\"><input id=\"f-module-length\" data-calc=\"fixed\" type=\"number\" min=\"1\" step=\"1\" value=\"1650\"><span class=\"slc-unit\">mm<\/span><\/div>\n                <\/div>\n                <div class=\"slc-field\">\n                  <label for=\"f-module-width\">Module width<\/label>\n                  <div class=\"slc-input\"><input id=\"f-module-width\" data-calc=\"fixed\" type=\"number\" min=\"1\" step=\"1\" value=\"991\"><span class=\"slc-unit\">mm<\/span><\/div>\n                <\/div>\n                <div class=\"slc-field\">\n                  <label for=\"f-module-mass\">Module mass<\/label>\n                  <div class=\"slc-input\"><input id=\"f-module-mass\" data-calc=\"fixed\" type=\"number\" min=\"0\" step=\"0.1\" value=\"16.5\"><span class=\"slc-unit\">kg<\/span><\/div>\n                <\/div>\n                <div class=\"slc-field\">\n                  <label for=\"f-layout-rows\">Layout rows<\/label>\n                  <div class=\"slc-input\"><input id=\"f-layout-rows\" data-calc=\"fixed\" type=\"number\" min=\"1\" step=\"1\" value=\"2\"><span class=\"slc-unit\">rows<\/span><\/div>\n                <\/div>\n                <div class=\"slc-field\">\n                  <label for=\"f-layout-cols\">Modules per row<\/label>\n                  <div class=\"slc-input\"><input id=\"f-layout-cols\" data-calc=\"fixed\" type=\"number\" min=\"1\" step=\"1\" value=\"11\"><span class=\"slc-unit\">pcs<\/span><\/div>\n                <\/div>\n                <div class=\"slc-field\">\n                  <label for=\"f-purlin-length\">Total purlin length<\/label>\n                  <div class=\"slc-input\"><input id=\"f-purlin-length\" data-calc=\"fixed\" type=\"number\" min=\"1\" step=\"1\" value=\"11200\"><span class=\"slc-unit\">mm<\/span><\/div>\n                <\/div>\n                <div class=\"slc-field\">\n                  <label for=\"f-rafter-length\">Rafter length<\/label>\n                  <div class=\"slc-input\"><input id=\"f-rafter-length\" data-calc=\"fixed\" type=\"number\" min=\"1\" step=\"1\" value=\"2800\"><span class=\"slc-unit\">mm<\/span><\/div>\n                <\/div>\n              <\/div>\n            <\/div>\n          <\/details>\n\n          <details class=\"slc-group\" open>\n            <summary><span>Environmental loads<\/span><span class=\"slc-group-icon\" aria-hidden=\"true\"><\/span><\/summary>\n            <div class=\"slc-group-body\">\n              <div class=\"slc-fields\">\n                <span class=\"slc-subhead\">Wind<\/span>\n                <div class=\"slc-field\">\n                  <label for=\"f-wind-beta\">Gust response \u03b2z<\/label>\n                  <div class=\"slc-input\"><input id=\"f-wind-beta\" data-calc=\"fixed\" type=\"number\" min=\"0\" step=\"0.01\" value=\"1\"><span class=\"slc-unit\">factor<\/span><\/div>\n                <\/div>\n                <div class=\"slc-field\">\n                  <label for=\"f-wind-shape\">Shape coefficient \u03bcs<\/label>\n                  <div class=\"slc-input\"><input id=\"f-wind-shape\" data-calc=\"fixed\" type=\"number\" step=\"0.01\" value=\"1.3\"><span class=\"slc-unit\">factor<\/span><\/div>\n                <\/div>\n                <div class=\"slc-field\">\n                  <label for=\"f-wind-height\">Height factor \u03bcz<\/label>\n                  <div class=\"slc-input\"><input id=\"f-wind-height\" data-calc=\"fixed\" type=\"number\" min=\"0\" step=\"0.01\" value=\"1\"><span class=\"slc-unit\">factor<\/span><\/div>\n                  <p class=\"slc-field-help\"><a href=\"#slc-muz-table\">View the \u03bcz reference table \u2193<\/a><\/p>\n                <\/div>\n                <div class=\"slc-field\">\n                  <label for=\"f-air-density\">Air density \u03c1<\/label>\n                  <div class=\"slc-input\"><input id=\"f-air-density\" data-calc=\"fixed\" type=\"number\" min=\"0\" step=\"0.01\" value=\"1.25\"><span class=\"slc-unit\">kg\/m\u00b3<\/span><\/div>\n                <\/div>\n                <div class=\"slc-field\">\n                  <label for=\"f-wind-speed\">Design wind speed<\/label>\n                  <div class=\"slc-input\"><input id=\"f-wind-speed\" data-calc=\"fixed\" type=\"number\" min=\"0\" step=\"0.01\" value=\"26.84\"><span class=\"slc-unit\">m\/s<\/span><\/div>\n                <\/div>\n                <span class=\"slc-subhead\">Snow<\/span>\n                <div class=\"slc-field\">\n                  <label for=\"f-snow-shape\">Snow shape coefficient \u03bcr<\/label>\n                  <div class=\"slc-input\"><input id=\"f-snow-shape\" data-calc=\"fixed\" type=\"number\" min=\"0\" step=\"0.01\" value=\"0.85\"><span class=\"slc-unit\">factor<\/span><\/div>\n                  <p class=\"slc-field-help\"><a href=\"#slc-mur-table\">View the \u03bcr reference table \u2193<\/a><\/p>\n                <\/div>\n                <div class=\"slc-field\">\n                  <label for=\"f-snow-density\">Snow density \u03c1<\/label>\n                  <div class=\"slc-input\"><input id=\"f-snow-density\" data-calc=\"fixed\" type=\"number\" min=\"0\" step=\"1\" value=\"130\"><span class=\"slc-unit\">kg\/m\u00b3<\/span><\/div>\n                <\/div>\n                <div class=\"slc-field\">\n                  <label for=\"f-snow-depth\">Snow depth h<\/label>\n                  <div class=\"slc-input\"><input id=\"f-snow-depth\" data-calc=\"fixed\" type=\"number\" min=\"0\" step=\"0.01\" value=\"0.11\"><span class=\"slc-unit\">m<\/span><\/div>\n                <\/div>\n              <\/div>\n            <\/div>\n          <\/details>\n\n          <details class=\"slc-group\">\n            <summary><span>Member section properties<\/span><span class=\"slc-group-icon\" aria-hidden=\"true\"><\/span><\/summary>\n            <div class=\"slc-group-body\">\n              <div class=\"slc-fields slc-fields--three\">\n                <span class=\"slc-subhead\">Purlin<\/span>\n                <div class=\"slc-field\"><label for=\"f-p-wnx\">Wnx<\/label><div class=\"slc-input\"><input id=\"f-p-wnx\" data-calc=\"fixed\" type=\"number\" min=\"0.001\" step=\"0.01\" value=\"11.25\"><span class=\"slc-unit\">cm\u00b3<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-p-wny\">Wny<\/label><div class=\"slc-input\"><input id=\"f-p-wny\" data-calc=\"fixed\" type=\"number\" min=\"0.001\" step=\"0.01\" value=\"4.06\"><span class=\"slc-unit\">cm\u00b3<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-p-area\">Area An<\/label><div class=\"slc-input\"><input id=\"f-p-area\" data-calc=\"fixed\" type=\"number\" min=\"0.001\" step=\"0.01\" value=\"4.5\"><span class=\"slc-unit\">cm\u00b2<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-p-gx\">\u03b3x<\/label><div class=\"slc-input\"><input id=\"f-p-gx\" data-calc=\"fixed\" type=\"number\" min=\"0.001\" step=\"0.01\" value=\"1.05\"><span class=\"slc-unit\">factor<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-p-gy\">\u03b3y<\/label><div class=\"slc-input\"><input id=\"f-p-gy\" data-calc=\"fixed\" type=\"number\" min=\"0.001\" step=\"0.01\" value=\"1.05\"><span class=\"slc-unit\">factor<\/span><\/div><\/div>\n\n                <span class=\"slc-subhead\">Rafter<\/span>\n                <div class=\"slc-field\"><label for=\"f-r-wnx\">Wnx<\/label><div class=\"slc-input\"><input id=\"f-r-wnx\" data-calc=\"fixed\" type=\"number\" min=\"0.001\" step=\"0.01\" value=\"11.25\"><span class=\"slc-unit\">cm\u00b3<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-r-wny\">Wny<\/label><div class=\"slc-input\"><input id=\"f-r-wny\" data-calc=\"fixed\" type=\"number\" min=\"0.001\" step=\"0.01\" value=\"4.06\"><span class=\"slc-unit\">cm\u00b3<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-r-area\">Area An<\/label><div class=\"slc-input\"><input id=\"f-r-area\" data-calc=\"fixed\" type=\"number\" min=\"0.001\" step=\"0.01\" value=\"4.5\"><span class=\"slc-unit\">cm\u00b2<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-r-gx\">\u03b3x<\/label><div class=\"slc-input\"><input id=\"f-r-gx\" data-calc=\"fixed\" type=\"number\" min=\"0.001\" step=\"0.01\" value=\"1.05\"><span class=\"slc-unit\">factor<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-r-gy\">\u03b3y<\/label><div class=\"slc-input\"><input id=\"f-r-gy\" data-calc=\"fixed\" type=\"number\" min=\"0.001\" step=\"0.01\" value=\"1.05\"><span class=\"slc-unit\">factor<\/span><\/div><\/div>\n\n                <span class=\"slc-subhead\">Post<\/span>\n                <div class=\"slc-field\"><label for=\"f-c-wnx\">Wnx<\/label><div class=\"slc-input\"><input id=\"f-c-wnx\" data-calc=\"fixed\" type=\"number\" min=\"0.001\" step=\"0.01\" value=\"11.25\"><span class=\"slc-unit\">cm\u00b3<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-c-wny\">Wny<\/label><div class=\"slc-input\"><input id=\"f-c-wny\" data-calc=\"fixed\" type=\"number\" min=\"0.001\" step=\"0.01\" value=\"4.06\"><span class=\"slc-unit\">cm\u00b3<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-c-area\">Area An<\/label><div class=\"slc-input\"><input id=\"f-c-area\" data-calc=\"fixed\" type=\"number\" min=\"0.001\" step=\"0.01\" value=\"4.5\"><span class=\"slc-unit\">cm\u00b2<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-c-gx\">\u03b3x<\/label><div class=\"slc-input\"><input id=\"f-c-gx\" data-calc=\"fixed\" type=\"number\" min=\"0.001\" step=\"0.01\" value=\"1.05\"><span class=\"slc-unit\">factor<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-c-gy\">\u03b3y<\/label><div class=\"slc-input\"><input id=\"f-c-gy\" data-calc=\"fixed\" type=\"number\" min=\"0.001\" step=\"0.01\" value=\"1.05\"><span class=\"slc-unit\">factor<\/span><\/div><\/div>\n                <span class=\"slc-subhead\">Brace and material<\/span>\n                <div class=\"slc-field\"><label for=\"f-b-area\">Brace design area<\/label><div class=\"slc-input\"><input id=\"f-b-area\" data-calc=\"fixed\" type=\"number\" min=\"0.001\" step=\"0.01\" value=\"2.36\"><span class=\"slc-unit\">cm\u00b2<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-yield\">Design strength<\/label><div class=\"slc-input\"><input id=\"f-yield\" data-calc=\"fixed\" type=\"number\" min=\"1\" step=\"1\" value=\"215\"><span class=\"slc-unit\">MPa<\/span><\/div><\/div>\n              <\/div>\n              <p class=\"slc-note\">The workbook\u2019s brace check uses 2.36 cm\u00b2 directly; it is exposed here as an editable design area.<\/p>\n            <\/div>\n          <\/details>\n\n          <details class=\"slc-group\">\n            <summary><span>Member forces and moments<\/span><span class=\"slc-group-icon\" aria-hidden=\"true\"><\/span><\/summary>\n            <div class=\"slc-group-body\">\n              <div class=\"slc-fields slc-fields--three\">\n                <span class=\"slc-subhead\">Purlin<\/span>\n                <div class=\"slc-field\"><label for=\"f-p-mx\">Mx<\/label><div class=\"slc-input\"><input id=\"f-p-mx\" data-calc=\"fixed\" type=\"number\" step=\"0.01\" value=\"1178.27\"><span class=\"slc-unit\">N\u00b7m<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-p-my\">My<\/label><div class=\"slc-input\"><input id=\"f-p-my\" data-calc=\"fixed\" type=\"number\" step=\"0.01\" value=\"137.42\"><span class=\"slc-unit\">N\u00b7m<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-p-n\">Axial force N<\/label><div class=\"slc-input\"><input id=\"f-p-n\" data-calc=\"fixed\" type=\"number\" step=\"0.01\" value=\"125.05\"><span class=\"slc-unit\">N<\/span><\/div><\/div>\n\n                <span class=\"slc-subhead\">Rafter<\/span>\n                <div class=\"slc-field\"><label for=\"f-r-mx\">Mx<\/label><div class=\"slc-input\"><input id=\"f-r-mx\" data-calc=\"fixed\" type=\"number\" step=\"0.01\" value=\"1501.67\"><span class=\"slc-unit\">N\u00b7m<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-r-my\">My<\/label><div class=\"slc-input\"><input id=\"f-r-my\" data-calc=\"fixed\" type=\"number\" step=\"0.01\" value=\"59.62\"><span class=\"slc-unit\">N\u00b7m<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-r-n\">Axial force N<\/label><div class=\"slc-input\"><input id=\"f-r-n\" data-calc=\"fixed\" type=\"number\" step=\"0.01\" value=\"14310.44\"><span class=\"slc-unit\">N<\/span><\/div><\/div>\n\n                <span class=\"slc-subhead\">Post<\/span>\n                <div class=\"slc-field\"><label for=\"f-c-mx\">Mx<\/label><div class=\"slc-input\"><input id=\"f-c-mx\" data-calc=\"fixed\" type=\"number\" step=\"0.01\" value=\"1747.07\"><span class=\"slc-unit\">N\u00b7m<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-c-my\">My<\/label><div class=\"slc-input\"><input id=\"f-c-my\" data-calc=\"fixed\" type=\"number\" step=\"0.01\" value=\"6.6\"><span class=\"slc-unit\">N\u00b7m<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-c-n\">Axial force N<\/label><div class=\"slc-input\"><input id=\"f-c-n\" data-calc=\"fixed\" type=\"number\" step=\"0.01\" value=\"2820.03\"><span class=\"slc-unit\">N<\/span><\/div><\/div>\n\n                <span class=\"slc-subhead\">Brace<\/span>\n                <div class=\"slc-field\"><label for=\"f-b-n\">Axial force N<\/label><div class=\"slc-input\"><input id=\"f-b-n\" data-calc=\"fixed\" type=\"number\" step=\"0.01\" value=\"16654.61\"><span class=\"slc-unit\">N<\/span><\/div><\/div>\n              <\/div>\n            <\/div>\n          <\/details>\n\n          <details class=\"slc-group\">\n            <summary><span>Deflection checks<\/span><span class=\"slc-group-icon\" aria-hidden=\"true\"><\/span><\/summary>\n            <div class=\"slc-group-body\">\n              <div class=\"slc-fields\">\n                <span class=\"slc-subhead\">Purlin \u00b7 L\/200<\/span>\n                <div class=\"slc-field\"><label for=\"f-p-def-length\">Span L<\/label><div class=\"slc-input\"><input id=\"f-p-def-length\" data-calc=\"fixed\" type=\"number\" min=\"1\" step=\"1\" value=\"3500\"><span class=\"slc-unit\">mm<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-p-def-actual\">Maximum displacement<\/label><div class=\"slc-input\"><input id=\"f-p-def-actual\" data-calc=\"fixed\" type=\"number\" min=\"0\" step=\"0.1\" value=\"15\"><span class=\"slc-unit\">mm<\/span><\/div><\/div>\n                <span class=\"slc-subhead\">Rafter \u00b7 L\/250<\/span>\n                <div class=\"slc-field\"><label for=\"f-r-def-length\">Span L<\/label><div class=\"slc-input\"><input id=\"f-r-def-length\" data-calc=\"fixed\" type=\"number\" min=\"1\" step=\"1\" value=\"2800\"><span class=\"slc-unit\">mm<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-r-def-actual\">Maximum displacement<\/label><div class=\"slc-input\"><input id=\"f-r-def-actual\" data-calc=\"fixed\" type=\"number\" min=\"0\" step=\"0.1\" value=\"2.6\"><span class=\"slc-unit\">mm<\/span><\/div><\/div>\n                <span class=\"slc-subhead\">Post \u00b7 L\/60<\/span>\n                <div class=\"slc-field\"><label for=\"f-c-def-length\">Height L<\/label><div class=\"slc-input\"><input id=\"f-c-def-length\" data-calc=\"fixed\" type=\"number\" min=\"1\" step=\"1\" value=\"1300\"><span class=\"slc-unit\">mm<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"f-c-def-actual\">Maximum displacement<\/label><div class=\"slc-input\"><input id=\"f-c-def-actual\" data-calc=\"fixed\" type=\"number\" min=\"0\" step=\"0.1\" value=\"2.8\"><span class=\"slc-unit\">mm<\/span><\/div><\/div>\n              <\/div>\n            <\/div>\n          <\/details>\n        <\/div>\n\n        <div class=\"slc-results\" aria-live=\"polite\">\n          <div class=\"slc-panel-head\">\n            <div>\n              <h3>Fixed-tilt results<\/h3>\n              <p>Calculated from current inputs<\/p>\n            <\/div>\n            <span class=\"slc-live-badge\">Live<\/span>\n          <\/div>\n\n          <div class=\"slc-primary-results\">\n            <div class=\"slc-result-card slc-result-card--accent\">\n              <span class=\"slc-result-label\">Design wind load<\/span>\n              <strong class=\"slc-result-value\" id=\"fo-wind-load\">585.31<\/strong>\n              <span class=\"slc-result-unit\">N\/m\u00b2<\/span>\n            <\/div>\n            <div class=\"slc-result-card\">\n              <span class=\"slc-result-label\">Basic wind pressure<\/span>\n              <strong class=\"slc-result-value\" id=\"fo-wind-pressure\">450.24<\/strong>\n              <span class=\"slc-result-unit\">Pa<\/span>\n            <\/div>\n            <div class=\"slc-result-card\">\n              <span class=\"slc-result-label\">Design snow load<\/span>\n              <strong class=\"slc-result-value\" id=\"fo-snow-load\">121.55<\/strong>\n              <span class=\"slc-result-unit\">N\/m\u00b2<\/span>\n            <\/div>\n          <\/div>\n\n          <section class=\"slc-result-section\">\n            <h4>Distributed loads<\/h4>\n            <div class=\"slc-metric-list\">\n              <div class=\"slc-metric-row\"><span>Purlin wind line load<\/span><strong id=\"fo-purlin-wind\">0.470 N\/mm<\/strong><\/div>\n              <div class=\"slc-metric-row\"><span>Wind load per table<\/span><strong id=\"fo-table-wind\">21,055.65 N<\/strong><\/div>\n              <div class=\"slc-metric-row\"><span>Rafter wind line load<\/span><strong id=\"fo-rafter-wind\">3.760 N\/mm<\/strong><\/div>\n              <div class=\"slc-metric-row\"><span>Purlin snow line load<\/span><strong id=\"fo-purlin-snow\">0.195 N\/mm<\/strong><\/div>\n              <div class=\"slc-metric-row\"><span>Snow load per table<\/span><strong id=\"fo-table-snow\">4,372.55 N<\/strong><\/div>\n              <div class=\"slc-metric-row\"><span>Rafter snow line load<\/span><strong id=\"fo-rafter-snow\">0.781 N\/mm<\/strong><\/div>\n              <div class=\"slc-metric-row\"><span>Purlin gravity line load<\/span><strong id=\"fo-gravity\">0.081 N\/mm<\/strong><\/div>\n            <\/div>\n          <\/section>\n\n          <section class=\"slc-result-section\">\n            <h4>Strength utilization<\/h4>\n            <div class=\"slc-table-wrap\">\n              <table class=\"slc-table\">\n                <thead><tr><th>Member<\/th><th>Stress<\/th><th>Utilization<\/th><th>Status<\/th><\/tr><\/thead>\n                <tbody id=\"fo-strength-body\"><\/tbody>\n              <\/table>\n            <\/div>\n          <\/section>\n\n          <section class=\"slc-result-section\">\n            <h4>Deflection checks<\/h4>\n            <div class=\"slc-table-wrap\">\n              <table class=\"slc-table\">\n                <thead><tr><th>Member<\/th><th>Limit<\/th><th>Actual<\/th><th>Status<\/th><\/tr><\/thead>\n                <tbody id=\"fo-deflection-body\"><\/tbody>\n              <\/table>\n            <\/div>\n          <\/section>\n        <\/div>\n      <\/section>\n\n      <section class=\"slc-calculator\" id=\"slc-tracker\" role=\"tabpanel\" aria-labelledby=\"slc-tab-tracker\" hidden>\n        <div class=\"slc-inputs\">\n          <div class=\"slc-panel-head\">\n            <div>\n              <h3>Tracker inputs<\/h3>\n              <p>Single-axis torque model<\/p>\n            <\/div>\n            <button class=\"slc-reset\" type=\"button\" data-reset=\"tracker\">Reset<\/button>\n          <\/div>\n\n          <details class=\"slc-group\" open>\n            <summary><span>Module and torque tube<\/span><span class=\"slc-group-icon\" aria-hidden=\"true\"><\/span><\/summary>\n            <div class=\"slc-group-body\">\n              <div class=\"slc-fields\">\n                <div class=\"slc-field\"><label for=\"t-module-length\">Module length<\/label><div class=\"slc-input\"><input id=\"t-module-length\" data-calc=\"tracker\" type=\"number\" min=\"0\" step=\"0.01\" value=\"2.15\"><span class=\"slc-unit\">m<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"t-module-width\">Module width<\/label><div class=\"slc-input\"><input id=\"t-module-width\" data-calc=\"tracker\" type=\"number\" min=\"0\" step=\"0.01\" value=\"1.06\"><span class=\"slc-unit\">m<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"t-module-mass\">Module mass<\/label><div class=\"slc-input\"><input id=\"t-module-mass\" data-calc=\"tracker\" type=\"number\" min=\"0\" step=\"0.1\" value=\"30\"><span class=\"slc-unit\">kg<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"t-module-count\">Modules per row<\/label><div class=\"slc-input\"><input id=\"t-module-count\" data-calc=\"tracker\" type=\"number\" min=\"1\" step=\"1\" value=\"56\"><span class=\"slc-unit\">pcs<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"t-axis-length\">Torque tube length<\/label><div class=\"slc-input\"><input id=\"t-axis-length\" data-calc=\"tracker\" type=\"number\" min=\"0.01\" step=\"0.1\" value=\"60.7\"><span class=\"slc-unit\">m<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"t-wind-length\">Module windward length<\/label><div class=\"slc-input\"><input id=\"t-wind-length\" data-calc=\"tracker\" type=\"number\" min=\"0\" step=\"0.01\" value=\"2.15\"><span class=\"slc-unit\">m<\/span><\/div><\/div>\n              <\/div>\n            <\/div>\n          <\/details>\n\n          <details class=\"slc-group\" open>\n            <summary><span>Wind cases<\/span><span class=\"slc-group-icon\" aria-hidden=\"true\"><\/span><\/summary>\n            <div class=\"slc-group-body\">\n              <div class=\"slc-fields slc-fields--three\">\n                <span class=\"slc-subhead\">Case 1 \u00b7 0\u00b0<\/span>\n                <div class=\"slc-field\"><label for=\"t-c1-beta\">\u03b2z<\/label><div class=\"slc-input\"><input id=\"t-c1-beta\" data-calc=\"tracker\" type=\"number\" min=\"0\" step=\"0.01\" value=\"1\"><span class=\"slc-unit\">factor<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"t-c1-muz\">\u03bcz<\/label><div class=\"slc-input\"><input id=\"t-c1-muz\" data-calc=\"tracker\" type=\"number\" min=\"0\" step=\"0.01\" value=\"1\"><span class=\"slc-unit\">factor<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"t-c1-rho\">Air density<\/label><div class=\"slc-input\"><input id=\"t-c1-rho\" data-calc=\"tracker\" type=\"number\" min=\"0\" step=\"0.01\" value=\"1.25\"><span class=\"slc-unit\">kg\/m\u00b3<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"t-c1-speed\">Wind speed<\/label><div class=\"slc-input\"><input id=\"t-c1-speed\" data-calc=\"tracker\" type=\"number\" min=\"0\" step=\"0.1\" value=\"25\"><span class=\"slc-unit\">m\/s<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"t-c1-cp-plus\">Positive Cp<\/label><div class=\"slc-input\"><input id=\"t-c1-cp-plus\" data-calc=\"tracker\" type=\"number\" step=\"0.1\" value=\"1.3\"><span class=\"slc-unit\">factor<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"t-c1-cp-minus\">Negative Cp<\/label><div class=\"slc-input\"><input id=\"t-c1-cp-minus\" data-calc=\"tracker\" type=\"number\" step=\"0.1\" value=\"0.5\"><span class=\"slc-unit\">factor<\/span><\/div><\/div>\n\n                <span class=\"slc-subhead\">Case 2 \u00b7 45\u00b0<\/span>\n                <div class=\"slc-field\"><label for=\"t-c2-beta\">\u03b2z<\/label><div class=\"slc-input\"><input id=\"t-c2-beta\" data-calc=\"tracker\" type=\"number\" min=\"0\" step=\"0.01\" value=\"1\"><span class=\"slc-unit\">factor<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"t-c2-muz\">\u03bcz<\/label><div class=\"slc-input\"><input id=\"t-c2-muz\" data-calc=\"tracker\" type=\"number\" min=\"0\" step=\"0.01\" value=\"1\"><span class=\"slc-unit\">factor<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"t-c2-rho\">Air density<\/label><div class=\"slc-input\"><input id=\"t-c2-rho\" data-calc=\"tracker\" type=\"number\" min=\"0\" step=\"0.01\" value=\"1.25\"><span class=\"slc-unit\">kg\/m\u00b3<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"t-c2-speed\">Wind speed<\/label><div class=\"slc-input\"><input id=\"t-c2-speed\" data-calc=\"tracker\" type=\"number\" min=\"0\" step=\"0.1\" value=\"15\"><span class=\"slc-unit\">m\/s<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"t-c2-cp-plus\">Positive Cp<\/label><div class=\"slc-input\"><input id=\"t-c2-cp-plus\" data-calc=\"tracker\" type=\"number\" step=\"0.1\" value=\"1.4\"><span class=\"slc-unit\">factor<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"t-c2-cp-minus\">Negative Cp<\/label><div class=\"slc-input\"><input id=\"t-c2-cp-minus\" data-calc=\"tracker\" type=\"number\" step=\"0.1\" value=\"0.6\"><span class=\"slc-unit\">factor<\/span><\/div><\/div>\n              <\/div>\n            <\/div>\n          <\/details>\n\n          <details class=\"slc-group\">\n            <summary><span>Gravity and snow<\/span><span class=\"slc-group-icon\" aria-hidden=\"true\"><\/span><\/summary>\n            <div class=\"slc-group-body\">\n              <div class=\"slc-fields\">\n                <div class=\"slc-field\"><label for=\"t-gravity-arm\">Gravity eccentricity<\/label><div class=\"slc-input\"><input id=\"t-gravity-arm\" data-calc=\"tracker\" type=\"number\" min=\"0\" step=\"0.01\" value=\"0.13\"><span class=\"slc-unit\">m<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"t-gravity-angle\">Tracker angle<\/label><div class=\"slc-input\"><input id=\"t-gravity-angle\" data-calc=\"tracker\" type=\"number\" min=\"0\" max=\"90\" step=\"1\" value=\"45\"><span class=\"slc-unit\">deg<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"t-snow-mur\">Snow coefficient \u03bcr<\/label><div class=\"slc-input\"><input id=\"t-snow-mur\" data-calc=\"tracker\" type=\"number\" min=\"0\" step=\"0.01\" value=\"0.7\"><span class=\"slc-unit\">factor<\/span><\/div><p class=\"slc-field-help\"><a href=\"#slc-mur-table\">View the \u03bcr reference table \u2193<\/a><\/p><\/div>\n                <div class=\"slc-field\"><label for=\"t-snow-density\">Snow density<\/label><div class=\"slc-input\"><input id=\"t-snow-density\" data-calc=\"tracker\" type=\"number\" min=\"0\" step=\"1\" value=\"250\"><span class=\"slc-unit\">kg\/m\u00b3<\/span><\/div><\/div>\n                <div class=\"slc-field\"><label for=\"t-snow-depth\">Snow depth<\/label><div class=\"slc-input\"><input id=\"t-snow-depth\" data-calc=\"tracker\" type=\"number\" min=\"0\" step=\"0.01\" value=\"0.1\"><span class=\"slc-unit\">m<\/span><\/div><\/div>\n              <\/div>\n            <\/div>\n          <\/details>\n        <\/div>\n\n        <div class=\"slc-results\" aria-live=\"polite\">\n          <div class=\"slc-panel-head\">\n            <div>\n              <h3>Tracker results<\/h3>\n              <p>Torque and environmental loads<\/p>\n            <\/div>\n            <span class=\"slc-live-badge\">Live<\/span>\n          <\/div>\n\n          <div class=\"slc-primary-results\">\n            <div class=\"slc-result-card slc-result-card--accent\">\n              <span class=\"slc-result-label\">Governing unit torque<\/span>\n              <strong class=\"slc-result-value\" id=\"to-governing\">176.58<\/strong>\n              <span class=\"slc-result-unit\">N\u00b7m per metre<\/span>\n            <\/div>\n            <div class=\"slc-result-card\">\n              <span class=\"slc-result-label\">Case 1 \u00b7 0\u00b0<\/span>\n              <strong class=\"slc-result-value\" id=\"to-total-c1\">176.58<\/strong>\n              <span class=\"slc-result-unit\">N\u00b7m per metre<\/span>\n            <\/div>\n            <div class=\"slc-result-card\">\n              <span class=\"slc-result-label\">Case 2 \u00b7 45\u00b0<\/span>\n              <strong class=\"slc-result-value\" id=\"to-total-c2\">88.50<\/strong>\n              <span class=\"slc-result-unit\">N\u00b7m per metre<\/span>\n            <\/div>\n          <\/div>\n\n          <section class=\"slc-result-section\">\n            <h4>Torque breakdown<\/h4>\n            <div class=\"slc-metric-list\">\n              <div class=\"slc-metric-row\"><span>Wind eccentric torque \u00b7 0\u00b0<\/span><strong id=\"to-wind-torque-c1\">10,718.42 N\u00b7m<\/strong><\/div>\n              <div class=\"slc-metric-row\"><span>Wind eccentric torque \u00b7 45\u00b0<\/span><strong id=\"to-wind-torque-c2\">3,858.63 N\u00b7m<\/strong><\/div>\n              <div class=\"slc-metric-row\"><span>Gravity eccentric torque<\/span><strong id=\"to-gravity-torque\">1,513.43 N\u00b7m<\/strong><\/div>\n              <div class=\"slc-metric-row\"><span>Wind unit torque \u00b7 0\u00b0<\/span><strong id=\"to-unit-c1\">176.58 N\u00b7m\/m<\/strong><\/div>\n              <div class=\"slc-metric-row\"><span>Wind unit torque \u00b7 45\u00b0<\/span><strong id=\"to-unit-c2\">63.57 N\u00b7m\/m<\/strong><\/div>\n              <div class=\"slc-metric-row\"><span>Gravity unit torque<\/span><strong id=\"to-unit-gravity\">24.93 N\u00b7m\/m<\/strong><\/div>\n            <\/div>\n          <\/section>\n\n          <section class=\"slc-result-section\">\n            <h4>Environmental values<\/h4>\n            <div class=\"slc-metric-list\">\n              <div class=\"slc-metric-row\"><span>Module area<\/span><strong id=\"to-module-area\">2.279 m\u00b2<\/strong><\/div>\n              <div class=\"slc-metric-row\"><span>Basic wind pressure \u00b7 0\u00b0<\/span><strong id=\"to-pressure-c1\">390.63 Pa<\/strong><\/div>\n              <div class=\"slc-metric-row\"><span>Design wind load \u00b7 0\u00b0<\/span><strong id=\"to-load-c1\">351.56 N\/m\u00b2<\/strong><\/div>\n              <div class=\"slc-metric-row\"><span>Basic wind pressure \u00b7 45\u00b0<\/span><strong id=\"to-pressure-c2\">140.63 Pa<\/strong><\/div>\n              <div class=\"slc-metric-row\"><span>Design wind load \u00b7 45\u00b0<\/span><strong id=\"to-load-c2\">140.63 N\/m\u00b2<\/strong><\/div>\n              <div class=\"slc-metric-row\"><span>Design snow load<\/span><strong id=\"to-snow-load\">0.175 kN\/m\u00b2<\/strong><\/div>\n            <\/div>\n          <\/section>\n        <\/div>\n      <\/section>\n\n      <section class=\"slc-reference\" aria-labelledby=\"slc-reference-title\">\n        <div class=\"slc-reference-head\">\n          <div>\n            <span class=\"slc-eyebrow\" style=\"color: var(--slc-green)\">Fixed-tilt reference data<\/span>\n            <h2 id=\"slc-reference-title\">Engineering reference tables<\/h2>\n          <\/div>\n          <p>\n            Complete load-combination factors and wind-pressure height\n            coefficients reproduced from the supplied workbook.\n          <\/p>\n        <\/div>\n\n        <div class=\"slc-reference-grid\">\n          <article class=\"slc-reference-card\">\n            <header class=\"slc-reference-card-head\">\n              <div>\n                <h3>Load combinations<\/h3>\n                <p>Strength and deflection combinations<\/p>\n              <\/div>\n              <span class=\"slc-reference-tag\">12 factors<\/span>\n            <\/header>\n            <div class=\"slc-reference-table-wrap\">\n              <table class=\"slc-reference-table\" aria-label=\"Load combinations\">\n                <thead>\n                  <tr>\n                    <th>Check<\/th>\n                    <th>Combination<\/th>\n                    <th>Load component<\/th>\n                    <th>Factor<\/th>\n                  <\/tr>\n                <\/thead>\n                <tbody>\n                  <tr><td><span class=\"slc-check-label\">Strength<\/span><\/td><td>1.2G + 1.4W+<\/td><td>Gravity<\/td><td>1.20<\/td><\/tr>\n                  <tr><td><span class=\"slc-check-label\">Strength<\/span><\/td><td>1.2G + 1.4W+<\/td><td>Positive wind<\/td><td>1.40<\/td><\/tr>\n                  <tr><td><span class=\"slc-check-label\">Strength<\/span><\/td><td>G + 1.4W\u2212<\/td><td>Gravity<\/td><td>1.00<\/td><\/tr>\n                  <tr><td><span class=\"slc-check-label\">Strength<\/span><\/td><td>G + 1.4W\u2212<\/td><td>Leeward wind<\/td><td>1.40<\/td><\/tr>\n                  <tr><td><span class=\"slc-check-label\">Strength<\/span><\/td><td>1.2G + 1.4S<\/td><td>Gravity<\/td><td>1.20<\/td><\/tr>\n                  <tr><td><span class=\"slc-check-label\">Strength<\/span><\/td><td>1.2G + 1.4S<\/td><td>Snow<\/td><td>1.40<\/td><\/tr>\n                  <tr><td><span class=\"slc-check-label\">Deflection<\/span><\/td><td>G + W+<\/td><td>Gravity<\/td><td>1.00<\/td><\/tr>\n                  <tr><td><span class=\"slc-check-label\">Deflection<\/span><\/td><td>G + W+<\/td><td>Positive wind<\/td><td>1.00<\/td><\/tr>\n                  <tr><td><span class=\"slc-check-label\">Deflection<\/span><\/td><td>G + W\u2212<\/td><td>Gravity<\/td><td>1.00<\/td><\/tr>\n                  <tr><td><span class=\"slc-check-label\">Deflection<\/span><\/td><td>G + W\u2212<\/td><td>Leeward wind<\/td><td>1.00<\/td><\/tr>\n                  <tr><td><span class=\"slc-check-label\">Deflection<\/span><\/td><td>G + S<\/td><td>Gravity<\/td><td>1.00<\/td><\/tr>\n                  <tr><td><span class=\"slc-check-label\">Deflection<\/span><\/td><td>G + S<\/td><td>Snow<\/td><td>1.00<\/td><\/tr>\n                <\/tbody>\n              <\/table>\n            <\/div>\n          <\/article>\n\n          <article class=\"slc-reference-card\" id=\"slc-muz-table\">\n            <header class=\"slc-reference-card-head\">\n              <div>\n                <h3>Wind pressure height coefficient \u03bcz<\/h3>\n                <p>Coefficient by height and terrain category<\/p>\n              <\/div>\n              <span class=\"slc-reference-tag\">A\u2013D terrain<\/span>\n            <\/header>\n            <div class=\"slc-reference-table-wrap\">\n              <table class=\"slc-reference-table\" aria-label=\"Wind pressure height coefficient by terrain category\">\n                <thead>\n                  <tr>\n                    <th>Height (m)<\/th>\n                    <th>Terrain A<\/th>\n                    <th>Terrain B<\/th>\n                    <th>Terrain C<\/th>\n                    <th>Terrain D<\/th>\n                  <\/tr>\n                <\/thead>\n                <tbody>\n                  <tr><td>5<\/td><td>1.09<\/td><td>1.00<\/td><td>0.65<\/td><td>0.51<\/td><\/tr>\n                  <tr><td>10<\/td><td>1.28<\/td><td>1.00<\/td><td>0.65<\/td><td>0.51<\/td><\/tr>\n                  <tr><td>15<\/td><td>1.42<\/td><td>1.13<\/td><td>0.65<\/td><td>0.51<\/td><\/tr>\n                  <tr><td>20<\/td><td>1.52<\/td><td>1.23<\/td><td>0.74<\/td><td>0.51<\/td><\/tr>\n                  <tr><td>30<\/td><td>1.67<\/td><td>1.39<\/td><td>0.88<\/td><td>0.51<\/td><\/tr>\n                  <tr><td>40<\/td><td>1.79<\/td><td>1.52<\/td><td>1.00<\/td><td>0.60<\/td><\/tr>\n                  <tr><td>50<\/td><td>1.89<\/td><td>1.62<\/td><td>1.10<\/td><td>0.69<\/td><\/tr>\n                  <tr><td>60<\/td><td>1.97<\/td><td>1.71<\/td><td>1.20<\/td><td>0.77<\/td><\/tr>\n                  <tr><td>70<\/td><td>2.05<\/td><td>1.79<\/td><td>1.28<\/td><td>0.84<\/td><\/tr>\n                  <tr><td>80<\/td><td>2.12<\/td><td>1.87<\/td><td>1.36<\/td><td>0.91<\/td><\/tr>\n                  <tr><td>90<\/td><td>2.18<\/td><td>1.93<\/td><td>1.43<\/td><td>0.98<\/td><\/tr>\n                  <tr><td>100<\/td><td>2.23<\/td><td>2.00<\/td><td>1.50<\/td><td>1.04<\/td><\/tr>\n                  <tr><td>150<\/td><td>2.46<\/td><td>2.25<\/td><td>1.79<\/td><td>1.33<\/td><\/tr>\n                  <tr><td>200<\/td><td>2.64<\/td><td>2.46<\/td><td>2.03<\/td><td>1.58<\/td><\/tr>\n                  <tr><td>250<\/td><td>2.78<\/td><td>2.63<\/td><td>2.24<\/td><td>1.81<\/td><\/tr>\n                  <tr><td>300<\/td><td>2.91<\/td><td>2.77<\/td><td>2.43<\/td><td>2.02<\/td><\/tr>\n                  <tr><td>350<\/td><td>2.91<\/td><td>2.91<\/td><td>2.60<\/td><td>2.22<\/td><\/tr>\n                  <tr><td>400<\/td><td>2.91<\/td><td>2.91<\/td><td>2.76<\/td><td>2.40<\/td><\/tr>\n                  <tr><td>450<\/td><td>2.91<\/td><td>2.91<\/td><td>2.91<\/td><td>2.58<\/td><\/tr>\n                  <tr><td>500<\/td><td>2.91<\/td><td>2.91<\/td><td>2.91<\/td><td>2.74<\/td><\/tr>\n                  <tr><td>\u2265550<\/td><td>2.91<\/td><td>2.91<\/td><td>2.91<\/td><td>2.91<\/td><\/tr>\n                <\/tbody>\n              <\/table>\n            <\/div>\n            <div class=\"slc-terrain-notes\">\n              <div class=\"slc-terrain-note\"><strong>Terrain A<\/strong><span>Offshore areas, islands, coasts, lake shores and deserts.<\/span><\/div>\n              <div class=\"slc-terrain-note\"><strong>Terrain B<\/strong><span>Fields, rural areas, forests, hills and sparsely built suburbs.<\/span><\/div>\n              <div class=\"slc-terrain-note\"><strong>Terrain C<\/strong><span>Urban districts with dense groups of buildings.<\/span><\/div>\n              <div class=\"slc-terrain-note\"><strong>Terrain D<\/strong><span>Dense urban districts dominated by taller buildings.<\/span><\/div>\n            <\/div>\n          <\/article>\n\n          <article class=\"slc-reference-card slc-reference-card--wide\" id=\"slc-mur-table\">\n            <header class=\"slc-reference-card-head\">\n              <div>\n                <h3>Mono-pitch roof snow coefficient \u03bcr<\/h3>\n                <p>Single-span roof snow distribution by roof slope \u03b1<\/p>\n              <\/div>\n              <span class=\"slc-reference-tag\">8 slope points<\/span>\n            <\/header>\n            <div class=\"slc-snow-reference-body\">\n              <div class=\"slc-roof-figure\">\n                <svg viewBox=\"0 0 440 230\" role=\"img\" aria-labelledby=\"slc-roof-diagram-title slc-roof-diagram-desc\">\n                  <title id=\"slc-roof-diagram-title\">Single-span mono-pitch roof<\/title>\n                  <desc id=\"slc-roof-diagram-desc\">A sloped roof with uniformly distributed snow load and roof angle alpha.<\/desc>\n                  <defs>\n                    <linearGradient id=\"slcSnowFill\" x1=\"0\" x2=\"1\">\n                      <stop offset=\"0\" stop-color=\"#dff3ea\"><\/stop>\n                      <stop offset=\"1\" stop-color=\"#f4faf7\"><\/stop>\n                    <\/linearGradient>\n                  <\/defs>\n                  <text x=\"220\" y=\"30\" fill=\"#51635d\" font-size=\"12\" font-weight=\"700\" text-anchor=\"middle\">Uniform snow distribution<\/text>\n                  <rect x=\"126\" y=\"45\" width=\"188\" height=\"25\" rx=\"0\" fill=\"url(#slcSnowFill)\" stroke=\"#16815d\" stroke-width=\"2.5\"><\/rect>\n                  <text x=\"327\" y=\"64\" fill=\"#16815d\" font-size=\"17\" font-weight=\"800\">\u03bcr<\/text>\n                  <path d=\"M104 151 L316 103 L316 181 L104 181 Z\" fill=\"#eaf5f0\" stroke=\"none\"><\/path>\n                  <path d=\"M104 151 L316 103\" fill=\"none\" stroke=\"#10251f\" stroke-width=\"4\" stroke-linecap=\"round\"><\/path>\n                  <path d=\"M104 151 L104 181 M316 103 L316 181 M82 181 H340\" fill=\"none\" stroke=\"#10251f\" stroke-width=\"4\" stroke-linecap=\"round\"><\/path>\n                  <path d=\"M104 151 H202\" fill=\"none\" stroke=\"#51635d\" stroke-width=\"2\" stroke-linecap=\"round\"><\/path>\n                  <path d=\"M164 151 A60 60 0 0 0 162.5 137.4\" fill=\"none\" stroke=\"#16815d\" stroke-width=\"2.5\" stroke-linecap=\"round\"><\/path>\n                  <text x=\"174\" y=\"148\" fill=\"#16815d\" font-size=\"13\" font-weight=\"800\">\u03b1<\/text>\n                <\/svg>\n              <\/div>\n              <div class=\"slc-mur-panel\">\n                <h4>Roof slope \u03b1 and snow coefficient \u03bcr<\/h4>\n                <p>Select the coefficient corresponding to the mono-pitch roof angle.<\/p>\n                <div class=\"slc-mur-values\" role=\"table\" aria-label=\"Mono-pitch roof snow coefficient by slope\">\n                  <div class=\"slc-mur-cell\" role=\"row\"><span role=\"rowheader\">\u03b1 \u226425\u00b0<\/span><strong role=\"cell\">1.00<\/strong><\/div>\n                  <div class=\"slc-mur-cell\" role=\"row\"><span role=\"rowheader\">\u03b1 30\u00b0<\/span><strong role=\"cell\">0.85<\/strong><\/div>\n                  <div class=\"slc-mur-cell\" role=\"row\"><span role=\"rowheader\">\u03b1 35\u00b0<\/span><strong role=\"cell\">0.70<\/strong><\/div>\n                  <div class=\"slc-mur-cell\" role=\"row\"><span role=\"rowheader\">\u03b1 40\u00b0<\/span><strong role=\"cell\">0.55<\/strong><\/div>\n                  <div class=\"slc-mur-cell\" role=\"row\"><span role=\"rowheader\">\u03b1 45\u00b0<\/span><strong role=\"cell\">0.40<\/strong><\/div>\n                  <div class=\"slc-mur-cell\" role=\"row\"><span role=\"rowheader\">\u03b1 50\u00b0<\/span><strong role=\"cell\">0.25<\/strong><\/div>\n                  <div class=\"slc-mur-cell\" role=\"row\"><span role=\"rowheader\">\u03b1 55\u00b0<\/span><strong role=\"cell\">0.10<\/strong><\/div>\n                  <div class=\"slc-mur-cell\" role=\"row\"><span role=\"rowheader\">\u03b1 \u226560\u00b0<\/span><strong role=\"cell\">0.00<\/strong><\/div>\n                <\/div>\n                <div class=\"slc-mur-legend\">\n                  <span><strong>\u03b1<\/strong> Roof slope angle<\/span>\n                  <span><strong>\u03bcr<\/strong> Snow distribution coefficient<\/span>\n                <\/div>\n              <\/div>\n            <\/div>\n          <\/article>\n        <\/div>\n      <\/section>\n    <\/div>\n  <\/section>\n\n  <section class=\"slc-guide\" aria-labelledby=\"slc-guide-title\">\n    <div class=\"slc-wrap\">\n      <div class=\"slc-guide-card\">\n        <div>\n          <span class=\"slc-eyebrow\">New to structural load calculations?<\/span>\n          <h2 id=\"slc-guide-title\">Follow the calculator step by step<\/h2>\n          <p>\n            Learn where each input comes from, which units to use, how to read\n            Pass and Review results, and how the default fixed-tilt and tracker\n            examples work.\n          <\/p>\n        <\/div>\n        <div class=\"slc-guide-actions\">\n          <a class=\"slc-button\" href=\"https:\/\/luminvolt.com\/how-to-use-solar-mounting-structural-load-calculator\/\">Open the full tutorial<\/a>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"slc-method\">\n    <div class=\"slc-wrap slc-method-grid\">\n      <div class=\"slc-method-copy\">\n        <span class=\"slc-eyebrow\" style=\"color: var(--slc-green)\">Calculation basis<\/span>\n        <h2>Transparent formulas, live results<\/h2>\n        <p>\n          The calculation chain mirrors the supplied workbook and exposes the\n          previously hard-coded brace area as an editable engineering input.\n        <\/p>\n      <\/div>\n      <div class=\"slc-formulas\">\n        <div class=\"slc-formula\">\n          <strong>Basic wind pressure<\/strong>\n          <code>w = 0.5 \u00d7 \u03c1 \u00d7 V\u00b2<\/code>\n        <\/div>\n        <div class=\"slc-formula\">\n          <strong>Design wind and snow loads<\/strong>\n          <code>\u03c9k = \u03b2z \u00d7 \u03bcs \u00d7 \u03bcz \u00d7 w0 &nbsp; | &nbsp; sk = \u03bcr \u00d7 s0<\/code>\n        <\/div>\n        <div class=\"slc-formula\">\n          <strong>Combined member stress<\/strong>\n          <code>\u03c3 = N \/ An + Mx \/ (\u03b3x \u00d7 Wnx) + My \/ (\u03b3y \u00d7 Wny)<\/code>\n        <\/div>\n        <div class=\"slc-formula\">\n          <strong>Tracker unit torque<\/strong>\n          <code>t = T \/ L1<\/code>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"slc-disclaimer\">\n    <div class=\"slc-wrap\">\n      <p>\n        Preliminary engineering tool only. Confirm site wind, snow, exposure,\n        load combinations, member capacities and applicable codes with a qualified\n        structural engineer before design or construction.\n      <\/p>\n    <\/div>\n  <\/section>\n<\/main>\n\n<script>\n  (() => {\n    const root = document.getElementById(\"solar-structural-load-calculator\");\n    if (!root) return;\n\n    const number = (id) => {\n      const field = document.getElementById(id);\n      const value = field ? Number.parseFloat(field.value) : 0;\n      return Number.isFinite(value) ? value : 0;\n    };\n\n    const safeDivide = (a, b) => (Math.abs(b) > 1e-12 ? a \/ b : 0);\n    const format = (value, digits = 2) =>\n      Number.isFinite(value)\n        ? value.toLocaleString(\"en-US\", {\n            minimumFractionDigits: digits,\n            maximumFractionDigits: digits,\n          })\n        : \"\u2014\";\n    const put = (id, text) => {\n      const node = document.getElementById(id);\n      if (node) node.textContent = text;\n    };\n    const status = (pass) =>\n      `<span class=\"slc-status slc-status--${pass ? \"pass\" : \"fail\"}\">${pass ? \"Pass\" : \"Review\"}<\/span>`;\n\n    const memberStress = (prefix, forcePrefix) => {\n      const axial = number(`${forcePrefix}-n`);\n      const mx = number(`${forcePrefix}-mx`);\n      const my = number(`${forcePrefix}-my`);\n      const area = number(`${prefix}-area`);\n      const wnx = number(`${prefix}-wnx`);\n      const wny = number(`${prefix}-wny`);\n      const gx = number(`${prefix}-gx`);\n      const gy = number(`${prefix}-gy`);\n      const raw =\n        safeDivide(axial * 10000, area) +\n        safeDivide(mx * 1000000, gx * wnx) +\n        safeDivide(my * 1000000, gy * wny);\n      return raw \/ 1000000;\n    };\n\n    function calculateFixed() {\n      const moduleLength = number(\"f-module-length\");\n      const moduleWidth = number(\"f-module-width\");\n      const moduleMass = number(\"f-module-mass\");\n      const rows = number(\"f-layout-rows\");\n      const columns = number(\"f-layout-cols\");\n      const purlinLength = number(\"f-purlin-length\");\n      const rafterLength = number(\"f-rafter-length\");\n      const moduleArea = (moduleLength * moduleWidth) \/ 1000000;\n\n      const basicWindPressure =\n        0.5 * number(\"f-air-density\") * number(\"f-wind-speed\") ** 2;\n      const designWind =\n        number(\"f-wind-beta\") *\n        number(\"f-wind-shape\") *\n        number(\"f-wind-height\") *\n        basicWindPressure;\n      const basicSnowPressure =\n        number(\"f-snow-density\") * 10 * number(\"f-snow-depth\");\n      const designSnow = number(\"f-snow-shape\") * basicSnowPressure;\n\n      const purlinWind = safeDivide(\n        designWind * moduleArea * columns,\n        2 * purlinLength,\n      );\n      const tableWind = designWind * moduleArea * columns * rows;\n      const rafterWind = safeDivide(tableWind, 2 * rafterLength);\n      const purlinSnow = safeDivide(\n        designSnow * moduleArea * columns,\n        purlinLength,\n      );\n      const tableSnow = designSnow * moduleArea * columns * rows;\n      const rafterSnow = safeDivide(tableSnow, 2 * rafterLength);\n      const gravity = safeDivide(columns * moduleMass * 10, purlinLength * 2);\n\n      put(\"fo-wind-pressure\", format(basicWindPressure, 2));\n      put(\"fo-wind-load\", format(designWind, 2));\n      put(\"fo-snow-load\", format(designSnow, 2));\n      put(\"fo-purlin-wind\", `${format(purlinWind, 3)} N\/mm`);\n      put(\"fo-table-wind\", `${format(tableWind, 2)} N`);\n      put(\"fo-rafter-wind\", `${format(rafterWind, 3)} N\/mm`);\n      put(\"fo-purlin-snow\", `${format(purlinSnow, 3)} N\/mm`);\n      put(\"fo-table-snow\", `${format(tableSnow, 2)} N`);\n      put(\"fo-rafter-snow\", `${format(rafterSnow, 3)} N\/mm`);\n      put(\"fo-gravity\", `${format(gravity, 3)} N\/mm`);\n\n      const strength = [\n        [\"Purlin\", memberStress(\"f-p\", \"f-p\")],\n        [\"Rafter\", memberStress(\"f-r\", \"f-r\")],\n        [\"Post\", memberStress(\"f-c\", \"f-c\")],\n        [\n          \"Brace\",\n          safeDivide(number(\"f-b-n\") * 10000, number(\"f-b-area\")) \/ 1000000,\n        ],\n      ];\n      const designStrength = number(\"f-yield\");\n      document.getElementById(\"fo-strength-body\").innerHTML = strength\n        .map(([name, stress]) => {\n          const utilization = safeDivide(stress, designStrength);\n          return `<tr><td>${name}<\/td><td>${format(stress, 2)} MPa<\/td><td>${format(utilization * 100, 1)}%<\/td><td>${status(utilization <= 1)}<\/td><\/tr>`;\n        })\n        .join(\"\");\n\n      const deflections = [\n        [\"Purlin\", safeDivide(number(\"f-p-def-length\"), 200), number(\"f-p-def-actual\")],\n        [\"Rafter\", safeDivide(number(\"f-r-def-length\"), 250), number(\"f-r-def-actual\")],\n        [\"Post\", safeDivide(number(\"f-c-def-length\"), 60), number(\"f-c-def-actual\")],\n      ];\n      document.getElementById(\"fo-deflection-body\").innerHTML = deflections\n        .map(([name, limit, actual]) =>\n          `<tr><td>${name}<\/td><td>${format(limit, 2)} mm<\/td><td>${format(actual, 2)} mm<\/td><td>${status(actual <= limit)}<\/td><\/tr>`,\n        )\n        .join(\"\");\n    }\n\n    function trackerCase(prefix) {\n      const beta = number(`${prefix}-beta`);\n      const muz = number(`${prefix}-muz`);\n      const rho = number(`${prefix}-rho`);\n      const speed = number(`${prefix}-speed`);\n      const cpPlus = number(`${prefix}-cp-plus`);\n      const cpMinus = number(`${prefix}-cp-minus`);\n      const pressure = 0.5 * rho * speed ** 2;\n      const shapeAverage = (cpPlus + cpMinus) \/ 2;\n      return {\n        beta,\n        muz,\n        cpPlus,\n        cpMinus,\n        pressure,\n        designLoad: beta * shapeAverage * muz * pressure,\n      };\n    }\n\n    function calculateTracker() {\n      const moduleArea =\n        number(\"t-module-length\") * number(\"t-module-width\");\n      const count = number(\"t-module-count\");\n      const windLength = number(\"t-wind-length\");\n      const axisLength = number(\"t-axis-length\");\n      const case1 = trackerCase(\"t-c1\");\n      const case2 = trackerCase(\"t-c2\");\n\n      const windTorque = (item) =>\n        count *\n        0.5 *\n        item.pressure *\n        item.beta *\n        item.muz *\n        (item.cpPlus - item.cpMinus) *\n        0.25 *\n        windLength *\n        moduleArea;\n      const torque1 = windTorque(case1);\n      const torque2 = windTorque(case2);\n      const gravityTorque =\n        number(\"t-module-mass\") *\n        count *\n        9.8 *\n        number(\"t-gravity-arm\") *\n        Math.sin((number(\"t-gravity-angle\") * Math.PI) \/ 180);\n      const unit1 = safeDivide(torque1, axisLength);\n      const unit2 = safeDivide(torque2, axisLength);\n      const gravityUnit = safeDivide(gravityTorque, axisLength);\n      const total1 = unit1;\n      const total2 = unit2 + gravityUnit;\n      const snowPressure =\n        number(\"t-snow-density\") * 10 * number(\"t-snow-depth\");\n      const snowLoad = (number(\"t-snow-mur\") * snowPressure) \/ 1000;\n\n      put(\"to-governing\", format(Math.max(Math.abs(total1), Math.abs(total2)), 2));\n      put(\"to-total-c1\", format(total1, 2));\n      put(\"to-total-c2\", format(total2, 2));\n      put(\"to-wind-torque-c1\", `${format(torque1, 2)} N\u00b7m`);\n      put(\"to-wind-torque-c2\", `${format(torque2, 2)} N\u00b7m`);\n      put(\"to-gravity-torque\", `${format(gravityTorque, 2)} N\u00b7m`);\n      put(\"to-unit-c1\", `${format(unit1, 2)} N\u00b7m\/m`);\n      put(\"to-unit-c2\", `${format(unit2, 2)} N\u00b7m\/m`);\n      put(\"to-unit-gravity\", `${format(gravityUnit, 2)} N\u00b7m\/m`);\n      put(\"to-module-area\", `${format(moduleArea, 3)} m\u00b2`);\n      put(\"to-pressure-c1\", `${format(case1.pressure, 2)} Pa`);\n      put(\"to-load-c1\", `${format(case1.designLoad, 2)} N\/m\u00b2`);\n      put(\"to-pressure-c2\", `${format(case2.pressure, 2)} Pa`);\n      put(\"to-load-c2\", `${format(case2.designLoad, 2)} N\/m\u00b2`);\n      put(\"to-snow-load\", `${format(snowLoad, 3)} kN\/m\u00b2`);\n    }\n\n    root.querySelectorAll(\"[data-calc]\").forEach((input) => {\n      input.dataset.defaultValue = input.value;\n      input.addEventListener(\"input\", () => {\n        if (input.dataset.calc === \"fixed\") calculateFixed();\n        else calculateTracker();\n      });\n    });\n\n    root.querySelectorAll(\"[data-reset]\").forEach((button) => {\n      button.addEventListener(\"click\", () => {\n        const mode = button.dataset.reset;\n        root.querySelectorAll(`[data-calc=\"${mode}\"]`).forEach((input) => {\n          input.value = input.dataset.defaultValue;\n        });\n        if (mode === \"fixed\") calculateFixed();\n        else calculateTracker();\n      });\n    });\n\n    root.querySelectorAll(\".slc-mode-tab\").forEach((tab) => {\n      tab.addEventListener(\"click\", () => {\n        const mode = tab.dataset.mode;\n        root.querySelectorAll(\".slc-mode-tab\").forEach((item) => {\n          const active = item === tab;\n          item.setAttribute(\"aria-selected\", String(active));\n          item.tabIndex = active ? 0 : -1;\n        });\n        document.getElementById(\"slc-fixed\").hidden = mode !== \"fixed\";\n        document.getElementById(\"slc-tracker\").hidden = mode !== \"tracker\";\n      });\n    });\n\n    calculateFixed();\n    calculateTracker();\n  })();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Calculatrice d'ing\u00e9nierie Calculateur de charge structurale de montage solaire Calculer la pression du vent, la pression de la neige, l'utilisation du membre, la d\u00e9flexion et le couple du tracker \u00e0 partir d'une interface ing\u00e9nierie pr\u00eate. Ouvrir la calculatrice Lire le guide pour d\u00e9butants Mod\u00e8le de charge structurale Calcul en direct Vent Neige Modes2 Types de charges3 Forces R\u00e9ponseInstant Livret de travail Converti Choisir le syst\u00e8me de montage Par d\u00e9faut reproduire le livret d'ing\u00e9nierie fourni. Changer n'importe quel \u2026 <a title=\"Calculateur de charge structurale pour montage solaire\" class=\"read-more\" href=\"https:\/\/luminvolt.com\/fr\/calculateur-de-charge-structurelle-de-montage-solaire\/\" aria-label=\"En savoir plus sur le calculateur de charges structurelles pour les syst\u00e8mes de montage solaire\">En savoir plus<\/a><\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_yoast_wpseo_focuskw":"solar mounting structural load calculator","_yoast_wpseo_title":"Solar Mounting Structural Load Calculator | LuminVolt","_yoast_wpseo_metadesc":"Calculate wind pressure, snow load, member utilization, deflection and single-axis tracker torque with LuminVolt\u2019s interactive engineering calculator.","footnotes":""},"class_list":["post-742","page","type-page","status-publish"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.3 (Yoast SEO v28.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Solar Mounting Structural Load Calculator | LuminVolt<\/title>\n<meta name=\"description\" content=\"Calculate wind pressure, snow load, member utilization, deflection and single-axis tracker torque with LuminVolt\u2019s interactive engineering calculator.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/luminvolt.com\/fr\/calculateur-de-charge-structurelle-de-montage-solaire\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Solar Mounting Structural Load Calculator\" \/>\n<meta property=\"og:description\" content=\"Calculate wind pressure, snow load, member utilization, deflection and single-axis tracker torque with LuminVolt\u2019s interactive engineering calculator.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/luminvolt.com\/fr\/calculateur-de-charge-structurelle-de-montage-solaire\/\" \/>\n<meta property=\"og:site_name\" content=\"LuminVolt\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-30T02:37:59+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/luminvolt.com\\\/solar-mounting-structural-load-calculator\\\/\",\"url\":\"https:\\\/\\\/luminvolt.com\\\/solar-mounting-structural-load-calculator\\\/\",\"name\":\"Solar Mounting Structural Load Calculator | LuminVolt\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/luminvolt.com\\\/#website\"},\"datePublished\":\"2026-07-30T01:21:41+00:00\",\"dateModified\":\"2026-07-30T02:37:59+00:00\",\"description\":\"Calculate wind pressure, snow load, member utilization, deflection and single-axis tracker torque with LuminVolt\u2019s interactive engineering calculator.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/luminvolt.com\\\/solar-mounting-structural-load-calculator\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/luminvolt.com\\\/solar-mounting-structural-load-calculator\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/luminvolt.com\\\/solar-mounting-structural-load-calculator\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/luminvolt.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Solar Mounting Structural Load Calculator\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/luminvolt.com\\\/#website\",\"url\":\"https:\\\/\\\/luminvolt.com\\\/\",\"name\":\"LuminVolt\",\"description\":\"Your Partner in Advanced Solar Mounting Systems &amp; Energy Storage\",\"publisher\":{\"@id\":\"https:\\\/\\\/luminvolt.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/luminvolt.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/luminvolt.com\\\/#organization\",\"name\":\"LuminVolt\",\"url\":\"https:\\\/\\\/luminvolt.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/luminvolt.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/luminvolt.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/LuminVolt-02.webp\",\"contentUrl\":\"https:\\\/\\\/luminvolt.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/LuminVolt-02.webp\",\"width\":512,\"height\":512,\"caption\":\"LuminVolt\"},\"image\":{\"@id\":\"https:\\\/\\\/luminvolt.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Calculateur de Charge Structurelle de Montage Solaire | LuminVolt","description":"Calculer la pression du vent, la charge de neige, l'utilisation des \u00e9l\u00e9ments, la d\u00e9flexion et le couple du suivi mono-axe avec le calculateur d'ing\u00e9nierie interactif de LuminVolt.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/luminvolt.com\/fr\/calculateur-de-charge-structurelle-de-montage-solaire\/","og_locale":"fr_FR","og_type":"article","og_title":"Solar Mounting Structural Load Calculator","og_description":"Calculate wind pressure, snow load, member utilization, deflection and single-axis tracker torque with LuminVolt\u2019s interactive engineering calculator.","og_url":"https:\/\/luminvolt.com\/fr\/calculateur-de-charge-structurelle-de-montage-solaire\/","og_site_name":"LuminVolt","article_modified_time":"2026-07-30T02:37:59+00:00","twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/luminvolt.com\/solar-mounting-structural-load-calculator\/","url":"https:\/\/luminvolt.com\/solar-mounting-structural-load-calculator\/","name":"Calculateur de Charge Structurelle de Montage Solaire | LuminVolt","isPartOf":{"@id":"https:\/\/luminvolt.com\/#website"},"datePublished":"2026-07-30T01:21:41+00:00","dateModified":"2026-07-30T02:37:59+00:00","description":"Calculer la pression du vent, la charge de neige, l'utilisation des \u00e9l\u00e9ments, la d\u00e9flexion et le couple du suivi mono-axe avec le calculateur d'ing\u00e9nierie interactif de LuminVolt.","breadcrumb":{"@id":"https:\/\/luminvolt.com\/solar-mounting-structural-load-calculator\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/luminvolt.com\/solar-mounting-structural-load-calculator\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/luminvolt.com\/solar-mounting-structural-load-calculator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/luminvolt.com\/"},{"@type":"ListItem","position":2,"name":"Solar Mounting Structural Load Calculator"}]},{"@type":"WebSite","@id":"https:\/\/luminvolt.com\/#website","url":"https:\/\/luminvolt.com\/","name":"LuminVolt","description":"Votre partenaire dans les syst\u00e8mes de montage solaires avanc\u00e9s et l'autoconsommation d'\u00e9nergie","publisher":{"@id":"https:\/\/luminvolt.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/luminvolt.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/luminvolt.com\/#organization","name":"LuminVolt","url":"https:\/\/luminvolt.com\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/luminvolt.com\/#\/schema\/logo\/image\/","url":"https:\/\/luminvolt.com\/wp-content\/uploads\/2024\/12\/LuminVolt-02.webp","contentUrl":"https:\/\/luminvolt.com\/wp-content\/uploads\/2024\/12\/LuminVolt-02.webp","width":512,"height":512,"caption":"LuminVolt"},"image":{"@id":"https:\/\/luminvolt.com\/#\/schema\/logo\/image\/"}}]}},"yoast_social":{"twitter_title":"","twitter_description":"","twitter_image":""},"_links":{"self":[{"href":"https:\/\/luminvolt.com\/fr\/wp-json\/wp\/v2\/pages\/742","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/luminvolt.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/luminvolt.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/luminvolt.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/luminvolt.com\/fr\/wp-json\/wp\/v2\/comments?post=742"}],"version-history":[{"count":9,"href":"https:\/\/luminvolt.com\/fr\/wp-json\/wp\/v2\/pages\/742\/revisions"}],"predecessor-version":[{"id":757,"href":"https:\/\/luminvolt.com\/fr\/wp-json\/wp\/v2\/pages\/742\/revisions\/757"}],"wp:attachment":[{"href":"https:\/\/luminvolt.com\/fr\/wp-json\/wp\/v2\/media?parent=742"}],"curies":[{"name":"Page d'accueil","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}