window.TUS_CONFIG={"preview": false, "formId": 33, "fields": {"first": "3.3", "last": "3.6", "email": "6", "phone": "7", "smsConsent": "8.1", "smsLabel": "8.2", "emailConsent": "9.1", "emailLabel": "9.2", "company": "10", "cstate": "11", "ae": "12", "aeEmail": "13", "summary": "14", "leadSource": "16", "utm_source": "17", "utm_medium": "18", "utm_campaign": "19", "utm_term": "20", "utm_content": "21", "gclid": "22", "ref": "23", "reqType": "24", "product": "25", "program": "26", "addr": "27", "city": "28", "state": "29", "zip": "30", "close": "31", "loan": "32", "gbraid": "33", "fbclid": "34", "wbraid": "35", "maxPurchase": "36", "letterId": "37", "letterLink": "38"}, "shardBase": "https://www.ternus.com/wp-content/uploads/2026/10/"};
window.TUS_ROSTER={"aes": [{"slug": "damien-king", "name": "Damien King", "title": "Account Executive", "phone": "704-981-2216", "email": "dking@ternus.com"}, {"slug": "maureese-jones", "name": "Maureese Jones", "title": "Managing Director, Debt Origination", "phone": "215-315-3563", "email": "mjones@ternus.com"}, {"slug": "cody-sento", "name": "Cody Sento", "title": "VP of Sales", "phone": "704-209-9038", "email": "csento@ternus.com"}, {"slug": "cameron-threadgill", "name": "Cameron Threadgill", "title": "VP of Sales", "phone": "704-209-9036", "email": "cthreadgill@ternus.com"}, {"slug": "michael-luedtke", "name": "Michael Luedtke", "title": "AVP, Sales Leader", "phone": "704-561-6307", "email": "mpatrick@ternus.com"}, {"slug": "divah-mosley", "name": "Divah Mosley", "title": "Account Executive", "phone": "213-557-7900", "email": "dmosley@ternus.com"}, {"slug": "tyler-simpson", "name": "Tyler Simpson", "title": "Account Executive", "phone": "213-557-6200", "email": "tsimpson@ternus.com"}], "nextAvailable": {"slug": "next-available", "name": "Next available Account Executive", "title": "Ternus Lending Team", "phone": "972.755.1880", "email": "info@ternus.com"}};
window.TUS_LOGO="data:image/png;base64,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";
window.TUS_TABLES={"flip":{"product":"Ternus Flip Loan Sizer (QuickTern + Bridge + Elite)","version":"flip-v2.0","source":"Ternus Underwriting Guidelines v2.0 (effective 2026-10-19) for QuickTern and Bridge; Elite block copied unchanged from flip-v7","liveTablesSha256":"0550f5bae6e59c0f0728cb0ee2af12c8b0a117650f5919bf7ad84f016045b3a8","asOf":"2026-10-19","extracted":"2026-10-19","countyData":{"format":"[mhv, qtBlocked, state, countyMedianListing, countyPop, countyFips]","medianSource":"Realtor.com RDC_Inventory_Core_Metrics_County median_listing_price","medianVintage":"202609","popSource":"Census co-est2024-alldata POPESTIMATE2024","popVintage":"2024","zipCountySource":"Census 2020 ZCTA5-county relationship, largest land area part","zctaVintage":"2020"},"disclaimer":"Estimates for discussion purposes only. Subject to verification, underwriting, appraisal and final approval.","shared":{"ineligibleStates":["AK","AZ","CA","DC","HI","MN","ND","NV","OR","SD","UT","VT"],"holdMaxMonths":12},"quicktern":{"pricing":{"0-3":[0.129,0.03],"4-9":[0.119,0.02],"10+":[0.109,0.015]},"bands":[[700,0.9],[660,0.85],[620,0.8]],"renovationPct":1.0,"arvPct":0.7,"asIsPct":0.9,"ficoFloor":620,"heavyFicoFloor":660,"minLoan":50000,"maxLoan":500000,"maxRehab":400000,"minScope":10000,"sec35":{"threshold":500000,"band":0.85,"minFico":660,"maxLoan":1000000},"medianCuts":[[3.0,0.15],[2.0,0.1],[1.5,0.05]],"medianSource":"Realtor.com county median listing price (Tim 2026-10-19)","assignmentFeeCapPct":0.2,"sellerCreditCapPct":0.03,"returnMin":0.1,"saleCostPct":0.06,"closingFloorPct":0.01,"interestMonths":6,"defaultTax6moPctOfAsIs":0.006,"adjust":{"smallLoan":100000,"smallRateAdd":0.01,"bigLoan":500000,"bigRateCut":0.01,"bigPtsCut":0.01,"rateFloor":0.1,"ptsFloor":0.01},"fees":{"procRetail":1995,"procTpo":1495,"procSmallOrBridge":2495,"shareholderFactor":0.8,"docPrep":799,"wire":50,"application":495,"perPersonPastTwo":99,"perEntityPastOne":495,"drawFee":250},"renovationReservePct":0.1,"contingency":{"standard":[0.05,0.1],"heavy":[0.1,0.15]},"brokerCapPts":0.02,"countyPopMin":100000,"sqftMinSfrTownhome":800,"sqftMinPerUnit24":500,"maxUnits":4,"blockedCityState":["PHILADELPHIA|PA","BALTIMORE|MD"],"blockedCountyText":"BALTIMORE","blockedCountyFips":["24005","24510","42101"]},"bridge":{"rateAdd":0.01,"ptsAdd":0.01},"elite":{"matrix":{"Light|0":[1,0.85,0.7,0.9,1],"Light|1-4":[1,0.9,0.75,0.95,1],"Light|5+":[1,0.95,0.75,1,1],"Light|10+":[1,1,0.75,1,1],"Moderate|0":[1,0.85,0.7,0.9,1],"Moderate|1-4":[1,0.9,0.725,0.925,1],"Moderate|5+":[1,0.925,0.75,0.95,1],"Moderate|10+":[1,1,0.75,1,1],"Heavy|0":[0.7,0.7,0.6,0.8,1],"Heavy|1-4":[0.8,0.8,0.65,0.875,1],"Heavy|5+":[0.85,0.85,0.7,0.9,1],"Heavy|10+":[0.85,0.85,0.7,0.9,1]},"baseRateGrid":{"0":0.1099,"1-4":0.1049,"5+":0.0999,"10+":0.0999},"basePoints":0.005,"ficoAdj":{"650-679":[0.005,-0.1],"680-699":[0.0025,-0.05],"700+":[0,0],"FN":[0,-0.05]},"minFico":650,"loanSizeAdj":[[0,0.0035],[100000,0.0025],[150000,0],[250000,-0.001],[325000,-0.0015],[500000,-0.002],[625000,-0.0025],[750000,-0.003]],"heavyRateAdder":0.0025,"mhvRatioThreshold":2,"mhvLtvCut":-0.1,"targetMarketCut":{"5+":0.05,"other":0.1},"targetMarketMinArv":175000,"program100":{"minFico":720,"maxValue":1066666.6666666667,"maxCost":800000,"citizenship":["US Citizen","Perm Resident"]},"minValue":100000,"fnMinValue":100000,"minLoan":75000,"maxLoan":2000000,"sqftMinSfrTownhome":675,"sqftMinPerUnit24":480,"sqftMinCondo":480,"paymentMonthsLiquidity":6,"rehabReservePct":0.1,"revenue":{"rateMarkupMin":0.005,"origMarkupMin":0.01,"ternusFee":500,"floorPct":0.03,"yspCredit":0.4,"gapToPoints":0.5}},"marketAreas":{"21215":"Baltimore, MD (+ Surrounding)","21218":"Baltimore, MD (+ Surrounding)","21224":"Baltimore, MD (+ Surrounding)","21206":"Baltimore, MD (+ Surrounding)","21230":"Baltimore, MD (+ Surrounding)","21229":"Baltimore, MD (+ Surrounding)","21217":"Baltimore, MD (+ Surrounding)","21213":"Baltimore, MD (+ Surrounding)","21216":"Baltimore, MD (+ Surrounding)","21202":"Baltimore, MD (+ Surrounding)","21239":"Baltimore, MD (+ Surrounding)","21212":"Baltimore, MD (+ Surrounding)","21223":"Baltimore, MD (+ Surrounding)","21214":"Baltimore, MD (+ Surrounding)","21201":"Baltimore, MD (+ Surrounding)","21225":"Baltimore, MD (+ Surrounding)","21211":"Baltimore, MD (+ Surrounding)","21231":"Baltimore, MD (+ Surrounding)","21205":"Baltimore, MD (+ Surrounding)","21210":"Baltimore, MD (+ Surrounding)","21207":"Baltimore, MD (+ Surrounding)","21209":"Baltimore, MD (+ Surrounding)","21234":"Baltimore, MD (+ Surrounding)","21226":"Baltimore, MD (+ Surrounding)","21208":"Baltimore, MD (+ Surrounding)","21222":"Baltimore, MD (+ Surrounding)","21227":"Baltimore, MD (+ Surrounding)","21228":"Baltimore, MD (+ Surrounding)","21233":"Baltimore, MD (+ Surrounding)","21236":"Baltimore, MD (+ Surrounding)","21237":"Baltimore, MD (+ Surrounding)","21240":"Baltimore, MD (+ Surrounding)","21260":"Baltimore, MD (+ Surrounding)","21261":"Baltimore, MD (+ Surrounding)","21287":"Baltimore, MD (+ Surrounding)","21235":"Baltimore, MD (+ Surrounding)","21241":"Baltimore, MD (+ Surrounding)","21250":"Baltimore, MD (+ Surrounding)","21251":"Baltimore, MD (+ Surrounding)","21263":"Baltimore, MD (+ Surrounding)","21264":"Baltimore, MD (+ Surrounding)","21265":"Baltimore, MD (+ Surrounding)","21268":"Baltimore, MD (+ Surrounding)","21273":"Baltimore, MD (+ Surrounding)","21274":"Baltimore, MD (+ Surrounding)","21275":"Baltimore, MD (+ Surrounding)","21278":"Baltimore, MD (+ Surrounding)","21279":"Baltimore, MD (+ Surrounding)","21280":"Baltimore, MD (+ Surrounding)","21283":"Baltimore, MD (+ Surrounding)","21288":"Baltimore, MD (+ Surrounding)","21289":"Baltimore, MD (+ Surrounding)","21290":"Baltimore, MD (+ Surrounding)","21298":"Baltimore, MD (+ Surrounding)","21203":"Baltimore, MD (+ Surrounding)","21270":"Baltimore, MD (+ Surrounding)","21281":"Baltimore, MD (+ Surrounding)","21297":"Baltimore, MD (+ Surrounding)","21013":"Baltimore, MD (+ Surrounding)","21023":"Baltimore, MD (+ Surrounding)","21030":"Baltimore, MD (+ Surrounding)","21043":"Baltimore, MD (+ Surrounding)","21221":"Baltimore, MD (+ Surrounding)","21051":"Baltimore, MD (+ Surrounding)","21052":"Baltimore, MD (+ Surrounding)","21053":"Baltimore, MD (+ Surrounding)","21057":"Baltimore, MD (+ Surrounding)","21071":"Baltimore, MD (+ Surrounding)","21074":"Baltimore, MD (+ Surrounding)","21031":"Baltimore, MD (+ Surrounding)","21082":"Baltimore, MD (+ Surrounding)","21085":"Baltimore, MD (+ Surrounding)","21087":"Baltimore, MD (+ Surrounding)","21093":"Baltimore, MD (+ Surrounding)","21102":"Baltimore, MD (+ Surrounding)","21104":"Baltimore, MD (+ Surrounding)","21105":"Baltimore, MD (+ Surrounding)","21220":"Baltimore, MD (+ Surrounding)","21111":"Baltimore, MD (+ Surrounding)","21117":"Baltimore, MD (+ Surrounding)","21120":"Baltimore, MD (+ Surrounding)","21128":"Baltimore, MD (+ Surrounding)","21131":"Baltimore, MD (+ Surrounding)","21133":"Baltimore, MD (+ Surrounding)","21136":"Baltimore, MD (+ Surrounding)","21152":"Baltimore, MD (+ Surrounding)","21219":"Baltimore, MD (+ Surrounding)","21153":"Baltimore, MD (+ Surrounding)","21204":"Baltimore, MD (+ Surrounding)","21286":"Baltimore, MD (+ Surrounding)","21252":"Baltimore, MD (+ Surrounding)","21285":"Baltimore, MD (+ Surrounding)","21156":"Baltimore, MD (+ Surrounding)","21155":"Baltimore, MD (+ Surrounding)","21161":"Baltimore, MD (+ Surrounding)","21162":"Baltimore, MD (+ Surrounding)","21244":"Baltimore, MD (+ Surrounding)","21163":"Baltimore, MD (+ Surrounding)","35005":"Birmingham, AL","35006":"Birmingham, AL","35020":"Birmingham, AL","35022":"Birmingham, AL","35023":"Birmingham, AL","35203":"Birmingham, AL","35204":"Birmingham, AL","35205":"Birmingham, AL","35206":"Birmingham, AL","35207":"Birmingham, AL","35208":"Birmingham, AL","35209":"Birmingham, AL","35210":"Birmingham, AL","35211":"Birmingham, AL","35212":"Birmingham, AL","35213":"Birmingham, AL","35214":"Birmingham, AL","35215":"Birmingham, AL","35216":"Birmingham, AL","35217":"Birmingham, AL","35218":"Birmingham, AL","35221":"Birmingham, AL","35222":"Birmingham, AL","35223":"Birmingham, AL","35224":"Birmingham, AL","35226":"Birmingham, AL","35228":"Birmingham, AL","35233":"Birmingham, AL","35234":"Birmingham, AL","35235":"Birmingham, AL","35242":"Birmingham, AL","35243":"Birmingham, AL","35244":"Birmingham, AL","35229":"Birmingham, AL","35249":"Birmingham, AL","35254":"Birmingham, AL","35036":"Birmingham, AL","35444":"Birmingham, AL","35060":"Birmingham, AL","35061":"Birmingham, AL","35062":"Birmingham, AL","35063":"Birmingham, AL","35064":"Birmingham, AL","35068":"Birmingham, AL","35071":"Birmingham, AL","35073":"Birmingham, AL","35079":"Birmingham, AL","35080":"Birmingham, AL","35091":"Birmingham, AL","35094":"Birmingham, AL","35111":"Birmingham, AL","35116":"Birmingham, AL","35117":"Birmingham, AL","35118":"Birmingham, AL","35119":"Birmingham, AL","35126":"Birmingham, AL","35127":"Birmingham, AL","35130":"Birmingham, AL","35146":"Birmingham, AL","35148":"Birmingham, AL","35172":"Birmingham, AL","35173":"Birmingham, AL","35180":"Birmingham, AL","35181":"Birmingham, AL","19124":"Philadelphia, PA","19111":"Philadelphia, PA","19120":"Philadelphia, PA","19143":"Philadelphia, PA","19149":"Philadelphia, PA","19134":"Philadelphia, PA","19104":"Philadelphia, PA","19148":"Philadelphia, PA","19140":"Philadelphia, PA","19145":"Philadelphia, PA","19144":"Philadelphia, PA","19131":"Philadelphia, PA","19139":"Philadelphia, PA","19121":"Philadelphia, PA","19146":"Philadelphia, PA","19147":"Philadelphia, PA","19136":"Philadelphia, PA","19128":"Philadelphia, PA","19115":"Philadelphia, PA","19116":"Philadelphia, PA","19135":"Philadelphia, PA","19152":"Philadelphia, PA","19154":"Philadelphia, PA","19132":"Philadelphia, PA","19114":"Philadelphia, PA","19130":"Philadelphia, PA","19138":"Philadelphia, PA","19141":"Philadelphia, PA","19151":"Philadelphia, PA","19103":"Philadelphia, PA","19142":"Philadelphia, PA","19119":"Philadelphia, PA","19122":"Philadelphia, PA","19125":"Philadelphia, PA","19133":"Philadelphia, PA","19150":"Philadelphia, PA","19123":"Philadelphia, PA","19107":"Philadelphia, PA","19126":"Philadelphia, PA","19106":"Philadelphia, PA","19129":"Philadelphia, PA","19153":"Philadelphia, PA","19118":"Philadelphia, PA","19102":"Philadelphia, PA","19137":"Philadelphia, PA","19127":"Philadelphia, PA","19109":"Philadelphia, PA","19110":"Philadelphia, PA","19112":"Philadelphia, PA","19113":"Philadelphia, PA","19092":"Philadelphia, PA","19093":"Philadelphia, PA","19099":"Philadelphia, PA","19161":"Philadelphia, PA","19162":"Philadelphia, PA","19170":"Philadelphia, PA","19171":"Philadelphia, PA","19172":"Philadelphia, PA","19173":"Philadelphia, PA","19175":"Philadelphia, PA","19177":"Philadelphia, PA","19178":"Philadelphia, PA","19179":"Philadelphia, PA","19181":"Philadelphia, PA","19182":"Philadelphia, PA","19183":"Philadelphia, PA","19184":"Philadelphia, PA","19185":"Philadelphia, PA","19187":"Philadelphia, PA","19188":"Philadelphia, PA","19190":"Philadelphia, PA","19191":"Philadelphia, PA","19192":"Philadelphia, PA","19193":"Philadelphia, PA","19194":"Philadelphia, PA","19195":"Philadelphia, PA","19196":"Philadelphia, PA","19197":"Philadelphia, PA","19244":"Philadelphia, PA","19255":"Philadelphia, PA","19019":"Philadelphia, PA","19101":"Philadelphia, PA","19105":"Philadelphia, PA","19108":"Philadelphia, PA","19155":"Philadelphia, PA","19160":"Philadelphia, PA","19176":"Philadelphia, PA","21001":"Baltimore, MD (+ Surrounding)","21005":"Baltimore, MD (+ Surrounding)","21009":"Baltimore, MD (+ Surrounding)","21014":"Baltimore, MD (+ Surrounding)","21015":"Baltimore, MD (+ Surrounding)","21017":"Baltimore, MD (+ Surrounding)","21028":"Baltimore, MD (+ Surrounding)","21034":"Baltimore, MD (+ Surrounding)","21040":"Baltimore, MD (+ Surrounding)","21047":"Baltimore, MD (+ Surrounding)","21050":"Baltimore, MD (+ Surrounding)","21010":"Baltimore, MD (+ Surrounding)","21078":"Baltimore, MD (+ Surrounding)","21084":"Baltimore, MD (+ Surrounding)","21130":"Baltimore, MD (+ Surrounding)","21132":"Baltimore, MD (+ Surrounding)","21154":"Baltimore, MD (+ Surrounding)","21160":"Baltimore, MD (+ Surrounding)","21048":"Baltimore, MD (+ Surrounding)","21757":"Baltimore, MD (+ Surrounding)","21771":"Baltimore, MD (+ Surrounding)","21776":"Baltimore, MD (+ Surrounding)","21784":"Baltimore, MD (+ Surrounding)","21787":"Baltimore, MD (+ Surrounding)","21791":"Baltimore, MD (+ Surrounding)","21157":"Baltimore, MD (+ Surrounding)","21158":"Baltimore, MD (+ Surrounding)","21797":"Baltimore, MD (+ Surrounding)","20701":"Baltimore, MD (+ Surrounding)","20833":"Baltimore, MD (+ Surrounding)","21029":"Baltimore, MD (+ Surrounding)","21044":"Baltimore, MD (+ Surrounding)","21045":"Baltimore, MD (+ Surrounding)","21046":"Baltimore, MD (+ Surrounding)","21723":"Baltimore, MD (+ Surrounding)","21036":"Baltimore, MD (+ Surrounding)","21075":"Baltimore, MD (+ Surrounding)","21042":"Baltimore, MD (+ Surrounding)","20759":"Baltimore, MD (+ Surrounding)","21737":"Baltimore, MD (+ Surrounding)","21738":"Baltimore, MD (+ Surrounding)","21076":"Baltimore, MD (+ Surrounding)","20777":"Baltimore, MD (+ Surrounding)","20794":"Baltimore, MD (+ Surrounding)","20723":"Baltimore, MD (+ Surrounding)","20763":"Baltimore, MD (+ Surrounding)","21794":"Baltimore, MD (+ Surrounding)","21401":"Baltimore, MD (+ Surrounding)","21402":"Baltimore, MD (+ Surrounding)","21403":"Baltimore, MD (+ Surrounding)","21405":"Baltimore, MD (+ Surrounding)","21409":"Baltimore, MD (+ Surrounding)","21012":"Baltimore, MD (+ Surrounding)","20733":"Baltimore, MD (+ Surrounding)","21114":"Baltimore, MD (+ Surrounding)","21032":"Baltimore, MD (+ Surrounding)","21035":"Baltimore, MD (+ Surrounding)","20751":"Baltimore, MD (+ Surrounding)","20754":"Baltimore, MD (+ Surrounding)","21037":"Baltimore, MD (+ Surrounding)","20755":"Baltimore, MD (+ Surrounding)","20758":"Baltimore, MD (+ Surrounding)","20765":"Baltimore, MD (+ Surrounding)","21054":"Baltimore, MD (+ Surrounding)","21056":"Baltimore, MD (+ Surrounding)","21060":"Baltimore, MD (+ Surrounding)","21061":"Baltimore, MD (+ Surrounding)","21077":"Baltimore, MD (+ Surrounding)","20776":"Baltimore, MD (+ Surrounding)","20724":"Baltimore, MD (+ Surrounding)","21090":"Baltimore, MD (+ Surrounding)","20711":"Baltimore, MD (+ Surrounding)","21108":"Baltimore, MD (+ Surrounding)","20714":"Baltimore, MD (+ Surrounding)","21113":"Baltimore, MD (+ Surrounding)","20736":"Baltimore, MD (+ Surrounding)","21122":"Baltimore, MD (+ Surrounding)","21140":"Baltimore, MD (+ Surrounding)","21144":"Baltimore, MD (+ Surrounding)","21146":"Baltimore, MD (+ Surrounding)","20764":"Baltimore, MD (+ Surrounding)","20779":"Baltimore, MD (+ Surrounding)","20778":"Baltimore, MD (+ Surrounding)","33904":"Cape Coral, North Port, Lakeland (FL)","33909":"Cape Coral, North Port, Lakeland (FL)","33910":"Cape Coral, North Port, Lakeland (FL)","33914":"Cape Coral, North Port, Lakeland (FL)","33915":"Cape Coral, North Port, Lakeland (FL)","33990":"Cape Coral, North Port, Lakeland (FL)","33991":"Cape Coral, North Port, Lakeland (FL)","33993":"Cape Coral, North Port, Lakeland (FL)","34292":"Cape Coral, North Port, Lakeland (FL)","34291":"Cape Coral, North Port, Lakeland (FL)","34286":"Cape Coral, North Port, Lakeland (FL)","34266":"Cape Coral, North Port, Lakeland (FL)","34289":"Cape Coral, North Port, Lakeland (FL)","34293":"Cape Coral, North Port, Lakeland (FL)","34287":"Cape Coral, North Port, Lakeland (FL)","34288":"Cape Coral, North Port, Lakeland (FL)","34290":"Cape Coral, North Port, Lakeland (FL)","34223":"Cape Coral, North Port, Lakeland (FL)","33801":"Cape Coral, North Port, Lakeland (FL)","33802":"Cape Coral, North Port, Lakeland (FL)","33803":"Cape Coral, North Port, Lakeland (FL)","33804":"Cape Coral, North Port, Lakeland (FL)","33805":"Cape Coral, North Port, Lakeland (FL)","33806":"Cape Coral, North Port, Lakeland (FL)","33807":"Cape Coral, North Port, Lakeland (FL)","33808":"Cape Coral, North Port, Lakeland (FL)","33809":"Cape Coral, North Port, Lakeland (FL)","33810":"Cape Coral, North Port, Lakeland (FL)","33811":"Cape Coral, North Port, Lakeland (FL)","33812":"Cape Coral, North Port, Lakeland (FL)","33813":"Cape Coral, North Port, Lakeland (FL)","33814":"Cape Coral, North Port, Lakeland (FL)","33815":"Cape Coral, North Port, Lakeland (FL)"}},"dscr":{"product":"LTR single-asset DSCR","source":"Ternus DSCR pricing model v9.24.26","ratesAsOf":"2026-09-24","extracted":"2026-10-01","schemaVersion":"2.0 (unified sizer; additive over live 1.x)","indexRate":0.04625,"buydownFactor":4.5,"rebateFactor":3,"ltvBucketUppers":[50,55,60,65,70,75,80,85,100],"spreads":{"660+":[0.028,0.0285,0.02975,0.03,0.03125,0.03375,0.0365,0.0365,0.0365],"680+":[0.02625,0.027,0.0275,0.02875,0.02875,0.0325,0.035,0.035,0.035],"700+":[0.0255,0.02575,0.02625,0.0275,0.0275,0.03125,0.03375,0.03375,0.03375],"720+":[0.025,0.025,0.025,0.02625,0.02625,0.02875,0.03,0.03,0.03],"740+":[0.0245,0.025,0.025,0.02625,0.02625,0.0275,0.03,0.03,0.03],"760+":[0.02375,0.02375,0.02375,0.025,0.025,0.02625,0.02875,0.02875,0.02875],"780+":[0.0235,0.0235,0.0235,0.02475,0.02475,0.026,0.0285,0.0285,0.0285],"800+":[0.02325,0.02325,0.02325,0.0245,0.0245,0.02575,0.02825,0.02825,0.02825],"FN":[0.0265,0.027,0.0275,0.02875,0.0295,0.0325,0.035,0.035,0.035]},"adjustments":{"propType":{"Detached SFR":[0,0,0,0,0,0,0,0,0],"SFR + ADU":[0.0005,0.0005,0.00075,0.00075,0.001,0.001,0.001,0.00125,0.00125],"2-4 Unit Residential":[0.00075,0.00075,0.001,0.001,0.00125,0.00125,0.00125,0.0015,0.0015],"Condo (W)":[0.00025,0.00025,0.0005,0.0005,0.00075,0.00075,0.00075,0.001,0.001],"Condo (NW)":[0.001,0.00125,0.0015,0.00175,0.002,0.0025,0.00275,0.003,0.003],"Townhome":[0,0,0,0,0,0,0,0,0],"Manufactured":[0.0025,0.0025,0.0025,0.0025,0.0025,0.0025,0.0025,0.0025,0.0025],"PUD":[0,0,0,0,0,0,0,0,0],"Multi (5-9)":[0.0025,0.0025,0.00275,0.003,0.0035,0.0035,0.0035,0.005,0.005],"Multi (10+)":[0.005,0.005,0.005,0.005,0.005,0.005,0.005,0.005,0.005],"Mixed-Use":[null,null,null,null,null,null,null,null,null]},"purpose":{"Purchase":[-0.00025,-0.00025,-0.00025,-0.00025,-0.00025,-0.00025,-0.00025,-0.00025,-0.00025],"Delayed Purchase":[0,0,0,0,0,0,0,0,0],"Refinance (RT)":[0,0,0,0,0,0,0,0,0],"Refinance (CO)":[0.00075,0.001,0.00125,0.0015,0.002,0.00275,0.01,0.01,0.01]},"term":{"180 Months (15Y)":[null,null,null,null,null,null,null,null,null],"360 Months (30Y)":[0,0,0,0,0,0,0,0,0],"480 Months (40Y)":[null,null,null,null,null,null,null,null,null]},"amort":{"FRM":[0,0,0,0,0,0,0,0,0],"5/6 ARM":[0,0,0,0,0,0,0,0,0],"7/6 ARM":[0,0,0,0,0,0,0,0,0],"10/6 ARM":[0,0,0,0,0,0,0,0,0]},"io":{"No IO":[0,0,0,0,0,0,0,0,0],"5Y IO":[0.00175,0.00175,0.00175,0.00225,0.00225,0.003,0.003,0.003,0.003],"7Y IO":[0.0015,0.0015,0.0015,0.002,0.002,0.00275,0.00275,0.00275,0.00275],"10Y IO":[0.00025,0.0005,0.00075,0.001,0.00125,0.0015,0.00175,0.0025,0.0025]},"ppp":{"5y (5% Flat)":[-0.0025,-0.0025,-0.0025,-0.0025,-0.0025,-0.0025,-0.0025,-0.0025,-0.0025],"5y (DP)":[-0.00175,-0.00175,-0.00175,-0.00175,-0.00175,-0.00175,-0.00175,-0.00175,-0.00175],"4y (DP)":[-0.001,-0.001,-0.001,-0.001,-0.001,-0.001,-0.001,-0.001,-0.001],"3y (DP)":[0,0,0,0,0,0,0,0,0],"2y (DP)":[0.00125,0.00125,0.00125,0.00125,0.00125,0.00125,0.00125,0.00125,0.00125],"1y (1%)":[0.00175,0.00175,0.00175,0.00175,0.00175,0.00175,0.00175,0.00175,0.00175],"OH 5y (1% Flat)":[0.00075,0.00075,0.00075,0.00075,0.00075,0.00075,0.00075,0.00075,0.00075],"0y (No PPP)":[0.0025,0.0025,0.0025,0.0025,0.0025,0.0025,0.0025,0.0025,0.0025]},"leasing":{"Leased | P | LTR":[0,0,0,0,0,0,0,0,0],"Vacant | P | LTR":[0,0,0,0,0,0,0,0,0],"Leased | P | STR":[0,0,0,0,0,0,0,0,0],"Vacant | P | STR":[0,0,0,0,0,0,0,0,0],"Leased | P | HAP":[0,0,0.00025,0.0005,0.00075,0.001,0.00125,0.00125,0.00125],"Vacant | P | HAP":[0,0,0.00025,0.0005,0.00075,0.001,0.00125,0.00125,0.00125],"Leased | R | LTR":[0,0,0,0,0,0,0,0,0],"Vacant | R | LTR":[0,0,0,0.00025,0.0005,0.00075,0.001,0.001,0.001],"Leased | R | STR":[0,0,0,0,0,0,0,0,0],"Vacant | R | STR":[0,0,0,0.00025,0.0005,0.00075,0.001,0.001,0.001],"Leased | R | HAP":[0,0,0.00025,0.0005,0.00075,0.001,0.00125,0.00125,0.00125],"Vacant | R | HAP":[0,0,0.00025,0.0005,0.00075,0.001,0.00125,0.00125,0.00125]},"loanSize":{"<= $50,000":[0.003,0.003,0.00325,0.00331,0.0035,0.00375,0.00425,0.0045,0.0045],"<= $75,000":[0.00175,0.00175,0.002,0.00206,0.00225,0.0025,0.003,0.00325,0.00325],"<= $100,000":[0.00075,0.00075,0.001,0.00106,0.00125,0.0015,0.002,0.00225,0.00225],"<= $125,000":[0.00025,0.00025,0.0005,0.00056,0.00075,0.001,0.0015,0.00175,0.00175],"<= $150,000":[0,0,0.00025,0.00025,0.0005,0.00075,0.00125,0.0015,0.0015],"<= $250,000":[0,0,0,0,0,0,0,0,0],"<= $500,000":[0,0,0,0,0,0,0,0,0],"<= $750,000":[0,0,0,0,0,0,0,0,0],"<= $1,000,000":[0,0,0,0,0,0,0,0,0],"<= $1,250,000":[0.00075,0.00075,0.00075,0.00075,0.00075,0.00075,0.00075,0.00075,0.00075],"<= $1,500,000":[0.00075,0.00075,0.00075,0.00075,0.00075,0.00075,0.00075,0.00075,0.00075],"<= $1,750,000":[0.001,0.001,0.001,0.001,0.001,0.001,0.001,0.001,0.001],"<= $2,000,000":[0.001,0.001,0.001,0.001,0.001,0.001,0.001,0.001,0.001],"<= $100,000,000":[0.001,0.001,0.001,0.001,0.001,0.001,0.001,0.001,0.001]},"state":{"AK":[0,0,0,0,0,0,0,0,0],"AL":[0,0,0,0,0,0,0,0,0],"AR":[0,0,0,0,0,0,0,0,0],"AZ":[0,0,0,0,0,0,0,0,0],"CA":[0,0,0,0,0,0,0,0,0],"CO":[0,0,0,0,0,0,0,0,0],"CT":[0,0,0,0,0,0,0,0,0],"DC":[0,0,0,0,0,0,0,0,0],"DE":[0,0,0,0,0,0,0,0,0],"FL":[0,0.00025,0.00025,0.0005,0.0005,0.00075,0.00125,0.00125,0.00125],"GA":[0,0,0,0,0,0,0,0,0],"HI":[0,0,0,0,0,0,0,0,0],"IA":[0,0,0,0,0,0,0,0,0],"ID":[0,0,0,0,0,0,0,0,0],"IL":[0,0,0,0.00025,0.00025,0.0005,0.00075,0.00075,0.00075],"IN":[0,0,0,0,0,0,0,0,0],"KS":[0,0,0,0,0,0,0,0,0],"KY":[0,0,0,0,0,0,0,0,0],"LA":[0,0,0,0,0,0,0,0,0],"MA":[0,0,0,0,0,0,0,0,0],"MD":[0,0.00025,0.00025,0.0005,0.0005,0.00075,0.00125,0.00125,0.00125],"ME":[0,0,0,0,0,0,0,0,0],"MI":[0,0,0,0.00025,0.00025,0.0005,0.00075,0.00075,0.00075],"MN":[0,0,0,0,0,0,0,0,0],"MO":[0,0,0,0,0,0,0,0,0],"MS":[0,0,0,0,0,0,0,0,0],"MT":[0,0,0,0,0,0,0,0,0],"NC":[0,0,0,0,0,0,0,0,0],"ND":[0,0,0,0,0,0,0,0,0],"NE":[0,0,0,0,0,0,0,0,0],"NH":[0,0,0,0,0,0,0,0,0],"NJ":[0,0,0,0,0,0,0,0,0],"NM":[0,0,0,0,0,0,0,0,0],"NV":[0,0,0,0,0,0,0,0,0],"NY":[0,0,0,0,0,0,0,0,0],"OH":[0,0,0,0.00025,0.00025,0.0005,0.00075,0.00075,0.00075],"OK":[0,0,0,0,0,0,0,0,0],"OR":[0,0,0,0,0,0,0,0,0],"PA":[0,0,0,0,0,0,0,0,0],"RI":[0,0,0,0,0,0,0,0,0],"SC":[0,0,0,0,0,0,0,0,0],"SD":[0,0,0,0,0,0,0,0,0],"TN":[0,0,0,0,0,0,0,0,0],"TX":[0,0.00025,0.00025,0.0005,0.0005,0.00075,0.00125,0.00125,0.00125],"UT":[0,0,0,0,0,0,0,0,0],"VA":[0,0,0,0,0,0,0,0,0],"VT":[0,0,0,0,0,0,0,0,0],"WA":[0,0,0,0,0,0,0,0,0],"WI":[0,0,0,0,0,0,0,0,0],"WV":[0,0,0,0,0,0,0,0,0],"WY":[0,0,0,0,0,0,0,0,0]}},"ficoBuckets":[{"min":0,"max":574,"bucket":"< 575"},{"min":575,"max":599,"bucket":"575+"},{"min":600,"max":619,"bucket":"600+"},{"min":620,"max":639,"bucket":"620+"},{"min":640,"max":659,"bucket":"640+"},{"min":660,"max":679,"bucket":"660+"},{"min":680,"max":699,"bucket":"680+"},{"min":700,"max":719,"bucket":"700+"},{"min":720,"max":739,"bucket":"720+"},{"min":740,"max":759,"bucket":"740+"},{"min":760,"max":779,"bucket":"760+"},{"min":780,"max":799,"bucket":"780+"},{"min":800,"max":1000,"bucket":"800+"}],"balanceBuckets":[{"min":0,"max":50000,"bucket":"<= $50,000"},{"min":50000,"max":75000,"bucket":"<= $75,000"},{"min":75000,"max":100000,"bucket":"<= $100,000"},{"min":100000,"max":125000,"bucket":"<= $125,000"},{"min":125000,"max":150000,"bucket":"<= $150,000"},{"min":150000,"max":250000,"bucket":"<= $250,000"},{"min":250000,"max":500000,"bucket":"<= $500,000"},{"min":500000,"max":750000,"bucket":"<= $750,000"},{"min":750000,"max":1000000,"bucket":"<= $1,000,000"},{"min":1000000,"max":1250000,"bucket":"<= $1,250,000"},{"min":1250000,"max":1500000,"bucket":"<= $1,500,000"},{"min":1500000,"max":1750000,"bucket":"<= $1,750,000"},{"min":1750000,"max":2000000,"bucket":"<= $2,000,000"},{"min":2000000,"max":100000000,"bucket":"<= $100,000,000"}],"vpuExpenseRatios":[{"maxVpu":"<= $35,000","ratio":0.45},{"maxVpu":"<= $50,000","ratio":0.4},{"maxVpu":"<= $75,000","ratio":0.35},{"maxVpu":"<= $100,000","ratio":0.3},{"maxVpu":"<= $150,000","ratio":0.25},{"maxVpu":"<= $250,000","ratio":0.2},{"maxVpu":"<= $100,000,000","ratio":0.15}],"sqftMin":{"Detached SFR":675,"SFR + ADU":675,"2-4 Unit Residential":0,"Condo (W)":480,"Condo (NW)":480,"Townhome":675,"Manufactured":675,"PUD":675,"Multi (5-9)":0,"Multi (10+)":0,"Mixed-Use":"-"},"sqftMinPerUnit":{"2-4 Unit Residential":480,"Multi (5-9)":500,"Multi (10+)":500},"constraints":{"minLoan":{"multi":150000,"sfrFN":85000,"sfr":70000},"minValue":{"multiPerUnit":80000,"sfrFN":125000,"sfr":115000},"minDSCR":{"multi":1.25,"strSFR":1.2,"fn":1.3,"sfr660":1.15,"sfrDefault":1.0},"ltvCaps":{"660+":[0.65,0.6],"680+":[0.75,0.7],"700+":[0.8,0.75],"720+":[0.8,0.75],"740+":[0.8,0.75],"760+":[0.8,0.75],"780+":[0.8,0.75],"800+":[0.8,0.75],"FN":[0.7,0.65]},"multiMinFico":"700+","multiIneligibleTiers":["660+","680+","FN"],"vacantUnitLimitRefi":1,"maxLoan":3000000,"ltvAdjustments":{"multi":-0.1,"sdira":-0.1,"valueBand":{"min":100000,"max":115000,"adj":-0.1},"str":-0.05,"propType":{"Condo (NW)":-0.1,"Manufactured":-0.05},"floor":-0.15},"rateFloor":{"sfr":0.05,"multi":0.06,"io":0.06,"noIO":0.05,"pppHighOptions":["0y (No PPP)","1y (1%)"],"pppHigh":0.06,"pppLow":0.05},"rtPayoffCapMultiple":1.02,"vacancyAllowance":{"P":[4,4,4,4],"RT":[0,1,1,1],"CO":[0,1,1,1]},"leaseIncome":{"strActualFactor":0.8},"multiNCF":{"capexPerUnitYear":500},"thirdPartyClosingPct":0.01,"escrowFactor":0.85,"reserveMonths":{"default":6,"extended":9}},"lenderMinPoints":{"multi":0.01,"noPPP":0.01,"noPPP_PA_OH":0.005,"1y (1%)":0.0075,"OH 5y (1% Flat)":0.0025,"2y (DP)":0.005,"default":0},"rebateOptions":{"step":0.00125,"sfrCapByPPP":{"5y (5% Flat)":0.015,"5y (DP)":0.015,"4y (DP)":0.0125,"3y (DP)":0.0125,"2y (DP)":0.005,"1y (1%)":0.00375,"OH 5y (1% Flat)":0.00625,"0y (No PPP)":0},"multiCap":0,"note":"Rate rises by rebate / rebateFactor (model 'Interest Rate + YSP' grid, rounded to 5 dp)."},"ternusRevenue":{"ruleId":"DSCR-REV-2026-10-01","approved":"2026-10-01","ternusRevFloor":0.03,"ternusPtsMax":0.02,"ternusFee":500,"yspSource":"workbook-rebate","yspCredit":3,"yspRounding":"up","residualPolicy":"none","eliteYspCreditReference":0.4},"solver":{"ltvMin":0.3,"ltvStep":0.005,"discountPointsMax":3.5,"discountPointsStep":0.25},"zipOverlays":{"21215":{"permitted":false},"21218":{"permitted":false},"21224":{"permitted":false},"21206":{"permitted":false},"21230":{"permitted":false},"21229":{"permitted":false},"21217":{"permitted":false},"21213":{"permitted":false},"21216":{"permitted":false},"21202":{"permitted":false},"21239":{"permitted":false},"21212":{"permitted":false},"21223":{"permitted":false},"21214":{"permitted":false},"21201":{"permitted":false},"21225":{"minDSCR":1.2,"minValue":175000},"21211":{"permitted":false},"21231":{"permitted":false},"21205":{"permitted":false},"21210":{"permitted":false},"21207":{"permitted":false},"21209":{"permitted":false},"21234":{"permitted":false},"21226":{"minDSCR":1.2,"minValue":175000},"21208":{"permitted":false},"21222":{"permitted":false},"21227":{"permitted":false},"21228":{"permitted":false},"21233":{"permitted":false},"21236":{"permitted":false},"21237":{"permitted":false},"21240":{"minDSCR":1.2,"minValue":175000},"21260":{"permitted":false},"21261":{"permitted":false},"21287":{"permitted":false},"21235":{"permitted":false},"21241":{"permitted":false},"21250":{"permitted":false},"21251":{"permitted":false},"21263":{"permitted":false},"21264":{"permitted":false},"21265":{"permitted":false},"21268":{"permitted":false},"21273":{"permitted":false},"21274":{"permitted":false},"21275":{"permitted":false},"21278":{"permitted":false},"21279":{"permitted":false},"21280":{"permitted":false},"21283":{"permitted":false},"21288":{"permitted":false},"21289":{"permitted":false},"21290":{"permitted":false},"21298":{"permitted":false},"21203":{"permitted":false},"21270":{"permitted":false},"21281":{"permitted":false},"21297":{"permitted":false},"21013":{"minDSCR":1.2,"minValue":175000},"21023":{"permitted":false},"21030":{"permitted":false},"21043":{"minDSCR":1.2,"minValue":175000},"21221":{"permitted":false},"21051":{"permitted":false},"21052":{"permitted":false},"21053":{"permitted":false},"21057":{"permitted":false},"21071":{"permitted":false},"21074":{"minDSCR":1.2,"minValue":175000},"21031":{"permitted":false},"21082":{"minDSCR":1.2,"minValue":175000},"21085":{"minDSCR":1.2,"minValue":175000},"21087":{"minDSCR":1.2,"minValue":175000},"21093":{"permitted":false},"21102":{"minDSCR":1.2,"minValue":175000},"21104":{"minDSCR":1.2,"minValue":175000},"21105":{"permitted":false},"21220":{"permitted":false},"21111":{"minDSCR":1.2,"minValue":175000},"21117":{"permitted":false},"21120":{"permitted":false},"21128":{"permitted":false},"21131":{"permitted":false},"21133":{"permitted":false},"21136":{"minDSCR":1.2,"minValue":175000},"21152":{"permitted":false},"21219":{"permitted":false},"21153":{"permitted":false},"21204":{"permitted":false},"21286":{"permitted":false},"21252":{"permitted":false},"21285":{"permitted":false},"21156":{"permitted":false},"21155":{"minDSCR":1.2,"minValue":175000},"21161":{"minDSCR":1.2,"minValue":175000},"21162":{"permitted":false},"21244":{"permitted":false},"21163":{"minDSCR":1.2,"minValue":175000},"19124":{"minDSCR":1.2,"minValue":175000},"19111":{"minDSCR":1.2,"minValue":175000},"19120":{"minDSCR":1.2,"minValue":175000},"19143":{"minDSCR":1.2,"minValue":175000},"19149":{"minDSCR":1.2,"minValue":175000},"19134":{"minDSCR":1.2,"minValue":175000},"19104":{"minDSCR":1.2,"minValue":175000},"19148":{"minDSCR":1.2,"minValue":175000},"19140":{"minDSCR":1.2,"minValue":175000},"19145":{"minDSCR":1.2,"minValue":175000},"19144":{"minDSCR":1.2,"minValue":175000},"19131":{"minDSCR":1.2,"minValue":175000},"19139":{"minDSCR":1.2,"minValue":175000},"19121":{"minDSCR":1.2,"minValue":175000},"19146":{"minDSCR":1.2,"minValue":175000},"19147":{"minDSCR":1.2,"minValue":175000},"19136":{"minDSCR":1.2,"minValue":175000},"19128":{"minDSCR":1.2,"minValue":175000},"19115":{"minDSCR":1.2,"minValue":175000},"19116":{"minDSCR":1.2,"minValue":175000},"19135":{"minDSCR":1.2,"minValue":175000},"19152":{"minDSCR":1.2,"minValue":175000},"19154":{"minDSCR":1.2,"minValue":175000},"19132":{"minDSCR":1.2,"minValue":175000},"19114":{"minDSCR":1.2,"minValue":175000},"19130":{"minDSCR":1.2,"minValue":175000},"19138":{"minDSCR":1.2,"minValue":175000},"19141":{"minDSCR":1.2,"minValue":175000},"19151":{"minDSCR":1.2,"minValue":175000},"19103":{"minDSCR":1.2,"minValue":175000},"19142":{"minDSCR":1.2,"minValue":175000},"19119":{"minDSCR":1.2,"minValue":175000},"19122":{"minDSCR":1.2,"minValue":175000},"19125":{"minDSCR":1.2,"minValue":175000},"19133":{"minDSCR":1.2,"minValue":175000},"19150":{"minDSCR":1.2,"minValue":175000},"19123":{"minDSCR":1.2,"minValue":175000},"19107":{"minDSCR":1.2,"minValue":175000},"19126":{"minDSCR":1.2,"minValue":175000},"19106":{"minDSCR":1.2,"minValue":175000},"19129":{"minDSCR":1.2,"minValue":175000},"19153":{"minDSCR":1.2,"minValue":175000},"19118":{"minDSCR":1.2,"minValue":175000},"19102":{"minDSCR":1.2,"minValue":175000},"19137":{"minDSCR":1.2,"minValue":175000},"19127":{"minDSCR":1.2,"minValue":175000},"19109":{"minDSCR":1.2,"minValue":175000},"19110":{"minDSCR":1.2,"minValue":175000},"19112":{"minDSCR":1.2,"minValue":175000},"19113":{"minDSCR":1.2,"minValue":175000},"19092":{"minDSCR":1.2,"minValue":175000},"19093":{"minDSCR":1.2,"minValue":175000},"19099":{"minDSCR":1.2,"minValue":175000},"19161":{"minDSCR":1.2,"minValue":175000},"19162":{"minDSCR":1.2,"minValue":175000},"19170":{"minDSCR":1.2,"minValue":175000},"19171":{"minDSCR":1.2,"minValue":175000},"19172":{"minDSCR":1.2,"minValue":175000},"19173":{"minDSCR":1.2,"minValue":175000},"19175":{"minDSCR":1.2,"minValue":175000},"19177":{"minDSCR":1.2,"minValue":175000},"19178":{"minDSCR":1.2,"minValue":175000},"19179":{"minDSCR":1.2,"minValue":175000},"19181":{"minDSCR":1.2,"minValue":175000},"19182":{"minDSCR":1.2,"minValue":175000},"19183":{"minDSCR":1.2,"minValue":175000},"19184":{"minDSCR":1.2,"minValue":175000},"19185":{"minDSCR":1.2,"minValue":175000},"19187":{"minDSCR":1.2,"minValue":175000},"19188":{"minDSCR":1.2,"minValue":175000},"19190":{"minDSCR":1.2,"minValue":175000},"19191":{"minDSCR":1.2,"minValue":175000},"19192":{"minDSCR":1.2,"minValue":175000},"19193":{"minDSCR":1.2,"minValue":175000},"19194":{"minDSCR":1.2,"minValue":175000},"19195":{"minDSCR":1.2,"minValue":175000},"19196":{"minDSCR":1.2,"minValue":175000},"19197":{"minDSCR":1.2,"minValue":175000},"19244":{"minDSCR":1.2,"minValue":175000},"19255":{"minDSCR":1.2,"minValue":175000},"19019":{"minDSCR":1.2,"minValue":175000},"19101":{"minDSCR":1.2,"minValue":175000},"19105":{"minDSCR":1.2,"minValue":175000},"19108":{"minDSCR":1.2,"minValue":175000},"19155":{"minDSCR":1.2,"minValue":175000},"19160":{"minDSCR":1.2,"minValue":175000},"19176":{"minDSCR":1.2,"minValue":175000},"21001":{"minDSCR":1.2,"minValue":175000},"21005":{"minDSCR":1.2,"minValue":175000},"21009":{"minDSCR":1.2,"minValue":175000},"21014":{"minDSCR":1.2,"minValue":175000},"21015":{"minDSCR":1.2,"minValue":175000},"21017":{"minDSCR":1.2,"minValue":175000},"21028":{"minDSCR":1.2,"minValue":175000},"21034":{"minDSCR":1.2,"minValue":175000},"21040":{"minDSCR":1.2,"minValue":175000},"21047":{"minDSCR":1.2,"minValue":175000},"21050":{"minDSCR":1.2,"minValue":175000},"21010":{"minDSCR":1.2,"minValue":175000},"21078":{"minDSCR":1.2,"minValue":175000},"21084":{"minDSCR":1.2,"minValue":175000},"21130":{"minDSCR":1.2,"minValue":175000},"21132":{"minDSCR":1.2,"minValue":175000},"21154":{"minDSCR":1.2,"minValue":175000},"21160":{"minDSCR":1.2,"minValue":175000},"21048":{"minDSCR":1.2,"minValue":175000},"21757":{"minDSCR":1.2,"minValue":175000},"21771":{"minDSCR":1.2,"minValue":175000},"21776":{"minDSCR":1.2,"minValue":175000},"21784":{"minDSCR":1.2,"minValue":175000},"21787":{"minDSCR":1.2,"minValue":175000},"21791":{"minDSCR":1.2,"minValue":175000},"21157":{"minDSCR":1.2,"minValue":175000},"21158":{"minDSCR":1.2,"minValue":175000},"21797":{"minDSCR":1.2,"minValue":175000},"20701":{"minDSCR":1.2,"minValue":175000},"20833":{"minDSCR":1.2,"minValue":175000},"21029":{"minDSCR":1.2,"minValue":175000},"21044":{"minDSCR":1.2,"minValue":175000},"21045":{"minDSCR":1.2,"minValue":175000},"21046":{"minDSCR":1.2,"minValue":175000},"21723":{"minDSCR":1.2,"minValue":175000},"21036":{"minDSCR":1.2,"minValue":175000},"21075":{"minDSCR":1.2,"minValue":175000},"21042":{"minDSCR":1.2,"minValue":175000},"20759":{"minDSCR":1.2,"minValue":175000},"21737":{"minDSCR":1.2,"minValue":175000},"21738":{"minDSCR":1.2,"minValue":175000},"21076":{"minDSCR":1.2,"minValue":175000},"20777":{"minDSCR":1.2,"minValue":175000},"20794":{"minDSCR":1.2,"minValue":175000},"20723":{"minDSCR":1.2,"minValue":175000},"20763":{"minDSCR":1.2,"minValue":175000},"21794":{"minDSCR":1.2,"minValue":175000},"21401":{"minDSCR":1.2,"minValue":175000},"21402":{"minDSCR":1.2,"minValue":175000},"21403":{"minDSCR":1.2,"minValue":175000},"21405":{"minDSCR":1.2,"minValue":175000},"21409":{"minDSCR":1.2,"minValue":175000},"21012":{"minDSCR":1.2,"minValue":175000},"20733":{"minDSCR":1.2,"minValue":175000},"21114":{"minDSCR":1.2,"minValue":175000},"21032":{"minDSCR":1.2,"minValue":175000},"21035":{"minDSCR":1.2,"minValue":175000},"20751":{"minDSCR":1.2,"minValue":175000},"20754":{"minDSCR":1.2,"minValue":175000},"21037":{"minDSCR":1.2,"minValue":175000},"20755":{"minDSCR":1.2,"minValue":175000},"20758":{"minDSCR":1.2,"minValue":175000},"20765":{"minDSCR":1.2,"minValue":175000},"21054":{"minDSCR":1.2,"minValue":175000},"21056":{"minDSCR":1.2,"minValue":175000},"21060":{"minDSCR":1.2,"minValue":175000},"21061":{"minDSCR":1.2,"minValue":175000},"21077":{"minDSCR":1.2,"minValue":175000},"20776":{"minDSCR":1.2,"minValue":175000},"20724":{"minDSCR":1.2,"minValue":175000},"21090":{"minDSCR":1.2,"minValue":175000},"20711":{"minDSCR":1.2,"minValue":175000},"21108":{"minDSCR":1.2,"minValue":175000},"20714":{"minDSCR":1.2,"minValue":175000},"21113":{"minDSCR":1.2,"minValue":175000},"20736":{"minDSCR":1.2,"minValue":175000},"21122":{"minDSCR":1.2,"minValue":175000},"21140":{"minDSCR":1.2,"minValue":175000},"21144":{"minDSCR":1.2,"minValue":175000},"21146":{"minDSCR":1.2,"minValue":175000},"20764":{"minDSCR":1.2,"minValue":175000},"20779":{"minDSCR":1.2,"minValue":175000},"20778":{"minDSCR":1.2,"minValue":175000},"33904":{"permitted":false},"33909":{"permitted":false},"33910":{"permitted":false},"33914":{"permitted":false},"33915":{"permitted":false},"33990":{"permitted":false},"33991":{"permitted":false},"33993":{"permitted":false},"34292":{"permitted":false},"34291":{"permitted":false},"34286":{"permitted":false},"34266":{"permitted":false},"34289":{"permitted":false},"34293":{"permitted":false},"34287":{"permitted":false},"34288":{"permitted":false},"34290":{"permitted":false},"34223":{"permitted":false},"33801":{"permitted":false},"33802":{"permitted":false},"33803":{"permitted":false},"33804":{"permitted":false},"33805":{"permitted":false},"33806":{"permitted":false},"33807":{"permitted":false},"33808":{"permitted":false},"33809":{"permitted":false},"33810":{"permitted":false},"33811":{"permitted":false},"33812":{"permitted":false},"33813":{"permitted":false},"33814":{"permitted":false},"33815":{"permitted":false},"35005":{"minDSCR":1.2,"minValue":175000},"35006":{"minDSCR":1.2,"minValue":175000},"35020":{"minDSCR":1.2,"minValue":175000},"35022":{"minDSCR":1.2,"minValue":175000},"35023":{"minDSCR":1.2,"minValue":175000},"35203":{"minDSCR":1.2,"minValue":175000},"35204":{"minDSCR":1.2,"minValue":175000},"35205":{"minDSCR":1.2,"minValue":175000},"35206":{"minDSCR":1.2,"minValue":175000},"35207":{"minDSCR":1.2,"minValue":175000},"35208":{"minDSCR":1.2,"minValue":175000},"35209":{"minDSCR":1.2,"minValue":175000},"35210":{"minDSCR":1.2,"minValue":175000},"35211":{"minDSCR":1.2,"minValue":175000},"35212":{"minDSCR":1.2,"minValue":175000},"35213":{"minDSCR":1.2,"minValue":175000},"35214":{"minDSCR":1.2,"minValue":175000},"35215":{"minDSCR":1.2,"minValue":175000},"35216":{"minDSCR":1.2,"minValue":175000},"35217":{"minDSCR":1.2,"minValue":175000},"35218":{"minDSCR":1.2,"minValue":175000},"35221":{"minDSCR":1.2,"minValue":175000},"35222":{"minDSCR":1.2,"minValue":175000},"35223":{"minDSCR":1.2,"minValue":175000},"35224":{"minDSCR":1.2,"minValue":175000},"35226":{"minDSCR":1.2,"minValue":175000},"35228":{"minDSCR":1.2,"minValue":175000},"35233":{"minDSCR":1.2,"minValue":175000},"35234":{"minDSCR":1.2,"minValue":175000},"35235":{"minDSCR":1.2,"minValue":175000},"35242":{"minDSCR":1.2,"minValue":175000},"35243":{"minDSCR":1.2,"minValue":175000},"35244":{"minDSCR":1.2,"minValue":175000},"35229":{"minDSCR":1.2,"minValue":175000},"35249":{"minDSCR":1.2,"minValue":175000},"35254":{"minDSCR":1.2,"minValue":175000},"35036":{"minDSCR":1.2,"minValue":175000},"35444":{"minDSCR":1.2,"minValue":175000},"35060":{"minDSCR":1.2,"minValue":175000},"35061":{"minDSCR":1.2,"minValue":175000},"35062":{"minDSCR":1.2,"minValue":175000},"35063":{"minDSCR":1.2,"minValue":175000},"35064":{"minDSCR":1.2,"minValue":175000},"35068":{"minDSCR":1.2,"minValue":175000},"35071":{"minDSCR":1.2,"minValue":175000},"35073":{"minDSCR":1.2,"minValue":175000},"35079":{"minDSCR":1.2,"minValue":175000},"35080":{"minDSCR":1.2,"minValue":175000},"35091":{"minDSCR":1.2,"minValue":175000},"35094":{"minDSCR":1.2,"minValue":175000},"35111":{"minDSCR":1.2,"minValue":175000},"35116":{"minDSCR":1.2,"minValue":175000},"35117":{"minDSCR":1.2,"minValue":175000},"35118":{"minDSCR":1.2,"minValue":175000},"35119":{"minDSCR":1.2,"minValue":175000},"35126":{"minDSCR":1.2,"minValue":175000},"35127":{"minDSCR":1.2,"minValue":175000},"35130":{"minDSCR":1.2,"minValue":175000},"35146":{"minDSCR":1.2,"minValue":175000},"35148":{"minDSCR":1.2,"minValue":175000},"35172":{"minDSCR":1.2,"minValue":175000},"35173":{"minDSCR":1.2,"minValue":175000},"35180":{"minDSCR":1.2,"minValue":175000},"35181":{"minDSCR":1.2,"minValue":175000}},"ineligibleStates":["AK","AZ","CA","DC","HI","MN","ND","NV","OR","SD","UT","VT"]},"guc":{"meta":{"product":"Ground-Up Construction (GUC)","sourceVersion":"2026-09-24 capital-partner sizer (GUC branch), extracted 2026-10-01","notes":["Leverage, adjusters, pricing and liquidity mirror the capital partner's GUC sizer cell-for-cell; see guc-model-map.md for cell citations.","Ternus revenue rule mirrors Flip Sizer v7 Elite (Tim, 2026-10-01).","All quotes are estimates for discussion purposes only, subject to underwriting, verification and final approval."]},"experienceBuckets":["0","1-4","5+","10+ (5+)"],"leverageMatrix":{"P":{"SFR":{"0":{"row":5,"limits":{"aiLtv":0.7,"iLtc":0.7,"arLtv":0.65,"tLtc":0.85}},"1-4":{"row":6,"limits":{"aiLtv":0.75,"iLtc":0.75,"arLtv":0.7,"tLtc":0.85}},"5+":{"row":7,"limits":{"aiLtv":0.75,"iLtc":0.8,"arLtv":0.75,"tLtc":0.9}},"10+ (5+)":{"row":8,"limits":{"aiLtv":0.75,"iLtc":0.8,"arLtv":0.75,"tLtc":0.9}}},"Multi":{"0":{"row":25,"limits":null},"1-4":{"row":26,"limits":{"aiLtv":0.7,"iLtc":0.7,"arLtv":0.65,"tLtc":0.8}},"5+":{"row":27,"limits":{"aiLtv":0.75,"iLtc":0.75,"arLtv":0.65,"tLtc":0.85}},"10+ (5+)":{"row":28,"limits":{"aiLtv":0.75,"iLtc":0.75,"arLtv":0.65,"tLtc":0.85}}}},"DP":{"SFR":{"0":{"row":45,"limits":{"aiLtv":0.7,"iLtc":0.7,"arLtv":0.65,"tLtc":0.85}},"1-4":{"row":46,"limits":{"aiLtv":0.75,"iLtc":0.75,"arLtv":0.7,"tLtc":0.85}},"5+":{"row":47,"limits":{"aiLtv":0.75,"iLtc":0.8,"arLtv":0.75,"tLtc":0.9}},"10+ (5+)":{"row":48,"limits":{"aiLtv":0.75,"iLtc":0.8,"arLtv":0.75,"tLtc":0.9}}},"Multi":{"0":{"row":65,"limits":null},"1-4":{"row":66,"limits":{"aiLtv":0.7,"iLtc":0.7,"arLtv":0.65,"tLtc":0.8}},"5+":{"row":67,"limits":{"aiLtv":0.75,"iLtc":0.75,"arLtv":0.65,"tLtc":0.85}},"10+ (5+)":{"row":68,"limits":{"aiLtv":0.75,"iLtc":0.75,"arLtv":0.65,"tLtc":0.85}}}},"RT":{"SFR":{"0":{"row":85,"limits":{"aiLtv":0.7,"iLtc":null,"arLtv":0.65,"tLtc":0.8}},"1-4":{"row":86,"limits":{"aiLtv":0.7,"iLtc":null,"arLtv":0.65,"tLtc":0.8}},"5+":{"row":87,"limits":{"aiLtv":0.7,"iLtc":null,"arLtv":0.7,"tLtc":0.85}},"10+ (5+)":{"row":88,"limits":{"aiLtv":0.7,"iLtc":null,"arLtv":0.7,"tLtc":0.85}}},"Multi":{"0":{"row":105,"limits":{"aiLtv":0.65,"iLtc":null,"arLtv":0.6,"tLtc":0.75}},"1-4":{"row":106,"limits":{"aiLtv":0.65,"iLtc":null,"arLtv":0.6,"tLtc":0.75}},"5+":{"row":107,"limits":{"aiLtv":0.7,"iLtc":null,"arLtv":0.6,"tLtc":0.8}},"10+ (5+)":{"row":108,"limits":{"aiLtv":0.7,"iLtc":null,"arLtv":0.6,"tLtc":0.8}}}},"CO":{"SFR":{"0":{"row":125,"limits":null},"1-4":{"row":126,"limits":null},"5+":{"row":127,"limits":null},"10+ (5+)":{"row":128,"limits":null}},"Multi":{"0":{"row":145,"limits":null},"1-4":{"row":146,"limits":null},"5+":{"row":147,"limits":null},"10+ (5+)":{"row":148,"limits":null}}}},"loanPurposeCodes":{"Purchase":"P","Delayed Purchase":"DP","Refinance (RT)":"RT","Refinance (CO)":"CO"},"leverageAdjustments":{"fico":[{"min":650,"max":679,"adj":-0.1},{"min":680,"max":699,"adj":-0.05}],"ficoFloor":650,"sdira":-0.1,"foreignNational":-0.05,"nonPermNoFico":-0.05,"mhvRatioThreshold":2,"mhv":-0.1,"targetArea":{"exp5plus":-0.05,"other":-0.1},"targetAreasWithLtvAdj":["Baltimore, MD (+ Surrounding)","Birmingham, AL","Philadelphia, PA","Cape Coral, North Port, Lakeland (FL)"],"hpaOverlay":"off (Sizer Q19 hard-coded 0; Calc N50 = '-')"},"pricing":{"basePointsOptions":[0.005,0.0075,0.01],"defaultBasePoints":0.005,"baseRate":{"0.005":{"0":0.1099,"1-4":0.1049,"5+":0.0999,"10+ (5+)":0.0999},"0.0075":{"0":0.1074,"1-4":0.0999,"5+":0.0974,"10+ (5+)":0.0974},"0.01":{"0":0.1049,"1-4":0.0974,"5+":0.0949,"10+ (5+)":0.0949}},"adders":{"refinance":0.005,"multi":0.005,"guc":0.005,"heavy":0.0025,"sdira":0.005,"ficoBucket":{"< 650":null,"650 - 679":0.005,"680 - 699":0.0025,"700+":0,"No FICO (FN)":0.005,"Non-Perm (No FICO)":0.005},"loanAmountBuckets":[{"min":0,"max":100000,"label":"<= $100k","adder":0.0035},{"min":100000,"max":150000,"label":"<= $150k","adder":0.0025},{"min":150000,"max":250000,"label":"<= $250k","adder":0},{"min":250000,"max":325000,"label":"<= $325k","adder":-0.001},{"min":325000,"max":500000,"label":"<= $500k","adder":-0.0015},{"min":500000,"max":625000,"label":"<= $625k","adder":-0.002},{"min":625000,"max":750000,"label":"<= $750k","adder":-0.0025},{"min":750000,"max":825000,"label":"<= $825k","adder":-0.003},{"min":825000,"max":100000000,"label":"<= $100,000k","adder":-0.003}]},"termOffsets":{"9":-0.0015,"12":0.0,"18":0.005},"terms":[9,12,18]},"propertyTypes":{"Detached SFR":{"bucket":"SFR","minSqft":675},"SFR + ADU":{"bucket":"SFR","minSqft":675},"2-4 Unit Residential":{"bucket":"SFR","minSqft":0},"Condo (W)":{"bucket":"SFR","minSqft":480},"Condo (NW)":{"bucket":"SFR","minSqft":500},"Townhome":{"bucket":"SFR","minSqft":675},"PUD":{"bucket":"SFR","minSqft":675},"Multi (5-9 Unit)":{"bucket":"Multi","minSqft":0},"Multi (10+ Unit)":{"bucket":"Multi","minSqft":0},"Mixed-Use":{"bucket":"Multi","minSqft":null}},"minSqftPerUnit":{"2-4 Unit Residential":480,"Multi (5-9 Unit)":500,"Multi (10+ Unit)":500},"limits":{"minLoan":{"SFR":100000,"Multi":250000},"minValue":{"SFR":175000,"Multi":375000},"maxLoan":{"SFR":2000000,"Multi":3000000},"minValuePerUnitMulti":75000,"rateTermPayoffMultiple":1.02},"ineligibleStates":["AK","ND","SD","UT","VT","NV"],"ternusLicensingStates":["AK","AZ","CA","DC","HI","MN","ND","NV","OR","SD","UT","VT"],"citizenship":["US Citizen","Perm Resident","Non-Perm (FICO)","Non-Perm (No FICO)","Foreign National"],"gucCitizenshipNotPermitted":["Foreign National","Non-Perm (No FICO)"],"noIaRule":"Initial advance limited so the full budget is funded when exp bucket <> '5+' (Calc N38/Q30)","liquidity":{"closingPct":0.01,"monthsOfPayments":6,"rehabReservePct":0.1},"revenueRule":{"TERNUS_REV_FLOOR":0.03,"TERNUS_PTS_MIN":0.01,"TERNUS_RATE_MIN":0.005,"TERNUS_FEE":500,"GAP_TO_POINTS":0.5,"YSP_CREDIT":0.4,"description":"Ternus revenue at least 300 bps of the loan: origination markup at least 1.00%, rate markup at least 0.50%, one $500 Ternus fee (replaces processing, doc and legal fees). YSP counts 10 bps of premium per 25 bps of rate (0.40). Any shortfall is added half to origination points and half to the rate markup (rate half divided by 0.40)."},"targetAreaZips":{"21215":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21218":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21224":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21206":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21230":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21229":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21217":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21213":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21216":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21202":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21239":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21212":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21223":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21214":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21201":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21225":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21211":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21231":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21205":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21210":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21207":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21209":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21234":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21226":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21208":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21222":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21227":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21228":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21233":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21236":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21237":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21240":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21260":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21261":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21287":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21235":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21241":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21250":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21251":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21263":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21264":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21265":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21268":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21273":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21274":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21275":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21278":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21279":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21280":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21283":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21288":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21289":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21290":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21298":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21203":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21270":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21281":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21297":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21013":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21023":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21030":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21043":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21221":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21051":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21052":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21053":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21057":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21071":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21074":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21031":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21082":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21085":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21087":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21093":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21102":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21104":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21105":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21220":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21111":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21117":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21120":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21128":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21131":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21133":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21136":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21152":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21219":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21153":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21204":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21286":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21252":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21285":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21156":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21155":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21161":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21162":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21244":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21163":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"35005":{"area":"Birmingham, AL","minValue":175000},"35006":{"area":"Birmingham, AL","minValue":175000},"35020":{"area":"Birmingham, AL","minValue":175000},"35022":{"area":"Birmingham, AL","minValue":175000},"35023":{"area":"Birmingham, AL","minValue":175000},"35203":{"area":"Birmingham, AL","minValue":175000},"35204":{"area":"Birmingham, AL","minValue":175000},"35205":{"area":"Birmingham, AL","minValue":175000},"35206":{"area":"Birmingham, AL","minValue":175000},"35207":{"area":"Birmingham, AL","minValue":175000},"35208":{"area":"Birmingham, AL","minValue":175000},"35209":{"area":"Birmingham, AL","minValue":175000},"35210":{"area":"Birmingham, AL","minValue":175000},"35211":{"area":"Birmingham, AL","minValue":175000},"35212":{"area":"Birmingham, AL","minValue":175000},"35213":{"area":"Birmingham, AL","minValue":175000},"35214":{"area":"Birmingham, AL","minValue":175000},"35215":{"area":"Birmingham, AL","minValue":175000},"35216":{"area":"Birmingham, AL","minValue":175000},"35217":{"area":"Birmingham, AL","minValue":175000},"35218":{"area":"Birmingham, AL","minValue":175000},"35221":{"area":"Birmingham, AL","minValue":175000},"35222":{"area":"Birmingham, AL","minValue":175000},"35223":{"area":"Birmingham, AL","minValue":175000},"35224":{"area":"Birmingham, AL","minValue":175000},"35226":{"area":"Birmingham, AL","minValue":175000},"35228":{"area":"Birmingham, AL","minValue":175000},"35233":{"area":"Birmingham, AL","minValue":175000},"35234":{"area":"Birmingham, AL","minValue":175000},"35235":{"area":"Birmingham, AL","minValue":175000},"35242":{"area":"Birmingham, AL","minValue":175000},"35243":{"area":"Birmingham, AL","minValue":175000},"35244":{"area":"Birmingham, AL","minValue":175000},"35229":{"area":"Birmingham, AL","minValue":175000},"35249":{"area":"Birmingham, AL","minValue":175000},"35254":{"area":"Birmingham, AL","minValue":175000},"35036":{"area":"Birmingham, AL","minValue":175000},"35444":{"area":"Birmingham, AL","minValue":175000},"35060":{"area":"Birmingham, AL","minValue":175000},"35061":{"area":"Birmingham, AL","minValue":175000},"35062":{"area":"Birmingham, AL","minValue":175000},"35063":{"area":"Birmingham, AL","minValue":175000},"35064":{"area":"Birmingham, AL","minValue":175000},"35068":{"area":"Birmingham, AL","minValue":175000},"35071":{"area":"Birmingham, AL","minValue":175000},"35073":{"area":"Birmingham, AL","minValue":175000},"35079":{"area":"Birmingham, AL","minValue":175000},"35080":{"area":"Birmingham, AL","minValue":175000},"35091":{"area":"Birmingham, AL","minValue":175000},"35094":{"area":"Birmingham, AL","minValue":175000},"35111":{"area":"Birmingham, AL","minValue":175000},"35116":{"area":"Birmingham, AL","minValue":175000},"35117":{"area":"Birmingham, AL","minValue":175000},"35118":{"area":"Birmingham, AL","minValue":175000},"35119":{"area":"Birmingham, AL","minValue":175000},"35126":{"area":"Birmingham, AL","minValue":175000},"35127":{"area":"Birmingham, AL","minValue":175000},"35130":{"area":"Birmingham, AL","minValue":175000},"35146":{"area":"Birmingham, AL","minValue":175000},"35148":{"area":"Birmingham, AL","minValue":175000},"35172":{"area":"Birmingham, AL","minValue":175000},"35173":{"area":"Birmingham, AL","minValue":175000},"35180":{"area":"Birmingham, AL","minValue":175000},"35181":{"area":"Birmingham, AL","minValue":175000},"19124":{"area":"Philadelphia, PA","minValue":175000},"19111":{"area":"Philadelphia, PA","minValue":175000},"19120":{"area":"Philadelphia, PA","minValue":175000},"19143":{"area":"Philadelphia, PA","minValue":175000},"19149":{"area":"Philadelphia, PA","minValue":175000},"19134":{"area":"Philadelphia, PA","minValue":175000},"19104":{"area":"Philadelphia, PA","minValue":175000},"19148":{"area":"Philadelphia, PA","minValue":175000},"19140":{"area":"Philadelphia, PA","minValue":175000},"19145":{"area":"Philadelphia, PA","minValue":175000},"19144":{"area":"Philadelphia, PA","minValue":175000},"19131":{"area":"Philadelphia, PA","minValue":175000},"19139":{"area":"Philadelphia, PA","minValue":175000},"19121":{"area":"Philadelphia, PA","minValue":175000},"19146":{"area":"Philadelphia, PA","minValue":175000},"19147":{"area":"Philadelphia, PA","minValue":175000},"19136":{"area":"Philadelphia, PA","minValue":175000},"19128":{"area":"Philadelphia, PA","minValue":175000},"19115":{"area":"Philadelphia, PA","minValue":175000},"19116":{"area":"Philadelphia, PA","minValue":175000},"19135":{"area":"Philadelphia, PA","minValue":175000},"19152":{"area":"Philadelphia, PA","minValue":175000},"19154":{"area":"Philadelphia, PA","minValue":175000},"19132":{"area":"Philadelphia, PA","minValue":175000},"19114":{"area":"Philadelphia, PA","minValue":175000},"19130":{"area":"Philadelphia, PA","minValue":175000},"19138":{"area":"Philadelphia, PA","minValue":175000},"19141":{"area":"Philadelphia, PA","minValue":175000},"19151":{"area":"Philadelphia, PA","minValue":175000},"19103":{"area":"Philadelphia, PA","minValue":175000},"19142":{"area":"Philadelphia, PA","minValue":175000},"19119":{"area":"Philadelphia, PA","minValue":175000},"19122":{"area":"Philadelphia, PA","minValue":175000},"19125":{"area":"Philadelphia, PA","minValue":175000},"19133":{"area":"Philadelphia, PA","minValue":175000},"19150":{"area":"Philadelphia, PA","minValue":175000},"19123":{"area":"Philadelphia, PA","minValue":175000},"19107":{"area":"Philadelphia, PA","minValue":175000},"19126":{"area":"Philadelphia, PA","minValue":175000},"19106":{"area":"Philadelphia, PA","minValue":175000},"19129":{"area":"Philadelphia, PA","minValue":175000},"19153":{"area":"Philadelphia, PA","minValue":175000},"19118":{"area":"Philadelphia, PA","minValue":175000},"19102":{"area":"Philadelphia, PA","minValue":175000},"19137":{"area":"Philadelphia, PA","minValue":175000},"19127":{"area":"Philadelphia, PA","minValue":175000},"19109":{"area":"Philadelphia, PA","minValue":175000},"19110":{"area":"Philadelphia, PA","minValue":175000},"19112":{"area":"Philadelphia, PA","minValue":175000},"19113":{"area":"Philadelphia, PA","minValue":175000},"19092":{"area":"Philadelphia, PA","minValue":175000},"19093":{"area":"Philadelphia, PA","minValue":175000},"19099":{"area":"Philadelphia, PA","minValue":175000},"19161":{"area":"Philadelphia, PA","minValue":175000},"19162":{"area":"Philadelphia, PA","minValue":175000},"19170":{"area":"Philadelphia, PA","minValue":175000},"19171":{"area":"Philadelphia, PA","minValue":175000},"19172":{"area":"Philadelphia, PA","minValue":175000},"19173":{"area":"Philadelphia, PA","minValue":175000},"19175":{"area":"Philadelphia, PA","minValue":175000},"19177":{"area":"Philadelphia, PA","minValue":175000},"19178":{"area":"Philadelphia, PA","minValue":175000},"19179":{"area":"Philadelphia, PA","minValue":175000},"19181":{"area":"Philadelphia, PA","minValue":175000},"19182":{"area":"Philadelphia, PA","minValue":175000},"19183":{"area":"Philadelphia, PA","minValue":175000},"19184":{"area":"Philadelphia, PA","minValue":175000},"19185":{"area":"Philadelphia, PA","minValue":175000},"19187":{"area":"Philadelphia, PA","minValue":175000},"19188":{"area":"Philadelphia, PA","minValue":175000},"19190":{"area":"Philadelphia, PA","minValue":175000},"19191":{"area":"Philadelphia, PA","minValue":175000},"19192":{"area":"Philadelphia, PA","minValue":175000},"19193":{"area":"Philadelphia, PA","minValue":175000},"19194":{"area":"Philadelphia, PA","minValue":175000},"19195":{"area":"Philadelphia, PA","minValue":175000},"19196":{"area":"Philadelphia, PA","minValue":175000},"19197":{"area":"Philadelphia, PA","minValue":175000},"19244":{"area":"Philadelphia, PA","minValue":175000},"19255":{"area":"Philadelphia, PA","minValue":175000},"19019":{"area":"Philadelphia, PA","minValue":175000},"19101":{"area":"Philadelphia, PA","minValue":175000},"19105":{"area":"Philadelphia, PA","minValue":175000},"19108":{"area":"Philadelphia, PA","minValue":175000},"19155":{"area":"Philadelphia, PA","minValue":175000},"19160":{"area":"Philadelphia, PA","minValue":175000},"19176":{"area":"Philadelphia, PA","minValue":175000},"21001":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21005":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21009":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21014":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21015":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21017":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21028":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21034":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21040":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21047":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21050":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21010":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21078":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21084":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21130":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21132":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21154":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21160":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21048":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21757":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21771":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21776":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21784":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21787":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21791":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21157":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21158":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21797":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20701":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20833":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21029":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21044":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21045":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21046":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21723":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21036":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21075":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21042":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20759":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21737":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21738":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21076":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20777":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20794":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20723":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20763":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21794":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21401":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21402":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21403":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21405":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21409":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21012":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20733":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21114":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21032":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21035":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20751":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20754":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21037":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20755":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20758":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20765":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21054":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21056":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21060":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21061":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21077":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20776":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20724":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21090":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20711":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21108":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20714":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21113":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20736":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21122":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21140":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21144":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"21146":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20764":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20779":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"20778":{"area":"Baltimore, MD (+ Surrounding)","minValue":175000},"33904":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33909":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33910":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33914":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33915":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33990":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33991":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33993":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"34292":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"34291":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"34286":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"34266":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"34289":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"34293":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"34287":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"34288":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"34290":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"34223":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33801":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33802":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33803":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33804":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33805":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33806":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33807":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33808":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33809":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33810":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33811":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33812":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33813":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33814":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000},"33815":{"area":"Cape Coral, North Port, Lakeland (FL)","minValue":175000}},"zipShards":{"prefix":"gz","files":100,"zips":26326,"withMhv":26297,"format":"base64(JSON {zip5: [medianHomeValue or null]}), one file per 2-digit zip prefix 00-99"}}};
/*!
 * Ternus Flip Loan Sizer engine - QuickTern + Bridge (Ternus Underwriting Guidelines v2.0) + Elite (flip-v2.0)
 * QuickTern purchase/refinance and Bridge purchase/refinance per Ternus Underwriting Guidelines v2.0, effective 2026-10-19
 * (rules and citations: v2-delta-spec.md). Elite is carried over unchanged from flip-v7 (Elite rate sheet 9.24.26 plus the
 * Ternus revenue rule); v2.0 does not govern Elite.
 * Pure functions, no DOM. Works in the browser (window.TernusFlipEngine) and in Node (require).
 * Every quote is an estimate for discussion purposes only - subject to verification, underwriting, valuation and
 * final approval. Nothing returned here is an approval or a commitment to lend.
 * Confidential - Ternus internal pricing logic.
 */
(function (root, factory) {
  if (typeof module === 'object' && module.exports) { module.exports = factory(); }
  else { root.TernusFlipEngine = factory(); }
})(typeof self !== 'undefined' ? self : this, function () {
  'use strict';

  var VERSION = 'flip-v2.0';
  var TABLES = null;
  var BIG = Infinity;

  function setTables(t) { TABLES = t; return api; }
  function tbl(t) { var x = t || TABLES; if (!x) { throw new Error('flip-engine: tables not loaded (call setTables)'); } return x; }
  function num(v, dflt) { var n = (v === null || v === undefined || v === '') ? NaN : Number(v); return isFinite(n) ? n : dflt; }
  function bool(v, dflt) {
    if (v === undefined || v === null || v === '') { return dflt; }
    if (typeof v === 'string') { return /^(y|yes|true|1)$/i.test(v.trim()); }
    return !!v;
  }
  function flipsInt(v) { if (typeof v === 'string' && /\+/.test(v)) { return 10; } return Math.max(0, Math.floor(num(v, 0))); }

  /* ---------- inputs ----------
   * purchasePrice, rehab, arv (required). Optional (defaults in brackets):
   * asIsValue [= purchasePrice], hardCosts [= 90% of rehab], propType ['SFR' | '2-4_FAMILY' | 'TOWNHOME' | 'CONDO'],
   * sqft [not tested when omitted], units [1], state, city, county, zip, zipInfo {mhv, qtBlocked, state} (from a shard),
   * zipMhv [zipInfo.mhv or 0], targetMarket [tables.marketAreas[zip] or 'None'],
   * fico, flips (0-9 or '10+'), citizenship ['US Citizen' | 'Perm Resident' | 'Foreign National'],
   * shareholder [false], guarantors [2], entities [1], channel ['Retail' | 'TPO'], brokerPts [0], brokerPayer ['Ternus' | 'Borrower'],
   * insurancePremium [0] (12-month hazard + flood), otherClosingCosts [0] (title, settlement, recording, prorations - QuickTern
   * component 2 only), requestedLoan [0], amcAppraisal, personalTwoProjects, feasibility [false],
   * typeChange, expansion20, structural [false], sqftAdded [0], weathertight [true], marketDeclining [false],
   * holdMonths [9], holdCap [12], sellPct [0.06], concPct [0], monthlyCarry [500], closingPct [0.01, Elite], closingOverride [0, Elite]
   */
  function norm(inp, T) {
    inp = inp || {};
    var zi = inp.zipInfo || {};
    var zip = inp.zip === undefined || inp.zip === null ? '' : String(inp.zip);
    if (/^\d{1,5}$/.test(zip)) { zip = ('00000' + zip).slice(-5); }
    var pp = num(inp.purchasePrice, 0), rehab = num(inp.rehab, 0);
    var aiv = num(inp.asIsValue, 0); if (!(aiv > 0)) { aiv = pp; }
    var hard = num(inp.hardCosts, 0); if (!(hard > 0)) { hard = 0.9 * rehab; }
    var tm = inp.targetMarket;
    if (tm === undefined || tm === null || tm === '') { tm = (T.marketAreas && T.marketAreas[zip]) || 'None'; }
    var holdCap = num(inp.holdCap, T.shared.holdMaxMonths);
    return {
      pp: pp, rehab: rehab, arv: num(inp.arv, 0), aiv: aiv, hard: hard,
      propType: inp.propType || 'SFR', sqft: (inp.sqft === undefined || inp.sqft === null || inp.sqft === '') ? null : num(inp.sqft, null),
      units: Math.max(1, Math.floor(num(inp.units, 1))),
      state: String(inp.state || zi.state || '').toUpperCase().trim(), city: String(inp.city || '').toUpperCase().trim(),
      county: String(inp.county || '').toUpperCase(), zip: zip, qtBlockedZip: !!zi.qtBlocked,
      mhv: num(inp.zipMhv, num(zi.mhv, 0)), targetMarket: tm,
      fico: num(inp.fico, 0), flips: flipsInt(inp.flips), citizenship: inp.citizenship || 'US Citizen',
      shareholder: bool(inp.shareholder, false), guarantors: num(inp.guarantors, 2), entities: num(inp.entities, 1),
      channel: inp.channel === 'TPO' ? 'TPO' : 'Retail', brokerPts: num(inp.brokerPts, 0),
      brokerPayer: inp.brokerPayer === 'Borrower' ? 'Borrower' : 'Ternus',
      ins: num(inp.insurancePremium, 0), otherClosing: num(inp.otherClosingCosts, 0),
      requested: num(inp.requestedLoan, 0), amc: bool(inp.amcAppraisal, false),
      personal2: bool(inp.personalTwoProjects, false), feas: bool(inp.feasibility, false),
      typeChange: bool(inp.typeChange, false), expansion20: bool(inp.expansion20, false), structural: bool(inp.structural, false),
      sqftAdded: num(inp.sqftAdded, 0), weathertight: bool(inp.weathertight, true), declining: bool(inp.marketDeclining, false),
      hold: Math.min(num(inp.holdMonths, 9), holdCap), sell: num(inp.sellPct, 0.06), conc: num(inp.concPct, 0),
      carry: num(inp.monthlyCarry, 500), closingPct: num(inp.closingPct, 0.01), closingOverride: num(inp.closingOverride, 0)
    };
  }

  function inList(list, v) { for (var i = 0; i < list.length; i++) { if (list[i] === v) { return true; } } return false; }
  function finiteOrNull(x) { return isFinite(x) ? x : null; }

  /* ======================= QuickTern + Bridge (Guidelines v2.0) =======================
   * Inputs (v2-delta-spec.md Part B2). Defaults in brackets.
   * purpose ['purchase' | 'refinance' ('refi', 'cashout' accepted)]
   * purchase: purchasePrice (contract price incl. any assignment fee)
   * refinance: acquisitionCost, rehabToDate (documented), ownedMonths (to expected funding) or ownedOver12, inherited [false],
   *   payoff [0] (every existing lien)
   * rehab (approved renovation budget incl. the funded contingency line; refi = remaining work; ignored on Bridge),
   * contingency [0] (part of rehab that is the contingency line), arv (ignored on Bridge: ARV = As-Is), asIsValue
   * [purchase price on a purchase], countyMedian (Realtor.com county median listing price) [zipInfo.countyMedian],
   * countyPopulation [zipInfo.countyPop], fico (anchor mid score), flips, usAnchor [citizenship !== 'Foreign National'],
   * channel ['Retail' | 'TPO'], shareholder [false], peopleScreened (alias guarantors) [2], entities [1], brokerPts [0],
   * brokerPayer ['Ternus' | 'Borrower'], insurancePremium [0] (12 months, every required policy), otherClosingCosts [0]
   * (title, settlement, recording, prorated taxes), propertyTaxes6mo [0], fundingWires [1], outOfPocketRehab [0],
   * assignmentFee [0], abPrice [purchase price - assignment fee], sellerCredits [0], requestedLoan [0], amcAppraisal [false],
   * budgetReview (alias feasibility) [false], structural, sqftAdded, addedUnit, typeChange, downToStuds, openCodeCase, c6,
   * construction, stabilized [true], marketDeclining, rural, rescueFinancing, state, city, county, zip, zipInfo, propType,
   * units, sqft, holdMonths [9], sellPct [0.06], concPct [0], monthlyCarry [500]
   */
  var QT_TEXT = {
    STATE: 'Ineligible state (guide \xa710.1).',
    CITY_COUNTY: 'Ineligible city/county \u2014 Baltimore City, Baltimore County, Philadelphia (guide \xa710.1).',
    COUNTY_POP: 'County population below 100,000 (guide \xa710.1).',
    CONDO: 'Condo/condominium regime ineligible (guide \xa710.3).',
    UNITS: 'Five or more units ineligible (guide \xa710.2).',
    SQFT: 'SFR/TH <800 sqft (guide \xa710.2).',
    SQFT_UNIT: '2-4 family <500 sqft/unit (guide \xa710.2).',
    NO_ANCHOR: 'No US-person anchor: a US citizen or permanent resident with a credit score who owns 20% or more and guarantees is required (guide \xa74.1).',
    FICO_FLOOR: 'FICO below 620 floor (guide \xa74.3).',
    FICO_660: 'FICO below 660 \u2014 Heavy Rehab (guide \xa74.5/\xa77.2).',
    REHAB_MIN: 'Renovation under $10,000 before contingency \u2014 this is a Bridge file (guide \xa713.1/\xa719).',
    REHAB_MAX: 'Renovation budget exceeds $400,000 (guide \xa713.1).',
    MARKET_DECLINING: 'Valuation report marks the market declining or rural (guide \xa75.2/\xa79.1).',
    RESCUE: 'Rescue financing \u2014 pays off or cures a defaulted loan on the property (guide \xa75.1).',
    REFI_BASIS: 'Refinance cost basis missing \u2014 enter the acquisition cost (guide \xa73.6).',
    SIZING_EXHAUSTED: 'Sizing exhaustion \u2014 cuts leave no initial advance (guide \xa73.1).',
    LOAN_MIN: 'Loan below $50,000 minimum (guide \xa76).',
    RETURN_TEST: 'Return test: largest loan that clears 10% is below $50,000 or at/below the holdback (guide \xa73.1/\xa73.2).',
    BROKER_CAP: 'Broker compensation exceeds the 2.0-point cap (guide \xa714.5).'
  };

  function qtTier(flips) { return flips <= 3 ? '0-3' : (flips <= 9 ? '4-9' : '10+'); }
  function r6(x) { return Math.round(x * 1e6) / 1e6; }
  function given(v) { return !(v === undefined || v === null || v === ''); }
  function pick(inp, a, b) { return given(inp[a]) ? inp[a] : inp[b]; }

  function normV2(inp, T, isBridge) {
    inp = inp || {};
    var Q = T.quicktern, zi = inp.zipInfo || {};
    var zip = inp.zip === undefined || inp.zip === null ? '' : String(inp.zip);
    if (/^\d{1,5}$/.test(zip)) { zip = ('00000' + zip).slice(-5); }
    var p = String(inp.purpose || 'purchase').toLowerCase().trim();
    var refi = p === 'refinance' || p === 'refi' || p === 'cashout';
    var pp = refi ? 0 : num(inp.purchasePrice, 0);
    var acq = num(inp.acquisitionCost, 0), rtd = num(inp.rehabToDate, 0);
    var inherited = refi && bool(inp.inherited, false);
    var ownedOver12 = refi && (given(inp.ownedOver12) ? bool(inp.ownedOver12, false) : num(inp.ownedMonths, 0) > 12);
    var asIsIn = num(inp.asIsValue, 0), warn = [];
    var asIs = asIsIn > 0 ? asIsIn : 0;
    var costBasis = refi ? (inherited ? asIs : acq + rtd) : pp;
    if (!(asIs > 0)) {
      asIs = refi ? costBasis : pp;
      if (refi) { warn.push('As-Is Value not provided - the cost basis was used in its place; the valuation sets the binding As-Is Value.'); }
      if (inherited) { costBasis = asIs; }
    }
    var test1Basis = refi && (inherited || ownedOver12) ? asIs : costBasis;
    var rehab = isBridge ? 0 : Math.max(num(inp.rehab, 0), 0);
    var cont = isBridge ? 0 : Math.max(num(inp.contingency, 0), 0);
    var assign = num(inp.assignmentFee, 0);
    var ab = num(inp.abPrice, 0); if (!(ab > 0)) { ab = pp - assign; }
    var cit = inp.citizenship || 'US Citizen';
    return {
      refi: refi, purpose: refi ? 'refinance' : 'purchase', pp: pp, acq: acq, rtd: rtd, inherited: inherited, ownedOver12: ownedOver12,
      payoff: refi ? Math.max(num(inp.payoff, 0), 0) : 0, asIs: asIs, costBasis: costBasis, test1Basis: test1Basis,
      rehabIn: num(inp.rehab, 0), rehab: rehab, cont: cont, scope: rehab - cont,
      arv: isBridge ? asIs : num(inp.arv, 0),
      countyMedian: num(inp.countyMedian, num(zi.countyMedian, 0)), countyPop: num(inp.countyPopulation, num(zi.countyPop, 0)),
      countyFips: String(given(inp.countyFips) ? inp.countyFips : (zi.countyFips || '')), zipFound: !!zi.found,
      fico: num(inp.fico, 0), flips: flipsInt(inp.flips),
      usAnchor: given(inp.usAnchor) ? bool(inp.usAnchor, true) : cit !== 'Foreign National',
      channel: inp.channel === 'TPO' ? 'TPO' : 'Retail', shareholder: bool(inp.shareholder, false),
      people: num(pick(inp, 'peopleScreened', 'guarantors'), 2), entities: num(inp.entities, 1),
      brokerPts: num(inp.brokerPts, 0), brokerPayer: inp.brokerPayer === 'Borrower' ? 'Borrower' : 'Ternus',
      ins: num(inp.insurancePremium, 0), oc: num(inp.otherClosingCosts, 0),
      tax6: given(inp.propertyTaxes6mo) ? num(inp.propertyTaxes6mo, 0) : Q.defaultTax6moPctOfAsIs * asIs, taxDefaulted: !given(inp.propertyTaxes6mo),
      wires: Math.max(1, Math.floor(num(inp.fundingWires, 1))), oop: isBridge ? 0 : Math.max(num(inp.outOfPocketRehab, 0), 0),
      excess: refi ? 0 : Math.max(0, assign - Q.assignmentFeeCapPct * ab) + Math.max(0, num(inp.sellerCredits, 0) - Q.sellerCreditCapPct * ab),
      requested: num(inp.requestedLoan, 0), amc: bool(inp.amcAppraisal, false), review: bool(pick(inp, 'budgetReview', 'feasibility'), false),
      structural: bool(inp.structural, false), sqftAdded: num(inp.sqftAdded, 0), addedUnit: bool(inp.addedUnit, false),
      typeChange: bool(inp.typeChange, false), studs: bool(inp.downToStuds, false), codeCase: bool(inp.openCodeCase, false),
      c6: bool(inp.c6, false), construction: bool(inp.construction, false), stabilized: bool(inp.stabilized, true),
      declining: bool(inp.marketDeclining, false) || bool(inp.rural, false), rescue: bool(inp.rescueFinancing, false),
      state: String(inp.state || zi.state || '').toUpperCase().trim(), city: String(inp.city || '').toUpperCase().trim(),
      county: String(inp.county || '').toUpperCase(), zip: zip, qtBlockedZip: !!zi.qtBlocked,
      propType: inp.propType || 'SFR', units: Math.max(1, Math.floor(num(inp.units, 1))),
      sqft: given(inp.sqft) ? num(inp.sqft, null) : null,
      hold: Math.min(num(inp.holdMonths, 9), num(inp.holdCap, T.shared.holdMaxMonths)), sell: num(inp.sellPct, 0.06),
      conc: num(inp.concPct, 0), carry: num(inp.monthlyCarry, 500), warn: warn
    };
  }

  /* \xa714.1 rate and points at a loan amount, and the \xa714.2 processing fee */
  function priceAt(L, d, T, isBridge) {
    var Q = T.quicktern, A = Q.adjust, F = Q.fees, g = Q.pricing[qtTier(d.flips)];
    var rate = g[0], pts = g[1];
    if (isBridge) { rate += T.bridge.rateAdd; pts += T.bridge.ptsAdd; }
    if (L < A.smallLoan) { rate += A.smallRateAdd; }
    if (L > A.bigLoan) { rate = Math.max(rate - A.bigRateCut, A.rateFloor); pts = Math.max(pts - A.bigPtsCut, A.ptsFloor); }
    var proc = (isBridge || L < A.smallLoan) ? F.procSmallOrBridge : (d.channel === 'TPO' ? F.procTpo : F.procRetail);
    if (d.shareholder) { proc = proc * F.shareholderFactor; }
    return { rate: r6(rate), points: r6(pts), proc: proc };
  }
  function bkPts(d) { return d.brokerPayer === 'Borrower' ? d.brokerPts : 0; }
  function docsWire(d, T) { return T.quicktern.fees.docPrep + T.quicktern.fees.wire * d.wires; }
  /* \xa72 Loan Cost / \xa73.2 */
  function loanCostAt(L, pr, d, T) {
    var Q = T.quicktern;
    return L + pr.points * L + pr.proc + docsWire(d, T) + Math.max(d.oc, Q.closingFloorPct * L) +
      pr.rate * L * Q.interestMonths / 12 + d.ins + d.tax6 + Q.saleCostPct * d.arv + bkPts(d) * L;
  }
  /* \xa73.2 L = (ARV / 1.10 - F - S) / (1 + k); exact with the 1% closing floor: min of the two linear pieces */
  function solveReturn(pr, d, T) {
    var Q = T.quicktern;
    var k0 = pr.points + pr.rate * Q.interestMonths / 12 + bkPts(d);
    var F0 = pr.proc + docsWire(d, T) + d.ins + d.tax6;
    var A = d.arv / (1 + Q.returnMin) - F0 - Q.saleCostPct * d.arv;
    return { L: Math.min((A - d.oc) / (1 + k0), A / (1 + k0 + Q.closingFloorPct)), k: k0 };
  }
  /* largest loan <= S that clears the return test, re-pricing across the $100,000 and $500,000 lines (\xa714.1) */
  var REGIONS = [{ rep: 0, hi: 99999.99 }, { rep: 100000, lo: 100000, hi: 500000 }, { rep: 500001, lo: 500000, hi: BIG }];
  function finalLoan(S, d, T, isBridge, onlyC) {
    var i = S < 100000 ? 0 : (S <= 500000 ? 1 : 2), cap = S;
    for (; i >= 0; i--) {
      var pr = priceAt(REGIONS[i].rep, d, T, isBridge), sv = solveReturn(pr, d, T);
      var cand = Math.min(cap, REGIONS[i].hi, sv.L);
      var inRegion = i === 0 || (i === 1 && cand >= 100000) || (i === 2 && cand > 500000);
      if (inRegion) { return { loan: cand, pr: pr, solved: sv.L, k: sv.k }; }
      if (onlyC) { return null; }
      cap = REGIONS[i - 1].hi;
    }
    return null;
  }
  /* \xa73.1 steps 1-5 */
  function sizeLoan(d, T, bandPct, maxLoan, H) {
    var Q = T.quicktern;
    var t1 = d.test1Basis * (bandPct - d.cut), built = t1 + H;
    var arvCap = Q.arvPct * d.arv, asIsCap = Q.asIsPct * d.asIs;
    var loan = Math.min(built, arvCap);
    var initial = Math.min(loan - H, asIsCap);
    loan = Math.min(initial + H, maxLoan);
    initial = loan - H - d.excess;
    return { t1: t1, built: built, arvCap: arvCap, asIsCap: asIsCap, S: initial + H, initial: initial, maxLoan: maxLoan, band: bandPct };
  }

  function priceFlipV2(inputs, tables, isBridge) {
    var T = tbl(tables), Q = T.quicktern, d = normV2(inputs, T, isBridge);
    var reasons = [], warnings = d.warn.slice(), i;
    var TXT = QT_TEXT;
    function ko(code) { reasons.push({ code: code, text: TXT[code] }); }
    var product = isBridge ? 'Bridge' : 'QuickTern';
    var tier = qtTier(d.flips);

    var band = 0;
    for (i = 0; i < Q.bands.length; i++) { if (d.fico >= Q.bands[i][0]) { band = Q.bands[i][1]; break; } }
    var heavy = !isBridge && ((d.costBasis > 0 && d.scope >= d.costBasis) || d.structural || d.sqftAdded > 0 || d.addedUnit ||
      d.typeChange || d.studs || d.codeCase || d.c6);                                                    /* \xa77.1, \xa73.6 */
    var ratio = d.countyMedian > 0 ? d.arv / d.countyMedian : 0;                                          /* \xa74.5 */
    d.cut = 0;
    if (d.countyMedian > 0) { for (i = 0; i < Q.medianCuts.length; i++) { if (ratio > Q.medianCuts[i][0]) { d.cut = Q.medianCuts[i][1]; break; } } }

    var S35 = Q.sec35, H = d.rehab;
    var requestedOver = d.requested > S35.threshold;
    var sec35Ok = requestedOver && d.fico >= S35.minFico && d.amc && (isBridge || d.review);            /* \xa73.5, \xa719 */
    var path = null, sz, fl;
    if (sec35Ok) {
      sz = sizeLoan(d, T, S35.band, S35.maxLoan, H);
      if (sz.S > S35.threshold) { fl = finalLoan(sz.S, d, T, isBridge, true); if (fl) { path = { sz: sz, fl: fl, sec35: true }; } }
    }
    if (!path) {
      sz = sizeLoan(d, T, band, Q.maxLoan, H);
      path = { sz: sz, fl: finalLoan(sz.S, d, T, isBridge, false), sec35: false };
    }
    sz = path.sz; fl = path.fl;
    var loan = fl.loan, pr = fl.pr, rate = pr.rate, pts = pr.points;
    var initial = loan - H;
    var exhausted = sz.initial <= 0, belowMin = sz.S < Q.minLoan, cutByReturn = loan < sz.S - 1e-6;

    /* knockouts */
    if (!d.state) { warnings.push('State not provided - licensing eligibility not checked.'); }
    else if (inList(T.shared.ineligibleStates, d.state)) { ko('STATE'); }
    var ctext = (Q.blockedCountyText || '').toUpperCase();
    if (d.qtBlockedZip || (d.countyFips && inList(Q.blockedCountyFips, d.countyFips)) || (d.city && inList(Q.blockedCityState, d.city + '|' + d.state)) ||
        (ctext && d.county.indexOf(ctext) >= 0)) { ko('CITY_COUNTY'); }
    if (d.countyPop > 0) { if (d.countyPop < Q.countyPopMin) { ko('COUNTY_POP'); } }
    else { warnings.push('County population not available - the 100,000 minimum was not checked; your Account Executive will confirm.'); }
    if (d.propType === 'CONDO') { ko('CONDO'); }
    if (d.units > Q.maxUnits) { ko('UNITS'); }
    if (d.sqft === null) { warnings.push('Square footage not provided - minimum-size rule not checked.'); }
    else {
      if ((d.propType === 'SFR' || d.propType === 'TOWNHOME') && d.sqft < Q.sqftMinSfrTownhome) { ko('SQFT'); }
      if (d.propType === '2-4_FAMILY' && d.sqft / Math.max(d.units, 1) < Q.sqftMinPerUnit24) { ko('SQFT_UNIT'); }
    }
    if (!d.usAnchor) { ko('NO_ANCHOR'); }
    if (d.fico < Q.ficoFloor) { ko('FICO_FLOOR'); }
    if (heavy && d.fico < Q.heavyFicoFloor) { ko('FICO_660'); }
    if (!isBridge && d.scope < Q.minScope) { ko('REHAB_MIN'); }
    if (!isBridge && d.rehab > Q.maxRehab) { ko('REHAB_MAX'); }
    if (d.declining) { ko('MARKET_DECLINING'); }
    if (d.rescue) { ko('RESCUE'); }
    if (d.refi && !d.inherited && !d.ownedOver12 && !(d.acq > 0)) { ko('REFI_BASIS'); }
    if (exhausted) { ko('SIZING_EXHAUSTED'); }
    if (belowMin) { ko('LOAN_MIN'); }
    if (!exhausted && !belowMin && cutByReturn && (loan < Q.minLoan || loan <= H)) { ko('RETURN_TEST'); }
    if (d.brokerPts > Q.brokerCapPts + 1e-12) { ko('BROKER_CAP'); }

    /* cash (\xa712.1, \xa712.5, \xa73.6, \xa719) */
    var F = Q.fees, bk = bkPts(d), docs = docsWire(d, T);
    var pointsCost = pts * loan, brokerCost = bk * loan;
    var c1 = d.refi ? Math.max(d.payoff - initial, 0) : Math.max(d.pp - initial, 0);
    var c2 = Math.max(Q.closingFloorPct * loan, pointsCost + pr.proc + docs + brokerCost + d.ins + d.oc);
    var c3 = d.oop, c4 = rate * loan * Q.interestMonths / 12, c5 = Q.renovationReservePct * d.rehab;
    var refiOut = { proceedsAbovePayoff: 0, heldClosing: 0, heldEscrow: 0, reserveRequired: false, reserveFromProceeds: 0, reserveShortfall: 0, cashToBorrower: 0 };
    var ctc, liq;
    if (d.refi) {
      var P = Math.max(initial - d.payoff, 0);
      refiOut.proceedsAbovePayoff = P;
      refiOut.heldClosing = Math.min(P, c2); P -= refiOut.heldClosing;
      refiOut.heldEscrow = Math.min(P, c3 + c5); P -= refiOut.heldEscrow;
      if (P > 0) {
        refiOut.reserveRequired = true;
        refiOut.reserveFromProceeds = Math.min(P, c4); refiOut.reserveShortfall = c4 - refiOut.reserveFromProceeds; P -= refiOut.reserveFromProceeds;
      }
      refiOut.cashToBorrower = P;
      ctc = c1 + (c2 - refiOut.heldClosing) + refiOut.reserveShortfall;
      liq = c1 + (c2 - refiOut.heldClosing) + (c3 + c5 - refiOut.heldEscrow) + (refiOut.reserveRequired ? refiOut.reserveShortfall : c4);
    } else {
      ctc = c1 + c2;
      liq = c1 + c2 + c3 + c4 + c5;
    }
    var app = (d.shareholder ? 0 : F.application) + Math.max(d.people - 2, 0) * F.perPersonPastTwo + Math.max(d.entities - 1, 0) * F.perEntityPastOne;
    var lc = loanCostAt(loan, pr, d, T);
    var ratioRT = lc ? (d.arv - lc) / lc : 0;

    /* review items and notes */
    if (requestedOver && !sec35Ok) {
      var miss = [];
      if (d.fico < S35.minFico) { miss.push('FICO below 660'); }
      if (!d.amc) { miss.push('no borrower-paid AMC appraisal'); }
      if (!isBridge && !d.review) { miss.push('no CFSI report or Richer Values on-site budget review'); }
      warnings.push('Requested above $500,000 but a Section 3.5 requirement is not met (' + miss.join('; ') + ') - sized as a normal loan at no more than $500,000.');
    }
    if (!(d.countyMedian > 0)) { warnings.push('County unknown or county median listing price not available - the county median band cut (5 to 15 points where ARV is over 1.5x the median) was not tested; your Account Executive will confirm.'); }
    else if (d.cut > 0) { warnings.push('ARV is ' + ratio.toFixed(2) + 'x the county median listing price - the purchase band is cut ' + Math.round(d.cut * 100) + ' points.'); }
    if (heavy) { warnings.push('Heavy Rehab: 660 minimum score, Builder\'s Risk for the budget, and a funded contingency line of at least 10% of the scope.'); }
    if (!isBridge && d.rehab > 0) {
      var cr = heavy ? Q.contingency.heavy : Q.contingency.standard, sc = Math.max(d.scope, 0);
      var cmin = Math.round(cr[0] * sc), cmax = Math.round(cr[1] * sc);
      if (d.cont < cmin || d.cont > cmax) { warnings.push('The approved budget carries a funded contingency line of $' + cmin.toLocaleString('en-US') + ' to $' + cmax.toLocaleString('en-US') + ' (' + (cr[0] * 100) + '%-' + (cr[1] * 100) + '% of scope); the quote uses the budget as entered.'); }
    }
    if (d.construction) { warnings.push('Construction (ground-up, or missing foundation, walls or roof) is an underwriting review item.'); }
    if (isBridge && !d.stabilized) { warnings.push('Bridge property not stabilized - underwriting review item.'); }
    if (isBridge && d.rehabIn > 0) { warnings.push('Bridge funds no renovation - the renovation budget entered was not financed.'); }
    if (d.excess > 0) { warnings.push('Assignment fee above 20% or seller credits above 3% of the A-B price came off the initial advance.'); }
    if (cutByReturn && reasons.length === 0) { warnings.push('Return test reduced the loan to the largest amount that clears 10%.'); }
    if (d.taxDefaulted) { warnings.push('Property taxes estimated at 0.6% of As-Is Value for six months.'); }
    var countyUnknown = !(d.countyMedian > 0) || !(d.countyPop > 0);
    var routeTo = (!isBridge && reasons.length === 1 && reasons[0].code === 'REHAB_MIN') ? 'Bridge' : null;

    /* borrower economics (the borrower's own assumptions; informational) */
    var interestCarry = rate / 12 * loan * d.hold, otherCarry = d.carry * d.hold;
    var upfront = pointsCost + pr.proc + docs + Math.max(d.oc, Q.closingFloorPct * loan) + brokerCost;
    var netProceeds = d.arv - d.arv * (d.sell + d.conc);
    var basisCost = d.refi ? d.costBasis : d.pp;
    var profit = netProceeds - (basisCost + d.rehab + interestCarry + otherCarry + upfront + d.ins);
    var equity = ctc + c3 + interestCarry + otherCarry;

    var sec35Status = !requestedOver ? 'Standard file (request at or below $500,000): $500,000 maximum applies.'
      : (path.sec35 ? 'Section 3.5 file: 85% band less any county median cut; $1,000,000 maximum; above-$500,000 pricing.'
        : (sec35Ok ? 'Section 3.5 requirements met but the file sizes at $500,000 or less - sized again as a normal loan at its own band.'
          : 'Requested above $500,000 but a Section 3.5 requirement is not met - sized as a normal loan at no more than $500,000.'));

    return {
      product: product, engine: VERSION, purpose: d.purpose, eligible: reasons.length === 0,
      reasons: reasons, reasonText: reasons.map(function (r) { return r.text + ' '; }).join(''),
      warnings: warnings,
      rate: rate, points: pts, tier: tier, ficoBandFloor: band ? Q.bands.filter(function (b) { return b[1] === band; })[0][0] : null,
      bandPct: path.sec35 ? S35.band : band, medianCut: d.cut,
      loan: loan, initialAdvance: initial, rehabEscrow: H,
      payment: rate / 12 * loan,                                  /* interest-only on the full note from day one (\xa76) */
      fees: { processing: pr.proc, application: app, pointsCost: pointsCost, docPrep: F.docPrep, wire: F.wire * d.wires,
              closingEstimate: Math.max(d.oc, Q.closingFloorPct * loan), brokerComp: brokerCost, insurance: d.ins,
              drawFeePerDraw: isBridge ? 0 : F.drawFee },
      downPayment: c1, cashToClose: ctc,
      proofOfCapital: liq, liquidityRequired: liq,
      cashComponents: { downPayment: c1, closingCosts: c2, outOfPocketRehab: c3, sixMonthsInterest: c4, renovationReserve: c5,
                        reserveAndContingency: c5, total: c1 + c2 + c3 + c4 + c5 },
      refi: d.refi ? { costBasis: d.costBasis, test1Basis: d.test1Basis, inherited: d.inherited, ownedOver12: d.ownedOver12, payoff: d.payoff,
                       proceedsAbovePayoff: refiOut.proceedsAbovePayoff, heldForClosingCosts: refiOut.heldClosing, heldForEscrow: refiOut.heldEscrow,
                       interestReserveRequired: refiOut.reserveRequired, interestReserve: refiOut.reserveRequired ? c4 : 0,
                       reserveFromProceeds: refiOut.reserveFromProceeds, reserveShortfall: refiOut.reserveShortfall,
                       cashToBorrower: refiOut.cashToBorrower } : null,
      arvCap: sz.arvCap, asIsCap: sz.asIsCap, test1: sz.t1, builtLoan: sz.built, sizedLoan: sz.S, maxLoanApplied: sz.maxLoan,
      returnTest: { ratio: ratioRT, minimum: Q.returnMin, passes: ratioRT >= Q.returnMin - 1e-9, maxLoanSolved: fl.solved, k: fl.k,
                    loanCost: lc, totalCost: lc, arvUsed: d.arv },
      sec35: { requestedOver: requestedOver, qualifies: sec35Ok, applied: path.sec35, status: sec35Status },
      heavyRehab: heavy, countyMedian: { checked: d.countyMedian > 0, ratio: ratio, cut: d.cut, median: d.countyMedian },
      aboveCountyMedian: d.cut > 0,
      county: { fips: d.countyFips, population: d.countyPop, populationChecked: d.countyPop > 0, medianListing: d.countyMedian,
                unknown: countyUnknown, confirmByAE: countyUnknown },
      routeTo: routeTo,
      economics: { interestCarry: interestCarry, otherCarry: otherCarry, upfrontFees: upfront, netProceeds: netProceeds, profit: profit,
                   loanCost: upfront + interestCarry, equity: equity, roe: equity ? profit / equity : 0, roiOnCashToClose: ctc ? profit / ctc : 0,
                   holdMonths: d.hold }
    };
  }

  function priceQuickTern(inputs, tables) { return priceFlipV2(inputs, tables, false); }
  function priceQuickTernRefi(inputs, tables) {
    var x = {}, k; inputs = inputs || {};
    for (k in inputs) { if (Object.prototype.hasOwnProperty.call(inputs, k)) { x[k] = inputs[k]; } }
    x.purpose = 'refinance';
    return priceFlipV2(x, tables, false);
  }
  function priceBridge(inputs, tables) { return priceFlipV2(inputs, tables, true); }

  /* ================================= Elite ================================= */
  var EL_TEXT = {
    STATE: 'Ineligible state (Ternus licensing).',
    TARGET_MIN_ARV: 'Target market requires $175K+ ARV.',
    SQFT: 'SFR/TH below Elite min sqft (675).',
    SQFT_CONDO: 'Condo below Elite min sqft (480).',
    SQFT_UNIT: '2-4 family below Elite min sqft/unit.',
    FICO_MIN: 'FICO <650 (Elite).',
    VALUE_MIN: 'Property value below Elite minimum.',
    LOAN_MIN: 'Loan <$75K min (Elite).'
  };

  function eliteTier(flips) { return flips === 0 ? '0' : (flips <= 4 ? '1-4' : (flips <= 9 ? '5+' : '10+')); }

  function priceElite(inputs, tables) {
    var T = tbl(tables), E = T.elite, d = norm(inputs, T), R = E.revenue;
    var reasons = [], warnings = [];
    function ko(code) { reasons.push({ code: code, text: EL_TEXT[code] }); }

    var rawTier = eliteTier(d.flips);
    var rr = d.pp > 0 ? d.rehab / d.pp : 0;
    var bucket = (d.typeChange || (d.expansion20 && d.sqftAdded >= 750) || rr >= 1) ? 'Heavy' : (rr >= 0.5 ? 'Moderate' : 'Light');
    var fn = d.citizenship === 'Foreign National';
    var tm = d.targetMarket && d.targetMarket !== 'None';
    var P = E.program100;
    var progBorrower = inList(P.citizenship, d.citizenship) && d.fico >= P.minFico && d.flips >= 10 && !tm;
    var effTier = (rawTier === '10+' && (!progBorrower || d.arv > P.maxValue || d.pp + d.rehab > P.maxCost)) ? '5+' : rawTier;
    var m = E.matrix[bucket + '|' + effTier];

    /* leverage adjustments - applied to AI-LTV, I-LTC, AR-LTV and T-LTC */
    var ficoCut = fn ? E.ficoAdj.FN[1] : (d.fico >= 700 ? E.ficoAdj['700+'][1] : (d.fico >= 680 ? E.ficoAdj['680-699'][1] : E.ficoAdj['650-679'][1]));
    var value = Math.max(d.arv, d.aiv);
    var mhvRatio = d.mhv ? value / d.mhv : 0;
    var mhvCut = (d.units === 1 && mhvRatio > E.mhvRatioThreshold) ? E.mhvLtvCut : 0;
    var tmCut = tm ? -(rawTier === '5+' ? E.targetMarketCut['5+'] : E.targetMarketCut.other) : 0;
    var adj = ficoCut + mhvCut + tmCut;
    var aiN = Math.max(0, Math.min(m[0] + adj, 1)), iltcN = Math.max(0, Math.min(m[1] + adj, 1));
    var arN = Math.max(m[2] + adj, 0), tltcN = Math.max(m[3] + adj, 0);

    var ia = Math.min(d.aiv * aiN, d.pp * iltcN);
    var arvCap = arN <= 0 ? BIG : value * arN;
    var ltcCap = tltcN <= 0 ? BIG : tltcN * (d.pp + d.rehab);
    var cap = Math.min(arvCap, ltcCap);
    var funded = Math.max(Math.min(Math.min(cap, E.maxLoan) - ia, d.rehab * m[4]), 0);
    var loan = Math.min(ia + funded, cap, E.maxLoan);
    var initial = loan - funded;
    var oop = Math.max(d.rehab - funded, 0);

    /* pricing: rate-sheet rate at base points + adjusters, then the Ternus revenue rule */
    var ficoAdder = fn ? E.ficoAdj.FN[0] : (d.fico >= 700 ? E.ficoAdj['700+'][0] : (d.fico >= 680 ? E.ficoAdj['680-699'][0] : E.ficoAdj['650-679'][0]));
    var sizeAdder = 0, i;
    /* brackets include their lower bound, as in the Elite sizer 9.24.26: a $100,000 loan prices in the $100,000-$150,000 bracket */
    for (i = 0; i < E.loanSizeAdj.length; i++) { if (loan >= E.loanSizeAdj[i][0]) { sizeAdder = E.loanSizeAdj[i][1]; } }
    var baseRate = E.baseRateGrid[effTier] + ficoAdder + sizeAdder + (bucket === 'Heavy' ? E.heavyRateAdder : 0);
    var baseRev = R.origMarkupMin * loan + R.rateMarkupMin * R.yspCredit * loan + R.ternusFee;
    var gap = Math.max(0, R.floorPct * loan - baseRev);
    var ptsMarkup = R.origMarkupMin + (loan ? R.gapToPoints * gap / loan : 0);
    var rateMarkup = R.rateMarkupMin + (loan ? (1 - R.gapToPoints) * gap / (R.yspCredit * loan) : 0);
    var rate = baseRate + rateMarkup, pts = E.basePoints + ptsMarkup;
    var ysp = rateMarkup * R.yspCredit * loan;

    /* knockouts - same order and wording as the v7 workbook (Calc F62) */
    if (!d.state) { warnings.push('State not provided - licensing eligibility not checked.'); }
    else if (inList(T.shared.ineligibleStates, d.state)) { ko('STATE'); }
    if (tm && d.arv < E.targetMarketMinArv) { ko('TARGET_MIN_ARV'); }
    if (d.sqft === null) { warnings.push('Square footage not provided - minimum-size rule not checked.'); }
    else {
      if ((d.propType === 'SFR' || d.propType === 'TOWNHOME') && d.sqft < E.sqftMinSfrTownhome) { ko('SQFT'); }
      if (d.propType === 'CONDO' && d.sqft < E.sqftMinCondo) { ko('SQFT_CONDO'); }
      if (d.propType === '2-4_FAMILY' && E.sqftMinPerUnit24 > 0 && d.sqft / Math.max(d.units, 1) < E.sqftMinPerUnit24) { ko('SQFT_UNIT'); }
    }
    if (!fn && d.fico < E.minFico) { ko('FICO_MIN'); }
    if (d.arv < (fn ? E.fnMinValue : E.minValue)) { ko('VALUE_MIN'); }
    if (loan < E.minLoan) { ko('LOAN_MIN'); }

    var pointsCost = pts * loan;
    var closing = d.closingOverride > 0 ? d.closingOverride : d.closingPct * loan;
    var down = Math.max(d.pp - initial, 0);
    var ctc = down + pointsCost + closing + R.ternusFee + d.ins;
    var sixMoPmts = rate / 12 * loan * E.paymentMonthsLiquidity;
    var liquidity = ctc + oop + sixMoPmts + E.rehabReservePct * d.rehab;
    var interestCarry = rate / 12 * (initial + funded / 2) * d.hold, otherCarry = d.carry * d.hold;
    var upfront = pointsCost + closing + R.ternusFee;
    var netProceeds = d.arv - d.arv * (d.sell + d.conc);
    var profit = netProceeds - (d.pp + d.rehab + interestCarry + otherCarry + upfront);
    var equity = ctc + oop + interestCarry + otherCarry;
    var exitBase = 1.03 * d.pp + d.rehab;
    var exitRoi = exitBase ? (d.arv - exitBase) / exitBase : 0;

    var pricingNote = gap > 0
      ? 'Revenue floor applied: the Ternus 300 bps minimum adds +' + ((ptsMarkup - R.origMarkupMin) * 100).toFixed(2) + '% origination and +' +
        ((rateMarkup - R.rateMarkupMin) * 100).toFixed(2) + '% rate above the base markups (1.00% / 0.50%).'
      : 'Base Ternus markups (1.00% origination, 0.50% rate, $500 fee) meet the 300 bps minimum.';
    if (oop > 0 && reasons.length === 0) { warnings.push('Not all of the renovation budget is funded - the borrower covers the unfunded part.'); }
    if (exitRoi < 0.10 && (d.arv - exitBase) < 25000) { warnings.push('Projected exit margin is thin (below the lesser of 10% or $25,000) - expect closer review.'); }
    if (fn) { warnings.push('Foreign national: leverage reduced 5%.'); }
    warnings.push('Third-party closing costs are estimated at ' + (d.closingOverride > 0 ? 'the amount entered' : (d.closingPct * 100).toFixed(2) + '% of the loan') + ' and are confirmed at closing.');

    return {
      product: 'Elite', engine: VERSION, eligible: reasons.length === 0,
      reasons: reasons, reasonText: reasons.map(function (r) { return r.text + ' '; }).join(''),
      warnings: warnings,
      rate: rate, points: pts, rehabClass: bucket, experienceTier: rawTier, pricingTier: effTier,
      loan: loan, initialAdvance: initial, rehabEscrow: funded, outOfPocketRehab: oop,
      payment: rate / 12 * initial,                                /* interest as drawn: starts on the initial advance */
      fees: { ternusFee: R.ternusFee, pointsCost: pointsCost, closingEstimate: closing, insurance: d.ins },
      downPayment: down, cashToClose: ctc,
      proofOfCapital: liquidity, liquidityRequired: liquidity,
      cashComponents: { cashToClose: ctc, outOfPocketRehab: oop, sixMonthsPayments: sixMoPmts, rehabReserve: E.rehabReservePct * d.rehab, total: liquidity },
      arvCap: finiteOrNull(arvCap), costCap: finiteOrNull(ltcCap),
      leverage: { asIsLtv: aiN, initialLtc: iltcN, arvLtv: arN, totalLtc: tltcN, adjustment: adj, mhvRatio: mhvRatio },
      returnTest: { exitRoi: exitRoi, informational: true },
      pricing: { baseRate: baseRate, rateMarkup: rateMarkup, pointsMarkup: ptsMarkup, ysp: ysp, revenueGap: gap,
                 ternusRevenue: ptsMarkup * loan + ysp + R.ternusFee, note: pricingNote },
      economics: { interestCarry: interestCarry, otherCarry: otherCarry, upfrontFees: upfront, netProceeds: netProceeds, profit: profit,
                   loanCost: upfront + interestCarry, equity: equity, roe: equity ? profit / equity : 0, roiOnCashToClose: ctc ? profit / ctc : 0,
                   holdMonths: d.hold }
    };
  }

  /* ============================== maxPrequal ==============================
   * SUPERSEDED on the website (the site pre-qualifies on the deal entered). Kept so existing callers keep working.
   * Largest purchase price and loan a borrower could be pre-qualified for under QuickTern v2.0 (purchase) from stated facts
   * only, using the default deal shape below (assumptions pending Tim's approval). Based on information provided, subject to
   * verification, underwriting and final approval.
   */
  var PREQUAL_DEFAULTS = {
    rehabPctOfPurchase: 0.25, arvMultipleOfCost: 1.30, asIsPctOfPurchase: 1.00, hardCostPctOfRehab: 0.90,
    insurancePctOfPurchase: 0.012, otherClosingPctOfPurchase: 0.01475, taxes6moPctOfPurchase: 0, includeApplicationFee: true,
    channel: 'Retail', guarantors: 2, entities: 1, propType: 'SFR', step: 1000, maxPurchaseSearched: 5000000
  };
  var BAND_FLOORS = { '620-659': 620, '660-699': 660, '700-719': 700, '720-739': 720, '740-759': 740, '760+': 760 };
  var TIER_FLIPS = { '0-3': 0, '4-9': 4, '10+': 10 };

  function maxPrequal(inp, tables) {
    var T = tbl(tables), Q = T.quicktern;
    inp = inp || {};
    var a = {}, key;
    for (key in PREQUAL_DEFAULTS) { a[key] = (inp[key] === undefined || inp[key] === null || inp[key] === '') ? PREQUAL_DEFAULTS[key] : inp[key]; }
    var fico = inp.ficoBand !== undefined ? BAND_FLOORS[String(inp.ficoBand)] : num(inp.fico, NaN);
    var flips = inp.experienceTier !== undefined ? TIER_FLIPS[String(inp.experienceTier)] : flipsInt(inp.flips);
    var cash = num(inp.liquidCash, 0);
    var out = { product: 'QuickTern', engine: VERSION, superseded: true, eligible: false, reasons: [], warnings: [], assumptions: a,
                ficoUsed: fico, experienceTierUsed: inp.experienceTier || qtTier(flips), liquidCash: cash };
    if (fico === undefined || !isFinite(fico)) { out.reasons.push({ code: 'FICO_BAND', text: 'Select a credit score band.' }); return out; }
    if (flips === undefined || !isFinite(flips)) { out.reasons.push({ code: 'EXPERIENCE', text: 'Select an experience level.' }); return out; }
    if (fico < Q.ficoFloor) { out.reasons.push({ code: 'FICO_FLOOR', text: QT_TEXT.FICO_FLOOR }); return out; }
    var anchor = given(inp.usAnchor) ? bool(inp.usAnchor, true) : inp.citizenship !== 'Foreign National';
    if (!anchor) { out.reasons.push({ code: 'NO_ANCHOR', text: QT_TEXT.NO_ANCHOR }); return out; }
    if (inp.state && inList(T.shared.ineligibleStates, String(inp.state).toUpperCase())) { out.reasons.push({ code: 'STATE', text: QT_TEXT.STATE }); return out; }

    var gates = fico >= Q.sec35.minFico && bool(inp.amcAppraisal, false) && bool(pick(inp, 'budgetReview', 'feasibility'), false);

    function deal(p, sec35) {
      var rehab = p * a.rehabPctOfPurchase;
      return {
        purpose: 'purchase', purchasePrice: p, rehab: rehab, arv: (p + rehab) * a.arvMultipleOfCost, asIsValue: p * a.asIsPctOfPurchase,
        propType: a.propType, units: 1, state: inp.state || '', countyMedian: num(inp.countyMedian, 0),
        countyPopulation: num(inp.countyPopulation, 0), fico: fico, flips: flips, usAnchor: true, channel: a.channel,
        peopleScreened: a.guarantors, entities: a.entities, insurancePremium: p * a.insurancePctOfPurchase,
        otherClosingCosts: p * a.otherClosingPctOfPurchase, propertyTaxes6mo: p * a.taxes6moPctOfPurchase,
        requestedLoan: sec35 ? 1e12 : 0, amcAppraisal: sec35, budgetReview: sec35
      };
    }
    function search(sec35) {
      var best = null, p, q, need, step = Math.max(1000, num(a.step, 1000));
      var pMax = a.maxPurchaseSearched;
      if (a.rehabPctOfPurchase > 0) { pMax = Math.min(pMax, Math.floor(Q.maxRehab / a.rehabPctOfPurchase / step) * step); }
      for (p = step; p <= pMax; p += step) {
        q = priceQuickTern(deal(p, sec35), T);
        need = q.liquidityRequired + (a.includeApplicationFee ? q.fees.application : 0);
        if (q.eligible && need <= cash && (!best || p > best.p)) { best = { p: p, q: q, need: need }; }
      }
      return best;
    }
    var std = search(false), s35 = gates ? search(true) : null;
    var pick35 = std, mode = 'standard';
    if (s35 && (!std || s35.p > std.p)) { pick35 = s35; mode = 'section3.5'; }
    out.mode = mode;
    out.alternatives = { standard: std ? { maxPurchasePrice: std.p, maxLoan: Math.floor(std.q.loan / 1000) * 1000, cashRequired: std.need } : null,
                         section35: s35 ? { maxPurchasePrice: s35.p, maxLoan: Math.floor(s35.q.loan / 1000) * 1000, cashRequired: s35.need } : null };
    if (!pick35) {
      out.reasons.push({ code: 'CASH_SHORT', text: 'Stated liquid cash does not cover the minimum cash requirement on a $50,000 QuickTern loan under these assumptions.' });
      return out;
    }
    var q = pick35.q;
    out.eligible = true;
    out.maxPurchasePrice = pick35.p;
    out.maxLoan = Math.floor(q.loan / 1000) * 1000;
    out.rate = q.rate; out.points = q.points;
    out.cashRequired = pick35.need;
    out.cashComponents = q.cashComponents;
    out.applicationFee = q.fees.application;
    out.deal = { purchasePrice: pick35.p, rehab: pick35.p * a.rehabPctOfPurchase, arv: (pick35.p * (1 + a.rehabPctOfPurchase)) * a.arvMultipleOfCost,
                 loan: q.loan, initialAdvance: q.initialAdvance, rehabEscrow: q.rehabEscrow };
    out.quote = q;
    if (!(num(inp.countyMedian, 0) > 0)) { out.warnings.push('County median not provided - a 5 to 15 point band cut applies where ARV is over 1.5x the county median sold price (guide 4.5).'); }
    if (mode === 'section3.5') { out.warnings.push('Above $500,000 under Section 3.5: requires a 660 score, a borrower-paid AMC appraisal and a CFSI budget review, all to be verified.'); }
    out.warnings.push('Not available in: ' + T.shared.ineligibleStates.join(', ') + '; Baltimore City, Baltimore County and Philadelphia.');
    out.warnings.push('Based on information provided, subject to verification, underwriting, appraisal and final approval.');
    return out;
  }

  /* ============================ zip + PDF helpers ============================ */
  function shardFileFor(zip) { var z = ('00000' + String(zip || '')).slice(-5); return 'fz' + z.slice(0, 2) + '.txt'; }
  function decodeShard(b64) {
    var s = String(b64 || '').replace(/\s+/g, ''), txt;
    if (typeof atob === 'function') { txt = atob(s); }
    else if (typeof Buffer !== 'undefined') { txt = Buffer.from(s, 'base64').toString('ascii'); }
    else { throw new Error('no base64 decoder'); }
    return JSON.parse(txt);
  }
  /* shard row [zip median home value, QuickTern-blocked 0/1, state, county median listing price (Realtor.com), county population
     (Census), county FIPS]; 0 / '' = county unknown. Each v2 shard carries _meta with data vintages. The zip MHV (row[0]) is used
     by Elite only; the guide 4.5 county test uses row[3]. Live v7 shards (3 fields) still decode. */
  function lookupZip(zip, shard, tables) {
    var T = tables || TABLES, z = ('00000' + String(zip || '')).slice(-5), row = shard ? shard[z] : null;
    return { zip: z, found: !!row, mhv: row ? row[0] : 0, qtBlocked: row ? row[1] === 1 : false, state: row ? row[2] : '',
             countyMedian: row && row.length > 3 ? row[3] : 0, countyPop: row && row.length > 4 ? row[4] : 0,
             countyFips: row && row.length > 5 ? row[5] : '', countyVintage: (shard && shard._meta && shard._meta.medianVintage) || '',
             targetMarket: (T && T.marketAreas && T.marketAreas[z]) || 'None' };
  }
  /* jsPDF standard fonts are WinAnsi only: map the engine's typographic characters to safe ASCII */
  function pdfSafe(s) {
    return String(s === undefined || s === null ? '' : s)
      .replace(/[\u2014\u2013\u2212]/g, '-').replace(/[\u2018\u2019]/g, "'").replace(/[\u201c\u201d]/g, '"')
      .replace(/\u2265/g, '>=').replace(/\u2264/g, '<=').replace(/\xa7/g, 'Sec. ').replace(/\u2026/g, '...')
      .replace(/\xd7/g, 'x').replace(/[^\x20-\x7e\n]/g, '');
  }
  function money(n) { return (n < 0 ? '-$' : '$') + Math.round(Math.abs(n)).toLocaleString('en-US'); }
  function pct(r, dp) { return (r * 100).toFixed(dp === undefined ? 2 : dp) + '%'; }
  /* values-only lines for a PDF or email - never the tables */
  function summaryLines(q) {
    if (!q) { return []; }
    if (!q.eligible) { return [pdfSafe(q.product + ': not available for this deal - ' + q.reasons.map(function (r) { return r.text; }).join(' '))]; }
    var L = [q.product + ': rate ' + pct(q.rate) + ' + ' + (q.points * 100).toFixed(2) + ' pts | loan ' + money(q.loan) +
             ' | initial advance ' + money(q.initialAdvance) + ' | rehab escrow ' + money(q.rehabEscrow),
             'Monthly interest-only payment at closing ' + money(q.payment) + ' | cash to close ' + money(q.cashToClose) +
             ' | proof of capital (verified, not cash due) ' + money(q.proofOfCapital)];
    return L.map(pdfSafe);
  }

  var api = {
    VERSION: VERSION, setTables: setTables,
    priceQuickTern: priceQuickTern, priceQuickTernRefi: priceQuickTernRefi, priceBridge: priceBridge, priceElite: priceElite,
    maxPrequal: maxPrequal,
    shardFileFor: shardFileFor, decodeShard: decodeShard, lookupZip: lookupZip, pdfSafe: pdfSafe, summaryLines: summaryLines,
    PREQUAL_DEFAULTS: PREQUAL_DEFAULTS
  };
  return api;
});

/*! Ternus DSCR pricing engine - unified sizer (tables v9.24.26, revenue rule DSCR-REV-2026-10-01).
 * Pure functions, no DOM. Browser: window.TernusDSCR. Node: module.exports.
 *   TernusDSCR.setTables(tablesJson)        load dscr-tables.json once
 *   TernusDSCR.priceDSCR(inputs[, tables])  -> { eligible, reasons[], rate, points, fee, ysp, loan, ltv, dscr, payment, cashToClose, ... }
 * Estimates for discussion purposes only; subject to underwriting, verification and final approval.
 */
(function (root, factory) {
  var api = factory();
  if (typeof module === 'object' && module.exports) module.exports = api;
  else root.TernusDSCR = api;
}(typeof self !== 'undefined' ? self : this, function () {
  'use strict';
  var MULTI = { 'Multi (5-9)': 1, 'Multi (10+)': 1 };
  var TERM_KEY = '360 Months (30Y)', AMORT_KEY = 'FRM';
  var IO_MONTHS = { 'No IO': 0, '5Y IO': 60, '7Y IO': 84, '10Y IO': 120 };
  var TABLES = null;

  function round5(x) { var a = Math.floor(Math.abs(x) * 1e5 + 0.5) / 1e5; return x < 0 ? -a : a; }
  function pmt(rate, n, pv) { var m = rate / 12; if (m === 0) return pv / n; var f = Math.pow(1 + m, n); return pv * m * f / (f - 1); }
  function money(n) { return '$' + Math.round(n).toLocaleString('en-US'); }
  function pyRound(x) { /* Python round(): half to even, matches the reference for whole-dollar loans */
    var f = Math.floor(x), d = x - f;
    if (d === 0.5) return (f % 2 === 0) ? f : f + 1;
    return d < 0.5 ? f : f + 1;
  }

  function norm(inp) {
    var d = { purpose: 'P', payoff: 0, propType: 'Detached SFR', units: 1, sqft: 0, state: '', zip: '', value: 0,
      occupancy: 'Leased', vacantUnits: null, leaseType: 'LTR', rentActual: 0, rentMarket: 0, grossRent: 0,
      taxes: 0, ins: 0, flood: 0, hoa: 0, citizenship: 'US', fico: null, ficoTier: null, sdira: false,
      io: 'No IO', ppp: '5y (DP)', unitRents: null, ltv: null, loanAmount: null, discountPoints: 0,
      applyTernusRevenue: true, rebateOverride: null, applyTernusLicensing: true };
    for (var k in inp) { if (Object.prototype.hasOwnProperty.call(inp, k) && inp[k] !== null && inp[k] !== undefined) d[k] = inp[k]; }
    d.zip = String(d.zip || '').trim();
    if (/^\d+$/.test(d.zip)) { while (d.zip.length < 5) d.zip = '0' + d.zip; }
    d.units = Math.max(1, Math.round(d.units || 1));
    return d;
  }

  function Ctx(s, T) {
    var c = T.constraints, self = this, i, b;
    this.s = s; this.T = T; this.multi = !!MULTI[s.propType]; this.reasons = [];
    /* FICO tier */
    if (s.citizenship === 'FN') this.tier = 'FN';
    else if (s.sdira) this.tier = '700+';
    else if (s.ficoTier) this.tier = s.ficoTier;
    else if (s.fico !== null) {
      this.tier = null;
      for (i = 0; i < T.ficoBuckets.length; i++) { b = T.ficoBuckets[i]; if (b.min <= s.fico && s.fico <= b.max) this.tier = b.bucket; }
    } else this.tier = null;
    if (!T.spreads[this.tier]) this.reasons.push('Credit score below the 660 program minimum.');
    this.purposeKey = { P: 'Purchase', RT: 'Refinance (RT)', CO: 'Refinance (CO)' }[s.purpose];
    /* lease status + rental type */
    this.leaseType = this.multi ? 'LTR' : s.leaseType;
    var vac;
    if (s.unitRents && s.unitRents.length) { vac = 0; for (i = 0; i < s.unitRents.length; i++) if (!s.unitRents[i].leased) vac++; }
    else vac = (s.vacantUnits !== null) ? s.vacantUnits : (s.occupancy === 'Vacant' ? s.units : 0);
    var allow = c.vacancyAllowance[s.purpose][Math.min(s.units, 4) - 1];
    this.leaseStatus = (!this.multi && vac > allow) ? 'Vacant' : 'Leased';
    this.leaseKey = this.leaseStatus + ' | ' + (s.purpose === 'P' ? 'P' : 'R') + ' | ' + this.leaseType;
    /* min DSCR */
    var md = c.minDSCR, d;
    if (this.tier === 'FN') d = md.fn;
    else if (this.multi) d = md.multi;
    else if (this.leaseType === 'STR') d = md.strSFR;
    else if (this.tier === '660+') d = md.sfr660;
    else d = md.sfrDefault;
    var ov = T.zipOverlays[s.zip] || {};
    this.overlay = ov;
    if (ov.minDSCR) d = Math.max(d, ov.minDSCR);
    this.minDSCR = d;
    /* max LTV */
    var caps = c.ltvCaps[this.tier];
    if (!caps || (this.multi && c.multiIneligibleTiers.indexOf(this.tier) >= 0)) {
      this.maxLTV = null;
      if (T.spreads[this.tier]) this.reasons.push('5+ unit properties require a 700+ credit profile (U.S. borrowers).');
    } else {
      var base = s.purpose === 'CO' ? caps[1] : caps[0], la = c.ltvAdjustments, a = 0;
      if (this.multi) a += la.multi;
      if (s.sdira) a += la.sdira;
      if (la.valueBand.min <= s.value && s.value < la.valueBand.max) a += la.valueBand.adj;
      if (this.leaseType === 'STR') a += la.str;
      a += (la.propType[s.propType] || 0);
      a = Math.max(a, la.floor);
      this.maxLTV = Math.round((base + a) * 1e10) / 1e10;
    }
    /* rate floor */
    var rf = c.rateFloor;
    this.rateFloor = Math.max(this.multi ? rf.multi : rf.sfr, s.io !== 'No IO' ? rf.io : rf.noIO,
      rf.pppHighOptions.indexOf(s.ppp) >= 0 ? rf.pppHigh : rf.pppLow);
    /* loan / value limits */
    var ml = c.minLoan, mv = c.minValue;
    this.minLoan = this.multi ? ml.multi : (s.citizenship === 'FN' ? ml.sfrFN : ml.sfr);
    this.maxLoan = c.maxLoan;
    var mval = this.multi ? mv.multiPerUnit * s.units : (s.citizenship === 'FN' ? mv.sfrFN : mv.sfr);
    if (ov.minValue) mval = Math.max(mval, ov.minValue);
    this.minValue = mval;
    /* minimum lender points (buy no rate) */
    var lp = T.lenderMinPoints, p = s.ppp;
    if (this.multi || (p === '0y (No PPP)' && s.state !== 'PA' && s.state !== 'OH')) this.lenderMinPts = this.multi ? lp.multi : lp.noPPP;
    else if (p === '0y (No PPP)') this.lenderMinPts = lp.noPPP_PA_OH;
    else if (Object.prototype.hasOwnProperty.call(lp, p)) this.lenderMinPts = lp[p];
    else this.lenderMinPts = lp['default'];
    /* rebate (YSP) cap */
    var ro = T.rebateOptions;
    this.rebateCap = this.multi ? ro.multiCap : (ro.sfrCapByPPP[p] || 0);
    /* income */
    this.monthlyTI = (s.taxes + s.ins + s.flood + s.hoa) / 12;
    if (this.multi) {
      var vpu = s.value / s.units, rows = T.vpuExpenseRatios, ratio = rows[rows.length - 1].ratio;
      for (i = 0; i < rows.length; i++) {
        var m = parseFloat(String(rows[i].maxVpu).replace(/[^0-9.]/g, ''));
        if (vpu <= m) { ratio = rows[i].ratio; break; }
      }
      var gpr = s.grossRent;
      this.income = gpr - s.taxes / 12 - s.ins / 12 - ratio * gpr - c.multiNCF.capexPerUnitYear * s.units / 12;
      this.expenseRatio = ratio;
    } else {
      var unitIncome = function (leased, act, mkt) {
        if (leased) {
          if (self.leaseType === 'STR') return (act || 0) * c.leaseIncome.strActualFactor;
          var vals = []; if (act > 0) vals.push(act); if (mkt > 0) vals.push(mkt);
          return vals.length ? Math.min.apply(null, vals) : 0;
        }
        return mkt || 0;
      };
      if (s.unitRents && s.unitRents.length) {
        var tot = 0;
        for (i = 0; i < s.unitRents.length; i++) { var u = s.unitRents[i]; tot += unitIncome(!!u.leased, u.actual || 0, u.market || 0); }
        this.income = tot;
      } else this.income = unitIncome(s.occupancy === 'Leased', s.rentActual, s.rentMarket);
      this.expenseRatio = null;
    }
    /* loan-independent eligibility */
    var pt = T.adjustments.propType[s.propType];
    if (!pt || pt[0] === null) this.reasons.push('This property type is priced case by case.');
    if (!T.adjustments.state[s.state]) this.reasons.push('Select a valid property state.');
    /* Ternus licensing state list (Tim 2026-10-19, ruling R6 + DSCR approval): same list as the flip and GUC paths */
    else if (s.applyTernusLicensing !== false && (T.ineligibleStates || []).indexOf(String(s.state).toUpperCase()) >= 0) this.reasons.push('Ternus does not currently offer this program in this state.');
    if (ov.permitted === false) this.reasons.push('This ZIP code needs a manual review before pricing.');
    var sm = T.sqftMin[s.propType];
    if (typeof sm === 'number' && sm > 0 && s.sqft && s.sqft < sm) this.reasons.push('Properties under ' + sm + ' sq ft need a manual review.');
    var spu = (T.sqftMinPerUnit || {})[s.propType];
    if (spu && s.sqft && s.sqft < spu * s.units) this.reasons.push('Properties under ' + spu + ' sq ft per unit need a manual review.');
    if (s.value < this.minValue) this.reasons.push('Property value is below the ' + money(this.minValue) + ' program minimum.');
    if (s.purpose === 'RT' && s.payoff <= 0) this.reasons.push('A rate-term refinance needs an existing payoff; choose cash-out for a free-and-clear property.');
  }

  Ctx.prototype.ltvIdx = function (ltv) {
    var u = this.T.ltvBucketUppers, p = ltv * 100 - 1e-6; /* epsilon MINUS: exactly 75% stays in the <=75 bucket */
    for (var i = 0; i < u.length; i++) { if (p <= u[i]) return i; }
    return u.length - 1;
  };
  Ctx.prototype.balBucket = function (loan) {
    var b = this.T.balanceBuckets, out = b[0].bucket;
    for (var i = 0; i < b.length; i++) { if (loan >= b[i].min) out = b[i].bucket; } /* min-inclusive, as the model's MATCH(...,1) */
    return out;
  };
  Ctx.prototype.revenue = function (loan) {
    var R = this.T.ternusRevenue, ro = this.T.rebateOptions;
    var floor = R.ternusRevFloor, pts = Math.min(R.ternusPtsMax, floor), fee = R.ternusFee;
    var need = floor * loan - pts * loan - fee, rebate = 0;
    if (need > 0 && loan > 0) {
      var steps = Math.ceil(need / loan / ro.step - 1e-9);
      rebate = Math.min(this.rebateCap, Math.round(steps * ro.step * 1e6) / 1e6);
    }
    var ysp = rebate * loan, total = pts * loan + fee + ysp;
    return { points: pts, fee: fee, rebate: rebate, ysp: ysp, total: total, bps: loan ? total / loan * 1e4 : 0,
      shortfall: Math.max(0, floor * loan - total), floorMet: total >= floor * loan - 0.005 };
  };
  Ctx.prototype.rate = function (ltv, loan, dpts, rebate) {
    var T = this.T, s = this.s, i = this.ltvIdx(ltv), sp = T.spreads[this.tier];
    if (!sp || sp[i] === null || sp[i] === undefined) return null;
    var base = round5(T.indexRate + sp[i] + rebate / T.rebateFactor);
    var picks = [['propType', s.propType], ['purpose', this.purposeKey], ['term', TERM_KEY], ['amort', AMORT_KEY],
      ['io', s.io], ['ppp', s.ppp], ['state', s.state], ['loanSize', this.balBucket(loan)], ['leasing', this.leaseKey]];
    var adj = 0;
    for (var k = 0; k < picks.length; k++) {
      var row = T.adjustments[picks[k][0]][picks[k][1]];
      if (!row || row[i] === null || row[i] === undefined) return null;
      adj += row[i];
    }
    var buy = round5(-(dpts / 100) / T.buydownFactor);
    var r = base + adj + buy;
    return { rate: Math.max(r, this.rateFloor), preFloor: r, floorApplied: r < this.rateFloor, bucket: i, parRate: base, adjTotal: adj, buydown: buy };
  };
  Ctx.prototype.payment = function (loan, r) { return this.s.io !== 'No IO' ? loan * r / 12 : pmt(r, 360, loan); };
  Ctx.prototype.cell = function (ltv, dpts, loan) {
    var s = this.s, c = this.T.constraints;
    if (loan === undefined || loan === null) loan = pyRound(s.value * ltv);
    ltv = s.value ? loan / s.value : 0;
    var rev = s.applyTernusRevenue ? this.revenue(loan)
      : { points: 0, fee: 0, rebate: 0, ysp: 0, total: 0, bps: 0, shortfall: 0, floorMet: false };
    if (s.rebateOverride !== null) { rev.rebate = s.rebateOverride; rev.ysp = s.rebateOverride * loan; }
    var base = this.rate(ltv, loan, dpts, 0), pr = this.rate(ltv, loan, dpts, rev.rebate);
    if (!pr || !base) return null;
    var r = pr.rate, p = this.payment(loan, r), dscr;
    if (this.multi) dscr = p ? this.income / p : 0;
    else dscr = (p + this.monthlyTI) ? this.income / (p + this.monthlyTI) : 0;
    var ioM = IO_MONTHS[s.io] || 0, postIO = ioM ? pmt(r, 360 - ioM, loan) : p;
    var why = [];
    if (loan < this.minLoan) why.push('Loan amount is below the ' + money(this.minLoan) + ' program minimum.');
    if (loan > this.maxLoan) why.push('Loan amount exceeds the ' + money(this.maxLoan) + ' program maximum.');
    if (this.maxLTV !== null && ltv > this.maxLTV + 1e-9) why.push('LTV exceeds the ' + (this.maxLTV * 100).toFixed(1) + '% maximum for this scenario.');
    if (dscr < this.minDSCR - 1e-12) why.push('DSCR ' + dscr.toFixed(2) + ' is below the ' + this.minDSCR.toFixed(2) + ' minimum for this scenario.');
    if (s.purpose === 'RT' && loan > s.payoff * c.rtPayoffCapMultiple + 1e-6) why.push('A rate-term refinance is limited to 102% of the current payoff.');
    var lenderPts = this.lenderMinPts + dpts / 100;
    var closing = loan * (lenderPts + rev.points + c.thirdPartyClosingPct) + rev.fee;
    var escrow = c.escrowFactor * (this.multi ? (s.taxes + s.ins) : (s.taxes + s.ins + s.flood));
    var down = s.purpose === 'P' ? Math.max(0, s.value - loan) : 0, ctc, cashOut;
    if (s.purpose === 'P') { ctc = down + closing + escrow; cashOut = 0; }
    else { var net = loan - s.payoff - closing - escrow; ctc = Math.max(0, -net); cashOut = Math.max(0, net); }
    var ext = s.citizenship === 'FN' || s.units > 4 || this.leaseType === 'STR';
    var months = c.reserveMonths[ext ? 'extended' : 'default'];
    var pitia = (s.io !== 'No IO' ? p : postIO) + (this.multi ? 0 : this.monthlyTI);
    return { ltv: ltv, loan: loan, discountPoints: dpts, rate: r, baseRate: base.rate, parRate: pr.parRate,
      yspRateAdd: Math.round((r - base.rate) * 1e10) / 1e10, rateFloorApplied: pr.floorApplied,
      points: rev.points, fee: rev.fee, yspRebate: rev.rebate, ysp: rev.ysp,
      ternusRevenue: rev.total, ternusRevenueBps: rev.bps, revenueShortfall: rev.shortfall, revenueFloorMet: rev.floorMet,
      lenderPoints: lenderPts, payment: p, paymentPostIO: postIO, monthlyTI: this.monthlyTI, income: this.income, dscr: dscr,
      downPayment: down, closingCosts: closing, escrowEstimate: escrow, cashToClose: ctc, cashOut: cashOut,
      reservesRequired: months * pitia, feasible: why.length === 0, why: why };
  };

  function assign(o, src) { for (var k in src) if (Object.prototype.hasOwnProperty.call(src, k)) o[k] = src[k]; return o; }

  function priceDSCR(inputs, tables) {
    var T = tables || TABLES;
    if (!T) throw new Error('DSCR tables not loaded');
    var s = norm(inputs || {}), c = new Ctx(s, T);
    var out = { eligible: false, reasons: c.reasons.slice(), tier: c.tier, minDSCR: c.minDSCR, maxLTV: c.maxLTV,
      minLoan: c.minLoan, rateFloor: c.rateFloor, lenderMinPoints: c.lenderMinPts, rebateCap: c.rebateCap,
      leaseKey: c.leaseKey, income: c.income, ratesAsOf: T.ratesAsOf };
    if (c.reasons.length || c.maxLTV === null) return out;
    var q;
    if (s.loanAmount !== null || s.ltv !== null) {
      var loan = s.loanAmount !== null ? s.loanAmount : pyRound(s.value * s.ltv);
      q = c.cell(null, s.discountPoints, loan);
      if (!q) { out.reasons.push('This scenario is priced case by case.'); return out; }
      assign(out, q); out.eligible = q.feasible; out.reasons = out.reasons.concat(q.why);
      return out;
    }
    var sv = T.solver, feas = [];
    var nL = Math.floor((c.maxLTV - sv.ltvMin) / sv.ltvStep + 1e-9), nP = Math.round(sv.discountPointsMax / sv.discountPointsStep);
    for (var li = 0; li <= nL; li++) {
      var ltv = Math.round((sv.ltvMin + li * sv.ltvStep) * 1e6) / 1e6;
      for (var pi = 0; pi <= nP; pi++) {
        q = c.cell(ltv, Math.round(pi * sv.discountPointsStep * 1e4) / 1e4);
        if (q && q.feasible) feas.push(q);
      }
    }
    out.feasibleCount = feas.length;
    if (!feas.length) { out.reasons.push('Based on these inputs the scenario needs a manual structure (rent, value or DSCR).'); return out; }
    var mx = feas[0], lo = feas[0], top = feas[0].loan, i;
    for (i = 1; i < feas.length; i++) {
      q = feas[i];
      if (q.loan > mx.loan || (q.loan === mx.loan && q.rate < mx.rate)) mx = q;
      if (q.rate < lo.rate || (q.rate === lo.rate && q.discountPoints < lo.discountPoints)) lo = q;
      if (q.loan > top) top = q.loan;
    }
    var primary = null;
    for (i = 0; i < feas.length; i++) {
      q = feas[i];
      if (q.loan !== top) continue;
      if (!primary || q.discountPoints < primary.discountPoints || (q.discountPoints === primary.discountPoints && q.rate < primary.rate)) primary = q;
    }
    assign(out, primary); out.eligible = true;
    out.headlines = { maxProceeds: mx, lowestDown: mx, lowestRate: lo };
    return out;
  }

  return {
    version: 'dscr-engine 2.0 (2026-10-01)',
    setTables: function (t) { TABLES = t; return t; },
    priceDSCR: priceDSCR,
    _internals: { Ctx: Ctx, norm: norm, round5: round5, pmt: pmt } /* testing only */
  };
}));

/*!
 * Ternus Ground-Up Construction (GUC) pricing engine - guc-v1 (2026-10-01)
 * Port of the GUC branch of the 2026-09-24 capital-partner sizer (leverage matrix, adjusters, pricing, liquidity),
 * plus the Ternus revenue rule exactly as in Flip Sizer v7 Elite (300 bps floor; 1.00% / 50 bps / $500 minimums;
 * shortfall split 50/50; YSP credit 0.40). Cell citations: guc-model-map.md. Tables: guc-tables.json.
 * Pure functions, no DOM. Browser: window.TernusGUCEngine. Node: require('./guc-engine.js').
 * Every quote is an estimate for discussion purposes only - subject to verification, underwriting, appraisal and
 * final approval. Nothing returned here is an approval or a commitment to lend.
 * Confidential - Ternus internal pricing logic.
 */
(function (root, factory) {
  if (typeof module === 'object' && module.exports) { module.exports = factory(); }
  else { root.TernusGUCEngine = factory(); }
})(typeof self !== 'undefined' ? self : this, function () {
  'use strict';

  var VERSION = 'guc-v1';
  var TABLES = null;

  function setTables(t) { TABLES = t; return api; }
  function tbl(t) { var x = t || TABLES; if (!x) { throw new Error('guc-engine: tables not loaded (call setTables)'); } return x; }
  function num(v, dflt) { var n = (v === null || v === undefined || v === '') ? NaN : Number(v); return isFinite(n) ? n : dflt; }
  function bool(v, dflt) {
    if (v === undefined || v === null || v === '') { return dflt; }
    if (typeof v === 'string') { return /^(y|yes|true|1)$/i.test(v.trim()); }
    return !!v;
  }
  function isNo(v) { return v === false || (typeof v === 'string' && /^(n|no|false|0)$/i.test(v.trim())); }
  function zip5(z) { var n = parseInt(String(z === undefined || z === null ? '' : z).replace(/\D/g, ''), 10); return isFinite(n) ? String(n).padStart(5, '0') : ''; }

  var REASONS = {
    STATE_INELIGIBLE: 'Ground-up construction loans are not available in this state.',
    STATE_TERNUS_LICENSING: 'Ternus does not currently offer this program in this state.',
    CASH_OUT_NOT_OFFERED: 'Cash-out refinances are not available on ground-up construction.',
    CITIZENSHIP_NOT_PERMITTED: 'Ground-up construction requires a U.S. citizen, permanent resident, or non-permanent resident with a U.S. credit score.',
    FICO_BELOW_650: 'Ground-up construction requires a qualifying credit score of 650 or higher.',
    MULTI_NEEDS_EXPERIENCE: 'Ground-up construction of 5+ unit or mixed-use property requires completed ground-up experience.',
    MULTI_IN_TARGET_AREA: '5+ unit and mixed-use construction is not available in this market.',
    VALUE_BELOW_MIN: 'The completed value is below the program minimum for this property type and market.',
    VALUE_PER_UNIT_BELOW_MIN: 'The completed value per unit is below the $75,000 minimum for 5+ unit property.',
    SQFT_BELOW_MIN: 'The finished square footage is below the program minimum for this property type.',
    ENTITLEMENTS_REQUIRED: 'The lot must be fully entitled (zoning verification or entitlement letters) and ready to build.',
    TERM_NOT_OFFERED: 'Choose a 9, 12 or 18 month term.',
    SDIRA_NOT_PERMITTED: 'Self-directed IRA borrowers must be U.S. citizens with a 700+ credit score.',
    SIZING_EXHAUSTED: 'The deal does not support a loan at these values. Lower the land basis or raise the completed value.',
    LOAN_BELOW_MIN: 'The supported loan is below the program minimum ($100,000; $250,000 for 5+ units).',
    MISSING_INPUTS: 'Enter the land value, purchase price, construction budget and completed value.'
  };
  function reason(code) { return { code: code, text: REASONS[code] }; }

  function expBucket(i) {
    if (i.experienceBucket) { return String(i.experienceBucket); }
    var n = Math.max(0, Math.floor(num(i.gucExperience, 0)));
    return n <= 0 ? '0' : (n <= 4 ? '1-4' : '5+');
  }

  /* ---------- inputs ----------
   * loanPurpose ['Purchase' | 'Delayed Purchase' (land owned <= 24 months) | 'Refinance (RT)' | 'Refinance (CO)']
   * asIsLandValue, purchasePrice, hardCosts, softCosts, completedValue (required); costsToDate [0] (verified spend since acquisition)
   * payoff [0] (refinance), citizenship ['US Citizen' | 'Perm Resident' | 'Non-Perm (FICO)' | 'Non-Perm (No FICO)' | 'Foreign National'],
   * fico, gucExperience (completed ground-up projects, last 36 months) or experienceBucket ('0' | '1-4' | '5+' | '10+ (5+)'),
   * propertyType ['Detached SFR' | 'SFR + ADU' | '2-4 Unit Residential' | 'Condo (W)' | 'Condo (NW)' | 'Townhome' | 'PUD' |
   *               'Multi (5-9 Unit)' | 'Multi (10+ Unit)' | 'Mixed-Use'], units [1], state, zip, finalSqft [not tested when omitted],
   * zipInfo [missing] = lookupZip(zip, decodeShard(gzNN.txt)) -> {zip, found, mhv}. When zipInfo is missing (not supplied)
   *   and units = 1, the engine is conservative: it applies the -10% high-value (MHV) haircut unless threeComps is true,
   *   sets zipInfoMissing = true and adds a condition. The market-overlay test never depends on zipInfo (it uses the tables).
   * threeComps [false], entitlements/permits/approvedPlans [true when omitted], teardown,
   * sdira [false], termMonths [12], basePoints [0.005], interestType ['UPB' | 'Dutch'], insurancePremium [0], applyTernusLicensing [true]
   */
  function priceGUC(inp, tables) {
    var T = tbl(tables), i = inp || {};
    var reasons = [], conditions = [];
    var purpose = i.loanPurpose || 'Purchase';
    var lt = T.loanPurposeCodes[purpose] || 'P';
    var cit = i.citizenship || 'US Citizen';
    var fico = num(i.fico, null);
    var exp = expBucket(i);
    var ptype = i.propertyType || 'Detached SFR';
    var pinfo = T.propertyTypes[ptype] || T.propertyTypes['Detached SFR'];
    var bucket = pinfo.bucket;
    var units = Math.max(1, Math.floor(num(i.units, 1)));
    var z = zip5(i.zip);
    var aiv = num(i.asIsLandValue, 0), pp = num(i.purchasePrice, 0), comp = num(i.costsToDate, 0);
    var hard = num(i.hardCosts, 0), soft = num(i.softCosts, 0), arv = num(i.completedValue, 0);
    var payoff = num(i.payoff, 0), sdira = bool(i.sdira, false), term = Math.floor(num(i.termMonths, 12));
    var bpts = num(i.basePoints, T.pricing.defaultBasePoints), dutch = i.interestType === 'Dutch';
    var rehab = hard + soft, cb = pp + comp, maxv = Math.max(arv, aiv);
    var fnLike = T.gucCitizenshipNotPermitted.indexOf(cit) >= 0;
    var LA = T.leverageAdjustments;

    /* ---- leverage adjustments (applied to all four leverages; summed in the workbook's order) */
    var ficoNA = !fnLike && (fico === null || fico < LA.ficoFloor);
    var parts = {};
    if (!fnLike && fico !== null) {
      LA.fico.forEach(function (b) { if (fico >= b.min && fico < b.max + 1) { parts.fico = b.adj; } });
    }
    if (sdira) { parts.sdira = LA.sdira; }
    if (cit === 'Foreign National') { parts.foreignNational = LA.foreignNational; }
    if (cit === 'Non-Perm (No FICO)') { parts.nonPermNoFico = LA.nonPermNoFico; }
    var zi = (i.zipInfo && typeof i.zipInfo === 'object') ? i.zipInfo : null;
    var zipInfoMissing = !zi;
    var mhv = zi ? num(zi.mhv, null) : null;
    var ratio = (units === 1 && mhv) ? maxv / mhv : null;
    if (ratio !== null && !bool(i.threeComps, false) && ratio > LA.mhvRatioThreshold) { parts.mhv = LA.mhv; }
    if (zipInfoMissing && units === 1 && !bool(i.threeComps, false)) { parts.mhv = LA.mhv; }   /* conservative: assume the haircut */
    var g = T.targetAreaZips[z] || null, area = g ? g.area : null, geoMin = g ? (g.minValue || 0) : 0;
    if (area && LA.targetAreasWithLtvAdj.indexOf(area) >= 0) { parts.targetArea = (exp === '5+') ? LA.targetArea.exp5plus : LA.targetArea.other; }
    var adj = ['fico', 'sdira', 'foreignNational', 'nonPermNoFico', 'mhv', 'targetArea'].reduce(function (s, k) { return parts[k] === undefined ? s : s + parts[k]; }, 0);

    /* ---- sizing (workbook-literal) */
    var cell = ((T.leverageMatrix[lt] || {})[bucket] || {})[exp];
    var base = cell ? cell.limits : null;
    var raw = null;
    if (base && !ficoNA) {
      var ai = base.aiLtv + adj, il = (base.iLtc === null ? null : base.iLtc + adj), ar = base.arLtv + adj, tl = base.tLtc + adj;
      var q17 = ai * aiv, q18 = (il === null ? null : il * cb);
      var q19 = (q18 === null) ? q17 : Math.min(q17, q18);
      var q21 = ar * maxv, q22 = tl * (cb + rehab), q23 = Math.min(q21, q22);
      var q25 = rehab === 0 ? 0 : Math.min(q23 - q19, rehab);
      var q28 = rehab === 0 ? q19 : Math.min(q19 + q25, q23);
      var noIa = exp !== '5+';
      var q30 = (rehab + q19 > q28 && noIa) ? Math.max(0, q28 - rehab) : q19;
      var q31 = lt === 'RT' ? Math.min(q30, payoff * T.limits.rateTermPayoffMultiple) : q30;
      var q32 = rehab === 0 ? 0 : Math.min(q28 - q31, rehab);
      var q33 = rehab - q32;
      var q34 = rehab === 0 ? q31 : Math.min(q31 + q32, q28);
      raw = { aiLtv: ai, iLtc: il, arLtv: ar, tLtc: tl, Q17: q17, Q18: q18, Q19: q19, Q21: q21, Q22: q22, Q23: q23, Q25: q25, Q28: q28,
              Q30: q30, Q31: q31, Q32: q32, Q33: q33, Q34: q34, noIa: noIa };
    }

    /* ---- capital-partner rate before the Ternus markup */
    var fk = (fnLike || fico === null) ? 'No FICO (Foreign National)' :
      (fico < 650 ? '< 650' : fico < 680 ? '650 - 679' : fico < 700 ? '680 - 699' : '700+');
    var A = T.pricing.adders;
    var fAdd = A.ficoBucket[fk]; fAdd = (typeof fAdd === 'number') ? fAdd : 0;
    var x18 = ((lt === 'RT' || lt === 'CO') ? A.refinance : 0) + fAdd + (bucket === 'Multi' ? A.multi : 0) + A.guc + (sdira ? A.sdira : 0);
    var lamt = 0;
    if (raw) {
      var L0 = raw.Q34, hit = null;
      A.loanAmountBuckets.forEach(function (b) { if (b.min <= L0) { hit = b; } });
      if (hit && L0 <= hit.max) { lamt = hit.adder; }
    }
    x18 += lamt;
    function rate12For(p) { var row = T.pricing.baseRate[String(p)]; return row ? row[exp] + x18 : null; }
    var grid = {};
    T.pricing.basePointsOptions.forEach(function (p) {
      var r12 = rate12For(p), o = {};
      T.pricing.terms.forEach(function (t) { o[String(t)] = r12 + T.pricing.termOffsets[String(t)]; });
      grid[String(p)] = o;
    });
    var off = T.pricing.termOffsets[String(term)];
    var partnerRate12 = rate12For(bpts);
    var partnerRate = (off === undefined || partnerRate12 === null) ? null : partnerRate12 + off;

    /* ---- eligibility */
    var st = String(i.state || '').toUpperCase();
    if (T.ineligibleStates.indexOf(st) >= 0) { reasons.push(reason('STATE_INELIGIBLE')); }
    if (bool(i.applyTernusLicensing, true) && T.ternusLicensingStates.indexOf(st) >= 0 && T.ineligibleStates.indexOf(st) < 0) { reasons.push(reason('STATE_TERNUS_LICENSING')); }
    if (lt === 'CO') { reasons.push(reason('CASH_OUT_NOT_OFFERED')); }
    if (fnLike) { reasons.push(reason('CITIZENSHIP_NOT_PERMITTED')); }
    if (ficoNA) { reasons.push(reason('FICO_BELOW_650')); }
    if (!base && lt !== 'CO') { reasons.push(reason('MULTI_NEEDS_EXPERIENCE')); }
    if (bucket === 'Multi' && area) { reasons.push(reason('MULTI_IN_TARGET_AREA')); }
    var minVal = Math.max(T.limits.minValue[bucket], geoMin || 0);
    if (maxv < minVal) { reasons.push(reason('VALUE_BELOW_MIN')); }
    if (bucket === 'Multi' && maxv / units < T.limits.minValuePerUnitMulti) { reasons.push(reason('VALUE_PER_UNIT_BELOW_MIN')); }
    var sq = num(i.finalSqft, null);
    var perUnit = T.minSqftPerUnit[ptype];
    var minSq = perUnit ? perUnit * units : pinfo.minSqft;
    if (sq !== null && minSq !== null && minSq !== undefined && sq < minSq) { reasons.push(reason('SQFT_BELOW_MIN')); }
    if (isNo(i.entitlements)) { reasons.push(reason('ENTITLEMENTS_REQUIRED')); }
    if (off === undefined) { reasons.push(reason('TERM_NOT_OFFERED')); }
    if (sdira && (cit !== 'US Citizen' || fico === null || fico < 700)) { reasons.push(reason('SDIRA_NOT_PERMITTED')); }
    if (!(aiv > 0) || !(arv > 0) || !(rehab > 0) || !(cb > 0)) { reasons.push(reason('MISSING_INPUTS')); }

    /* ---- standing conditions (do not change eligibility) */
    conditions.push('Desktop feasibility study and fund control by the same third party; draws by inspection.');
    conditions.push('Environmental screen.');
    conditions.push(bucket === 'Multi' ? 'Narrative or full appraisal with as-is (land) and as-completed values.' : 'Full appraisal with as-is (land) and as-completed values.');
    conditions.push("Builder's risk insurance for the full construction period.");
    conditions.push('Lot individually parceled, properly zoned, with water/sewer (or well/septic) laterally ready.');
    conditions.push('Construction budget must carry at least a 10% contingency line.');
    if (isNo(i.permits)) { conditions.push('Building permits are not needed to close but must be issued before the first draw.'); }
    if (isNo(i.approvedPlans)) { conditions.push('Approved plans, or proposed plans with an architect letter confirming they meet local code, are required.'); }
    if (rehab > 0 && soft / rehab > 0.15) { conditions.push('Soft costs are limited to 15% of the construction budget; the budget will need to be reallocated.'); }
    if (lt === 'RT') { conditions.push('Refinances require management approval, a payoff letter and pay history.'); }
    if (area) { conditions.push('Market overlay: full interior appraisal through an approved national AMC; $175,000 minimum value.'); }
    if (zipInfoMissing && units === 1) { conditions.push('Zip market data was not available; this estimate assumes the 10% high-value adjustment, which may not apply.'); }
    if (raw && raw.noIa) { conditions.push('With fewer than 5 completed ground-up projects, the full construction budget is funded and the initial advance is reduced (down to $0).'); }

    var out = {
      product: 'Ground-Up Construction', version: VERSION, eligible: false, reasons: reasons, conditions: conditions,
      expBucket: exp, propertyBucket: bucket, loanType: lt, zipInfoMissing: zipInfoMissing, mhv: mhv, mhvRatio: ratio, targetArea: area, adjustments: parts, totalAdj: adj,
      raw: raw, ficoKey: fk, loanAmountAdder: lamt, partnerRate12: partnerRate12, partnerRate: partnerRate, partnerRateGrid: grid,
      minValue: minVal, minSqft: (minSq === undefined ? null : minSq),
      loan: null, initialAdvance: null, constructionHoldback: null, oopRehab: null, rate: null, points: null, fee: T.revenueRule.TERNUS_FEE,
      payment: null, cashToClose: null, liquidityRequired: null, ltc: null, ltarv: null, iltc: null, aiLtvActual: null
    };
    if (!raw) { return out; }

    /* ---- public sizing: clamp like the v7 Elite engine (IA never above the loan; max loan cap trims the holdback) */
    var loan = raw.Q34, ia = raw.Q31, funded = raw.Q32;
    if (funded < 0 || ia > loan + 1e-9 || loan <= 0) { reasons.push(reason('SIZING_EXHAUSTED')); }
    var capped = false;
    if (loan > T.limits.maxLoan[bucket]) { loan = T.limits.maxLoan[bucket]; capped = true; }
    ia = Math.max(Math.min(ia, loan), 0);
    funded = Math.max(Math.min(funded, loan - ia), 0);
    var oop = rehab - funded;
    if (loan < T.limits.minLoan[bucket]) { reasons.push(reason('LOAN_BELOW_MIN')); }
    if (capped) { conditions.push('Loan limited to the program maximum of $' + T.limits.maxLoan[bucket].toLocaleString('en-US') + '.'); }

    /* ---- Ternus revenue rule (identical to Flip Sizer v7 Elite) */
    var R = T.revenueRule;
    var baseRev = R.TERNUS_PTS_MIN * loan + R.TERNUS_RATE_MIN * R.YSP_CREDIT * loan + R.TERNUS_FEE;
    var gap = Math.max(0, R.TERNUS_REV_FLOOR * loan - baseRev);
    var ptsMk = R.TERNUS_PTS_MIN + (loan > 0 ? R.GAP_TO_POINTS * gap / loan : 0);
    var rateMk = R.TERNUS_RATE_MIN + (loan > 0 ? (1 - R.GAP_TO_POINTS) * gap / (R.YSP_CREDIT * loan) : 0);
    var rate = partnerRate === null ? null : partnerRate + rateMk;
    var pts = bpts + ptsMk;
    var ysp = rateMk * R.YSP_CREDIT * loan, rev = ptsMk * loan + ysp + R.TERNUS_FEE;

    /* ---- cash to close and liquidity (v7 Elite definitions) */
    var down = lt === 'P' ? Math.max(pp - ia, 0) : (lt === 'RT' ? Math.max(payoff - ia, 0) : 0);
    var ins = num(i.insurancePremium, 0);
    var ptsCost = pts * loan, closing = T.liquidity.closingPct * loan;
    var ctc = down + ptsCost + closing + R.TERNUS_FEE + ins;
    var six = rate === null ? null : rate / 12 * loan * T.liquidity.monthsOfPayments;
    var liq = six === null ? null : ctc + oop + six + T.liquidity.rehabReservePct * rehab;
    var pay = rate === null ? null : rate / 12 * (dutch ? loan : ia);

    /* workbook-basis figures (capital-partner rate and points only) used by the validation harness */
    var wl36 = lt === 'P' ? (pp - raw.Q31) : ((lt === 'RT' && raw.Q31 < payoff) ? payoff - raw.Q31 : 0);
    var wl37 = (bpts + T.liquidity.closingPct) * raw.Q34;
    var wl39 = partnerRate === null ? null : partnerRate / 12 * raw.Q34 * T.liquidity.monthsOfPayments + T.liquidity.rehabReservePct * rehab;
    var wpay = partnerRate === null ? null : partnerRate / 12 * (dutch ? raw.Q34 : raw.Q31);

    out.eligible = reasons.length === 0;
    out.loan = loan; out.initialAdvance = ia; out.constructionHoldback = funded; out.oopRehab = oop; out.capped = capped;
    out.rate = rate; out.points = pts; out.pointsCost = ptsCost; out.ptsMarkup = ptsMk; out.rateMarkup = rateMk; out.ysp = ysp;
    out.ternusRevenue = rev; out.revenueGap = gap;
    out.pricingNote = gap > 0 ? 'Ternus 300 bps revenue minimum applied.' : 'Base Ternus markups meet the 300 bps minimum.';
    out.downPayment = down; out.closingCosts = closing; out.cashToClose = ctc; out.sixMonthPayments = six; out.liquidityRequired = liq;
    out.payment = pay; out.paymentFullyDrawn = rate === null ? null : rate / 12 * loan;
    out.ltc = (cb + rehab) ? loan / (cb + rehab) : null; out.ltarv = arv ? loan / arv : null;
    out.iltc = cb ? ia / cb : null; out.aiLtvActual = aiv ? ia / aiv : null;
    out.wbL36 = wl36; out.wbL37 = wl37; out.wbL39 = wl39; out.wbPayment = wpay;
    return out;
  }

  /* ---------- zip shards (guc/zip-shards/gzNN.txt) ---------- */
  function shardFileFor(zip) { var z = zip5(zip) || '00000'; return 'gz' + z.slice(0, 2) + '.txt'; }
  function decodeShard(b64) {
    var s = String(b64 || '').replace(/\s+/g, ''), txt;
    if (typeof atob === 'function') { txt = atob(s); }
    else if (typeof Buffer !== 'undefined') { txt = Buffer.from(s, 'base64').toString('ascii'); }
    else { throw new Error('no base64 decoder'); }
    return JSON.parse(txt);
  }
  /* shard = decoded object for the zip's prefix. Pass null/undefined when the shard could not be loaded: the result is
     null and priceGUC then behaves conservatively (see inputs). found=false or mhv=null = workbook behaviour (no MHV test). */
  function lookupZip(zip, shard, tables) {
    if (!shard || typeof shard !== 'object') { return null; }
    var T = tables || TABLES, z = zip5(zip), row = shard[z], g = (T && T.targetAreaZips) ? T.targetAreaZips[z] : null;
    return { zip: z, found: !!row, mhv: (row && typeof row[0] === 'number') ? row[0] : null,
             targetArea: g ? g.area : null, targetAreaMinValue: g ? g.minValue : null };
  }

  /* values-only lines for a PDF or email - never the tables or the internal pricing build-up */
  function money(n) { return (n < 0 ? '-$' : '$') + Math.round(Math.abs(n)).toLocaleString('en-US'); }
  function pct(r, dp) { return (r * 100).toFixed(dp === undefined ? 2 : dp) + '%'; }
  function summaryLines(q) {
    if (!q) { return []; }
    if (!q.eligible) { return ['Ground-Up Construction: not available for this deal - ' + q.reasons.map(function (r) { return r.text; }).join(' ')]; }
    return ['Ground-Up Construction: rate ' + pct(q.rate) + ' + ' + (q.points * 100).toFixed(2) + ' pts | loan ' + money(q.loan) +
            ' | initial advance ' + money(q.initialAdvance) + ' | construction holdback ' + money(q.constructionHoldback),
            'Monthly interest-only payment at closing ' + money(q.payment) + ' | cash to close ' + money(q.cashToClose) +
            ' | liquidity to verify (not cash due) ' + money(q.liquidityRequired),
            'Estimate for discussion purposes only - subject to underwriting, verification and final approval.'];
  }
  /* public view: strips the internal pricing build-up and workbook-basis fields */
  function publicView(q) {
    var keep = ['product', 'version', 'eligible', 'reasons', 'conditions', 'loan', 'initialAdvance', 'constructionHoldback', 'oopRehab',
                'rate', 'points', 'pointsCost', 'fee', 'payment', 'paymentFullyDrawn', 'downPayment', 'closingCosts', 'cashToClose',
                'liquidityRequired', 'ltc', 'ltarv', 'iltc', 'aiLtvActual', 'capped', 'zipInfoMissing', 'sixMonthPayments', 'pricingNote'];
    var o = {}; keep.forEach(function (k) { if (q[k] !== undefined) { o[k] = q[k]; } }); return o;
  }

  var api = { VERSION: VERSION, setTables: setTables, priceGUC: priceGUC, expBucket: expBucket, summaryLines: summaryLines,
              shardFileFor: shardFileFor, decodeShard: decodeShard, lookupZip: lookupZip,
              publicView: publicView, REASONS: REASONS };
  return api;
});

/* Program hooks for the adapter: ground-up (guc-v1) and DSCR. Inputs come from app.js inputs(). */
window.TUS_HOOKS = (function () {
  'use strict';
  var CFG = window.TUS_CONFIG || {};
  var T = window.TUS_TABLES || {};
  var GU = window.TernusGUCEngine; if (GU && T.guc) GU.setTables(T.guc);
  var gz = {}, gzFiles = {};
  // AE compensation margin (Tim 2026-10-02), shared with engines-adapter.js: +0.50 pt + $500 on every public quote.
  var AEM = window.TUS_AEM = { pts: 0.005, fee: 500 };
  function aeCost(loan) { return AEM.pts * loan + AEM.fee; }
  function money(n) { return n == null || !isFinite(n) ? '-' : '$' + Math.round(n).toLocaleString('en-US'); }
  function pts(p) { return (p * 100).toFixed(2) + ' pts'; }

  // ---------- ground-up ----------
  function prefetchGUC(i) {
    if (!GU || !/^\d{5}$/.test(String(i.zip || ''))) return Promise.resolve();
    var z = String(i.zip); if (z in gz) return Promise.resolve();
    var f = GU.shardFileFor(z), bundle = 'tus-gz-' + z.charAt(0) + '.txt', base = CFG.gucShardBase || CFG.shardBase || 'zip-bundles/';
    var p = gzFiles[f] || (gzFiles[f] = fetch(base + bundle).then(function (r) { if (!r.ok) throw 0; return r.json(); }).then(function (b) { if (!b[f]) throw 0; return GU.decodeShard(String(b[f]).trim()); }));
    return p.then(function (sh) { gz[z] = GU.lookupZip(z, sh); }, function () { gz[z] = null; delete gzFiles[f]; });
  }
  function gucIn(i) {
    var pt = { SFR: 'Detached SFR', TOWNHOME: 'Townhome', '2-4': '2-4 Unit Residential' }[i.gtype] || ((i.unitsN || 0) >= 10 ? 'Multi (10+ Unit)' : 'Multi (5-9 Unit)');
    return {
      loanPurpose: { buying: 'Purchase', owned24: 'Delayed Purchase', ownedOver24: 'Refinance (RT)' }[i.land] || 'Purchase',
      purchasePrice: i.price, asIsLandValue: i.lotValue || i.price, costsToDate: i.spent || 0, hardCosts: i.rehab || 0, softCosts: i.soft || 0,
      completedValue: i.arv, payoff: i.payoff || 0, citizenship: i.us ? 'US Citizen' : 'Foreign National', fico: i.fico,
      gucExperience: i.gucExp || 0, propertyType: pt, units: i.unitsN || 1, finalSqft: i.sqft, state: i.state, zip: i.zip,
      zipInfo: i.zip in gz ? gz[i.zip] : null, entitlements: i.entitled, permits: i.permits, approvedPlans: i.plans, termMonths: i.term || 12
    };
  }
  function gucQuote(i) {
    var q = GU.priceGUC(gucIn(i));
    if (q.eligible) { var a = aeCost(q.loan); q.points += AEM.pts; q.cashToClose += a; q.liquidityRequired += a; }
    return q;
  }
  function quoteGUC(i) {
    var q = gucQuote(i), label = 'Ground-Up Construction';
    if (!q.eligible) return [{ label: label, eligible: false, reasons: (q.reasons || []).map(function (r) { return r.text; }) }];
    return [{ label: label, eligible: true, rate: q.rate * 100, loan: q.loan, rows: [
      ['Loan amount', money(q.loan)], ['Initial advance at close', money(q.initialAdvance)], ['Construction holdback (drawn)', money(q.constructionHoldback)],
      ['Origination', pts(q.points)], ['Payment at closing', money(q.payment)], ['Payment fully drawn', money(q.paymentFullyDrawn)],
      ['Estimated cash to close', money(q.cashToClose)], ['Liquidity to verify (not due)', money(q.liquidityRequired)]],
      notes: (q.conditions || []).slice(0, 3).concat(["Excludes builder's risk insurance."]) }];
  }
  function prequalGUC(i) {
    var q = gucQuote(i);
    if (!q.eligible || !(i.cash >= q.cashToClose)) return { maxLoan: 0 }; // cash-to-close gate only (Tim 2026-10-06); liquidity is verified later
    return { maxPurchase: i.price, maxLoan: Math.floor(Math.round(q.loan) / 1000) * 1000, productLabel: 'Ground-Up Construction',
             purchLabel: 'Lot purchase price up to', finLabel: 'Financing up to (incl. construction)' };
  }

  // ---------- DSCR (zip overlays live in the tables; no shards) ----------
  var DS = window.TernusDSCR; if (DS && T.dscr) DS.setTables(T.dscr);
  function dscrIn(i) {
    var u = String(i.units || '1'), rent = i.rent || 0;
    return {
      purpose: { purchase: 'P', refi: 'RT', cashout: 'CO' }[i.purpose] || 'P', payoff: i.payoff || 0, value: i.price || 0,
      propType: u === 'condo' ? 'Condo (W)' : (u === '1' ? 'Detached SFR' : '2-4 Unit Residential'), units: u === 'condo' ? 1 : +u,
      state: i.state, zip: i.zip, citizenship: i.us ? 'US' : 'FN', fico: i.fico,
      occupancy: i.leased === 'no' ? 'Vacant' : 'Leased', leaseType: i.leased === 'str' ? 'STR' : 'LTR',
      rentActual: rent, rentMarket: rent, grossRent: rent,
      taxes: (i.tax || 0) * 12, ins: (i.ins || 0) * 12, hoa: (i.hoa || 0) * 12, io: 'No IO', ppp: '5y (DP)'
    };
  }
  function dscrQuote(i) {
    var q = DS.priceDSCR(dscrIn(i));
    if (q.eligible) {
      var a = aeCost(q.loan); q.points = (q.points || 0) + AEM.pts; q.fee = (q.fee || 0) + AEM.fee;
      if (i.purpose === 'purchase') q.cashToClose += a;
      else { var net = (q.cashOut || 0) - (q.cashToClose || 0) - a; q.cashOut = Math.max(0, net); q.cashToClose = Math.max(0, -net); }
    }
    return q;
  }
  function quoteDSCR(i) {
    var q = dscrQuote(i), label = 'DSCR 30-Year Fixed';
    if (!q.eligible) return [{ label: label, eligible: false, reasons: q.reasons || [] }];
    var isP = i.purpose === 'purchase';
    var rows = [['Loan amount', money(q.loan)], ['Loan-to-value', (q.ltv * 100).toFixed(1) + '%'], ['Points', pts((q.points || 0) + (q.lenderPoints || 0))],
      ['Ternus fee', money(q.fee)], ['Monthly principal and interest', money(q.payment)], ['DSCR', q.dscr.toFixed(2)],
      isP ? ['Estimated cash to close', money(q.cashToClose)] : (q.cashOut > 0 ? ['Estimated cash out', money(q.cashOut)] : ['Estimated cash to close', money(q.cashToClose)]),
      ['Reserves to verify (not due)', money(q.reservesRequired)]];
    return [{ label: label, eligible: true, rate: q.rate * 100, loan: q.loan, rows: rows,
      notes: ['5-year prepayment structure. Other prepay and interest-only options are available through your Account Executive.'] }];
  }
  function prequalDSCR(i) {
    var q = dscrQuote(i);
    if (!q.eligible || !(i.cash >= (q.cashToClose || 0))) return { maxLoan: 0 }; // cash-to-close gate only (Tim 2026-10-06); reserves verified later
    var isP = i.purpose === 'purchase';
    return { maxPurchase: i.price, maxLoan: Math.floor(Math.round(q.loan) / 1000) * 1000, productLabel: 'DSCR 30-Year Fixed',
             purchLabel: isP ? 'Purchase price up to' : 'Property value', finLabel: 'Financing up to' };
  }

  return { prefetchGUC: prefetchGUC, quoteGUC: quoteGUC, prequalGUC: prequalGUC, quoteDSCR: quoteDSCR, prequalDSCR: prequalDSCR };
})();

/* Adapter: unified-sizer inputs -> program engines -> display cards.
   Requires window.TUS_TABLES = {flip, dscr, guc} and the engine globals injected by build.py. */
window.TUS_ENGINES = (function () {
  'use strict';
  var T = window.TUS_TABLES || {};
  var CFG = window.TUS_CONFIG || {};
  var FE = window.TernusFlipEngine; if (FE && T.flip) FE.setTables(T.flip);
  var zipCache = {}, shardCache = {};
  // Estimated closing inputs for public quotes (same defaults as the prequal search; labeled as estimates on screen).
  var EST = { insPct: 0.012, otherPct: 0.01475 };

  function money(n) { return n == null || !isFinite(n) ? '-' : '$' + Math.round(n).toLocaleString('en-US'); }
  function pts(p) { return (p * 100).toFixed(2) + ' pts'; }

  // ---------- zip shards (flip) ----------
  function prefetch(i) {
    var H = window.TUS_HOOKS || {};
    if (i.program === 'ground') return H.prefetchGUC ? H.prefetchGUC(i) : Promise.resolve();
    if (i.program === 'rental') return H.prefetchDSCR ? H.prefetchDSCR(i) : Promise.resolve();
    if (i.program !== 'flip' || !FE || !/^\d{5}$/.test(String(i.zip || ''))) return Promise.resolve();
    var z = String(i.zip); if (zipCache[z]) return Promise.resolve();
    // shards ship as 10 bundles per program: tus-fz-<first digit>.txt = {"fz75.txt": "<shard text>", ...}
    // v2.0 bundles carry county fips / population / median listing price; new prefix so cached v1 bundles are never mixed in
    var file = FE.shardFileFor(z), bundle = (CFG.fzPrefix || 'tus2-fz-') + z.charAt(0) + '.txt', base = CFG.shardBase || 'zip-bundles/';
    var p = shardCache[file] || (shardCache[file] = fetch(base + bundle).then(function (r) { if (!r.ok) throw 0; return r.json(); }).then(function (b) { if (!b[file]) throw 0; return FE.decodeShard(String(b[file]).trim()); }));
    return p.then(function (shard) { zipCache[z] = FE.lookupZip(z, shard, T.flip); }, function () { zipCache[z] = { miss: true }; delete shardCache[file]; });
  }

  // ---------- flip ----------
  // v2.0 flip inputs (Underwriting Guidelines v2.0, effective 2026-10-19). On a refinance the wizard's "price" is the current as-is value.
  function flipIn(i) {
    var u = String(i.units || '1'), refi = i.purpose === 'refi', asIs = refi ? i.price : (i.asIs || i.price);
    var base = (refi ? asIs : i.price) || 0;  // estimate basis: purchase price; As-Is on a refinance (approved site default)
    return {
      purpose: refi ? 'refinance' : 'purchase', purchasePrice: refi ? 0 : i.price, asIsValue: asIs,
      acquisitionCost: i.acq || 0, rehabToDate: i.rtd || 0, inherited: !!i.inherited, ownedOver12: !!i.owned12, payoff: refi ? (i.payoff || 0) : 0,
      rehab: i.fund === false ? 0 : i.rehab, arv: i.fund === false ? asIs : i.arv, state: i.state, zip: i.zip,
      zipInfo: zipCache[i.zip] && !zipCache[i.zip].miss ? zipCache[i.zip] : undefined,
      propType: u === 'condo' ? 'CONDO' : (u === 'townhome' ? 'TOWNHOME' : (u === '1' ? 'SFR' : '2-4_FAMILY')), units: /^\d$/.test(u) ? +u : 1,
      fico: i.fico, flips: i.exp, citizenship: i.us ? 'US Citizen' : 'Foreign National', usAnchor: !!i.us,
      structural: !!i.heavy, rescueFinancing: !!i.rescue, stabilized: i.stab !== false,
      insurancePremium: base * EST.insPct, otherClosingCosts: base * EST.otherPct
    };
  }
  // AE compensation margin (Tim 2026-10-02): +0.50 pt origination + $500 fee on every public quote, on top of Ternus revenue.
  // QuickTern takes the points through its borrower-paid comp input (so the return test and cash worksheet see them);
  // Elite/DSCR/GUC have no such input, so points and the fee are layered onto points, cash to close and liquidity.
  var AEM = window.TUS_AEM || { pts: 0.005, fee: 500 };
  function flipCard(q, label, aeInEngine) {
    if (!q.eligible) {
      var codes = (q.reasons || []).map(function (r) { return r.code; });
      // plain return-test wording (Tim 2026-10-06; the old text read like an initial-advance problem); other reasons kept
      var rt = codes.indexOf('RETURN_TEST') >= 0, why = [];
      (q.reasons || []).forEach(function (r) {
        if (r.code === 'RETURN_TEST') why.push('QuickTern requires the after-repair value to be at least 10% above the total loan cost (loan, fees, six months of interest, insurance, taxes and 6% sale costs). On these numbers the largest loan that meets that is under the $50,000 minimum or no more than the renovation holdback. Your Account Executive can review options.');
        else if (!(rt && r.code === 'LOAN_MIN')) why.push(r.text);
      });
      return { label: label, eligible: false, reasons: why };
    }
    var aeCost = (aeInEngine ? 0 : AEM.pts * q.loan) + AEM.fee, F = q.fees || {}, rows = [['Loan amount', money(q.loan)], ['Initial advance at close', money(q.initialAdvance)]];
    if (q.rehabEscrow > 0) rows.push(['Rehab escrow (drawn as completed)', money(q.rehabEscrow)]);
    rows.push(['Origination', pts(q.points + AEM.pts)], ['Monthly interest-only payment', money(q.payment)]);
    if (F.docPrep) rows.push(['Doc prep + wire (at closing)', money(F.docPrep + (F.wire || 0))]);
    var r = q.refi;
    if (r && r.cashToBorrower - AEM.fee > 0) rows.push(['Estimated cash to you at closing', money(r.cashToBorrower - AEM.fee)]);  // AE fee assumed paid from proceeds
    else rows.push(['Estimated cash to close', money((q.cashToClose || 0) + aeCost)]);
    if (r && r.interestReserve > 0) rows.push(['Interest reserve held for you (6 months)', money(r.interestReserve)]);
    if (F.application) rows.push(['Application fee (paid at application)', money(F.application)]);
    if (!r) rows.push(['Proof of capital (verified, not due)', money(q.proofOfCapital + aeCost)]);
    var notes = (q.warnings || []).filter(function (w) { return !/not provided|not checked/i.test(w) || /county/i.test(w); }).slice(0, 3);
    return { label: label, eligible: true, rate: q.rate * 100, loan: q.loan, rows: rows, notes: notes, raw: q };
  }
  // v2.0 product line-up on the flip path: QuickTern (purchase + refi) when Ternus funds renovation; Bridge (purchase + refi) when it
  // doesn't, or when QuickTern's only problem is renovation under $10,000; Elite on purchases with renovation (unchanged, correspondent-priced).
  function quoteFlip(i) {
    var x = flipIn(i), withAE = Object.assign({}, x, { brokerPts: AEM.pts, brokerPayer: 'Borrower' }), out = [];
    if (i.fund !== false) {
      var qt = FE.priceQuickTern(withAE);
      out.push(flipCard(qt, 'QuickTern', true));
      if (qt.routeTo === 'Bridge') out.push(flipCard(FE.priceBridge(withAE), 'Bridge', true));
      if (i.purpose === 'purchase') out.push(flipCard(FE.priceElite(x), 'Elite', false));
    } else {
      out.push(flipCard(FE.priceBridge(withAE), 'Bridge', true));
    }
    var miss = i.zip && zipCache[i.zip] && zipCache[i.zip].miss;
    if (miss) out.forEach(function (c) { if (c.eligible) c.notes = ['Local market data was unavailable; your Account Executive will confirm market terms.'].concat(c.notes || []); });
    return out;
  }
  // Pre-qualification rule (Tim 2026-10-06; v2.0 order QuickTern -> Bridge -> Elite): the letter is issued on the DEAL ENTERED.
  // Stated cash only has to cover cash to close (incl. the AE margin); full proof of capital is "subject to verification", not a gate.
  function prequalFlip(i) {
    if (!(i.price > 0)) return { maxLoan: 0 };
    var x = flipIn(i), withAE = Object.assign({}, x, { brokerPts: AEM.pts, brokerPayer: 'Borrower' });
    function fits(q, aeIn) { if (!q.eligible) return false; if (q.refi && q.refi.cashToBorrower - AEM.fee >= 0) return true; return i.cash >= (q.cashToClose || 0) + (aeIn ? 0 : AEM.pts * q.loan) + AEM.fee; }
    if (i.fund !== false) {
      var qt = FE.priceQuickTern(withAE);
      if (fits(qt, true)) return letterOn(i, qt, 'QuickTern', true);
      if (qt.routeTo === 'Bridge') { var b1 = FE.priceBridge(withAE); if (fits(b1, true)) return letterOn(i, b1, 'Bridge', false); }
      if (i.purpose === 'purchase' && i.arv > 0) { var el = FE.priceElite(x); if (fits(el, false)) return letterOn(i, el, 'Elite', true); }
    } else {
      var b = FE.priceBridge(withAE); if (fits(b, true)) return letterOn(i, b, 'Bridge', false);
    }
    return { maxLoan: 0 };
  }
  function letterOn(i, q, label, reno) {
    var refi = i.purpose === 'refi';
    // round to the dollar first: engine loans can be 251999.99999999997, which must letter as $252,000, not $251,000
    return { maxPurchase: i.price, maxLoan: Math.floor(Math.round(q.loan) / 1000) * 1000, productLabel: label + (refi ? ' refinance' : ''),
             purchLabel: refi ? 'As-is value' : 'Purchase price up to', finLabel: reno ? 'Financing up to (incl. renovation)' : 'Financing up to' };
  }

  // ---------- dscr / guc (wired when engines land) ----------
  function pending(label) { return [{ label: label, eligible: false, reasons: ['Pricing for this program is being finalized. Your Account Executive will quote it directly.'] }]; }
  var DS = window.TernusDSCR || null, GU = window.TernusGUCEngine || null;
  var hooks = window.TUS_HOOKS || {};

  // public text never cites internal guide sections
  function clean(s) { return String(s).replace(/\s*\((?:guide\s*)?\xa7[^)]*\)/gi, '').replace(/\s*\(guide [^)]*\)/gi, '').replace(/\s*\b(?:guide\s*)?\xa7\s*[\d.]+/gi, ''); }
  function best(cards) {
    cards.forEach(function (c) { if (c.reasons) c.reasons = c.reasons.map(clean); if (c.notes) c.notes = c.notes.map(clean); });
    var ok = cards.filter(function (c) { return c.eligible; });
    if (ok.length) ok.reduce(function (a, b) { return b.rate < a.rate ? b : a; }).best = true;
    return cards;
  }
  return {
    stub: false,
    prefetch: prefetch,
    quote: function (program, i) {
      if (program === 'flip') return best(quoteFlip(i));
      if (program === 'rental') return best(hooks.quoteDSCR ? hooks.quoteDSCR(i, DS, T.dscr) : pending('DSCR Rental'));
      return best(hooks.quoteGUC ? hooks.quoteGUC(i, GU, T.guc) : pending('Ground-Up'));
    },
    prequal: function (program, i) {
      if (!i.fico || i.fico < 620) return null;
      if (program === 'flip') return prequalFlip(i);
      if (program === 'rental') return hooks.prequalDSCR ? hooks.prequalDSCR(i, DS, T.dscr) : null;
      return hooks.prequalGUC ? hooks.prequalGUC(i, GU, T.guc) : null;
    }
  };
})();

/* Ternus pre-qualification letter (jsPDF 2.5.1, Poppins = approved Outfit fallback for PDF). */
window.TUS_LETTER = (function () {
  'use strict';
  var JSPDF = 'https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js';
  var FONT = 'https://cdn.jsdelivr.net/gh/google/fonts@main/ofl/poppins/Poppins-';
  var C = { tb: [8, 120, 183], db: [38, 58, 125], tl: [1, 150, 150], ink: [29, 36, 51], mut: [91, 100, 117], pale: [234, 243, 246] };
  var ADDR = 'Ternus Lending, LLC  |  245 Cedar Sage Dr, Suite 240, Garland, TX 75040  |  ternus.com';
  var libP = null, fontP = null;

  function loadLib() {
    if (window.jspdf) return Promise.resolve();
    if (libP) return libP;
    libP = new Promise(function (res, rej) {
      var s = document.createElement('script'); s.src = JSPDF; s.onload = res; s.onerror = function () { libP = null; rej(new Error('jspdf')); };
      document.head.appendChild(s);
    });
    return libP;
  }
  function b64(buf) { var s = '', b = new Uint8Array(buf); for (var i = 0; i < b.length; i += 0x8000) s += String.fromCharCode.apply(null, b.subarray(i, i + 0x8000)); return btoa(s); }
  function loadFonts() {
    if (fontP) return fontP;
    fontP = Promise.all(['Medium', 'SemiBold', 'Bold'].map(function (w) {
      return fetch(FONT + w + '.ttf').then(function (r) { if (!r.ok) throw 0; return r.arrayBuffer(); }).then(function (a) { return [w, b64(a)]; });
    })).catch(function () { return null; }); // fall back to helvetica
    return fontP;
  }
  function money(n) { return '$' + Math.round(n).toLocaleString('en-US'); }
  function fmtDate(d) { return d.toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }); }

  function make(o) {
    return Promise.all([loadLib(), loadFonts()]).then(function (r) {
      var fonts = r[1], doc = new window.jspdf.jsPDF({ unit: 'pt', format: 'letter' });
      var F = { m: 'helvetica', s: 'helvetica', b: 'helvetica', ms: 'normal', ss: 'bold', bs: 'bold' };
      if (fonts) {
        fonts.forEach(function (f) { doc.addFileToVFS('Poppins-' + f[0] + '.ttf', f[1]); doc.addFont('Poppins-' + f[0] + '.ttf', 'Poppins' + f[0], 'normal'); });
        F = { m: 'PoppinsMedium', s: 'PoppinsSemiBold', b: 'PoppinsBold', ms: 'normal', ss: 'normal', bs: 'normal' };
      }
      function font(k, size, col) { doc.setFont(F[k], F[k + 's']); doc.setFontSize(size); doc.setTextColor.apply(doc, col || C.ink); }
      var W = 612, L = 60, R = W - 60, y = 54;
      var now = o.issued ? new Date(o.issued) : new Date(), exp = new Date(now.getTime() + 30 * 864e5);
      var c = o.c || {}, ae = o.ae || {}, pq = o.pq || {};
      var name = ((c.first || '') + ' ' + (c.last || '')).trim();
      var prog = { flip: 'fix-and-flip', rental: 'rental (DSCR)', ground: 'ground-up construction' }[o.program] || 'investment property';

      // header: logo (574x403 source) + meta block
      if (window.TUS_LOGO) doc.addImage(window.TUS_LOGO, 'PNG', L, y - 6, 92, 92 * 403 / 574);
      font('s', 9, C.tl); doc.text('PRE-QUALIFICATION LETTER', R, y + 6, { align: 'right' });
      font('m', 10, C.mut);
      doc.text(fmtDate(now), R, y + 24, { align: 'right' });
      doc.text('Letter ID: ' + (o.id || ''), R, y + 38, { align: 'right' });
      doc.text('Expires: ' + fmtDate(exp), R, y + 52, { align: 'right' });
      y += 86; doc.setDrawColor.apply(doc, C.tb); doc.setLineWidth(1.5); doc.line(L, y, R, y);

      // borrower block
      y += 30; font('b', 12, C.db); doc.text(name, L, y);
      font('m', 10.5, C.ink);
      var lines = [];
      if (c.company) lines.push(c.company + (c.cstate ? ' (' + c.cstate + ')' : ''));
      if (c.phone10) lines.push(c.phone10.replace(/(\d{3})(\d{3})(\d{4})/, '$1-$2-$3'));
      if (c.email) lines.push(c.email);
      lines.forEach(function (t) { y += 15; doc.text(t, L, y); });

      // body
      y += 32; font('m', 11, C.ink); doc.text('Dear ' + (c.first || 'Investor') + ',', L, y);
      y += 22;
      var p1 = 'Based on the information you provided, Ternus Lending, LLC has pre-qualified ' + (c.company || name) + ' for ' + prog + ' financing on the terms below.';
      var w1 = doc.splitTextToSize(p1, R - L); doc.text(w1, L, y); y += w1.length * 15 + 12;

      // terms box
      var rows = [[pq.purchLabel || 'Purchase price up to', money(pq.maxPurchase || 0)], [pq.finLabel || 'Financing up to', money(pq.maxLoan || 0)], ['Program', pq.productLabel || prog], ['Property', o.addr || 'Not property-specific']];
      var bh = rows.length * 24 + 20;
      doc.setFillColor.apply(doc, C.pale); doc.roundedRect(L, y, R - L, bh, 6, 6, 'F');
      var ry = y + 28;
      rows.forEach(function (rw) { font('s', 10.5, C.db); doc.text(rw[0], L + 18, ry); font('b', 12, C.tb); doc.text(doc.splitTextToSize(rw[1], 260)[0], R - 18, ry, { align: 'right' }); ry += 24; });
      y += bh + 24;

      font('m', 11, C.ink);
      var p2 = 'You can share this letter with sellers and agents. Your Account Executive is ready to move on your deal as soon as you have one under contract.';
      var w2 = doc.splitTextToSize(p2, R - L); doc.text(w2, L, y); y += w2.length * 15 + 14;

      font('m', 8.5, C.mut);
      var p3 = 'This pre-qualification is based solely on information provided by the borrower, which has not been verified. It is subject to verification of credit, identity, experience, and funds; satisfactory appraisal or valuation of the property; underwriting; and final approval. This is not a loan approval or a commitment to lend. Rates, terms, and loan amounts may change until locked. Business-purpose loans only; not available for owner-occupied property. This letter expires on ' + fmtDate(exp) + '.';
      var w3 = doc.splitTextToSize(p3, R - L); doc.text(w3, L, y); y += w3.length * 11.5 + 26;

      // AE signature
      font('m', 11, C.ink); doc.text('Your Account Executive', L, y); y += 18;
      font('b', 12, C.db); doc.text(ae.name || 'Ternus Lending Team', L, y); y += 15;
      font('m', 10.5, C.ink);
      [ae.title, ae.phone, ae.email].forEach(function (t) { if (t) { doc.text(t, L, y); y += 14; } });

      // footer
      doc.setDrawColor.apply(doc, C.tl); doc.setLineWidth(0.75); doc.line(L, 742, R, 742);
      font('m', 8.5, C.mut); doc.text(ADDR, W / 2, 756, { align: 'center' });

      doc.save('Ternus-PreQualification-' + (o.id || 'letter') + '.pdf');
    });
  }
  return { make: make };
})();

/* Ternus Unified Loan Sizer - app shell.
   Globals injected by build.py: TUS_CONFIG, TUS_ROSTER, TUS_ENGINES (adapter), TUS_LETTER. */
(function () {
  'use strict';
  var CFG = window.TUS_CONFIG || {};
  var ROSTER = window.TUS_ROSTER || { aes: [], nextAvailable: null };
  var root = document.getElementById('tus');
  if (!root) return;

  var STATES = ['AL','AK','AZ','AR','CA','CO','CT','DE','DC','FL','GA','HI','ID','IL','IN','IA','KS','KY','LA','ME','MD','MA','MI','MN','MS','MO','MT','NE','NV','NH','NJ','NM','NY','NC','ND','OH','OK','OR','PA','RI','SC','SD','TN','TX','UT','VT','VA','WA','WV','WI','WY'];
  var FICO = [['760','760 or higher'],['740','740 - 759'],['720','720 - 739'],['700','700 - 719'],['680','680 - 699'],['660','660 - 679'],['640','640 - 659'],['620','620 - 639'],['0','Below 620']];
  var SMS_LABEL = 'I agree to receive SMS/text and phone communications from Ternus Lending LLC.';
  var EMAIL_LABEL = 'I agree to receive email communications from Ternus Lending LLC.';
  var LOWER = 'Lower rates and fees may be available. Please contact an Account Executive for your specific scenario.';
  var DISC = LOWER + ' For discussion purposes only. Quotes and pre-qualifications are based on information you provide and are subject to verification, underwriting, valuation, and final approval. This is not a commitment to lend. Rates and terms are subject to change until locked. Business-purpose loans on non-owner-occupied investment property only.';

  // ---------- state ----------
  var S = { i: 0, goal: null, program: null, p: {}, d: {}, c: {}, ae: null, aeLocked: false,
            results: null, pq: null, sent: false, letterId: null, t0: Date.now() };

  function qs(k) {
    var m = new RegExp('[?&]' + k + '=([^&#]*)').exec(location.search);
    if (m) return decodeURIComponent(m[1].replace(/\+/g, ' '));
    try { var a = JSON.parse(localStorage.getItem('ternus_attribution') || '{}'); return a[k] || ''; } catch (e) { return ''; }
  }
  function aeBySlug(slug) {
    if (!slug) return null;
    slug = String(slug).toLowerCase().replace(/[^a-z-]/g, '');
    for (var i = 0; i < ROSTER.aes.length; i++) if (ROSTER.aes[i].slug === slug) return ROSTER.aes[i];
    return null;
  }
  // AE landing pages set window.TUS_AE (or data-ae) and lock the AE; ?ae= preselects without locking.
  var pageAe = aeBySlug(root.getAttribute('data-ae') || window.TUS_AE);
  var preset = pageAe || aeBySlug(qs('ae'));
  if (preset) { S.ae = preset.slug; S.aeLocked = !!pageAe; }
  var g0 = qs('goal'); if (/^(quote|prequal|deal)$/.test(g0)) S.goal = g0;
  var p0 = qs('program'); if (/^(flip|rental|ground)$/.test(p0)) S.program = p0;

  // ---------- helpers ----------
  function esc(s) { return String(s == null ? '' : s).replace(/[&<>"']/g, function (c) { return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' }[c]; }); }
  function num(v) { var n = parseFloat(String(v == null ? '' : v).replace(/[$,\s]/g, '')); return isFinite(n) ? n : null; }
  function money(n) { return n == null || !isFinite(n) ? '-' : '$' + Math.round(n).toLocaleString('en-US'); }
  function pct(n, d) { return n == null || !isFinite(n) ? '-' : n.toFixed(d == null ? 2 : d) + '%'; }
  function roundDown(n, step) { return Math.floor(n / step) * step; }
  function aeObj() { return aeBySlug(S.ae) || (S.ae === 'next-available' ? ROSTER.nextAvailable : null); }
  function track(ev, extra) { try { (window.dataLayer = window.dataLayer || []).push(Object.assign({ event: ev, tus_goal: S.goal, tus_program: S.program }, extra || {})); } catch (e) {} }
  function $(sel) { return root.querySelector(sel); }

  function steps() { return ['goal', 'program', 'profile', 'deal', 'contact', 'results']; }
  function cur() { return steps()[S.i]; }

  // ---------- field builders ----------
  function field(o) {
    // o: {g:'p'|'d'|'c', k, label, type, opts, hint, req, ph, ac}
    var v = S[o.g][o.k]; var id = 'tus-' + o.g + '-' + o.k; var h = '<div><label for="' + id + '">' + esc(o.label) + (o.req ? '' : ' <span class="hint">(optional)</span>') + '</label>';
    if (o.type === 'select') {
      h += '<select id="' + id + '" data-g="' + o.g + '" data-k="' + o.k + '"><option value="">Select</option>';
      o.opts.forEach(function (x) { var val = Array.isArray(x) ? x[0] : x, lab = Array.isArray(x) ? x[1] : x; h += '<option value="' + esc(val) + '"' + (String(v) === String(val) ? ' selected' : '') + '>' + esc(lab) + '</option>'; });
      h += '</select>';
    } else {
      var t = o.type === 'money' || o.type === 'number' ? 'text' : (o.type || 'text');
      var im = o.type === 'money' || o.type === 'number' ? ' inputmode="decimal"' : (o.type === 'tel' ? ' inputmode="tel"' : '');
      var shown = v == null ? '' : (o.type === 'money' && num(v) != null ? Math.round(num(v)).toLocaleString('en-US') : v);
      h += '<input id="' + id + '" type="' + t + '"' + im + ' data-g="' + o.g + '" data-k="' + o.k + '" data-t="' + (o.type || 'text') + '" value="' + esc(shown) + '"' + (o.ph ? ' placeholder="' + esc(o.ph) + '"' : '') + (o.ac ? ' autocomplete="' + o.ac + '"' : '') + '>';
    }
    if (o.hint) h += '<div class="hint">' + esc(o.hint) + '</div>';
    return h + '<div class="err" data-err="' + o.g + '.' + o.k + '"></div></div>';
  }
  function choices(key, list) {
    return '<div class="choices">' + list.map(function (c) {
      return '<button type="button" class="choice' + (S[key] === c[0] ? ' on' : '') + '" data-pick="' + key + '" data-v="' + c[0] + '"><b>' + esc(c[1]) + '</b><span>' + esc(c[2]) + '</span></button>';
    }).join('') + '</div><div class="err" id="tus-pickerr"></div>';
  }
  function nav(nextLabel, noBack) {
    return '<div class="nav">' + (noBack ? '<span></span>' : '<button type="button" class="btn ghost" data-act="back">Back</button>') +
      (nextLabel ? '<button type="button" class="btn" data-act="next">' + esc(nextLabel) + '</button>' : '') + '</div>';
  }

  // ---------- step renderers ----------
  var R = {};
  R.goal = function () {
    return '<div class="eyebrow">Ternus Loan Sizer</div><h2>Price your deal. Get pre-qualified. Submit it.</h2>' +
      '<p class="lede">Real numbers in about two minutes. No credit pull.</p>' +
      choices('goal', [['quote', 'Get a quote', 'See rate, leverage, and cash to close.'], ['prequal', 'Get pre-qualified', 'Download a pre-qualification letter for sellers and agents.'], ['deal', 'Submit a deal', 'Send a property to an Account Executive now.']]) + nav('Continue', true);
  };
  R.program = function () {
    return '<div class="eyebrow">Step 2</div><h2>What are you doing?</h2><p class="lede">Pick the strategy. You can run another one after.</p>' +
      choices('program', [['flip', 'Fix and flip', 'Buy, renovate, sell. Short-term loan with rehab funds.'], ['rental', 'Rental (DSCR)', 'Buy or refinance a rental. Qualify on the rent, not your income.'], ['ground', 'Ground-up construction', 'Build new on a lot you own or are buying.']]) + nav('Continue');
  };
  R.profile = function () {
    var expOpts = S.program === 'rental' ? [['0', 'None yet'], ['1', '1 - 4 rentals'], ['5', '5 or more rentals']] : [['0', 'None yet'], ['1', '1 - 3 projects'], ['4', '4 projects'], ['5', '5 - 9 projects'], ['10', '10 or more projects']]; // splits serve both QuickTern (0-3/4-9/10+) and Elite (0/1-4/5+/10+) tiers
    return '<div class="eyebrow">Step 3</div><h2>About you</h2><p class="lede">Self-reported. We verify later, and nothing here pulls credit.</p><div class="card grid">' +
      field({ g: 'p', k: 'entity', label: 'Who will borrow?', type: 'select', req: 1, opts: [['llc', 'LLC'], ['lp', 'LP'], ['corp', 'Corporation'], ['tbd', 'An entity I will form before closing'], ['personal', 'Me personally'], ['trust', 'A trust'], ['ira', 'Self-directed IRA / 401(k)']] }) +
      field({ g: 'p', k: 'fico', label: 'Estimated credit score', type: 'select', req: 1, opts: FICO, hint: 'Middle score of the person who controls the borrowing company.' }) +
      field({ g: 'p', k: 'exp', label: S.program === 'rental' ? 'Rentals owned now' : 'Completed projects, last 36 months', type: 'select', req: 1, opts: expOpts }) +
      field({ g: 'p', k: 'us', label: S.program === 'flip' ? 'Will a US citizen or permanent resident who owns at least 20% of the borrowing company personally guarantee the loan?' : 'US citizen or permanent resident?', type: 'select', req: 1, opts: [['yes', 'Yes'], ['no', 'No']] }) +
      field({ g: 'p', k: 'cash', label: 'Cash available for this deal', type: 'money', req: 1, hint: 'Bank and brokerage balances you could use for down payment, closing costs, and reserves.' }) +
      '</div><div id="tus-ko"></div>' + nav('Continue');
  };
  R.deal = function () {
    var g = S.goal, P = S.program, h = '<div class="eyebrow">Step 4</div>';
    var pur = { g: 'd', k: 'purpose', label: 'Purchase or refinance?', type: 'select', req: 1, opts: [['purchase', 'Purchase'], ['refi', 'Refinance'], ['cashout', 'Cash-out refinance']] };
    var st = { g: 'd', k: 'state', label: 'Property state', type: 'select', req: 1, opts: STATES };
    var zip = { g: 'd', k: 'zip', label: 'Property zip code', req: g !== 'prequal', ph: '75040' };
    var isPur = S.d.purpose === 'purchase' || !S.d.purpose;
    var f = [];
    if (P === 'flip') {
      h += '<h2>' + (g === 'prequal' ? 'Your target deal' : 'The deal') + '</h2><p class="lede">' + (g === 'prequal' ? 'No property yet? Use a typical deal you are shopping for.' : 'Use contract numbers if you have them.') + '</p>';
      // v2.0 (2026-10-19): QuickTern purchase + refinance, Bridge purchase + refinance (no Ternus-funded renovation)
      var fRefi = S.d.purpose === 'refi', fund = S.d.fund !== 'no', inh = S.d.how === 'inherited';
      f = [{ g: 'd', k: 'purpose', label: 'Purchase or refinance?', type: 'select', req: 1, opts: [['purchase', 'Purchase'], ['refi', 'Refinance a property I already own']] },
        { g: 'd', k: 'fund', label: 'Will Ternus fund renovation on this property?', type: 'select', req: 1, opts: [['yes', 'Yes, fund the renovation'], ['no', 'No, it is ready now or I will renovate with my own money']] },
        { g: 'd', k: 'units', label: 'Property type', type: 'select', req: 1, opts: [['1', 'Single family'], ['2', '2 units'], ['3', '3 units'], ['4', '4 units'], ['townhome', 'Townhome (you own the land under it)'], ['condo', 'Condo, or a townhome in a condo association']] }];
      if (fRefi) {
        f = f.concat([{ g: 'd', k: 'how', label: 'How did the borrowing company (or its 20%+ owner) get the property?', type: 'select', req: 1, opts: [['bought', 'Bought it'], ['inherited', 'Inherited it (will, trust or probate)'], ['buying', 'Buying it now from someone else']] },
          { g: 'd', k: 'owned12', label: 'Owned more than 12 months by the time we fund?', type: 'select', req: 1, opts: [['no', 'No'], ['yes', 'Yes']] }]);
        if (!inh) f.push({ g: 'd', k: 'acq', label: 'Original purchase price (what the owner paid)', type: 'money', req: 1 });
        f = f.concat([{ g: 'd', k: 'rtd', label: 'Renovation already paid for', type: 'money', hint: 'With invoices and proof of payment. Hard costs plus permits, plans and inspections; your own labor does not count.' },
          { g: 'd', k: 'price', label: 'Current value as-is', type: 'money', req: 1 },
          { g: 'd', k: 'payoff', label: 'Payoff of all current loans and liens', type: 'money', req: 1, hint: 'Enter 0 if free and clear.' },
          { g: 'd', k: 'rescue', label: 'Is the current loan in default, or is this loan meant to cure a default?', type: 'select', req: 1, opts: [['no', 'No'], ['yes', 'Yes']] }]);
      } else {
        f = f.concat([{ g: 'd', k: 'price', label: 'Purchase price', type: 'money', req: 1 },
          { g: 'd', k: 'asis', label: 'As-is value', type: 'money', hint: 'Leave blank to use the purchase price.' }]);
      }
      if (fund) f = f.concat([{ g: 'd', k: 'rehab', label: fRefi ? 'Remaining renovation budget (work not yet done)' : 'Renovation budget', type: 'money', req: 1, hint: 'Include your contingency line (5-10% of the work; 10-15% on heavy projects). Minimum $10,000 of work. Need a line-item budget? Use the Ternus Rehab Budget Tool.' },
        { g: 'd', k: 'arv', label: 'After-repair value (ARV)', type: 'money', req: 1 }]);
      else f.push({ g: 'd', k: 'stab', label: 'Is the property habitable today, with no repairs needed and no open code case?', type: 'select', req: 1, opts: [['yes', 'Yes'], ['no', 'No']] });
      f = f.concat([st, zip]);
      if (fund) f.push({ g: 'd', k: 'heavy', label: 'Does the project include structural, foundation, roof-structure or load-bearing work; any added square footage or unit; a change of use; gutting to the studs; or an open code case?', type: 'select', req: 1, opts: [['no', 'No'], ['yes', 'Yes']] });
    } else if (P === 'rental') {
      h += '<h2>The rental</h2><p class="lede">We size on the rent. Taxes and insurance are monthly figures.</p>';
      f = [pur, { g: 'd', k: 'units', label: 'Property type', type: 'select', req: 1, opts: [['1', 'Single family'], ['2', '2 units'], ['3', '3 units'], ['4', '4 units'], ['condo', 'Condo / townhome']] },
        { g: 'd', k: 'price', label: isPur ? 'Purchase price' : 'Current value', type: 'money', req: 1 },
        { g: 'd', k: 'payoff', label: 'Current loan payoff', type: 'money', req: !isPur },
        { g: 'd', k: 'rent', label: 'Monthly rent (all units)', type: 'money', req: 1 },
        { g: 'd', k: 'tax', label: 'Monthly property tax', type: 'money', req: 1 },
        { g: 'd', k: 'ins', label: 'Monthly insurance', type: 'money', req: 1 },
        { g: 'd', k: 'hoa', label: 'Monthly HOA', type: 'money' },
        { g: 'd', k: 'leased', label: 'Leased today?', type: 'select', req: 1, opts: [['yes', 'Yes'], ['no', 'Vacant'], ['str', 'Short-term rental']] }, st, zip];
    } else {
      h += '<h2>The build</h2><p class="lede">Land plus construction, sized to the finished value.</p>';
      var owned = S.d.land === 'owned24' || S.d.land === 'ownedOver24';
      f = [{ g: 'd', k: 'land', label: 'The lot', type: 'select', req: 1, opts: [['buying', 'Buying it now'], ['owned24', 'Own it (24 months or less)'], ['ownedOver24', 'Own it (more than 24 months)']] },
        { g: 'd', k: 'price', label: owned ? 'What you paid for the lot' : 'Lot purchase price', type: 'money', req: 1 },
        { g: 'd', k: 'lotValue', label: 'Lot value today', type: 'money', req: owned, hint: owned ? '' : 'Leave blank to use the purchase price.' },
        { g: 'd', k: 'payoff', label: 'Current payoff on the lot', type: 'money', req: false, hint: 'Only if the lot has a loan on it.' },
        { g: 'd', k: 'spent', label: 'Costs already spent on the project', type: 'money' },
        { g: 'd', k: 'rehab', label: 'Hard costs (construction)', type: 'money', req: 1 },
        { g: 'd', k: 'soft', label: 'Soft costs (plans, permits, fees)', type: 'money', req: 1 },
        { g: 'd', k: 'arv', label: 'Completed value', type: 'money', req: 1 },
        { g: 'd', k: 'gtype', label: 'What are you building?', type: 'select', req: 1, opts: [['SFR', 'Single family'], ['TOWNHOME', 'Townhomes'], ['2-4', '2 - 4 units'], ['5+', '5 or more units']] },
        { g: 'd', k: 'units', label: 'Number of units', type: 'number', req: 1 },
        { g: 'd', k: 'sqft', label: 'Finished square feet (total)', type: 'number', req: 1 },
        { g: 'd', k: 'gucExp', label: 'Ground-up projects completed, last 36 months', type: 'select', req: 1, opts: [['0', 'None'], ['1', '1 - 4'], ['5', '5 or more']] },
        { g: 'd', k: 'entitled', label: 'Is the lot entitled for this build?', type: 'select', req: 1, opts: [['yes', 'Yes'], ['no', 'No']] },
        { g: 'd', k: 'permits', label: 'Building permits issued?', type: 'select', req: 1, opts: [['yes', 'Yes'], ['no', 'Not yet']] },
        { g: 'd', k: 'plans', label: 'Plans approved?', type: 'select', req: 1, opts: [['yes', 'Yes'], ['no', 'Not yet']] },
        { g: 'd', k: 'term', label: 'Loan term', type: 'select', req: 1, opts: [['12', '12 months'], ['9', '9 months'], ['18', '18 months']] }, st, zip];
    }
    if (g === 'deal') {
      f = f.concat([{ g: 'd', k: 'addr', label: 'Property address', req: 1, ac: 'street-address' }, { g: 'd', k: 'city', label: 'City', req: 1 },
        { g: 'd', k: 'contract', label: 'Contract status', type: 'select', req: 1, opts: [['signed', 'Under contract'], ['offer', 'Making offers'], ['owned', 'Already own it']] },
        { g: 'd', k: 'close', label: 'Target closing date', type: 'date', req: 1 }]);
    } else {
      f.push({ g: 'd', k: 'addr', label: 'Property address', hint: 'Leave blank for a general pre-qualification.' });
    }
    R._dealFields = f;
    return h + '<div class="card grid">' + f.map(field).join('') + '</div>' + nav('Continue');
  };
  R.contact = function () {
    var opts = ROSTER.aes.map(function (a) { return [a.slug, a.name + ' - ' + a.title]; });
    if (ROSTER.nextAvailable) opts.push([ROSTER.nextAvailable.slug, 'Next available Account Executive']);
    var aeF = S.aeLocked ? '' : field({ g: 'c', k: 'ae', label: 'Your Account Executive', type: 'select', req: 1, opts: opts, hint: 'Your letter and quote go to this person.' });
    if (!S.aeLocked && S.ae && !S.c.ae) S.c.ae = S.ae;
    var tease = teaser();
    return '<div class="eyebrow">Last step</div><h2>' + (S.goal === 'prequal' ? 'Where should we send your letter?' : S.goal === 'deal' ? 'Who is submitting?' : 'Where should we send your numbers?') + '</h2>' +
      (tease || '') +
      '<p class="lede">' + (S.goal === 'prequal' ? 'Your name, company, and contact details print on the letter.' : 'Your Account Executive follows up the same business day.') + '</p>' +
      '<div class="card grid">' +
      field({ g: 'c', k: 'first', label: 'First name', req: 1, ac: 'given-name' }) + field({ g: 'c', k: 'last', label: 'Last name', req: 1, ac: 'family-name' }) +
      field({ g: 'c', k: 'email', label: 'Email', type: 'email', req: 1, ac: 'email' }) + field({ g: 'c', k: 'phone', label: 'Mobile phone', type: 'tel', req: 1, ac: 'tel' }) +
      field({ g: 'c', k: 'company', label: 'Borrowing company name', req: S.goal === 'prequal', hint: S.p.entity === 'tbd' ? 'Use the name you plan to form.' : '' }) +
      field({ g: 'c', k: 'cstate', label: 'Company state of formation', type: 'select', req: S.goal === 'prequal', opts: STATES }) +
      aeF + '</div>' +
      '<label class="chk"><input type="checkbox" id="tus-sms"' + (S.c.sms ? ' checked' : '') + '> ' + SMS_LABEL + '</label>' +
      '<label class="chk"><input type="checkbox" id="tus-em"' + (S.c.em ? ' checked' : '') + '> ' + EMAIL_LABEL + '</label>' +
      '<div class="err" data-err="c.consent"></div>' +
      '<input type="text" id="tus-hp" tabindex="-1" autocomplete="off" style="position:absolute;left:-9999px" aria-hidden="true">' +
      nav(S.goal === 'prequal' ? 'Get my letter' : S.goal === 'deal' ? 'Submit deal' : 'See my quote');
  };
  R.results = function () {
    var res = S.results || [], h = '<div class="eyebrow">Your numbers</div>';
    var ok = res.filter(function (q) { return q.eligible; });
    if (S.goal === 'prequal') {
      h += S.pq && S.pq.maxLoan ? '<h2>You are pre-qualified for a ' + (S.program === 'ground' ? 'lot purchase' : 'purchase') + ' up to ' + money(S.pq.maxPurchase) + '</h2><p class="lede">With financing up to ' + money(S.pq.maxLoan) + (S.program === 'flip' ? ' including renovation' : S.program === 'ground' ? ' including construction' : '') + ' (' + esc(S.pq.productLabel || '') + '), based on what you told us and subject to verification.</p>' +
        '<div class="nav"><span></span><button type="button" class="btn" data-act="letter">Download my letter</button></div><div class="err" id="tus-lerr"></div>'
        : '<h2>Let us take a closer look</h2><p class="lede">Your answers fall outside what we can pre-qualify online. Your Account Executive will call you to work through options.</p>';
    } else if (S.goal === 'deal') {
      h += '<h2>Deal received</h2><p class="lede">' + esc((aeObj() || {}).name || 'Your Account Executive') + ' has your deal and will follow up the same business day.</p>';
    } else {
      h += '<h2>' + (ok.length ? 'Here is how Ternus would finance it' : 'Let us take a closer look') + '</h2>';
    }
    if (res.length) {
      h += '<div class="quotes">' + res.map(function (q) {
        if (!q.eligible) return '<div class="q no"><div class="pn">' + esc(q.label) + '</div><p>' + esc((q.reasons || []).join(' ') || 'Not available for this scenario.') + '</p></div>';
        var rows = (q.rows || []).map(function (r) { return '<tr><td>' + esc(r[0]) + '</td><td>' + esc(r[1]) + '</td></tr>'; }).join('');
        return '<div class="q' + (q.best ? ' best' : '') + '"><div class="pn">' + esc(q.label) + '</div><div class="big">' + pct(q.rate, 2) + '</div><table>' + rows + '</table>' +
          (q.notes && q.notes.length ? '<div class="note">' + q.notes.map(esc).join('<br>') + '</div>' : '') + '</div>';
      }).join('') + '</div>';
      if (ok.length) h += '<div class="note"><b>' + esc(LOWER) + '</b></div>';
    }
    h += aeBlock();
    var more = [];
    if (S.goal !== 'prequal') more.push('<button type="button" class="btn ghost" data-act="go" data-v="prequal">Get pre-qualified</button>');
    if (S.goal !== 'deal') more.push('<button type="button" class="btn ghost" data-act="go" data-v="deal">Submit this deal</button>');
    more.push('<button type="button" class="btn ghost" data-act="restart">Run another deal</button>');
    return h + '<div class="nav" style="flex-wrap:wrap">' + more.join('') + '</div>';
  };
  function aeBlock() {
    var a = aeObj(); if (!a) return '';
    var ini = a.slug === 'next-available' ? 'T' : a.name.split(' ').map(function (w) { return w[0]; }).join('').slice(0, 2);
    return '<div class="card ae" style="margin-top:16px"><div class="av">' + esc(ini) + '</div><div><b>' + esc(a.name) + '</b><br><span class="hint">' + esc(a.title) + '</span><br>' +
      '<a href="tel:' + esc(a.phone.replace(/[^0-9]/g, '')) + '">' + esc(a.phone) + '</a> &middot; <a href="mailto:' + esc(a.email) + '">' + esc(a.email) + '</a></div></div>';
  }
  // Grayed-out partial results above the lead form (Tim 2026-10-19). Only rounded headline numbers are in the DOM;
  // the blurred detail rows are placeholders, so full terms can't be read from the page before contact info is given.
  function teaser() {
    var r = compute(); if (!r) return '';
    var dots = '$&#9679;&#9679;,&#9679;&#9679;&#9679;', unlock = '<div class="lockmsg">Enter your details below to unlock full terms.</div>';
    function blurRows(labels) { return '<table class="blur" aria-hidden="true">' + labels.map(function (l) { return '<tr><td>' + l + '</td><td>' + dots + '</td></tr>'; }).join('') + '</table>'; }
    if (S.goal === 'prequal' && r.pq && r.pq.maxLoan) {
      return '<div class="quotes tease"><div class="q lock"><div class="pn">Pre-qualification letter</div><div class="big">' + esc(r.pq.purchLabel === 'As-is value' ? 'Value' : 'Purchase') + ' up to about ' + money(roundDown(r.pq.maxPurchase, 5000)) + '</div>' +
        blurRows(['Financing up to', 'Program', 'Letter ID', 'Valid through']) + unlock + '</div></div>';
    }
    var ok = (r.quotes || []).filter(function (q) { return q.eligible; });
    if (!ok.length) return '';
    return '<div class="quotes tease">' + ok.map(function (q) {
      return '<div class="q lock"><div class="pn">' + esc(q.label) + '</div><div class="big">about ' + q.rate.toFixed(1) + '%</div>' +
        '<p>Loan up to about <b>' + money(roundDown(q.loan || 0, 5000)) + '</b></p>' +
        blurRows(['Origination', 'Monthly payment', 'Estimated cash to close', 'Proof of capital']) + unlock + '</div>';
    }).join('') + '</div>';
  }

  // ---------- engine bridge ----------
  function inputs() {
    var p = S.p, d = S.d;
    return { goal: S.goal, program: S.program, entity: p.entity, fico: num(p.fico), exp: num(p.exp), us: p.us === 'yes', cash: num(p.cash),
      purpose: d.purpose || 'purchase', units: d.units, price: num(d.price), rehab: num(d.rehab), arv: num(d.arv),
      heavy: d.heavy === 'yes', state: d.state, zip: d.zip, payoff: num(d.payoff), rent: num(d.rent), tax: num(d.tax), ins: num(d.ins), hoa: num(d.hoa) || 0,
      leased: d.leased, land: d.land, gucExp: num(d.gucExp), lotValue: num(d.lotValue), spent: num(d.spent), soft: num(d.soft),
      fund: d.fund !== 'no', asIs: num(d.asis), acq: num(d.acq), rtd: num(d.rtd) || 0, owned12: d.owned12 === 'yes', inherited: d.how === 'inherited',
      rescue: d.rescue === 'yes', stab: d.stab !== 'no',
      gtype: d.gtype, unitsN: num(d.units), sqft: num(d.sqft), entitled: d.entitled === 'yes', permits: d.permits === 'yes', plans: d.plans === 'yes', term: num(d.term) };
  }
  function compute() {
    var E = window.TUS_ENGINES; if (!E) return null;
    try {
      var inp = inputs();
      return { quotes: E.quote(S.program, inp) || [], pq: E.prequal ? E.prequal(S.program, inp) : null };
    } catch (e) { if (CFG.preview) console.error(e); return null; }
  }

  // ---------- validation ----------
  function setErr(key, msg) {
    var el = root.querySelector('[data-err="' + key + '"]'); if (el) el.textContent = msg || '';
    var bits = key.split('.'), inp = root.querySelector('[data-g="' + bits[0] + '"][data-k="' + bits[1] + '"]'); if (inp) inp.classList.toggle('bad', !!msg);
  }
  function reqCheck(list) {
    var ok = true;
    list.forEach(function (o) {
      var v = S[o.g][o.k], miss = o.req && (v == null || String(v).trim() === '');
      var bad = !miss && o.type === 'money' && v != null && String(v).trim() !== '' && num(v) == null;
      setErr(o.g + '.' + o.k, miss ? 'Required' : bad ? 'Enter a number' : '');
      if (miss || bad) ok = false;
    });
    return ok;
  }
  function knockouts() {
    var p = S.p, msgs = [];
    if (p.entity === 'personal') msgs.push('Ternus lends to companies (LLC, LP, or corporation), not individuals. Planning to form one before closing? Choose "An entity I will form before closing" to continue.');
    if (p.entity === 'trust' || p.entity === 'ira') msgs.push('Ternus does not lend to trusts or retirement accounts. An LLC, LP, or corporation is required.');
    if (p.fico === '0') msgs.push('Online pre-qualification needs a 620 score or higher. An Account Executive can talk through your options.');
    return msgs;
  }
  function validate() {
    var c = cur();
    if (c === 'goal' || c === 'program') {
      var picked = !!S[c]; var pe = $('#tus-pickerr'); if (pe) pe.textContent = picked ? '' : 'Pick one to continue.';
      return picked;
    }
    if (c === 'profile') {
      var ok = reqCheck([{ g: 'p', k: 'entity', req: 1 }, { g: 'p', k: 'fico', req: 1 }, { g: 'p', k: 'exp', req: 1 }, { g: 'p', k: 'us', req: 1 }, { g: 'p', k: 'cash', req: 1, type: 'money' }]);
      var box = $('#tus-ko');
      if (box) box.innerHTML = knockouts().map(function (m) { return '<div class="warn">' + esc(m) + '</div>'; }).join('');
      var hard = S.p.entity === 'personal' || S.p.entity === 'trust' || S.p.entity === 'ira';
      return ok && !hard;
    }
    if (c === 'deal') return reqCheck(R._dealFields || []);
    if (c === 'contact') {
      var list = [{ g: 'c', k: 'first', req: 1 }, { g: 'c', k: 'last', req: 1 }, { g: 'c', k: 'email', req: 1 }, { g: 'c', k: 'phone', req: 1 },
        { g: 'c', k: 'company', req: S.goal === 'prequal' }, { g: 'c', k: 'cstate', req: S.goal === 'prequal' }];
      if (!S.aeLocked) list.push({ g: 'c', k: 'ae', req: 1 });
      var ok2 = reqCheck(list);
      if (S.c.email && !/^[^@\s]+@[^@\s]+\.[a-z]{2,}$/i.test(S.c.email)) { setErr('c.email', 'Enter a valid email'); ok2 = false; }
      var ph = String(S.c.phone || '').replace(/\D/g, ''); if (ph.length === 11 && ph[0] === '1') ph = ph.slice(1);
      if (S.c.phone && ph.length !== 10) { setErr('c.phone', 'Enter a 10-digit US phone number'); ok2 = false; } else S.c.phone10 = ph;
      S.c.sms = $('#tus-sms').checked; S.c.em = $('#tus-em').checked;
      if (!S.c.sms || !S.c.em) { setErr('c.consent', 'Please check both boxes so your Account Executive can reach you.'); ok2 = false; } else setErr('c.consent', '');
      if (!S.aeLocked) S.ae = S.c.ae;
      return ok2;
    }
    return true;
  }

  // ---------- submission ----------
  function letterId() {
    var d = new Date(), y = d.getFullYear(), m = ('0' + (d.getMonth() + 1)).slice(-2), dd = ('0' + d.getDate()).slice(-2);
    return 'TRN-PQ-' + y + m + dd + '-' + Math.random().toString(36).slice(2, 6).toUpperCase();
  }
  function summary() {
    var i = inputs(), a = aeObj();
    var parts = ['Type: ' + S.goal, 'Program: ' + S.program, 'AE: ' + (a ? a.name : '-'), 'Entity: ' + (S.p.entity || '-'), 'FICO band: ' + (S.p.fico || '-'), 'Exp: ' + (S.p.exp || '-'),
      'US: ' + (S.p.us || '-'), 'Cash: ' + money(i.cash), 'Purpose: ' + i.purpose, 'Price: ' + money(i.price)];
    if (S.program === 'ground') parts.push('Lot: ' + (S.d.land || '-'), 'Lot value: ' + money(i.lotValue), 'Hard: ' + money(i.rehab), 'Soft: ' + money(i.soft), 'Completed: ' + money(i.arv),
      'Build: ' + (i.gtype || '-') + ' x' + (i.unitsN || '-') + ' / ' + (i.sqft || '-') + ' sf', 'GUC exp: ' + (S.d.gucExp || '-'), 'Entitled/Permits/Plans: ' + [S.d.entitled, S.d.permits, S.d.plans].join('/'), 'Term: ' + (i.term || '-'));
    else if (S.program !== 'rental') {
      parts.push('Ternus-funded rehab: ' + (i.fund ? 'yes' : 'no (Bridge)'), 'Rehab: ' + money(i.rehab), 'ARV: ' + money(i.arv), 'As-is: ' + money(i.asIs || i.price));
      if (i.purpose === 'refi') parts.push('Acquired: ' + (S.d.how || '-'), 'Owned >12 mo: ' + (S.d.owned12 || '-'), 'Orig price: ' + money(i.acq), 'Rehab to date: ' + money(i.rtd), 'Payoff: ' + money(i.payoff), 'Default/rescue: ' + (S.d.rescue || '-'));
      if (!i.fund) parts.push('Habitable now: ' + (S.d.stab || '-'));
    }
    else parts.push('Rent: ' + money(i.rent) + '/mo', 'Tax: ' + money(i.tax), 'Ins: ' + money(i.ins), 'HOA: ' + money(i.hoa));
    parts.push('State: ' + (i.state || '-'), 'Zip: ' + (i.zip || '-'));
    if (S.d.addr) parts.push('Address: ' + S.d.addr + (S.d.city ? ', ' + S.d.city : ''));
    if (S.goal === 'deal') parts.push('Contract: ' + (S.d.contract || '-'), 'Target close: ' + (S.d.close || '-'));
    (S.results || []).forEach(function (q) { if (q.eligible) parts.push(q.label + ': ' + pct(q.rate) + ' / ' + money(q.loan)); });
    if (S.pq && S.pq.maxLoan) parts.push('Prequal: purchase up to ' + money(S.pq.maxPurchase) + ', loan up to ' + money(S.pq.maxLoan) + ' (' + (S.pq.productLabel || '') + ')' + (S.letterId ? ' | Letter: ' + S.letterId : ''));
    return parts.join(' | ');
  }
  function payload() {
    var F = CFG.fields || {}, a = aeObj(), best = (S.results || []).filter(function (q) { return q.eligible; })[0];
    var v = {
      first: S.c.first, last: S.c.last, email: S.c.email, phone: S.c.phone10, company: S.c.company || '', cstate: S.c.cstate || '',
      ae: a ? a.name : '', aeEmail: a ? a.email : '', reqType: { quote: 'Quote', prequal: 'Prequal', deal: 'Deal' }[S.goal],
      product: S.pq && S.goal === 'prequal' ? (S.pq.productLabel || '') : (best ? best.label : ''), program: { flip: 'Fix and Flip', rental: 'DSCR Rental', ground: 'Ground-Up' }[S.program],
      addr: S.d.addr || '', city: S.d.city || '', state: S.d.state || '', zip: S.d.zip || '', close: S.d.close || '',
      loan: best ? Math.round(best.loan) : (S.pq ? Math.round(S.pq.maxLoan || 0) : ''), maxPurchase: S.pq ? Math.round(S.pq.maxPurchase || 0) : '',
      letterId: S.letterId || '', letterLink: S.letterLink || '', summary: summary(), leadSource: 'Ternus Loan Sizer',
      utm_source: qs('utm_source'), utm_medium: qs('utm_medium'), utm_campaign: qs('utm_campaign'), utm_term: qs('utm_term'), utm_content: qs('utm_content'),
      gclid: qs('gclid'), gbraid: qs('gbraid'), wbraid: qs('wbraid'), fbclid: qs('fbclid'), ref: qs('ref') || document.referrer,
      smsConsent: '1', smsLabel: SMS_LABEL, emailConsent: '1', emailLabel: EMAIL_LABEL
    };
    var body = {};
    Object.keys(F).forEach(function (k) { if (v[k] != null) body['input_' + String(F[k]).replace('.', '_')] = String(v[k]); });
    return body;
  }
  function b64uEnc(s) { return btoa(unescape(encodeURIComponent(s))).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''); }
  function b64uDec(s) { s = s.replace(/-/g, '+').replace(/_/g, '/'); while (s.length % 4) s += '='; return decodeURIComponent(escape(atob(s))); }
  function letterAddr() { return S.d.addr ? S.d.addr + (S.d.city ? ', ' + S.d.city : '') + (S.d.state ? ', ' + S.d.state : '') : ''; }
  function letterData() {
    var c = S.c, p = S.pq || {};
    return { v: 1, c: { first: c.first, last: c.last, company: c.company || '', cstate: c.cstate || '', phone10: c.phone10, email: c.email }, ae: S.ae,
      pq: { maxPurchase: p.maxPurchase, maxLoan: p.maxLoan, productLabel: p.productLabel, finLabel: p.finLabel, purchLabel: p.purchLabel },
      addr: letterAddr(), id: S.letterId, p: S.program, t: S.issued };
  }
  function submit() {
    if ($('#tus-hp') && $('#tus-hp').value) return Promise.resolve(true); // honeypot: silent success
    if (S.goal === 'prequal' && S.pq && S.pq.maxLoan) {
      S.letterId = S.letterId || letterId(); // letter IDs only where a letter is issued
      S.issued = S.issued || Date.now();
      // email link re-creates the same letter; data rides in the #fragment, which browsers never send to the server
      S.letterLink = location.origin + location.pathname + '#pq=' + b64uEnc(JSON.stringify(letterData()));
    }
    var body = payload();
    track('tus_submit', { tus_ae: (aeObj() || {}).slug });
    if (CFG.preview || !CFG.formId) { window.__tusLastPayload = body; if (CFG.preview) console.log('[preview] payload', body); return Promise.resolve(true); }
    return fetch('/wp-json/gf/v2/forms/' + CFG.formId + '/submissions', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) })
      .then(function (r) { return r.json(); }).then(function (j) { if (!j || !j.is_valid) throw new Error('invalid'); return true; });
  }

  // ---------- render / events ----------
  function render() {
    var c = cur();
    $('#tus-bar').style.width = Math.round(100 * S.i / (steps().length - 1)) + '%';
    var stub = window.TUS_ENGINES && window.TUS_ENGINES.stub ? '<div class="stub">PREVIEW: placeholder engine numbers</div>' : '';
    $('#tus-step').innerHTML = stub + R[c]();
    var a = aeObj();
    $('#tus-ae-card').innerHTML = S.aeLocked && a && c !== 'results' ? '<div class="note">Working with <b>' + esc(a.name) + '</b>, ' + esc(a.title) +
      ' &middot; <a href="tel:' + esc(a.phone.replace(/[^0-9]/g, '')) + '">' + esc(a.phone) + '</a> &middot; <a href="mailto:' + esc(a.email) + '">' + esc(a.email) + '</a></div>' : '';
    $('#tus-disc').textContent = DISC;
    track('tus_step', { tus_step: c });
    if (S.i > 0) { try { root.scrollIntoView({ behavior: 'smooth', block: 'start' }); } catch (e) {} }
  }
  function go(delta) { S.i = Math.max(0, Math.min(steps().length - 1, S.i + delta)); render(); }

  root.addEventListener('click', function (e) {
    var t = e.target.closest('[data-pick],[data-act]'); if (!t) return;
    // tapping a goal/program card advances immediately (a separate Continue tap was easy to miss)
    if (t.hasAttribute('data-pick')) { S[t.getAttribute('data-pick')] = t.getAttribute('data-v'); go(1); return; }
    var act = t.getAttribute('data-act');
    if (act === 'back') return go(-1);
    if (act === 'restart') { S.i = 1; S.d = {}; S.results = null; S.pq = null; S.letterId = null; S.issued = null; S.letterLink = null; return render(); }
    if (act === 'go') { S.goal = t.getAttribute('data-v'); S.i = steps().indexOf('deal'); S.letterId = null; S.issued = null; S.letterLink = null; return render(); }
    if (act === 'letter') {
      var err = $('#tus-lerr'); err.textContent = ''; t.disabled = true;
      window.TUS_LETTER.make(S.saved ? S.saved : { c: S.c, ae: aeObj(), pq: S.pq, addr: letterAddr(), id: S.letterId, program: S.program, issued: S.issued })
        .then(function () { track('tus_letter'); t.disabled = false; })
        .catch(function () { err.textContent = 'The letter could not be created on this device. Your Account Executive has your details and will send it.'; t.disabled = false; });
      return;
    }
    if (act === 'next') {
      if (!validate()) return;
      if (cur() === 'contact') {
        if (Date.now() - S.t0 < 8000) return; // bot time trap
        var r = compute() || { quotes: [], pq: null };
        S.results = r.quotes; S.pq = r.pq;
        t.disabled = true;
        submit().then(function () { S.sent = true; go(1); })
          .catch(function () { t.disabled = false; setErr('c.consent', 'We could not send that. Check your connection and try again, or call ' + ((aeObj() || ROSTER.nextAvailable || {}).phone || 'Ternus') + '.'); track('tus_submit_failed'); });
        return;
      }
      var E = window.TUS_ENGINES;
      if (cur() === 'deal' && E && E.prefetch) { t.disabled = true; E.prefetch(inputs()).then(function () { go(1); }, function () { go(1); }); return; }
      go(1);
    }
  });
  root.addEventListener('input', function (e) {
    var el = e.target, g = el.getAttribute('data-g'), k = el.getAttribute('data-k'); if (!g) return;
    S[g][k] = el.value;
  });
  root.addEventListener('change', function (e) {
    var el = e.target, g = el.getAttribute('data-g'), k = el.getAttribute('data-k'); if (!g) return;
    S[g][k] = el.value;
    if (el.getAttribute('data-t') === 'money' && num(el.value) != null) el.value = Math.round(num(el.value)).toLocaleString('en-US');
    if (g === 'd' && k === 'how' && el.value === 'buying') S.d.purpose = 'purchase'; // title from an unrelated party is a purchase (v2.0 \xa73.6)
    if (g === 'd' && (k === 'purpose' || k === 'land' || k === 'fund' || k === 'how')) render(); // relabel dependent fields
  });

  // emailed letter link (#pq=...): show just the download view for that letter, until it expires
  var hm = /#pq=([A-Za-z0-9_-]+)/.exec(location.hash);
  if (hm) {
    var L = null; try { L = JSON.parse(b64uDec(hm[1])); } catch (e) {}
    var valid = L && L.v === 1 && L.pq && L.pq.maxLoan && L.t && Date.now() < L.t + 30 * 864e5;
    $('#tus-bar').style.width = '100%';
    $('#tus-disc').textContent = DISC;
    if (valid) {
      S.ae = L.ae; S.saved = { c: L.c, ae: aeObj(), pq: L.pq, addr: L.addr, id: L.id, program: L.p, issued: L.t };
      $('#tus-step').innerHTML = '<div class="eyebrow">Pre-qualification letter</div><h2>Your Ternus pre-qualification letter</h2>' +
        '<p class="lede">' + esc((L.c.first || '') + ' ' + (L.c.last || '')) + (L.c.company ? ', ' + esc(L.c.company) : '') + ' &middot; Letter ID ' + esc(L.id) + '</p>' +
        '<div class="nav"><span></span><button type="button" class="btn" data-act="letter">Download my letter</button></div><div class="err" id="tus-lerr"></div>' + aeBlock();
    } else {
      $('#tus-step').innerHTML = '<h2>This letter link has expired or is not valid</h2><p class="lede">Pre-qualification letters are good for 30 days. Run a new pre-qualification below, or contact your Account Executive.</p>' +
        '<div class="nav"><span></span><a class="btn" href="' + esc(location.pathname) + '">Start over</a></div>';
    }
    track('tus_letter_link', { tus_valid: !!valid });
    return;
  }
  // deep links (?goal=, ?program=) skip answered steps
  if (S.goal) S.i = 1;
  if (S.goal && S.program) S.i = 2;
  render();
  if (CFG.preview) window.__tus = { S: S, compute: compute, inputs: inputs, payload: payload };
})();
