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 of Debt Origination", "phone": "215-315-3563", "email": "mjones@ternus.com"}, {"slug": "cody-sento", "name": "Cody Sento", "title": "AVP, Sales - Team Lead", "phone": "704-209-9038", "email": "csento@ternus.com"}, {"slug": "cameron-threadgill", "name": "Cameron Threadgill", "title": "AVP, Sales - Team Lead", "phone": "704-209-9036", "email": "cthreadgill@ternus.com"}, {"slug": "michael-luedtke", "name": "Michael Luedtke", "title": "AVP, Sales - Team Lead", "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": "Junior 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 + Elite)","version":"flip-v7","source":"Ternus Flip Sizer v7 (internal) - QuickTern Guidelines v1.1 effective 2026-09-25; Elite rate sheet 9.24.26 + Ternus revenue rule","sourceSha256":"9aa5afa84b7fc4015ca9daf43b4a97f3dc8bc3869804f8ae1bb5db83609ad6db","asOf":"2026-09-25","extracted":"2026-10-01","disclaimer":"Estimates for discussion purposes only. Subject to verification, underwriting, appraisal and final approval.","shared":{"ineligibleStates":["AK","AZ","CA","DC","HI","ID","MN","ND","NJ","NV","NY","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,1,0.7,0.9],[660,0.85,1,0.7,0.9],[620,0.8,1,0.7,0.9]],"ficoFloor":620,"heavyOrAboveMedianFicoFloor":660,"heavyMinProjects":2,"minLoan":100000,"maxLoan":500000,"maxRehab":400000,"returnMin":1.1,"closingPct":0.01,"interestMonths":6,"sec35":{"threshold":500000,"ltcCap":0.85,"minFico":720},"fees":{"procRetail":1995,"procTpo":1495,"shDiscRetail":400,"shDiscTpo":299,"application":495,"perGuarantorPastTwo":99,"perEntityPastOne":495,"drawFee":250},"contingencyPct":{"standard":0.05,"heavy":0.1},"renovationReservePct":0.1,"hardCostDefaultPct":0.9,"brokerCapPts":0.02,"sqftMinSfrTownhome":800,"sqftMinPerUnit24":500,"blockedCityState":["PHILADELPHIA|PA","BALTIMORE|MD"],"blockedCountyText":"BALTIMORE"},"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}}},"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","ID","MN","ND","NJ","NV","NY","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 + Elite (flip-v7)
 * Port of Ternus Flip Sizer v7 (2026-09-25). QuickTern per Ternus QuickTern Guidelines v1.1 (effective 2026-09-25).
 * Elite per the Elite rate sheet 9.24.26 plus the Ternus revenue rule. XP and Bridge are retired and not included.
 * 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, 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.TernusFlipEngine = factory(); }
})(typeof self !== 'undefined' ? self : this, function () {
  'use strict';

  var VERSION = 'flip-v7';
  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 =============================== */
  var QT_TEXT = {
    STATE: 'Ineligible state.',
    CITY_COUNTY: 'Ineligible city/county \u2014 Baltimore City, Baltimore County, Philadelphia (guide \xa710.1).',
    CONDO: 'Condo/condominium regime ineligible (guide \xa710.3).',
    SQFT: 'SFR/TH <800 sqft (guide \xa710.2).',
    SQFT_UNIT: '2-4 family <500 sqft/unit (guide \xa710.2).',
    FOREIGN_NATIONAL: 'Foreign national in a control role (guide \xa711.4).',
    FICO_FLOOR: 'FICO below 620 floor (guide \xa74.3).',
    FICO_660: 'FICO below 660 \u2014 Heavy Rehab or ARV>county median (guide \xa74.5).',
    HEAVY_EXPERIENCE: 'Heavy Rehab requires 2+ completed projects (guide \xa77.2).',
    REHAB_MAX: 'Renovation budget exceeds $400,000 (guide \xa713.1).',
    NOT_WEATHERTIGHT: 'Not weathertight \u2014 ineligible new/mid-stream construction (guide \xa77.1).',
    MARKET_DECLINING: 'Valuation report marks the market declining or rural (guide \xa75.2/\xa79.1).',
    SIZING_EXHAUSTED: 'Sizing exhaustion \u2014 cut consumes the entire initial advance (guide \xa73.1).',
    RETURN_TEST: 'Return test: largest qualifying loan is below $100K or at/below the holdback (guide \xa73.1/\xa73.2).',
    LOAN_MIN: 'Loan below $100,000 minimum (guide \xa76).',
    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 priceQuickTern(inputs, tables) {
    var T = tbl(tables), Q = T.quicktern, d = norm(inputs, T);
    var reasons = [], warnings = [];
    function ko(code) { reasons.push({ code: code, text: QT_TEXT[code] }); }

    var tier = qtTier(d.flips), rate = Q.pricing[tier][0], pts = Q.pricing[tier][1];
    var band = null, i;
    for (i = 0; i < Q.bands.length; i++) { if (d.fico >= Q.bands[i][0]) { band = Q.bands[i]; break; } }
    var purchPct = band ? band[1] : 0, rehabPct = band ? band[2] : 0, arvPct = band ? band[3] : 0, asIsPct = band ? band[4] : 0;

    var rr = d.pp > 0 ? d.rehab / d.pp : 0;
    var heavy = rr >= 1 || d.typeChange || d.sqftAdded > 0 || d.structural;                 /* guide 7.1 */
    var aboveMedian = d.mhv > 0 && d.arv > d.mhv;                                            /* zip MHV = county-median proxy */
    var overlay = heavy || aboveMedian;

    var S35 = Q.sec35;
    var requestedOver = d.requested > S35.threshold;
    var sec35 = requestedOver && d.fico >= S35.minFico && d.personal2 && d.amc && d.feas;      /* guide 3.5 */

    /* sizing - guide 3.1 order: tests 1+2, test 6 (3.5 files), test 3, test 4, $500K max, $100K min, test 5 */
    var t1 = d.pp * purchPct, t2 = d.rehab * rehabPct, built = t1 + t2;
    var t6 = sec35 ? S35.ltcCap * (d.pp + d.rehab) : BIG;
    var arvCap = d.arv * arvPct;
    var afterCaps = Math.min(built, t6, arvCap);
    var asIsCap = d.aiv * asIsPct;
    var purchaseMoney = Math.min(Math.max(afterCaps - t2, 0), asIsCap);
    var maxLoan = sec35 ? BIG : Q.maxLoan;
    var sized = Math.min(purchaseMoney + t2, maxLoan);
    var brokerK = d.brokerPayer === 'Borrower' ? d.brokerPts : 0;
    var k = pts + Q.closingPct + rate / 2 + brokerK;                                       /* guide 3.2 tier factor */
    var lStar = k ? (d.arv / Q.returnMin - d.pp - d.rehab) / k : -1;
    var loan = Math.max(Math.min(sized, Math.max(lStar, t2)), 0);
    var exhausted = purchaseMoney <= 0;

    /* knockouts - same order and wording as the v7 workbook (Calc C62) */
    if (!d.state) { warnings.push('State not provided - licensing eligibility not checked.'); }
    else if (inList(T.shared.ineligibleStates, d.state)) { ko('STATE'); }
    var cityPair = d.city + '|' + d.state;
    var ctext = (Q.blockedCountyText || '').toUpperCase();
    if (d.qtBlockedZip || (d.city && inList(Q.blockedCityState, cityPair)) || (ctext && d.county.indexOf(ctext) >= 0)) { ko('CITY_COUNTY'); }
    if (d.propType === 'CONDO') { ko('CONDO'); }
    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.citizenship === 'Foreign National') { ko('FOREIGN_NATIONAL'); }
    if (d.fico < Q.ficoFloor) { ko('FICO_FLOOR'); }
    if (d.fico < Q.heavyOrAboveMedianFicoFloor && overlay) { ko('FICO_660'); }
    if (heavy && d.flips < Q.heavyMinProjects) { ko('HEAVY_EXPERIENCE'); }
    if (d.rehab > Q.maxRehab) { ko('REHAB_MAX'); }
    if (!d.weathertight) { ko('NOT_WEATHERTIGHT'); }
    if (d.declining) { ko('MARKET_DECLINING'); }
    if (exhausted) { ko('SIZING_EXHAUSTED'); }
    if (!exhausted && lStar < sized && (lStar < Q.minLoan || lStar <= t2)) { ko('RETURN_TEST'); }
    if (loan < Q.minLoan) { ko('LOAN_MIN'); }
    if (d.brokerPts > Q.brokerCapPts) { ko('BROKER_CAP'); }

    /* fees and cash (guide 14.2, 12.1/12.5) */
    var F = Q.fees;
    var proc = Math.max((d.channel === 'TPO' ? F.procTpo : F.procRetail) - (d.shareholder ? (d.channel === 'TPO' ? F.shDiscTpo : F.shDiscRetail) : 0), 0);
    var app = (d.shareholder ? 0 : F.application) + Math.max(d.guarantors - 2, 0) * F.perGuarantorPastTwo + Math.max(d.entities - 1, 0) * F.perEntityPastOne;
    var initial = loan - t2;
    var pointsCost = pts * loan, closing = Q.closingPct * loan, brokerCost = brokerK * loan;
    var down = Math.max(d.pp - initial, 0);
    var ctc = down + pointsCost + closing + proc + app + d.ins + brokerCost;
    var sixMo = rate / 12 * loan * Q.interestMonths;
    var contingency = (heavy ? Q.contingencyPct.heavy : Q.contingencyPct.standard) * d.hard;
    var c2 = Math.max(Q.closingPct * loan, pointsCost + proc + brokerCost + d.ins + d.otherClosing);
    var c5 = Q.renovationReservePct * t2 + contingency;
    var minCash = down + c2 + 0 + sixMo + c5;
    var totalCost = d.pp + d.rehab + pointsCost + closing + rate / 12 * Q.interestMonths * loan + brokerCost;
    var ratio = totalCost ? (d.arv - totalCost) / totalCost : 0;
    /* borrower profit model (the borrower's own assumptions) */
    var interestCarry = rate / 12 * loan * d.hold, otherCarry = d.carry * d.hold;
    var upfront = pointsCost + closing + proc + app + brokerCost;
    var netProceeds = d.arv - d.arv * (d.sell + d.conc);
    var profit = netProceeds - (d.pp + d.rehab + interestCarry + otherCarry + upfront);
    var equity = ctc + 0 + interestCarry + otherCarry;

    var sec35Status;
    if (!requestedOver) { sec35Status = 'Standard file (request at or below $500,000): $500,000 maximum applies.'; }
    else if (sec35) { sec35Status = 'Section 3.5 file: 85% loan-to-cost cap (test 6) applies; no $500,000 maximum.'; }
    else {
      var miss = [];
      if (d.fico < S35.minFico) { miss.push('FICO below 720'); }
      if (!d.personal2) { miss.push('no control-group member with 2 personal projects'); }
      if (!d.amc) { miss.push('no borrower-paid AMC appraisal'); }
      if (!d.feas) { miss.push('no feasibility review'); }
      sec35Status = 'Requested above $500,000 but a Section 3.5 requirement is not met (' + miss.join('; ') + ') - sized under the standard rules at no more than $500,000.';
      warnings.push(sec35Status);
    }
    if (!(d.mhv > 0) && d.fico < Q.heavyOrAboveMedianFicoFloor) { warnings.push('County median not available for this zip - the 660 FICO floor for an ARV above the county median was not tested.'); }
    if (lStar < sized && reasons.length === 0) { warnings.push('Return test reduced the loan to the largest amount that clears 10%.'); }

    return {
      product: 'QuickTern', engine: VERSION, 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 ? band[0] : null,
      loan: loan, initialAdvance: initial, rehabEscrow: t2,
      payment: rate / 12 * loan,                                  /* interest-only on the full note from day one */
      fees: { processing: proc, application: app, pointsCost: pointsCost, closingEstimate: closing, brokerComp: brokerCost,
              insurance: d.ins, drawFeePerDraw: F.drawFee },
      downPayment: down, cashToClose: ctc,
      proofOfCapital: minCash, liquidityRequired: minCash,
      cashComponents: { downPayment: down, closingCosts: c2, outOfPocketRehab: 0, sixMonthsInterest: sixMo, reserveAndContingency: c5, total: minCash },
      arvCap: arvCap, asIsCap: asIsCap, test6Cap: finiteOrNull(t6), builtLoan: built, maxLoanApplied: finiteOrNull(maxLoan),
      returnTest: { ratio: ratio, minimum: Q.returnMin - 1, passes: ratio >= Q.returnMin - 1 - 1e-12, maxLoanSolved: lStar, k: k, totalCost: totalCost },
      sec35: { requestedOver: requestedOver, qualifies: sec35, status: sec35Status },
      heavyRehab: heavy, aboveCountyMedian: aboveMedian,
      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 }
    };
  }

  /* ================================= 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 ==============================
   * Largest purchase price and loan a borrower could be pre-qualified for under QuickTern v1.1 from stated facts only.
   * Assumptions are listed in maxprequal-assumptions.md and are 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, 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, 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; }
    if (inp.citizenship === 'Foreign National') { out.reasons.push({ code: 'FOREIGN_NATIONAL', text: QT_TEXT.FOREIGN_NATIONAL }); 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.personalTwoProjects, false) && bool(inp.amcAppraisal, false) && bool(inp.feasibility, false);

    function deal(p, sec35) {
      var rehab = p * a.rehabPctOfPurchase;
      return {
        purchasePrice: p, rehab: rehab, arv: (p + rehab) * a.arvMultipleOfCost, asIsValue: p * a.asIsPctOfPurchase,
        hardCosts: rehab * a.hardCostPctOfRehab, propType: a.propType, units: 1, state: inp.state || '', zipMhv: num(inp.zipMhv, 0),
        fico: fico, flips: flips, citizenship: inp.citizenship || 'US Citizen', channel: a.channel, guarantors: a.guarantors,
        entities: a.entities, insurancePremium: p * a.insurancePctOfPurchase, otherClosingCosts: p * a.otherClosingPctOfPurchase,
        requestedLoan: sec35 ? 1e12 : 0, amcAppraisal: sec35, personalTwoProjects: sec35, feasibility: sec35, targetMarket: 'None'
      };
    }
    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 pick = std, mode = 'standard';
    if (s35 && (!std || s35.p > std.p)) { pick = 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 (!pick) {
      out.reasons.push({ code: 'CASH_SHORT', text: 'Stated liquid cash does not cover the minimum cash requirement on a $100,000 QuickTern loan under these assumptions.' });
      return out;
    }
    var q = pick.q;
    out.eligible = true;
    out.maxPurchasePrice = pick.p;
    out.maxLoan = Math.floor(q.loan / 1000) * 1000;
    out.rate = q.rate; out.points = q.points;
    out.cashRequired = pick.need;
    out.cashComponents = q.cashComponents;
    out.applicationFee = q.fees.application;
    out.deal = { purchasePrice: pick.p, rehab: pick.p * a.rehabPctOfPurchase, arv: (pick.p * (1 + a.rehabPctOfPurchase)) * a.arvMultipleOfCost,
                 loan: q.loan, initialAdvance: q.initialAdvance, rehabEscrow: q.rehabEscrow };
    out.quote = q;
    if (fico < Q.heavyOrAboveMedianFicoFloor) { out.warnings.push('620-659 band: the property ARV must not exceed the county median, and Heavy Rehab is not available (guide 4.5).'); }
    if (mode === 'section3.5') { out.warnings.push('Above $500,000 under Section 3.5: requires a borrower-paid AMC appraisal, a feasibility review and a control-group member with two personal completed projects, 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);
  }
  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] : '',
             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, 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 };
    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.');
    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(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(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>", ...}
    var file = FE.shardFileFor(z), bundle = 'tus-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 ----------
  function flipIn(i) {
    var u = String(i.units || '1');
    return {
      purchasePrice: i.price, rehab: i.rehab, arv: 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 === '1' ? 'SFR' : '2-4_FAMILY'), units: u === 'condo' ? 1 : +u,
      fico: i.fico, flips: i.exp, citizenship: i.us ? 'US Citizen' : 'Foreign National',
      structural: !!i.heavy, insurancePremium: (i.price || 0) * EST.insPct, otherClosingCosts: (i.price || 0) * 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 a projected profit of at least 10% of total cost. On these numbers, the largest loan that meets that is under the $100,000 minimum. A higher ARV, lower price, or lower rehab budget may qualify. 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;
    var rows = [['Loan amount', money(q.loan)], ['Initial advance at close', money(q.initialAdvance)], ['Rehab escrow (drawn as completed)', money(q.rehabEscrow)],
      ['Origination', pts(q.points + AEM.pts)], ['Monthly interest-only payment', money(q.payment)], ['Estimated cash to close', money(q.cashToClose + aeCost)],
      ['Proof of capital (verified, not due)', money(q.proofOfCapital + aeCost)]];
    return { label: label, eligible: true, rate: q.rate * 100, loan: q.loan, rows: rows, notes: (q.warnings || []).slice(0, 3), raw: q };
  }
  function quoteFlip(i) {
    if (i.purpose !== 'purchase') return [{ label: 'QuickTern', eligible: false, reasons: ['QuickTern funds purchases only.'] },
      { label: 'Elite', eligible: false, reasons: ['Flip refinances are reviewed by an Account Executive.'] }];
    var x = flipIn(i), xq = Object.assign({}, x, { brokerPts: AEM.pts, brokerPayer: 'Borrower' });
    var out = [flipCard(FE.priceQuickTern(xq), 'QuickTern', true), flipCard(FE.priceElite(x), 'Elite', false)];
    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): the letter is issued on the DEAL ENTERED. QuickTern first, then Elite.
  // 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.purpose !== 'purchase' || !(i.price > 0) || !(i.arv > 0)) return { maxLoan: 0 };
    var x = flipIn(i);
    var qt = FE.priceQuickTern(Object.assign({}, x, { brokerPts: AEM.pts, brokerPayer: 'Borrower' }));
    if (qt.eligible && i.cash >= qt.cashToClose + AEM.fee) return letterOn(i, qt, 'QuickTern');
    var el = FE.priceElite(x);
    if (el.eligible && i.cash >= el.cashToClose + AEM.pts * el.loan + AEM.fee) return letterOn(i, el, 'Elite');
    return { maxLoan: 0 };
  }
  function letterOn(i, q, label) {
    return { maxPurchase: i.price, maxLoan: Math.floor(q.loan / 1000) * 1000, productLabel: label, finLabel: 'Financing up to (incl. renovation)' };
  }

  // ---------- 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*\bguide\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: '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>';
      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' : 'As-is value', type: 'money', req: 1 },
        { g: 'd', k: 'rehab', label: 'Renovation budget', type: 'money', req: 1, hint: 'Need a line-item budget? Use the Ternus Rehab Budget Tool, then come back.' },
        { g: 'd', k: 'arv', label: 'After-repair value (ARV)', type: 'money', req: 1 }, st, zip,
        { g: 'd', k: 'heavy', label: 'Structural work, adding over 250 sq ft, or changing the use?', 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 ? '<div class="note">' + tease + '</div>' : '') +
      '<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>';
  }
  function teaser() {
    var r = compute(); if (!r) return '';
    if (S.goal === 'prequal' && r.pq && r.pq.maxLoan) return 'Estimated pre-qualification: purchases up to about <b>' + money(roundDown(r.pq.maxPurchase, 5000)) + '</b>.';
    var ok = (r.quotes || []).filter(function (q) { return q.eligible; });
    if (!ok.length) return '';
    var lo = Math.min.apply(null, ok.map(function (q) { return q.rate; }));
    var mx = Math.max.apply(null, ok.map(function (q) { return q.loan || 0; }));
    return 'Rates from about <b>' + lo.toFixed(1) + '%</b>, loans up to about <b>' + money(roundDown(mx, 5000)) + '</b>. Full terms on the next screen.';
  }

  // ---------- 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),
      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('Rehab: ' + money(i.rehab), 'ARV: ' + money(i.arv));
    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 === 'purpose' || k === 'land')) 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 };
})();
