{"id":2487,"date":"2026-06-05T05:50:06","date_gmt":"2026-06-05T05:50:06","guid":{"rendered":"https:\/\/rupankanarchointeriors.com\/blog\/?p=2487"},"modified":"2026-06-06T08:52:41","modified_gmt":"2026-06-06T08:52:41","slug":"2487-2","status":"publish","type":"post","link":"https:\/\/rupankanarchointeriors.com\/blog\/2487-2\/","title":{"rendered":""},"content":{"rendered":"\n\n\n<h2 class=\"sr-only\">Quotation builder for interior design and construction with auto-save and client management<\/h2>\n<style>\n*{box-sizing:border-box;margin:0;padding:0}\nbody{font-family:var(--font-sans)}\n.wrap{padding:0}\n.tabs{display:flex;border-bottom:0.5px solid var(--color-border-secondary);margin-bottom:0;background:var(--color-background-primary);position:sticky;top:0;z-index:10}\n.tab{flex:1;padding:10px 6px;font-size:12px;font-weight:500;border:none;background:transparent;cursor:pointer;color:var(--color-text-secondary);border-bottom:2px solid transparent;letter-spacing:.3px}\n.tab.ai{color:#7c3aed;border-bottom-color:#7c3aed}\n.tab.ac{color:#1c3a5e;border-bottom-color:#1c3a5e}\n.tab.ak{color:#16a34a;border-bottom-color:#16a34a}\n.pg{display:none;padding:14px}.pg.on{display:block}\n.hbi{background:#7c3aed;color:#fff;border-radius:var(--border-radius-md);padding:14px;margin-bottom:10px;display:flex;justify-content:space-between;align-items:flex-start}\n.hbc{background:#1c3a5e;color:#fff;border-radius:var(--border-radius-md);padding:14px;margin-bottom:10px;display:flex;justify-content:space-between;align-items:flex-start}\n.hco{font-size:16px;font-weight:500}\n.hs{font-size:12px;opacity:.75;margin-top:2px}\n.hbg{background:rgba(255,255,255,.2);border-radius:20px;padding:3px 10px;font-size:11px;white-space:nowrap}\n.sec{border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);padding:12px;margin-bottom:10px;background:var(--color-background-primary)}\n.sl{font-size:10px;font-weight:500;letter-spacing:1px;color:var(--color-text-secondary);text-transform:uppercase;margin-bottom:10px}\n.g2{display:grid;grid-template-columns:1fr 1fr;gap:8px}\n.g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}\n.fld{display:flex;flex-direction:column;gap:4px;margin-bottom:0}\n.fld label{font-size:11px;color:var(--color-text-secondary);font-weight:500}\n.fld input,.fld select,.fld textarea{font-size:13px;padding:7px 10px;background:var(--color-background-secondary)}\n.fld textarea{min-height:50px;resize:vertical}\n.sb{background:var(--color-background-secondary);border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);padding:10px 12px;margin-bottom:10px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}\n.sb label{font-size:11px;color:var(--color-text-secondary);font-weight:500;white-space:nowrap}\n.sb input{flex:1;min-width:120px;font-size:13px;padding:6px 10px}\n.svb{padding:7px 14px;background:#16a34a;color:#fff;border:none;border-radius:var(--border-radius-md);font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap}\n.an{font-size:11px;color:#16a34a;width:100%;margin-top:2px}\n.rc{border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);margin-bottom:8px;overflow:hidden;background:var(--color-background-primary)}\n.rh{display:flex;justify-content:space-between;align-items:center;padding:9px 11px;background:var(--color-background-secondary)}\n.rni{font-size:13px;font-weight:500;background:transparent;border:none;color:var(--color-text-primary);font-family:var(--font-sans);flex:1;min-width:0;outline:none}\n.rti{font-size:12px;font-weight:500;color:#7c3aed;margin-right:6px;white-space:nowrap}\n.rtc{font-size:12px;font-weight:500;color:#1c3a5e;margin-right:6px;white-space:nowrap}\n.xb{background:none;border:none;cursor:pointer;color:var(--color-text-secondary);font-size:15px;padding:2px 4px;line-height:1;flex-shrink:0}\n.rb{padding:10px}\n.ih{display:grid;gap:5px;font-size:10px;color:var(--color-text-secondary);font-weight:500;margin-bottom:4px}\n.ig{grid-template-columns:minmax(0,2fr) 58px 58px 65px 24px}\n.cg{grid-template-columns:minmax(0,2fr) 52px 52px 65px 65px 24px}\n.ir{display:grid;gap:5px;align-items:center;margin-bottom:4px}\n.ir input,.ir select{font-size:12px;padding:5px 7px;background:var(--color-background-secondary)}\n.aib{width:100%;padding:7px;background:transparent;border:0.5px dashed var(--color-border-secondary);border-radius:var(--border-radius-md);font-size:12px;cursor:pointer;color:var(--color-text-secondary);margin-top:4px}\n.arb{width:100%;padding:9px;background:transparent;border:0.5px dashed var(--color-border-secondary);border-radius:var(--border-radius-md);font-size:13px;cursor:pointer;margin-top:4px;font-weight:500}\n.arb.i{border-color:#c4b5fd;color:#7c3aed}\n.arb.c{border-color:#93c5fd;color:#1c3a5e}\n.tb2{background:var(--color-background-secondary);border-radius:var(--border-radius-md);padding:12px;margin-top:8px}\n.tr2{display:flex;justify-content:space-between;font-size:13px;padding:3px 0;color:var(--color-text-secondary)}\n.tr2.gd{border-top:0.5px solid var(--color-border-secondary);margin-top:6px;padding-top:8px;font-size:15px;font-weight:500;color:var(--color-text-primary)}\n.dr{display:flex;justify-content:space-between;align-items:center;font-size:13px;padding:3px 0;color:var(--color-text-secondary)}\n.di{width:55px;padding:5px 7px;font-size:13px;text-align:center}\n.cg2{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px}\n.chip{border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);padding:7px 9px;cursor:pointer;font-size:12px;color:var(--color-text-secondary);line-height:1.4}\n.si2{border-color:#7c3aed;background:#f5f3ff;color:#5b21b6}\n.sc2{border-color:#1c3a5e;background:#eff6ff;color:#1e40af}\n.br{display:flex;gap:8px;margin-top:14px}\n.btn{flex:1;padding:10px;border-radius:var(--border-radius-md);font-size:13px;font-weight:500;cursor:pointer;border:none;min-width:100px}\n.bi{background:#7c3aed;color:#fff}\n.bc{background:#1c3a5e;color:#fff}\n.bo{background:transparent;border:0.5px solid var(--color-border-secondary);color:var(--color-text-primary)}\n.clh{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}\n.clh h3{font-size:15px;font-weight:500;color:var(--color-text-primary)}\n.cc{font-size:11px;color:var(--color-text-secondary);background:var(--color-background-secondary);border-radius:20px;padding:2px 8px}\n.sx input{font-size:13px;padding:8px 12px;margin-bottom:10px;width:100%}\n.fts{display:flex;gap:6px;margin-bottom:12px}\n.ft{padding:5px 12px;border-radius:20px;font-size:11px;font-weight:500;cursor:pointer;border:0.5px solid var(--color-border-secondary);background:transparent;color:var(--color-text-secondary)}\n.ft.on{background:var(--color-text-primary);color:var(--color-background-primary);border-color:var(--color-text-primary)}\n.ft.oi{background:#7c3aed;border-color:#7c3aed;color:#fff}\n.ft.oc{background:#1c3a5e;border-color:#1c3a5e;color:#fff}\n.clc{border:0.5px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);padding:12px;margin-bottom:8px;background:var(--color-background-primary)}\n.clt{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:6px}\n.cln{font-size:14px;font-weight:500;color:var(--color-text-primary)}\n.ctb{font-size:10px;font-weight:500;padding:2px 8px;border-radius:20px;white-space:nowrap}\n.bdi{background:#f5f3ff;color:#5b21b6}\n.bdc{background:#eff6ff;color:#1e40af}\n.cm{font-size:12px;color:var(--color-text-secondary);line-height:1.6;margin-bottom:6px}\n.camt{font-size:14px;font-weight:500;color:#16a34a;margin-bottom:8px}\n.ca{display:flex;gap:6px;flex-wrap:wrap}\n.cab{padding:6px 12px;border-radius:var(--border-radius-md);font-size:12px;font-weight:500;cursor:pointer;border:none}\n.ced{background:var(--color-background-secondary);color:var(--color-text-primary);border:0.5px solid var(--color-border-secondary)}\n.cpv{background:#f5f3ff;color:#5b21b6;border:0.5px solid #c4b5fd}\n.cpvc{background:#eff6ff;color:#1e40af;border:0.5px solid #93c5fd}\n.cdl{background:var(--color-background-primary);color:#dc2626;border:0.5px solid #fecaca}\n.es{text-align:center;padding:40px 20px;color:var(--color-text-secondary)}\n.ov{min-height:500px;background:rgba(0,0,0,.5);display:flex;align-items:flex-start;justify-content:center;padding:20px;border-radius:var(--border-radius-md);margin-top:10px}\n.ov.hidden{display:none}\n.mb{background:var(--color-background-primary);width:100%;max-width:620px;border-radius:var(--border-radius-lg);padding:16px;color:var(--color-text-primary);max-height:80vh;overflow-y:auto}\n.mcl{float:right;background:none;border:none;font-size:18px;cursor:pointer;color:var(--color-text-secondary);line-height:1;margin-left:8px}\n.pb2{width:100%;padding:10px;margin-top:12px;border:none;border-radius:var(--border-radius-md);font-size:13px;font-weight:500;cursor:pointer;color:#fff}\n.pb2.pi{background:#7c3aed}.pb2.pc{background:#1c3a5e}\n.phi{border-bottom:2px solid #7c3aed;padding-bottom:12px;margin-bottom:14px}\n.phc{border-bottom:2px solid #1c3a5e;padding-bottom:12px;margin-bottom:14px}\n.pci{font-size:16px;font-weight:500;color:#7c3aed}\n.pcc{font-size:16px;font-weight:500;color:#1c3a5e}\n.pm{font-size:11px;color:#777;margin-top:2px}\n.pki{background:#f5f3ff;border-radius:var(--border-radius-md);padding:9px 12px;margin-bottom:12px;font-size:12px;line-height:1.7}\n.pkc{background:#eff6ff;border-radius:var(--border-radius-md);padding:9px 12px;margin-bottom:12px;font-size:12px;line-height:1.7}\n.pt{width:100%;border-collapse:collapse;font-size:11px;margin-bottom:8px}\n.pt th{padding:6px 8px;text-align:left;font-size:10px}.pt th.r{text-align:right}\n.pt td{padding:5px 8px;border-bottom:0.5px solid #eee}.pt td.r{text-align:right}.pt td.c{text-align:center}\n.ppr.i td{background:#f5f3ff;color:#5b21b6;font-weight:500;font-size:11px}\n.ppr.c td{background:#eff6ff;color:#1e40af;font-weight:500;font-size:11px}\n.ptt{text-align:right;font-size:12px;color:#555;margin-top:8px}\n.ptt div{padding:2px 0}\n.ptt .gd{font-size:15px;font-weight:500;border-top:1.5px solid;padding-top:6px;margin-top:6px}\n.ptt .gd.i{color:#7c3aed;border-color:#7c3aed}\n.ptt .gd.c{color:#1c3a5e;border-color:#1c3a5e}\n.pte{margin-top:12px;font-size:11px;color:#666;border-top:0.5px solid #eee;padding-top:10px;line-height:1.8}\n.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%) translateY(60px);background:var(--color-text-primary);color:var(--color-background-primary);padding:8px 16px;border-radius:20px;font-size:12px;font-weight:500;z-index:999;transition:transform .3s;pointer-events:none}\n.toast.show{transform:translateX(-50%) translateY(0)}\n.si{font-size:11px;padding:3px 8px;border-radius:20px;background:var(--color-background-secondary);color:var(--color-text-secondary);margin-bottom:4px;text-align:right}\n.si.ok{color:#16a34a;background:#f0fdf4}\n<\/style>\n\n<div class=\"wrap\">\n<div class=\"tabs\">\n  <button class=\"tab ai\" id=\"tab-int\" onclick=\"sp('int')\">Interior Design<\/button>\n  <button class=\"tab\" id=\"tab-con\" onclick=\"sp('con')\">Construction<\/button>\n  <button class=\"tab\" id=\"tab-cl\" onclick=\"sp('cl')\">Saved Clients<\/button>\n<\/div>\n\n<!-- INTERIOR -->\n<div class=\"pg on\" id=\"pg-int\">\n  <div class=\"hbi\"><div><div class=\"hco\" id=\"icd\">Aapka Studio<\/div><div class=\"hs\">Interior Design &amp; Decor<\/div><\/div><div class=\"hbg\">Interior Quotation<\/div><\/div>\n  <div class=\"si\" id=\"si-int\">Ready<\/div>\n  <div class=\"sb\">\n    <label>Save Name:<\/label>\n    <input id=\"isn\" placeholder=\"e.g. Rajesh Gupta - 3BHK\" oninput=\"ads('int')\">\n    <button class=\"svb\" onclick=\"saveClient('int')\">Save Client<\/button>\n    <div class=\"an\" id=\"ian\"><\/div>\n  <\/div>\n  <div class=\"sec\">\n    <div class=\"sl\">Company Info<\/div>\n    <div class=\"g2\" style=\"margin-bottom:8px\">\n      <div class=\"fld\"><label>Studio Name<\/label><input id=\"ico\" placeholder=\"Sharma Interiors\" oninput=\"sh('int');ads('int')\"><\/div>\n      <div class=\"fld\"><label>Owner \/ Designer<\/label><input id=\"ides\" placeholder=\"Priya Sharma\" oninput=\"ads('int')\"><\/div>\n    <\/div>\n    <div class=\"g2\" style=\"margin-bottom:8px\">\n      <div class=\"fld\"><label>Phone \/ WhatsApp<\/label><input id=\"iph\" type=\"tel\" placeholder=\"+91 98765 43210\" oninput=\"ads('int')\"><\/div>\n      <div class=\"fld\"><label>Email<\/label><input id=\"iem\" type=\"email\" placeholder=\"studio@email.com\" oninput=\"ads('int')\"><\/div>\n    <\/div>\n    <div class=\"g2\">\n      <div class=\"fld\"><label>City<\/label><input id=\"icity\" placeholder=\"Jaipur, Rajasthan\" oninput=\"ads('int')\"><\/div>\n      <div class=\"fld\"><label>GST No.<\/label><input id=\"igst\" placeholder=\"08AABCS1234N1Z1\" oninput=\"ads('int')\"><\/div>\n    <\/div>\n  <\/div>\n  <div class=\"sec\">\n    <div class=\"sl\">Client &amp; Project<\/div>\n    <div class=\"g2\" style=\"margin-bottom:8px\">\n      <div class=\"fld\"><label>Client Name<\/label><input id=\"icl\" placeholder=\"Mr. Rajesh Gupta\" oninput=\"ads('int')\"><\/div>\n      <div class=\"fld\"><label>Client Phone<\/label><input id=\"iclp\" type=\"tel\" placeholder=\"+91 99999 00000\" oninput=\"ads('int')\"><\/div>\n    <\/div>\n    <div class=\"g2\" style=\"margin-bottom:8px\">\n      <div class=\"fld\"><label>Project Type<\/label><select id=\"ipt\" onchange=\"ads('int')\"><option>Residential &#8211; 1BHK<\/option><option>Residential &#8211; 2BHK<\/option><option>Residential &#8211; 3BHK<\/option><option>Residential &#8211; Villa<\/option><option>Commercial Office<\/option><option>Retail \/ Showroom<\/option><option>Restaurant \/ Cafe<\/option><option>Hotel \/ Resort<\/option><\/select><\/div>\n      <div class=\"fld\"><label>Design Style<\/label><select id=\"ist\" onchange=\"ads('int')\"><option>Modern Minimalist<\/option><option>Contemporary<\/option><option>Classic \/ Traditional<\/option><option>Luxury \/ Premium<\/option><option>Industrial<\/option><option>Rajasthani Ethnic<\/option><\/select><\/div>\n    <\/div>\n    <div class=\"g3\" style=\"margin-bottom:8px\">\n      <div class=\"fld\"><label>Area (sqft)<\/label><input id=\"iar\" type=\"number\" placeholder=\"1500\" oninput=\"ads('int')\"><\/div>\n      <div class=\"fld\"><label>Quotation No.<\/label><input id=\"iqn\" placeholder=\"INT-2024-001\" oninput=\"ads('int')\"><\/div>\n      <div class=\"fld\"><label>Date<\/label><input id=\"idte\" type=\"date\" oninput=\"ads('int')\"><\/div>\n    <\/div>\n    <div class=\"g2\">\n      <div class=\"fld\"><label>Valid Until<\/label><input id=\"ivld\" type=\"date\" oninput=\"ads('int')\"><\/div>\n      <div class=\"fld\"><label>Site Address<\/label><input id=\"isit\" placeholder=\"Vaishali Nagar, Jaipur\" oninput=\"ads('int')\"><\/div>\n    <\/div>\n  <\/div>\n  <div class=\"sec\">\n    <div class=\"sl\">Room-wise Items<\/div>\n    <div id=\"irm\"><\/div>\n    <button class=\"arb i\" onclick=\"addRoom()\">+ Room \/ Area Add Karo<\/button>\n    <div class=\"tb2\">\n      <div class=\"tr2\"><span>Subtotal<\/span><span id=\"isb\">Rs.0<\/span><\/div>\n      <div class=\"tr2\"><span>Design Fee<\/span><span style=\"display:flex;align-items:center;gap:5px\"><input type=\"number\" id=\"idf\" placeholder=\"0\" style=\"width:90px;padding:5px 7px;font-size:13px;background:var(--color-background-secondary)\" oninput=\"irc();ads('int')\"> Rs.<\/span><\/div>\n      <div class=\"tr2\"><span>GST 18%<\/span><span id=\"itx\">Rs.0<\/span><\/div>\n      <div class=\"dr\"><span>Discount<\/span><span style=\"display:flex;align-items:center;gap:5px\"><input class=\"di\" type=\"number\" id=\"idc\" value=\"0\" min=\"0\" max=\"50\" oninput=\"irc();ads('int')\">%<\/span><\/div>\n      <div class=\"tr2 gd\"><span>Grand Total<\/span><span id=\"igt\">Rs.0<\/span><\/div>\n    <\/div>\n  <\/div>\n  <div class=\"sec\"><div class=\"sl\">Payment Schedule<\/div><div class=\"cg2\" id=\"ipg\"><\/div><\/div>\n  <div class=\"sec\">\n    <div class=\"sl\">Terms &amp; Conditions<\/div>\n    <div id=\"itl\" style=\"display:flex;flex-direction:column;gap:5px;margin-top:6px\"><\/div>\n    <div class=\"fld\" style=\"margin-top:8px\"><label>Extra Notes<\/label><textarea id=\"int2\" placeholder=\"Koi aur terms...\" oninput=\"ads('int')\"><\/textarea><\/div>\n  <\/div>\n  <div class=\"br\">\n    <button class=\"btn bi\" onclick=\"openPrev('int')\">Preview &amp; Print<\/button>\n    <button class=\"btn bo\" onclick=\"newQ('int')\">New Quotation<\/button>\n  <\/div>\n  <div class=\"ov hidden\" id=\"ov-int\"><div class=\"mb\"><button class=\"mcl\" onclick=\"closeOv('int')\">&#x2715;<\/button><div id=\"pi\"><\/div><button class=\"pb2 pi\" onclick=\"doPrint('int')\">Print \/ Save as PDF<\/button><\/div><\/div>\n<\/div>\n\n<!-- CONSTRUCTION -->\n<div class=\"pg\" id=\"pg-con\">\n  <div class=\"hbc\"><div><div class=\"hco\" id=\"ccd\">Aapki Construction Co.<\/div><div class=\"hs\">Civil &amp; Construction<\/div><\/div><div class=\"hbg\">Construction Quotation<\/div><\/div>\n  <div class=\"si\" id=\"si-con\">Ready<\/div>\n  <div class=\"sb\">\n    <label>Save Name:<\/label>\n    <input id=\"csn\" placeholder=\"e.g. Mohan Sharma - G+1 House\" oninput=\"ads('con')\">\n    <button class=\"svb\" onclick=\"saveClient('con')\">Save Client<\/button>\n    <div class=\"an\" id=\"can\"><\/div>\n  <\/div>\n  <div class=\"sec\">\n    <div class=\"sl\">Company Info<\/div>\n    <div class=\"g2\" style=\"margin-bottom:8px\">\n      <div class=\"fld\"><label>Company Name<\/label><input id=\"cco\" placeholder=\"Yadav Constructions Pvt. Ltd.\" oninput=\"sh('con');ads('con')\"><\/div>\n      <div class=\"fld\"><label>Engineer \/ Owner<\/label><input id=\"ccp\" placeholder=\"Er. Suresh Yadav\" oninput=\"ads('con')\"><\/div>\n    <\/div>\n    <div class=\"g2\" style=\"margin-bottom:8px\">\n      <div class=\"fld\"><label>Phone<\/label><input id=\"cph\" type=\"tel\" placeholder=\"+91 98765 43210\" oninput=\"ads('con')\"><\/div>\n      <div class=\"fld\"><label>Email<\/label><input id=\"cem\" type=\"email\" placeholder=\"info@company.com\" oninput=\"ads('con')\"><\/div>\n    <\/div>\n    <div class=\"g3\">\n      <div class=\"fld\"><label>City<\/label><input id=\"ccit\" placeholder=\"Jaipur\" oninput=\"ads('con')\"><\/div>\n      <div class=\"fld\"><label>License No.<\/label><input id=\"clic\" placeholder=\"RAJ\/CON\/2020\/001\" oninput=\"ads('con')\"><\/div>\n      <div class=\"fld\"><label>GST No.<\/label><input id=\"cgst\" placeholder=\"08AABCS5678N1Z1\" oninput=\"ads('con')\"><\/div>\n    <\/div>\n  <\/div>\n  <div class=\"sec\">\n    <div class=\"sl\">Client &amp; Project<\/div>\n    <div class=\"g2\" style=\"margin-bottom:8px\">\n      <div class=\"fld\"><label>Client Name<\/label><input id=\"ccl\" placeholder=\"Mr. Mohan Sharma\" oninput=\"ads('con')\"><\/div>\n      <div class=\"fld\"><label>Client Phone<\/label><input id=\"cclp\" type=\"tel\" placeholder=\"+91 99999 11111\" oninput=\"ads('con')\"><\/div>\n    <\/div>\n    <div class=\"g2\" style=\"margin-bottom:8px\">\n      <div class=\"fld\"><label>Site Address<\/label><input id=\"csit\" placeholder=\"Plot 45, Vaishali Nagar\" oninput=\"ads('con')\"><\/div>\n      <div class=\"fld\"><label>Project Type<\/label><select id=\"cpt\" onchange=\"ads('con')\"><option>Residential House (GF)<\/option><option>Residential House (G+1)<\/option><option>Residential House (G+2)<\/option><option>Residential Villa<\/option><option>Commercial Building<\/option><option>Industrial Shed<\/option><option>Boundary Wall<\/option><option>Renovation \/ Repair<\/option><\/select><\/div>\n    <\/div>\n    <div class=\"g3\">\n      <div class=\"fld\"><label>Quotation No.<\/label><input id=\"cqn\" placeholder=\"CON-2024-001\" oninput=\"ads('con')\"><\/div>\n      <div class=\"fld\"><label>Date<\/label><input id=\"cdte\" type=\"date\" oninput=\"ads('con')\"><\/div>\n      <div class=\"fld\"><label>Duration<\/label><input id=\"cdur\" placeholder=\"8-10 months\" oninput=\"ads('con')\"><\/div>\n    <\/div>\n  <\/div>\n  <div class=\"sec\">\n    <div class=\"sl\">Phase-wise BOQ<\/div>\n    <div id=\"cph2\"><\/div>\n    <button class=\"arb c\" onclick=\"addPhase()\">+ Phase \/ Category Add Karo<\/button>\n    <div class=\"tb2\">\n      <div class=\"tr2\"><span>Subtotal (Mat + Labour)<\/span><span id=\"csb\">Rs.0<\/span><\/div>\n      <div class=\"tr2\"><span>GST 18%<\/span><span id=\"ctx\">Rs.0<\/span><\/div>\n      <div class=\"dr\"><span>Discount<\/span><span style=\"display:flex;align-items:center;gap:5px\"><input class=\"di\" type=\"number\" id=\"cdc\" value=\"0\" min=\"0\" max=\"50\" oninput=\"crc();ads('con')\">%<\/span><\/div>\n      <div class=\"tr2 gd\"><span>Grand Total<\/span><span id=\"cgt\">Rs.0<\/span><\/div>\n    <\/div>\n  <\/div>\n  <div class=\"sec\">\n    <div class=\"sl\">Terms &amp; Conditions<\/div>\n    <div class=\"cg2\" id=\"ctg\"><\/div>\n    <div class=\"fld\" style=\"margin-top:8px\"><label>Extra Notes<\/label><textarea id=\"cnt2\" placeholder=\"Kya included, kya nahi...\" oninput=\"ads('con')\"><\/textarea><\/div>\n  <\/div>\n  <div class=\"br\">\n    <button class=\"btn bc\" onclick=\"openPrev('con')\">Preview &amp; Print<\/button>\n    <button class=\"btn bo\" onclick=\"newQ('con')\">New Quotation<\/button>\n  <\/div>\n  <div class=\"ov hidden\" id=\"ov-con\"><div class=\"mb\"><button class=\"mcl\" onclick=\"closeOv('con')\">&#x2715;<\/button><div id=\"pc\"><\/div><button class=\"pb2 pc\" onclick=\"doPrint('con')\">Print \/ Save as PDF<\/button><\/div><\/div>\n<\/div>\n\n<!-- SAVED CLIENTS -->\n<div class=\"pg\" id=\"pg-cl\">\n  <div class=\"clh\"><h3>Saved Quotations<\/h3><span class=\"cc\" id=\"clcnt\">0<\/span><\/div>\n  <div class=\"sx\"><input id=\"clsr\" placeholder=\"Client naam dhundo...\" oninput=\"rcl()\"><\/div>\n  <div class=\"fts\">\n    <button class=\"ft on\" id=\"fa\" onclick=\"sf('all')\">All<\/button>\n    <button class=\"ft\" id=\"fi\" onclick=\"sf('int')\">Interior<\/button>\n    <button class=\"ft\" id=\"fc\" onclick=\"sf('con')\">Construction<\/button>\n  <\/div>\n  <div id=\"cll\"><\/div>\n<\/div>\n<\/div>\n\n<div class=\"toast\" id=\"toast\"><\/div>\n\n<script>\nvar IR=[],CP=[];\nvar IPS={0:true},ITS={},CTS={};\nvar ast=null,ecid=null,cf2='all';\n\nvar SK='qt_v5',DI='dft_i_v5',DC='dft_c_v5';\n\nvar IPO=['30% booking + 30% start + 40% completion','50% advance + 50% on handover','25-25-25-25 (4 installments)','Equal monthly installments','100% on completion','Custom milestone-based'];\nvar ITD=['Design fee non-refundable after concept approval','Client to clear site before work begins','Extra work billed separately at actual cost','2-year workmanship warranty','Materials as per approved BOQ','Timeline: 60-90 working days','Electricity & water by client','Quotation valid for 30 days','Disputes: Jaipur jurisdiction'];\nvar CTD=['30% mobilization advance required','Running bills every 30 days','Extra work needs written approval','Material rates subject to market variation','Client to arrange water & power','Contractor not liable for hidden utilities','Defect liability: 12 months','Force majeure applies','All disputes: Jaipur jurisdiction','Price valid 60 days from quote'];\n\nvar DR=[\n  {name:'Living Room',items:[{d:'False Ceiling',u:'Sqft',q:200,r:95},{d:'Flooring (Vitrified)',u:'Sqft',q:200,r:85},{d:'TV Unit + Wall Panel',u:'LS',q:1,r:42000},{d:'Painting & Texture',u:'Sqft',q:400,r:30}]},\n  {name:'Master Bedroom',items:[{d:'Wardrobe (Sliding)',u:'Sqft',q:18,r:1100},{d:'False Ceiling',u:'Sqft',q:150,r:90},{d:'Bed Back Panel',u:'LS',q:1,r:16000},{d:'Flooring',u:'Sqft',q:150,r:85}]},\n  {name:'Kitchen',items:[{d:'Modular Kitchen',u:'Rft',q:10,r:3200},{d:'Granite Counter Top',u:'Rft',q:10,r:600},{d:'Electrical Outlets',u:'No.',q:5,r:900}]}\n];\nvar DP=[\n  {name:'Phase 1 - Foundation',items:[{d:'Excavation',u:'Cum',q:50,r:350,m:0,l:350},{d:'PCC M10 Concrete',u:'Cum',q:15,r:4200,m:3800,l:400},{d:'RCC Footings M20',u:'Cum',q:12,r:7500,m:5500,l:2000}]},\n  {name:'Phase 2 - Superstructure',items:[{d:'RCC Columns M25',u:'Cum',q:18,r:9500,m:7000,l:2500},{d:'Beams & Slabs',u:'Cum',q:30,r:9200,m:6800,l:2400},{d:'Brickwork 9 inch',u:'Sqm',q:180,r:950,m:600,l:350}]},\n  {name:'Phase 3 - Finishing',items:[{d:'Internal Plaster',u:'Sqm',q:350,r:280,m:150,l:130},{d:'Flooring Tiles',u:'Sqft',q:1200,r:95,m:65,l:30},{d:'Painting 2 coats',u:'Sqft',q:2000,r:22,m:10,l:12}]}\n];\n\nvar IU=['Sqft','Sqm','Rft','No.','LS','Set','Room','Floor'];\nvar CU=['Cum','Sqm','Sqft','Rft','No.','LS','Bag','MT','Kg','Set'];\nvar fm=n=>'Rs.'+Math.round(n).toLocaleString('en-IN');\nvar gv=id=>{var e=document.getElementById(id);return e?e.value:''};\nvar el=id=>document.getElementById(id);\n\nfunction gc(){try{return JSON.parse(window.storage_get?window.storage_get(SK)||'[]':localStorage.getItem(SK)||'[]')}catch{return[]}}\nfunction sc(a){try{if(window.storage_set)window.storage_set(SK,JSON.stringify(a));else localStorage.setItem(SK,JSON.stringify(a))}catch{}}\nfunction sdft(t,d){try{var k=t==='int'?DI:DC;if(window.storage_set)window.storage_set(k,JSON.stringify(d));else localStorage.setItem(k,JSON.stringify(d))}catch{}}\nfunction ldft(t){try{var k=t==='int'?DI:DC;var d=window.storage_get?window.storage_get(k):localStorage.getItem(k);return d?JSON.parse(d):null}catch{return null}}\n\nfunction sp(t){\n  document.querySelectorAll('.pg').forEach(p=>p.classList.remove('on'));\n  document.querySelectorAll('.tab').forEach(b=>{b.className='tab'});\n  el('pg-'+t).classList.add('on');\n  var m={int:'ai',con:'ac',cl:'ak'};\n  el('tab-'+t).classList.add(m[t]);\n  if(t==='cl')rcl();\n}\n\nfunction sh(t){\n  if(t==='int')el('icd').textContent=gv('ico')||'Aapka Studio';\n  else el('ccd').textContent=gv('cco')||'Aapki Construction Co.';\n}\n\nfunction ads(t){\n  clearTimeout(ast);\n  var ind=el('si-'+t);if(ind){ind.textContent='Saving...';ind.className='si';}\n  ast=setTimeout(()=>{\n    sdft(t,cfd(t));\n    if(ind){ind.textContent='Auto-saved '+new Date().toLocaleTimeString('en-IN',{hour:'2-digit',minute:'2-digit'});ind.className='si ok';}\n    var note=el(t==='int'?'ian':'can');\n    if(note)note.textContent='Saved at '+new Date().toLocaleTimeString('en-IN',{hour:'2-digit',minute:'2-digit'});\n    setTimeout(()=>{if(ind){ind.textContent='';ind.className='si';}},3000);\n  },800);\n}\n\nfunction cfd(t){\n  if(t==='int')return{type:'int',f:{ico:gv('ico'),ides:gv('ides'),iph:gv('iph'),iem:gv('iem'),icity:gv('icity'),igst:gv('igst'),icl:gv('icl'),iclp:gv('iclp'),ipt:gv('ipt'),ist:gv('ist'),iar:gv('iar'),iqn:gv('iqn'),idte:gv('idte'),ivld:gv('ivld'),isit:gv('isit'),idf:gv('idf'),idc:gv('idc'),int2:gv('int2')},rooms:JSON.parse(JSON.stringify(IR)),ps:JSON.parse(JSON.stringify(IPS)),ts:JSON.parse(JSON.stringify(ITS)),sn:gv('isn')};\n  return{type:'con',f:{cco:gv('cco'),ccp:gv('ccp'),cph:gv('cph'),cem:gv('cem'),ccit:gv('ccit'),clic:gv('clic'),cgst:gv('cgst'),ccl:gv('ccl'),cclp:gv('cclp'),csit:gv('csit'),cpt:gv('cpt'),cqn:gv('cqn'),cdte:gv('cdte'),cdur:gv('cdur'),cdc:gv('cdc'),cnt2:gv('cnt2')},phases:JSON.parse(JSON.stringify(CP)),ts:JSON.parse(JSON.stringify(CTS)),sn:gv('csn')};\n}\n\nfunction ffd(data){\n  Object.entries(data.f).forEach(([id,val])=>{var e=el(id);if(e)e.value=val||'';});\n  if(data.type==='int'){\n    IR=JSON.parse(JSON.stringify(data.rooms||[]));\n    IPS=data.ps||{0:true};ITS=data.ts||{};\n    if(data.sn)el('isn').value=data.sn;\n    rr();rip();rit();sh('int');\n  }else{\n    CP=JSON.parse(JSON.stringify(data.phases||[]));\n    CTS=data.ts||{};\n    if(data.sn)el('csn').value=data.sn;\n    rph();rct();sh('con');\n  }\n}\n\nfunction saveClient(t){\n  var data=cfd(t);\n  var nm=data.sn||(t==='int'?gv('icl'):gv('ccl'))||'Unnamed';\n  if(!nm.trim()){toast('Pehle client ka naam daalo!');return;}\n  data.sn=nm;data.grand=cgrand(t,data);data.savedAt=new Date().toISOString();\n  var cl=gc();\n  if(ecid){var idx=cl.findIndex(c=>c.id===ecid);if(idx>=0){cl[idx]={...data,id:ecid};sc(cl);toast('Client update ho gaya!');ecid=null;return;}}\n  data.id='cl_'+Date.now();cl.unshift(data);sc(cl);\n  toast('Saved: '+nm);\n}\n\nfunction cgrand(t,data){\n  if(t==='int'){var s=(data.rooms||[]).reduce((x,r)=>x+r.items.reduce((rs,it)=>rs+(it.q*it.r),0),0);var df=+(data.f.idf)||0;var tx=(s+df)*0.18;var dc=+(data.f.idc)||0;return Math.round((s+df+tx)*(1-dc\/100));}\n  var s=(data.phases||[]).reduce((x,ph)=>x+ph.items.reduce((ps,it)=>ps+(it.q*(it.m+it.l)),0),0);var tx=s*0.18;var dc=+(data.f.cdc)||0;return Math.round((s+tx)*(1-dc\/100));\n}\n\nfunction sf(f){\n  cf2=f;\n  document.querySelectorAll('.ft').forEach(b=>b.className='ft');\n  var m={all:'on',int:'oi',con:'oc'};\n  el('f'+f).className='ft '+m[f];\n  rcl();\n}\n\nfunction rcl(){\n  var cl=gc();var q=(gv('clsr')||'').toLowerCase();\n  var fl=cl.filter(c=>{\n    var mf=cf2==='all'||c.type===cf2;\n    var ms=!q||(c.sn||'').toLowerCase().includes(q)||(c.f[c.type==='int'?'icl':'ccl']||'').toLowerCase().includes(q);\n    return mf&&ms;\n  });\n  el('clcnt').textContent=fl.length+' saved';\n  var e=el('cll');\n  if(!fl.length){e.innerHTML='<div class=\"es\"><p>Koi quotation saved nahi hai.<br>Form fill karo aur \"Save Client\" dabao.<\/p><\/div>';return;}\n  e.innerHTML=fl.map(c=>{\n    var ii=c.type==='int';\n    var cn=c.f[ii?'icl':'ccl']||c.sn||'Unknown';\n    var ph=c.f[ii?'iclp':'cclp']||'';\n    var qn=c.f[ii?'iqn':'cqn']||'';\n    var pj=c.f[ii?'ipt':'cpt']||'';\n    var dt=c.savedAt?new Date(c.savedAt).toLocaleDateString('en-IN',{day:'2-digit',month:'short',year:'2-digit'}):'';\n    return '<div class=\"clc\"><div class=\"clt\"><div class=\"cln\">'+c.sn+'<\/div><span class=\"ctb '+(ii?'bdi':'bdc')+'\">'+(ii?'Interior':'Construction')+'<\/span><\/div><div class=\"cm\">'+cn+(ph?' | '+ph:'')+'<br>'+pj+(qn?' | Ref: '+qn:'')+(dt?' | '+dt:'')+'<\/div><div class=\"camt\">'+fm(c.grand||0)+'<\/div><div class=\"ca\"><button class=\"cab ced\" onclick=\"editC(\\''+c.id+'\\')\">Edit \/ Open<\/button><button class=\"cab '+(ii?'cpv':'cpvc')+'\" onclick=\"prevC(\\''+c.id+'\\')\">Preview<\/button><button class=\"cab cdl\" onclick=\"delC(\\''+c.id+'\\')\">Delete<\/button><\/div><\/div>';\n  }).join('');\n}\n\nfunction editC(id){var c=gc().find(x=>x.id===id);if(!c)return;ecid=id;ffd(c);sp(c.type);toast('Client load ho gaya - edit karo!');window.scrollTo({top:0,behavior:'smooth'});}\nfunction prevC(id){var c=gc().find(x=>x.id===id);if(!c)return;ffd(c);openPrev(c.type);}\nfunction delC(id){if(!confirm('Delete karo?'))return;sc(gc().filter(c=>c.id!==id));if(ecid===id)ecid=null;rcl();toast('Deleted.');}\n\nfunction newQ(t){\n  if(!confirm('Current form clear karke naya start karo?'))return;\n  ecid=null;var yr=new Date().getFullYear();\n  if(t==='int'){\n    IR=[];IPS={0:true};ITS={};\n    ['ico','ides','iph','iem','icity','igst','icl','iclp','iar','isit','int2','isn'].forEach(id=>{var e=el(id);if(e)e.value='';});\n    el('idc').value=0;el('idf').value='';\n    el('iqn').value='INT-'+yr+'-'+(String(gc().filter(c=>c.type==='int').length+1).padStart(3,'0'));\n    el('idte').value=new Date().toISOString().split('T')[0];\n    el('ivld').value=new Date(Date.now()+30*864e5).toISOString().split('T')[0];\n    DR.forEach(r=>addRoom(JSON.parse(JSON.stringify(r))));rip();rit();sh('int');\n  }else{\n    CP=[];CTS={};\n    ['cco','ccp','cph','cem','ccit','clic','cgst','ccl','cclp','csit','cdur','cnt2','csn'].forEach(id=>{var e=el(id);if(e)e.value='';});\n    el('cdc').value=0;\n    el('cqn').value='CON-'+yr+'-'+(String(gc().filter(c=>c.type==='con').length+1).padStart(3,'0'));\n    el('cdte').value=new Date().toISOString().split('T')[0];\n    DP.forEach(p=>addPhase(JSON.parse(JSON.stringify(p))));rct();sh('con');\n  }\n  toast('Naya quotation start!');window.scrollTo({top:0,behavior:'smooth'});\n}\n\nfunction addRoom(p){IR.push(p||{name:'New Room',items:[{d:'Item',u:'Sqft',q:1,r:0}]});rr();}\nfunction rr(){\n  var e=el('irm');e.innerHTML='';\n  IR.forEach((rm,ri)=>{\n    var rs=rm.items.reduce((x,it)=>x+(it.q*it.r),0);\n    var dv=document.createElement('div');dv.className='rc';\n    var ih='<div class=\"ih ig\"><span>Description<\/span><span>Unit<\/span><span>Qty<\/span><span>Rate<\/span><span><\/span><\/div>'+\n      rm.items.map((it,ii)=>'<div class=\"ir ig\"><input value=\"'+it.d+'\" onchange=\"IR['+ri+'].items['+ii+'].d=this.value;ads(\\'int\\')\"><select onchange=\"IR['+ri+'].items['+ii+'].u=this.value;ads(\\'int\\')\">'+IU.map(u=>'<option'+(u===it.u?' selected':'')+'>'+u+'<\/option>').join('')+'<\/select><input type=\"number\" value=\"'+it.q+'\" min=\"0\" step=\"0.5\" oninput=\"IR['+ri+'].items['+ii+'].q=+this.value;irc();ads(\\'int\\')\"><input type=\"number\" value=\"'+it.r+'\" min=\"0\" oninput=\"IR['+ri+'].items['+ii+'].r=+this.value;irc();ads(\\'int\\')\"><button class=\"xb\" onclick=\"IR['+ri+'].items.splice('+ii+',1);rr();irc();ads(\\'int\\')\">&times;<\/button><\/div>').join('');\n    dv.innerHTML='<div class=\"rh\"><input class=\"rni\" value=\"'+rm.name+'\" onchange=\"IR['+ri+'].name=this.value;ads(\\'int\\')\"><span class=\"rti\" id=\"ra'+ri+'\">'+fm(rs)+'<\/span><button class=\"xb\" onclick=\"IR.splice('+ri+',1);rr();irc();ads(\\'int\\')\">&times;<\/button><\/div><div class=\"rb\">'+ih+'<button class=\"aib\" onclick=\"IR['+ri+'].items.push({d:\\'Item\\',u:\\'Sqft\\',q:1,r:0});rr();irc();ads(\\'int\\')\">+ Item Add Karo<\/button><\/div>';\n    e.appendChild(dv);\n  });irc();\n}\nfunction irc(){\n  var sub=0;IR.forEach((rm,ri)=>{var rs=rm.items.reduce((x,it)=>x+(it.q*it.r),0);sub+=rs;var e=el('ra'+ri);if(e)e.textContent=fm(rs);});\n  var df=+gv('idf')||0;var tx=(sub+df)*0.18;var dc=+gv('idc')||0;var gt=(sub+df+tx)*(1-dc\/100);\n  if(el('isb'))el('isb').textContent=fm(sub);if(el('itx'))el('itx').textContent=fm(tx);if(el('igt'))el('igt').textContent=fm(gt);\n}\nfunction rip(){var g=el('ipg');if(!g)return;g.innerHTML=IPO.map((p,i)=>'<div class=\"chip'+(IPS[i]?' si2':'')+'\" onclick=\"IPS={};IPS['+i+']=true;rip();ads(\\'int\\')\">'+p+'<\/div>').join('');}\nfunction rit(){var e=el('itl');if(!e)return;e.innerHTML=ITD.map((t,i)=>'<div class=\"chip'+(ITS[i]?' si2':'')+'\" style=\"display:flex;align-items:flex-start;gap:7px\" onclick=\"ITS['+i+']=!ITS['+i+'];rit();ads(\\'int\\')\"><span style=\"font-size:14px;flex-shrink:0\">'+(ITS[i]?'&#10003;':'&#9675;')+'<\/span><span>'+t+'<\/span><\/div>').join('');}\n\nfunction addPhase(p){CP.push(p||{name:'New Phase',items:[{d:'Item',u:'Cum',q:1,r:0,m:0,l:0}]});rph();}\nfunction rph(){\n  var e=el('cph2');e.innerHTML='';\n  CP.forEach((ph,pi)=>{\n    var ps=ph.items.reduce((x,it)=>x+(it.q*(it.m+it.l)),0);\n    var dv=document.createElement('div');dv.className='rc';\n    var ih='<div class=\"ih cg\"><span>Description<\/span><span>Unit<\/span><span>Qty<\/span><span>Material<\/span><span>Labour<\/span><span><\/span><\/div>'+\n      ph.items.map((it,ii)=>'<div class=\"ir cg\"><input value=\"'+it.d+'\" onchange=\"CP['+pi+'].items['+ii+'].d=this.value;ads(\\'con\\')\"><select onchange=\"CP['+pi+'].items['+ii+'].u=this.value;ads(\\'con\\')\">'+CU.map(u=>'<option'+(u===it.u?' selected':'')+'>'+u+'<\/option>').join('')+'<\/select><input type=\"number\" value=\"'+it.q+'\" min=\"0\" step=\"0.5\" oninput=\"CP['+pi+'].items['+ii+'].q=+this.value;crc();ads(\\'con\\')\"><input type=\"number\" value=\"'+it.m+'\" min=\"0\" oninput=\"CP['+pi+'].items['+ii+'].m=+this.value;crc();ads(\\'con\\')\"><input type=\"number\" value=\"'+it.l+'\" min=\"0\" oninput=\"CP['+pi+'].items['+ii+'].l=+this.value;crc();ads(\\'con\\')\"><button class=\"xb\" onclick=\"CP['+pi+'].items.splice('+ii+',1);rph();crc();ads(\\'con\\')\">&times;<\/button><\/div>').join('');\n    dv.innerHTML='<div class=\"rh\"><input class=\"rni\" value=\"'+ph.name+'\" onchange=\"CP['+pi+'].name=this.value;ads(\\'con\\')\"><span class=\"rtc\" id=\"pa'+pi+'\">'+fm(ps)+'<\/span><button class=\"xb\" onclick=\"CP.splice('+pi+',1);rph();crc();ads(\\'con\\')\">&times;<\/button><\/div><div class=\"rb\">'+ih+'<button class=\"aib\" onclick=\"CP['+pi+'].items.push({d:\\'Item\\',u:\\'Cum\\',q:1,r:0,m:0,l:0});rph();crc();ads(\\'con\\')\">+ Item Add Karo<\/button><\/div>';\n    e.appendChild(dv);\n  });crc();\n}\nfunction crc(){\n  var sub=0;CP.forEach((ph,pi)=>{var ps=ph.items.reduce((x,it)=>x+(it.q*(it.m+it.l)),0);sub+=ps;var e=el('pa'+pi);if(e)e.textContent=fm(ps);});\n  var tx=sub*0.18;var dc=+gv('cdc')||0;var gt=(sub+tx)*(1-dc\/100);\n  if(el('csb'))el('csb').textContent=fm(sub);if(el('ctx'))el('ctx').textContent=fm(tx);if(el('cgt'))el('cgt').textContent=fm(gt);\n}\nfunction rct(){var e=el('ctg');if(!e)return;e.innerHTML=CTD.map((t,i)=>'<div class=\"chip'+(CTS[i]?' sc2':'')+'\" onclick=\"CTS['+i+']=!CTS['+i+'];rct();ads(\\'con\\')\">'+t+'<\/div>').join('');}\n\nfunction openPrev(t){\n  if(t==='int'){\n    var sub=IR.reduce((x,r)=>x+r.items.reduce((rs,it)=>rs+(it.q*it.r),0),0);\n    var df=+gv('idf')||0;var tx=(sub+df)*0.18;var dc=+gv('idc')||0;var gt=(sub+df+tx)*(1-dc\/100);\n    var pk=Object.keys(IPS).find(k=>IPS[k]);\n    var st=Object.keys(ITS).filter(k=>ITS[k]).map(k=>ITD[k]);\n    var rr2=IR.map(r=>{var rs=r.items.reduce((x,it)=>x+(it.q*it.r),0);return'<tr class=\"ppr i\"><td colspan=\"4\" style=\"padding:7px 9px\">'+r.name+'<\/td><td class=\"r\" style=\"padding:7px 9px\">'+fm(rs)+'<\/td><\/tr>'+r.items.filter(it=>it.r>0).map(it=>'<tr><td style=\"padding:5px 9px 5px 16px\">'+it.d+'<\/td><td class=\"c\">'+it.u+'<\/td><td class=\"c\">'+it.q+'<\/td><td class=\"r\">'+fm(it.r)+'<\/td><td class=\"r\">'+fm(it.q*it.r)+'<\/td><\/tr>').join('');}).join('');\n    el('pi').innerHTML='<div class=\"phi\"><div style=\"display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px\"><div><div class=\"pci\">'+(gv('ico')||'Studio')+'<\/div><div class=\"pm\">'+(gv('ides')||'')+(gv('icity')?' | '+gv('icity'):'')+'<\/div><div class=\"pm\">'+(gv('iph')||'')+(gv('iem')?' | '+gv('iem'):'')+'<\/div>'+(gv('igst')?'<div class=\"pm\">GST: '+gv('igst')+'<\/div>':'')+'<\/div><div style=\"text-align:right;font-size:11px;color:#777\"><div><b>Ref:<\/b> '+(gv('iqn')||'--')+'<\/div><div><b>Date:<\/b> '+(gv('idte')||'--')+'<\/div><div><b>Valid:<\/b> '+(gv('ivld')||'--')+'<\/div><\/div><\/div><\/div><div class=\"pki\"><b>Client:<\/b> '+(gv('icl')||'--')+' | '+(gv('iclp')||'')+'<br><b>Project:<\/b> '+(gv('ipt')||'--')+' | '+(gv('ist')||'')+(gv('iar')?' | '+gv('iar')+' sqft':'')+(gv('isit')?'<br><b>Site:<\/b> '+gv('isit'):'')+'<\/div><table class=\"pt\"><thead><tr style=\"background:#ede9fe\"><th>Description<\/th><th class=\"r\" style=\"text-align:center\">Unit<\/th><th class=\"r\" style=\"text-align:center\">Qty<\/th><th class=\"r\">Rate<\/th><th class=\"r\">Amount<\/th><\/tr><\/thead><tbody>'+rr2+'<\/tbody><\/table><div class=\"ptt\">'+(df>0?'<div>Design Fee: <b>'+fm(df)+'<\/b><\/div>':'')+'<div>Subtotal: <b>'+fm(sub+df)+'<\/b><\/div><div>GST 18%: <b>'+fm(tx)+'<\/b><\/div>'+(dc>0?'<div>Discount ('+dc+'%): <b>-'+fm((sub+df+tx)*dc\/100)+'<\/b><\/div>':'')+'<div class=\"gd i\">Grand Total: '+fm(gt)+'<\/div><\/div>'+(pk!==undefined?'<div style=\"margin-top:10px;background:#f5f3ff;border-radius:6px;padding:8px 10px;font-size:12px\"><b>Payment:<\/b> '+IPO[pk]+'<\/div>':'')+(st.length||gv('int2')?'<div class=\"pte\"><b>Terms:<\/b><br>'+st.map(t=>'- '+t).join('<br>')+(gv('int2')?'<br>- '+gv('int2'):'')+'<\/div>':'');\n    el('ov-int').classList.remove('hidden');\n  }else{\n    var sub=CP.reduce((x,ph)=>x+ph.items.reduce((ps,it)=>ps+(it.q*(it.m+it.l)),0),0);\n    var tx=sub*0.18;var dc=+gv('cdc')||0;var gt=(sub+tx)*(1-dc\/100);\n    var st=Object.keys(CTS).filter(k=>CTS[k]).map(k=>CTD[k]);\n    var pr=CP.map(ph=>{var ps=ph.items.reduce((x,it)=>x+(it.q*(it.m+it.l)),0);return'<tr class=\"ppr c\"><td colspan=\"5\" style=\"padding:7px 9px\">'+ph.name+'<\/td><td class=\"r\" style=\"padding:7px 9px\">'+fm(ps)+'<\/td><\/tr>'+ph.items.filter(it=>it.m+it.l>0).map(it=>'<tr><td style=\"padding:5px 9px 5px 16px\">'+it.d+'<\/td><td class=\"c\">'+it.u+'<\/td><td class=\"c\">'+it.q+'<\/td><td class=\"r\">'+fm(it.m)+'<\/td><td class=\"r\">'+fm(it.l)+'<\/td><td class=\"r\">'+fm(it.q*(it.m+it.l))+'<\/td><\/tr>').join('');}).join('');\n    el('pc').innerHTML='<div class=\"phc\"><div style=\"display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px\"><div><div class=\"pcc\">'+(gv('cco')||'Company')+'<\/div><div class=\"pm\">'+(gv('ccp')||'')+(gv('ccit')?' | '+gv('ccit'):'')+'<\/div><div class=\"pm\">'+(gv('cph')||'')+(gv('cem')?' | '+gv('cem'):'')+'<\/div>'+(gv('clic')?'<div class=\"pm\">Lic: '+gv('clic')+'<\/div>':'')+(gv('cgst')?'<div class=\"pm\">GST: '+gv('cgst')+'<\/div>':'')+'<\/div><div style=\"text-align:right;font-size:11px;color:#777\"><div><b>Ref:<\/b> '+(gv('cqn')||'--')+'<\/div><div><b>Date:<\/b> '+(gv('cdte')||'--')+'<\/div><div><b>Duration:<\/b> '+(gv('cdur')||'--')+'<\/div><\/div><\/div><\/div><div class=\"pkc\"><b>Client:<\/b> '+(gv('ccl')||'--')+' | '+(gv('cclp')||'')+'<br><b>Site:<\/b> '+(gv('csit')||'--')+'<br><b>Project:<\/b> '+(gv('cpt')||'--')+'<\/div><table class=\"pt\" style=\"table-layout:fixed\"><thead><tr style=\"background:#dbeafe\"><th style=\"width:32%\">Description<\/th><th style=\"width:8%;text-align:center\">Unit<\/th><th style=\"width:8%;text-align:center\">Qty<\/th><th class=\"r\" style=\"width:13%\">Material<\/th><th class=\"r\" style=\"width:13%\">Labour<\/th><th class=\"r\" style=\"width:13%\">Total<\/th><\/tr><\/thead><tbody>'+pr+'<\/tbody><\/table><div class=\"ptt\"><div>Subtotal: <b>'+fm(sub)+'<\/b><\/div><div>GST 18%: <b>'+fm(tx)+'<\/b><\/div>'+(dc>0?'<div>Discount ('+dc+'%): <b>-'+fm((sub+tx)*dc\/100)+'<\/b><\/div>':'')+'<div class=\"gd c\">Grand Total: '+fm(gt)+'<\/div><\/div>'+(st.length||gv('cnt2')?'<div class=\"pte\"><b>Terms:<\/b><br>'+st.map(t=>'- '+t).join('<br>')+(gv('cnt2')?'<br>- '+gv('cnt2'):'')+'<\/div>':'');\n    el('ov-con').classList.remove('hidden');\n  }\n}\nfunction closeOv(t){el('ov-'+t).classList.add('hidden');}\nfunction doPrint(t){\n  var ct=el(t==='int'?'pi':'pc').innerHTML;\n  var w=window.open('','_blank','width=800,height=900');\n  if(!w){toast('Pop-up blocked! Browser settings mein allow karo.');return;}\n  w.document.write('<!DOCTYPE html><html><head><meta charset=\"UTF-8\"><title>Quotation<\/title><style>body{font-family:system-ui,sans-serif;padding:24px;color:#222;max-width:720px;margin:0 auto}table{width:100%;border-collapse:collapse;font-size:12px;margin:10px 0}th{padding:6px 8px;text-align:left;font-size:11px}.r{text-align:right}.c{text-align:center}td{padding:5px 8px;border-bottom:.5px solid #eee}.ppr.i td{background:#f5f3ff;color:#5b21b6;font-weight:600}.ppr.c td{background:#eff6ff;color:#1e40af;font-weight:600}.phi{border-bottom:3px solid #7c3aed;padding-bottom:12px;margin-bottom:14px}.phc{border-bottom:3px solid #1c3a5e;padding-bottom:12px;margin-bottom:14px}.pci{font-size:17px;font-weight:700;color:#7c3aed}.pcc{font-size:17px;font-weight:700;color:#1c3a5e}.pm{font-size:11px;color:#777;margin-top:2px}.pki{background:#f5f3ff;border-radius:6px;padding:9px 12px;margin-bottom:12px;font-size:12px;line-height:1.7}.pkc{background:#eff6ff;border-radius:6px;padding:9px 12px;margin-bottom:12px;font-size:12px;line-height:1.7}.ptt{text-align:right;font-size:12px;color:#555;margin-top:8px}.ptt div{padding:2px 0}.ptt .gd{font-size:15px;font-weight:700;border-top:2px solid;padding-top:6px;margin-top:6px}.ptt .gd.i{color:#7c3aed;border-color:#7c3aed}.ptt .gd.c{color:#1c3a5e;border-color:#1c3a5e}.pte{margin-top:12px;font-size:11px;color:#555;border-top:.5px solid #eee;padding-top:10px;line-height:1.8}@media print{@page{margin:12mm}button{display:none}}<\/style><\/head><body>'+ct+'<br><button onclick=\"window.print()\" style=\"padding:9px 20px;background:#333;color:#fff;border:none;border-radius:6px;font-size:13px;cursor:pointer;margin-top:10px\">Print \/ Save as PDF<\/button><\/body><\/html>');\n  w.document.close();setTimeout(()=>w.focus(),400);\n}\n\nfunction toast(msg){var t=el('toast');t.textContent=msg;t.classList.add('show');setTimeout(()=>t.classList.remove('show'),2500);}\n\nfunction init(){\n  var td=new Date().toISOString().split('T')[0];\n  var vd=new Date(Date.now()+30*864e5).toISOString().split('T')[0];\n  var yr=new Date().getFullYear();\n  var id=ldft('int');var cd=ldft('con');\n  if(id){ffd(id);el('ian').textContent='Last draft loaded';}\n  else{el('idte').value=td;el('ivld').value=vd;el('iqn').value='INT-'+yr+'-001';DR.forEach(r=>addRoom(JSON.parse(JSON.stringify(r))));rip();rit();}\n  if(cd){ffd(cd);el('can').textContent='Last draft loaded';}\n  else{el('cdte').value=td;el('cqn').value='CON-'+yr+'-001';DP.forEach(p=>addPhase(JSON.parse(JSON.stringify(p))));rct();}\n}\ninit();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Quotation builder for interior design and construction with auto-save and client management Interior Design Construction Saved Clients Aapka Studio Interior [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_canvas","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2487","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/rupankanarchointeriors.com\/blog\/wp-json\/wp\/v2\/posts\/2487","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rupankanarchointeriors.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rupankanarchointeriors.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rupankanarchointeriors.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rupankanarchointeriors.com\/blog\/wp-json\/wp\/v2\/comments?post=2487"}],"version-history":[{"count":3,"href":"https:\/\/rupankanarchointeriors.com\/blog\/wp-json\/wp\/v2\/posts\/2487\/revisions"}],"predecessor-version":[{"id":2490,"href":"https:\/\/rupankanarchointeriors.com\/blog\/wp-json\/wp\/v2\/posts\/2487\/revisions\/2490"}],"wp:attachment":[{"href":"https:\/\/rupankanarchointeriors.com\/blog\/wp-json\/wp\/v2\/media?parent=2487"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rupankanarchointeriors.com\/blog\/wp-json\/wp\/v2\/categories?post=2487"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rupankanarchointeriors.com\/blog\/wp-json\/wp\/v2\/tags?post=2487"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}