{"version":3,"file":"shared.PtAftbaa.mjs","names":["save","state","KEY","subscribe","seeded","clearStaleAnnounce","announceAt","seedFromLink","useSyncExternalStore","INITIAL","subs","KEEP","useSyncExternalStore","Framer","__esmMin","window","init_npm_react_18_3_1","init_ssg_sandbox_shims","ce","me","init_framer_DS5RHCUB","framer_DS5RHCUB_exports","money","n","money0","parseDay","m","v","demoToday","g","d","quoteDayFor","w","today","back","dayPlus","QUOTE_DAY","h","dayLabel","DN","MN","dayShort","dayLong","DL","weekday","clockOf","mm","closesAt","STORE_HOURS","quoteLink","SAMPLE","code","shadeOf","SHADES","x","pct","recommendedTier","door","recommendedLabel","filmIntro","tintScreens","tintAddons","p","ADDONS","tintTotal","TIERS","tintBreakdown","filmAllIn","tier","filmPre","tax","heatAt","legalMin","region","regionName","frontLock","net","GLASS_FACTOR","min","rearLock","frontNet","front","rearRule","counterLine","removal","removalNote","tintJobHours","hoursLabel","smsHours","clockToMinutes","t","minutesToClock","mins","tintTimes","TINT_DAYS","day","openLabel","tintSlotInfo","di","slot","times","time","hours","ready","tintBookedText","i","tintQuoteText","presetZones","z","PRESETS","k","recommendPreset","a","recommendCoating","recommendationTitle","recommendationWhy","REASONS","r","filmTotal","ZONES","q","coatingPrice","COATING","paintTotal","f","coating","monthly","total","monthlyPlan","pay","last","even","usedRange","high","edgesCovered","toggleZone","key","nz","on","presetLabel","pz","preset","removed","extra","b","paintJobName","coatingLine","isEdited","cameraForZone","cameraForPreset","filmList","names","c","paintJobDays","paintDays","daysOf","addWorkDays","left","paintReady","dropOff","holdCutoffDate","holdCutoff","holdOffered","days","BOOKED_AT","paintSlots","cond","DELIVERY_DAY","tag","leaveLine","paintPriceBit","paintBookedText","s","paintQuoteText","replySlotInfo","REPLY_SLOTS","rem","stampOf","sms","body","link","smsClock","replyText","bold","tierName","reminderText","movedText","lookFinal","LOOK","lookSms","approvedText","rollValue","to","from","STORE_HOURS_LINE","TIER_ORDER","TINT_DEFAULT","DOORS","LAW","TINT_WEEK","PAINT_DEFAULT","REPLY_TIMES","LOOK_AT","init_tintworld","date","at","save$1","o","KEEP$1","state$1","KEY$1","subscribe$1","subs$1","setTint","patch","seeded$1","clearStaleAnnounce$1","announceAt$1","presenterKeys","getTint","seedFromLink$1","kept","shades","ok","useTint","INITIAL$1","resetTint","prefersReducedMotion","init_tintStore","subscribe","subs","save","KEEP","state","KEY","setPaint","seeded","clearStaleAnnounce","announceAt","seedFromLink","k2","pick","reason","own","keep","miles","wash","zs","keys","usePaint","INITIAL","resetPaint","init_paintStore","p2Order","holdStep","P2_ORDER","p1Next","screen","p1Prev","focusQuestion","NAV","root","useGo","router","F","routes","id","path","P1_PATH","P2_PATH","P3_PATH","init_tintNav"],"sources":["https:/framerusercontent.com/modules/iWW3M1nAnYTAQNvtk6P2/0ePbQcOL1Mfii6x6OTEA/tintworld.js","https:/framerusercontent.com/modules/sd2vIkiSZDcuJt0Qz2gU/1URSmnbv1rG9PH6Yj0ft/tintStore.js","https:/framerusercontent.com/modules/LLOQEHfItbM1luot8TeD/JydcDn68OAoD94ycFrC0/paintStore.js","https:/framerusercontent.com/modules/jru5xYRnjCC43tKFaodk/gdZuP43PysQH7N9IUp3U/tintNav.js"],"sourcesContent":["// Tint World prototypes: the logic behind P1 (tint), P2 (paint protection) and P3 (the five-minute reply).\n// Pulled out of the design canvases (P1 v22, P2 v18, P3 v12) on Oct 25, 2026, so it can move into Framer unchanged.\n// Plain TypeScript: no imports, no React. Every price, store, opening and quote here is a SAMPLE.\n// The canvases are the spec of record; tests.ts checks this file against doc 33's numbers, and parity.ts checks it\n// against the canvases themselves. Audit fixes of Oct 25, 2026 (doc 42) change a few words on purpose; parity.ts lists them.\n// ---------------------------------------------------------------- shared\n/** \"$2,748.00\" */export function money(n){return\"$\"+n.toLocaleString(\"en-US\",{minimumFractionDigits:2,maximumFractionDigits:2});}/** \"$2,748\" */export function money0(n){return\"$\"+n.toLocaleString(\"en-US\");}// ---------------------------------------------------------------- dates\n// Every date is worked out from one quote day, so the sample openings are never in the past. The quote day is the\n// Saturday the sample buyer asks for a quote: Saturday to Monday, the Saturday just gone; Tuesday to Friday, the coming\n// one. Add ?today=2026-10-24 to any address (or set TW_TODAY in tests) to pin it. Calendar arithmetic only, never\n// hours in milliseconds, so the change of clocks on Nov 1 moves nothing.\nconst DN=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"];const DL=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];const MN=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function parseDay(v){const m=typeof v===\"string\"?/^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(v):null;return m?new Date(+m[1],+m[2]-1,+m[3]):null;}function demoToday(){const g=typeof globalThis!==\"undefined\"?globalThis:{};let d=null;try{d=parseDay(g.TW_TODAY);}catch(e){}try{if(!d&&typeof window!==\"undefined\"&&window.location)d=parseDay(new URLSearchParams(window.location.search).get(\"today\"));}catch(e){}try{if(!d&&g.process&&g.process.env)d=parseDay(g.process.env.TW_TODAY);}catch(e){}if(d)return d;const n=new Date;return new Date(n.getFullYear(),n.getMonth(),n.getDate());}/** The quote day for a given today (see above). */export function quoteDayFor(today){const w=today.getDay();const back=w===6?0:w===0?1:w===1?2:w-6;return new Date(today.getFullYear(),today.getMonth(),today.getDate()-back);}export const QUOTE_DAY=quoteDayFor(demoToday());/** The quote day plus n days, at h:m. */export function dayPlus(n,h=0,m=0){return new Date(QUOTE_DAY.getFullYear(),QUOTE_DAY.getMonth(),QUOTE_DAY.getDate()+n,h,m);}/** \"Fri, Nov 6\" */export function dayLabel(d){return DN[d.getDay()]+\", \"+MN[d.getMonth()]+\" \"+d.getDate();}/** \"Fri 11/6\" */export function dayShort(d){return DN[d.getDay()]+\" \"+(d.getMonth()+1)+\"/\"+d.getDate();}/** \"Friday, Nov 6\" */export function dayLong(d){return DL[d.getDay()]+\", \"+MN[d.getMonth()]+\" \"+d.getDate();}/** \"Fri\" */export function weekday(d){return DN[d.getDay()];}/** \"9:00 am\" (always with the minutes) */export function clockOf(d){const h=d.getHours(),mm=d.getMinutes();return(h%12||12)+\":\"+(mm<10?\"0\"+mm:mm)+\" \"+(h>=12?\"pm\":\"am\");}/** The moment the sample buyer books: 2:20 pm on the quote day, just after the 2:18 reply. */export const BOOKED_AT=dayPlus(0,14,20);/** Sample store hours (minutes after midnight): Mon to Fri 8:00 am to 6:00 pm, Sat 8:00 am to 4:00 pm, Sun closed. */export const STORE_HOURS={open:480,closeWeekday:1080,closeSat:960};export const STORE_HOURS_LINE=\"Mon to Fri 8:00 am to 6:00 pm \\xb7 Sat 8:00 am to 4:00 pm \\xb7 Sun closed\";export function closesAt(d){return d.getDay()===0?0:d.getDay()===6?STORE_HOURS.closeSat:STORE_HOURS.closeWeekday;}/** The invented store and the sample records the three flows share. */export const SAMPLE={store:\"Tint World Northgate\",address:\"1234 Sample Rd\",storePhone:\"970 555 0100\",buyerPhone:\"970 555 0142\",buyerName:\"Sam\",/** The paint look in P3's sixth moment is another buyer's car. */lookBuyerName:\"Jordan\",lookBuyerPhone:\"970 555 0157\",linkHost:\"twld.example\",tintQuote:\"K7QP-M2TA\",paintQuote:\"R4HN-W8VD\",/** The quote day (\"Sat, Oct 24\") and two weeks on, when the quote's price ends. */quoteDay:dayLabel(QUOTE_DAY),heldUntil:dayLabel(dayPlus(14)),heldUntilShort:dayShort(dayPlus(14)),tintCar:\"2025 Highlander\",tintCarFull:\"2025 Toyota Highlander\",paintCar:\"2026 Highlander\",paintCarFull:\"2026 Toyota Highlander\"};/** \"K7QP-M2TA\" -> \"https://twld.example/K7QPM2TA\" */export function quoteLink(code){return\"https://\"+SAMPLE.linkHost+\"/\"+code.replace(\"-\",\"\");}export const TIER_ORDER=[\"economy\",\"premium\",\"supreme\",\"ultimate\"];export const TIERS={economy:{name:\"ECONOMY\",film:\"PRIME CS\",ben:\"Shade and 99% UV block. Color that holds.\",more:\"Dyed film. No metal; phone and GPS work normally.\",price:399,heat:{70:24,50:29,35:36,20:42,15:41,5:45}},premium:{name:\"PREMIUM\",film:\"PRIME HP\",ben:\"More heat cut for a small step up.\",more:\"Hybrid film with a thin metal layer. Ask us about phones and toll tags.\",price:499,heat:{50:36,35:49,20:53,15:53,5:59}},supreme:{name:\"SUPREME\",film:\"PRIME XR\",ben:\"Ceramic. Real heat cut without going dark.\",more:\"Ceramic, no metal.\",price:649,heat:{70:49,35:59,20:64,15:65,5:66}},ultimate:{name:\"ULTIMATE\",film:\"PRIME XR PLUS\",ben:\"Our top ceramic. Matches or beats SUPREME in every shade.\",more:\"Top ceramic, no metal. Same heat cut as SUPREME at 35%; more at lighter and darker shades.\",price:749,heat:{70:52,35:59,20:66,15:69,5:71}}};/** Shade, plain name, film opacity on the stills, one fact (sample copy for Tint World's installers to confirm). */export const SHADES=[{pct:70,name:\"Light\",opacity:.2,fact:\"Looks like factory glass. You see the driver clearly.\"},{pct:50,name:\"Medium-light\",opacity:.42,fact:\"A light tint. Faces still show from outside.\"},{pct:35,name:\"Medium\",opacity:.64,fact:\"At noon the driver shows as a shape, not a face.\"},{pct:20,name:\"Dark\",opacity:.8,fact:\"Hard to see in by day. Nights look darker from inside too.\"},{pct:15,name:\"Very dark\",opacity:.86,fact:\"You see in only up close.\"},{pct:5,name:\"Limo\",opacity:.95,fact:\"No one sees in. Hard to see out at night.\"}];export function shadeOf(pct){return SHADES.find(x=>x.pct===pct)||{pct:pct,name:\"\",opacity:.64,fact:\"\"};}/** Add-on prices, shown tax-in. */export const ADDONS={strip:49,roof:79,removal:99};export const TINT_FEES=20;/** Sample tax rate, on the film only. */export const TAX=.075;/** Stand-in factor for clear factory glass (an assumption, said on the car screen and the law card). */export const GLASS_FACTOR=.8;export const TINT_DEFAULT={tier:\"supreme\",front:35,rear:35,strip:false,roof:false,removal:\"no\",region:\"CO\",door:\"heat\"};export function recommendedTier(door){return door===\"uv\"||door===\"privacy\"?\"economy\":\"supreme\";}export function recommendedLabel(door){return door===\"uv\"?\"Recommended for UV\":door===\"privacy\"?\"Recommended for privacy\":door===\"unsure\"||door===\"fix\"?\"Our pick\":\"Recommended for heat\";}export function filmIntro(door){return door===\"uv\"?\"So pick by heat and look.\":door===\"privacy\"?\"Privacy comes from the shade, not the film. The film changes the heat and the price.\":\"All-in for a 2025 Highlander.\";}/** The reason doors on P1's first screen. Paint and new open P2. */export const DOORS=[{id:\"heat\",title:\"Beat the heat\",help:\"Less heat for you, your kids and your pets.\"},{id:\"uv\",title:\"Block the sun's UV\",help:\"Side glass lets UV through. Film blocks 99%.\"},{id:\"privacy\",title:\"Privacy and looks\",help:\"Harder to see in. Darker, or matched to your factory glass.\"},{id:\"paint\",title:\"Protect new paint\",help:\"New car, rock chips, or a lease to return.\"},{id:\"new\",title:\"Keep it looking new\",help:\"Water and dirt slide off. Washing is quicker.\"},{id:\"fix\",title:\"Fix my old tint\",help:\"Bubbles, purple, or peeling. We take it off first.\"}];/** The screen order: privacy and fix pick the shade before the film. \"law\" is off the path (from \"Why?\"). */export function tintScreens(door){if(door===\"privacy\"||door===\"fix\")return[\"why\",\"car\",\"shade\",\"film\",\"included\",\"total\",\"time\",\"number\",\"booked\"];return[\"why\",\"car\",\"film\",\"shade\",\"included\",\"total\",\"time\",\"number\",\"booked\"];}export function tintAddons(p){return(p.strip?ADDONS.strip:0)+(p.roof?ADDONS.roof:0)+(p.removal===\"yes\"?ADDONS.removal:0);}export function tintTotal(p){return TIERS[p.tier].price+tintAddons(p);}/** The film line and tax line on the total screen: tax at the sample rate on the film; fees untaxed. */export function tintBreakdown(tier){const filmAllIn=TIERS[tier].price-TINT_FEES;const filmPre=filmAllIn/(1+TAX);const tax=filmAllIn-filmPre;return{film:Math.round(filmPre*100)/100,fees:TINT_FEES,tax:Math.round(tax*100)/100};}export function heatAt(tier,pct){const h=TIERS[tier].heat[pct];return h==null?null:h;}export function legalMin(region){return region===\"TX\"?25:27;}export function regionName(region){return region===\"TX\"?\"Texas\":\"Colorado\";}export function frontLock(pct,tier,region){const net=Math.round(pct*GLASS_FACTOR);const min=legalMin(region);if(net<min)return{locked:true,reason:\"tooDark\",message:pct+\"% is darker than \"+regionName(region)+\" allows on front side windows. The darkest legal shade on clear factory glass is 35%. Why not \"+min+\"%? Your glass already blocks some light, and glass and film together must let \"+min+\"% through.\"};if(heatAt(tier,pct)==null)return{locked:true,reason:\"notMade\",message:TIERS[tier].name+\" is not made in a \"+pct+\"% shade. Pick another shade, or another film.\"};return{locked:false,reason:null,message:\"\"};}/** Colorado: rears darker than 27% net only when the windshield and fronts let 70%+ through (never, once the fronts have film). */export function rearLock(pct,tier,region,front){const net=Math.round(pct*GLASS_FACTOR);const frontNet=Math.round(front*GLASS_FACTOR);if(region===\"CO\"&&frontNet<70&&net<27)return{locked:true,reason:\"tooDark\",message:\"Want the back darker than 35%? Colorado allows that only when the windshield and front side windows let 70% or more through, glass and film together. With film on the fronts your car doesn't meet that, so the rears stay at 35% or lighter.\"};if(heatAt(tier,pct)==null)return{locked:true,reason:\"notMade\",message:TIERS[tier].name+\" is not made in a \"+pct+\"% shade. Pick another shade, or another film.\"};return{locked:false,reason:null,message:\"\"};}export function rearRule(region){return region===\"CO\"?\"CO: 27% in back too, with filmed fronts\":\"Texas allows any darkness in back\";}/** The law card (\"Why?\"), plain words, not legal advice. Checked Oct 24, 2026. */export const LAW={TX:{front:\"at least 25% light through.\",rear:\"any darkness. The rear window needs outside mirrors on both sides.\",ws:\"no film below the AS-1 line or the top 5 inches, whichever is higher. A strip above it must let 25% through and can't be red, blue or amber.\",mirror:\"Front side windows and the windshield strip: no more than 25% reflective.\",med:\"yes, with a signed medical exemption.\",penalty:\"a misdemeanor for the driver.\",source:\"Tex. Transp. Code 547.613, statutes.capitol.texas.gov; medical statement: Texas DPS, dps.texas.gov\",one:\"Every shade you can pick here is legal in Texas on clear factory glass. The back can go as dark as you like.\",glass:\"This assumes clear factory glass that lets about 80% through. Film varies a few percent, so we meter your glass before we install and stay on the legal side.\"},CO:{front:\"at least 27% light through.\",rear:\"at least 27% too. They can go darker only if your windshield and front side windows let 70% or more through.\",ws:\"at least 70% light through. A tinted strip is OK across the top 4 inches, if it isn't red or amber.\",mirror:\"No film that looks metallic or mirrored, on any window.\",med:\"none.\",penalty:\"a class B traffic infraction for the driver.\",source:\"C.R.S. 42-4-227, Colorado General Assembly, leg.colorado.gov/colorado-revised-statutes\",one:\"Every shade you can pick here is legal in Colorado on clear factory glass. Darker ones are locked.\",glass:\"This assumes clear factory glass that lets about 80% through. Many SUVs have darker factory glass in back, and film varies a few percent, so we meter your glass before we install and stay on the legal side.\"}};export function counterLine(removal){return removal===\"unsure\"?\"Tax and shop fees in. If old film has to come off first it's $99.00 more, and we tell you before we start.\":\"Tax and all shop fees in. Nothing gets added at the counter.\";}export function removalNote(removal){return removal===\"yes\"?\"Removal is in your total. Adds about an hour.\":removal===\"unsure\"?\"We check at drop-off. If film has to come off, it's $99.00 more, and we tell you first.\":\"Pick Yes if there's old film on the windows now.\";}/** Sample openings at the invented store, Monday to Saturday of the week after the quote day. */const TINT_WEEK=[{full:true,times:[]},{times:[\"9:00 am\",\"1:00 pm\"]},{times:[\"8:00 am\",\"10:30 am\",\"2:00 pm\"]},{times:[\"9:00 am\"]},{times:[\"8:00 am\",\"11:00 am\",\"3:00 pm\"]},{times:[\"8:00 am\"]}];export const TINT_DAYS=TINT_WEEK.map((w,i)=>{const date=dayPlus(2+i);return{d:weekday(date),n:date.getDate(),s:w.full?\"Full\":w.times.length+\" open\",full:w.full,times:w.times,long:dayLong(date),label:dayLabel(date),md:date.getMonth()+1+\"/\"+date.getDate(),date};});/** Midsize SUV: about 2½ hours; old film off adds about an hour. */export function tintJobHours(removal){return removal===\"yes\"?3.5:2.5;}export function hoursLabel(h){return Math.floor(h)+(h%1?\"\\xbd\":\"\")+\" hours\";}/** In texts: \"2 1/2 hours\" (\"½\" is not in the plain SMS alphabet and would triple the cost of the text). */export function smsHours(h){return Math.floor(h)+(h%1?\" 1/2\":\"\")+\" hours\";}/** \"9:00 am\" -> 540 */export function clockToMinutes(t){const m=/(\\d+):(\\d+)\\s*(am|pm)/.exec(t);if(!m)return 540;return(+m[1]%12+(m[3]===\"pm\"?12:0))*60+ +m[2];}/** 690 -> \"11:30 am\"; 660 -> \"11:00 am\" (always with the minutes) */export function minutesToClock(mins){const h=Math.floor(mins/60),mm=mins%60;return(h%12||12)+\":\"+(mm<10?\"0\"+mm:mm)+\" \"+(h>=12?\"pm\":\"am\");}/** The times on a day that finish before the store closes (old film off adds an hour, so Fri 3:00 pm drops out). */export function tintTimes(day,removal){const d=TINT_DAYS[day];if(!d)return[];const h=tintJobHours(removal);return d.times.filter(t=>clockToMinutes(t)+h*60<=closesAt(d.date));}/** \"2 open\", \"Full\" */export function openLabel(day,removal){const d=TINT_DAYS[day];if(!d||d.full)return\"Full\";const n=tintTimes(day,removal).length;return n?n+\" open\":\"Full\";}export const TINT_SLOT_DEFAULT={day:1,time:0,wait:\"drop\"};export function tintSlotInfo(slot,removal){const di=TINT_DAYS[slot.day]&&!TINT_DAYS[slot.day].full?slot.day:1;const d=TINT_DAYS[di];const times=tintTimes(di,removal);const time=times[slot.time]||times[0]||\"\";const hours=tintJobHours(removal);const ready=minutesToClock(clockToMinutes(time)+hours*60);return{day:d,time,times,hours,/** The slot as a Date, for the calendar file. */at:new Date(d.date.getFullYear(),d.date.getMonth(),d.date.getDate(),Math.floor(clockToMinutes(time)/60),clockToMinutes(time)%60),when:d.label+\" \\xb7 \"+time,duration:hoursLabel(hours),ready,dropLine:\"Drop off at \"+time+\", ready by \"+ready,waitLine:slot.wait===\"wait\"?\"wait in the lounge\":\"drop off at \"+time+\", ready by \"+ready};}/** Text B: the booking confirmation. */export function tintBookedText(p,slot){const i=tintSlotInfo(slot,p.removal);const t=i.time.replace(\" \",\"\");return SAMPLE.store+\": You're booked. Window tint (\"+TIERS[p.tier].name+\"), \"+SAMPLE.tintCar+\", \"+i.day.d+\" \"+i.day.md+\" \"+t+\". About \"+smsHours(i.hours)+\", \"+(slot.wait===\"wait\"?\"wait in our lounge\":\"drop off at \"+t+\", ready by \"+i.ready.replace(\" \",\"\"))+\". Total \"+money(tintTotal(p))+\". Quote \"+SAMPLE.tintQuote+\". \"+SAMPLE.address+\". Change or add to calendar: \"+quoteLink(SAMPLE.tintQuote)+\" Reply STOP to opt out.\";}/** Text Q: the quote texted, no booking. */export function tintQuoteText(p){return SAMPLE.store+\": Your quote \"+SAMPLE.tintQuote+\": Window tint (\"+TIERS[p.tier].name+\"), \"+SAMPLE.tintCar+\", fronts \"+p.front+\"%, rears \"+p.rear+\"%. \"+money(tintTotal(p))+\" all-in, held until \"+SAMPLE.heldUntilShort+\". Book a time, no login: \"+quoteLink(SAMPLE.tintQuote)+\" Reply STOP to opt out.\";}/** Film zones on the 2026 Highlander with sample prices. Its roof is painted, so the roof is a zone. */export const ZONES=[{key:\"partials\",name:\"Hood and fender edges (partial)\",price:199},{key:\"bumper\",name:\"Front bumper\",price:560},{key:\"mirrors\",name:\"Mirrors\",price:140},{key:\"hood\",name:\"Hood\",price:700},{key:\"fenders\",name:\"Fenders\",price:449},{key:\"headlights\",name:\"Headlights\",price:180},{key:\"pillars\",name:\"Windshield pillars\",price:170},{key:\"rockers\",name:\"Rocker panels\",price:300},{key:\"roof\",name:\"Roof\",price:900},{key:\"doors\",name:\"Doors\",price:1400},{key:\"rearbumper\",name:\"Rear bumper\",price:600},{key:\"trunk\",name:\"Trunk\",price:600}];/** Ceramic coating on the rest of the car; on the whole car when there is no film. */export const COATING={withFilm:899,alone:999};export const PRESETS={partial:{name:\"Partial front\",desc:\"Bumper, front of hood and fenders, mirrors. The spots that take the most hits.\",zones:[\"bumper\",\"mirrors\",\"partials\"]},full:{name:\"Full front\",desc:\"Bumper, whole hood, whole fenders, mirrors. No film edge across the hood.\",zones:[\"bumper\",\"mirrors\",\"hood\",\"fenders\"]},track:{name:\"Track pack\",desc:\"Full front plus headlights, windshield pillars and lower sides. For highway, gravel and track miles.\",zones:[\"bumper\",\"mirrors\",\"hood\",\"fenders\",\"headlights\",\"pillars\",\"rockers\"]},body:{name:\"Full body\",desc:\"Every painted panel, roof included. The whole car, covered.\",zones:[\"bumper\",\"mirrors\",\"hood\",\"fenders\",\"headlights\",\"pillars\",\"rockers\",\"roof\",\"doors\",\"rearbumper\",\"trunk\"]}};export function presetZones(k){const z={};PRESETS[k].zones.forEach(n=>z[n]=true);return z;}export const PAINT_DEFAULT={reason:\"new\",own:\"own\",keep:\"5\",miles:\"hwy\",wash:\"hand\",cond:\"new\"};export const REASONS=[{key:\"new\",title:\"New car\",help:\"Keep it like the day you got it.\"},{key:\"chips\",title:\"Rock chips\",help:\"Highway miles, gravel roads, trucks up ahead.\"},{key:\"lease\",title:\"Lease return\",help:\"Fewer chip charges at turn-in.\"},{key:\"resale\",title:\"Resale\",help:\"Clean paint for the next owner.\"},{key:\"shine\",title:\"Shine and easy washing\",help:\"Water and dirt slide off.\"}];/** The honest pick from the four answers. */export function recommendPreset(a){if(a.own===\"lease\"||a.keep===\"1\")return\"partial\";if(a.miles===\"grv\")return\"track\";return\"full\";}/** Coating comes on with the pick unless the pick is Partial front. */export function recommendCoating(k){return k!==\"partial\";}export function recommendationTitle(k){return PRESETS[k].name+(k===\"partial\"?\"\":\" + coating on the rest\");}export function recommendationWhy(a){const k=recommendPreset(a);const reasonName=(REASONS.find(r=>r.key===a.reason)||REASONS[0]).title;return\"You said \"+reasonName.toLowerCase()+\". \"+(k===\"partial\"?a.own===\"lease\"?\"It's a lease: film where the chips land, nothing to remove at turn-in.\":\"You'll keep it a year or two: protect the spots that take the hits, skip the rest.\":k===\"track\"?\"You drive gravel or track miles: the front, plus the pillars and lower sides that catch what the tires throw.\":\"You're keeping it \"+(a.keep===\"5\"?\"five years or more\":\"three to five years\")+\" and drive highway miles: film where chips land, coating for shine and easy washing everywhere else.\");}export function filmTotal(z){return ZONES.reduce((t,q)=>t+(z[q.key]?q.price:0),0);}export function coatingPrice(z){return filmTotal(z)>0?COATING.withFilm:COATING.alone;}export function paintTotal(z,coating){const f=filmTotal(z);return f+(coating?f>0?COATING.withFilm:COATING.alone:0);}/** 12 months at 0%, to the cent (sample terms). */export function monthly(total){return Math.round(total/12*100)/100;}/** The 12 payments: 11 of the monthly amount and a last one that makes the total exact. */export function monthlyPlan(total){const pay=monthly(total);const last=Math.round((total-pay*11)*100)/100;const even=Math.abs(last-pay)<.005;return{pay,last,even,line:even?\"12 payments of \"+money(pay):\"11 payments of \"+money(pay)+\" and one of \"+money(last)};}/** Used car: the quote's range; the top is the cap, never passed without the buyer's OK. */export function usedRange(total){const high=Math.round(total*1.2);return{low:total,high,label:money0(total)+\" to \"+money0(high)};}/** The edge strip folds into Hood and Fenders when either is on. */export function edgesCovered(z){return!!(z.hood||z.fenders);}/** Toggle one zone the way the coverage list does. Returns the new zones (unchanged if the row is covered). */export function toggleZone(z,key){if(key===\"partials\"&&edgesCovered(z))return z;const nz={...z};const on=!!z[key];if(on)delete nz[key];else nz[key]=true;if(!on&&(key===\"hood\"||key===\"fenders\"))delete nz.partials;return nz;}/** \"Full front\", \"Full front + 1\" (panels added), \"Your mix\" (a panel of the package taken off), \"Ceramic coating, whole car\" (no film). */export function presetLabel(preset,z){if(filmTotal(z)===0)return\"Ceramic coating, whole car\";const pz=presetZones(preset);let removed=false,extra=0;ZONES.forEach(q=>{const a=!!z[q.key],b=!!pz[q.key];// The edge strip folds into Hood and Fenders, so it isn't \"taken off\" when they cover it.\nif(b&&!a&&!(q.key===\"partials\"&&edgesCovered(z)))removed=true;if(a&&!b)extra++;});return removed?\"Your mix\":PRESETS[preset].name+(extra?\" + \"+extra:\"\");}/** The job in texts: \"Paint film (Full front + coating)\", \"Ceramic coating (whole car)\". */export function paintJobName(preset,z,coating){if(filmTotal(z)===0)return coating?\"Ceramic coating (whole car)\":\"Paint film\";return\"Paint film (\"+presetLabel(preset,z)+(coating?\" + coating\":\"\")+\")\";}/** The coating line on the receipt: on the rest of the car with film, on the whole car without. */export function coatingLine(z){return filmTotal(z)>0?\"Ceramic coating on uncovered paint\":\"Ceramic coating, whole car\";}export function isEdited(preset,z){return presetLabel(preset,z)!==PRESETS[preset].name;}/** The camera goes to the panel: the roof and the back need the view from above. */export function cameraForZone(key){return key===\"roof\"||key===\"rearbumper\"||key===\"trunk\"?\"top\":\"front\";}export function cameraForPreset(k){return k===\"body\"?\"top\":\"front\";}/** \"Film: front bumper, mirrors, hood, fenders. Ceramic coating on the rest.\" */export function filmList(z,coating){const names=ZONES.filter(q=>z[q.key]).map(q=>q.name.replace(\" (partial)\",\"\"));if(!names.length)return coating?\"Ceramic coating on the whole car.\":\"\";return\"Film: \"+names.join(\", \").toLowerCase().replace(/^./,c=>c.toUpperCase())+(coating?\". Ceramic coating on the rest.\":\".\");}/** Working days in the shop by package (Mon to Sat). */export function paintJobDays(k){return k===\"body\"?5:k===\"track\"?3:k===\"partial\"?1:2;}/** Working days for the panels actually picked: the smallest package that covers them; coating alone is 1 day. */export function paintDays(z){if(filmTotal(z)===0)return 1;const order=[\"partial\",\"full\",\"track\",\"body\"];for(const k of order){const pz=presetZones(k);const fits=ZONES.every(q=>!z[q.key]||pz[q.key]||q.key===\"partials\"&&(pz.hood||pz.fenders));if(fits)return paintJobDays(k);}return paintJobDays(\"body\");}function daysOf(k){return typeof k===\"number\"?k:paintJobDays(k);}/** The nth working day counting the drop-off day as day 1; Sundays skipped. */export function addWorkDays(d,n){const x=new Date(d.getTime());let left=n-1;while(left>0){x.setDate(x.getDate()+1);if(x.getDay()!==0)left--;}return x;}export function paintReady(dropOff,k){return dayLabel(addWorkDays(dropOff,daysOf(k)))+\" after 3\";}/** The optional $100 hold can be cancelled until 5:00 pm three days before drop-off (the Saturday before, when that falls on a Sunday). */export function holdCutoffDate(dropOff){const c=new Date(dropOff.getFullYear(),dropOff.getMonth(),dropOff.getDate()-3,17,0);if(c.getDay()===0)c.setDate(c.getDate()-1);return c;}export function holdCutoff(dropOff){return\"5:00 pm \"+dayLabel(holdCutoffDate(dropOff));}/** The hold is offered only on jobs over a day, and only when the buyer has a full day left to cancel it. */export function holdOffered(days,dropOff){return days>1&&holdCutoffDate(dropOff).getTime()-BOOKED_AT.getTime()>=24*3600*1e3;}export const HOLD_AMOUNT=100;/** Drop-off days offered: new car starts with the delivery day; used car books the 10-minute look first. *//** The delivery day of the sample new car: the Friday two weeks after the quote day. */export const DELIVERY_DAY=dayPlus(13);export function paintSlots(cond,k){const raw=cond===\"new\"?[[DELIVERY_DAY,\" \\xb7 delivery day\"],[dayPlus(3),\"\"],[dayPlus(4),\"\"]]:[[dayPlus(3),\" \\xb7 10-minute look first\"],[dayPlus(4),\" \\xb7 10-minute look first\"],[dayPlus(5),\" \\xb7 10-minute look first\"]];return raw.map(([d,tag])=>({date:d,label:dayLabel(d)+tag,short:dayLabel(d),help:\"Drop off \"+DN[d.getDay()]+\" by 9. Ready \"+paintReady(d,k)+\".\"}));}export function leaveLine(k){const n=daysOf(k);return n===1?\"Leave your car 1 day\":\"Leave your car \"+n+\" days\";}export const PAINT_PICK_DEFAULT={answers:PAINT_DEFAULT,preset:\"full\",zones:presetZones(\"full\"),coating:true,slot:0,hold:false};function paintPriceBit(p){const t=paintTotal(p.zones,p.coating);return p.answers.cond===\"used\"?\"Range \"+usedRange(t).label:\"Total \"+money(t);}export function paintBookedText(p){const days=paintDays(p.zones);const s=paintSlots(p.answers.cond,days)[p.slot]||paintSlots(p.answers.cond,days)[0];return SAMPLE.store+\": You're booked. \"+paintJobName(p.preset,p.zones,p.coating)+\", \"+SAMPLE.paintCar+\". Drop off \"+s.short+\" by 9am, ready \"+paintReady(s.date,days)+\"pm. \"+paintPriceBit(p)+(p.hold?\", $100 hold paid\":\"\")+\". Quote \"+SAMPLE.paintQuote+\". \"+SAMPLE.address+\". Change it: \"+quoteLink(SAMPLE.paintQuote)+\" Reply STOP to opt out.\";}export function paintQuoteText(p){return SAMPLE.store+\": Your quote \"+SAMPLE.paintQuote+\": \"+paintJobName(p.preset,p.zones,p.coating)+\", \"+SAMPLE.paintCar+\". \"+paintPriceBit(p)+\", held until \"+SAMPLE.heldUntilShort+\". Book a day, no login: \"+quoteLink(SAMPLE.paintQuote)+\" Reply STOP to opt out.\";}// ---------------------------------------------------------------- P3 the five-minute reply\n/** The openings P3's first text offers (the same store and record as P1). */export const REPLY_SLOTS=[[3,9],[3,13],[4,8],[5,9],[6,11]].map(([n,h])=>{const at=dayPlus(n,h);return{day:dayLabel(at),time:clockOf(at),at};});/** The reply times: the form at 2:14 PM Saturday, the text at 2:18 (after hours: 7:44 and 7:48). */export const REPLY_TIMES={form:\"2:14 PM\",reply:\"2:18 PM\",formAfterHours:\"7:44 PM\",replyAfterHours:\"7:48 PM\"};export function replySlotInfo(i){const s=REPLY_SLOTS[i]||REPLY_SLOTS[0];const ready=new Date(s.at.getFullYear(),s.at.getMonth(),s.at.getDate(),s.at.getHours(),s.at.getMinutes()+150);const rem=new Date(s.at.getFullYear(),s.at.getMonth(),s.at.getDate()-2,s.at.getHours(),s.at.getMinutes());return{when:s.day+\" \\xb7 \"+s.time,whenShort:s.day.replace(\", \",\" \")+\" at \"+s.time,/** \"Tue 10/27 9:00am\", for texts */sms:dayShort(s.at)+\" \"+s.time.replace(\" \",\"\"),ready:clockOf(ready),dropLine:\"Drop off at \"+s.time+\", ready by \"+clockOf(ready),/** The reminder goes 48 hours before the slot. */reminderAt:rem,reminderStamp:dayLabel(rem)+\" \\xb7 \"+clockOf(rem).toUpperCase(),reminderTime:clockOf(rem).toUpperCase()};}/** \"Sun, Oct 25 · 9:04 AM\" for a Date. */export function stampOf(d){return dayLabel(d)+\" \\xb7 \"+clockOf(d).toUpperCase();}/** \"New time?\" offers every other opening. */export function replyAlternatives(current){return REPLY_SLOTS.map((s,i)=>({index:i,label:s.day+\" \\xb7 \"+s.time})).filter(x=>x.index!==current);}function sms(body,bold,link){return{body,bold,link,full:body+(link?\" \"+link:\"\")+\" Reply STOP to opt out.\"};}/** \"9:00 am\" -> \"9am\", \"10:30 am\" -> \"10:30am\" */export function smsClock(t){return t.replace(\":00\",\"\").replace(\" \",\"\");}/** P3's first text, five minutes after the form: the quote, the three soonest openings and the link. */export function replyText(tierName,total){const[a,b,c]=REPLY_SLOTS;const bold=money(total)+\" total, tax and fees in.\";return sms(SAMPLE.store+\": Hi \"+SAMPLE.buyerName+\", here's quote \"+SAMPLE.tintQuote+\". \"+tierName+\" ceramic tint, 35%, \"+SAMPLE.tintCar+\": \"+bold+\" Soonest: \"+dayShort(a.at)+\" \"+smsClock(a.time)+\", \"+weekday(b.at)+\" \"+smsClock(b.time)+\", \"+weekday(c.at)+\" \"+smsClock(c.time)+\". Book in one tap:\",bold,quoteLink(SAMPLE.tintQuote));}/** The reminder, 48 hours before: the slot, the length, the total, the quote and a one-tap change. */export function reminderText(slot,total){const i=replySlotInfo(slot);return sms(SAMPLE.store+\": Reminder: tint for your Highlander is \"+i.whenShort+\", about \"+smsHours(2.5)+\", at \"+SAMPLE.address+\". Total \"+money(total)+\", quote \"+SAMPLE.tintQuote+\". Reply YES to confirm. New time?\",i.whenShort,quoteLink(SAMPLE.tintQuote));}/** After the two-tap move. */export function movedText(slot,total){const i=replySlotInfo(slot);return sms(SAMPLE.store+\": Moved to \"+i.whenShort+\". Same price, \"+money(total)+\", quote \"+SAMPLE.tintQuote+\". \"+i.dropLine+\". Change again any time:\",i.whenShort,quoteLink(SAMPLE.tintQuote));}/** The look: the Tuesday after the quote day, 9:02 am. */export const LOOK_AT=dayPlus(3,9,2);export const LOOK={buyer:SAMPLE.lookBuyerName,quote:SAMPLE.paintQuote,quoted:2748,extraName:\"Light polish, hood and bumper\",extra:299,cap:3298,ready:paintReady(dayPlus(3),\"full\"),findings:[{where:\"hood front edge, light swirl marks\",text:\"Hood, front edge: light swirl marks in the clear coat. A light polish takes them out before the film goes on.\"},{where:\"front bumper, swirls and two small chips\",text:\"Front bumper: the same swirls, and two small chips. We touch the chips up; they stay faint under the film.\"},{where:\"front fender, clean\",text:\"Front fender: clean. The film goes straight on.\"}]};export function lookFinal(){return LOOK.quoted+LOOK.extra;}/** The final price may never pass the cap without the buyer's OK. */export function lookWithinCap(){return lookFinal()<=LOOK.cap;}export function lookText(){return lookSms().body;}/** Moment 6's text (a picture message with the three photos). */export function lookSms(){const bold=\"Final price \"+money(lookFinal());return sms(SAMPLE.store+\": \"+SAMPLE.lookBuyerName+\", we've looked at your Highlander's paint. 3 photos above. The hood and bumper need a light polish before the film: \"+money0(LOOK.extra)+\". \"+bold+\", under your \"+money0(LOOK.cap)+\" cap. Quote \"+SAMPLE.paintQuote+\". Approve or ask us first:\",bold,quoteLink(SAMPLE.paintQuote));}export function approvedText(){return SAMPLE.store+\": Approved, \"+money(lookFinal())+\". We start now. Your Highlander is ready \"+dayShort(addWorkDays(dayPlus(3),2))+\" after 3pm. Quote \"+SAMPLE.paintQuote+\". Reply STOP to opt out.\";}// ---------------------------------------------------------------- motion\n/** The rolling total: 400 ms (the motion token), ease-out cubic, whole dollars while it moves. Skip it under reduced motion. */export const ROLL_MS=400;export function rollValue(from,to,t){const k=Math.min(1,Math.max(0,t));return k>=1?to:Math.round(from+(to-from)*(1-Math.pow(1-k,3)));}\nexport const __FramerMetadata__ = {\"exports\":{\"GLASS_FACTOR\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SHADES\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"dayPlus\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"frontLock\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Sms\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"hoursLabel\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TINT_DEFAULT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PresetKey\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"approvedText\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"recommendationWhy\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"closesAt\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"tintBookedText\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PaintPick\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TintPick\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"heatAt\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"replySlotInfo\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LOOK\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"holdOffered\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"weekday\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TierKey\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"recommendPreset\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"tintJobHours\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usedRange\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"addWorkDays\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"stampOf\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paintJobDays\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paintJobName\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"openLabel\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"filmList\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"reminderText\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"tintAddons\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"replyText\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ADDONS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"REPLY_TIMES\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"recommendedLabel\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TIER_ORDER\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TIERS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paintQuoteText\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"dayLabel\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"counterLine\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"edgesCovered\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"filmIntro\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"lookText\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DELIVERY_DAY\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paintBookedText\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ZoneKey\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"leaveLine\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"monthly\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"monthlyPlan\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"dayShort\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paintSlots\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paintTotal\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"STORE_HOURS_LINE\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"dayLong\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paintDays\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"smsHours\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"shadeOf\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"legalMin\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SAMPLE\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Tier\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paintReady\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"holdCutoff\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Lock\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"COATING\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HOLD_AMOUNT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"rearRule\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"presetZones\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"clockToMinutes\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"removalNote\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"clockOf\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"tintBreakdown\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TintSlot\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"quoteLink\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"quoteDayFor\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"lookFinal\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LOOK_AT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"holdCutoffDate\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"filmTotal\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"rearLock\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"cameraForPreset\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"tintTotal\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"money0\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TAX\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LAW\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"coatingPrice\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"cameraForZone\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ROLL_MS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Removal\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PaintAnswers\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"rollValue\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"coatingLine\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"replyAlternatives\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"toggleZone\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Zones\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"recommendedTier\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Region\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TINT_SLOT_DEFAULT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"QUOTE_DAY\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"STORE_HOURS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"tintQuoteText\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"recommendCoating\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PAINT_PICK_DEFAULT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Door\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"REASONS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"lookSms\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"minutesToClock\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"tintSlotInfo\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"presetLabel\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"smsClock\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"regionName\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"movedText\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TINT_DAYS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"money\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"tintTimes\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ZONES\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PRESETS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PAINT_DEFAULT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"recommendationTitle\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"lookWithinCap\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"BOOKED_AT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DOORS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TINT_FEES\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"REPLY_SLOTS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"tintScreens\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isEdited\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Shade\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./tintworld.map","// Shared state for P1: one record that every Tint World code component reads and writes, on every page of the flow.\n// It lives in the module, so it survives moving between Framer pages (one record per visit, like the canvas).\n// Seeded once from the link, so any screen opens straight from a URL, for example\n// ?tier=supreme&front=35&rear=35&region=CO&door=heat&strip=1&roof=1&removal=no&view=dusk&cam=rear&presenter=1\n// A link can't put a locked shade on screen: after seeding, a shade that's too dark falls back to 35%, and a film\n// that isn't made in the shade falls back to one that is. Sample prices.\nimport{useEffect,useSyncExternalStore}from\"react\";import{TINT_DEFAULT,TIER_ORDER,SHADES,frontLock,rearLock,heatAt,recommendedTier}from\"https://framerusercontent.com/modules/iWW3M1nAnYTAQNvtk6P2/0ePbQcOL1Mfii6x6OTEA/tintworld.js\";const INITIAL={...TINT_DEFAULT,chosen:false,cam:\"side\",view:\"day\",cmpX:46,cmpGlide:false,cmpDrag:false,msg:\"\",lawOpen:false,announce:\"\",day:1,time:0,wait:\"drop\",phone:\"\",name:\"\",code:\"\",consent:false,otpSent:false,mode:\"book\",booked:false,presenter:false};let state=INITIAL;let seeded=false;let announceAt=0;const subs=new Set;// The record survives a reload in this browser tab (so ?presenter=1 or a refresh keeps the picks). The number,\n// name and code are never stored.\nconst KEY=\"tw.tint\";const KEEP=[\"tier\",\"front\",\"rear\",\"region\",\"door\",\"chosen\",\"strip\",\"roof\",\"removal\",\"cam\",\"view\",\"day\",\"time\",\"wait\",\"mode\",\"booked\",\"presenter\"];function save(){try{const o={};KEEP.forEach(k=>o[k]=state[k]);window.sessionStorage.setItem(KEY,JSON.stringify(o));}catch(e){}}function subscribe(f){subs.add(f);return()=>{subs.delete(f);};}export function setTint(patch){state={...state,...patch};if(\"announce\"in patch)announceAt=Date.now();if(seeded)save();subs.forEach(f=>f());}/** A screen calls this when it opens: an announcement from an earlier screen is cleared, a fresh one (the move that\n * opened this screen, such as \"Booked.\") is kept so it is read on arrival. */export function clearStaleAnnounce(){if(state.announce&&Date.now()-announceAt>1500){state={...state,announce:\"\"};subs.forEach(f=>f());}}/** The presenter switch: Shift+P anywhere (outside a text field) turns Overlays A and B on or off, without a reload. */function presenterKeys(e){const t=e.target;if(t&&(t.tagName===\"INPUT\"||t.tagName===\"TEXTAREA\"||t.isContentEditable))return;if(e.shiftKey&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&(e.key===\"P\"||e.key===\"p\"))setTint({presenter:!state.presenter});}export function getTint(){return state;}function seedFromLink(){if(seeded||typeof window===\"undefined\")return;seeded=true;try{window.addEventListener(\"keydown\",presenterKeys);}catch(e){}try{const kept=JSON.parse(window.sessionStorage.getItem(KEY)||\"null\");if(kept&&typeof kept===\"object\"){const p={};KEEP.forEach(k=>{if(k in kept)p[k]=kept[k];});state={...state,...p};}}catch(e){}try{const q=new URLSearchParams(window.location.search);const p={};const tier=q.get(\"tier\");if(tier&&TIER_ORDER.indexOf(tier)>-1)p.tier=tier;const shades=SHADES.map(x=>x.pct);const f=Number(q.get(\"front\"));if(shades.indexOf(f)>-1)p.front=f;const r=Number(q.get(\"rear\"));if(shades.indexOf(r)>-1)p.rear=r;const region=q.get(\"region\");if(region===\"CO\"||region===\"TX\")p.region=region;const door=q.get(\"door\");if(door&&[\"heat\",\"uv\",\"privacy\",\"fix\",\"unsure\"].indexOf(door)>-1){p.door=door;p.chosen=true;}if(q.get(\"strip\")===\"1\")p.strip=true;if(q.get(\"roof\")===\"1\")p.roof=true;const rem=q.get(\"removal\");if(rem===\"yes\"||rem===\"no\"||rem===\"unsure\")p.removal=rem;if(q.get(\"view\")===\"dusk\")p.view=\"dusk\";if(q.get(\"cam\")===\"rear\")p.cam=\"rear\";const day=Number(q.get(\"day\"));if(day>=1&&day<=5)p.day=day;const time=q.get(\"time\");if(time===\"0\"||time===\"1\"||time===\"2\")p.time=Number(time);if(q.get(\"wait\")===\"wait\")p.wait=\"wait\";if(q.get(\"presenter\")===\"1\")p.presenter=true;// Locks still apply to a pick that came from the link or the stored record.\nconst m={...state,...p};if(frontLock(m.front,m.tier,m.region).reason===\"tooDark\")p.front=m.front=35;if(rearLock(m.rear,m.tier,m.region,m.front).reason===\"tooDark\")p.rear=m.rear=35;if(heatAt(m.tier,m.front)==null||heatAt(m.tier,m.rear)==null){const order=[recommendedTier(m.door),\"supreme\",\"ultimate\",\"economy\",\"premium\"];const ok=order.find(k=>heatAt(k,m.front)!=null&&heatAt(k,m.rear)!=null);if(ok)p.tier=ok;}setTint(p);}catch(e){}}export function useTint(){const s=useSyncExternalStore(subscribe,()=>state,()=>INITIAL);useEffect(()=>{seedFromLink();},[]);return s;}/** Back to the first screen with a clean record (keeps the state and the presenter switch). */export function resetTint(){setTint({...INITIAL,region:state.region,presenter:state.presenter,door:\"\"});}export function prefersReducedMotion(){return typeof window!==\"undefined\"&&!!window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;}\nexport const __FramerMetadata__ = {\"exports\":{\"useTint\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TintState\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"prefersReducedMotion\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"clearStaleAnnounce\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getTint\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resetTint\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"setTint\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./tintStore.map","// Shared state for P2, the paint protection builder: one record for every P2 page, kept in the module so it survives\n// moving between Framer pages. Seeded once from the link, for example\n// ?reason=chips&own=own&keep=5&miles=hwy&wash=hand&cond=used&preset=track&coating=0&slot=1&hold=1\n// or ?zones=bumper,mirrors,hood,fenders,roof for a custom mix. Sample prices; INTERNAL to WLIQ.\nimport{useEffect,useSyncExternalStore}from\"react\";import{PAINT_DEFAULT,presetZones,ZONES}from\"https://framerusercontent.com/modules/iWW3M1nAnYTAQNvtk6P2/0ePbQcOL1Mfii6x6OTEA/tintworld.js\";const INITIAL={...PAINT_DEFAULT,preset:\"full\",zones:presetZones(\"full\"),coating:true,hold:false,slot:0,phone:\"\",name:\"\",code:\"\",consent:false,otpSent:false,mode:\"book\",booked:false,cov:true,zcam:\"front\",announce:\"\"};let state=INITIAL;let seeded=false;const subs=new Set;function subscribe(f){subs.add(f);return()=>{subs.delete(f);};}// The record survives a reload in this browser tab; the number, name and code are never stored.\nconst KEY=\"tw.paint\";const KEEP=[\"reason\",\"own\",\"keep\",\"miles\",\"wash\",\"cond\",\"preset\",\"zones\",\"coating\",\"hold\",\"slot\",\"mode\",\"booked\",\"cov\",\"zcam\"];let announceAt=0;function save(){try{const o={};KEEP.forEach(k=>o[k]=state[k]);window.sessionStorage.setItem(KEY,JSON.stringify(o));}catch(e){}}export function setPaint(patch){state={...state,...patch};if(\"announce\"in patch)announceAt=Date.now();if(seeded)save();subs.forEach(f=>f());}/** A screen calls this when it opens: an earlier screen's announcement is cleared; a fresh one is kept. */export function clearStaleAnnounce(){if(state.announce&&Date.now()-announceAt>1500){state={...state,announce:\"\"};subs.forEach(f=>f());}}export function getPaint(){return state;}function seedFromLink(){if(seeded||typeof window===\"undefined\")return;seeded=true;try{const kept=JSON.parse(window.sessionStorage.getItem(KEY)||\"null\");if(kept&&typeof kept===\"object\"){const k2={};KEEP.forEach(k=>{if(k in kept)k2[k]=kept[k];});state={...state,...k2};}}catch(e){}try{const q=new URLSearchParams(window.location.search);const p={};const pick=(k,ok)=>{const v=q.get(k);return v&&ok.indexOf(v)>-1?v:null;};const reason=pick(\"reason\",[\"new\",\"chips\",\"lease\",\"resale\",\"shine\"]);if(reason)p.reason=reason;const own=pick(\"own\",[\"own\",\"lease\"]);if(own)p.own=own;const keep=pick(\"keep\",[\"1\",\"3\",\"5\"]);if(keep)p.keep=keep;const miles=pick(\"miles\",[\"city\",\"hwy\",\"grv\"]);if(miles)p.miles=miles;const wash=pick(\"wash\",[\"hand\",\"auto\"]);if(wash)p.wash=wash;const cond=pick(\"cond\",[\"new\",\"used\"]);if(cond)p.cond=cond;const preset=pick(\"preset\",[\"partial\",\"full\",\"track\",\"body\"]);if(preset){p.preset=preset;p.zones=presetZones(preset);}const zs=q.get(\"zones\");if(zs){const keys=ZONES.map(z=>z.key);const z={};zs.split(\",\").forEach(k=>{if(keys.indexOf(k)>-1)z[k]=true;});p.zones=z;}if(q.get(\"coating\")===\"0\")p.coating=false;const slot=pick(\"slot\",[\"0\",\"1\",\"2\"]);if(slot)p.slot=Number(slot);if(q.get(\"hold\")===\"1\")p.hold=true;setPaint(p);}catch(e){}}export function usePaint(){const s=useSyncExternalStore(subscribe,()=>state,()=>INITIAL);useEffect(()=>{seedFromLink();},[]);return s;}/** Back to the first screen (keeps the answers, like the canvas). */export function resetPaint(){setPaint({otpSent:false,code:\"\",hold:false,booked:false,mode:\"book\",announce:\"\"});}\nexport const __FramerMetadata__ = {\"exports\":{\"PaintState\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePaint\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"clearStaleAnnounce\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resetPaint\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getPaint\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"setPaint\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./paintStore.map","// Moving between the Tint World pages: the page for each P1 screen, the next and previous screen for the buyer's\n// reason, and a hook that changes page without a reload, so the shared record survives.\nimport*as Framer from\"framer\";import{tintScreens}from\"https://framerusercontent.com/modules/iWW3M1nAnYTAQNvtk6P2/0ePbQcOL1Mfii6x6OTEA/tintworld.js\";// Framer's router is a runtime export without a public type, so it is read through an untyped handle.\nconst F=Framer;export const P1_PATH={why:\"/p1\",car:\"/p1/car\",film:\"/p1/film\",shade:\"/p1/shade\",law:\"/p1/law\",included:\"/p1/included\",total:\"/p1/total\",time:\"/p1/time\",number:\"/p1/number\",texted:\"/p1/texted\",booked:\"/p1/booked\",paint:\"/p1/paint\"};/** P2, the paint protection builder: eight steps; \"texted\" when the buyer asks for the quote by text. */export const P2_PATH={why:\"/p2\",car:\"/p2/car\",rec:\"/p2/pick\",coverage:\"/p2/coverage\",warranty:\"/p2/warranty\",total:\"/p2/total\",time:\"/p2/time\",hold:\"/p2/hold\",number:\"/p2/number\",texted:\"/p2/texted\",booked:\"/p2/booked\",quote:\"/p2/quote\"};export const P2_ORDER=[\"why\",\"car\",\"rec\",\"coverage\",\"warranty\",\"total\",\"time\",\"hold\",\"number\",\"booked\"];/** P2's steps for this pick: the hold step only when the hold is offered (jobs over a day, a full day to cancel). */export function p2Order(holdStep){return holdStep?P2_ORDER:P2_ORDER.filter(k=>k!==\"hold\");}/** P3, the five-minute reply: the text thread, the saved quote pages (their own addresses), and the moments after. */export const P3_PATH={thread:\"/p3\",quote:\"/quote/k7qp-m2ta\",booked:\"/p3/booked\",reminder:\"/p3/reminder\",change:\"/p3/change\",look:\"/p3/look\",approve:\"/quote/r4hn-w8vd\",approved:\"/p3/approved\",rep:\"/p3/rep\"};/** The next screen for this reason (privacy and fix pick the shade before the film). */export function p1Next(door,screen){const o=tintScreens(door);const i=o.indexOf(screen);return i>-1&&i<o.length-1?o[i+1]:screen;}/** Back: the law card returns to the shade, the paint handoff and the texted quote to where they came from. */export function p1Prev(door,screen){if(screen===\"law\")return\"shade\";if(screen===\"paint\")return\"why\";if(screen===\"texted\")return\"total\";const o=tintScreens(door);const i=o.indexOf(screen);return i>0?o[i-1]:\"why\";}/** Set once the buyer has moved between pages inside the site, so the next screen puts focus on its question. */export const NAV={moved:false};/** On arrival after an in-site move: focus the screen's h1 (the question), so a screen reader starts there. */export function focusQuestion(root){if(!NAV.moved||!root)return;const h=root.querySelector(\"h1\");if(!h)return;h.setAttribute(\"tabindex\",\"-1\");h.focus({preventScroll:true});}/** Go to a page by its path: Framer's router when it is there (no reload), otherwise a normal page load. */export function useGo(){const router=F.useRouter?F.useRouter():null;return path=>{NAV.moved=true;const routes=router&&router.routes||{};let id=null;for(const k in routes){if(routes[k]&&routes[k].path===path){id=k;break;}}if(id&&router&&typeof router.navigate===\"function\"){router.navigate(id,\"\");return;}if(typeof window!==\"undefined\")window.location.href=path;};}\nexport const __FramerMetadata__ = {\"exports\":{\"useGo\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"focusQuestion\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"P1_PATH\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"P3_PATH\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"P2_PATH\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"p2Order\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"P2_ORDER\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"p1Next\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NAV\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"p1Prev\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./tintNav.map"],"mappings":"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"}