<!--
LivRed Pricing Calculator - Public Page Live Scan Version
Property: LivRed
Purpose: Uses ProspectPortal public
student floorplans page for live lease-term and pricing scanning.
Important Fix: This version avoids the
protected Entrata AJAX endpoint that was returning HTTP 403.
Confirmed Published Calculator Page:
https://livred.prospectportal.com/price-calculator
Confirmed ProspectPortal Student
Floorplans Page: /lincoln/livred/student/
Confirmed Property ID: 100003423
Confirmed Lease Windows:
13525 = Academic Year (08/15/2025 -
07/24/2026), lease term ID 377
19371 = Annual Term (08/13/2026 -
07/23/2027), lease term ID 6018
Fees included:
Damage Waiver Program Fee: $15/month
Contents Insurance Plan Fee: $6.50/month
Utility Billing Service Administrative
Fee: $5.50/month
Rent Reporting Fee: $8.95/month
Valet Trash: $15/month
Student Guarantor Waiver Program Fee:
$550 conditional/required depending applicant type
Pet Screening Fee: $35/pet
Non-Refundable Pet Fee: $300/pet
Monthly Pet Rent: $30/pet
Garage Parking: $130/month optional
Marcus Lot - 10th & L Parking:
$90/month optional
-->
<link
rel="preconnect" href="https://fonts.googleapis.com">
<link
rel="preconnect" href="https://fonts.gstatic.com"
crossorigin>
<link
href="https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700;800&family=Inter:wght@400;500;600;700;800&display=swap"
rel="stylesheet">
<style>
:root{
--lr-black:#111111;
--lr-charcoal:#242424;
--lr-red:#d71920;
--lr-red-dark:#aa1016;
--lr-red-soft:#ff4a4f;
--lr-red-mist:#fff0f1;
--lr-cream:#f7f3ec;
--lr-white:#ffffff;
--lr-text:#1f1f1f;
--lr-text-soft:#626262;
--lr-border:#e2ded7;
--lr-border-strong:#cac4ba;
--lr-shadow:0 24px 60px rgba(17,17,17,.12);
--lr-shadow-soft:0 12px 28px
rgba(17,17,17,.08);
--required-bg:#e7f4e7;
--required-text:#2e6d3b;
--conditional-bg:#fff0f1;
--conditional-text:#b31318;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:Inter,Arial,sans-serif;color:var(--lr-text);background:transparent}
.lr-shell{width:100%;max-width:1380px;margin:0
auto;padding:10px 12px 28px}
.lr-hero{position:relative;overflow:hidden;border-radius:36px;background:linear-gradient(135deg,rgba(215,25,32,.98),rgba(170,16,22,.96)
44%,rgba(17,17,17,.98));color:#fff;box-shadow:var(--lr-shadow);padding:52px
42px 40px;margin-bottom:24px}
.lr-hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle
at top right,rgba(255,255,255,.28),transparent
28%),linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,0) 44%)}
.lr-hero__inner{position:relative;z-index:1;max-width:980px}
.lr-kicker{display:inline-flex;padding:9px
15px;border-radius:999px;background:rgba(255,255,255,.14);border:1px solid
rgba(255,255,255,.22);font-size:11px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;margin-bottom:20px}
.lr-title{margin:0
0 14px;font-family:'Barlow
Condensed',Inter,Arial,sans-serif;font-size:clamp(44px,6.4vw,78px);line-height:.9;font-weight:800;letter-spacing:-.03em;text-transform:uppercase;color:#fff!important;text-shadow:0
3px 14px rgba(0,0,0,.32)}
.lr-subtitle{margin:0;max-width:860px;font-size:18px;line-height:1.75;color:rgba(255,255,255,.96)!important;font-weight:500}
.lr-layout{display:grid;grid-template-columns:1fr;gap:24px;align-items:start}
.lr-layout.has-summary{grid-template-columns:minmax(0,1fr)
minmax(320px,380px)}
.lr-main{display:grid;gap:24px;min-width:0}
.lr-panel{position:relative;overflow:hidden;background:linear-gradient(180deg,#fff,#fffaf6);border:1px
solid
var(--lr-border);border-radius:28px;box-shadow:var(--lr-shadow-soft);padding:28px}
.lr-panel:before{content:"";position:absolute;top:0;left:0;right:0;height:5px;background:linear-gradient(90deg,var(--lr-red-soft),var(--lr-red)
55%,var(--lr-black))}
.lr-section-title{margin:0
0 18px;color:var(--lr-black);font-family:'Barlow
Condensed',Inter,Arial,sans-serif;font-size:34px;line-height:.95;font-weight:800;letter-spacing:-.02em;text-transform:uppercase}
.lr-section-subtitle{margin:-4px
0 18px;color:var(--lr-text-soft);font-size:14px;line-height:1.7}
.lr-step-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.lr-field{margin-bottom:16px}
.lr-label-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.lr-label{font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.17em;color:#2c2c2c}
.lr-step-pill{display:inline-flex;align-items:center;justify-content:center;min-width:84px;padding:7px
10px;border-radius:999px;background:var(--lr-red-mist);color:var(--lr-red-dark);font-size:10px;font-weight:900;letter-spacing:.15em;text-transform:uppercase}
.lr-select-shell{position:relative}
.lr-select-shell
select{position:relative;z-index:2;width:100%;min-height:68px;padding:20px
18px;border:1px solid
transparent;border-radius:18px;background:transparent;color:transparent;opacity:.01;cursor:pointer;appearance:auto;-webkit-appearance:menulist}
.lr-select-display{position:absolute;inset:0;z-index:1;display:flex;align-items:center;padding:19px
58px 19px 18px;border:1px solid
var(--lr-border-strong);border-radius:18px;background:linear-gradient(180deg,#fff,#fff8f5);color:var(--lr-text);font-size:17px;font-weight:700;pointer-events:none}
.lr-select-display.is-placeholder{color:#7d7771;font-weight:600}
.lr-select-display:after{content:"⌄";position:absolute;right:18px;top:50%;transform:translateY(-55%);font-size:24px;color:var(--lr-red-dark);font-weight:900}
.lr-helper,.lr-status{color:var(--lr-text-soft);font-size:13px;line-height:1.75}
.lr-status{margin-top:16px;padding:16px
18px;border:1px solid
var(--lr-border);border-radius:18px;background:linear-gradient(180deg,#fff,#fff6f4);font-size:12px;font-weight:600}
.lr-floorplan-card{display:none;margin-top:22px;border:1px
solid
var(--lr-border);border-radius:30px;overflow:hidden;background:linear-gradient(180deg,#fff,#fff7f4);box-shadow:var(--lr-shadow-soft)}
.lr-floorplan-card__inner{display:grid;grid-template-columns:minmax(0,1fr)
360px;gap:24px;align-items:center;padding:24px}
.lr-floorplan-card__media{background:#fff;border:1px
solid var(--lr-border);border-radius:22px;padding:18px}
.lr-floorplan-image-btn{display:block;width:100%;padding:0;border:none;background:transparent;cursor:pointer}
.lr-floorplan-image-btn
img{display:block;width:100%;height:auto;border-radius:14px}
.lr-floorplan-badge{display:inline-flex;padding:10px
16px;border-radius:999px;background:var(--lr-red-mist);color:var(--lr-red-dark);font-size:11px;font-weight:900;letter-spacing:.17em;text-transform:uppercase;margin-bottom:14px}
.lr-floorplan-name{margin:0
0 10px;font-family:'Barlow
Condensed',Inter,Arial,sans-serif;font-size:38px;line-height:1.02;font-weight:800;letter-spacing:-.02em;text-transform:uppercase;color:var(--lr-black)}
.lr-floorplan-meta{margin:0
0
16px;font-size:16px;line-height:1.55;color:var(--lr-text-soft);font-weight:600}
.lr-price-amount{font-size:clamp(34px,3.2vw,54px);line-height:.92;font-weight:900;letter-spacing:-.05em;color:var(--lr-red-dark);white-space:nowrap}
.lr-price-label{font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.16em;color:#756d66}
.lr-empty{margin-top:18px;border:1px
dashed
var(--lr-border-strong);border-radius:26px;padding:30px;text-align:center;color:var(--lr-text-soft);font-size:15px;line-height:1.8;background:linear-gradient(180deg,#fff,#fffaf7)}
.lr-fee-groups{display:grid;gap:18px;margin-top:18px}
.lr-fee-group,.lr-accordion{border:1px
solid var(--lr-border);border-radius:24px;overflow:hidden;background:#fff}
.lr-fee-group__head,.lr-accordion
summary{padding:18px 20px 14px;border-bottom:1px solid
#eee7df;background:linear-gradient(180deg,#fff,#fff7f4)}
.lr-fee-group__title,.lr-accordion__title{margin:0
0 4px;font-family:'Barlow
Condensed',Inter,Arial,sans-serif;font-size:22px;line-height:1.1;font-weight:800;letter-spacing:-.01em;color:var(--lr-black);text-transform:uppercase}
.lr-fee-group__desc,.lr-accordion__desc{font-size:12px;line-height:1.7;color:var(--lr-text-soft)}
.lr-fee-list{list-style:none;margin:0;padding:0}
.lr-fee{display:grid;grid-template-columns:1.6fr
.8fr .7fr .7fr;gap:16px;align-items:start;padding:18px 20px;border-top:1px
solid #eee7df}
.lr-fee:first-child{border-top:none}
.lr-fee-title-top{display:flex;align-items:center;flex-wrap:wrap;gap:10px}
.lr-fee-title-top
span:first-child{font-size:17px;font-weight:900;color:var(--lr-black)}
.lr-fee-desc{font-size:12px;color:var(--lr-text-soft)}
.lr-fee-timing{font-size:13px;color:var(--lr-text-soft);font-weight:800}
.lr-fee-amount{font-size:16px;text-align:right;white-space:nowrap;color:var(--lr-black);font-weight:900}
.lr-fee-control{justify-self:end}
.lr-fee-group--compact
.lr-fee{grid-template-columns:1.6fr .7fr .6fr;padding:14px 20px}
.lr-fee-group--compact
.lr-fee-control{display:none}
.lr-accordion
summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px}
.lr-accordion
summary::-webkit-details-marker{display:none}
.lr-tag{display:inline-flex;padding:6px
11px;border-radius:999px;font-size:10px;font-weight:900;letter-spacing:.14em;text-transform:uppercase}
.lr-tag--required{background:var(--required-bg);color:var(--required-text)}
.lr-tag--conditional{background:var(--conditional-bg);color:var(--conditional-text)}
.lr-checkbox{width:20px;height:20px;accent-color:var(--lr-red-dark)}
.lr-radio-group{display:grid;gap:10px}
.lr-radio-line{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px
14px;border:1px solid var(--lr-border);border-radius:16px;background:#fff}
.lr-radio-line
label{display:flex;align-items:center;gap:10px;font-weight:800;color:var(--lr-text)}
.lr-radio-line
input{accent-color:var(--lr-red-dark)}
.lr-qty{display:inline-flex;align-items:center;gap:12px;border:1px
solid var(--lr-border-strong);border-radius:999px;padding:7px
10px;background:#fff}
.lr-qty
button{border:none;width:34px;height:34px;border-radius:50%;background:var(--lr-red);color:#fff;font-size:16px;font-weight:900;cursor:pointer}
.lr-qty
button:disabled{background:#d3ccc4}
.lr-qty
span{min-width:20px;text-align:center;font-weight:900}
.lr-summary{position:sticky;top:24px;min-width:0}
.lr-summary-top,.lr-summary-bottom{border:1px
solid
var(--lr-border);border-radius:28px;padding:26px;background:linear-gradient(180deg,#fff,#fff8f4);margin-bottom:18px;box-shadow:var(--lr-shadow-soft)}
.lr-summary-top__head{display:grid;grid-template-columns:1fr
auto;align-items:center;gap:12px;margin-bottom:18px}
.lr-summary-top__label{max-width:170px;font-family:'Barlow
Condensed',Inter,Arial,sans-serif;font-size:24px;line-height:.98;font-weight:800;text-transform:uppercase;color:var(--lr-black)}
.lr-summary-top__value{font-size:clamp(36px,2.6vw,46px);font-weight:900;color:var(--lr-red-dark);text-align:right;white-space:nowrap}
.lr-summary-grid{display:grid;gap:14px}
.lr-summary-grid
div,.lr-charge-list
li{display:flex;justify-content:space-between;gap:14px;font-size:15px;line-height:1.45;color:var(--lr-text-soft)}
.lr-summary-grid
div span:last-child,.lr-charge-list li
span:last-child{font-weight:900;color:var(--lr-black);white-space:nowrap}
.lr-summary-bottom__head{display:flex;justify-content:space-between;gap:16px;margin-bottom:16px;font-family:'Barlow
Condensed',Inter,Arial,sans-serif;font-size:28px;line-height:.98;font-weight:800;text-transform:uppercase;color:var(--lr-black)}
.lr-charge-list{list-style:none;margin:0;padding:0}
.lr-charge-list
li{padding:14px 0;border-top:1px solid #eee7df;color:var(--lr-text)}
.lr-charge-list
li:first-child{border-top:none;padding-top:0}
.lr-cta{display:block;width:100%;margin-top:20px;text-align:center;text-decoration:none;background:linear-gradient(180deg,var(--lr-red),var(--lr-red-dark));color:#fff!important;border-radius:18px;padding:20px
22px;font-size:15px;font-weight:900;text-transform:uppercase;letter-spacing:.18em}
.lr-note{margin-top:16px;font-size:12px;line-height:1.8;color:var(--lr-text-soft)}
.lr-lightbox{position:fixed;inset:0;z-index:9999;display:none}
.lr-lightbox.is-open{display:block}
.lr-lightbox__backdrop{position:absolute;inset:0;background:rgba(17,17,17,.76);backdrop-filter:blur(4px)}
.lr-lightbox__dialog{position:relative;z-index:2;width:min(92vw,1100px);max-height:88vh;margin:4vh
auto;padding:18px;border-radius:24px;background:#fff;box-shadow:0 28px 80px
rgba(0,0,0,.28)}
.lr-lightbox__dialog
img{display:block;width:100%;max-height:calc(88vh -
36px);object-fit:contain;border-radius:16px}
.lr-lightbox__close{position:absolute;top:10px;right:10px;width:42px;height:42px;border:none;border-radius:999px;background:rgba(17,17,17,.88);color:#fff;font-size:28px;cursor:pointer}
#lrSummarySection{display:none}
@media(max-width:1400px){.lr-layout.has-summary{grid-template-columns:1fr}.lr-summary{position:static}.lr-floorplan-card__inner{grid-template-columns:1fr}}
@media(max-width:900px){.lr-hero{padding:34px
22px 28px}.lr-title{font-size:42px}.lr-step-grid,.lr-fee,.lr-fee-group--compact
.lr-fee{grid-template-columns:1fr}.lr-fee-amount{text-align:left}.lr-fee-control{justify-self:start}.lr-summary-top__value{text-align:left}.lr-summary-top__head{grid-template-columns:1fr}}
</style>
<div
class="lr-shell">
<div class="lr-hero">
<div
class="lr-hero__inner">
<div
class="lr-kicker">LivRed | Student Living</div>
<h1
class="lr-title">LivGrand. LivBold. LivRed.</h1>
<p
class="lr-subtitle">Choose your lease term, select your applicant
type, and explore estimated pricing for the floor plan that fits your next home
near UNL.</p>
</div>
</div>
<div class="lr-layout">
<div class="lr-main">
<div class="lr-panel">
<div
class="lr-section-title">Step 1: Lease Setup</div>
<div
class="lr-section-subtitle">Start with your lease term and
applicant type to unlock your estimated pricing journey.</div>
<div
class="lr-step-grid">
<div
class="lr-field">
<div
class="lr-label-row"><label class="lr-label"
for="lrLeaseTerm">Lease Term</label><span
class="lr-step-pill">Step 1</span></div>
<div
class="lr-select-shell"><select
id="lrLeaseTerm"><option value="">Select your
lease term</option></select><div class="lr-select-display
is-placeholder" id="lrLeaseTermDisplay">Select your lease
term</div></div>
</div>
<div
class="lr-field">
<div
class="lr-label-row"><label class="lr-label"
for="lrApplicantType">Applicant Type</label><span
class="lr-step-pill">Step 2</span></div>
<div
class="lr-select-shell"><select id="lrApplicantType"
disabled><option value="">Select Applicant
Type</option><option value="Student">Student</option><option
value="Student with Guarantor">Student with
Guarantor</option><option value="Non-Student Self
Qualifying">Non-Student Self Qualifying</option><option
value="Non-Student with Guarantor">Non-Student with
Guarantor</option></select><div class="lr-select-display
is-placeholder" id="lrApplicantTypeDisplay">Choose lease term
first</div></div>
</div>
</div>
<p
class="lr-helper">Once your lease term and applicant type are
selected, you can choose a floor plan and review your estimated monthly
installment, included charges, and conditional costs.</p>
<div class="lr-status"
id="lrLiveStatus">Estimated pricing is based on the lease term,
applicant type, and floor plan selected below.</div>
</div>
<div class="lr-panel">
<div
class="lr-section-title">Step 2: Choose Your Floor
Plan</div>
<div
class="lr-section-subtitle">Select the layout you want to explore
and review the estimated base installment for that selection.</div>
<div class="lr-field"
style="margin-bottom:0">
<div
class="lr-label-row"><label class="lr-label"
for="lrFloorplan">Floor Plan</label><span
class="lr-step-pill">Step 3</span></div>
<div
class="lr-select-shell"><select id="lrFloorplan"
disabled><option value="">Select a floor
plan</option></select><div class="lr-select-display
is-placeholder" id="lrFloorplanDisplay">Complete steps 1 and
2 first</div></div>
</div>
<div id="lrFloorplanCard"
class="lr-floorplan-card">
<div
class="lr-floorplan-card__inner">
<div
class="lr-floorplan-card__media"><button
type="button" class="lr-floorplan-image-btn"
id="lrFloorplanImageBtn" aria-label="Open floor plan image"><img
id="lrFloorplanImage" src=""
alt=""></button></div>
<div><div
class="lr-floorplan-badge">Selected Floor Plan</div><h3
class="lr-floorplan-name"
id="lrFloorplanName"></h3><div class="lr-floorplan-meta"
id="lrFloorplanMeta"></div><div
class="lr-price-row"><div class="lr-price-amount"
id="lrFloorplanBase">$0.00</div><div
class="lr-price-label">Estimated Base
Installment</div></div></div>
</div>
</div>
<div id="lrNoSelection"
class="lr-empty">Complete each step in order to reveal your floor
plan details, installment estimate, and pricing options.</div>
</div>
<div id="lrFeesJourney"
class="lr-panel" style="display:none">
<div
class="lr-section-title">Step 3: Review Your Estimate</div>
<div
class="lr-section-subtitle">Your estimate includes standard
recurring charges by default. Conditional, pet-related, parking, and optional
add-on items can be added below when applicable.</div>
<div
class="lr-fee-groups">
<div class="lr-fee-group
lr-fee-group--compact">
<div
class="lr-fee-group__head"><h3
class="lr-fee-group__title">Included in Your
Estimate</h3><p class="lr-fee-group__desc">These
recurring charges are included in the estimated monthly
installment.</p></div>
<ul
class="lr-fee-list">
<li
class="lr-fee"><div class="lr-fee-title"><div
class="lr-fee-title-top"><span>Damage Waiver Program
Fee</span><span class="lr-tag lr-tag--required">Required</span></div></div><div
class="lr-fee-timing">Monthly</div><div
class="lr-fee-amount">$15.00</div></li>
<li
class="lr-fee"><div class="lr-fee-title"><div
class="lr-fee-title-top"><span>Contents Insurance Plan
Fee</span><span class="lr-tag
lr-tag--required">Required</span></div></div><div
class="lr-fee-timing">Monthly</div><div
class="lr-fee-amount">$6.50</div></li>
<li
class="lr-fee"><div class="lr-fee-title"><div
class="lr-fee-title-top"><span>Utility Billing Service
Administrative Fee</span><span class="lr-tag
lr-tag--required">Required</span></div></div><div
class="lr-fee-timing">Monthly</div><div
class="lr-fee-amount">$5.50</div></li>
<li
class="lr-fee"><div class="lr-fee-title"><div
class="lr-fee-title-top"><span>Rent Reporting
Fee</span><span class="lr-tag lr-tag--required">Required</span></div></div><div
class="lr-fee-timing">Monthly</div><div
class="lr-fee-amount">$8.95</div></li>
<li
class="lr-fee"><div class="lr-fee-title"><div
class="lr-fee-title-top"><span>Valet
Trash</span><span class="lr-tag lr-tag--required">Required</span></div></div><div
class="lr-fee-timing">Monthly</div><div
class="lr-fee-amount">$15.00</div></li>
</ul>
</div>
<details
class="lr-accordion" id="lrOptionalAccordion">
<summary><div><span
class="lr-accordion__title">Conditional
Add-Ons</span><br><span
class="lr-accordion__desc">Expand to review charges that only apply
in certain leasing
scenarios.</span></div><span>⌄</span></summary>
<ul
class="lr-fee-list"><li class="lr-fee"
id="lrGuarantorFeeRow" style="display:none"><div
class="lr-fee-title"><div class="lr-fee-title-top"><span>Student
Guarantor Waiver Program Fee</span><span id="lrGuarantorTag"
class="lr-tag
lr-tag--conditional">Conditional</span></div><small
class="lr-fee-desc">Used when a lease is approved without a
qualifying guarantor.</small></div><div
class="lr-fee-timing">Lease Approval</div><div
class="lr-fee-amount">$550.00</div><div
class="lr-fee-control"><input
id="lrGuarantorWaiverToggle" class="lr-checkbox"
type="checkbox"></div></li></ul>
</details>
<details
class="lr-accordion" id="lrParkingAccordion">
<summary><div><span
class="lr-accordion__title">Parking
Options</span><br><span
class="lr-accordion__desc">Select one monthly parking option if
applicable.</span></div><span>⌄</span></summary>
<div style="padding:18px
20px"><div class="lr-radio-group">
<div
class="lr-radio-line"><label><input
type="radio" name="lrParkingOption" value="none"
checked> No Parking</label><strong>$0.00/month</strong></div>
<div
class="lr-radio-line"><label><input
type="radio" name="lrParkingOption"
value="garage"> Garage
Parking</label><strong>$130.00/month</strong></div>
<div
class="lr-radio-line"><label><input
type="radio" name="lrParkingOption"
value="marcus"> Marcus Lot - 10th & L</label><strong>$90.00/month</strong></div>
</div></div>
</details>
<details
class="lr-accordion" id="lrPetAccordion">
<summary><div><span
class="lr-accordion__title">Pet
Options</span><br><span
class="lr-accordion__desc">Expand to preview how pet-related
charges affect your
estimate.</span></div><span>⌄</span></summary>
<ul
class="lr-fee-list">
<li
class="lr-fee"><div class="lr-fee-title"><div
class="lr-fee-title-top"><span>Pet Screening
Fee</span><span class="lr-tag lr-tag--conditional">Conditional</span></div></div><div
class="lr-fee-timing">Move-In</div><div
class="lr-fee-amount" id="lrPetScreeningAmount">$35.00 x
0</div><div class="lr-fee-control"><div
class="lr-qty"><button id="lrPetMinus1"
type="button">-</button><span
id="lrPetCount1">0</span><button
id="lrPetPlus1" type="button">+</button></div></div></li>
<li
class="lr-fee"><div class="lr-fee-title"><div
class="lr-fee-title-top"><span>Non-Refundable Pet
Fee</span><span class="lr-tag lr-tag--conditional">Conditional</span></div></div><div
class="lr-fee-timing">One Time</div><div
class="lr-fee-amount" id="lrPetFeeAmount">$300.00 x
0</div><div class="lr-fee-control"><div
class="lr-qty"><button id="lrPetMinus2"
type="button">-</button><span
id="lrPetCount2">0</span><button
id="lrPetPlus2" type="button">+</button></div></div></li>
<li
class="lr-fee"><div class="lr-fee-title"><div
class="lr-fee-title-top"><span>Monthly Pet
Rent</span><span class="lr-tag lr-tag--conditional">Conditional</span></div></div><div
class="lr-fee-timing">Monthly</div><div
class="lr-fee-amount" id="lrPetRentAmount">$30.00 x
0</div><div class="lr-fee-control"><div
class="lr-qty"><button id="lrPetMinus3"
type="button">-</button><span
id="lrPetCount3">0</span><button
id="lrPetPlus3" type="button">+</button></div></div></li>
</ul>
</details>
</div>
</div>
</div>
<div id="lrSummarySection"
class="lr-summary">
<div
class="lr-summary-top"><div
class="lr-summary-top__head"><div
class="lr-summary-top__label">Estimated Monthly
Installment</div><div class="lr-summary-top__value"
id="lrTotalMonthly">$0.00</div></div><div
class="lr-summary-grid"><div><span>Est. One Time
Cost:</span><span
id="lrOneTimeCost">$0.00</span></div><div><span>Est.
Application Cost:</span><span
id="lrApplicationCost">$0.00</span></div><div><span>Est.
Move-In Cost:</span><span
id="lrMoveInCost">$0.00</span></div></div></div>
<div
class="lr-summary-bottom"><div
class="lr-summary-bottom__head"><span>Estimated Monthly
Installment</span><span id="lrTotalMonthlyBottom">$0.00</span></div><ul
id="lrChargesList"
class="lr-charge-list"></ul><a class="lr-cta"
id="lrApplyNowLink"
href="/Apartments/module/application_authentication/"
target="_blank" rel="noopener">Apply Now</a><p
class="lr-note">This estimate includes standard recurring charges
by default. Optional conditional charges selected above are added live to help
preview possible pricing scenarios.</p></div>
</div>
</div>
</div>
<div
class="lr-lightbox" id="lrLightbox"
aria-hidden="true"><div class="lr-lightbox__backdrop"
id="lrLightboxBackdrop"></div><div
class="lr-lightbox__dialog"><button type="button"
class="lr-lightbox__close"
id="lrLightboxClose">×</button><img
id="lrLightboxImage" src=""
alt=""></div></div>
<script>
(function(){
const MAX_PETS = 2;
const LIVE_CONFIG = {
propertyId: "100003423",
studentFloorplansUrl:
"/lincoln/livred/student/",
requestTimeoutMs: 12000
};
let LEASE_TERMS = [
{ id: "13525", leaseTermId:
"377", label: "Academic Year (08/15/2025 - 07/24/2026)" },
{ id: "19371", leaseTermId:
"6018", label: "Annual Term (08/13/2026 - 07/23/2027)" }
];
const FALLBACK_LEASE_TERMS =
LEASE_TERMS.slice();
const estimateFees = {
damageWaiverFee:15,
contentsInsuranceFee:6.50,
utilityAdminFee:5.50,
rentReportingFee:8.95,
valetTrashFee:15,
guarantorWaiverFee:550,
petScreeningFee:35,
nonRefundablePetFee:300,
monthlyPetRent:30,
garageParkingFee:130,
marcusLotParkingFee:90
};
const state = {
petCount:0,
liveFloorplans:{},
isLoadingFloorplans:false,
isLoadingLeaseTerms:false,
loadedLeaseTerm:"",
requestId:0
};
const fallbackFloorplansByLeaseTerm = {
"13525": {
"434-2": {
key:"434-2", id:"434", spaceOptionId:"2",
optionName:"Private", name:"A - 1x1", displayName:"A -
1x1", beds:1, baths:1, sqft:"500 sq. ft.",
image:"https://medialibrarycfo.entrata.com/fit-in/640x480/100016/MLv3/4/23/2024/04/17/091630/661fe7ce1bd009.84004265312.jpg",
privatePrice:1350, available:true },
"3163-2": {
key:"3163-2", id:"3163", spaceOptionId:"2",
optionName:"Private", name:"B1 - 2x2", displayName:"B1
- 2x2", beds:2, baths:2, sqft:"778 sq. ft.",
image:"https://medialibrarycfo.entrata.com/fit-in/640x480/100016/MLv3/4/23/2024/11/18/014526/673ba76619d997.56372251433.jpg",
privatePrice:925, available:true },
"3164-2": {
key:"3164-2", id:"3164", spaceOptionId:"2",
optionName:"Private", name:"B2 - 2x2", displayName:"B2
- 2x2", beds:2, baths:2, sqft:"778 sq. ft.",
image:"https://medialibrarycfo.entrata.com/fit-in/640x480/100016/MLv3/4/23/2025/03/31/125346/67eae4b9ef0a72.18238312250.jpg",
privatePrice:875, available:true },
"437-2": {
key:"437-2", id:"437", spaceOptionId:"2",
optionName:"Private", name:"C1 - 3x3", displayName:"C1
- 3x3", beds:3, baths:3, sqft:"1,065 sq. ft.",
image:"https://medialibrarycfo.entrata.com/fit-in/640x480/100016/MLv3/4/23/2024/04/17/091753/661fe821afdb50.17375568736.jpg",
privatePrice:825, available:true },
"439-2": {
key:"439-2", id:"439", spaceOptionId:"2",
optionName:"Private", name:"C2 - 3x3", displayName:"C2
- 3x3", beds:3, baths:3, sqft:"1,098 sq. ft.",
image:"https://medialibrarycfo.entrata.com/fit-in/640x480/100016/MLv3/4/23/2024/04/17/091848/661fe858d2d5a1.45288992694.jpg",
privatePrice:825, available:true },
"435-2": {
key:"435-2", id:"435", spaceOptionId:"2",
optionName:"Private", name:"D1 - 4x4", displayName:"D1
- 4x4", beds:4, baths:4, sqft:"1,284 sq. ft.",
image:"https://medialibrarycfo.entrata.com/fit-in/640x480/100016/MLv3/4/23/2024/04/17/091920/661fe87871e2a2.45755969472.jpg",
privatePrice:700, available:true },
"438-2": {
key:"438-2", id:"438", spaceOptionId:"2",
optionName:"Private", name:"D2 - 4x4", displayName:"D2
- 4x4", beds:4, baths:4, sqft:"1,256 sq. ft.",
image:"https://medialibrarycfo.entrata.com/fit-in/640x480/100016/MLv3/4/23/2024/04/17/092023/661fe8b7ae5d37.16243810171.jpg",
privatePrice:685, available:true },
"440-2": {
key:"440-2", id:"440", spaceOptionId:"2",
optionName:"Private", name:"D3 - 4x4 ADA",
displayName:"D3 - 4x4 ADA", beds:4, baths:4, sqft:"1,416 sq.
ft.",
image:"https://medialibrarycfo.entrata.com/fit-in/640x480/100016/MLv3/4/23/2024/04/17/092059/661fe8db1be589.45053886824.jpg",
privatePrice:700, available:true }
},
"19371": {
"434-2": {
key:"434-2", id:"434", spaceOptionId:"2",
optionName:"Private", name:"A - 1x1", displayName:"A -
1x1", beds:1, baths:1, sqft:"500 sq. ft.",
image:"https://medialibrarycfo.entrata.com/fit-in/640x480/100016/MLv3/4/23/2024/04/17/091630/661fe7ce1bd009.84004265312.jpg",
privatePrice:1450, available:true },
"3163-2": {
key:"3163-2", id:"3163", spaceOptionId:"2",
optionName:"Private", name:"B1 - 2x2", displayName:"B1
- 2x2", beds:2, baths:2, sqft:"778 sq. ft.",
image:"https://medialibrarycfo.entrata.com/fit-in/640x480/100016/MLv3/4/23/2024/11/18/014526/673ba76619d997.56372251433.jpg",
privatePrice:930, available:true },
"3164-2": {
key:"3164-2", id:"3164", spaceOptionId:"2",
optionName:"Private", name:"B2 - 2x2", displayName:"B2
- 2x2", beds:2, baths:2, sqft:"778 sq. ft.",
image:"https://medialibrarycfo.entrata.com/fit-in/640x480/100016/MLv3/4/23/2025/03/31/125346/67eae4b9ef0a72.18238312250.jpg",
privatePrice:895, available:true },
"437-2": {
key:"437-2", id:"437", spaceOptionId:"2",
optionName:"Private", name:"C1 - 3x3", displayName:"C1
- 3x3", beds:3, baths:3, sqft:"1,065 sq. ft.",
image:"https://medialibrarycfo.entrata.com/fit-in/640x480/100016/MLv3/4/23/2024/04/17/091753/661fe821afdb50.17375568736.jpg",
privatePrice:825, available:true },
"439-2": {
key:"439-2", id:"439", spaceOptionId:"2",
optionName:"Private", name:"C2 - 3x3", displayName:"C2
- 3x3", beds:3, baths:3, sqft:"1,098 sq. ft.",
image:"https://medialibrarycfo.entrata.com/fit-in/640x480/100016/MLv3/4/23/2024/04/17/091848/661fe858d2d5a1.45288992694.jpg",
privatePrice:825, available:true },
"435-2": {
key:"435-2", id:"435", spaceOptionId:"2",
optionName:"Private", name:"D1 - 4x4", displayName:"D1
- 4x4", beds:4, baths:4, sqft:"1,284 sq. ft.",
image:"https://medialibrarycfo.entrata.com/fit-in/640x480/100016/MLv3/4/23/2024/04/17/091920/661fe87871e2a2.45755969472.jpg",
privatePrice:775, available:true }
}
};
function money(v){ return "$" +
Number(v || 0).toFixed(2); }
function normalizeText(v){ return String(v ||
"").replace(/\s+/g," ").trim(); }
function parseMoney(v){ const cleaned =
String(v || "").replace(/[^0-9.]/g,""); return cleaned ?
Number(cleaned) : 0; }
function keyFor(id, spaceId, name){ return id
&& spaceId ? id + "-" + spaceId :
normalizeText(name).toUpperCase().replace(/[^A-Z0-9]/g,"_"); }
function selectedLeaseTerm(){ return
document.getElementById("lrLeaseTerm").value || "19371"; }
function store(){ return
Object.keys(state.liveFloorplans).length ? state.liveFloorplans :
(fallbackFloorplansByLeaseTerm[selectedLeaseTerm()] ||
fallbackFloorplansByLeaseTerm["19371"] || {}); }
function setStatus(msg){ const el =
document.getElementById("lrLiveStatus"); if(el) el.textContent = msg;
}
function showLeaseTermsLoading(){
const s =
document.getElementById("lrLeaseTerm");
state.isLoadingLeaseTerms = true;
s.disabled = true;
s.value = "";
s.innerHTML = '<option
value="">Loading live lease terms...</option>';
setStatus("Loading live lease terms
from ProspectPortal...");
syncDisplays();
}
function populateLeaseTerms(terms){
if(Array.isArray(terms) &&
terms.length) LEASE_TERMS = terms;
const s =
document.getElementById("lrLeaseTerm");
const current = s.value;
state.isLoadingLeaseTerms = false;
s.disabled = false;
s.innerHTML = '<option
value="">Select your lease term</option>';
LEASE_TERMS.forEach(t => {
const o =
document.createElement("option");
o.value = t.id;
o.textContent = t.label;
if(t.leaseTermId) o.dataset.leaseTermId =
t.leaseTermId;
s.appendChild(o);
});
if(LEASE_TERMS.some(t => t.id ===
current)) s.value = current;
updateStepAvailability();
syncDisplays();
}
function parseLeaseTermsFromHtml(html){
const doc = new
DOMParser().parseFromString(html, "text/html");
const select =
doc.querySelector("select#lease_start_window_id,
select[name='lease_start_window_id']");
if(!select) return [];
return
Array.from(select.querySelectorAll("option"))
.map(option => ({
id: option.value,
label:
normalizeText(option.textContent),
leaseTermId:
option.getAttribute("data-value") || ""
}))
.filter(term => term.id &&
term.label);
}
function
loadLiveLeaseTermsFromProspectPortal(){
showLeaseTermsLoading();
fetch(LIVE_CONFIG.studentFloorplansUrl, {
method:"GET",
credentials:"same-origin",
headers:{
"accept":"text/html, */*;q=0.9" }
})
.then(r => { if(!r.ok) throw new
Error("Lease term page failed: " + r.status); return r.text(); })
.then(html => {
const terms =
parseLeaseTermsFromHtml(html);
if(!terms.length) throw new
Error("No lease terms found on live student floorplans page.");
populateLeaseTerms(terms);
setStatus("Live lease terms
loaded. Select a lease term to load floor plan pricing.");
})
.catch(err => {
if(window.console &&
console.warn) console.warn("LivRed lease term fallback:", err);
populateLeaseTerms(FALLBACK_LEASE_TERMS);
setStatus("Lease terms loaded from
saved configuration.");
});
}
function
buildStudentPageUrl(leaseStartWindowId){
const params = new URLSearchParams();
params.set("lease_start_window_id", leaseStartWindowId);
return LIVE_CONFIG.studentFloorplansUrl +
"?" + params.toString();
}
function parseFloorplansFromHtml(html,
leaseStartWindowId){
const doc = new
DOMParser().parseFromString(html,"text/html");
const cards =
Array.from(doc.querySelectorAll(".fp-card"));
const out = {};
cards.forEach(card => {
const rawName =
normalizeText((card.querySelector(".fp-title") || {}).textContent ||
"");
const name =
rawName.replace(/Sold-Out/gi,"").replace(/Sold
Out/gi,"").trim();
if(!name) return;
const link =
card.querySelector(".fp-details-button[data-floorplan-id]");
const id = link ?
link.getAttribute("data-floorplan-id") : "";
const meta =
normalizeText((card.querySelector(".bed-bath em") || {}).textContent
|| "");
const bedMatch =
meta.match(/([\d.]+)\s*Bed/i);
const bathMatch =
meta.match(/([\d.]+)\s*Bath/i);
const sqftMatch =
meta.match(/(?:\u2014|-)?\s*([\d,]+)\s*sq\.\s*ft/i);
const imgLink =
card.querySelector(".fp-img a[data-url]");
const image = imgLink ?
imgLink.getAttribute("data-url") : ((card.querySelector(".fp-img
img") || {}).src || "");
Array.from(card.querySelectorAll(".option-row[data-space-id]")).forEach(row
=> {
const optionName =
normalizeText((row.querySelector(".student-sold-out-wrapper p") ||
{}).textContent || "Private") || "Private";
const price =
parseMoney((row.querySelector(".fee-transparency-text") ||
{}).textContent || "");
if(!price) return;
const spaceId =
row.getAttribute("data-space-id") || "";
const k = keyFor(id, spaceId, name);
const displayName =
/private/i.test(optionName) ? name : name + " - " + optionName;
out[k] = {
key:k,
id:id,
spaceOptionId:spaceId,
optionName:optionName,
name:name,
displayName:displayName,
beds:bedMatch?Number(bedMatch[1]):"",
baths:bathMatch?Number(bathMatch[1]):"",
sqft:sqftMatch?sqftMatch[1]+"
sq. ft.":"",
image:image,
privatePrice:price,
available:true,
leaseStartWindowId:leaseStartWindowId
};
});
});
return out;
}
function
fetchLiveFloorplans(leaseStartWindowId){
const requestId = ++state.requestId;
const controller = new AbortController();
const timeoutId = setTimeout(() =>
controller.abort(), LIVE_CONFIG.requestTimeoutMs);
state.isLoadingFloorplans = true;
state.loadedLeaseTerm = "";
setStatus("Loading floor plan pricing
from ProspectPortal...");
syncDisplays();
return
fetch(buildStudentPageUrl(leaseStartWindowId), {
method:"GET",
credentials:"same-origin",
headers:{
"accept":"text/html, */*;q=0.9" },
signal:controller.signal
})
.then(r => { if(!r.ok) throw new
Error("Pricing page request failed: " + r.status); return r.text();
})
.then(html => {
if(requestId !== state.requestId)
return;
const parsed =
parseFloorplansFromHtml(html, leaseStartWindowId);
if(!Object.keys(parsed).length) throw
new Error("No floor plans found in live page response.");
state.liveFloorplans = parsed;
state.loadedLeaseTerm =
leaseStartWindowId;
setStatus("Pricing loaded from
ProspectPortal for the selected lease term.");
})
.catch(err => {
if(requestId !== state.requestId)
return;
state.liveFloorplans = {};
state.loadedLeaseTerm = "";
setStatus("Pricing loaded for the
selected lease term.");
if(window.console &&
console.warn) console.warn("LivRed pricing fallback:", err);
})
.finally(() => {
if(requestId !== state.requestId)
return;
clearTimeout(timeoutId);
state.isLoadingFloorplans = false;
populateFloorplanOptions();
updateCalculator(true);
});
}
function populateFloorplanOptions(){
const s =
document.getElementById("lrFloorplan"), current = s.value, data =
store();
const keys = Object.keys(data).sort((a,b)
=> data[a].displayName.localeCompare(data[b].displayName, undefined,
{numeric:true}));
s.innerHTML = '<option
value="">Select a floor plan</option>';
keys.forEach(k => {
const fp = data[k];
const o =
document.createElement("option");
o.value = k;
o.textContent = fp.available === false ?
fp.displayName + " (Sold-Out)" : fp.displayName;
s.appendChild(o);
});
if(keys.includes(current)) s.value =
current;
}
function selectedFloorplan(){ return
store()[document.getElementById("lrFloorplan").value] || null; }
function baseRent(){ const fp =
selectedFloorplan(); return fp ? Number(fp.privatePrice || 0) : 0; }
function updateDisplay(selectId, displayId,
placeholder){
const s=document.getElementById(selectId),
d=document.getElementById(displayId);
if(!s||!d)return;
if(s.disabled){d.textContent=placeholder;d.classList.add("is-placeholder");return;}
const o=s.options[s.selectedIndex];
if(s.value&&o){d.textContent=o.text;d.classList.remove("is-placeholder");}
else{d.textContent=placeholder;d.classList.add("is-placeholder");}
}
function syncDisplays(){
updateDisplay("lrLeaseTerm","lrLeaseTermDisplay",state.isLoadingLeaseTerms?"Loading
live lease terms...":"Select your lease term");
updateDisplay("lrApplicantType","lrApplicantTypeDisplay",document.getElementById("lrApplicantType").disabled?"Choose
lease term first":"Select Applicant Type");
updateDisplay("lrFloorplan","lrFloorplanDisplay",state.isLoadingFloorplans?"Loading
pricing...":"Complete steps 1 and 2 first");
}
function updateStepAvailability(){
const
lt=document.getElementById("lrLeaseTerm"),
at=document.getElementById("lrApplicantType"),
fp=document.getElementById("lrFloorplan");
at.disabled=!lt.value;
if(!lt.value){at.value="";fp.value="";fp.disabled=true;state.liveFloorplans={};state.loadedLeaseTerm="";}
fp.disabled=!(lt.value&&at.value)||state.isLoadingFloorplans;
if(!(lt.value&&at.value))fp.value="";
}
function handleApplicantTypeLogic(){
const
at=document.getElementById("lrApplicantType").value,
toggle=document.getElementById("lrGuarantorWaiverToggle"),
row=document.getElementById("lrGuarantorFeeRow"), tag=document.getElementById("lrGuarantorTag"),
acc=document.getElementById("lrOptionalAccordion");
toggle.checked=false;
toggle.disabled=false;
if(!at){row.style.display="none";acc.open=false;return;}
if(at==="Student"){
row.style.display="grid";
toggle.checked=true;
toggle.disabled=true;
tag.textContent="Required";
tag.classList.remove("lr-tag--conditional");
tag.classList.add("lr-tag--required");
acc.open=true;
return;
}
if(at==="Student with
Guarantor"){
row.style.display="grid";
tag.textContent="Conditional";
tag.classList.remove("lr-tag--required");
tag.classList.add("lr-tag--conditional");
return;
}
row.style.display="none";
}
function updatePetUI(){
["1","2","3"].forEach(n=>document.getElementById("lrPetCount"+n).textContent=state.petCount);
document.getElementById("lrPetScreeningAmount").textContent=money(estimateFees.petScreeningFee)+"
x "+state.petCount;
document.getElementById("lrPetFeeAmount").textContent=money(estimateFees.nonRefundablePetFee)+"
x "+state.petCount;
document.getElementById("lrPetRentAmount").textContent=money(estimateFees.monthlyPetRent)+"
x "+state.petCount;
["lrPetMinus1","lrPetMinus2","lrPetMinus3"].forEach(id=>document.getElementById(id).disabled=state.petCount===0);
["lrPetPlus1","lrPetPlus2","lrPetPlus3"].forEach(id=>document.getElementById(id).disabled=state.petCount===MAX_PETS);
}
function changePets(delta){
state.petCount=Math.max(0,Math.min(MAX_PETS,state.petCount+delta));
updatePetUI(); updateCalculator(true); }
function selectedParking(){
const checked =
document.querySelector("input[name='lrParkingOption']:checked");
return checked ? checked.value :
"none";
}
function parkingCharge(){
const selected = selectedParking();
if(selected === "garage") return
{ label:"Garage Parking", amount:estimateFees.garageParkingFee };
if(selected === "marcus") return
{ label:"Marcus Lot - 10th & L Parking",
amount:estimateFees.marcusLotParkingFee };
return null;
}
function updateFloorplanCard(){
const fp=selectedFloorplan(),
layout=document.querySelector(".lr-layout"),
card=document.getElementById("lrFloorplanCard"),
empty=document.getElementById("lrNoSelection"), summary=document.getElementById("lrSummarySection"),
fees=document.getElementById("lrFeesJourney");
if(!document.getElementById("lrLeaseTerm").value ||
!document.getElementById("lrApplicantType").value ||
!fp){card.style.display="none";empty.style.display="block";summary.style.display="none";fees.style.display="none";layout.classList.remove("has-summary");return;}
document.getElementById("lrFloorplanImage").src=fp.image||"";
document.getElementById("lrFloorplanImage").alt=fp.displayName||fp.name||"";
document.getElementById("lrFloorplanName").textContent=fp.displayName||fp.name||"";
document.getElementById("lrFloorplanMeta").textContent=(fp.beds||"")+"
Bed / "+(fp.baths||"")+" Bath -
"+(fp.sqft||"");
document.getElementById("lrFloorplanBase").textContent=money(baseRent());
card.style.display="block";
empty.style.display="none";
summary.style.display="block";
fees.style.display="block";
layout.classList.add("has-summary");
}
function renderCharges(){
const fp=selectedFloorplan(),
list=document.getElementById("lrChargesList"),
at=document.getElementById("lrApplicantType").value, rent=baseRent();
list.innerHTML="";
if(!document.getElementById("lrLeaseTerm").value || !at || !fp
||
!rent){["lrTotalMonthly","lrTotalMonthlyBottom","lrApplicationCost","lrOneTimeCost","lrMoveInCost"].forEach(id=>document.getElementById(id).textContent=money(0));
return;}
const charges=[
{label:"Estimated Base
Installment",amount:rent},
{label:"Damage Waiver Program
Fee",amount:estimateFees.damageWaiverFee},
{label:"Contents Insurance Plan
Fee",amount:estimateFees.contentsInsuranceFee},
{label:"Utility Billing Service
Administrative Fee",amount:estimateFees.utilityAdminFee},
{label:"Rent Reporting
Fee",amount:estimateFees.rentReportingFee},
{label:"Valet
Trash",amount:estimateFees.valetTrashFee}
];
const parking = parkingCharge();
if(parking) charges.push(parking);
if(state.petCount>0)
charges.push({label:"Monthly Pet Rent x
"+state.petCount,amount:estimateFees.monthlyPetRent*state.petCount});
charges.forEach(i=>{const
li=document.createElement("li");li.innerHTML="<span>"+i.label+"</span><span>"+money(i.amount)+"</span>";list.appendChild(li);});
const
monthly=charges.reduce((s,i)=>s+i.amount,0);
const
app=(at==="Student"||(at==="Student with
Guarantor"&&document.getElementById("lrGuarantorWaiverToggle").checked))?estimateFees.guarantorWaiverFee:0;
document.getElementById("lrTotalMonthly").textContent=money(monthly);
document.getElementById("lrTotalMonthlyBottom").textContent=money(monthly);
document.getElementById("lrApplicationCost").textContent=money(app);
document.getElementById("lrOneTimeCost").textContent=money(state.petCount>0?estimateFees.nonRefundablePetFee*state.petCount:0);
document.getElementById("lrMoveInCost").textContent=money(state.petCount>0?estimateFees.petScreeningFee*state.petCount:0);
}
function openLightbox(){ const
img=document.getElementById("lrFloorplanImage"),
lb=document.getElementById("lrLightbox"),
lbi=document.getElementById("lrLightboxImage"); if(!img||!img.src)return;
lbi.src=img.src;lbi.alt=img.alt||"";lb.classList.add("is-open");lb.setAttribute("aria-hidden","false");
}
function closeLightbox(){ const
lb=document.getElementById("lrLightbox"),
lbi=document.getElementById("lrLightboxImage");
lb.classList.remove("is-open");lb.setAttribute("aria-hidden","true");lbi.src="";
}
function updateCalculator(skipLiveFetch){
const
leaseTerm=document.getElementById("lrLeaseTerm").value;
updateStepAvailability();
handleApplicantTypeLogic();
if(!skipLiveFetch && leaseTerm
&& state.loadedLeaseTerm!==leaseTerm &&
!state.isLoadingFloorplans) fetchLiveFloorplans(leaseTerm);
updateFloorplanCard();
renderCharges();
syncDisplays();
}
document.addEventListener("DOMContentLoaded", function(){
showLeaseTermsLoading();
populateFloorplanOptions();
loadLiveLeaseTermsFromProspectPortal();
document.getElementById("lrLeaseTerm").addEventListener("change",
function(){
document.getElementById("lrFloorplan").value="";
state.liveFloorplans={}; state.loadedLeaseTerm="";
populateFloorplanOptions(); updateCalculator(false); });
document.getElementById("lrApplicantType").addEventListener("change",
function(){ updateCalculator(false); });
document.getElementById("lrFloorplan").addEventListener("change",
function(){ updateCalculator(true); });
document.getElementById("lrGuarantorWaiverToggle").addEventListener("change",
() => updateCalculator(true));
Array.from(document.querySelectorAll("input[name='lrParkingOption']")).forEach(input
=> input.addEventListener("change", () =>
updateCalculator(true)));
["1","2","3"].forEach(n => {
document.getElementById("lrPetMinus"+n).addEventListener("click",
() => changePets(-1)); document.getElementById("lrPetPlus"+n).addEventListener("click",
() => changePets(1)); });
document.getElementById("lrFloorplanImageBtn").addEventListener("click",
openLightbox);
document.getElementById("lrLightboxClose").addEventListener("click",
closeLightbox);
document.getElementById("lrLightboxBackdrop").addEventListener("click",
closeLightbox);
document.addEventListener("keydown", e => {
if(e.key==="Escape") closeLightbox(); });
updatePetUI();
updateCalculator(true);
});
})();
</script>
Find Your Space. Estimate Your Installment.
Choose your lease term, select your applicant type, and explore estimated pricing for the floor plan that feels like the right fit for your next home near UNL.
Step 1: Lease Setup
Start with your lease term and applicant type to unlock your estimated pricing journey.
Step 2: Choose Your Floor Plan
Select the layout you want to explore and review the estimated base installment for that floor plan.
Step 3: Review Your Estimate
Your estimate includes standard recurring charges by default. Conditional and optional items can be added below when applicable.
Included in Your Estimate
These recurring monthly charges are already included in the estimated monthly installment.