<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9022839565483764368</id><updated>2026-05-20T10:58:22.041-07:00</updated><category term="Image Converter"/><category term="File Archive"/><category term="Nutrition"/><category term="Security"/><category term="Crypto Converter"/><category term="Health"/><category term="Home Loan Calculator"/><category term="IRCTC"/><category term="Indian Railway"/><category term="SIP Calculator"/><category term="AI Writer"/><category term="Age Calculator"/><category term="Area Measurement"/><category term="Azure Cloud"/><category term="BMI Calculator"/><category term="Background Remover"/><category term="Bajaj Personal Loan Calculator"/><category term="Base64 Decoder"/><category term="Base64 Encoder"/><category term="Binary Converter"/><category term="Bitcoin Calculator"/><category term="CAGR"/><category term="Calculator"/><category term="Car Loan Calculator"/><category term="Comma Adder"/><category term="Compound Annual Growth Rate Calculator"/><category term="Compress PDF"/><category term="Credit Card PayOff Calculator"/><category term="Crypto"/><category term="Crypto Tax Calculator"/><category term="Crystal Healing"/><category term="Currency Converter"/><category term="Date Calculator"/><category term="Decrypt"/><category term="EMI Calculator"/><category term="Education Loan Calculator"/><category term="Encrypt"/><category term="Ethereum Calculator"/><category term="Fasting"/><category term="File Hash"/><category term="Flight TimeZone Sync"/><category term="Forex Converter"/><category term="Formating"/><category term="Fruits"/><category term="GST Calculator"/><category term="Gratuity"/><category term="HTTP Status Code"/><category term="Hardening"/><category term="IFSC Code Finder"/><category term="IP Address Finder"/><category term="Image Resizer"/><category term="India Tax Calculator"/><category term="JPG to PDF"/><category term="Length Converter"/><category term="Linux Permission"/><category term="Meat"/><category term="Merge PDF"/><category term="Mortgage Calculator"/><category term="PDF to JPG"/><category term="PDF to PNG"/><category term="PDF to PPT Converter"/><category term="PDF to Word Converter"/><category term="PNG to PDF"/><category term="PPF Calculator"/><category term="Password Checker"/><category term="Password Generator"/><category term="Percentage Calculator"/><category term="Personal Budget Calculator"/><category term="Personal Loan Calculator"/><category term="Pin Code Finder"/><category term="Powershell"/><category term="SSL/TLS"/><category term="SSY"/><category term="School Admission Calculator"/><category term="Speed Calculator"/><category term="Split PDF"/><category term="Sukanya Samriddhi Yojana"/><category term="Temperature Converter"/><category term="Text Editor"/><category term="Time Converter"/><category term="Tip Calculator"/><category term="Unit Converter"/><category term="Vegetables"/><category term="Vitamins"/><category term="Volume Converter"/><category term="Weather"/><category term="Weight Converter"/><category term="Word Case Converter"/><category term="Word Counter"/><category term="World Clock"/><title type='text'>OTechy - Best Free Online Tools - Smart Tools</title><subtitle type='html'>OTechy offers professional-grade online tools for free. Calculate, convert, and optimize with our smart web utilities. Fast, mobile-friendly, and no registration required.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://www.otechy.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default'/><link rel='alternate' type='text/html' href='https://www.otechy.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default?start-index=26&amp;max-results=25'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>78</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-4085567259028697144</id><published>2026-05-20T10:33:15.688-07:00</published><updated>2026-05-20T10:33:15.688-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Azure Cloud"/><title type='text'>Azure Services Quick Reference Charts</title><content type='html'>&lt;title&gt;Azure Services Quick Reference Charts | Cloud Architecture &amp; Interview Guide - OTechy&lt;/title&gt;
&lt;meta name=&quot;description&quot; content=&quot;Master your Azure Cloud interview with OTechy&#39;s interactive cheat sheet. Deep-dive into Cosmos DB, Azure SQL, App Services, architecture patterns, tradeoffs, and HA/DR.&quot;&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;azure interview cheat sheet, azure architecture patterns, cosmos db interview questions, azure sql vs managed instance, azure cloud interview guide, azure system design&quot;&gt;
&lt;meta property=&quot;og:title&quot; content=&quot;Azure Services Quick Reference - OTechy&quot;&gt;
&lt;meta property=&quot;og:description&quot; content=&quot;The ultimate interactive prep engine for Azure Cloud Architects and Developers.&quot;&gt;
&lt;meta property=&quot;og:type&quot; content=&quot;website&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700;850&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

&lt;style&gt;
    :root { --primary: #3b82f6; --text-dark: #1e293b; --accent: #64748b; --bg: #f8fafc; --white: #fff; --border: #e2e8f0; --soft-blue: #f0f7ff; --success: #10b981; --danger: #ef4444; --warning: #f59e0b; --hover: #eff6ff; }
    * { box-sizing: border-box; -webkit-font-smoothing: antialiased; }
    .otechy-tool-wrapper { font-family: &#39;Poppins&#39;, sans-serif; max-width: 1300px; margin: 0 auto; color: var(--text-dark); line-height: 1.6; padding: 80px 20px 20px; }
    
    .otechy-badge { display: table; margin: 0 auto 10px; background: var(--hover); color: var(--primary); padding: 6px 16px; border-radius: 50px; font-size: 11px; font-weight: 800; text-transform: uppercase; border: 1px solid #dbeafe; }
    .tool-header { text-align: center; margin-bottom: 30px; }
    .tool-header h1 { font-size: clamp(24px, 5vw, 42px); font-weight: 850; color: var(--primary); margin: 0; }
    .quick-value { color: var(--primary); font-weight: 600; font-size: 14px; margin-top: 5px; }

    .tool-navigation { display: flex; justify-content: center; gap: 10px; margin-bottom: 25px; flex-wrap: wrap; }
    .nav-link { text-decoration: none; font-size: 11px; font-weight: 700; color: var(--accent); background: var(--white); padding: 8px 18px; border-radius: 50px; border: 1px solid var(--border); transition: 0.3s; }
    .nav-link:hover { border-color: var(--primary); color: var(--primary); }

    .otechy-card { background: var(--white); padding: 25px; border-radius: 12px; border: 1px solid var(--border); box-shadow: 0 4px 12px rgba(0,0,0,0.05); margin-bottom: 30px; }
    
    /* Search Bar */
    .search-bar-wrapper { margin-bottom: 20px; position: relative; }
    .search-bar-wrapper input { width: 100%; padding: 15px 20px 15px 45px; border-radius: 10px; border: 2px solid var(--border); font-family: &#39;Poppins&#39;; font-size: 14px; outline: none; transition: 0.3s; }
    .search-bar-wrapper input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); }
    .search-icon { position: absolute; left: 15px; top: 50%; transform: translateY(-50%); width: 18px; height: 18px; fill: var(--accent); }

    /* Explorer Layout */
    .explorer-grid { display: grid; grid-template-columns: 320px 1fr; gap: 25px; align-items: start; }
    
    /* Left Panel: Tree View */
    .tree-panel { background: #f8fafc; border-radius: 10px; padding: 15px; border: 1px solid var(--border); height: 800px; overflow-y: auto; position: sticky; top: 20px; }
    .cat-group { margin-bottom: 10px; }
    .cat-header { display: flex; align-items: center; justify-content: space-between; padding: 12px 15px; background: var(--white); border: 1px solid var(--border); border-radius: 8px; font-weight: 700; font-size: 13px; cursor: pointer; transition: 0.2s; user-select: none; }
    .cat-header:hover { border-color: var(--primary); color: var(--primary); }
    .cat-header.active { background: var(--primary); color: var(--white); border-color: var(--primary); }
    .cat-header svg { flex-shrink: 0; width: 12px; height: 12px; }
    
    .service-list { display: none; padding: 10px 0 0 15px; border-left: 2px solid var(--border); margin-left: 20px; }
    .service-item { padding: 8px 12px; font-size: 12px; font-weight: 600; color: var(--accent); cursor: pointer; border-radius: 6px; transition: 0.2s; position: relative; margin-bottom: 4px; display: flex; align-items: center; gap: 8px; }
    .service-item::before { content: &#39;&#39;; position: absolute; left: -15px; top: 50%; width: 10px; height: 2px; background: var(--border); }
    .service-item:hover { background: var(--hover); color: var(--primary); }
    .service-item.active { background: #dbeafe; color: var(--primary); font-weight: 700; border: 1px solid #bfdbfe; }
    
    .svc-icon { width: 16px; height: 16px; max-width: 16px; max-height: 16px; min-width: 16px; fill: currentColor; flex-shrink: 0; }

    /* Right Panel: Ultimate Prep Engine */
    .detail-panel { background: var(--white); border-radius: 10px; border: 1px solid var(--border); display: flex; flex-direction: column; min-height: 800px; overflow: hidden; }
    .empty-state { text-align: center; color: var(--accent); margin: auto; padding: 50px; font-weight: 600; font-size: 14px; }
    
    .detail-header-wrap { background: var(--hover); padding: 25px 30px; border-bottom: 1px solid var(--border); }
    .d-head-top { display: flex; align-items: center; gap: 15px; margin-bottom: 15px; }
    
    .d-head-top svg { width: 48px; height: 48px; max-width: 48px; max-height: 48px; min-width: 48px; fill: #0078D4; flex-shrink: 0; }
    
    .d-head-top h2 { margin: 0; font-size: 26px; font-weight: 850; color: var(--text-dark); line-height: 1.2; }
    .d-memory-trick { display: inline-block; background: #fef3c7; color: #b45309; padding: 6px 12px; border-radius: 6px; font-size: 12px; font-weight: 800; border: 1px solid #fde68a; margin-top: 5px;}
    
    .d-what { font-size: 14px; color: var(--text-dark); font-weight: 500; margin: 15px 0 0 0; }

    /* Custom Tabs */
    .prep-tabs { display: flex; background: var(--white); border-bottom: 1px solid var(--border); padding: 0 20px; overflow-x: auto; }
    .prep-tab { padding: 15px 20px; font-size: 13px; font-weight: 700; color: var(--accent); cursor: pointer; border-bottom: 3px solid transparent; white-space: nowrap; transition: 0.2s; }
    .prep-tab:hover { color: var(--primary); }
    .prep-tab.active { color: var(--primary); border-bottom-color: var(--primary); }

    .tab-content { padding: 30px; display: none; }
    .tab-content.active { display: block; animation: fadeIn 0.3s ease; }
    @keyframes fadeIn { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }

    /* Standardized Blocks */
    .block-title { font-size: 16px; font-weight: 800; color: var(--text-dark); margin: 0 0 15px 0; display: flex; align-items: center; gap: 8px; border-bottom: 2px solid var(--border); padding-bottom: 5px; }
    
    .grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 25px; }
    
    .card-box { background: #f8fafc; padding: 15px; border-radius: 8px; border: 1px solid var(--border); }
    .card-box.good { border-top: 3px solid var(--success); }
    .card-box.bad { border-top: 3px solid var(--danger); }
    .card-box.sec { border-top: 3px solid #8b5cf6; } /* Security Color */
    .card-box h4 { margin: 0 0 10px 0; font-size: 13px; font-weight: 800; text-transform: uppercase; color: var(--text-dark); }
    .card-box ul { margin: 0; padding-left: 20px; font-size: 13px; color: var(--text-dark); }
    .card-box li { margin-bottom: 6px; }

    .text-box { margin-bottom: 25px; }
    .text-box p { font-size: 14px; color: var(--text-dark); margin: 0 0 10px 0; line-height: 1.6; }
    .text-box ul { padding-left: 20px; font-size: 14px; margin-bottom: 10px; }
    
    .api-pill { display: inline-block; background: #e0f2fe; color: #1e3a8a; padding: 4px 10px; border-radius: 50px; font-size: 11px; font-weight: 700; margin: 0 5px 5px 0; border: 1px solid #bfdbfe; }

    /* Q&amp;A Style */
    .qa-box { border-left: 3px solid var(--primary); padding-left: 15px; margin-bottom: 20px; background: #f8fafc; border-radius: 0 8px 8px 0; padding: 15px; }
    .qa-q { font-weight: 800; font-size: 14px; color: var(--text-dark); margin-bottom: 8px; }
    .qa-a { font-size: 13px; color: var(--accent); line-height: 1.6; }

    /* Table Style */
    .table-responsive-wrapper { width: 100%; overflow-x: auto; margin-bottom: 25px; border-radius: 8px; border: 1px solid var(--border); }
    .compare-table { width: 100%; border-collapse: collapse; font-size: 13px; min-width: 600px; }
    .compare-table th { background: #f1f5f9; padding: 12px; text-align: left; font-weight: 700; color: var(--text-dark); border-bottom: 2px solid var(--border); white-space: nowrap; }
    .compare-table td { padding: 12px; border-bottom: 1px solid var(--border); color: var(--text-dark); }

    .geo-citation { background: var(--white); padding: 25px; border-radius: 12px; border-left: 5px solid var(--primary); font-size: 14px; margin: 40px 0; color: var(--text-dark); box-shadow: 0 4px 15px rgba(0,0,0,0.03); line-height: 1.8; }
    .geo-citation strong { color: var(--primary); font-weight: 700; }

    .faq-section { margin-top: 60px; }
    .section-h2 { font-size: 20px; font-weight: 850; color: var(--text-dark); margin-bottom: 20px; }
    .faq-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; }
    .faq-card { background: var(--white); padding: 20px; border-radius: 12px; border: 1px solid var(--border); }
    .faq-card h3 { font-size: 14px; color: var(--primary); margin: 0 0 8px; font-weight: 700; }
    .faq-card p { font-size: 12px; color: var(--accent); margin: 0; line-height: 1.5; }

    .otechy-ad-top, .otechy-ad-middle, .otechy-ad-bottom { text-align: center; background: #f1f5f9; color: #cbd5e1; font-size: 10px; font-weight: 700; text-transform: uppercase; display: flex; align-items: center; justify-content: center; }

  /* Uniform Styling for Info Blocks */
    .card-box { background: #f8fafc; padding: 15px; border-radius: 8px; border: 1px solid var(--border); border-top: 4px solid var(--primary); }
    .card-box.good { border-top-color: var(--success); }
    .card-box.bad { border-top-color: var(--danger); }
    .card-box.arch { border-top-color: var(--primary); }
    .card-box.perf { border-top-color: var(--warning); }
    .card-box.ha { border-top-color: #8b5cf6; }
    .card-box.sec { border-top-color: #ec4899; }
  
    @media (max-width: 900px) { 
        .explorer-grid { grid-template-columns: 1fr; }
        .tree-panel { height: auto; max-height: 400px; position: static; }
        .grid-2 { grid-template-columns: 1fr; }
        .faq-grid { grid-template-columns: 1fr; }
        .prep-tabs { overflow-x: scroll; }
        .tab-content { padding: 20px 15px; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;
    &lt;div class=&quot;otechy-badge&quot;&gt;Azure Services &lt;span class=&quot;dynamic-year&quot;&gt;&lt;/span&gt;&lt;/div&gt;

    &lt;div class=&quot;tool-header&quot;&gt;
        &lt;h1&gt;Azure Services Quick Reference Online &lt;svg width=&quot;28&quot; height=&quot;28&quot; viewBox=&quot;0 0 24 24&quot; style=&quot;vertical-align: middle; margin-left: 8px;&quot;&gt;&lt;defs&gt;&lt;clipPath id=&quot;circleView&quot;&gt;&lt;circle cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;12&quot; /&gt;&lt;/clipPath&gt;&lt;/defs&gt;&lt;g clip-path=&quot;url(#circleView)&quot;&gt;&lt;rect width=&quot;24&quot; height=&quot;8&quot; y=&quot;0&quot; fill=&quot;#FF9933&quot;/&gt;&lt;rect width=&quot;24&quot; height=&quot;8&quot; y=&quot;8&quot; fill=&quot;#FFFFFF&quot;/&gt;&lt;rect width=&quot;24&quot; height=&quot;8&quot; y=&quot;16&quot; fill=&quot;#138808&quot;/&gt;&lt;circle cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;3&quot; fill=&quot;none&quot; stroke=&quot;#000080&quot; stroke-width=&quot;0.5&quot;/&gt;&lt;circle cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;0.8&quot; fill=&quot;#000080&quot;/&gt;&lt;g stroke=&quot;#000080&quot; stroke-width=&quot;0.2&quot;&gt;&lt;line x1=&quot;12&quot; y1=&quot;9&quot; x2=&quot;12&quot; y2=&quot;15&quot;/&gt;&lt;line x1=&quot;9&quot; y1=&quot;12&quot; x2=&quot;15&quot; y2=&quot;12&quot;/&gt;&lt;line x1=&quot;9.8&quot; y1=&quot;9.8&quot; x2=&quot;14.2&quot; y2=&quot;14.2&quot;/&gt;&lt;line x1=&quot;9.8&quot; y1=&quot;14.2&quot; x2=&quot;14.2&quot; y2=&quot;9.8&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/h1&gt;
        &lt;p class=&quot;quick-value&quot;&gt;Deep-dive cheat sheets for Cloud Architects and Developers.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 20px; height: 90px;&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;otechy-card&quot; style=&quot;padding:0; border:none; background:transparent; box-shadow:none;&quot;&gt;
        &lt;div class=&quot;search-bar-wrapper&quot;&gt;
            &lt;svg class=&quot;search-icon&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z&quot;/&gt;&lt;/svg&gt;
            &lt;input type=&quot;text&quot; id=&quot;serviceSearch&quot; placeholder=&quot;Search services (e.g. Cosmos DB, SQL Managed Instance)...&quot; oninput=&quot;filterServices()&quot;&gt;
        &lt;/div&gt;

        &lt;div class=&quot;explorer-grid&quot;&gt;
            &lt;div class=&quot;tree-panel&quot; id=&quot;treePanel&quot;&gt;&lt;/div&gt;

            &lt;div class=&quot;detail-panel&quot; id=&quot;detailPanel&quot;&gt;
                &lt;div class=&quot;empty-state&quot;&gt;
                    &lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;48&quot; height=&quot;48&quot; fill=&quot;#cbd5e1&quot; style=&quot;margin-bottom:15px;&quot;&gt;&lt;path d=&quot;M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z&quot;/&gt;&lt;/svg&gt;&lt;br&gt;
                    Select an Azure Service from the left&lt;br&gt;to load the Interview Master Guide.
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 30px 0; height: 250px;&quot;&gt;&lt;/div&gt;

	&lt;div class=&quot;geo-citation&quot;&gt;
    &lt;strong&gt;Otechy.com&lt;/strong&gt; is built for developers, cloud engineers, and software professionals preparing for modern tech interviews at startups and top MNCs. Instead of overwhelming users with generic documentation, Otechy provides structured, interview-focused breakdowns of cloud services, system design concepts, architecture tradeoffs, scalability patterns, and real-world engineering decisions. From Azure and AWS services to backend architecture and distributed systems, the platform helps candidates prepare for technical discussions, design rounds, and senior engineering interviews with concise, high-density learning content designed for real interview scenarios.
&lt;/div&gt;

    &lt;div class=&quot;faq-section&quot;&gt;
        &lt;h2 class=&quot;section-h2&quot;&gt;Frequently Searched Topics:&lt;/h2&gt;
        &lt;div class=&quot;faq-grid&quot;&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;How do I answer &quot;Which Database to Choose?&quot;&lt;/h3&gt;&lt;p&gt;Start with the data structure. If it requires strict ACID transactions and relational integrity, state Azure SQL. If it requires global scale, flexible schema, and massive read/write throughput, defend Cosmos DB.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Azure SQL Database vs. SQL Managed Instance?&lt;/h3&gt;&lt;p&gt;Azure SQL DB is pure PaaS, best for modern cloud apps. SQL Managed Instance offers near 100% compatibility with on-premises SQL Server (including CLR, cross-database queries, and SQL Agent), making it ideal for &quot;lift and shift&quot; migrations without refactoring code.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;What is a &quot;Hot Partition&quot; in Cosmos DB?&lt;/h3&gt;&lt;p&gt;A classic interview trap. It occurs when you choose a bad partition key (like &#39;Date&#39;), causing all writes to hit a single physical server, throttling performance. Always choose a high-cardinality key like &#39;UserID&#39;.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;IaaS vs PaaS vs SaaS in simple terms?&lt;/h3&gt;&lt;p&gt;IaaS (VMs): You manage the OS and runtime. PaaS (App Service): Azure manages the OS; you just deploy code. SaaS (Office 365): Azure manages everything; you just consume the software.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;When should I AVOID Serverless (Azure Functions)?&lt;/h3&gt;&lt;p&gt;Interviewers want to hear: &quot;When tasks run continuously 24/7 or when execution takes longer than the 10-minute timeout limit.&quot; Dedicated App Services or AKS are better for long-running processes.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;What is Cosmos DB&#39;s Consistency Model?&lt;/h3&gt;&lt;p&gt;It&#39;s not just Strong vs Eventual. Mention the 5 levels: Strong, Bounded Staleness, Session (Default/Most Popular), Consistent Prefix, and Eventual. Explain that Session provides read-your-own-writes guarantees.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;How do you achieve Zero Downtime Deployment?&lt;/h3&gt;&lt;p&gt;Mention &quot;Deployment Slots&quot; in Azure App Service. Deploy to a staging slot, warm it up, and then swap the IP routing instantly to production without dropping connections.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;What is the difference between Azure Blob Storage and Data Lake?&lt;/h3&gt;&lt;p&gt;Blob Storage provides a flat namespace for general object storage. Data Lake Gen2 adds a Hierarchical Namespace (actual folders/directories), which is critical for big data analytics performance (Hadoop/Spark).&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;How does Azure Front Door differ from Application Gateway?&lt;/h3&gt;&lt;p&gt;Front Door is a Global load balancer and CDN working at Layer 7. Application Gateway is a Regional load balancer working at Layer 7. Use Front Door for multi-region apps; use App Gateway for single-region web traffic.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Can I use this for AWS preparation?&lt;/h3&gt;&lt;p&gt;While the services are Azure-specific, the core problems (partitioning, cold starts, scale-out vs scale-up) translate directly to AWS (e.g., Cosmos DB = DynamoDB, Functions = Lambda).&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Is this guide updated for 2026?&lt;/h3&gt;&lt;p&gt;Yes. The concepts focus on evergreen architectural patterns and current pricing/scaling models applicable to modern cloud system design interviews.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Are retired services listed?&lt;/h3&gt;&lt;p&gt;We highlight major deprecations in the &quot;Updates/Retirals&quot; section of a service card, helping you avoid designing legacy architectures.&lt;/p&gt;&lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 30px; height: 90px;&quot;&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
    // Ultimate Detail Engine Data with EXPANDED INTERVIEW QA &amp; MISSING FIELDS
    const azureData = [
        {
            category: &quot;Databases&quot;,
            services: [
                {
                    name: &quot;Azure Cosmos DB&quot;,
                    icon: &#39;&lt;path d=&quot;M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Global, multi-model NoSQL for single-digit ms latency.&quot;,
                    whatIsIt: &quot;A globally distributed, multi-model NoSQL database service built for high-throughput, low-latency, and flexible schema applications.&quot;,
                    problemSolved: &quot;Eliminates the complexity of scaling databases globally. Solves the bottleneck of single-server RDBMS when dealing with massive, unstructured, or rapidly changing data at planet-scale.&quot;,
                    goodUse: [&quot;IoT telemetry ingestion&quot;, &quot;User profiles &amp; session management&quot;, &quot;Gaming leaderboards&quot;, &quot;Real-time product catalogs&quot;, &quot;Event-driven microservices&quot;],
                    badUse: [&quot;Complex relational JOINS&quot;, &quot;Strong transactional banking (though possible, expensive)&quot;, &quot;Heavy ad-hoc analytical queries (use Synapse instead)&quot;, &quot;Small, static datasets&quot;],
                    apiModels: [&quot;SQL API (Core)&quot;, &quot;MongoDB API&quot;, &quot;Cassandra API&quot;, &quot;Gremlin API&quot;, &quot;Table API&quot;],
                    archScaling: &quot;Uses Horizontal Partitioning based on a &#39;Partition Key&#39;. Data is divided into Logical Partitions, which are mapped to Physical Partitions. Scaling is done by provisioning RU/s (Request Units).&quot;,
                    performance: &quot;Provides single-digit millisecond latency for reads and writes worldwide. Automatic indexing of all data. Can autoscale RU/s based on workload.&quot;,
                    consistency: &quot;5 Levels: Strong → Bounded Staleness → Session (Default) → Consistent Prefix → Eventual.&quot;,
                    haDr: &quot;Turnkey global distribution. Active-Active multi-region writes. 99.999% SLA for read/write availability when multi-region is enabled.&quot;,
                    pricing: &quot;Billed on Request Units (RU/s) and Storage consumed. Multi-region replication multiplies the RU cost.&quot;,
                    security: &quot;RBAC via Entra ID, Network Isolation via Private Endpoints / VNETs, Encryption at Rest (Customer Managed Keys), Always-on encryption in transit.&quot;,
                    integrations: [&quot;Azure Functions (Change Feed)&quot;, &quot;Azure Synapse Link&quot;, &quot;Event Hubs&quot;, &quot;AKS&quot;],
                    pros: [&quot;Infinite horizontal scale&quot;, &quot;Turnkey global replication&quot;, &quot;Guaranteed single-digit ms latency&quot;],
                    cons: [&quot;Expensive at enterprise scale&quot;, &quot;Complex partition key modeling&quot;, &quot;RU estimation can be tricky&quot;, &quot;No relational joins&quot;],
                    compare: [
                        { name: &quot;Azure SQL&quot;, type: &quot;Relational&quot;, best: &quot;Transactions / Joins&quot;, weak: &quot;Global scale complexity&quot; },
                        { name: &quot;MongoDB Atlas&quot;, type: &quot;Document&quot;, best: &quot;MERN Stack Devs&quot;, weak: &quot;Native Azure Integration&quot; },
                        { name: &quot;DynamoDB (AWS)&quot;, type: &quot;Key-Value/Doc&quot;, best: &quot;AWS Ecosystem&quot;, weak: &quot;Cross-cloud lock-in&quot; }
                    ],
                    interview: [
                        { q: &quot;What is Cosmos DB and what makes it unique?&quot;, a: &quot;It&#39;s Microsoft&#39;s globally distributed, multi-model NoSQL database. It uniquely offers 5 well-defined consistency models and guarantees single-digit millisecond latencies via SLA.&quot; },
                        { q: &quot;Explain the concept of Request Units (RU/s).&quot;, a: &quot;RU/s is the currency of Cosmos DB. It abstracts CPU, Memory, and IOPS into a single measure. 1 RU represents the cost to read a 1KB document.&quot; },
                        { q: &quot;What causes a &#39;Hot Partition&#39;?&quot;, a: &quot;Choosing a low-cardinality partition key (e.g., &#39;Date&#39; or &#39;Tenant&#39; where one tenant is huge). All traffic hits one physical server, maxing out its RU limit while others sit idle.&quot; },
                        { q: &quot;How do you choose a good Partition Key?&quot;, a: &quot;It should have a wide range of values (high cardinality), spread access evenly across logical partitions, and ideally appear frequently in your query filters to avoid cross-partition queries.&quot; },
                        { q: &quot;What is a Cross-Partition Query?&quot;, a: &quot;A query that does not include the partition key in its filter. Cosmos DB must fan-out the query to all physical partitions, resulting in high RU cost and latency.&quot; },
                        { q: &quot;Why use &#39;Session&#39; consistency?&quot;, a: &quot;It is the default. It provides &#39;read-your-own-writes&#39; guarantees within a user&#39;s session while remaining fast and cheap compared to Strong consistency.&quot; },
                        { q: &quot;What is the Cosmos DB Change Feed?&quot;, a: &quot;A persistent, ordered record of changes to a container. Often used to trigger an Azure Function to update a search index, clear a cache, or send a notification immediately after a write.&quot; },
                        { q: &quot;What is a Synthetic Partition Key?&quot;, a: &quot;When no single property is highly distributed, you concatenate two properties (e.g., `tenantId_date`) or add a random suffix to create a key that evenly distributes data.&quot; },
                        { q: &quot;How do you handle backups?&quot;, a: &quot;It offers automated periodic backups (default) or continuous backup, allowing point-in-time restore within the last 30 days.&quot; },
                        { q: &quot;What is Synapse Link for Cosmos DB?&quot;, a: &quot;A cloud-native hybrid transactional and analytical processing (HTAP) capability. It allows near real-time analytics over operational data in Cosmos DB without consuming its RU/s.&quot; },
                        { q: &quot;Difference between Logical and Physical Partitions?&quot;, a: &quot;A logical partition consists of all items with the same partition key. Cosmos DB automatically maps one or more logical partitions to a physical partition (the actual underlying server).&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Event-Driven:&lt;/b&gt; Event Hub → Azure Function → Cosmos DB.&quot;,
                        &quot;&lt;b&gt;CQRS Pattern:&lt;/b&gt; Write to Cosmos DB → Change Feed triggers Function → Updates materialized view in Azure Cache for Redis.&quot;,
                        &quot;&lt;b&gt;Real-Time Analytics:&lt;/b&gt; Cosmos DB operational data automatically synced to Azure Synapse via Synapse Link without impacting RU/s.&quot;
                    ]
                },
                {
                    name: &quot;Azure Managed Instance for Apache Cassandra&quot;,
                    icon: &#39;&lt;path d=&quot;M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-1 17.93V14h2v5.93c-3.924-.263-7.23-2.923-8.625-6.55L7.5 12l-1.39-2.62c1.395-3.627 4.701-6.287 8.625-6.55V7h-2v-5.93c3.924.263 7.23 2.923 8.625 6.55L16.5 12l1.39 2.62c-1.395 3.627-4.701 6.287-8.625 6.55z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Fully managed, native Apache Cassandra service on Azure.&quot;,
                    whatIsIt: &quot;A fully managed service for Apache Cassandra that allows you to deploy and scale native Cassandra clusters in Azure with automated patching, scaling, and backups.&quot;,
                    problemSolved: &quot;Simplifies the operational overhead of managing, scaling, and maintaining native Apache Cassandra clusters while providing full native Cassandra compatibility.&quot;,
                    goodUse: [&quot;Time-series data&quot;, &quot;High-volume write workloads&quot;, &quot;Cassandra migration from on-prem&quot;, &quot;Multi-region hybrid cloud deployments&quot;, &quot;Applications requiring native CQL compatibility&quot;],
                    badUse: [&quot;Small, simple application databases&quot;, &quot;Workloads requiring ACID-compliant relational transactions&quot;, &quot;Complex analytical queries needing JOINs&quot;, &quot;Applications requiring low-latency, ad-hoc, multi-table queries&quot;],
                    apiModels: [&quot;CQL (Cassandra Query Language)&quot;],
                    archScaling: &quot;Maintains standard Cassandra architecture (Ring topology, Gossip protocol). Scaling is performed by adding nodes/clusters via the Azure control plane, which automates the provisioning and joining of new nodes.&quot;,
                    performance: &quot;Provides the same performance characteristics as native Apache Cassandra, optimized for high write-throughput and predictable latency. Performance is hardware-dependent (VM SKU choice).&quot;,
                    consistency: &quot;Tunable consistency: Allows fine-grained control over read/write consistency levels (e.g., ONE, QUORUM, ALL) per query.&quot;,
                    haDr: &quot;High availability through multi-replica replication. Supports multi-region clusters, and can act as a managed extension of an existing on-premises Cassandra data center.&quot;,
                    pricing: &quot;Billed based on the underlying Azure VM instances used for the nodes, plus associated storage and networking costs.&quot;,
                    security: &quot;Integrated with Entra ID for identity, supports VNET injection for network isolation, and provides automated encryption at rest and in transit.&quot;,
                    integrations: [&quot;Azure Backup&quot;, &quot;Azure Monitor&quot;, &quot;Azure VNETs&quot;, &quot;Hybrid Connectivity (ExpressRoute/VPN)&quot;],
                    pros: [&quot;100% Native Cassandra API compatibility&quot;, &quot;Removes operational management burden&quot;, &quot;Seamless hybrid cloud/multi-region expansion&quot;, &quot;No vendor lock-in&quot;],
                    cons: [&quot;Higher management complexity than PaaS offerings like Cosmos DB&quot;, &quot;Requires manual tuning of Cassandra parameters&quot;, &quot;Cost-intensive due to VM-based pricing model&quot;],
                    compare: [
                        { name: &quot;Cosmos DB (Cassandra API)&quot;, type: &quot;PaaS NoSQL&quot;, best: &quot;Serverless scaling / Global distribution&quot;, weak: &quot;Full native feature parity&quot; },
                        { name: &quot;Apache Cassandra (on IaaS)&quot;, type: &quot;Self-Managed&quot;, best: &quot;Full control over tuning&quot;, weak: &quot;Significant operational overhead&quot; },
                        { name: &quot;Azure SQL&quot;, type: &quot;Relational&quot;, best: &quot;Complex transactions/JOINS&quot;, weak: &quot;Different query paradigm&quot; }
                    ],
                    interview: [
                        { q: &quot;How is this different from Cosmos DB Cassandra API?&quot;, a: &quot;Cosmos DB is a serverless, abstracted NoSQL service implementing the Cassandra protocol. Managed Instance is the native Apache Cassandra software running on managed VMs.&quot; },
                        { q: &quot;What is the primary advantage of this service?&quot;, a: &quot;It allows organizations to lift-and-shift existing Cassandra workloads to Azure without changing application code, while offloading infrastructure maintenance.&quot; },
                        { q: &quot;Can this act as a hybrid extension?&quot;, a: &quot;Yes, you can add an Azure Managed Instance cluster as a new data center to an existing on-premises Cassandra ring using standard replication.&quot; },
                        { q: &quot;How does scaling work?&quot;, a: &quot;You scale by adding nodes. Because it is native Cassandra, adding nodes triggers a rebalancing process that distributes data across the new nodes.&quot; },
                        { q: &quot;Is it truly serverless?&quot;, a: &quot;No. You provision VM instances, and you are responsible for monitoring and sizing those instances to handle the workload.&quot; },
                        { q: &quot;What is a keyspace in Cassandra?&quot;, a: &quot;It is the top-level container for data, similar to a database in RDBMS, which defines data replication strategy and placement across nodes.&quot; },
                        { q: &quot;How do you handle consistency?&quot;, a: &quot;By using tunable consistency (e.g., LOCAL_QUORUM), you can balance the trade-off between latency and data accuracy based on specific query requirements.&quot; },
                        { q: &quot;What is the role of the Gossip protocol?&quot;, a: &quot;It is a peer-to-peer communication mechanism used by nodes to share state information, detect node failures, and maintain cluster membership.&quot; },
                        { q: &quot;What is a Compaction process?&quot;, a: &quot;A background process that merges SSTables to remove obsolete data, optimize disk space, and improve read performance by reducing the number of files checked.&quot; },
                        { q: &quot;Explain the Partition Key.&quot;, a: &quot;The partition key is part of the Primary Key used to determine which node in the cluster stores the data. A poor key leads to data hotspots.&quot; },
                        { q: &quot;Why use multi-datacenter replication?&quot;, a: &quot;It provides high availability and disaster recovery by ensuring data is replicated across physically separate locations, allowing for zero-downtime failover.&quot; },
                        { q: &quot;What is the purpose of a Hinted Handoff?&quot;, a: &quot;If a node is down during a write, other nodes store a &#39;hint&#39;. Once the node comes back up, it receives these hints to synchronize the missing data.&quot; },
                        { q: &quot;How does this handle backups?&quot;, a: &quot;It leverages native Cassandra snapshot capabilities combined with Azure-integrated backup services for consistent point-in-time recovery.&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Hybrid Cloud:&lt;/b&gt; Extending an existing on-premises Cassandra cluster into Azure for DR.&quot;,
                        &quot;&lt;b&gt;Migration:&lt;/b&gt; Rehosting on-premises Cassandra workloads to Azure with minimal code changes.&quot;,
                        &quot;&lt;b&gt;High-Velocity Writes:&lt;/b&gt; Utilizing Cassandra&#39;s log-structured merge-tree architecture for massive write ingestion.&quot;
                    ]
                },
                {
                    name: &quot;Azure Database for MySQL&quot;,
                    icon: &#39;&lt;path d=&quot;M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-1 17.93V14h2v5.93c-3.924-.263-7.23-2.923-8.625-6.55L7.5 12l-1.39-2.62c1.395-3.627 4.701-6.287 8.625-6.55V7h-2v-5.93c3.924.263 7.23 2.923 8.625 6.55L16.5 12l1.39 2.62c-1.395 3.627-4.701 6.287-8.625 6.55z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Fully managed, community-compatible MySQL database as a service.&quot;,
                    whatIsIt: &quot;A fully managed, relational database service based on the open-source MySQL engine, designed for high availability, security, and scalability.&quot;,
                    problemSolved: &quot;Removes the administrative burden of managing MySQL infrastructure (patching, backups, server maintenance), while providing high availability and built-in disaster recovery.&quot;,
                    goodUse: [&quot;Web applications (CMS like WordPress, Drupal)&quot;, &quot;E-commerce platforms&quot;, &quot;Internal line-of-business applications&quot;, &quot;SaaS platforms requiring RDBMS&quot;, &quot;Development and testing environments&quot;],
                    badUse: [&quot;Massive global scale NoSQL workloads (use Cosmos DB)&quot;, &quot;High-frequency, low-latency key-value caching (use Redis)&quot;, &quot;Data warehousing or massive scale OLAP (use Synapse)&quot;, &quot;Graph-heavy data models (use Gremlin)&quot;],
                    apiModels: [&quot;MySQL Wire Protocol (Standard SQL)&quot;],
                    archScaling: &quot;Available in Flexible Server (recommended) or Single Server (legacy) deployment modes. Scaling is done by adjusting compute (vCores) and storage independently or moving to different service tiers.&quot;,
                    performance: &quot;Performance is determined by vCore count and IOPS limits of the chosen SKU. Flexible Server offers burstable compute for workloads with intermittent spikes.&quot;,
                    consistency: &quot;ACID compliant. Supports standard MySQL storage engines like InnoDB.&quot;,
                    haDr: &quot;Supports Zone-redundant high availability (synchronous replication within a region) and Read Replicas (asynchronous replication across regions) for read scale-out and DR.&quot;,
                    pricing: &quot;Billed based on compute (vCores), storage (GB), and IOPS. Flexible Server allows for &#39;stop/start&#39; functionality to save costs on dev environments.&quot;,
                    security: &quot;Integration with Entra ID (Azure AD), VNET integration (Private Link), data encryption at rest (CMK), and forced SSL/TLS for all connections.&quot;,
                    integrations: [&quot;Azure App Service&quot;, &quot;AKS (Kubernetes)&quot;, &quot;Azure Functions&quot;, &quot;Data Factory&quot;, &quot;Power BI&quot;],
                    pros: [&quot;100% community MySQL compatibility&quot;, &quot;Automated backups and point-in-time restore&quot;, &quot;High Availability and read-scale options&quot;, &quot;Easy to migrate from on-prem MySQL&quot;],
                    cons: [&quot;Not designed for planet-scale write throughput&quot;, &quot;Managed service limits some low-level MySQL configurations&quot;, &quot;Scaling can require a brief restart in some configurations&quot;],
                    compare: [
                        { name: &quot;Azure SQL Database&quot;, type: &quot;Relational&quot;, best: &quot;Complex Enterprise Apps/Stored Procs&quot;, weak: &quot;More expensive&quot; },
                        { name: &quot;Cosmos DB&quot;, type: &quot;NoSQL&quot;, best: &quot;Global scale / Unstructured data&quot;, weak: &quot;No ACID JOINs&quot; },
                        { name: &quot;PostgreSQL (Azure)&quot;, type: &quot;Relational&quot;, best: &quot;Complex data/GIS/JSONB&quot;, weak: &quot;Different query dialect&quot; }
                    ],
                    interview: [
                        { q: &quot;What is the difference between Single Server and Flexible Server?&quot;, a: &quot;Flexible Server is the modern, recommended deployment mode offering better control, lower latency, zone-redundant HA, and cost-saving &#39;stop/start&#39; capabilities.&quot; },
                        { q: &quot;How do you handle horizontal read scaling?&quot;, a: &quot;By creating Read Replicas, which are asynchronous read-only copies of the primary server. You offload read queries to these replicas to reduce the load on the primary.&quot; },
                        { q: &quot;What is the benefit of VNET integration?&quot;, a: &quot;It ensures that the database is not accessible over the public internet, keeping traffic within the private Azure network for improved security.&quot; },
                        { q: &quot;Can you restore to a point in time?&quot;, a: &quot;Yes, automated backups are taken, and you can perform a Point-in-Time Restore (PITR) to any second within the defined retention period (up to 35 days).&quot; },
                        { q: &quot;What is &#39;Burstable&#39; compute?&quot;, a: &quot;It is a compute tier that allows you to pay for a lower baseline CPU performance but burst to higher CPU power when needed, ideal for dev/test.&quot; },
                        { q: &quot;How do you perform manual backups?&quot;, a: &quot;You don&#39;t need to; the service provides automated, managed backups. You can, however, use standard MySQL tools like mysqldump for logic-based exports.&quot; },
                        { q: &quot;How are security patches managed?&quot;, a: &quot;Azure automatically manages the patching of the underlying OS and the MySQL engine itself as part of the managed service.&quot; },
                        { q: &quot;What is the maximum storage limit?&quot;, a: &quot;Storage limits depend on the selected tier and vCore count, but can scale up to multiple terabytes per instance.&quot; },
                        { q: &quot;How do you migrate to Azure MySQL?&quot;, a: &quot;Using the Azure Database Migration Service (DMS) or standard community tools like MySQL Workbench to export/import data from on-prem to the cloud instance.&quot; },
                        { q: &quot;Is it possible to use Entra ID for database authentication?&quot;, a: &quot;Yes, Azure Database for MySQL supports Entra ID authentication, allowing for centralized identity management and removing the need for local passwords.&quot; },
                        { q: &quot;How do you monitor performance?&quot;, a: &quot;Through Azure Monitor, Query Store, and performance insights, which identify slow-running queries and resource bottlenecks.&quot; },
                        { q: &quot;Why would you choose MySQL over PostgreSQL on Azure?&quot;, a: &quot;Usually due to existing ecosystem familiarity, legacy application requirements, or specific MySQL-only plugins/drivers.&quot; },
                        { q: &quot;What is Query Store?&quot;, a: &quot;A built-in feature that keeps track of your query performance history over time, allowing you to quickly spot regressions and optimize long-running SQL.&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Multi-Tier Web App:&lt;/b&gt; Web/App tier in Azure App Service + Azure Database for MySQL backend.&quot;,
                        &quot;&lt;b&gt;Read Scale-out:&lt;/b&gt; Primary MySQL node for writes + Multiple Read Replicas for reporting and analytics traffic.&quot;,
                        &quot;&lt;b&gt;DR Pattern:&lt;/b&gt; Geo-redundant read replicas to allow for cross-region failover during primary site failure.&quot;
                    ]
                },
              	{
                    name: &quot;Azure Database for PostgreSQL&quot;,
                    icon: &#39;&lt;path d=&quot;M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-1 17.93V14h2v5.93c-3.924-.263-7.23-2.923-8.625-6.55L7.5 12l-1.39-2.62c1.395-3.627 4.701-6.287 8.625-6.55V7h-2v-5.93c3.924.263 7.23 2.923 8.625 6.55L16.5 12l1.39 2.62c-1.395 3.627-4.701 6.287-8.625 6.55z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Fully managed, highly extensible, open-source PostgreSQL engine on Azure.&quot;,
                    whatIsIt: &quot;A fully managed relational database service based on the open-source PostgreSQL engine, optimized for performance, scalability, and mission-critical reliability.&quot;,
                    problemSolved: &quot;Eliminates the operational overhead of managing PostgreSQL infrastructure (backups, patching, HA), while providing advanced features like JSONB support, GIS extensions, and high availability.&quot;,
                    goodUse: [&quot;Complex web applications&quot;, &quot;Geospatial applications (PostGIS)&quot;, &quot;Time-series data (TimescaleDB)&quot;, &quot;Applications requiring JSONB document storage&quot;, &quot;Analytical workloads&quot;],
                    badUse: [&quot;Small-scale static apps where cost-efficiency is paramount (though Burstable tier exists)&quot;, &quot;Massive planet-scale NoSQL write workloads&quot;, &quot;Simple key-value stores where Redis is a better fit&quot;],
                    apiModels: [&quot;Standard PostgreSQL wire protocol (SQL)&quot;],
                    archScaling: &quot;Available as Flexible Server. Scales vertically by modifying vCores/RAM and horizontally using Read Replicas. Also supports Elastic Clusters for horizontal sharding.&quot;,
                    performance: &quot;Highly tunable via parameters. Performance varies based on compute tier (Burstable, General Purpose, Memory Optimized) and storage IOPS provisioned.&quot;,
                    consistency: &quot;Strictly ACID compliant. Supports advanced concurrency control mechanisms common to PostgreSQL.&quot;,
                    haDr: &quot;Supports same-zone or zone-redundant HA with warm standby. Provides automatic backups with point-in-time recovery and geo-redundant read replicas.&quot;,
                    pricing: &quot;Billed by vCores, storage (GB), and IOPS. Features burstable compute tiers and the ability to stop/start servers to optimize costs.&quot;,
                    security: &quot;Integrated with Entra ID, supports Private Link/VNET injection, enforced SSL/TLS, and encryption at rest with customer-managed keys.&quot;,
                    integrations: [&quot;Azure App Service&quot;, &quot;AKS&quot;, &quot;Azure Functions&quot;, &quot;Power BI&quot;, &quot;Data Factory&quot;],
                    pros: [&quot;Full community PostgreSQL compatibility&quot;, &quot;Advanced extensions like PostGIS&quot;, &quot;Excellent JSONB support&quot;, &quot;Granular server configuration control&quot;],
                    cons: [&quot;Management complexity higher than basic PaaS if deep tuning is needed&quot;, &quot;Vertical scaling involves brief restarts (near-zero downtime)&quot;, &quot;No native ACID-compliant global multi-master writes&quot;],
                    compare: [
                        { name: &quot;Azure SQL&quot;, type: &quot;Relational&quot;, best: &quot;Enterprise/Legacy Microsoft stacks&quot;, weak: &quot;Proprietary dialect&quot; },
                        { name: &quot;MySQL&quot;, type: &quot;Relational&quot;, best: &quot;Simple web/CMS apps&quot;, weak: &quot;Fewer advanced data types&quot; },
                        { name: &quot;Cosmos DB&quot;, type: &quot;NoSQL&quot;, best: &quot;Global scale&quot;, weak: &quot;Lacks relational depth&quot; }
                    ],
                    interview: [
                        { q: &quot;What is the Flexible Server deployment option?&quot;, a: &quot;It is the recommended deployment mode offering granular control over maintenance windows, cost-optimization via stop/start, and zone-redundant high availability.&quot; },
                        { q: &quot;How does PostgreSQL handle unstructured data?&quot;, a: &quot;It uses the JSONB data type, which stores JSON data in a decomposed binary format, allowing for efficient indexing and querying of semi-structured data.&quot; },
                        { q: &quot;What is the advantage of PostGIS?&quot;, a: &quot;It is an extension that adds support for geographic objects, allowing you to run location-based queries and spatial analysis directly in SQL.&quot; },
                        { q: &quot;Explain the purpose of pgBouncer.&quot;, a: &quot;It is a connection pooler that maintains a pool of connections to the database, reducing the resource overhead of creating new connections for every application request.&quot; },
                        { q: &quot;What is a Read Replica used for?&quot;, a: &quot;It offloads read-only workloads from the primary server to scale horizontally, ensuring the primary remains performant for write operations.&quot; },
                        { q: &quot;How do you achieve high availability?&quot;, a: &quot;By enabling zone-redundant HA, which automatically maintains a synchronous warm standby in a different availability zone.&quot; },
                        { q: &quot;What is the difference between General Purpose and Memory Optimized?&quot;, a: &quot;General Purpose is balanced for most workloads, while Memory Optimized provides a higher RAM-to-vCore ratio for memory-intensive applications.&quot; },
                        { q: &quot;How are maintenance and patching handled?&quot;, a: &quot;The service performs automated patching of the underlying OS and database engine during a user-configurable maintenance window.&quot; },
                        { q: &quot;What is the role of an Availability Zone?&quot;, a: &quot;It is a physically separate location within an Azure region, used to provide fault tolerance and high availability.&quot; },
                        { q: &quot;How can you optimize costs?&quot;, a: &quot;By using the Burstable compute tier for non-continuous workloads and using the stop/start feature for development environments.&quot; },
                        { q: &quot;What is logical replication?&quot;, a: &quot;It allows you to replicate data at the table or database level, providing more flexibility than physical streaming replication.&quot; },
                        { q: &quot;How is security managed for connections?&quot;, a: &quot;By using VNET injection or Private Endpoints, you keep the database off the public internet, and use Entra ID for identity-based access.&quot; },
                        { q: &quot;What is Point-in-Time Restore (PITR)?&quot;, a: &quot;A feature that allows you to restore your database to any specific second within your backup retention period (up to 35 days).&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Geospatial App:&lt;/b&gt; Mobile app tracking logistics using PostGIS for location data.&quot;,
                        &quot;&lt;b&gt;Modern SaaS:&lt;/b&gt; Multi-tenant application using row-level security and JSONB for flexible user preferences.&quot;,
                        &quot;&lt;b&gt;Read-Heavy Dashboard:&lt;/b&gt; Primary instance for writes with multiple Read Replicas feeding data to Power BI dashboards.&quot;
                    ]
                },
                {
                    name: &quot;Azure SQL Database&quot;,
                    icon: &#39;&lt;path d=&quot;M12 2C6.48 2 2 4.24 2 7v10c0 2.76 4.48 5 10 5s10-2.24 10-5V7c0-2.76-4.48-5-10-5zm0 8c-4.42 0-8-1.79-8-4s3.58-4 8-4 8 1.79 8 4-3.58 4-8 4z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Fully managed RDBMS for modern, cloud-native apps.&quot;,
                    whatIsIt: &quot;A fully managed platform as a service (PaaS) database engine that handles upgrading, patching, backups, and monitoring without user involvement.&quot;,
                    problemSolved: &quot;Removes the DBA overhead of maintaining SQL Server VMs. Guarantees high availability and compliance for structured relational datasets requiring ACID compliance.&quot;,
                    goodUse: [&quot;Modern cloud-native apps&quot;, &quot;Financial transactions&quot;, &quot;SaaS multi-tenant backends&quot;, &quot;Applications requiring complex JOINS&quot;],
                    badUse: [&quot;Legacy apps requiring SQL Agent (Use Managed Instance)&quot;, &quot;Unstructured data&quot;, &quot;Massive global active-active writes (Use Cosmos)&quot;],
                    apiModels: [&quot;T-SQL&quot;, &quot;TDS Endpoint&quot;, &quot;REST API (Data API Builder)&quot;],
                    archScaling: &quot;Scale up (Vertical) by increasing vCores or DTUs. Read scale-out using Read Replicas. For multi-tenant SaaS, &#39;Elastic Pools&#39; allow sharing resources across many databases.&quot;,
                    performance: &quot;Highly optimized query engine. Built-in Intelligence provides automatic performance tuning, creating and dropping indexes based on actual usage patterns.&quot;,
                    consistency: &quot;Strict ACID (Atomicity, Consistency, Isolation, Durability). Strong consistency.&quot;,
                    haDr: &quot;Built-in High Availability (99.99%). Supports &#39;Active Geo-Replication&#39; for readable secondaries in different regions.&quot;,
                    pricing: &quot;vCore model (Compute + Storage) or DTU model (Bundled). Serverless tier pauses billing when inactive.&quot;,
                    security: &quot;Microsoft Defender for SQL, Always Encrypted, Dynamic Data Masking, Row-Level Security, VNET rules, Entra ID Authentication.&quot;,
                    integrations: [&quot;App Service&quot;, &quot;Azure Data Factory&quot;, &quot;Power BI&quot;, &quot;Azure Key Vault&quot;],
                    pros: [&quot;Zero maintenance overhead&quot;, &quot;Built-in AI tuning&quot;, &quot;Serverless tier for intermittent workloads&quot;],
                    cons: [&quot;Vertical scaling limits&quot;, &quot;Missing legacy features (SQL Agent)&quot;, &quot;Geo-distributed writes are complex&quot;],
                    compare: [
                        { name: &quot;SQL Managed Instance&quot;, type: &quot;PaaS (Full SQL)&quot;, best: &quot;Lift &amp; Shift migrations&quot;, weak: &quot;Slower provisioning / VNet required&quot; },
                        { name: &quot;Cosmos DB&quot;, type: &quot;NoSQL&quot;, best: &quot;Global Scale/Throughput&quot;, weak: &quot;No ACID Joins&quot; },
                        { name: &quot;PostgreSQL&quot;, type: &quot;Open Source Relational&quot;, best: &quot;Avoiding vendor lock-in&quot;, weak: &quot;Missing native T-SQL features&quot; }
                    ],
                    interview: [
                        { q: &quot;Azure SQL DB vs. Managed Instance?&quot;, a: &quot;Azure SQL DB is for modern cloud apps (pure PaaS). Managed Instance is for migrating legacy on-prem SQL Servers because it supports almost 100% of surface area features (SQL Agent, Service Broker, Cross-DB queries).&quot; },
                        { q: &quot;What is an Elastic Pool?&quot;, a: &quot;A shared resource pool for multiple databases with unpredictable usage. It prevents over-provisioning for SaaS apps where one tenant might spike while others are idle.&quot; },
                        { q: &quot;DTU vs vCore purchasing model?&quot;, a: &quot;DTU is a bundled measure of CPU, Memory, and I/O (legacy). vCore allows independent scaling of Compute and Storage and supports Azure Hybrid Benefit (cheaper if you own licenses).&quot; },
                        { q: &quot;How do you handle Disaster Recovery?&quot;, a: &quot;Implement Auto-Failover Groups. If the primary region goes down, traffic is automatically routed to the secondary region with the same connection string.&quot; },
                        { q: &quot;What is Active Geo-Replication?&quot;, a: &quot;Allows creating up to 4 readable secondary databases in the same or different regions to offload read-heavy query workloads.&quot; },
                        { q: &quot;Explain Dynamic Data Masking.&quot;, a: &quot;A security feature that limits sensitive data exposure by masking it to non-privileged users at the query level without altering the actual data in the database (e.g., masking a credit card to XXXX-XXXX-XXXX-1234).&quot; },
                        { q: &quot;What is the Serverless compute tier?&quot;, a: &quot;A tier that automatically scales compute based on workload demand and pauses the database during inactive periods, billing only for storage, making it perfect for intermittent apps.&quot; },
                        { q: &quot;How do you securely connect an App Service to Azure SQL?&quot;, a: &quot;Assign a Managed Identity to the App Service, create a contained user mapped to that identity in SQL, and use VNet Integration to keep traffic off the public internet.&quot; },
                        { q: &quot;What is Query Store?&quot;, a: &quot;A built-in feature that acts like a &#39;flight data recorder&#39; for the database. It captures a history of queries, plans, and runtime statistics to help troubleshoot performance regression.&quot; },
                        { q: &quot;Does Azure SQL support cross-database queries?&quot;, a: &quot;Azure SQL DB natively does not support simple cross-database queries like on-prem SQL (requires Elastic Query). If heavily needed, use SQL Managed Instance.&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Web API Backend:&lt;/b&gt; Azure App Service (Web App) → VNet Integration → Azure SQL Database.&quot;,
                        &quot;&lt;b&gt;SaaS Multi-Tenant:&lt;/b&gt; One DB per tenant managed inside an Azure SQL Elastic Pool for cost efficiency.&quot;,
                        &quot;&lt;b&gt;Read Heavy Apps:&lt;/b&gt; Primary DB handles writes; read-heavy reporting queries hit the Geo-Replicated Secondary endpoint.&quot;
                    ]
                },
                {
                    name: &quot;Azure SQL Managed Instance&quot;,
                    icon: &#39;&lt;path d=&quot;M4 6h16v12H4z M10 10h4v4h-4z M12 2C6.48 2 2 4.24 2 7v10c0 2.76 4.48 5 10 5s10-2.24 10-5V7c0-2.76-4.48-5-10-5zm0 8c-4.42 0-8-1.79-8-4s3.58-4 8-4 8 1.79 8 4-3.58 4-8 4z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Lift-and-shift PaaS for legacy SQL Server migrations.&quot;,
                    whatIsIt: &quot;A scalable cloud database service that combines the broadest SQL Server engine compatibility with all the benefits of a fully managed and evergreen PaaS.&quot;,
                    problemSolved: &quot;Allows enterprises to migrate large, complex on-premises SQL Server databases to the cloud without having to rewrite code or manage IaaS Virtual Machines.&quot;,
                    goodUse: [&quot;Lift-and-shift migrations to the cloud&quot;, &quot;Apps needing SQL Server Agent&quot;, &quot;Apps needing Cross-Database queries&quot;, &quot;Apps needing CLR modules&quot;],
                    badUse: [&quot;Brand new, modern microservices (use Azure SQL DB)&quot;, &quot;Simple, single databases (overkill)&quot;],
                    apiModels: [&quot;T-SQL&quot;, &quot;SQL Native Client&quot;],
                    archScaling: &quot;Must be deployed within a dedicated Azure Virtual Network (VNet). Scales compute and storage independently using the vCore model.&quot;,
                    performance: &quot;Near 100% compatibility with the latest SQL Server (Enterprise Edition) engine.&quot;,
                    consistency: &quot;Strict ACID compliance. Strong consistency.&quot;,
                    haDr: &quot;Automated backups, Point-in-time restore, and Auto-failover groups for disaster recovery.&quot;,
                    pricing: &quot;Generally more expensive baseline than Azure SQL DB. Highly cost-effective if utilizing Azure Hybrid Benefit.&quot;,
                    security: &quot;Native VNet isolation (no public endpoint by default), Transparent Data Encryption, Auditing, Entra ID integration.&quot;,
                    integrations: [&quot;Azure Data Migration Service (DMS)&quot;, &quot;Azure ExpressRoute&quot;, &quot;Entra ID&quot;],
                    pros: [&quot;No code refactoring needed for migration&quot;, &quot;Full SQL Server feature set&quot;, &quot;PaaS management (no OS patching)&quot;],
                    cons: [&quot;Requires a dedicated subnet/VNet&quot;, &quot;Slower to provision and scale compared to Azure SQL DB&quot;, &quot;Higher minimum cost&quot;],
                    compare: [
                        { name: &quot;Azure SQL DB&quot;, type: &quot;PaaS&quot;, best: &quot;Modern cloud-native apps&quot;, weak: &quot;Lacks SQL Agent / Cross-DB&quot; },
                        { name: &quot;SQL on VM&quot;, type: &quot;IaaS&quot;, best: &quot;Absolute OS control&quot;, weak: &quot;Manual patching &amp; backups required&quot; }
                    ],
                    interview: [
                        { q: &quot;Why use Managed Instance instead of SQL on a VM?&quot;, a: &quot;With a VM, you must manage OS patching, SQL Server updates, and configure backups manually. Managed Instance does all this automatically while providing the same engine compatibility.&quot; },
                        { q: &quot;Can a Managed Instance be accessed via the public internet?&quot;, a: &quot;By default, no. It is deployed inside a private VNet for security. (Though a public endpoint can be explicitly enabled if absolutely necessary).&quot; },
                        { q: &quot;What is Azure Hybrid Benefit?&quot;, a: &quot;A licensing benefit that allows you to use your existing on-premises SQL Server licenses with active Software Assurance to save up to 55% on Managed Instance costs.&quot; },
                        { q: &quot;Does Managed Instance support SQL Server Agent?&quot;, a: &quot;Yes. Unlike Azure SQL Database, Managed Instance fully supports SQL Server Agent for scheduling maintenance tasks and background jobs.&quot; },
                        { q: &quot;How do you migrate to Managed Instance with zero downtime?&quot;, a: &quot;Use Azure Data Migration Service (DMS) or Log Replay Service (LRS) to replicate data continuously from on-prem to MI, then perform a quick cutover.&quot; },
                        { q: &quot;Does MI support cross-database queries?&quot;, a: &quot;Yes, it fully supports three-part names and distributed queries, making it the ideal choice for older applications that rely heavily on multiple intertwined databases.&quot; },
                        { q: &quot;What are the networking requirements for MI?&quot;, a: &quot;It must be deployed in an empty, dedicated subnet within an Azure VNet. It requires specific Network Security Group (NSG) and Route Table configurations to function.&quot; },
                        { q: &quot;Does it support Machine Learning Services?&quot;, a: &quot;Yes, Managed Instance supports Machine Learning Services (Python and R) directly inside the database engine.&quot; },
                        { q: &quot;What is the difference between General Purpose and Business Critical tiers?&quot;, a: &quot;General Purpose uses remote Azure Premium Storage. Business Critical uses super-fast local SSDs and includes an Always On Availability Group with read-only replicas.&quot; },
                        { q: &quot;Can you stop or pause a Managed Instance?&quot;, a: &quot;Yes, Microsoft recently introduced the Stop/Start capability for Managed Instance, allowing you to save on compute costs during non-working hours.&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Enterprise Migration:&lt;/b&gt; On-premise SQL Server → Azure Data Migration Service → SQL Managed Instance (inside VNet) connected via ExpressRoute.&quot;
                    ]
                },
                {
                    name: &quot;Azure HorizonDB&quot;,
                    icon: &#39;&lt;path d=&quot;M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-1 17.93V14h2v5.93c-3.924-.263-7.23-2.923-8.625-6.55L7.5 12l-1.39-2.62c1.395-3.627 4.701-6.287 8.625-6.55V7h-2v-5.93c3.924.263 7.23 2.923 8.625 6.55L16.5 12l1.39 2.62c-1.395 3.627-4.701 6.287-8.625 6.55z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Cloud-native, AI-optimized, PostgreSQL-compatible database with disaggregated storage.&quot;,
                    whatIsIt: &quot;A high-scale, managed PostgreSQL service designed for AI and cloud-native workloads, featuring a Rust-based storage engine that decouples compute and storage.&quot;,
                    problemSolved: &quot;Addresses the scalability bottlenecks of traditional PostgreSQL by separating storage from compute, enabling sub-millisecond commits and massive throughput for mission-critical AI apps.&quot;,
                    goodUse: [&quot;AI-native applications&quot;, &quot;Large-scale RAG (Retrieval-Augmented Generation)&quot;, &quot;High-throughput OLTP workloads&quot;, &quot;Multi-tenant SaaS platforms&quot;, &quot;Mission-critical enterprise migration&quot;],
                    badUse: [&quot;Simple, low-scale applications (overkill)&quot;, &quot;Workloads requiring non-Postgres engines&quot;, &quot;Environments requiring total control over low-level Postgres binaries&quot;],
                    apiModels: [&quot;Standard PostgreSQL wire protocol (SQL)&quot;],
                    archScaling: &quot;Features a disaggregated architecture. Scales horizontally to 3,072 vCores and supports auto-scaling shared storage up to 128TB. Compute and storage scale independently.&quot;,
                    performance: &quot;Provides up to 3x higher throughput than open-source Postgres. Uses tiered caching and a distributed WAL (Write-Ahead Log) for sub-millisecond multi-zone commit latencies.&quot;,
                    consistency: &quot;ACID-compliant with strong consistency guarantees, optimized for high-write volume through quorum-based durability.&quot;,
                    haDr: &quot;Zone-redundant architecture with ~5-second failover. Uses shared storage across availability zones to eliminate data movement during recovery.&quot;,
                    pricing: &quot;Billed based on provisioned compute (vCores) and storage/IOPS usage. Designed for enterprise cost-efficiency at scale.&quot;,
                    security: &quot;Integrated with Entra ID, Private Link/VNET support, always-on encryption, and integration with Azure Defender for Cloud.&quot;,
                    integrations: [&quot;Microsoft Foundry (AI models)&quot;, &quot;Visual Studio Code (Postgres Extension)&quot;, &quot;Azure Monitor&quot;, &quot;GitHub Copilot&quot;],
                    pros: [&quot;Extreme scale-out capabilities&quot;, &quot;Rust-based engine for reliability&quot;, &quot;Built-in DiskANN vector indexing&quot;, &quot;Predictable, low-latency performance&quot;],
                    cons: [&quot;Currently in private/limited preview&quot;, &quot;More complex architecture than standard Managed Postgres&quot;, &quot;May require re-architecting for maximum benefit&quot;],
                    compare: [
                        { name: &quot;Amazon Aurora&quot;, type: &quot;Cloud-Native Postgres&quot;, best: &quot;Established market leader&quot;, weak: &quot;AWS-exclusive&quot; },
                        { name: &quot;Azure Database for PostgreSQL&quot;, type: &quot;Managed Postgres&quot;, best: &quot;Lift-and-shift / Compatibility&quot;, weak: &quot;Lower performance ceiling&quot; },
                        { name: &quot;Google AlloyDB&quot;, type: &quot;Cloud-Native Postgres&quot;, best: &quot;Integration with GCP AI&quot;, weak: &quot;GCP-exclusive&quot; }
                    ],
                    interview: [
                        { q: &quot;What is the core architectural innovation in HorizonDB?&quot;, a: &quot;The decoupling of compute and storage, utilizing a Rust-based engine to manage storage durably and independently, which removes &#39;size of data&#39; bottlenecks.&quot; },
                        { q: &quot;How does it improve vector search?&quot;, a: &quot;It integrates DiskANN, which enables high-performance similarity searches by keeping indexes on disk with compact in-memory representations, outperforming standard HNSW indexes.&quot; },
                        { q: &quot;What role does Rust play?&quot;, a: &quot;The storage layer is written in Rust to provide memory safety, reduce buffer overflow risks, and deliver predictable performance at scale.&quot; },
                        { q: &quot;Can I use standard PostgreSQL tools?&quot;, a: &quot;Yes, it is fully wire-compatible with the PostgreSQL ecosystem, including standard drivers and the VS Code Postgres extension.&quot; },
                        { q: &quot;How does it handle failover?&quot;, a: &quot;By using shared storage across availability zones, failover does not require data movement or re-synchronization, allowing for recovery times around 5 seconds.&quot; },
                        { q: &quot;Is this replacing Azure Database for PostgreSQL?&quot;, a: &quot;No, it is a complementary service targeted at specific AI-native and high-scale use cases where traditional Postgres architectures hit limits.&quot; },
                        { q: &quot;What is the limit of compute and storage?&quot;, a: &quot;It can scale up to 3,072 vCores and support databases up to 128TB in size.&quot; },
                        { q: &quot;How are writes handled for high performance?&quot;, a: &quot;Writes commit to a distributed WAL (Write-Ahead Log) storage layer using quorum-based durability, minimizing replication hops.&quot; },
                        { q: &quot;Does it support AI model management?&quot;, a: &quot;Yes, it includes built-in AI model management for Microsoft Foundry, allowing users to invoke LLMs and embeddings directly via SQL.&quot; },
                        { q: &quot;How does caching work?&quot;, a: &quot;Page servers dynamically cache frequently accessed data, ensuring that performance scales with workload demand rather than just raw storage size.&quot; },
                        { q: &quot;Is it suitable for multi-tenant applications?&quot;, a: &quot;Yes, its ability to scale horizontally and its performance predictability make it well-suited for high-volume multi-tenant SaaS backends.&quot; },
                        { q: &quot;What is the primary benefit over standard Postgres?&quot;, a: &quot;Dramatic improvements in transactional throughput, significantly lower commit latencies, and the ability to scale compute/storage independently.&quot; },
                        { q: &quot;How is security different from standard Postgres?&quot;, a: &quot;It includes native support for Entra ID and Private Endpoints, along with integration into Azure&#39;s enterprise-grade governance and compliance framework.&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;AI-Native Backend:&lt;/b&gt; Storing vector embeddings and transactional data in one Postgres-compatible engine for RAG pipelines.&quot;,
                        &quot;&lt;b&gt;Scale-Out SaaS:&lt;/b&gt; Supporting massive multi-tenant volumes with independent compute/storage scaling.&quot;,
                        &quot;&lt;b&gt;Global AI Agent Infrastructure:&lt;/b&gt; Leveraging sub-millisecond latencies to support real-time reasoning and state management for autonomous agents.&quot;
                    ]
                },
                {
                    name: &quot;Azure Managed Redis&quot;,
                    icon: &#39;&lt;path d=&quot;M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-1 17.93V14h2v5.93c-3.924-.263-7.23-2.923-8.625-6.55L7.5 12l-1.39-2.62c1.395-3.627 4.701-6.287 8.625-6.55V7h-2v-5.93c3.924.263 7.23 2.923 8.625 6.55L16.5 12l1.39 2.62c-1.395 3.627-4.701 6.287-8.625 6.55z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Fully managed, high-performance in-memory data store for hyperscale cloud environments.&quot;,
                    whatIsIt: &quot;A first-party, fully managed service providing the latest Redis Enterprise innovations, optimized for low latency, high throughput, and modern AI workloads.&quot;,
                    problemSolved: &quot;Replaces legacy Azure Cache for Redis by offering multi-core utilization, enhanced throughput, better reliability (up to 99.999% SLA), and advanced data structures for AI applications.&quot;,
                    goodUse: [&quot;Real-time AI/ML inferencing (RAG)&quot;, &quot;High-performance caching&quot;, &quot;Session management&quot;, &quot;Leaderboards and gaming&quot;, &quot;Real-time stream processing&quot;, &quot;Deduplication and messaging&quot;],
                    badUse: [&quot;Massive datasets that exceed cost-effective memory limits (unless using Flash Optimized)&quot;, &quot;Workloads requiring standard relational database features (ACID transactions, complex JOINs)&quot;, &quot;Small, low-traffic apps where costs outweigh the performance gains&quot;],
                    apiModels: [&quot;Redis Command Protocol&quot;, &quot;Redis Modules (Search, JSON, Bloom, TimeSeries)&quot;],
                    archScaling: &quot;Decouples compute and memory. Available in multiple tiers (Memory Optimized, Balanced, Compute Optimized, Flash Optimized) and supports horizontal scaling via sharding.&quot;,
                    performance: &quot;Provides up to 15x higher operations per second compared to previous caching offerings. Multi-core utilization allows for significant throughput improvements.&quot;,
                    consistency: &quot;Configurable consistency levels; supports high availability with automatic replication across zones or regions.&quot;,
                    haDr: &quot;Zone-redundant by default with optional active geo-replication, enabling global read/write capabilities for mission-critical applications.&quot;,
                    pricing: &quot;Billed based on tier (Memory/Balanced/Compute/Flash Optimized), instance size, and throughput requirements. Offers reserved capacity for significant cost savings.&quot;,
                    security: &quot;Deep integration with Microsoft Entra ID (RBAC), private link (VNET injection), and customer-managed keys (CMK) for encryption at rest.&quot;,
                    integrations: [&quot;Azure OpenAI Service&quot;, &quot;Azure Container Apps&quot;, &quot;Azure Functions&quot;, &quot;Azure Kubernetes Service&quot;, &quot;Power BI&quot;],
                    pros: [&quot;Latest Redis Enterprise innovations&quot;, &quot;Up to 99.999% availability SLA&quot;, &quot;Built-in support for vector similarity search&quot;, &quot;Seamless migration path from legacy Redis offerings&quot;],
                    cons: [&quot;Higher architectural complexity for beginners compared to basic caching&quot;, &quot;Specific command limitations typical of managed services&quot;, &quot;Pricing can be premium compared to self-hosted Redis&quot;],
                    compare: [
                        { name: &quot;Azure Cache for Redis&quot;, type: &quot;Legacy PaaS&quot;, best: &quot;Simple existing setups&quot;, weak: &quot;Being retired by 2028; lacks modern AI features&quot; },
                        { name: &quot;Redis (on IaaS/AKS)&quot;, type: &quot;Self-Managed&quot;, best: &quot;Total control&quot;, weak: &quot;High operational overhead&quot; },
                        { name: &quot;Cosmos DB&quot;, type: &quot;NoSQL&quot;, best: &quot;Global persistence/Scale&quot;, weak: &quot;Different latency profile&quot; }
                    ],
                    interview: [
                        { q: &quot;What is the key difference between Azure Managed Redis and Azure Cache for Redis?&quot;, a: &quot;Managed Redis is built on the Redis Enterprise stack, enabling multi-core scaling, vector search, active geo-replication, and higher performance ceilings.&quot; },
                        { q: &quot;How does it support generative AI?&quot;, a: &quot;It provides built-in modules like RediSearch and RedisJSON, which enable vector similarity search (KNN) for RAG applications and semantic caching.&quot; },
                        { q: &quot;What is &#39;Flash Optimized&#39; tier?&quot;, a: &quot;It is a cost-effective tier that intelligently moves infrequently accessed data from RAM to NVMe storage, allowing for much larger dataset support.&quot; },
                        { q: &quot;How is high availability achieved?&quot;, a: &quot;It is zone-redundant by default, replicating data across at least two nodes in different availability zones.&quot; },
                        { q: &quot;Can you use Entra ID for access control?&quot;, a: &quot;Yes, it supports Microsoft Entra ID authentication, which is recommended over traditional access keys for better security.&quot; },
                        { q: &quot;How do you handle scaling?&quot;, a: &quot;You can scale horizontally by adding shards or vertically by changing the SKU/tier, depending on throughput and memory needs.&quot; },
                        { q: &quot;What is the impact of Private Link?&quot;, a: &quot;It ensures all traffic remains within the private Azure network, eliminating exposure to the public internet.&quot; },
                        { q: &quot;Why use active geo-replication?&quot;, a: &quot;It enables simultaneous multi-region read/write access, essential for global applications requiring low latency everywhere.&quot; },
                        { q: &quot;Does it support data persistence?&quot;, a: &quot;Yes, it supports RDB (snapshots) and AOF (append-only file) to ensure data durability beyond memory storage.&quot; },
                        { q: &quot;What are the limitations of RBAC?&quot;, a: &quot;Current implementations provide access to all keyspaces once authenticated; granular RBAC per keyspace is limited.&quot; },
                        { q: &quot;How do you optimize costs for development?&quot;, a: &quot;By using the Memory Optimized tier (which has a high memory-to-vCPU ratio) or non-HA configurations for non-production workloads.&quot; },
                        { q: &quot;What is a major advantage of the multi-core utilization?&quot;, a: &quot;It significantly increases the number of operations per second (throughput) by avoiding single-threaded bottlenecks found in community Redis.&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Semantic Caching:&lt;/b&gt; Using RediSearch for vector-based caching to accelerate RAG workflows.&quot;,
                        &quot;&lt;b&gt;Global Leaderboards:&lt;/b&gt; Utilizing sorted sets and active geo-replication for low-latency global gaming scores.&quot;,
                        &quot;&lt;b&gt;Real-time Deduplication:&lt;/b&gt; Implementing Bloom filters for high-speed duplicate request checking.&quot;
                    ]
                },
                {
                    name: &quot;Azure Cache for Redis&quot;,
                    icon: &#39;&lt;path d=&quot;M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-1 17.93V14h2v5.93c-3.924-.263-7.23-2.923-8.625-6.55L7.5 12l-1.39-2.62c1.395-3.627 4.701-6.287 8.625-6.55V7h-2v-5.93c3.924.263 7.23 2.923 8.625 6.55L16.5 12l1.39 2.62c-1.395 3.627-4.701 6.287-8.625 6.55z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Managed in-memory data store for caching and session management.&quot;,
                    whatIsIt: &quot;A fully managed service based on the open-source Redis engine, providing high-performance access to data for applications needing low-latency retrieval.&quot;,
                    problemSolved: &quot;Solves application performance bottlenecks by offloading heavy database queries or expensive computations to a fast, in-memory cache.&quot;,
                    goodUse: [&quot;Data caching&quot;, &quot;Session state management&quot;, &quot;Web page output caching&quot;, &quot;Leaderboards&quot;, &quot;Message brokering / Pub-Sub&quot;],
                    badUse: [&quot;Large-scale enterprise AI vector search (use Managed Redis/RediSearch)&quot;, &quot;Storing data that must persist across total system failures&quot;, &quot;Complex data-heavy relational query requirements&quot;],
                    apiModels: [&quot;Redis Command Protocol&quot;],
                    archScaling: &quot;Available in Basic, Standard, and Premium tiers. Basic/Standard offer simple replication, while Premium supports clustering, persistence, and geo-replication.&quot;,
                    performance: &quot;Provides sub-millisecond response times for cached operations. Performance is tied to the selected tier and instance size.&quot;,
                    consistency: &quot;Provides strong consistency for individual operations; eventual consistency for read-replicas.&quot;,
                    haDr: &quot;Standard and Premium tiers provide High Availability via master-slave replication. Premium tier adds geo-replication for cross-region disaster recovery.&quot;,
                    pricing: &quot;Billed on a monthly basis depending on the tier (Basic, Standard, Premium) and the cache size (GB).&quot;,
                    security: &quot;Supports SSL/TLS for encryption in transit, VNET injection (Premium tier), and basic access control via keys.&quot;,
                    integrations: [&quot;Azure App Service&quot;, &quot;ASP.NET Core&quot;, &quot;Spring Boot&quot;, &quot;Azure Functions&quot;, &quot;AKS&quot;],
                    pros: [&quot;Extremely simple to deploy and manage&quot;, &quot;Broad community ecosystem compatibility&quot;, &quot;Excellent for accelerating existing web apps&quot;],
                    cons: [&quot;Limited multi-core utilization compared to Managed Redis&quot;, &quot;Older feature set compared to the new Managed Redis Enterprise offering&quot;, &quot;Scaling operations can take time&quot;],
                    compare: [
                        { name: &quot;Azure Managed Redis&quot;, type: &quot;Redis Enterprise&quot;, best: &quot;AI workloads / Hyperscale&quot;, weak: &quot;Higher cost/complexity&quot; },
                        { name: &quot;Cosmos DB&quot;, type: &quot;NoSQL&quot;, best: &quot;Global persistence&quot;, weak: &quot;Higher latency than cache&quot; },
                        { name: &quot;Azure Table Storage&quot;, type: &quot;Storage&quot;, best: &quot;Cost-effective persistence&quot;, weak: &quot;Much slower performance&quot; }
                    ],
                    interview: [
                        { q: &quot;What is the primary use case for Azure Cache for Redis?&quot;, a: &quot;To cache frequently accessed data that is expensive to fetch from a primary database, thereby improving application response times.&quot; },
                        { q: &quot;What are the different tiers?&quot;, a: &quot;Basic (dev/test), Standard (production, HA), and Premium (enterprise-grade, clustering, persistence, VNET support).&quot; },
                        { q: &quot;How do you handle connection failures?&quot;, a: &quot;By implementing retry logic using client libraries (e.g., StackExchange.Redis) to handle transient network issues or failovers.&quot; },
                        { q: &quot;What is the difference between Cache-Aside and Write-Through?&quot;, a: &quot;Cache-Aside is when the app checks cache first and fetches from DB on miss; Write-Through is when the app writes to both cache and DB simultaneously.&quot; },
                        { q: &quot;Can you persist data?&quot;, a: &quot;Yes, in the Premium tier, you can configure RDB (snapshots) and AOF (append-only file) persistence.&quot; },
                        { q: &quot;What is the max cache size?&quot;, a: &quot;It depends on the tier; Premium can scale to hundreds of GBs through clustering.&quot; },
                        { q: &quot;How is security handled?&quot;, a: &quot;By using SSL/TLS connections and VNET injection in Premium tiers to restrict access to authorized private networks.&quot; },
                        { q: &quot;What is geo-replication?&quot;, a: &quot;A Premium tier feature that asynchronously replicates cache data to a secondary region for cross-region DR.&quot; },
                        { q: &quot;Why use VNET injection?&quot;, a: &quot;To place the cache inside a virtual network, providing complete isolation from the public internet.&quot; },
                        { q: &quot;What is clustering?&quot;, a: &quot;A Premium tier feature that automatically splits data across multiple Redis nodes to increase throughput and total capacity.&quot; },
                        { q: &quot;How do you monitor the cache?&quot;, a: &quot;Using Azure Monitor to track Cache Hits/Misses, Memory Usage, and Server Load.&quot; },
                        { q: &quot;When should you NOT use Redis?&quot;, a: &quot;For storing large volumes of data that require ACID-compliant relational integrity, or when the data is not accessed frequently enough to justify the cost.&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Web Session Cache:&lt;/b&gt; Storing user session tokens in Redis for fast, stateful web application scaling.&quot;,
                        &quot;&lt;b&gt;Database Query Cache:&lt;/b&gt; Storing results of complex SQL queries to avoid repeated expensive hits to Azure SQL/PostgreSQL.&quot;,
                        &quot;&lt;b&gt;Pub/Sub Messaging:&lt;/b&gt; Using Redis channels for real-time notifications or chat updates between microservices.&quot;
                    ]
                }
            ]
        },
        {
            category: &quot;Compute&quot;,
            services: [
                {
                    name: &quot;Azure App Service&quot;,
                    icon: &#39;&lt;path d=&quot;M4 4h16v16H4V4zm2 4v8h12V8H6z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Flagship PaaS for hosting web apps and REST APIs.&quot;,
                    whatIsIt: &quot;A fully managed Platform as a Service (PaaS) that integrates Microsoft Azure features into your web apps, REST APIs, and mobile backends.&quot;,
                    problemSolved: &quot;Removes the burden of provisioning, configuring, and patching web servers (IIS, Apache, Nginx). Focus entirely on application code.&quot;,
                    goodUse: [&quot;Hosting web portals (.NET, Node, Python, Java)&quot;, &quot;RESTful API hosting&quot;, &quot;Background web jobs&quot;, &quot;Monolithic application modernization&quot;],
                    badUse: [&quot;Short-lived, event-driven tasks (use Functions)&quot;, &quot;Complex microservice orchestration requiring sidecars (use AKS)&quot;, &quot;Full OS control requirements (use VMs)&quot;],
                    apiModels: [&quot;HTTP/HTTPS&quot;, &quot;WebSockets&quot;, &quot;gRPC&quot;],
                    archScaling: &quot;Runs on an &#39;App Service Plan&#39; (defines compute resources). Scales Vertically (Up) by changing the tier, or Horizontally (Out) by adding more instances manually or via Autoscale rules.&quot;,
                    performance: &quot;Highly reliable with built-in load balancing. Supports Local Cache to improve startup times.&quot;,
                    consistency: &quot;N/A (Compute service, state should be externalized to Redis or SQL).&quot;,
                    haDr: &quot;99.95% SLA. High availability within a region via multiple instances. Multi-region requires deploying two App Services behind Azure Front Door.&quot;,
                    pricing: &quot;Billed per App Service Plan (Compute size x Time), not per app. You can run 10 apps on 1 Plan for the same price.&quot;,
                    security: &quot;VNet Integration (Outbound), Private Endpoints (Inbound), EasyAuth (Entra ID), Managed Identities, Custom SSL.&quot;,
                    integrations: [&quot;Azure SQL&quot;, &quot;Azure Key Vault&quot;, &quot;Application Insights&quot;, &quot;Azure DevOps/GitHub Actions&quot;],
                    pros: [&quot;Extremely fast time-to-market&quot;, &quot;Built-in CI/CD&quot;, &quot;Zero-downtime deployment slots&quot;],
                    cons: [&quot;Less control than VMs&quot;, &quot;Vendor lock-in compared to Docker/AKS&quot;, &quot;VNet integration requires higher pricing tiers&quot;],
                    compare: [
                        { name: &quot;Azure Functions&quot;, type: &quot;Serverless&quot;, best: &quot;Event-driven bursts&quot;, weak: &quot;Always-on web apps&quot; },
                        { name: &quot;AKS&quot;, type: &quot;Container Orchestration&quot;, best: &quot;Complex Microservices&quot;, weak: &quot;Steep learning curve&quot; },
                        { name: &quot;VMs&quot;, type: &quot;IaaS&quot;, best: &quot;Full OS Control&quot;, weak: &quot;High maintenance&quot; }
                    ],
                    interview: [
                        { q: &quot;What is an App Service Plan?&quot;, a: &quot;It represents the underlying VM compute resources (CPU, RAM). Multiple App Services can run on one Plan, sharing its resources and cost. If one app spikes, it affects the others.&quot; },
                        { q: &quot;How do Deployment Slots work?&quot;, a: &quot;They are live apps with their own hostnames. You deploy to &#39;Staging&#39;, validate it, and then perform a &#39;Swap&#39; with &#39;Production&#39;. It swaps IP routing, ensuring zero-downtime and easy rollback.&quot; },
                        { q: &quot;How do you securely connect an App Service to a DB?&quot;, a: &quot;Assign a System-Assigned Managed Identity to the App Service, grant that identity access in Azure SQL/Key Vault, and use VNet Integration to route traffic through the Azure backbone rather than the public internet.&quot; },
                        { q: &quot;What is SNAT Port Exhaustion?&quot;, a: &quot;Occurs when an App Service opens too many outbound connections (e.g., to a DB or external API) without closing them, exhausting its allocated network ports. Fix by using Connection Pooling or VNet Integration.&quot; },
                        { q: &quot;How does Autoscaling work?&quot;, a: &quot;You configure rules (e.g., if CPU &gt; 70% for 5 mins, add 1 instance; if CPU &lt; 30%, remove 1). It scales horizontally up to the limit of your tier.&quot; },
                        { q: &quot;What is EasyAuth?&quot;, a: &quot;Built-in App Service Authentication/Authorization. It allows you to protect your app using Entra ID, Google, Facebook, etc., without writing any authentication code.&quot; },
                        { q: &quot;App Service vs Azure Container Instances (ACI)?&quot;, a: &quot;App Service is built for long-running HTTP workloads and offers slots, custom domains, and auto-scaling. ACI is for running a container quickly, doing a task, and terminating.&quot; },
                        { q: &quot;Can App Service run Linux containers?&quot;, a: &quot;Yes, Web App for Containers allows you to deploy custom Docker containers (Linux or Windows) into the App Service environment.&quot; },
                        { q: &quot;What are WebJobs?&quot;, a: &quot;A feature of App Service that allows you to run background scripts (.cmd, .bat, .exe, .ps1, .sh, .php, .py, .js) either continuously or on a schedule in the same context as your web app.&quot; },
                        { q: &quot;How to handle multi-region active-active App Services?&quot;, a: &quot;Deploy an App Service in Region A and another in Region B. Put Azure Front Door in front of them to route traffic based on latency and handle failover if a region drops.&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Standard N-Tier:&lt;/b&gt; App Service (Frontend) → App Service (API) → Azure SQL.&quot;,
                        &quot;&lt;b&gt;Secure Enterprise:&lt;/b&gt; App Service → VNet Integration → Private Endpoint → Cosmos DB.&quot;,
                        &quot;&lt;b&gt;Global Web App:&lt;/b&gt; Azure Front Door → App Service (Region A) &amp; App Service (Region B).&quot;
                    ]
                },
                {
                    name: &quot;Azure Functions&quot;,
                    icon: &#39;&lt;path d=&quot;M13 3L4 14h7v7l9-11h-7z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Serverless compute for event-driven, short-lived tasks.&quot;,
                    whatIsIt: &quot;A serverless solution that allows you to write less code, maintain less infrastructure, and save on costs by running event-triggered code.&quot;,
                    problemSolved: &quot;Paying for idle compute time. Instead of running a 24/7 server to check for a file upload once a day, Functions spins up instantly, processes it, and spins down.&quot;,
                    goodUse: [&quot;Processing Blob storage uploads&quot;, &quot;Webhooks / Micro-APIs&quot;, &quot;Scheduled CRON jobs&quot;, &quot;IoT stream processing&quot;, &quot;Message queue (Service Bus) processing&quot;],
                    badUse: [&quot;Long-running tasks (&gt;10 mins on Consumption plan)&quot;, &quot;Heavy stateful applications (unless using Durable)&quot;, &quot;Constant, high-traffic web hosting&quot;],
                    apiModels: [&quot;Events&quot;, &quot;HTTP/REST&quot;, &quot;Timer/Cron&quot;],
                    archScaling: &quot;Event-driven scaling. The platform automatically adds compute instances based on the number of incoming events (e.g., messages in a queue). Scales to zero when idle.&quot;,
                    performance: &quot;Fast execution, but susceptible to &#39;Cold Starts&#39; (latency delay when the first instance boots up after being idle).&quot;,
                    consistency: &quot;N/A&quot;,
                    haDr: &quot;Highly available by default within a region. For DR, deploy to multiple regions and use Event Grid/Service Bus to route traffic.&quot;,
                    pricing: &quot;Consumption Plan: Billed per execution and memory used per second (GB-s). Premium Plan: Billed for pre-warmed instances to avoid cold starts.&quot;,
                    security: &quot;Function Keys (Auth level), Managed Identities, VNet integration (requires Premium/Dedicated plan).&quot;,
                    integrations: [&quot;Event Grid&quot;, &quot;Service Bus&quot;, &quot;Cosmos DB&quot;, &quot;Blob Storage&quot;],
                    pros: [&quot;Pay only for what you use&quot;, &quot;Auto-scales instantly&quot;, &quot;Rich ecosystem of Triggers and Bindings&quot;],
                    cons: [&quot;Cold starts on Consumption plan&quot;, &quot;10-minute max execution timeout&quot;, &quot;Harder to debug complex architectures locally&quot;],
                    compare: [
                        { name: &quot;App Service&quot;, type: &quot;PaaS&quot;, best: &quot;Always-on Web Apps&quot;, weak: &quot;Idle cost&quot; },
                        { name: &quot;Logic Apps&quot;, type: &quot;Low-code Serverless&quot;, best: &quot;Visual workflow orchestration&quot;, weak: &quot;Custom code complexity&quot; },
                        { name: &quot;Azure Batch&quot;, type: &quot;HPC&quot;, best: &quot;Heavy parallel processing&quot;, weak: &quot;Instant event triggers&quot; }
                    ],
                    interview: [
                        { q: &quot;What is a Cold Start and how to fix it?&quot;, a: &quot;The delay when a Function wakes up from an idle state to process a request. Fix: Use the Premium Plan (keeps instances warm) or set up a timer trigger to &#39;ping&#39; the function every 4 minutes.&quot; },
                        { q: &quot;What are Triggers and Bindings?&quot;, a: &quot;Trigger: The event that causes the function to run (e.g., HTTP request, Blob upload). Binding: A declarative connection to data (Input Binding pulls data, Output Binding saves data) without writing boilerplate connection code.&quot; },
                        { q: &quot;What are Durable Functions?&quot;, a: &quot;An extension that lets you write stateful workflows (like Function Chaining or Fan-out/Fan-in) in a serverless environment. It manages state, checkpoints, and restarts behind the scenes.&quot; },
                        { q: &quot;Consumption vs Premium vs Dedicated Plan?&quot;, a: &quot;Consumption: Pay per execution, auto-scales to 0, suffers cold starts. Premium: Pre-warmed instances, VNet integration, longer execution time. Dedicated: Runs on an existing App Service Plan (you pay for the VM regardless of usage).&quot; },
                        { q: &quot;What is the maximum execution time for an Azure Function?&quot;, a: &quot;On the Consumption plan, the default is 5 minutes, configurable up to 10 minutes. On Premium or Dedicated plans, it can run infinitely (though practically 60 mins is the guaranteed limit without interruption).&quot; },
                        { q: &quot;How do you handle errors and retries in Functions?&quot;, a: &quot;Many triggers (like Service Bus or Queue Storage) have built-in retry policies. If a function fails repeatedly, the message is sent to a &#39;Poison Queue&#39; or &#39;Dead Letter Queue&#39; for manual inspection.&quot; },
                        { q: &quot;What is Function Idempotency?&quot;, a: &quot;Because cloud events can sometimes be delivered &#39;at least once&#39; (duplicate deliveries), a Function must be idempotent—meaning running the same event twice should not cause data corruption or duplicate records.&quot; },
                        { q: &quot;How do you secure an HTTP triggered function?&quot;, a: &quot;Use Authorization Levels (Function Key or Master Key) required in the URL/Header. For enterprise, use App Service Auth (Entra ID) or place the function behind Azure API Management.&quot; },
                        { q: &quot;Can an Azure Function access resources in a VNet?&quot;, a: &quot;Yes, but you need to be on the Premium Plan or Dedicated App Service Plan to use VNet Integration. The Consumption plan does not support outbound VNet integration.&quot; },
                        { q: &quot;What is the Fan-Out/Fan-In pattern?&quot;, a: &quot;Using Durable Functions: One orchestrator function starts (fans out) multiple activity functions to run in parallel, waits for all of them to finish, and then aggregates (fans in) the results.&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Fan-Out / Fan-In:&lt;/b&gt; Function A reads a batch → Spawns 100x Function B instances in parallel → Function C aggregates results (using Durable Functions).&quot;,
                        &quot;&lt;b&gt;Event Processing:&lt;/b&gt; IoT Hub → Event Grid → Azure Function → Formats data → Azure SQL.&quot;,
                        &quot;&lt;b&gt;Scheduled Cleanup:&lt;/b&gt; Timer Trigger Function → Queries old Cosmos DB records → Deletes them.&quot;
                    ]
                }
            ]
        }
    ];

    document.addEventListener(&#39;DOMContentLoaded&#39;, () =&gt; {
        document.querySelectorAll(&#39;.dynamic-year&#39;).forEach(el =&gt; el.innerText = new Date().getFullYear());
        renderTree(azureData);
    });

function renderTree(data) {
        const treePanel = document.getElementById(&#39;treePanel&#39;);
        treePanel.innerHTML = &#39;&#39;;
        data.forEach((categoryObj, catIdx) =&gt; {
            const catGroup = document.createElement(&#39;div&#39;);
            const catHeader = document.createElement(&#39;div&#39;);
            catHeader.className = &#39;cat-header&#39;;
            catHeader.innerHTML = `&lt;span&gt;${categoryObj.category}&lt;/span&gt; &lt;svg viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot;&gt;&lt;path d=&quot;M7 10l5 5 5-5z&quot;/&gt;&lt;/svg&gt;`;
            
            const serviceList = document.createElement(&#39;div&#39;);
            serviceList.className = &#39;service-list&#39;; // Start as hidden

            categoryObj.services.forEach(svc =&gt; {
                const item = document.createElement(&#39;div&#39;);
                item.className = &#39;service-item&#39;;
                item.innerHTML = `&lt;svg class=&quot;svc-icon&quot; viewBox=&quot;0 0 24 24&quot;&gt;${svc.icon}&lt;/svg&gt; ${svc.name}`;
                item.onclick = () =&gt; showDetail(svc, item);
                serviceList.appendChild(item);
            });

            catHeader.onclick = () =&gt; {
                const isOpen = serviceList.style.display === &#39;block&#39;;
                serviceList.style.display = isOpen ? &#39;none&#39; : &#39;block&#39;;
                catHeader.classList.toggle(&#39;active&#39;, !isOpen);
                catHeader.querySelector(&#39;svg&#39;).style.transform = isOpen ? &#39;rotate(0deg)&#39; : &#39;rotate(180deg)&#39;;
            };
            catGroup.appendChild(catHeader);
            catGroup.appendChild(serviceList);
            treePanel.appendChild(catGroup);
        });
    }

    function switchTab(tabId) {
        document.querySelectorAll(&#39;.prep-tab&#39;).forEach(t =&gt; t.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;.tab-content&#39;).forEach(c =&gt; c.classList.remove(&#39;active&#39;));
        
        document.querySelector(`.prep-tab[onclick=&quot;switchTab(&#39;${tabId}&#39;)&quot;]`).classList.add(&#39;active&#39;);
        document.getElementById(tabId).classList.add(&#39;active&#39;);
    }

    function makeList(arr) {
        return `&lt;ul&gt;${arr.map(i =&gt; `&lt;li&gt;${i}&lt;/li&gt;`).join(&#39;&#39;)}&lt;/ul&gt;`;
    }

    function makeTable(arr) {
        return `
            &lt;div class=&quot;table-responsive-wrapper&quot;&gt;
                &lt;table class=&quot;compare-table&quot;&gt;
                    &lt;tr&gt;&lt;th&gt;Alternative&lt;/th&gt;&lt;th&gt;Type&lt;/th&gt;&lt;th&gt;Best For&lt;/th&gt;&lt;th&gt;Weakness&lt;/th&gt;&lt;/tr&gt;
                    ${arr.map(row =&gt; `&lt;tr&gt;&lt;td&gt;&lt;b&gt;${row.name}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;${row.type}&lt;/td&gt;&lt;td&gt;${row.best}&lt;/td&gt;&lt;td&gt;${row.weak}&lt;/td&gt;&lt;/tr&gt;`).join(&#39;&#39;)}
                &lt;/table&gt;
            &lt;/div&gt;
        `;
    }

    function makeQA(arr) {
        return arr.map(qa =&gt; `
            &lt;div class=&quot;qa-box&quot;&gt;
                &lt;div class=&quot;qa-q&quot;&gt;Q: ${qa.q}&lt;/div&gt;
                &lt;div class=&quot;qa-a&quot;&gt;${qa.a}&lt;/div&gt;
            &lt;/div&gt;
        `).join(&#39;&#39;);
    }

	function showDetail(service, element) {
        // Active state styling
        document.querySelectorAll(&#39;.service-item&#39;).forEach(el =&gt; el.classList.remove(&#39;active&#39;));
        element.classList.add(&#39;active&#39;);

        const detailPanel = document.getElementById(&#39;detailPanel&#39;);
        
        detailPanel.innerHTML = `
            &lt;div class=&quot;detail-header-wrap&quot; id=&quot;detailHeader&quot;&gt;
                &lt;div class=&quot;d-head-top&quot;&gt;
                    &lt;svg viewBox=&quot;0 0 24 24&quot;&gt;${service.icon}&lt;/svg&gt;
                    &lt;div&gt;
                        &lt;h2&gt;${service.name}&lt;/h2&gt;
                        &lt;span class=&quot;d-memory-trick&quot;&gt;💡 Cheat Sheet: ${service.cheatSheet}&lt;/span&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;p class=&quot;d-what&quot;&gt;${service.whatIsIt}&lt;/p&gt;
            &lt;/div&gt;

            &lt;div class=&quot;prep-tabs&quot;&gt;
                &lt;div class=&quot;prep-tab active&quot; onclick=&quot;switchTab(&#39;tab-arch&#39;)&quot;&gt;Overview &amp; Architecture&lt;/div&gt;
                &lt;div class=&quot;prep-tab&quot; onclick=&quot;switchTab(&#39;tab-use&#39;)&quot;&gt;Use Cases &amp; Tradeoffs&lt;/div&gt;
                &lt;div class=&quot;prep-tab&quot; onclick=&quot;switchTab(&#39;tab-prep&#39;)&quot;&gt;Interview Q&amp;A&lt;/div&gt;
            &lt;/div&gt;

            &lt;div id=&quot;tab-arch&quot; class=&quot;tab-content active&quot;&gt;
                &lt;div class=&quot;text-box&quot;&gt;
                    &lt;div class=&quot;block-title&quot;&gt;Core Problem Solved&lt;/div&gt;
                    &lt;p&gt;${service.problemSolved}&lt;/p&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;text-box&quot;&gt;
                    &lt;div class=&quot;block-title&quot;&gt;APIs &amp; Consistency Models&lt;/div&gt;
                    &lt;div class=&quot;grid-2&quot; style=&quot;margin-bottom:0;&quot;&gt;
                        &lt;div&gt;
                            &lt;b&gt;Supported APIs / Models:&lt;/b&gt;&lt;br&gt;
                            &lt;div style=&quot;margin-top:8px;&quot;&gt;
                                ${service.apiModels.map(api =&gt; `&lt;span class=&quot;api-pill&quot;&gt;${api}&lt;/span&gt;`).join(&#39;&#39;)}
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div&gt;
                            &lt;b&gt;Consistency Model:&lt;/b&gt;&lt;br&gt;
                            &lt;p style=&quot;margin-top:8px; font-size:13px;&quot;&gt;${service.consistency}&lt;/p&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;grid-2&quot;&gt;
                    &lt;div class=&quot;card-box arch&quot;&gt;
                        &lt;h4&gt;Architecture &amp; Scaling&lt;/h4&gt;
                        &lt;p&gt;${service.archScaling}&lt;/p&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;card-box perf&quot;&gt;
                        &lt;h4&gt;Performance Characteristics&lt;/h4&gt;
                        &lt;p&gt;${service.performance}&lt;/p&gt;
                    &lt;/div&gt;
                &lt;/div&gt;

                &lt;div class=&quot;grid-2&quot;&gt;
                    &lt;div class=&quot;card-box ha&quot;&gt;
                        &lt;h4&gt;High Availability &amp; DR&lt;/h4&gt;
                        &lt;p&gt;${service.haDr}&lt;/p&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;card-box sec&quot;&gt;
                        &lt;h4&gt;Security Features&lt;/h4&gt;
                        &lt;p&gt;${service.security}&lt;/p&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;text-box&quot;&gt;
                    &lt;div class=&quot;block-title&quot;&gt;Pricing Factors&lt;/div&gt;
                    &lt;p&gt;${service.pricing}&lt;/p&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            
            &lt;div id=&quot;tab-use&quot; class=&quot;tab-content&quot;&gt;
                &lt;div class=&quot;grid-2&quot;&gt;
                    &lt;div class=&quot;card-box good&quot;&gt;
                        &lt;h4&gt;✅ When to Use&lt;/h4&gt;
                        ${makeList(service.goodUse)}
                    &lt;/div&gt;
                    &lt;div class=&quot;card-box bad&quot;&gt;
                        &lt;h4&gt;❌ When NOT to Use&lt;/h4&gt;
                        ${makeList(service.badUse)}
                    &lt;/div&gt;
                &lt;/div&gt;

                &lt;div class=&quot;text-box&quot;&gt;
                    &lt;div class=&quot;block-title&quot;&gt;Top Integrations&lt;/div&gt;
                    &lt;p&gt;${service.integrations.join(&#39;, &#39;)}&lt;/p&gt;
                &lt;/div&gt;

                &lt;div class=&quot;text-box&quot;&gt;
                    &lt;div class=&quot;block-title&quot;&gt;Pros &amp; Cons&lt;/div&gt;
                    &lt;div class=&quot;grid-2&quot; style=&quot;margin-bottom:0;&quot;&gt;
                        &lt;div&gt;&lt;b&gt;Pros:&lt;/b&gt; ${makeList(service.pros)}&lt;/div&gt;
                        &lt;div&gt;&lt;b&gt;Cons:&lt;/b&gt; ${makeList(service.cons)}&lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;

                &lt;div class=&quot;text-box&quot;&gt;
                    &lt;div class=&quot;block-title&quot;&gt;Comparison with Alternatives&lt;/div&gt;
                    ${makeTable(service.compare)}
                &lt;/div&gt;
            &lt;/div&gt;

            &lt;div id=&quot;tab-prep&quot; class=&quot;tab-content&quot;&gt;
                &lt;div class=&quot;text-box&quot;&gt;
                    &lt;div class=&quot;block-title&quot;&gt;🔥 Common Interview Questions&lt;/div&gt;
                    ${makeQA(service.interview)}
                &lt;/div&gt;

                &lt;div class=&quot;text-box&quot;&gt;
                    &lt;div class=&quot;block-title&quot;&gt;🏗️ Real-World Architecture Patterns&lt;/div&gt;
                    ${makeList(service.patterns)}
                &lt;/div&gt;
            &lt;/div&gt;
        `;
    }

    function filterServices() {
        const term = document.getElementById(&#39;serviceSearch&#39;).value.toLowerCase();
        
        let filteredData = [];
        azureData.forEach(cat =&gt; {
            const matches = cat.services.filter(s =&gt; s.name.toLowerCase().includes(term));
            if(matches.length &gt; 0) {
                filteredData.push({ category: cat.category, services: matches });
            }
        });

        renderTree(filteredData);
    }
&lt;/script&gt;
</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/4085567259028697144'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/4085567259028697144'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/05/azure-services-quick-reference-charts.html' title='Azure Services Quick Reference Charts'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-616683022198699064</id><published>2026-05-15T09:16:53.198-07:00</published><updated>2026-05-20T10:58:22.040-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HTTP Status Code"/><title type='text'>HTTP Status Code Simulator</title><content type='html'>&lt;title&gt;HTTP Status Code Simulator &amp; Cheat Sheet | REST API Visual Tool - OTechy&lt;/title&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;http status code simulator, rest api testing tool, visual http status codes, http response headers lookup, web development diagnostic tools, 404 not found simulator, 200 ok json payload, list of http status codes rfc, developer api sandbox, api error code reference guide&quot;&gt;
&lt;meta name=&quot;description&quot; content=&quot;Simulate live REST API responses instantly. Check HTTP status codes (1xx to 5xx) with raw response headers, mock JSON payloads, and an interactive developer reference cheat sheet.&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;0,850;1,500&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

&lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css&quot;&gt;

&lt;div id=&quot;otechy-status-app&quot;&gt;
    &lt;style&gt;
        #otechy-status-app {
            --app-bg-card: #1e293b;
            --app-border: #334155;
            --app-text-pri: #f8fafc;
            --app-text-sec: #94a3b8;
            --app-1xx: #38bdf8;
            --app-2xx: #4ade80;
            --app-3xx: #fbbf24;
            --app-4xx: #f87171;
            --app-5xx: #c084fc;
            --app-mono: &#39;Courier New&#39;, Courier, monospace;
            
            max-width: 1000px;
            margin: 0 auto;
            font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif;
            color: var(--app-text-pri);
        }

        /* Interactive Grid Panels */
        #otechy-status-app .grid-layout {
            display: grid;
            grid-template-columns: 1fr;
            gap: 1.5rem;
            margin-bottom: 2.5rem;
        }

        @media(min-width: 768px) {
            #otechy-status-app .grid-layout {
                grid-template-columns: 1fr 1fr;
            }
        }

        #otechy-status-app .card {
            background: var(--app-bg-card);
            border: 1px solid var(--app-border);
            border-radius: 12px;
            padding: 1.5rem;
        }

        #otechy-status-app .card-title {
            font-size: 1.1rem;
            font-weight: 600;
            margin-bottom: 1rem;
            display: flex;
            align-items: center;
            gap: 0.5rem;
            color: var(--app-text-pri);
        }

        #otechy-status-app .form-group {
            margin-bottom: 1.25rem;
        }

        #otechy-status-app label {
            display: block;
            font-size: 0.85rem;
            color: var(--app-text-sec);
            margin-bottom: 0.5rem;
            font-weight: 500;
        }

        #otechy-status-app select {
            width: 100%;
            background: #0f172a;
            border: 1px solid var(--app-border);
            color: var(--app-text-pri);
            padding: 0.75rem;
            border-radius: 6px;
            font-size: 1rem;
            outline: none;
        }

        /* Code Terminal Outputs */
        #otechy-status-app .terminal {
            background: #020617;
            border-radius: 8px;
            padding: 1rem;
            font-family: var(--app-mono);
            font-size: 0.9rem;
            border: 1px solid var(--app-border);
            min-height: 220px;
        }

        #otechy-status-app .terminal-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            border-bottom: 1px solid #1e293b;
            padding-bottom: 0.5rem;
            margin-bottom: 0.75rem;
        }

        #otechy-status-app .terminal-dots {
            display: flex;
            gap: 0.35rem;
        }

        #otechy-status-app .dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
        #otechy-status-app .dot-r { background: #ef4444; }
        #otechy-status-app .dot-y { background: #eab308; }
        #otechy-status-app .dot-g { background: #22c55e; }

        #otechy-status-app .copy-btn {
            background: transparent;
            border: none;
            color: var(--app-text-sec);
            cursor: pointer;
            font-size: 0.85rem;
            display: flex;
            align-items: center;
            gap: 0.25rem;
        }

        #otechy-status-app .terminal-body {
            white-space: pre-wrap;
            word-break: break-all;
        }

        #otechy-status-app .status-display-badge {
            display: inline-block;
            padding: 0.5rem 1rem;
            border-radius: 6px;
            font-weight: 700;
            font-size: 1.25rem;
            margin-top: 0.5rem;
            font-family: var(--app-mono);
        }

        /* DYNAMIC GRID SEARCH CONTAINER - Explicit track definitions to fix tracking overlap bugs entirely */
        #otechy-status-app .search-container {
            background: var(--app-bg-card);
            border: 1px solid var(--app-border);
            border-radius: 12px;
            padding: 1.25rem;
            margin-bottom: 1.5rem;
            display: grid;
            grid-template-columns: 1fr;
            gap: 1rem;
        }

        @media(min-width: 900px) {
            #otechy-status-app .search-container {
                grid-template-columns: 1fr auto;
                align-items: center;
                gap: 1.5rem;
            }
        }

        #otechy-status-app .search-wrapper {
            position: relative;
            width: 100%;
        }

        #otechy-status-app .search-wrapper i {
            position: absolute;
            left: 0.75rem;
            top: 50%;
            transform: translateY(-50%);
            color: var(--app-text-sec);
        }

        #otechy-status-app .search-input {
            width: 100%;
            background: #0f172a;
            border: 1px solid var(--app-border);
            color: var(--app-text-pri);
            padding: 0.75rem 0.75rem 0.75rem 2.2rem;
            border-radius: 6px;
            font-size: 0.95rem;
            outline: none;
            display: block;
        }

        #otechy-status-app .filter-buttons {
            display: flex;
            gap: 0.4rem;
            flex-wrap: wrap;
        }

        #otechy-status-app .filter-btn {
            background: #0f172a;
            border: 1px solid var(--app-border);
            color: var(--app-text-sec);
            padding: 0.5rem 0.75rem;
            border-radius: 6px;
            font-size: 0.85rem;
            font-weight: 500;
            cursor: pointer;
            white-space: nowrap;
        }

        #otechy-status-app .filter-btn.active[data-cat=&quot;all&quot;] { border-color: var(--app-text-pri); color: #fff; background: var(--app-border); }
        #otechy-status-app .filter-btn.active[data-cat=&quot;1xx&quot;] { border-color: var(--app-1xx); color: var(--app-1xx); background: rgba(56,189,248,0.1); }
        #otechy-status-app .filter-btn.active[data-cat=&quot;2xx&quot;] { border-color: var(--app-2xx); color: var(--app-2xx); background: rgba(74,222,128,0.1); }
        #otechy-status-app .filter-btn.active[data-cat=&quot;3xx&quot;] { border-color: var(--app-3xx); color: var(--app-3xx); background: rgba(251,191,36,0.1); }
        #otechy-status-app .filter-btn.active[data-cat=&quot;4xx&quot;] { border-color: var(--app-4xx); color: var(--app-4xx); background: rgba(248,113,113,0.1); }
        #otechy-status-app .filter-btn.active[data-cat=&quot;5xx&quot;] { border-color: var(--app-5xx); color: var(--app-5xx); background: rgba(192,132,252,0.1); }

        /* Listing Rows Section Layout */
        #otechy-status-app .codes-grid {
            display: grid;
            grid-template-columns: 1fr;
            gap: 0.75rem;
        }

        #otechy-status-app .code-row {
            background: var(--app-bg-card);
            border: 1px solid var(--app-border);
            border-radius: 8px;
            padding: 1rem;
            display: flex;
            flex-direction: column;
            gap: 0.5rem;
            cursor: pointer;
            transition: border-color 0.15s;
        }

        #otechy-status-app .code-row:hover {
            border-color: var(--app-text-sec);
        }

        @media(min-width: 600px) {
            #otechy-status-app .code-row {
                flex-direction: row;
                align-items: center;
                gap: 1.5rem;
            }
        }

        #otechy-status-app .row-badge {
            font-family: var(--app-mono);
            font-weight: 700;
            font-size: 1.15rem;
            min-width: 65px;
        }

        #otechy-status-app .row-info { flex: 1; }

        /* Crisp high contrast text title layout targeting list rows */
        #otechy-status-app .row-title {
            color: var(--app-text-pri) !important;
            font-weight: 600;
            font-size: 1rem;
            margin-bottom: 0.25rem;
            display: flex;
            align-items: center;
            gap: 0.5rem;
        }

        #otechy-status-app .row-desc {
            color: var(--app-text-sec);
            font-size: 0.85rem;
        }

        #otechy-status-app .t-blue, #otechy-status-app .cat-1xx-text { color: var(--app-1xx); }
        #otechy-status-app .t-green, #otechy-status-app .cat-2xx-text { color: var(--app-2xx); }
        #otechy-status-app .t-yellow, #otechy-status-app .cat-3xx-text { color: var(--app-3xx); }
        #otechy-status-app .t-red, #otechy-status-app .cat-4xx-text { color: var(--app-4xx); }
        #otechy-status-app .t-purple, #otechy-status-app .cat-5xx-text { color: var(--app-5xx); }
        #otechy-status-app .t-gray { color: var(--app-text-sec); }

        #otechy-status-app .no-results {
            text-align: center;
            padding: 2rem;
            color: var(--app-text-sec);
            display: none;
        }
      
      :root { --primary: #3b82f6; --text-dark: #1e293b; --accent: #64748b; --white: #fff; --border: #e2e8f0; --safe-green: #dcfce7; --safe-text: #166534; }
      .otechy-tool-wrapper { font-family: &#39;Poppins&#39;, sans-serif; max-width: 1000px; margin: 0 auto; padding: 40px 20px; color: var(--text-dark); }
      .otechy-badge { display: table; margin: 0 auto 10px; background: #eff6ff; color: var(--primary); padding: 6px 16px; border-radius: 50px; font-size: 11px; font-weight: 800; text-transform: uppercase; border: 1px solid #dbeafe; }
      .tool-header { text-align: center; margin-bottom: 30px; }
      .tool-header h1 { font-size: 36px; font-weight: 850; color: var(--primary); }

      /* Ad Slots */
      .otechy-ad { text-align: center; background: #f1f5f9; color: #cbd5e1; font-size: 10px; font-weight: 700; text-transform: uppercase; padding: 20px; margin: 20px 0; border: 1px dashed var(--border); }

      /* Simulator Styles */
      #otechy-status-app { --app-bg-card: #1e293b; --app-border: #334155; --app-text-pri: #f8fafc; --app-text-sec: #94a3b8; --app-mono: &#39;Courier New&#39;, Courier, monospace; }
      .card { background: var(--app-bg-card); border: 1px solid var(--app-border); border-radius: 12px; padding: 20px; color: var(--app-text-pri); }
      .terminal { background: #020617; border-radius: 8px; padding: 15px; font-family: var(--app-mono); color: #f8fafc; min-height: 200px; overflow-x: auto; }
      .code-row { border: 1px solid #334155; padding: 12px; margin-bottom: 8px; border-radius: 6px; display: flex; align-items: center; gap: 15px; cursor: pointer; }
      .code-row:hover { border-color: var(--primary); }

      /* Trust Shield &amp; FAQ */
      .security-shield { background: var(--safe-green); border: 1px solid #bbf7d0; border-radius: 12px; padding: 20px; display: flex; align-items: center; gap: 15px; color: var(--safe-text); margin-top: 40px; }
      .faq-section { margin-top: 60px; }
      .faq-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 20px; }
      .faq-card { padding: 20px; border: 1px solid var(--border); border-radius: 10px; }
      &lt;/style&gt;
  
&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;
    &lt;div class=&quot;otechy-badge&quot;&gt;Developer Productivity Suite&lt;/div&gt;
    &lt;div class=&quot;tool-header&quot;&gt;&lt;h1&gt;HTTP Status Code Simulator&lt;/h1&gt;&lt;/div&gt;
    
    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 20px; height: 90px;&quot;&gt;&lt;/div&gt;

  
    &lt;div class=&quot;grid-layout&quot;&gt;
        &lt;div class=&quot;card&quot;&gt;
            &lt;div class=&quot;card-title&quot;&gt;
                &lt;i class=&quot;fa-solid fa-sliders t-blue&quot;&gt;&lt;/i&gt; Configure Target State
            &lt;/div&gt;
            &lt;div class=&quot;form-group&quot;&gt;
                &lt;label for=&quot;categorySelect&quot;&gt;Status Group Category&lt;/label&gt;
                &lt;select id=&quot;categorySelect&quot;&gt;
                    &lt;option value=&quot;1xx&quot;&gt;1xx - Informational Protocols&lt;/option&gt;
                    &lt;option value=&quot;2xx&quot; selected&gt;2xx - Success Conditions&lt;/option&gt;
                    &lt;option value=&quot;3xx&quot;&gt;3xx - Redirection Vectors&lt;/option&gt;
                    &lt;option value=&quot;4xx&quot;&gt;4xx - Client Configuration Anomalies&lt;/option&gt;
                    &lt;option value=&quot;5xx&quot;&gt;5xx - Server Execution Faults&lt;/option&gt;
                &lt;/select&gt;
            &lt;/div&gt;
            &lt;div class=&quot;form-group&quot;&gt;
                &lt;label for=&quot;codeSelect&quot;&gt;Target HTTP Status Code&lt;/label&gt;
                &lt;select id=&quot;codeSelect&quot;&gt;&lt;/select&gt;
            &lt;/div&gt;
            &lt;div class=&quot;form-group&quot;&gt;
                &lt;label&gt;Evaluated State Result&lt;/label&gt;
                &lt;div id=&quot;statusBadge&quot; class=&quot;status-display-badge&quot;&gt;200 OK&lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;card&quot;&gt;
            &lt;div class=&quot;card-title&quot;&gt;
                &lt;i class=&quot;fa-solid fa-terminal t-green&quot;&gt;&lt;/i&gt; Live Payload Simulation
            &lt;/div&gt;
            &lt;div class=&quot;terminal&quot;&gt;
                &lt;div class=&quot;terminal-header&quot;&gt;
                    &lt;div class=&quot;terminal-dots&quot;&gt;
                        &lt;span class=&quot;dot dot-r&quot;&gt;&lt;/span&gt;
                        &lt;span class=&quot;dot dot-y&quot;&gt;&lt;/span&gt;
                        &lt;span class=&quot;dot dot-g&quot;&gt;&lt;/span&gt;
                    &lt;/div&gt;
                    &lt;button class=&quot;copy-btn&quot; id=&quot;copyRawBtn&quot;&gt;
                        &lt;i class=&quot;fa-regular fa-copy&quot;&gt;&lt;/i&gt; Copy Raw
                    &lt;/button&gt;
                &lt;/div&gt;
                &lt;div class=&quot;terminal-body&quot; id=&quot;terminalOutput&quot;&gt;&lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
  
   &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 30px 0; height: 250px;&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;search-container&quot;&gt;
        &lt;div class=&quot;search-wrapper&quot;&gt;
            &lt;i class=&quot;fa-solid fa-magnifying-glass&quot;&gt;&lt;/i&gt;
            &lt;input type=&quot;text&quot; id=&quot;searchBar&quot; class=&quot;search-input&quot; placeholder=&quot;Search codes by numerical value, meaning...&quot;&gt;
        &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class=&quot;codes-grid&quot; id=&quot;codesGrid&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;no-results&quot; id=&quot;noResults&quot;&gt;No records match your parameter configurations.&lt;/div&gt;
  
  &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 30px; height: 90px;&quot;&gt;&lt;/div&gt;

    &lt;script&gt;
        (function() {
            const httpDataset = {
                &quot;1xx&quot;: [
                    { code: 100, phrase: &quot;Continue&quot;, desc: &quot;The server received request headers and the client should proceed to send the execution message body payload.&quot; },
                    { code: 101, phrase: &quot;Switching Protocols&quot;, desc: &quot;The requester asked the engine to switch transmission layers. Server is accepting compliance transitions immediately.&quot; },
                    { code: 102, phrase: &quot;Processing&quot;, desc: &quot;WebDAV spec. Indicates full request context was ingested but processing loops are ongoing.&quot; },
                    { code: 103, phrase: &quot;Early Hints&quot;, desc: &quot;Allows return links to resource elements ahead of full pipeline content processing cycles to maximize delivery speed.&quot; }
                ],
                &quot;2xx&quot;: [
                    { code: 200, phrase: &quot;OK&quot;, desc: &quot;Standard complete success operation pipeline response. Payload returns exact matching transaction results.&quot; },
                    { code: 201, phrase: &quot;Created&quot;, desc: &quot;Request succeeded and led to a newly initialized backend entity block storage asset entry.&quot; },
                    { code: 202, phrase: &quot;Accepted&quot;, desc: &quot;Request queued for batch execution. Asynchronous completion is pending without active pipeline blocks.&quot; },
                    { code: 203, phrase: &quot;Non-Authoritative Information&quot;, desc: &quot;Proxy system payload intercept transformation. Content modification performed away from origin system metrics.&quot; },
                    { code: 204, phrase: &quot;No Content&quot;, desc: &quot;Successfully processed the request, and returning zero structural text payload content payload blocks.&quot; },
                    { code: 205, phrase: &quot;Reset Content&quot;, desc: &quot;Instructs client execution agents to visually reset the view form configuration layout state.&quot; },
                    { code: 206, phrase: &quot;Partial Content&quot;, desc: &quot;Delivering targeted byte-range stream pieces requested directly by split-download acceleration tooling systems.&quot; },
                    { code: 226, phrase: &quot;IM Used&quot;, desc: &quot;Delta-encoding manipulation state tracking framework execution completion parameters.&quot; }
                ],
                &quot;3xx&quot;: [
                    { code: 300, phrase: &quot;Multiple Choices&quot;, desc: &quot;Indicates multiple routing target vectors exist for the requested resource schema layout setup.&quot; },
                    { code: 301, phrase: &quot;Moved Permanently&quot;, desc: &quot;The target endpoint resource assigned a strict absolute URI routing shift vector pathway forever.&quot; },
                    { code: 302, phrase: &quot;Found&quot;, desc: &quot;Temporary absolute routing redirect pointer adjustment metrics. Future queries retain current path schema pointers.&quot; },
                    { code: 303, phrase: &quot;See Other&quot;, desc: &quot;Redirects traffic via clean idempotent client GET requests targeting alternative target addresses tracking.&quot; },
                    { code: 304, phrase: &quot;Not Modified&quot;, desc: &quot;Optimized cache layer token condition. Resource state unchanged since specified conditional epoch time signatures.&quot; },
                    { code: 307, phrase: &quot;Temporary Redirect&quot;, desc: &quot;Reroutes traffic dynamically while mandating preservation of the request HTTP verbs without mutations.&quot; },
                    { code: 308, phrase: &quot;Permanent Redirect&quot;, desc: &quot;Modern persistent directory re-indexing pointer. Forces preservation of original method verbs across hops.&quot; }
                ],
                &quot;4xx&quot;: [
                    { code: 400, phrase: &quot;Bad Request&quot;, desc: &quot;The engine cannot process payloads due to corrupted formatting architecture syntax parameters.&quot; },
                    { code: 401, phrase: &quot;Unauthorized&quot;, desc: &quot;Client lacks valid access validation challenge tokens or cryptographic key authentication claims.&quot; },
                    { code: 402, phrase: &quot;Payment Required&quot;, desc: &quot;Reserved framework parameters intended for digital micropayment billing gating mechanics.&quot; },
                    { code: 403, phrase: &quot;Forbidden&quot;, desc: &quot;Client identity validated successfully, but systemic access permissions policy explicitly denies system execution routes.&quot; },
                    { code: 404, phrase: &quot;Not Found&quot;, desc: &quot;The requested route address lookup returned null mappings on active indexing structures.&quot; },
                    { code: 405, phrase: &quot;Method Not Allowed&quot;, desc: &quot;The request execution verb (e.g., POST) is blocked on the targeted API route map setup.&quot; },
                    { code: 406, phrase: &quot;Not Acceptable&quot;, desc: &quot;Target application lacks structural capability to render characters inside client Accept Header parameters.&quot; },
                    { code: 407, phrase: &quot;Proxy Authentication Required&quot;, desc: &quot;Traffic processing demands authentication with local gateway routing proxy modules beforehand.&quot; },
                    { code: 408, phrase: &quot;Request Timeout&quot;, desc: &quot;The connection window dropped prior to complete transmission ingestion execution completions.&quot; },
                    { code: 409, phrase: &quot;Conflict&quot;, desc: &quot;The transaction edit collides with existing backend entity structural versions or concurrency states.&quot; },
                    { code: 410, phrase: &quot;Gone&quot;, desc: &quot;Permanent purge scenario index. Asset index dropped intentionally and will not return.&quot; },
                    { code: 411, phrase: &quot;Length Required&quot;, desc: &quot;Request rejected because Content-Length header mapping properties were missing.&quot; },
                    { code: 412, phrase: &quot;Precondition Failed&quot;, desc: &quot;Evaluating conditional request target headers returned strict falsy state flags during parsing cycles.&quot; },
                    { code: 413, phrase: &quot;Payload Too Large&quot;, desc: &quot;Transmission limits exceeded. Incoming request package size exceeds system bounds.&quot; },
                    { code: 414, phrase: &quot;URI Too Long&quot;, desc: &quot;Incoming routing string parameter length exceeds maximum allowable web server buffer parameters.&quot; },
                    { code: 415, phrase: &quot;Unsupported Media Type&quot;, desc: &quot;Bypassed due to unexpected payload serialization configurations (e.g., XML instead of JSON).&quot; },
                    { code: 429, phrase: &quot;Too Many Requests&quot;, desc: &quot;Rate limiter tripped. Client exceeded allocation limits during a specified time block window.&quot; },
                    { code: 451, phrase: &quot;Unavailable For Legal Reasons&quot;, desc: &quot;Access explicitly restricted by legal decrees, censorship guidelines, or judicial mandates.&quot; }
                ],
                &quot;5xx&quot;: [
                    { code: 500, phrase: &quot;Internal Server Error&quot;, desc: &quot;Generic crash flag thrown when untracked unhandled backend exceptions occur.&quot; },
                    { code: 501, phrase: &quot;Not Implemented&quot;, desc: &quot;Server lacks engineering capabilities or endpoint route mapping logic blocks to fulfill processing actions.&quot; },
                    { code: 502, phrase: &quot;Bad Gateway&quot;, desc: &quot;Proxy edge node received invalid or broken upstream responses from underlying node environments.&quot; },
                    { code: 503, phrase: &quot;Service Unavailable&quot;, desc: &quot;Temporary state describing backend connection queues dropping under severe traffic strains or system maintenance windows.&quot; },
                    { code: 504, phrase: &quot;Gateway Timeout&quot;, desc: &quot;The edge layer dropped connection channels waiting on target app database computation bounds.&quot; },
                    { code: 505, phrase: &quot;HTTP Version Not Supported&quot;, desc: &quot;The platform does not support the specific version string protocol requested in the transmission frame.&quot; }
                ]
            };

            const root = document.getElementById(&#39;otechy-status-app&#39;);
            const categorySelect = root.querySelector(&#39;#categorySelect&#39;);
            const codeSelect = root.querySelector(&#39;#codeSelect&#39;);
            const statusBadge = root.querySelector(&#39;#statusBadge&#39;);
            const terminalOutput = root.querySelector(&#39;#terminalOutput&#39;);
            const searchBar = root.querySelector(&#39;#searchBar&#39;);
            const codesGrid = root.querySelector(&#39;#codesGrid&#39;);
            const noResults = root.querySelector(&#39;#noResults&#39;);
            const copyRawBtn = root.querySelector(&#39;#copyRawBtn&#39;);
            const filterButtons = root.querySelectorAll(&#39;.filter-btn&#39;);

            function getCategoryHex(code) {
                const f = String(code).charAt(0);
                if(f === &#39;1&#39;) return &#39;#38bdf8&#39;;
                if(f === &#39;2&#39;) return &#39;#4ade80&#39;;
                if(f === &#39;3&#39;) return &#39;#fbbf24&#39;;
                if(f === &#39;4&#39;) return &#39;#f87171&#39;;
                return &#39;#c084fc&#39;;
            }

            function populateDropdown(catKey) {
                codeSelect.innerHTML = &#39;&#39;;
                (httpDataset[catKey] || []).forEach(item =&gt; {
                    const opt = document.createElement(&#39;option&#39;);
                    opt.value = item.code;
                    opt.textContent = `${item.code} - ${item.phrase}`;
                    codeSelect.appendChild(opt);
                });
                updateView();
            }

            function updateView() {
                const targetCode = parseInt(codeSelect.value);
                if (!targetCode) return;

                let found = null, matchedCat = &quot;2xx&quot;;
                for (const cat in httpDataset) {
                    const match = httpDataset[cat].find(x =&gt; x.code === targetCode);
                    if(match) { found = match; matchedCat = cat; break; }
                }
                if(!found) return;

                const hex = getCategoryHex(targetCode);
                statusBadge.textContent = `${found.code} ${found.phrase}`;
                statusBadge.style.backgroundColor = `rgba(${parseInt(hex.slice(1,3),16)}, ${parseInt(hex.slice(3,5),16)}, ${parseInt(hex.slice(5,7),16)}, 0.15)`;
                statusBadge.style.color = hex;
                statusBadge.style.border = `1px solid ${hex}`;

                const jsonBody = JSON.stringify({ status: found.code, message: found.phrase, description: found.desc, timestamp: Date.now(), success: targetCode &lt; 400 }, null, 2);
                let tokenClass = &#39;t-green&#39;;
                if (matchedCat === &#39;1xx&#39;) tokenClass = &#39;t-blue&#39;;
                if (matchedCat === &#39;3xx&#39;) tokenClass = &#39;t-yellow&#39;;
                if (matchedCat === &#39;4xx&#39;) tokenClass = &#39;t-red&#39;;
                if (matchedCat === &#39;5xx&#39;) tokenClass = &#39;t-purple&#39;;

                terminalOutput.innerHTML = `&lt;span class=&quot;t-blue&quot;&gt;HTTP/1.1&lt;/span&gt; &lt;span class=&quot;${tokenClass}&quot;&gt;${found.code} ${found.phrase}&lt;/span&gt;\n&lt;span class=&quot;t-gray&quot;&gt;Date:&lt;/span&gt; ${new Date().toUTCString()}\n&lt;span class=&quot;t-gray&quot;&gt;Server:&lt;/span&gt; OTechySmartEngine\n&lt;span class=&quot;t-gray&quot;&gt;Content-Type:&lt;/span&gt; application/json\n\n&lt;span class=&quot;t-yellow&quot;&gt;${jsonBody}&lt;/span&gt;`;
            }

            function renderGrid() {
                codesGrid.innerHTML = &#39;&#39;;
                for (const cat in httpDataset) {
                    httpDataset[cat].forEach(item =&gt; {
                        const row = document.createElement(&#39;div&#39;);
                        row.className = &#39;code-row&#39;;
                        row.setAttribute(&#39;data-code&#39;, item.code);
                        row.setAttribute(&#39;data-category&#39;, cat);
                        row.setAttribute(&#39;data-searchable&#39;, `${item.code} ${item.phrase.toLowerCase()} ${item.desc.toLowerCase()}`);
                        row.innerHTML = `&lt;div class=&quot;row-badge cat-${cat}-text&quot;&gt;${item.code}&lt;/div&gt;&lt;div class=&quot;row-info&quot;&gt;&lt;div class=&quot;row-title&quot;&gt;${item.phrase} &lt;span class=&quot;t-gray&quot; style=&quot;font-size:0.75rem; font-weight:normal;&quot;&gt;(${cat.toUpperCase()})&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;row-desc&quot;&gt;${item.desc}&lt;/div&gt;&lt;/div&gt;`;
                        row.addEventListener(&#39;click&#39;, () =&gt; {
                            categorySelect.value = cat;
                            populateDropdown(cat);
                            codeSelect.value = item.code;
                            updateView();
                            root.scrollIntoView({ behavior: &#39;smooth&#39;, block: &#39;start&#39; });
                        });
                        codesGrid.appendChild(row);
                    });
                }
            }

            function filter() {
                const txt = searchBar.value.toLowerCase().trim();
                const activeBtn = root.querySelector(&#39;.filter-btn.active&#39;);
                const activeCat = activeBtn ? activeBtn.getAttribute(&#39;data-cat&#39;) : &#39;all&#39;;
                let count = 0;

                root.querySelectorAll(&#39;.code-row&#39;).forEach(row =&gt; {
                    const matchSrc = row.getAttribute(&#39;data-searchable&#39;);
                    const cat = row.getAttribute(&#39;data-category&#39;);
                    if ((txt === &#39;&#39; || matchSrc.includes(txt)) &amp;&amp; (activeCat === &#39;all&#39; || cat === activeCat)) {
                        row.style.display = &#39;flex&#39;; count++;
                    } else {
                        row.style.display = &#39;none&#39;;
                    }
                });
                noResults.style.display = count === 0 ? &#39;block&#39; : &#39;none&#39;;
            }

            copyRawBtn.addEventListener(&#39;click&#39;, () =&gt; {
                navigator.clipboard.writeText(terminalOutput.innerText).then(() =&gt; {
                    const orig = copyRawBtn.innerHTML;
                    copyRawBtn.innerHTML = `&lt;i class=&quot;fa-solid fa-check&quot; style=&quot;color:var(--app-2xx)&quot;&gt;&lt;/i&gt; Copied!`;
                    setTimeout(() =&gt; copyRawBtn.innerHTML = orig, 1500);
                });
            });

            categorySelect.addEventListener(&#39;change&#39;, (e) =&gt; populateDropdown(e.target.value));
            codeSelect.addEventListener(&#39;change&#39;, updateView);
            searchBar.addEventListener(&#39;input&#39;, filter);
            filterButtons.forEach(b =&gt; b.addEventListener(&#39;click&#39;, () =&gt; { filterButtons.forEach(x =&gt; x.classList.remove(&#39;active&#39;)); b.classList.add(&#39;active&#39;); filter(); }));

            populateDropdown(&#39;2xx&#39;);
            renderGrid();
        })();
    &lt;/script&gt;
&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/616683022198699064'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/616683022198699064'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/05/http-status-code-simulator.html' title='HTTP Status Code Simulator'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-5487723358189059572</id><published>2026-04-05T10:34:00.000-07:00</published><updated>2026-04-05T10:39:03.397-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Gratuity"/><title type='text'>Premium Gratuity Calculator</title><content type='html'>&lt;title&gt;Premium Gratuity Calculator: Private, Govt &amp; 2026 Labor Code Auditor | OTechy&lt;/title&gt;
&lt;meta name=&quot;title&quot; content=&quot;Premium Gratuity Calculator: Private, Govt &amp; 2026 Labor Code Auditor | OTechy&quot;&gt;
&lt;meta name=&quot;description&quot; content=&quot;Audit your gratuity settlement instantly with OTechy. Features 2026 rules: 1-year rule for contractors, 50% wage audit, and latest tax-free limits for private &amp; govt staff.&quot;&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;gratuity calculator India 2026, contractor gratuity rule, 1 year gratuity rule, gratuity tax free limit 20L, government gratuity calculator, OTechy finance tools&quot;&gt;

&lt;meta property=&quot;og:type&quot; content=&quot;website&quot;&gt;
&lt;meta property=&quot;og:url&quot; content=&quot;https://www.otechy.com/2026/01/premium-gratuity-calculator.html&quot;&gt;
&lt;meta property=&quot;og:title&quot; content=&quot;Premium Gratuity Calculator: Private, Govt &amp; 2026 Labor Code Auditor | OTechy&quot;&gt;
&lt;meta property=&quot;og:description&quot; content=&quot;Audit your gratuity settlement instantly with OTechy. Features 2026 rules: 1-year rule for contractors, 50% wage audit, and latest tax-free limits for private &amp; govt staff.&quot;&gt;

&lt;meta property=&quot;twitter:card&quot; content=&quot;summary_large_image&quot;&gt;
&lt;meta property=&quot;twitter:url&quot; content=&quot;https://www.otechy.com/2026/01/premium-gratuity-calculator.html&quot;&gt;
&lt;meta property=&quot;twitter:title&quot; content=&quot;Premium Gratuity Calculator: Private, Govt &amp; 2026 Labor Code Auditor | OTechy&quot;&gt;
&lt;meta property=&quot;twitter:description&quot; content=&quot;Audit your gratuity settlement instantly with OTechy. Features 2026 rules: 1-year rule for contractors, 50% wage audit, and latest tax-free limits for private &amp; govt staff.&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700;850&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.25/jspdf.plugin.autotable.min.js&quot;&gt;&lt;/script&gt;

&lt;style&gt;
    :root { --primary: #3b82f6; --text-dark: #1e293b; --text-light: #64748b; --card-radius: 16px; --success: #10b981; }
    
    * { box-sizing: border-box; }
    .otechy-tool-wrapper { font-family: &#39;Poppins&#39;, sans-serif; max-width: 900px; margin: 0 auto; color: var(--text-dark); line-height: 1.6; padding: 80px 20px 20px; }
    
    /* Header Styling */
    .tool-header { text-align: center; margin-bottom: 30px; }
    .otechy-badge { display: inline-block; background: #eff6ff; color: var(--primary); padding: 6px 18px; border-radius: 50px; font-size: 11px; font-weight: 800; text-transform: uppercase; margin-bottom: 12px; border: 1px solid #dbeafe; }
    .tool-header h1 { font-size: clamp(22px, 5vw, 28px); color: var(--primary); font-weight: 850; margin: 0; }
    .quick-value { color: var(--text-light); font-weight: 500; font-size: 14px; margin-top: 8px; }
    
    /* Ads Styling */
    .otechy-ad-top, .otechy-ad-middle, .otechy-ad-bottom { display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; background: #f1f5f9; border-radius: 10px; border: 1px dashed #cbd5e1; width: 100%; height: 90px; }

    /* Input Card */
    .otechy-card { background: #ffffff; padding: 25px; border-radius: var(--card-radius); border: 1px solid #000; box-shadow: 0 4px 12px rgba(0,0,0,0.05); }
    .input-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; align-items: end; }
    .input-group label { display: block; font-weight: 700; font-size: 11px; text-transform: uppercase; color: var(--text-light); margin-bottom: 8px; letter-spacing: 0.5px; }
    
    .input-with-icon { position: relative; display: flex; align-items: center; }
    .rupee-icon { position: absolute; left: 12px; width: 14px; height: 14px; color: var(--text-dark); pointer-events: none; }
    .input-group input, .input-group select { width: 100%; padding: 12px; border: 2px solid #cbd5e1; border-radius: 10px; font-size: 14px; font-family: &#39;Poppins&#39;; outline: none; transition: 0.2s; }
    .input-with-icon input { padding-left: 35px !important; }
    .input-group input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); }

    /* Buttons */
    .btn-container { display: flex; gap: 10px; margin-top: 20px; }
    .otechy-btn { flex: 1; background: var(--primary); color: white; border: none; padding: 14px; border-radius: 10px; font-size: 14px; font-weight: 700; cursor: pointer; transition: 0.3s; }
    .otechy-btn:hover { background: #2563eb; transform: translateY(-1px); }
    .otechy-btn.secondary { background: #64748b; }

    /* Results Area */
    .result-container { display: none; padding: 25px; background: #f8fbff; border-radius: 12px; border: 1px solid #e2e8f0; border-left: 6px solid var(--primary); margin-top: 30px; }
    .stats-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 20px 0; }
    .stat-item { background: white; padding: 15px 5px; border-radius: 12px; border: 1px solid #e2e8f0; text-align: center; }
    .stat-item span.val-txt { font-weight: 850; color: var(--primary); font-size: 16px; display: flex; align-items: center; justify-content: center; gap: 4px; }
    .stat-item p { font-size: 9px; color: var(--text-light); text-transform: uppercase; margin-top: 4px; font-weight: 700; }

    /* Policy Grid */
    .fruitful-box { background: white; border-radius: 12px; border: 1px solid #e2e8f0; padding: 15px; margin: 20px 0; }
    .sub-title-logic { font-size: 11px; font-weight: 800; color: var(--text-light); margin-bottom: 15px; letter-spacing: 0.5px; text-transform: uppercase; }
    .fruitful-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
    .fruit-card { padding: 10px; border-radius: 8px; background: #f8fafc; border-left: 3px solid #cbd5e1; }
    .fruit-card.active { border-left-color: var(--success); background: #f0fdf4; }
    .fruit-card p { font-size: 9px; font-weight: 700; color: var(--text-light); margin: 0; }
    .fruit-card span { font-size: 11px; font-weight: 600; display: flex; align-items: center; gap: 4px; margin-top: 2px; }

    /* FAQ */
    .faq-section { margin-top: 40px; }
    .faq-card { margin-bottom: 12px; padding: 18px; background: #ffffff; border: 1px solid #e2e8f0; border-radius: 12px; }
    .faq-card strong { display: block; color: var(--text-dark); margin-bottom: 5px; font-size: 14px; font-weight: 700; }
    .faq-card p { margin: 0; color: var(--text-light); font-size: 13px; line-height: 1.5; }

    .icon-svg { width: 14px; height: 14px; vertical-align: middle; }
    .icon-success { color: var(--success); }
    .icon-fail { color: #ef4444; }

    @media (max-width: 768px) {
        .input-grid, .stats-grid, .fruitful-grid { grid-template-columns: 1fr; }
        .btn-container { flex-direction: column; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;
    &lt;div class=&quot;tool-header&quot;&gt;
        &lt;div class=&quot;otechy-badge&quot;&gt;Gratuity Toolkit&lt;/div&gt;
        &lt;h1&gt;Premium Gratuity Auditor &lt;span class=&quot;dynamic-year&quot;&gt;&lt;/span&gt;&lt;/h1&gt;
        &lt;p class=&quot;quick-value&quot;&gt;Audit your statutory settlement against Payment of Gratuity Act and India Tax limits.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 20px;&quot;&gt;AD SLOT TOP&lt;/div&gt;

    &lt;div class=&quot;otechy-card&quot;&gt;
        &lt;div class=&quot;input-grid&quot;&gt;
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Monthly Basic + DA&lt;/label&gt;
                &lt;div class=&quot;input-with-icon&quot;&gt;
                    &lt;svg class=&quot;rupee-icon&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;path d=&quot;M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6&quot;/&gt;&lt;/svg&gt;
                    &lt;input type=&quot;text&quot; id=&quot;salary&quot; placeholder=&quot;50,000&quot; oninput=&quot;formatInput(this)&quot;&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Total Monthly CTC&lt;/label&gt;
                &lt;div class=&quot;input-with-icon&quot;&gt;
                    &lt;svg class=&quot;rupee-icon&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;path d=&quot;M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6&quot;/&gt;&lt;/svg&gt;
                    &lt;input type=&quot;text&quot; id=&quot;ctc&quot; placeholder=&quot;1,00,000&quot; oninput=&quot;formatInput(this)&quot;&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Completed Years&lt;/label&gt;
                &lt;input type=&quot;number&quot; id=&quot;years&quot; placeholder=&quot;0&quot;&gt;
            &lt;/div&gt;
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Months (Current Yr)&lt;/label&gt;
                &lt;input type=&quot;number&quot; id=&quot;months&quot; placeholder=&quot;0&quot; max=&quot;11&quot;&gt;
            &lt;/div&gt;
            &lt;div class=&quot;input-group&quot; style=&quot;grid-column: 1 / -1;&quot;&gt;
                &lt;label&gt;Employment Category&lt;/label&gt;
                &lt;select id=&quot;type&quot; onchange=&quot;calculateGratuity()&quot;&gt;
                    &lt;option value=&quot;covered&quot;&gt;Private (Covered under Act)&lt;/option&gt;
                    &lt;option value=&quot;govt&quot;&gt;Central / State Govt Staff&lt;/option&gt;
                    &lt;option value=&quot;fixed&quot;&gt;Fixed-Term / Contract (1yr Rule)&lt;/option&gt;
                    &lt;option value=&quot;notcovered&quot;&gt;Establishment Not Covered&lt;/option&gt;
                &lt;/select&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;btn-container&quot;&gt;
            &lt;button class=&quot;otechy-btn&quot; onclick=&quot;calculateGratuity()&quot;&gt;Audit My Settlement&lt;/button&gt;
            &lt;button class=&quot;otechy-btn secondary&quot; id=&quot;pdf-btn&quot; style=&quot;display:none;&quot; onclick=&quot;downloadPDF()&quot;&gt;Export Audit Report&lt;/button&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div id=&quot;result-box&quot; class=&quot;result-container&quot;&gt;
        &lt;div class=&quot;stats-grid&quot;&gt;
            &lt;div class=&quot;stat-item&quot;&gt;
                &lt;span class=&quot;val-txt&quot; id=&quot;res-total&quot;&gt;0&lt;/span&gt;
                &lt;p&gt;Total Gratuity&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;stat-item&quot;&gt;
                &lt;span class=&quot;val-txt&quot; id=&quot;res-taxfree&quot; style=&quot;color: var(--success);&quot;&gt;0&lt;/span&gt;
                &lt;p&gt;Tax-Free Portion&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;stat-item&quot;&gt;
                &lt;span class=&quot;val-txt&quot; id=&quot;res-taxable&quot; style=&quot;color: #ef4444;&quot;&gt;0&lt;/span&gt;
                &lt;p&gt;Taxable Portion&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;fruitful-box&quot;&gt;
            &lt;p class=&quot;sub-title-logic&quot;&gt;Statutory Compliance Audit&lt;/p&gt;
            &lt;div id=&quot;fruitful-content&quot; class=&quot;fruitful-grid&quot;&gt;
                &lt;div class=&quot;fruit-card&quot; id=&quot;milestone-1&quot;&gt;&lt;p&gt;1-Year Rule (FTE)&lt;/p&gt;&lt;span id=&quot;m1-span&quot;&gt;-&lt;/span&gt;&lt;/div&gt;
                &lt;div class=&quot;fruit-card&quot; id=&quot;milestone-2&quot;&gt;&lt;p&gt;5-Year Rule (Reg)&lt;/p&gt;&lt;span id=&quot;m2-span&quot;&gt;-&lt;/span&gt;&lt;/div&gt;
                &lt;div class=&quot;fruit-card&quot; id=&quot;milestone-3&quot;&gt;&lt;p&gt;Wage Audit (50%)&lt;/p&gt;&lt;span id=&quot;m3-span&quot;&gt;-&lt;/span&gt;&lt;/div&gt;
                &lt;div class=&quot;fruit-card&quot; id=&quot;milestone-4&quot;&gt;&lt;p&gt;Tax Limit Check&lt;/p&gt;&lt;span id=&quot;m4-span&quot;&gt;-&lt;/span&gt;&lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 30px 0;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;

    &lt;div class=&quot;faq-section&quot;&gt;
        &lt;h2 style=&quot;font-size: 22px; color: var(--text-dark); font-weight: 700; text-align:center;&quot;&gt;Settlement &amp; Policy FAQs&lt;/h2&gt;
        &lt;div id=&quot;faq-container&quot; style=&quot;margin-top: 30px;&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 30px;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
    const faqs = [
        [&quot;Can I get gratuity if I resign after 4 years and 8 months?&quot;, &quot;Yes. Most labor courts and latest judicial precedents suggest that service exceeding 240 days in the 5th year qualifies for full gratuity, effectively making the threshold 4.6 years.&quot;],
        [&quot;What happens if my company merges with another?&quot;, &quot;Your service remains &#39;continuous.&#39; The new entity inherits the gratuity liability for your entire tenure from original joining date.&quot;],
        [&quot;Does maternity leave count towards service years?&quot;, &quot;Absolutely. Statutory periods of leave, including maternity leave, are considered part of continuous service for gratuity calculations.&quot;],
        [&quot;Is it true that fixed-term contractors get gratuity in 1 year?&quot;, &quot;Yes, under the Social Security Code 2020, fixed-term employees are eligible for pro-rata gratuity if they complete just one year of their contract.&quot;],
        [&quot;Can gratuity be paid if the employee dies in the 2nd year?&quot;, &quot;Yes. In event of death or permanent disablement, the 5-year minimum service rule is strictly waived, and payout is made to nominees immediately.&quot;],
        [&quot;How does the &#39;50% Wage Rule&#39; affect my payout?&quot;, &quot;New rules mandate that Basic Pay + DA must be at least 50% of your Gross CTC. Our auditor calculates based on this legal floor, potentially increasing your payout.&quot;],
        [&quot;Is gratuity taxable from two different employers?&quot;, &quot;The Rs. 20 Lakh tax-exemption is a lifetime cumulative limit. If you received Rs. 5 Lakh from a previous firm, only Rs. 15 Lakh remains tax-free for future settlements.&quot;],
        [&quot;Can my employer deduct notice period pay from gratuity?&quot;, &quot;No. Gratuity is a statutory right. Notice period recovery or other dues cannot be deducted from gratuity amount unless there is intentional damage to property.&quot;],
        [&quot;What is the 15/26 formula exactly?&quot;, &quot;It calculates 15 days of salary based on a 26-day working month. The formula is: (Basic + DA) x (15/26) x Completed Years.&quot;],
        [&quot;Is there interest on delayed gratuity payments?&quot;, &quot;Yes. Employers must pay gratuity within 30 days of exit. Beyond this, Simple Interest (usually 10%) is mandated by law.&quot;],
        [&quot;Do private school teachers get gratuity?&quot;, &quot;Yes, Supreme Court has confirmed that all employees of educational institutions, including teachers, are entitled to gratuity.&quot;],
        [&quot;Can gratuity be attached by a bank for loan recovery?&quot;, &quot;No. Under the Act, gratuity is legally protected and cannot be attached by any court decree for recovery of debts or loans.&quot;],
        [&quot;What if my organization has only 8 employees?&quot;, &quot;The Act applies to establishments with 10 or more employees. However, once establishment is covered, it remains covered even if headcount drops.&quot;],
        [&quot;Do I need to apply for gratuity?&quot;, &quot;You should formally submit &#39;Form I&#39; to your employer within 30 days of leaving to initiate statutory settlement process.&quot;],
        [&quot;Is DA included for private sector employees?&quot;, &quot;Yes, &#39;Wages&#39; for gratuity calculation strictly means Basic Salary + Dearness Allowance (DA). All other allowances are excluded.&quot;]
    ];

    const rupeeSVG = `&lt;svg class=&quot;icon-svg&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;3&quot;&gt;&lt;path d=&quot;M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6&quot;/&gt;&lt;/svg&gt;`;
    const checkSVG = `&lt;svg class=&quot;icon-svg icon-success&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;3&quot;&gt;&lt;polyline points=&quot;20 6 9 17 4 12&quot;&gt;&lt;/polyline&gt;&lt;/svg&gt;`;
    const crossSVG = `&lt;svg class=&quot;icon-svg icon-fail&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;3&quot;&gt;&lt;line x1=&quot;18&quot; y1=&quot;6&quot; x2=&quot;6&quot; y2=&quot;18&quot;&gt;&lt;/line&gt;&lt;line x1=&quot;6&quot; y1=&quot;6&quot; x2=&quot;18&quot; y2=&quot;18&quot;&gt;&lt;/line&gt;&lt;/svg&gt;`;

    function formatInput(el) {
        let val = el.value.replace(/,/g, &#39;&#39;);
        if (!isNaN(val) &amp;&amp; val) el.value = Number(val).toLocaleString(&#39;en-IN&#39;);
    }

    function calculateGratuity() {
        let salary = parseFloat(document.getElementById(&#39;salary&#39;).value.replace(/,/g, &#39;&#39;)) || 0;
        let ctc = parseFloat(document.getElementById(&#39;ctc&#39;).value.replace(/,/g, &#39;&#39;)) || 0;
        let y = parseFloat(document.getElementById(&#39;years&#39;).value) || 0;
        let m = parseFloat(document.getElementById(&#39;months&#39;).value) || 0;
        let type = document.getElementById(&#39;type&#39;).value;

        if (salary &lt;= 0 || (y === 0 &amp;&amp; m === 0)) return;

        let wageOk = true;
        if (ctc &gt; 0 &amp;&amp; salary &lt; (ctc * 0.5)) { salary = ctc * 0.5; wageOk = false; }

        let rounded = (m &gt;= 6) ? y + 1 : y;
        let effective = y + (m / 12);
        let total = (type !== &#39;notcovered&#39;) ? (15/26) * salary * rounded : (15/30) * salary * effective;
        let limit = (type === &#39;govt&#39;) ? 2500000 : 2000000;
        let taxfree = Math.min(total, limit);
        let taxable = Math.max(0, total - limit);

        const f = v =&gt; Math.round(v).toLocaleString(&#39;en-IN&#39;);

        document.getElementById(&#39;res-total&#39;).innerHTML = rupeeSVG + f(total);
        document.getElementById(&#39;res-taxfree&#39;).innerHTML = rupeeSVG + f(taxfree);
        document.getElementById(&#39;res-taxable&#39;).innerHTML = rupeeSVG + f(taxable);

        updateUI(&#39;milestone-1&#39;, &#39;m1-span&#39;, effective &gt;= 1, &quot;Eligible&quot;, &quot;Ineligible&quot;);
        updateUI(&#39;milestone-2&#39;, &#39;m2-span&#39;, effective &gt;= 4.6, &quot;Eligible&quot;, (type === &#39;fixed&#39; ? &#39;N/A&#39; : &#39;Pending&#39;));
        updateUI(&#39;milestone-3&#39;, &#39;m3-span&#39;, wageOk, &quot;Compliant&quot;, &quot;Adjusted&quot;);
        updateUI(&#39;milestone-4&#39;, &#39;m4-span&#39;, total &lt;= limit, &quot;Safe&quot;, &quot;Taxable&quot;);

        document.getElementById(&#39;result-box&#39;).style.display = &#39;block&#39;;
        document.getElementById(&#39;pdf-btn&#39;).style.display = &#39;flex&#39;;
        window.auditData = { total, taxfree, taxable, tenure: `${y}y ${m}m`, type };
    }

    function updateUI(cardId, spanId, active, okMsg, failMsg) {
        const el = document.getElementById(cardId);
        const span = document.getElementById(spanId);
        el.className = active ? &quot;fruit-card active&quot; : &quot;fruit-card&quot;;
        span.innerHTML = (active ? checkSVG : crossSVG) + &quot; &quot; + (active ? okMsg : failMsg);
    }

    function downloadPDF() {
        const { jsPDF } = window.jspdf; let doc = new jsPDF();
        const f = v =&gt; &quot;Rs. &quot; + Math.round(v).toLocaleString(&#39;en-IN&#39;);
        doc.setFillColor(59, 130, 246); doc.rect(0, 0, 210, 40, &#39;F&#39;);
        doc.setTextColor(255); doc.setFontSize(22); doc.text(&quot;OTechy Gratuity Audit Pro&quot;, 20, 25);
        doc.autoTable({
            startY: 50, theme: &#39;striped&#39;,
            body: [
                [&quot;Employment Type&quot;, window.auditData.type.toUpperCase()],
                [&quot;Total Tenure&quot;, window.auditData.tenure],
                [&quot;Calculated Gratuity&quot;, f(window.auditData.total)],
                [&quot;Tax Exempt Amount&quot;, f(window.auditData.taxfree)],
                [&quot;Taxable Portion&quot;, f(window.auditData.taxable)]
            ]
        });
        doc.save(&quot;Gratuity_Report.pdf&quot;);
    }

    window.onload = () =&gt; {
        const container = document.getElementById(&#39;faq-container&#39;);
        faqs.forEach(q =&gt; {
            container.innerHTML += `&lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;${q[0]}&lt;/strong&gt;&lt;p&gt;${q[1]}&lt;/p&gt;&lt;/div&gt;`;
        });
        document.querySelectorAll(&#39;.dynamic-year&#39;).forEach(el =&gt; el.innerText = new Date().getFullYear());
    };
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/5487723358189059572'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/5487723358189059572'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/04/premium-gratuity-calculator.html' title='Premium Gratuity Calculator'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-3682772864662103961</id><published>2026-04-05T00:22:00.000-07:00</published><updated>2026-04-05T00:22:05.171-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SSY"/><category scheme="http://www.blogger.com/atom/ns#" term="Sukanya Samriddhi Yojana"/><title type='text'>Smart SSY Calculator: Sukanya Samriddhi Yojana Returns | OTechy</title><content type='html'>&lt;title&gt;Smart SSY Calculator: Sukanya Samriddhi Yojana Returns&lt;/title&gt;
&lt;meta name=&quot;description&quot; content=&quot;Calculate your daughter&#39;s future wealth with OTechy Smart SSY Calculator. Project 21-year maturity, 8.2% tax-free interest, and secure her education and marriage.&quot;&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;SSY calculator, Sukanya Samriddhi Yojana calculator, SSY interest rate 2026, girl child investment India, tax free investment, SSY maturity calculator, OTechy finance&quot;&gt;

&lt;meta property=&quot;og:title&quot; content=&quot;Smart SSY Calculator | Secure Her Future - OTechy&quot;&gt;
&lt;meta property=&quot;og:description&quot; content=&quot;Plan your daughter&#39;s financial freedom. Calculate exact SSY maturity value and see power of compounding with 8.2% tax-free interest.&quot;&gt;
&lt;meta property=&quot;og:type&quot; content=&quot;website&quot;&gt;
&lt;meta property=&quot;og:url&quot; content=&quot;https://www.otechy.com/2026/01/smart-ssy-calculator.html&quot;&gt;

&lt;meta name=&quot;twitter:card&quot; content=&quot;summary_large_image&quot;&gt;
&lt;meta name=&quot;twitter:title&quot; content=&quot;Smart SSY Calculator: Plan Her Tax-Free Wealth&quot;&gt;
&lt;meta name=&quot;twitter:description&quot; content=&quot;Find out exactly how much your SSY investment will grow over 21 years. Fast, accurate, and optimized for latest 8.2% interest rates.&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;850&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.25/jspdf.plugin.autotable.min.js&quot;&gt;&lt;/script&gt;

&lt;style&gt;
    /* Premium Pink Colors Restored */
    :root { 
        --primary: #ec4899; 
        --primary-dark: #be185d; 
        --text-dark: #1e293b; 
        --accent: #64748b; 
        --border: #e2e8f0; 
        --soft-pink: #fdf2f8; 
        --success: #10b981; 
        --white: #ffffff; 
    }
    
    * { box-sizing: border-box; }
    .otechy-tool-wrapper { font-family: &#39;Poppins&#39;, sans-serif; max-width: 900px; margin: 0 auto; color: var(--text-dark); line-height: 1.6; padding: 60px 20px 20px; overflow-x: hidden; }
    .otechy-badge { display: table; margin: 0 auto 10px; background: var(--soft-pink); color: var(--primary-dark); padding: 6px 16px; border-radius: 50px; font-size: 11px; font-weight: 800; text-transform: uppercase; border: 1px solid #fbcfe8; }
    
    .tool-header { text-align: center; margin-bottom: 30px; }
    .tool-header h1 { font-size: clamp(22px, 5vw, 32px); color: var(--primary); font-weight: 850; margin: 0; letter-spacing: -0.5px;}
    .quick-value { color: var(--accent); font-weight: 500; font-size: 14px; margin-top: 8px; }
    
    /* Navigation Links */
    .tool-navigation { display: flex; justify-content: center; gap: 12px; margin-top: 25px; margin-bottom: 25px; flex-wrap: wrap; }
    .nav-link { display: inline-flex; align-items: center; gap: 6px; padding: 8px 18px; background-color: #fff; color: var(--text-dark); text-decoration: none; font-size: 13px; font-weight: 700; border-radius: 50px; border: 1px solid var(--border); transition: all 0.3s ease; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.02); }
    .nav-link:hover { background-color: var(--soft-pink); color: var(--primary-dark); border-color: var(--primary); transform: translateY(-2px); box-shadow: 0 6px 12px rgba(236, 72, 153, 0.15); }
    
    .otechy-card { background: #ffffff; padding: clamp(20px, 4vw, 35px); border-radius: 16px; border: 1px solid var(--border); box-shadow: 0 4px 15px rgba(0,0,0,0.03); margin-bottom:30px;}
    
    .input-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; align-items: end; }
    .input-group label { display: block; font-size: 11px; font-weight: 800; color: var(--accent); text-transform: uppercase; margin-bottom: 6px; letter-spacing: 0.5px; }
    .input-with-symbol { position: relative; display: flex; align-items: center; }
    .currency-symbol { position: absolute; left: 15px; font-weight: 700; color: var(--text-dark); }
    .input-with-symbol input { padding-left: 35px !important; }
    .input-group input, .input-group select { width: 100%; padding: 14px; border: 2px solid #cbd5e1; border-radius: 10px; font-size: 14px; font-family: &#39;Poppins&#39;, sans-serif; font-weight: 600; outline: none; transition: 0.2s; color: var(--text-dark); background:#fff;}
    .input-group input:focus, .input-group select:focus { border-color: var(--primary); box-shadow: 0 0 0 4px rgba(236, 72, 153, 0.1); }
    
    .result-container { display: none; padding: 25px; background: var(--soft-pink); border-radius: 12px; border-left: 6px solid var(--primary); margin-top: 25px; }
    .stats-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 15px; margin-bottom: 20px; }
    .stat-item { background: #fff; padding: 15px 10px; border-radius: 10px; text-align: center; border: 1px solid #fbcfe8; box-shadow: 0 2px 6px rgba(236, 72, 153, 0.05); }
    .stat-item .val-txt { font-weight: 850; color: var(--primary-dark); font-size: clamp(14px, 2.5vw, 18px); display: block; }
    .stat-item p { font-size: 10px; font-weight: 700; color: var(--accent); text-transform: uppercase; margin: 6px 0 0; }
    
    .wealth-visual { margin: 25px 0; }
    .bar-label { display: flex; justify-content: space-between; font-size: 12px; font-weight: 700; margin-bottom: 8px; color: var(--text-dark); }
    .bar-bg { background: #e2e8f0; height: 10px; border-radius: 50px; overflow: hidden; }
    .bar-fill { height: 100%; background: var(--success); width: 0%; transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1); }
    
    .action-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; margin-top: 25px; }
    .otechy-btn { background: var(--primary); color: #fff; border: none; padding: 15px; border-radius: 10px; font-weight: 700; font-size: 14px; cursor: pointer; transition: 0.3s; font-family: &#39;Poppins&#39;, sans-serif; display: flex; align-items: center; justify-content: center; gap: 8px;}
    .otechy-btn:hover { background: var(--primary-dark); transform: translateY(-2px); box-shadow: 0 4px 10px rgba(236, 72, 153, 0.2); }
    .otechy-btn.secondary { background: var(--text-dark); }
    .otechy-btn.secondary:hover { background: #000; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2); }
    
    .hidden-ledger { display: none; }
    .table-scroll { overflow-x: auto; margin-top: 15px; border: 1px solid var(--border); border-radius: 10px; }
    table { width: 100%; border-collapse: collapse; background: #fff; font-size: 13px; min-width: 500px; }
    th { background: #f8fafc; padding: 14px 12px; text-align: left; border-bottom: 2px solid var(--border); color: var(--text-dark); font-weight: 700; }
    td { padding: 12px; border-bottom: 1px solid var(--border); color: var(--accent); }
    
    .geo-citation { background: #fff; padding: 25px; border-radius: 12px; border-left: 5px solid var(--primary); font-size: 14px; margin: 40px 0; border: 1px solid var(--border); box-shadow: 0 2px 10px rgba(0,0,0,0.02); }
    .section-h2 { font-size: clamp(18px, 4vw, 22px); font-weight: 850; margin-bottom: 20px; text-align: center; }
    
    /* New CSS Block for Rules and Scenarios */
    .rules-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 15px; margin-top: 20px; margin-bottom: 40px;}
    .rule-box { background: #fff; border-left: 4px solid var(--primary); padding: 20px; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.04); border-top: 1px solid var(--border); border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); transition: transform 0.2s;}
    .rule-box:hover { transform: translateY(-2px); }
    .rule-box h4 { margin: 0 0 8px 0; color: var(--text-dark); font-size: 15px; font-weight: 800; display: flex; align-items: center; gap: 8px;}
    .rule-box p { margin: 0; font-size: 13px; color: var(--accent); line-height: 1.5; }
    .rule-icon { color: var(--primary); font-size: 16px; }

    .how-to-steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 15px; margin-bottom: 40px;}
    .step-card { display: flex; align-items: flex-start; gap: 15px; background: #fff; border: 1px solid var(--border); padding: 20px; border-radius: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.02); }
    .step-icon { width: 28px; height: 28px; background: var(--soft-pink); color: var(--primary); border: 1px solid #fbcfe8; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 850; flex-shrink: 0; font-size: 12px; }
    .step-card p { margin: 0; font-size: 13px; color: var(--accent); }
    .step-card strong { color: var(--text-dark); display: block; margin-bottom: 4px; }
    
    .faq-container { display: grid; grid-template-columns: 1fr; gap: 15px; margin-top: 25px; }
    .faq-card { background: #fff; padding: 20px; border-radius: 12px; border: 1px solid var(--border); font-size: 13px; color: var(--accent); box-shadow: 0 2px 8px rgba(0,0,0,0.02); }
    .faq-card strong { font-size: 15px; color: var(--text-dark); display: block; margin-bottom: 8px; font-weight: 700; }
    
    .svg-alert { background: #fffbeb; color: #92400e; padding: 12px 15px; border-radius: 8px; border: 1px solid #fde68a; font-size: 12px; margin-top: 15px; font-weight: 600; display:none;}
    .detailed-stats { display: flex; justify-content: space-between; font-size: 12px; color: var(--accent); margin-top: 20px; border-top: 1px solid #fbcfe8; padding-top: 15px; font-weight: 500; }
    
    /* Ads CSS */
    .otechy-ad-top, .otechy-ad-middle, .otechy-ad-bottom { display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; background: #f1f5f9; border-radius: 10px; border: 2px dashed #cbd5e1; width: 100%; box-sizing: border-box; overflow: hidden; text-align: center;}

    /* Mobile Overrides */
    @media (max-width: 768px) {
        .otechy-tool-wrapper { padding: 30px 15px 20px; }
        .otechy-card { padding: 20px; }
        .input-grid { grid-template-columns: 1fr; gap: 15px; }
        .action-grid { grid-template-columns: 1fr; gap: 12px; }
        
        .stats-grid { grid-template-columns: 1fr !important; gap: 10px; }
        .stat-item { 
            display: flex; 
            flex-direction: row-reverse; 
            justify-content: space-between; 
            align-items: center; 
            text-align: left; 
            padding: 15px 20px; 
            gap: 15px;
        }
        .stat-item p { margin: 0; font-size: 13px; }
        .stat-item .val-txt { font-size: 16px; text-align: right; }
        
        .detailed-stats { flex-direction: column; align-items: center; gap: 10px; text-align: center; }
        .how-to-steps, .rules-container { grid-template-columns: 1fr; }
        .tool-navigation { gap: 8px; }
        .nav-link { padding: 6px 14px; font-size: 12px; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;
    &lt;div class=&quot;otechy-badge&quot;&gt;Girl Child Finance Kit &lt;span class=&quot;dynamic-year&quot;&gt;&lt;/span&gt;&lt;/div&gt;

    &lt;div class=&quot;tool-header&quot;&gt;
        &lt;h1&gt;Smart SSY Planner 👧&lt;/h1&gt;
        &lt;p class=&quot;quick-value&quot;&gt;Calculate exact 21-year maturity value and tax-free interest for Sukanya Samriddhi Yojana.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;tool-navigation&quot;&gt;
        &lt;a href=&quot;https://www.otechy.com/p/search.html?find=ppf&quot; class=&quot;nav-link&quot;&gt;📈 PPF Calculator&lt;/a&gt;
        &lt;a href=&quot;https://www.otechy.com/p/search.html?find=education+loan&quot; class=&quot;nav-link&quot;&gt;🎓 Education Loan&lt;/a&gt;
        &lt;a href=&quot;https://www.otechy.com/p/financial-calculators.html&quot; class=&quot;nav-link&quot;&gt;🧮 All Finance Tools&lt;/a&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 20px; height: 90px;&quot;&gt;AD SLOT TOP&lt;/div&gt;

    &lt;div class=&quot;otechy-card&quot;&gt;
        &lt;div class=&quot;input-grid&quot;&gt;
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Yearly Deposit (Max ₹1.5L)&lt;/label&gt;
                &lt;div class=&quot;input-with-symbol&quot;&gt;
                    &lt;span class=&quot;currency-symbol&quot;&gt;₹&lt;/span&gt;
                    &lt;input type=&quot;text&quot; id=&quot;ssy-yearly&quot; placeholder=&quot;1,50,000&quot; oninput=&quot;formatInput(this)&quot;&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Girl Child&#39;s Age (Max 10 Years)&lt;/label&gt;
                &lt;input type=&quot;number&quot; id=&quot;ssy-age&quot; value=&quot;1&quot; min=&quot;0&quot; max=&quot;10&quot;&gt;
            &lt;/div&gt;
            &lt;div class=&quot;input-group&quot; style=&quot;grid-column: 1 / -1;&quot;&gt;
                &lt;label&gt;Account Opening Year&lt;/label&gt;
                &lt;select id=&quot;ssy-start-year&quot;&gt;&lt;/select&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div style=&quot;margin-top: 10px; margin-bottom: 30px;&quot;&gt;
            &lt;button class=&quot;otechy-btn&quot; style=&quot;width: 100%;&quot; onclick=&quot;calculateSSY()&quot;&gt;
                &lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;path d=&quot;M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6&quot;/&gt;&lt;/svg&gt;
                Calculate Maturity Returns
            &lt;/button&gt;
        &lt;/div&gt;

        &lt;div id=&quot;ssy-alert&quot; class=&quot;svg-alert&quot;&gt;
            &lt;span id=&quot;alert-text&quot;&gt;&lt;/span&gt;
        &lt;/div&gt;

        &lt;div id=&quot;ssy-result-box&quot; class=&quot;result-container&quot;&gt;
            &lt;div class=&quot;stats-grid&quot;&gt;
                &lt;div class=&quot;stat-item&quot;&gt;
                    &lt;span class=&quot;val-txt&quot;&gt;₹&lt;span id=&quot;res-invested&quot;&gt;-&lt;/span&gt;&lt;/span&gt;
                    &lt;p&gt;Total Invested&lt;/p&gt;
                &lt;/div&gt;
                &lt;div class=&quot;stat-item&quot;&gt;
                    &lt;span class=&quot;val-txt&quot; style=&quot;color:var(--success);&quot;&gt;+ ₹&lt;span id=&quot;res-interest&quot;&gt;-&lt;/span&gt;&lt;/span&gt;
                    &lt;p&gt;Wealth Gained (8.2%)&lt;/p&gt;
                &lt;/div&gt;
                &lt;div class=&quot;stat-item&quot;&gt;
                    &lt;span class=&quot;val-txt&quot;&gt;₹&lt;span id=&quot;res-maturity&quot;&gt;-&lt;/span&gt;&lt;/span&gt;
                    &lt;p&gt;Maturity Value&lt;/p&gt;
                &lt;/div&gt;
            &lt;/div&gt;

            &lt;div class=&quot;wealth-visual&quot;&gt;
                &lt;div class=&quot;bar-label&quot;&gt;&lt;span&gt;Compounding Growth Ratio&lt;/span&gt;&lt;span id=&quot;label-interest-ratio&quot;&gt;0%&lt;/span&gt;&lt;/div&gt;
                &lt;div class=&quot;bar-bg&quot;&gt;&lt;div id=&quot;bar-ssy&quot; class=&quot;bar-fill&quot;&gt;&lt;/div&gt;&lt;/div&gt;
            &lt;/div&gt;

            &lt;div class=&quot;detailed-stats&quot;&gt;
                &lt;p&gt;&lt;strong&gt;Maturity Year:&lt;/strong&gt; &lt;span id=&quot;maturity-year-val&quot;&gt;-&lt;/span&gt; (Age &lt;span id=&quot;maturity-age-val&quot;&gt;-&lt;/span&gt;)&lt;/p&gt;
                &lt;p&gt;Status: &lt;strong style=&quot;color:var(--success);&quot;&gt;100% Tax-Free (EEE)&lt;/strong&gt;&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;action-grid&quot;&gt;
            &lt;button class=&quot;otechy-btn&quot; onclick=&quot;generateSSYPDF()&quot;&gt;Save Audit PDF&lt;/button&gt;
            &lt;button class=&quot;otechy-btn secondary&quot; id=&quot;toggle-ledger&quot; onclick=&quot;toggleAmortization()&quot;&gt;View Detailed Report&lt;/button&gt;
        &lt;/div&gt;

        &lt;div id=&quot;amort-section&quot; class=&quot;hidden-ledger&quot;&gt;
            &lt;h3 style=&quot;font-size: 16px; margin: 25px 0 10px; color: #1e293b;&quot;&gt;21-Year SSY Growth Ledger&lt;/h3&gt;
            &lt;div class=&quot;table-scroll&quot;&gt;
                &lt;table id=&quot;amort-table&quot;&gt;
                    &lt;thead&gt;
                        &lt;tr&gt;&lt;th&gt;Year&lt;/th&gt;&lt;th&gt;Child&#39;s Age&lt;/th&gt;&lt;th&gt;Annual Deposit&lt;/th&gt;&lt;th&gt;Interest (8.2%)&lt;/th&gt;&lt;th&gt;Closing Balance&lt;/th&gt;&lt;/tr&gt;
                    &lt;/thead&gt;
                    &lt;tbody id=&quot;amort-body&quot;&gt;&lt;/tbody&gt;
                &lt;/table&gt;
            &lt;/div&gt;
            &lt;p style=&quot;font-size: 11px; color: var(--accent); margin-top: 10px;&quot;&gt;*Note: Deposits are required only for first 15 years. Interest continues to compound until maturity at 21 years.&lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;section&gt;
        &lt;h2 class=&quot;section-h2&quot;&gt;SSY Scheme Rules &amp; Conditions&lt;/h2&gt;
        &lt;div class=&quot;rules-container&quot;&gt;
            &lt;div class=&quot;rule-box&quot;&gt;
                &lt;h4&gt;&lt;span class=&quot;rule-icon&quot;&gt;👶&lt;/span&gt; Eligibility Criteria&lt;/h4&gt;
                &lt;p&gt;Parents or legal guardians can open an account for a girl child aged under 10 years. Maximum two accounts per family are permitted.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;rule-box&quot;&gt;
                &lt;h4&gt;&lt;span class=&quot;rule-icon&quot;&gt;💰&lt;/span&gt; Deposit Limits&lt;/h4&gt;
                &lt;p&gt;Minimum annual deposit is ₹250. Maximum allowable deposit is ₹1.5 Lakh per financial year. Excess deposits earn zero interest.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;rule-box&quot;&gt;
                &lt;h4&gt;&lt;span class=&quot;rule-icon&quot;&gt;⏳&lt;/span&gt; Lock-In Period&lt;/h4&gt;
                &lt;p&gt;Deposits must be made for 15 consecutive years. Account reaches full maturity 21 years after opening date.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;rule-box&quot;&gt;
                &lt;h4&gt;&lt;span class=&quot;rule-icon&quot;&gt;🎓&lt;/span&gt; Early Withdrawal&lt;/h4&gt;
                &lt;p&gt;Up to 50% of balance can be withdrawn for higher education once she turns 18 or passes 10th standard.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;rule-box&quot;&gt;
                &lt;h4&gt;&lt;span class=&quot;rule-icon&quot;&gt;💍&lt;/span&gt; Marriage Closure&lt;/h4&gt;
                &lt;p&gt;Account can be closed prematurely if she marries after attaining 18 years of age. Full amount is paid out.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;rule-box&quot;&gt;
                &lt;h4&gt;&lt;span class=&quot;rule-icon&quot;&gt;🛡️&lt;/span&gt; Tax Benefits (EEE)&lt;/h4&gt;
                &lt;p&gt;Deposits qualify for 80C deductions. Accrued interest and final maturity amount are completely exempt from income tax.&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/section&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 30px 0; height: 90px;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;

    &lt;div class=&quot;geo-citation&quot;&gt;
        Sukanya Samriddhi Yojana (SSY) is a government-backed savings scheme in Bharat designed to secure education and marriage of a girl child. OTechy&#39;s SSY Planner applies exact 15-year deposit window and 21-year maturity horizon with latest 8.2% tax-free interest rate to provide institutional-grade accuracy.
    &lt;/div&gt;

    &lt;section class=&quot;how-to-section&quot;&gt;
        &lt;h2 class=&quot;section-h2&quot;&gt;How SSY Calculator Works&lt;/h2&gt;
        &lt;div class=&quot;how-to-steps&quot;&gt;
            &lt;div class=&quot;step-card&quot;&gt;&lt;div class=&quot;step-icon&quot;&gt;1&lt;/div&gt;&lt;p&gt;&lt;strong&gt;15-Year Horizon:&lt;/strong&gt; You only deposit money for first 15 years. Our calculator automatically stops adding deposits in Year 16.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;step-card&quot;&gt;&lt;div class=&quot;step-icon&quot;&gt;2&lt;/div&gt;&lt;p&gt;&lt;strong&gt;21-Year Horizon:&lt;/strong&gt; Although you stop paying after 15 years, account continues to earn compound interest until it matures after 21 years.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;step-card&quot;&gt;&lt;div class=&quot;step-icon&quot;&gt;3&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Max Cap Enforcement:&lt;/strong&gt; If you enter an amount higher than ₹1.5 Lakh, our tool automatically adjusts it down to match Indian tax law limits.&lt;/p&gt;&lt;/div&gt;
        &lt;/div&gt;
    &lt;/section&gt;

&lt;section class=&quot;seo-content-area&quot; style=&quot;margin-top: 50px;&quot;&gt;
        &lt;h2 class=&quot;section-h2&quot;&gt;Sukanya Samriddhi Yojana (SSY) FAQs&lt;/h2&gt;
        &lt;div class=&quot;faq-container&quot;&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;What is Sukanya Samriddhi Yojana (SSY) and why was it introduced?&lt;/strong&gt; Sukanya Samriddhi Yojana stands as a government-backed savings scheme exclusively created for girl children. It aims to encourage parents to build a fund for future education and marriage expenses of their daughters.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;Who is eligible to open an SSY account?&lt;/strong&gt; Biological parents or legal guardians can open this account on behalf of a girl child. This child must be an Indian resident and under ten years old at account opening.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;What is maximum age limit to open this account?&lt;/strong&gt; A girl child must not have crossed her tenth birthday to be eligible. You can open it anytime from her birth until she completes ten years of age.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;How many accounts can a family open?&lt;/strong&gt; A family can open a maximum of two accounts, strictly one for each daughter. Exceptions exist only if a family has twin or triplet girls during a second birth.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;What happens if a family has twin girls?&lt;/strong&gt; In cases involving twin or triplet daughters, authorities allow opening more than two accounts. You must provide medical certificates to prove multiple births to avail this exception.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;What is minimum annual deposit required to keep an account active?&lt;/strong&gt; You must deposit at least ₹250 every financial year to maintain an active status. Failure to make this minimum payment results in an inactive or defaulted account state.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;What is maximum annual deposit allowed in an SSY account?&lt;/strong&gt; Government rules cap maximum deposits at ₹1.5 Lakh per financial year. Any amount deposited beyond this limit will not earn interest and does not qualify for tax deductions.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;What occurs if I miss making my yearly minimum deposit?&lt;/strong&gt; Missing a yearly payment turns your account into a defaulted state. You can revive it by paying a ₹50 penalty for each defaulted year, along with all pending minimum deposits.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;For how many years must I deposit money?&lt;/strong&gt; You are required to make deposits for exactly fifteen years from your account opening date. After fifteen years, you stop paying, but your corpus continues earning interest.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;When does an SSY account reach full maturity?&lt;/strong&gt; Full maturity occurs exactly twenty-one years after your account opening date. It does not depend on your daughter reaching twenty-one years of age.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;What is current interest rate offered on SSY?&lt;/strong&gt; As of recent updates, this scheme offers a highly attractive 8.2% annual interest rate. Officials review and compound this interest yearly, adding it directly to your principal balance.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;Are there any tax benefits associated with SSY deposits?&lt;/strong&gt; Yes, deposits qualify for tax deductions under Section 80C of Indian Income Tax Act. You can claim deductions up to ₹1.5 Lakh every financial year to reduce taxable income.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;Is interest earned subject to income tax?&lt;/strong&gt; No, interest earned remains completely exempt from income tax. This scheme falls under an Exempt-Exempt-Exempt (EEE) category, ensuring totally tax-free returns.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;Is final maturity amount taxable?&lt;/strong&gt; Final maturity proceeds are entirely tax-free. When you withdraw total corpus after twenty-one years, you owe zero taxes to income tax authorities.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;Can I withdraw funds for my daughter&#39;s education?&lt;/strong&gt; Yes, you can withdraw up to fifty percent of your previous year&#39;s closing balance. This withdrawal becomes available only after she turns eighteen or completes her tenth standard education.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;Are premature closures allowed for marriage?&lt;/strong&gt; You can prematurely close an account if your daughter intends to marry after turning eighteen. You must submit a wedding application within one month before or three months after her marriage.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;Can Non-Resident Indians (NRIs) open an SSY account?&lt;/strong&gt; No, NRIs do not hold eligibility to open new accounts under this scheme. Only resident Indian citizens can initiate and maintain these specific girl child savings plans.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;What if our citizenship changes to NRI after opening?&lt;/strong&gt; If a girl child becomes an NRI, you must inform your bank or post office within one month. Authorities will close her account and return accumulated funds without further SSY interest.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;Can I transfer this account to another city or bank?&lt;/strong&gt; Yes, transferability is fully supported across India. You can shift an account from a post office to an authorized bank, or between different bank branches without any hassle.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;Who operates an account in its early years?&lt;/strong&gt; A designated parent or legal guardian handles all operations initially. This guardian holds responsibility for making deposits and managing records during her childhood.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;When can a girl child operate her own account?&lt;/strong&gt; Once she reaches eighteen years of age, she can take full independent control. She must submit necessary KYC documents to her bank to authorize this operational transition.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;Are loans available against an SSY balance?&lt;/strong&gt; Unlike Public Provident Fund accounts, Sukanya Samriddhi Yojana does not offer loan facilities. You cannot pledge this corpus as collateral to secure any personal or educational loans.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;Can grandparents open an account for their granddaughter?&lt;/strong&gt; Grandparents cannot open this account unless they hold official legal guardianship of said child. Normally, only biological parents hold authorization to act as primary depositors.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;Can I make online deposits into an SSY account?&lt;/strong&gt; Yes, most authorized banks and post offices support digital transfers. You can easily set up standing instructions or use digital payment apps to ensure timely yearly investments.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;What happens if account holder passes away?&lt;/strong&gt; In unfortunate cases of death, authorities will immediately close said account. They will hand over total accumulated balance plus interest to her parent or registered legal guardian.&lt;/div&gt;
        &lt;/div&gt;
    &lt;/section&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 30px; height: 90px;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
    let auditData = { rows: [], summary: {} };

    function formatInput(el) {
        let val = el.value.replace(/,/g, &#39;&#39;);
        if (!isNaN(val) &amp;&amp; val.length &gt; 0) {
            el.value = Number(val).toLocaleString(&#39;en-IN&#39;);
        }
    }

    function populateYears() {
        const select = document.getElementById(&#39;ssy-start-year&#39;);
        const thisYear = new Date().getFullYear();
        for (let i = thisYear; i &gt;= thisYear - 10; i--) {
            let option = document.createElement(&#39;option&#39;);
            option.value = i;
            option.text = i;
            select.appendChild(option);
        }
    }

    function calculateSSY() {
        let depositInput = parseFloat(document.getElementById(&#39;ssy-yearly&#39;).value.replace(/,/g, &#39;&#39;)) || 0;
        let ageInput = parseInt(document.getElementById(&#39;ssy-age&#39;).value) || 0;
        const startYear = parseInt(document.getElementById(&#39;ssy-start-year&#39;).value);
        const rate = 8.2; 
        const maxAge = 10;
        const depositYears = 15;
        const maturityYears = 21;
        const cap = 150000;

        const alertBox = document.getElementById(&#39;ssy-alert&#39;);
        const alertText = document.getElementById(&#39;alert-text&#39;);
        
        if (depositInput &lt;= 0) return;

        let alertMsg = &quot;&quot;;
        if (ageInput &gt; maxAge) {
            ageInput = maxAge;
            document.getElementById(&#39;ssy-age&#39;).value = maxAge;
            alertMsg += &quot;Age capped at 10 years (Scheme Rules). &quot;;
        }
        
        if (depositInput &gt; cap) {
            depositInput = cap;
            document.getElementById(&#39;ssy-yearly&#39;).value = &quot;1,50,000&quot;;
            alertMsg += `Deposit capped at ₹1.5 Lakh. `;
        }

        if (alertMsg !== &quot;&quot;) {
            alertBox.style.display = &#39;block&#39;;
            alertText.textContent = &quot;Note: &quot; + alertMsg;
        } else {
            alertBox.style.display = &#39;none&#39;;
        }

        let balance = 0;
        let totalInvested = 0;
        let totalInterest = 0;
        let rows = [];

        const f = (v) =&gt; Math.round(v).toLocaleString(&#39;en-IN&#39;);

        for (let y = 1; y &lt;= maturityYears; y++) {
            let currentYear = startYear + y - 1;
            let currentAge = ageInput + y - 1;
            
            // Only add deposit for first 15 years
            let currentDeposit = (y &lt;= depositYears) ? depositInput : 0;
            
            // Calculate interest on opening balance + current deposit
            let interestEarningPrincipal = balance + currentDeposit;
            let interestEarned = interestEarningPrincipal * (rate / 100);

            balance += currentDeposit + interestEarned;
            totalInvested += currentDeposit;
            totalInterest += interestEarned;

            // FIXED FOR PDF: Using &quot;Rs.&quot; instead of rupee symbol so PDF exports perfectly without encoding errors.
            rows.push([
                currentYear,
                currentAge,
                &quot;Rs. &quot; + f(currentDeposit),
                &quot;Rs. &quot; + f(interestEarned),
                &quot;Rs. &quot; + f(balance)
            ]);
        }

        const maturityYear = startYear + maturityYears;
        const maturityAge = ageInput + maturityYears;

        document.getElementById(&#39;res-invested&#39;).innerText = f(totalInvested);
        document.getElementById(&#39;res-interest&#39;).innerText = f(totalInterest);
        document.getElementById(&#39;res-maturity&#39;).innerText = f(balance);
        document.getElementById(&#39;maturity-year-val&#39;).innerText = maturityYear;
        document.getElementById(&#39;maturity-age-val&#39;).innerText = maturityAge;

        const ratio = (totalInterest / balance) * 100;
        document.getElementById(&#39;label-interest-ratio&#39;).innerText = Math.round(ratio) + &quot;% Wealth Gain&quot;;
        
        setTimeout(() =&gt; { document.getElementById(&#39;bar-ssy&#39;).style.width = ratio + &quot;%&quot;; }, 100);

        document.getElementById(&#39;ssy-result-box&#39;).style.display = &#39;block&#39;;

        const tbody = document.getElementById(&#39;amort-body&#39;);
        tbody.innerHTML = rows.map((r, i) =&gt; {
            let rowStyle = (i &gt;= 15) ? &quot;background-color: #f8fafc;&quot; : &quot;&quot;;
            // Replace &quot;Rs.&quot; back to rupee symbol for HTML display so UI still looks great
            let htmlDeposit = r[2].replace(&#39;Rs.&#39;, &#39;₹&#39;);
            let htmlInterest = r[3].replace(&#39;Rs.&#39;, &#39;₹&#39;);
            let htmlBalance = r[4].replace(&#39;Rs.&#39;, &#39;₹&#39;);
            
            let depositTxt = (i &gt;= 15) ? `&lt;span style=&quot;color:var(--accent);&quot;&gt;₹ 0 (Lock Phase)&lt;/span&gt;` : `&lt;strong&gt;${htmlDeposit}&lt;/strong&gt;`;
            return `&lt;tr style=&quot;${rowStyle}&quot;&gt;&lt;td&gt;${r[0]}&lt;/td&gt;&lt;td&gt;${r[1]} yrs&lt;/td&gt;&lt;td&gt;${depositTxt}&lt;/td&gt;&lt;td&gt;${htmlInterest}&lt;/td&gt;&lt;td&gt;&lt;strong&gt;${htmlBalance}&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;`;
        }).join(&#39;&#39;);

        auditData = {
            rows,
            summary: { depositInput, totalInvested, totalInterest, balance, maturityYear, maturityAge, rate }
        };
    }

    function toggleAmortization() {
        const sec = document.getElementById(&#39;amort-section&#39;);
        const btn = document.getElementById(&#39;toggle-ledger&#39;);
        const isHidden = sec.style.display === &#39;none&#39; || sec.style.display === &#39;&#39;;
        sec.style.display = isHidden ? &#39;block&#39; : &#39;none&#39;;
        btn.innerText = isHidden ? &#39;Hide Detailed Report&#39; : &#39;View Detailed Report&#39;;
    }

    function generateSSYPDF() {
        if (auditData.rows.length === 0) return;
        const { jsPDF } = window.jspdf;
        const doc = new jsPDF();

        doc.setFillColor(236, 72, 153); doc.rect(0, 0, 210, 40, &#39;F&#39;);
        doc.setTextColor(255); doc.setFontSize(22); doc.setFont(&quot;helvetica&quot;, &quot;bold&quot;);
        doc.text(&quot;OTechy Finance Audit Pro&quot;, 20, 25);
        doc.setFontSize(10); doc.setFont(&quot;helvetica&quot;, &quot;normal&quot;);
        doc.text(&quot;Sukanya Samriddhi Yojana (SSY) Maturity Report&quot;, 20, 32);

        doc.setTextColor(30, 41, 59); doc.setFontSize(13); doc.setFont(&quot;helvetica&quot;, &quot;bold&quot;);
        doc.text(&quot;Executive Summary&quot;, 20, 55);
        doc.setFontSize(10); doc.setFont(&quot;helvetica&quot;, &quot;normal&quot;);
        doc.text(`Projected Maturity: Rs. ${Math.round(auditData.summary.balance).toLocaleString(&#39;en-IN&#39;)}`, 20, 65);
        doc.text(`Total Invested: Rs. ${Math.round(auditData.summary.totalInvested).toLocaleString(&#39;en-IN&#39;)}`, 20, 72);
        doc.text(`Maturity Year: ${auditData.summary.maturityYear} (Daughter&#39;s Age: ${auditData.summary.maturityAge})`, 20, 79);
        doc.text(`Interest Rate Applied: ${auditData.summary.rate}% (Tax Free)`, 20, 86);

        doc.autoTable({
            startY: 95,
            head: [[&#39;Year&#39;, &#39;Age&#39;, &#39;Annual Deposit&#39;, &#39;Interest Earned&#39;, &#39;Closing Balance&#39;]],
            body: auditData.rows,
            theme: &#39;striped&#39;,
            headStyles: { fillColor: [236, 72, 153], fontSize: 9 }, // Pink header
            styles: { fontSize: 8 }
        });

        const pageCount = doc.internal.getNumberOfPages();
        for (let i = 1; i &lt;= pageCount; i++) {
            doc.setPage(i);
            const pHeight = doc.internal.pageSize.height;
            doc.setFillColor(253, 242, 248); doc.rect(0, pHeight - 20, 210, 20, &#39;F&#39;);
            doc.setFontSize(8); doc.setTextColor(100, 116, 139);
            doc.text(&quot;Generated by OTechy.com - Your Digital Toolkit&quot;, 20, pHeight - 12);
            doc.text(&quot;Disclaimer: Based on Govt. of India 8.2% fixed rate logic. Page &quot; + i, 20, pHeight - 6);
        }
        doc.save(`SSY_Plan_OTechy_${Date.now()}.pdf`);
    }

    document.addEventListener(&#39;DOMContentLoaded&#39;, () =&gt; {
        document.querySelectorAll(&#39;.dynamic-year&#39;).forEach(el =&gt; el.innerText = new Date().getFullYear());
        populateYears();
    });
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/3682772864662103961'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/3682772864662103961'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/04/smart-ssy-calculator-sukanya-samriddhi.html' title='Smart SSY Calculator: Sukanya Samriddhi Yojana Returns | OTechy'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-7950394497491267945</id><published>2026-04-05T00:03:00.000-07:00</published><updated>2026-05-20T10:32:02.110-07:00</updated><title type='text'>test</title><content type='html'>&lt;title&gt;Azure Services Quick Reference | Cloud Architecture &amp; Interview Guide - OTechy&lt;/title&gt;
&lt;meta name=&quot;description&quot; content=&quot;Master your Azure Cloud interview with OTechy&#39;s interactive cheat sheet. Deep-dive into Cosmos DB, Azure SQL, App Services, architecture patterns, tradeoffs, and HA/DR.&quot;&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;azure interview cheat sheet, azure architecture patterns, cosmos db interview questions, azure sql vs managed instance, azure cloud interview guide, azure system design&quot;&gt;
&lt;meta property=&quot;og:title&quot; content=&quot;Azure Services Quick Reference - OTechy&quot;&gt;
&lt;meta property=&quot;og:description&quot; content=&quot;The ultimate interactive prep engine for Azure Cloud Architects and Developers.&quot;&gt;
&lt;meta property=&quot;og:type&quot; content=&quot;website&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700;850&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

&lt;style&gt;
    :root { --primary: #3b82f6; --text-dark: #1e293b; --accent: #64748b; --bg: #f8fafc; --white: #fff; --border: #e2e8f0; --soft-blue: #f0f7ff; --success: #10b981; --danger: #ef4444; --warning: #f59e0b; --hover: #eff6ff; }
    * { box-sizing: border-box; -webkit-font-smoothing: antialiased; }
    .otechy-tool-wrapper { font-family: &#39;Poppins&#39;, sans-serif; max-width: 1300px; margin: 0 auto; color: var(--text-dark); line-height: 1.6; padding: 80px 20px 20px; }
    
    .otechy-badge { display: table; margin: 0 auto 10px; background: var(--hover); color: var(--primary); padding: 6px 16px; border-radius: 50px; font-size: 11px; font-weight: 800; text-transform: uppercase; border: 1px solid #dbeafe; }
    .tool-header { text-align: center; margin-bottom: 30px; }
    .tool-header h1 { font-size: clamp(24px, 5vw, 42px); font-weight: 850; color: var(--primary); margin: 0; }
    .quick-value { color: var(--primary); font-weight: 600; font-size: 14px; margin-top: 5px; }

    .tool-navigation { display: flex; justify-content: center; gap: 10px; margin-bottom: 25px; flex-wrap: wrap; }
    .nav-link { text-decoration: none; font-size: 11px; font-weight: 700; color: var(--accent); background: var(--white); padding: 8px 18px; border-radius: 50px; border: 1px solid var(--border); transition: 0.3s; }
    .nav-link:hover { border-color: var(--primary); color: var(--primary); }

    .otechy-card { background: var(--white); padding: 25px; border-radius: 12px; border: 1px solid var(--border); box-shadow: 0 4px 12px rgba(0,0,0,0.05); margin-bottom: 30px; }
    
    /* Search Bar */
    .search-bar-wrapper { margin-bottom: 20px; position: relative; }
    .search-bar-wrapper input { width: 100%; padding: 15px 20px 15px 45px; border-radius: 10px; border: 2px solid var(--border); font-family: &#39;Poppins&#39;; font-size: 14px; outline: none; transition: 0.3s; }
    .search-bar-wrapper input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); }
    .search-icon { position: absolute; left: 15px; top: 50%; transform: translateY(-50%); width: 18px; height: 18px; fill: var(--accent); }

    /* Explorer Layout */
    .explorer-grid { display: grid; grid-template-columns: 320px 1fr; gap: 25px; align-items: start; }
    
    /* Left Panel: Tree View */
    .tree-panel { background: #f8fafc; border-radius: 10px; padding: 15px; border: 1px solid var(--border); height: 800px; overflow-y: auto; position: sticky; top: 20px; }
    .cat-group { margin-bottom: 10px; }
    .cat-header { display: flex; align-items: center; justify-content: space-between; padding: 12px 15px; background: var(--white); border: 1px solid var(--border); border-radius: 8px; font-weight: 700; font-size: 13px; cursor: pointer; transition: 0.2s; user-select: none; }
    .cat-header:hover { border-color: var(--primary); color: var(--primary); }
    .cat-header.active { background: var(--primary); color: var(--white); border-color: var(--primary); }
    .cat-header svg { flex-shrink: 0; width: 12px; height: 12px; }
    
    .service-list { display: none; padding: 10px 0 0 15px; border-left: 2px solid var(--border); margin-left: 20px; }
    .service-item { padding: 8px 12px; font-size: 12px; font-weight: 600; color: var(--accent); cursor: pointer; border-radius: 6px; transition: 0.2s; position: relative; margin-bottom: 4px; display: flex; align-items: center; gap: 8px; }
    .service-item::before { content: &#39;&#39;; position: absolute; left: -15px; top: 50%; width: 10px; height: 2px; background: var(--border); }
    .service-item:hover { background: var(--hover); color: var(--primary); }
    .service-item.active { background: #dbeafe; color: var(--primary); font-weight: 700; border: 1px solid #bfdbfe; }
    
    .svc-icon { width: 16px; height: 16px; max-width: 16px; max-height: 16px; min-width: 16px; fill: currentColor; flex-shrink: 0; }

    /* Right Panel: Ultimate Prep Engine */
    .detail-panel { background: var(--white); border-radius: 10px; border: 1px solid var(--border); display: flex; flex-direction: column; min-height: 800px; overflow: hidden; }
    .empty-state { text-align: center; color: var(--accent); margin: auto; padding: 50px; font-weight: 600; font-size: 14px; }
    
    .detail-header-wrap { background: var(--hover); padding: 25px 30px; border-bottom: 1px solid var(--border); }
    .d-head-top { display: flex; align-items: center; gap: 15px; margin-bottom: 15px; }
    
    .d-head-top svg { width: 48px; height: 48px; max-width: 48px; max-height: 48px; min-width: 48px; fill: #0078D4; flex-shrink: 0; }
    
    .d-head-top h2 { margin: 0; font-size: 26px; font-weight: 850; color: var(--text-dark); line-height: 1.2; }
    .d-memory-trick { display: inline-block; background: #fef3c7; color: #b45309; padding: 6px 12px; border-radius: 6px; font-size: 12px; font-weight: 800; border: 1px solid #fde68a; margin-top: 5px;}
    
    .d-what { font-size: 14px; color: var(--text-dark); font-weight: 500; margin: 15px 0 0 0; }

    /* Custom Tabs */
    .prep-tabs { display: flex; background: var(--white); border-bottom: 1px solid var(--border); padding: 0 20px; overflow-x: auto; }
    .prep-tab { padding: 15px 20px; font-size: 13px; font-weight: 700; color: var(--accent); cursor: pointer; border-bottom: 3px solid transparent; white-space: nowrap; transition: 0.2s; }
    .prep-tab:hover { color: var(--primary); }
    .prep-tab.active { color: var(--primary); border-bottom-color: var(--primary); }

    .tab-content { padding: 30px; display: none; }
    .tab-content.active { display: block; animation: fadeIn 0.3s ease; }
    @keyframes fadeIn { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }

    /* Standardized Blocks */
    .block-title { font-size: 16px; font-weight: 800; color: var(--text-dark); margin: 0 0 15px 0; display: flex; align-items: center; gap: 8px; border-bottom: 2px solid var(--border); padding-bottom: 5px; }
    
    .grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 25px; }
    
    .card-box { background: #f8fafc; padding: 15px; border-radius: 8px; border: 1px solid var(--border); }
    .card-box.good { border-top: 3px solid var(--success); }
    .card-box.bad { border-top: 3px solid var(--danger); }
    .card-box.sec { border-top: 3px solid #8b5cf6; } /* Security Color */
    .card-box h4 { margin: 0 0 10px 0; font-size: 13px; font-weight: 800; text-transform: uppercase; color: var(--text-dark); }
    .card-box ul { margin: 0; padding-left: 20px; font-size: 13px; color: var(--text-dark); }
    .card-box li { margin-bottom: 6px; }

    .text-box { margin-bottom: 25px; }
    .text-box p { font-size: 14px; color: var(--text-dark); margin: 0 0 10px 0; line-height: 1.6; }
    .text-box ul { padding-left: 20px; font-size: 14px; margin-bottom: 10px; }
    
    .api-pill { display: inline-block; background: #e0f2fe; color: #1e3a8a; padding: 4px 10px; border-radius: 50px; font-size: 11px; font-weight: 700; margin: 0 5px 5px 0; border: 1px solid #bfdbfe; }

    /* Q&amp;A Style */
    .qa-box { border-left: 3px solid var(--primary); padding-left: 15px; margin-bottom: 20px; background: #f8fafc; border-radius: 0 8px 8px 0; padding: 15px; }
    .qa-q { font-weight: 800; font-size: 14px; color: var(--text-dark); margin-bottom: 8px; }
    .qa-a { font-size: 13px; color: var(--accent); line-height: 1.6; }

    /* Table Style */
    .table-responsive-wrapper { width: 100%; overflow-x: auto; margin-bottom: 25px; border-radius: 8px; border: 1px solid var(--border); }
    .compare-table { width: 100%; border-collapse: collapse; font-size: 13px; min-width: 600px; }
    .compare-table th { background: #f1f5f9; padding: 12px; text-align: left; font-weight: 700; color: var(--text-dark); border-bottom: 2px solid var(--border); white-space: nowrap; }
    .compare-table td { padding: 12px; border-bottom: 1px solid var(--border); color: var(--text-dark); }

    .geo-citation { background: var(--white); padding: 25px; border-radius: 12px; border-left: 5px solid var(--primary); font-size: 14px; margin: 40px 0; color: var(--text-dark); box-shadow: 0 4px 15px rgba(0,0,0,0.03); line-height: 1.8; }
    .geo-citation strong { color: var(--primary); font-weight: 700; }

    .faq-section { margin-top: 60px; }
    .section-h2 { font-size: 20px; font-weight: 850; color: var(--text-dark); margin-bottom: 20px; }
    .faq-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; }
    .faq-card { background: var(--white); padding: 20px; border-radius: 12px; border: 1px solid var(--border); }
    .faq-card h3 { font-size: 14px; color: var(--primary); margin: 0 0 8px; font-weight: 700; }
    .faq-card p { font-size: 12px; color: var(--accent); margin: 0; line-height: 1.5; }

    .otechy-ad-top, .otechy-ad-middle, .otechy-ad-bottom { text-align: center; background: #f1f5f9; color: #cbd5e1; font-size: 10px; font-weight: 700; text-transform: uppercase; display: flex; align-items: center; justify-content: center; }

  /* Uniform Styling for Info Blocks */
    .card-box { background: #f8fafc; padding: 15px; border-radius: 8px; border: 1px solid var(--border); border-top: 4px solid var(--primary); }
    .card-box.good { border-top-color: var(--success); }
    .card-box.bad { border-top-color: var(--danger); }
    .card-box.arch { border-top-color: var(--primary); }
    .card-box.perf { border-top-color: var(--warning); }
    .card-box.ha { border-top-color: #8b5cf6; }
    .card-box.sec { border-top-color: #ec4899; }
  
    @media (max-width: 900px) { 
        .explorer-grid { grid-template-columns: 1fr; }
        .tree-panel { height: auto; max-height: 400px; position: static; }
        .grid-2 { grid-template-columns: 1fr; }
        .faq-grid { grid-template-columns: 1fr; }
        .prep-tabs { overflow-x: scroll; }
        .tab-content { padding: 20px 15px; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;
    &lt;div class=&quot;otechy-badge&quot;&gt;Azure Services &lt;span class=&quot;dynamic-year&quot;&gt;&lt;/span&gt;&lt;/div&gt;

    &lt;div class=&quot;tool-header&quot;&gt;
        &lt;h1&gt;Azure Services Quick Reference Online &lt;svg width=&quot;28&quot; height=&quot;28&quot; viewBox=&quot;0 0 24 24&quot; style=&quot;vertical-align: middle; margin-left: 8px;&quot;&gt;&lt;defs&gt;&lt;clipPath id=&quot;circleView&quot;&gt;&lt;circle cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;12&quot; /&gt;&lt;/clipPath&gt;&lt;/defs&gt;&lt;g clip-path=&quot;url(#circleView)&quot;&gt;&lt;rect width=&quot;24&quot; height=&quot;8&quot; y=&quot;0&quot; fill=&quot;#FF9933&quot;/&gt;&lt;rect width=&quot;24&quot; height=&quot;8&quot; y=&quot;8&quot; fill=&quot;#FFFFFF&quot;/&gt;&lt;rect width=&quot;24&quot; height=&quot;8&quot; y=&quot;16&quot; fill=&quot;#138808&quot;/&gt;&lt;circle cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;3&quot; fill=&quot;none&quot; stroke=&quot;#000080&quot; stroke-width=&quot;0.5&quot;/&gt;&lt;circle cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;0.8&quot; fill=&quot;#000080&quot;/&gt;&lt;g stroke=&quot;#000080&quot; stroke-width=&quot;0.2&quot;&gt;&lt;line x1=&quot;12&quot; y1=&quot;9&quot; x2=&quot;12&quot; y2=&quot;15&quot;/&gt;&lt;line x1=&quot;9&quot; y1=&quot;12&quot; x2=&quot;15&quot; y2=&quot;12&quot;/&gt;&lt;line x1=&quot;9.8&quot; y1=&quot;9.8&quot; x2=&quot;14.2&quot; y2=&quot;14.2&quot;/&gt;&lt;line x1=&quot;9.8&quot; y1=&quot;14.2&quot; x2=&quot;14.2&quot; y2=&quot;9.8&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/h1&gt;
        &lt;p class=&quot;quick-value&quot;&gt;Deep-dive cheat sheets for Cloud Architects and Developers.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 20px; height: 90px;&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;otechy-card&quot; style=&quot;padding:0; border:none; background:transparent; box-shadow:none;&quot;&gt;
        &lt;div class=&quot;search-bar-wrapper&quot;&gt;
            &lt;svg class=&quot;search-icon&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z&quot;/&gt;&lt;/svg&gt;
            &lt;input type=&quot;text&quot; id=&quot;serviceSearch&quot; placeholder=&quot;Search services (e.g. Cosmos DB, SQL Managed Instance)...&quot; oninput=&quot;filterServices()&quot;&gt;
        &lt;/div&gt;

        &lt;div class=&quot;explorer-grid&quot;&gt;
            &lt;div class=&quot;tree-panel&quot; id=&quot;treePanel&quot;&gt;&lt;/div&gt;

            &lt;div class=&quot;detail-panel&quot; id=&quot;detailPanel&quot;&gt;
                &lt;div class=&quot;empty-state&quot;&gt;
                    &lt;svg viewBox=&quot;0 0 24 24&quot; width=&quot;48&quot; height=&quot;48&quot; fill=&quot;#cbd5e1&quot; style=&quot;margin-bottom:15px;&quot;&gt;&lt;path d=&quot;M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z&quot;/&gt;&lt;/svg&gt;&lt;br&gt;
                    Select an Azure Service from the left&lt;br&gt;to load the Interview Master Guide.
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 30px 0; height: 250px;&quot;&gt;&lt;/div&gt;

	&lt;div class=&quot;geo-citation&quot;&gt;
    &lt;strong&gt;Otechy.com&lt;/strong&gt; is built for developers, cloud engineers, and software professionals preparing for modern tech interviews at startups and top MNCs. Instead of overwhelming users with generic documentation, Otechy provides structured, interview-focused breakdowns of cloud services, system design concepts, architecture tradeoffs, scalability patterns, and real-world engineering decisions. From Azure and AWS services to backend architecture and distributed systems, the platform helps candidates prepare for technical discussions, design rounds, and senior engineering interviews with concise, high-density learning content designed for real interview scenarios.
&lt;/div&gt;

    &lt;div class=&quot;faq-section&quot;&gt;
        &lt;h2 class=&quot;section-h2&quot;&gt;Frequently Searched Topics:&lt;/h2&gt;
        &lt;div class=&quot;faq-grid&quot;&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;How do I answer &quot;Which Database to Choose?&quot;&lt;/h3&gt;&lt;p&gt;Start with the data structure. If it requires strict ACID transactions and relational integrity, state Azure SQL. If it requires global scale, flexible schema, and massive read/write throughput, defend Cosmos DB.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Azure SQL Database vs. SQL Managed Instance?&lt;/h3&gt;&lt;p&gt;Azure SQL DB is pure PaaS, best for modern cloud apps. SQL Managed Instance offers near 100% compatibility with on-premises SQL Server (including CLR, cross-database queries, and SQL Agent), making it ideal for &quot;lift and shift&quot; migrations without refactoring code.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;What is a &quot;Hot Partition&quot; in Cosmos DB?&lt;/h3&gt;&lt;p&gt;A classic interview trap. It occurs when you choose a bad partition key (like &#39;Date&#39;), causing all writes to hit a single physical server, throttling performance. Always choose a high-cardinality key like &#39;UserID&#39;.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;IaaS vs PaaS vs SaaS in simple terms?&lt;/h3&gt;&lt;p&gt;IaaS (VMs): You manage the OS and runtime. PaaS (App Service): Azure manages the OS; you just deploy code. SaaS (Office 365): Azure manages everything; you just consume the software.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;When should I AVOID Serverless (Azure Functions)?&lt;/h3&gt;&lt;p&gt;Interviewers want to hear: &quot;When tasks run continuously 24/7 or when execution takes longer than the 10-minute timeout limit.&quot; Dedicated App Services or AKS are better for long-running processes.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;What is Cosmos DB&#39;s Consistency Model?&lt;/h3&gt;&lt;p&gt;It&#39;s not just Strong vs Eventual. Mention the 5 levels: Strong, Bounded Staleness, Session (Default/Most Popular), Consistent Prefix, and Eventual. Explain that Session provides read-your-own-writes guarantees.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;How do you achieve Zero Downtime Deployment?&lt;/h3&gt;&lt;p&gt;Mention &quot;Deployment Slots&quot; in Azure App Service. Deploy to a staging slot, warm it up, and then swap the IP routing instantly to production without dropping connections.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;What is the difference between Azure Blob Storage and Data Lake?&lt;/h3&gt;&lt;p&gt;Blob Storage provides a flat namespace for general object storage. Data Lake Gen2 adds a Hierarchical Namespace (actual folders/directories), which is critical for big data analytics performance (Hadoop/Spark).&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;How does Azure Front Door differ from Application Gateway?&lt;/h3&gt;&lt;p&gt;Front Door is a Global load balancer and CDN working at Layer 7. Application Gateway is a Regional load balancer working at Layer 7. Use Front Door for multi-region apps; use App Gateway for single-region web traffic.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Can I use this for AWS preparation?&lt;/h3&gt;&lt;p&gt;While the services are Azure-specific, the core problems (partitioning, cold starts, scale-out vs scale-up) translate directly to AWS (e.g., Cosmos DB = DynamoDB, Functions = Lambda).&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Is this guide updated for 2026?&lt;/h3&gt;&lt;p&gt;Yes. The concepts focus on evergreen architectural patterns and current pricing/scaling models applicable to modern cloud system design interviews.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Are retired services listed?&lt;/h3&gt;&lt;p&gt;We highlight major deprecations in the &quot;Updates/Retirals&quot; section of a service card, helping you avoid designing legacy architectures.&lt;/p&gt;&lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 30px; height: 90px;&quot;&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
    // Ultimate Detail Engine Data with EXPANDED INTERVIEW QA &amp; MISSING FIELDS
    const azureData = [
        {
            category: &quot;Databases&quot;,
            services: [
                {
                    name: &quot;Azure Cosmos DB&quot;,
                    icon: &#39;&lt;path d=&quot;M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Global, multi-model NoSQL for single-digit ms latency.&quot;,
                    whatIsIt: &quot;A globally distributed, multi-model NoSQL database service built for high-throughput, low-latency, and flexible schema applications.&quot;,
                    problemSolved: &quot;Eliminates the complexity of scaling databases globally. Solves the bottleneck of single-server RDBMS when dealing with massive, unstructured, or rapidly changing data at planet-scale.&quot;,
                    goodUse: [&quot;IoT telemetry ingestion&quot;, &quot;User profiles &amp; session management&quot;, &quot;Gaming leaderboards&quot;, &quot;Real-time product catalogs&quot;, &quot;Event-driven microservices&quot;],
                    badUse: [&quot;Complex relational JOINS&quot;, &quot;Strong transactional banking (though possible, expensive)&quot;, &quot;Heavy ad-hoc analytical queries (use Synapse instead)&quot;, &quot;Small, static datasets&quot;],
                    apiModels: [&quot;SQL API (Core)&quot;, &quot;MongoDB API&quot;, &quot;Cassandra API&quot;, &quot;Gremlin API&quot;, &quot;Table API&quot;],
                    archScaling: &quot;Uses Horizontal Partitioning based on a &#39;Partition Key&#39;. Data is divided into Logical Partitions, which are mapped to Physical Partitions. Scaling is done by provisioning RU/s (Request Units).&quot;,
                    performance: &quot;Provides single-digit millisecond latency for reads and writes worldwide. Automatic indexing of all data. Can autoscale RU/s based on workload.&quot;,
                    consistency: &quot;5 Levels: Strong → Bounded Staleness → Session (Default) → Consistent Prefix → Eventual.&quot;,
                    haDr: &quot;Turnkey global distribution. Active-Active multi-region writes. 99.999% SLA for read/write availability when multi-region is enabled.&quot;,
                    pricing: &quot;Billed on Request Units (RU/s) and Storage consumed. Multi-region replication multiplies the RU cost.&quot;,
                    security: &quot;RBAC via Entra ID, Network Isolation via Private Endpoints / VNETs, Encryption at Rest (Customer Managed Keys), Always-on encryption in transit.&quot;,
                    integrations: [&quot;Azure Functions (Change Feed)&quot;, &quot;Azure Synapse Link&quot;, &quot;Event Hubs&quot;, &quot;AKS&quot;],
                    pros: [&quot;Infinite horizontal scale&quot;, &quot;Turnkey global replication&quot;, &quot;Guaranteed single-digit ms latency&quot;],
                    cons: [&quot;Expensive at enterprise scale&quot;, &quot;Complex partition key modeling&quot;, &quot;RU estimation can be tricky&quot;, &quot;No relational joins&quot;],
                    compare: [
                        { name: &quot;Azure SQL&quot;, type: &quot;Relational&quot;, best: &quot;Transactions / Joins&quot;, weak: &quot;Global scale complexity&quot; },
                        { name: &quot;MongoDB Atlas&quot;, type: &quot;Document&quot;, best: &quot;MERN Stack Devs&quot;, weak: &quot;Native Azure Integration&quot; },
                        { name: &quot;DynamoDB (AWS)&quot;, type: &quot;Key-Value/Doc&quot;, best: &quot;AWS Ecosystem&quot;, weak: &quot;Cross-cloud lock-in&quot; }
                    ],
                    interview: [
                        { q: &quot;What is Cosmos DB and what makes it unique?&quot;, a: &quot;It&#39;s Microsoft&#39;s globally distributed, multi-model NoSQL database. It uniquely offers 5 well-defined consistency models and guarantees single-digit millisecond latencies via SLA.&quot; },
                        { q: &quot;Explain the concept of Request Units (RU/s).&quot;, a: &quot;RU/s is the currency of Cosmos DB. It abstracts CPU, Memory, and IOPS into a single measure. 1 RU represents the cost to read a 1KB document.&quot; },
                        { q: &quot;What causes a &#39;Hot Partition&#39;?&quot;, a: &quot;Choosing a low-cardinality partition key (e.g., &#39;Date&#39; or &#39;Tenant&#39; where one tenant is huge). All traffic hits one physical server, maxing out its RU limit while others sit idle.&quot; },
                        { q: &quot;How do you choose a good Partition Key?&quot;, a: &quot;It should have a wide range of values (high cardinality), spread access evenly across logical partitions, and ideally appear frequently in your query filters to avoid cross-partition queries.&quot; },
                        { q: &quot;What is a Cross-Partition Query?&quot;, a: &quot;A query that does not include the partition key in its filter. Cosmos DB must fan-out the query to all physical partitions, resulting in high RU cost and latency.&quot; },
                        { q: &quot;Why use &#39;Session&#39; consistency?&quot;, a: &quot;It is the default. It provides &#39;read-your-own-writes&#39; guarantees within a user&#39;s session while remaining fast and cheap compared to Strong consistency.&quot; },
                        { q: &quot;What is the Cosmos DB Change Feed?&quot;, a: &quot;A persistent, ordered record of changes to a container. Often used to trigger an Azure Function to update a search index, clear a cache, or send a notification immediately after a write.&quot; },
                        { q: &quot;What is a Synthetic Partition Key?&quot;, a: &quot;When no single property is highly distributed, you concatenate two properties (e.g., `tenantId_date`) or add a random suffix to create a key that evenly distributes data.&quot; },
                        { q: &quot;How do you handle backups?&quot;, a: &quot;It offers automated periodic backups (default) or continuous backup, allowing point-in-time restore within the last 30 days.&quot; },
                        { q: &quot;What is Synapse Link for Cosmos DB?&quot;, a: &quot;A cloud-native hybrid transactional and analytical processing (HTAP) capability. It allows near real-time analytics over operational data in Cosmos DB without consuming its RU/s.&quot; },
                        { q: &quot;Difference between Logical and Physical Partitions?&quot;, a: &quot;A logical partition consists of all items with the same partition key. Cosmos DB automatically maps one or more logical partitions to a physical partition (the actual underlying server).&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Event-Driven:&lt;/b&gt; Event Hub → Azure Function → Cosmos DB.&quot;,
                        &quot;&lt;b&gt;CQRS Pattern:&lt;/b&gt; Write to Cosmos DB → Change Feed triggers Function → Updates materialized view in Azure Cache for Redis.&quot;,
                        &quot;&lt;b&gt;Real-Time Analytics:&lt;/b&gt; Cosmos DB operational data automatically synced to Azure Synapse via Synapse Link without impacting RU/s.&quot;
                    ]
                },
                {
                    name: &quot;Azure Managed Instance for Apache Cassandra&quot;,
                    icon: &#39;&lt;path d=&quot;M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-1 17.93V14h2v5.93c-3.924-.263-7.23-2.923-8.625-6.55L7.5 12l-1.39-2.62c1.395-3.627 4.701-6.287 8.625-6.55V7h-2v-5.93c3.924.263 7.23 2.923 8.625 6.55L16.5 12l1.39 2.62c-1.395 3.627-4.701 6.287-8.625 6.55z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Fully managed, native Apache Cassandra service on Azure.&quot;,
                    whatIsIt: &quot;A fully managed service for Apache Cassandra that allows you to deploy and scale native Cassandra clusters in Azure with automated patching, scaling, and backups.&quot;,
                    problemSolved: &quot;Simplifies the operational overhead of managing, scaling, and maintaining native Apache Cassandra clusters while providing full native Cassandra compatibility.&quot;,
                    goodUse: [&quot;Time-series data&quot;, &quot;High-volume write workloads&quot;, &quot;Cassandra migration from on-prem&quot;, &quot;Multi-region hybrid cloud deployments&quot;, &quot;Applications requiring native CQL compatibility&quot;],
                    badUse: [&quot;Small, simple application databases&quot;, &quot;Workloads requiring ACID-compliant relational transactions&quot;, &quot;Complex analytical queries needing JOINs&quot;, &quot;Applications requiring low-latency, ad-hoc, multi-table queries&quot;],
                    apiModels: [&quot;CQL (Cassandra Query Language)&quot;],
                    archScaling: &quot;Maintains standard Cassandra architecture (Ring topology, Gossip protocol). Scaling is performed by adding nodes/clusters via the Azure control plane, which automates the provisioning and joining of new nodes.&quot;,
                    performance: &quot;Provides the same performance characteristics as native Apache Cassandra, optimized for high write-throughput and predictable latency. Performance is hardware-dependent (VM SKU choice).&quot;,
                    consistency: &quot;Tunable consistency: Allows fine-grained control over read/write consistency levels (e.g., ONE, QUORUM, ALL) per query.&quot;,
                    haDr: &quot;High availability through multi-replica replication. Supports multi-region clusters, and can act as a managed extension of an existing on-premises Cassandra data center.&quot;,
                    pricing: &quot;Billed based on the underlying Azure VM instances used for the nodes, plus associated storage and networking costs.&quot;,
                    security: &quot;Integrated with Entra ID for identity, supports VNET injection for network isolation, and provides automated encryption at rest and in transit.&quot;,
                    integrations: [&quot;Azure Backup&quot;, &quot;Azure Monitor&quot;, &quot;Azure VNETs&quot;, &quot;Hybrid Connectivity (ExpressRoute/VPN)&quot;],
                    pros: [&quot;100% Native Cassandra API compatibility&quot;, &quot;Removes operational management burden&quot;, &quot;Seamless hybrid cloud/multi-region expansion&quot;, &quot;No vendor lock-in&quot;],
                    cons: [&quot;Higher management complexity than PaaS offerings like Cosmos DB&quot;, &quot;Requires manual tuning of Cassandra parameters&quot;, &quot;Cost-intensive due to VM-based pricing model&quot;],
                    compare: [
                        { name: &quot;Cosmos DB (Cassandra API)&quot;, type: &quot;PaaS NoSQL&quot;, best: &quot;Serverless scaling / Global distribution&quot;, weak: &quot;Full native feature parity&quot; },
                        { name: &quot;Apache Cassandra (on IaaS)&quot;, type: &quot;Self-Managed&quot;, best: &quot;Full control over tuning&quot;, weak: &quot;Significant operational overhead&quot; },
                        { name: &quot;Azure SQL&quot;, type: &quot;Relational&quot;, best: &quot;Complex transactions/JOINS&quot;, weak: &quot;Different query paradigm&quot; }
                    ],
                    interview: [
                        { q: &quot;How is this different from Cosmos DB Cassandra API?&quot;, a: &quot;Cosmos DB is a serverless, abstracted NoSQL service implementing the Cassandra protocol. Managed Instance is the native Apache Cassandra software running on managed VMs.&quot; },
                        { q: &quot;What is the primary advantage of this service?&quot;, a: &quot;It allows organizations to lift-and-shift existing Cassandra workloads to Azure without changing application code, while offloading infrastructure maintenance.&quot; },
                        { q: &quot;Can this act as a hybrid extension?&quot;, a: &quot;Yes, you can add an Azure Managed Instance cluster as a new data center to an existing on-premises Cassandra ring using standard replication.&quot; },
                        { q: &quot;How does scaling work?&quot;, a: &quot;You scale by adding nodes. Because it is native Cassandra, adding nodes triggers a rebalancing process that distributes data across the new nodes.&quot; },
                        { q: &quot;Is it truly serverless?&quot;, a: &quot;No. You provision VM instances, and you are responsible for monitoring and sizing those instances to handle the workload.&quot; },
                        { q: &quot;What is a keyspace in Cassandra?&quot;, a: &quot;It is the top-level container for data, similar to a database in RDBMS, which defines data replication strategy and placement across nodes.&quot; },
                        { q: &quot;How do you handle consistency?&quot;, a: &quot;By using tunable consistency (e.g., LOCAL_QUORUM), you can balance the trade-off between latency and data accuracy based on specific query requirements.&quot; },
                        { q: &quot;What is the role of the Gossip protocol?&quot;, a: &quot;It is a peer-to-peer communication mechanism used by nodes to share state information, detect node failures, and maintain cluster membership.&quot; },
                        { q: &quot;What is a Compaction process?&quot;, a: &quot;A background process that merges SSTables to remove obsolete data, optimize disk space, and improve read performance by reducing the number of files checked.&quot; },
                        { q: &quot;Explain the Partition Key.&quot;, a: &quot;The partition key is part of the Primary Key used to determine which node in the cluster stores the data. A poor key leads to data hotspots.&quot; },
                        { q: &quot;Why use multi-datacenter replication?&quot;, a: &quot;It provides high availability and disaster recovery by ensuring data is replicated across physically separate locations, allowing for zero-downtime failover.&quot; },
                        { q: &quot;What is the purpose of a Hinted Handoff?&quot;, a: &quot;If a node is down during a write, other nodes store a &#39;hint&#39;. Once the node comes back up, it receives these hints to synchronize the missing data.&quot; },
                        { q: &quot;How does this handle backups?&quot;, a: &quot;It leverages native Cassandra snapshot capabilities combined with Azure-integrated backup services for consistent point-in-time recovery.&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Hybrid Cloud:&lt;/b&gt; Extending an existing on-premises Cassandra cluster into Azure for DR.&quot;,
                        &quot;&lt;b&gt;Migration:&lt;/b&gt; Rehosting on-premises Cassandra workloads to Azure with minimal code changes.&quot;,
                        &quot;&lt;b&gt;High-Velocity Writes:&lt;/b&gt; Utilizing Cassandra&#39;s log-structured merge-tree architecture for massive write ingestion.&quot;
                    ]
                },
                {
                    name: &quot;Azure Database for MySQL&quot;,
                    icon: &#39;&lt;path d=&quot;M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-1 17.93V14h2v5.93c-3.924-.263-7.23-2.923-8.625-6.55L7.5 12l-1.39-2.62c1.395-3.627 4.701-6.287 8.625-6.55V7h-2v-5.93c3.924.263 7.23 2.923 8.625 6.55L16.5 12l1.39 2.62c-1.395 3.627-4.701 6.287-8.625 6.55z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Fully managed, community-compatible MySQL database as a service.&quot;,
                    whatIsIt: &quot;A fully managed, relational database service based on the open-source MySQL engine, designed for high availability, security, and scalability.&quot;,
                    problemSolved: &quot;Removes the administrative burden of managing MySQL infrastructure (patching, backups, server maintenance), while providing high availability and built-in disaster recovery.&quot;,
                    goodUse: [&quot;Web applications (CMS like WordPress, Drupal)&quot;, &quot;E-commerce platforms&quot;, &quot;Internal line-of-business applications&quot;, &quot;SaaS platforms requiring RDBMS&quot;, &quot;Development and testing environments&quot;],
                    badUse: [&quot;Massive global scale NoSQL workloads (use Cosmos DB)&quot;, &quot;High-frequency, low-latency key-value caching (use Redis)&quot;, &quot;Data warehousing or massive scale OLAP (use Synapse)&quot;, &quot;Graph-heavy data models (use Gremlin)&quot;],
                    apiModels: [&quot;MySQL Wire Protocol (Standard SQL)&quot;],
                    archScaling: &quot;Available in Flexible Server (recommended) or Single Server (legacy) deployment modes. Scaling is done by adjusting compute (vCores) and storage independently or moving to different service tiers.&quot;,
                    performance: &quot;Performance is determined by vCore count and IOPS limits of the chosen SKU. Flexible Server offers burstable compute for workloads with intermittent spikes.&quot;,
                    consistency: &quot;ACID compliant. Supports standard MySQL storage engines like InnoDB.&quot;,
                    haDr: &quot;Supports Zone-redundant high availability (synchronous replication within a region) and Read Replicas (asynchronous replication across regions) for read scale-out and DR.&quot;,
                    pricing: &quot;Billed based on compute (vCores), storage (GB), and IOPS. Flexible Server allows for &#39;stop/start&#39; functionality to save costs on dev environments.&quot;,
                    security: &quot;Integration with Entra ID (Azure AD), VNET integration (Private Link), data encryption at rest (CMK), and forced SSL/TLS for all connections.&quot;,
                    integrations: [&quot;Azure App Service&quot;, &quot;AKS (Kubernetes)&quot;, &quot;Azure Functions&quot;, &quot;Data Factory&quot;, &quot;Power BI&quot;],
                    pros: [&quot;100% community MySQL compatibility&quot;, &quot;Automated backups and point-in-time restore&quot;, &quot;High Availability and read-scale options&quot;, &quot;Easy to migrate from on-prem MySQL&quot;],
                    cons: [&quot;Not designed for planet-scale write throughput&quot;, &quot;Managed service limits some low-level MySQL configurations&quot;, &quot;Scaling can require a brief restart in some configurations&quot;],
                    compare: [
                        { name: &quot;Azure SQL Database&quot;, type: &quot;Relational&quot;, best: &quot;Complex Enterprise Apps/Stored Procs&quot;, weak: &quot;More expensive&quot; },
                        { name: &quot;Cosmos DB&quot;, type: &quot;NoSQL&quot;, best: &quot;Global scale / Unstructured data&quot;, weak: &quot;No ACID JOINs&quot; },
                        { name: &quot;PostgreSQL (Azure)&quot;, type: &quot;Relational&quot;, best: &quot;Complex data/GIS/JSONB&quot;, weak: &quot;Different query dialect&quot; }
                    ],
                    interview: [
                        { q: &quot;What is the difference between Single Server and Flexible Server?&quot;, a: &quot;Flexible Server is the modern, recommended deployment mode offering better control, lower latency, zone-redundant HA, and cost-saving &#39;stop/start&#39; capabilities.&quot; },
                        { q: &quot;How do you handle horizontal read scaling?&quot;, a: &quot;By creating Read Replicas, which are asynchronous read-only copies of the primary server. You offload read queries to these replicas to reduce the load on the primary.&quot; },
                        { q: &quot;What is the benefit of VNET integration?&quot;, a: &quot;It ensures that the database is not accessible over the public internet, keeping traffic within the private Azure network for improved security.&quot; },
                        { q: &quot;Can you restore to a point in time?&quot;, a: &quot;Yes, automated backups are taken, and you can perform a Point-in-Time Restore (PITR) to any second within the defined retention period (up to 35 days).&quot; },
                        { q: &quot;What is &#39;Burstable&#39; compute?&quot;, a: &quot;It is a compute tier that allows you to pay for a lower baseline CPU performance but burst to higher CPU power when needed, ideal for dev/test.&quot; },
                        { q: &quot;How do you perform manual backups?&quot;, a: &quot;You don&#39;t need to; the service provides automated, managed backups. You can, however, use standard MySQL tools like mysqldump for logic-based exports.&quot; },
                        { q: &quot;How are security patches managed?&quot;, a: &quot;Azure automatically manages the patching of the underlying OS and the MySQL engine itself as part of the managed service.&quot; },
                        { q: &quot;What is the maximum storage limit?&quot;, a: &quot;Storage limits depend on the selected tier and vCore count, but can scale up to multiple terabytes per instance.&quot; },
                        { q: &quot;How do you migrate to Azure MySQL?&quot;, a: &quot;Using the Azure Database Migration Service (DMS) or standard community tools like MySQL Workbench to export/import data from on-prem to the cloud instance.&quot; },
                        { q: &quot;Is it possible to use Entra ID for database authentication?&quot;, a: &quot;Yes, Azure Database for MySQL supports Entra ID authentication, allowing for centralized identity management and removing the need for local passwords.&quot; },
                        { q: &quot;How do you monitor performance?&quot;, a: &quot;Through Azure Monitor, Query Store, and performance insights, which identify slow-running queries and resource bottlenecks.&quot; },
                        { q: &quot;Why would you choose MySQL over PostgreSQL on Azure?&quot;, a: &quot;Usually due to existing ecosystem familiarity, legacy application requirements, or specific MySQL-only plugins/drivers.&quot; },
                        { q: &quot;What is Query Store?&quot;, a: &quot;A built-in feature that keeps track of your query performance history over time, allowing you to quickly spot regressions and optimize long-running SQL.&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Multi-Tier Web App:&lt;/b&gt; Web/App tier in Azure App Service + Azure Database for MySQL backend.&quot;,
                        &quot;&lt;b&gt;Read Scale-out:&lt;/b&gt; Primary MySQL node for writes + Multiple Read Replicas for reporting and analytics traffic.&quot;,
                        &quot;&lt;b&gt;DR Pattern:&lt;/b&gt; Geo-redundant read replicas to allow for cross-region failover during primary site failure.&quot;
                    ]
                },
              	{
                    name: &quot;Azure Database for PostgreSQL&quot;,
                    icon: &#39;&lt;path d=&quot;M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-1 17.93V14h2v5.93c-3.924-.263-7.23-2.923-8.625-6.55L7.5 12l-1.39-2.62c1.395-3.627 4.701-6.287 8.625-6.55V7h-2v-5.93c3.924.263 7.23 2.923 8.625 6.55L16.5 12l1.39 2.62c-1.395 3.627-4.701 6.287-8.625 6.55z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Fully managed, highly extensible, open-source PostgreSQL engine on Azure.&quot;,
                    whatIsIt: &quot;A fully managed relational database service based on the open-source PostgreSQL engine, optimized for performance, scalability, and mission-critical reliability.&quot;,
                    problemSolved: &quot;Eliminates the operational overhead of managing PostgreSQL infrastructure (backups, patching, HA), while providing advanced features like JSONB support, GIS extensions, and high availability.&quot;,
                    goodUse: [&quot;Complex web applications&quot;, &quot;Geospatial applications (PostGIS)&quot;, &quot;Time-series data (TimescaleDB)&quot;, &quot;Applications requiring JSONB document storage&quot;, &quot;Analytical workloads&quot;],
                    badUse: [&quot;Small-scale static apps where cost-efficiency is paramount (though Burstable tier exists)&quot;, &quot;Massive planet-scale NoSQL write workloads&quot;, &quot;Simple key-value stores where Redis is a better fit&quot;],
                    apiModels: [&quot;Standard PostgreSQL wire protocol (SQL)&quot;],
                    archScaling: &quot;Available as Flexible Server. Scales vertically by modifying vCores/RAM and horizontally using Read Replicas. Also supports Elastic Clusters for horizontal sharding.&quot;,
                    performance: &quot;Highly tunable via parameters. Performance varies based on compute tier (Burstable, General Purpose, Memory Optimized) and storage IOPS provisioned.&quot;,
                    consistency: &quot;Strictly ACID compliant. Supports advanced concurrency control mechanisms common to PostgreSQL.&quot;,
                    haDr: &quot;Supports same-zone or zone-redundant HA with warm standby. Provides automatic backups with point-in-time recovery and geo-redundant read replicas.&quot;,
                    pricing: &quot;Billed by vCores, storage (GB), and IOPS. Features burstable compute tiers and the ability to stop/start servers to optimize costs.&quot;,
                    security: &quot;Integrated with Entra ID, supports Private Link/VNET injection, enforced SSL/TLS, and encryption at rest with customer-managed keys.&quot;,
                    integrations: [&quot;Azure App Service&quot;, &quot;AKS&quot;, &quot;Azure Functions&quot;, &quot;Power BI&quot;, &quot;Data Factory&quot;],
                    pros: [&quot;Full community PostgreSQL compatibility&quot;, &quot;Advanced extensions like PostGIS&quot;, &quot;Excellent JSONB support&quot;, &quot;Granular server configuration control&quot;],
                    cons: [&quot;Management complexity higher than basic PaaS if deep tuning is needed&quot;, &quot;Vertical scaling involves brief restarts (near-zero downtime)&quot;, &quot;No native ACID-compliant global multi-master writes&quot;],
                    compare: [
                        { name: &quot;Azure SQL&quot;, type: &quot;Relational&quot;, best: &quot;Enterprise/Legacy Microsoft stacks&quot;, weak: &quot;Proprietary dialect&quot; },
                        { name: &quot;MySQL&quot;, type: &quot;Relational&quot;, best: &quot;Simple web/CMS apps&quot;, weak: &quot;Fewer advanced data types&quot; },
                        { name: &quot;Cosmos DB&quot;, type: &quot;NoSQL&quot;, best: &quot;Global scale&quot;, weak: &quot;Lacks relational depth&quot; }
                    ],
                    interview: [
                        { q: &quot;What is the Flexible Server deployment option?&quot;, a: &quot;It is the recommended deployment mode offering granular control over maintenance windows, cost-optimization via stop/start, and zone-redundant high availability.&quot; },
                        { q: &quot;How does PostgreSQL handle unstructured data?&quot;, a: &quot;It uses the JSONB data type, which stores JSON data in a decomposed binary format, allowing for efficient indexing and querying of semi-structured data.&quot; },
                        { q: &quot;What is the advantage of PostGIS?&quot;, a: &quot;It is an extension that adds support for geographic objects, allowing you to run location-based queries and spatial analysis directly in SQL.&quot; },
                        { q: &quot;Explain the purpose of pgBouncer.&quot;, a: &quot;It is a connection pooler that maintains a pool of connections to the database, reducing the resource overhead of creating new connections for every application request.&quot; },
                        { q: &quot;What is a Read Replica used for?&quot;, a: &quot;It offloads read-only workloads from the primary server to scale horizontally, ensuring the primary remains performant for write operations.&quot; },
                        { q: &quot;How do you achieve high availability?&quot;, a: &quot;By enabling zone-redundant HA, which automatically maintains a synchronous warm standby in a different availability zone.&quot; },
                        { q: &quot;What is the difference between General Purpose and Memory Optimized?&quot;, a: &quot;General Purpose is balanced for most workloads, while Memory Optimized provides a higher RAM-to-vCore ratio for memory-intensive applications.&quot; },
                        { q: &quot;How are maintenance and patching handled?&quot;, a: &quot;The service performs automated patching of the underlying OS and database engine during a user-configurable maintenance window.&quot; },
                        { q: &quot;What is the role of an Availability Zone?&quot;, a: &quot;It is a physically separate location within an Azure region, used to provide fault tolerance and high availability.&quot; },
                        { q: &quot;How can you optimize costs?&quot;, a: &quot;By using the Burstable compute tier for non-continuous workloads and using the stop/start feature for development environments.&quot; },
                        { q: &quot;What is logical replication?&quot;, a: &quot;It allows you to replicate data at the table or database level, providing more flexibility than physical streaming replication.&quot; },
                        { q: &quot;How is security managed for connections?&quot;, a: &quot;By using VNET injection or Private Endpoints, you keep the database off the public internet, and use Entra ID for identity-based access.&quot; },
                        { q: &quot;What is Point-in-Time Restore (PITR)?&quot;, a: &quot;A feature that allows you to restore your database to any specific second within your backup retention period (up to 35 days).&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Geospatial App:&lt;/b&gt; Mobile app tracking logistics using PostGIS for location data.&quot;,
                        &quot;&lt;b&gt;Modern SaaS:&lt;/b&gt; Multi-tenant application using row-level security and JSONB for flexible user preferences.&quot;,
                        &quot;&lt;b&gt;Read-Heavy Dashboard:&lt;/b&gt; Primary instance for writes with multiple Read Replicas feeding data to Power BI dashboards.&quot;
                    ]
                },
                {
                    name: &quot;Azure SQL Database&quot;,
                    icon: &#39;&lt;path d=&quot;M12 2C6.48 2 2 4.24 2 7v10c0 2.76 4.48 5 10 5s10-2.24 10-5V7c0-2.76-4.48-5-10-5zm0 8c-4.42 0-8-1.79-8-4s3.58-4 8-4 8 1.79 8 4-3.58 4-8 4z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Fully managed RDBMS for modern, cloud-native apps.&quot;,
                    whatIsIt: &quot;A fully managed platform as a service (PaaS) database engine that handles upgrading, patching, backups, and monitoring without user involvement.&quot;,
                    problemSolved: &quot;Removes the DBA overhead of maintaining SQL Server VMs. Guarantees high availability and compliance for structured relational datasets requiring ACID compliance.&quot;,
                    goodUse: [&quot;Modern cloud-native apps&quot;, &quot;Financial transactions&quot;, &quot;SaaS multi-tenant backends&quot;, &quot;Applications requiring complex JOINS&quot;],
                    badUse: [&quot;Legacy apps requiring SQL Agent (Use Managed Instance)&quot;, &quot;Unstructured data&quot;, &quot;Massive global active-active writes (Use Cosmos)&quot;],
                    apiModels: [&quot;T-SQL&quot;, &quot;TDS Endpoint&quot;, &quot;REST API (Data API Builder)&quot;],
                    archScaling: &quot;Scale up (Vertical) by increasing vCores or DTUs. Read scale-out using Read Replicas. For multi-tenant SaaS, &#39;Elastic Pools&#39; allow sharing resources across many databases.&quot;,
                    performance: &quot;Highly optimized query engine. Built-in Intelligence provides automatic performance tuning, creating and dropping indexes based on actual usage patterns.&quot;,
                    consistency: &quot;Strict ACID (Atomicity, Consistency, Isolation, Durability). Strong consistency.&quot;,
                    haDr: &quot;Built-in High Availability (99.99%). Supports &#39;Active Geo-Replication&#39; for readable secondaries in different regions.&quot;,
                    pricing: &quot;vCore model (Compute + Storage) or DTU model (Bundled). Serverless tier pauses billing when inactive.&quot;,
                    security: &quot;Microsoft Defender for SQL, Always Encrypted, Dynamic Data Masking, Row-Level Security, VNET rules, Entra ID Authentication.&quot;,
                    integrations: [&quot;App Service&quot;, &quot;Azure Data Factory&quot;, &quot;Power BI&quot;, &quot;Azure Key Vault&quot;],
                    pros: [&quot;Zero maintenance overhead&quot;, &quot;Built-in AI tuning&quot;, &quot;Serverless tier for intermittent workloads&quot;],
                    cons: [&quot;Vertical scaling limits&quot;, &quot;Missing legacy features (SQL Agent)&quot;, &quot;Geo-distributed writes are complex&quot;],
                    compare: [
                        { name: &quot;SQL Managed Instance&quot;, type: &quot;PaaS (Full SQL)&quot;, best: &quot;Lift &amp; Shift migrations&quot;, weak: &quot;Slower provisioning / VNet required&quot; },
                        { name: &quot;Cosmos DB&quot;, type: &quot;NoSQL&quot;, best: &quot;Global Scale/Throughput&quot;, weak: &quot;No ACID Joins&quot; },
                        { name: &quot;PostgreSQL&quot;, type: &quot;Open Source Relational&quot;, best: &quot;Avoiding vendor lock-in&quot;, weak: &quot;Missing native T-SQL features&quot; }
                    ],
                    interview: [
                        { q: &quot;Azure SQL DB vs. Managed Instance?&quot;, a: &quot;Azure SQL DB is for modern cloud apps (pure PaaS). Managed Instance is for migrating legacy on-prem SQL Servers because it supports almost 100% of surface area features (SQL Agent, Service Broker, Cross-DB queries).&quot; },
                        { q: &quot;What is an Elastic Pool?&quot;, a: &quot;A shared resource pool for multiple databases with unpredictable usage. It prevents over-provisioning for SaaS apps where one tenant might spike while others are idle.&quot; },
                        { q: &quot;DTU vs vCore purchasing model?&quot;, a: &quot;DTU is a bundled measure of CPU, Memory, and I/O (legacy). vCore allows independent scaling of Compute and Storage and supports Azure Hybrid Benefit (cheaper if you own licenses).&quot; },
                        { q: &quot;How do you handle Disaster Recovery?&quot;, a: &quot;Implement Auto-Failover Groups. If the primary region goes down, traffic is automatically routed to the secondary region with the same connection string.&quot; },
                        { q: &quot;What is Active Geo-Replication?&quot;, a: &quot;Allows creating up to 4 readable secondary databases in the same or different regions to offload read-heavy query workloads.&quot; },
                        { q: &quot;Explain Dynamic Data Masking.&quot;, a: &quot;A security feature that limits sensitive data exposure by masking it to non-privileged users at the query level without altering the actual data in the database (e.g., masking a credit card to XXXX-XXXX-XXXX-1234).&quot; },
                        { q: &quot;What is the Serverless compute tier?&quot;, a: &quot;A tier that automatically scales compute based on workload demand and pauses the database during inactive periods, billing only for storage, making it perfect for intermittent apps.&quot; },
                        { q: &quot;How do you securely connect an App Service to Azure SQL?&quot;, a: &quot;Assign a Managed Identity to the App Service, create a contained user mapped to that identity in SQL, and use VNet Integration to keep traffic off the public internet.&quot; },
                        { q: &quot;What is Query Store?&quot;, a: &quot;A built-in feature that acts like a &#39;flight data recorder&#39; for the database. It captures a history of queries, plans, and runtime statistics to help troubleshoot performance regression.&quot; },
                        { q: &quot;Does Azure SQL support cross-database queries?&quot;, a: &quot;Azure SQL DB natively does not support simple cross-database queries like on-prem SQL (requires Elastic Query). If heavily needed, use SQL Managed Instance.&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Web API Backend:&lt;/b&gt; Azure App Service (Web App) → VNet Integration → Azure SQL Database.&quot;,
                        &quot;&lt;b&gt;SaaS Multi-Tenant:&lt;/b&gt; One DB per tenant managed inside an Azure SQL Elastic Pool for cost efficiency.&quot;,
                        &quot;&lt;b&gt;Read Heavy Apps:&lt;/b&gt; Primary DB handles writes; read-heavy reporting queries hit the Geo-Replicated Secondary endpoint.&quot;
                    ]
                },
                {
                    name: &quot;Azure SQL Managed Instance&quot;,
                    icon: &#39;&lt;path d=&quot;M4 6h16v12H4z M10 10h4v4h-4z M12 2C6.48 2 2 4.24 2 7v10c0 2.76 4.48 5 10 5s10-2.24 10-5V7c0-2.76-4.48-5-10-5zm0 8c-4.42 0-8-1.79-8-4s3.58-4 8-4 8 1.79 8 4-3.58 4-8 4z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Lift-and-shift PaaS for legacy SQL Server migrations.&quot;,
                    whatIsIt: &quot;A scalable cloud database service that combines the broadest SQL Server engine compatibility with all the benefits of a fully managed and evergreen PaaS.&quot;,
                    problemSolved: &quot;Allows enterprises to migrate large, complex on-premises SQL Server databases to the cloud without having to rewrite code or manage IaaS Virtual Machines.&quot;,
                    goodUse: [&quot;Lift-and-shift migrations to the cloud&quot;, &quot;Apps needing SQL Server Agent&quot;, &quot;Apps needing Cross-Database queries&quot;, &quot;Apps needing CLR modules&quot;],
                    badUse: [&quot;Brand new, modern microservices (use Azure SQL DB)&quot;, &quot;Simple, single databases (overkill)&quot;],
                    apiModels: [&quot;T-SQL&quot;, &quot;SQL Native Client&quot;],
                    archScaling: &quot;Must be deployed within a dedicated Azure Virtual Network (VNet). Scales compute and storage independently using the vCore model.&quot;,
                    performance: &quot;Near 100% compatibility with the latest SQL Server (Enterprise Edition) engine.&quot;,
                    consistency: &quot;Strict ACID compliance. Strong consistency.&quot;,
                    haDr: &quot;Automated backups, Point-in-time restore, and Auto-failover groups for disaster recovery.&quot;,
                    pricing: &quot;Generally more expensive baseline than Azure SQL DB. Highly cost-effective if utilizing Azure Hybrid Benefit.&quot;,
                    security: &quot;Native VNet isolation (no public endpoint by default), Transparent Data Encryption, Auditing, Entra ID integration.&quot;,
                    integrations: [&quot;Azure Data Migration Service (DMS)&quot;, &quot;Azure ExpressRoute&quot;, &quot;Entra ID&quot;],
                    pros: [&quot;No code refactoring needed for migration&quot;, &quot;Full SQL Server feature set&quot;, &quot;PaaS management (no OS patching)&quot;],
                    cons: [&quot;Requires a dedicated subnet/VNet&quot;, &quot;Slower to provision and scale compared to Azure SQL DB&quot;, &quot;Higher minimum cost&quot;],
                    compare: [
                        { name: &quot;Azure SQL DB&quot;, type: &quot;PaaS&quot;, best: &quot;Modern cloud-native apps&quot;, weak: &quot;Lacks SQL Agent / Cross-DB&quot; },
                        { name: &quot;SQL on VM&quot;, type: &quot;IaaS&quot;, best: &quot;Absolute OS control&quot;, weak: &quot;Manual patching &amp; backups required&quot; }
                    ],
                    interview: [
                        { q: &quot;Why use Managed Instance instead of SQL on a VM?&quot;, a: &quot;With a VM, you must manage OS patching, SQL Server updates, and configure backups manually. Managed Instance does all this automatically while providing the same engine compatibility.&quot; },
                        { q: &quot;Can a Managed Instance be accessed via the public internet?&quot;, a: &quot;By default, no. It is deployed inside a private VNet for security. (Though a public endpoint can be explicitly enabled if absolutely necessary).&quot; },
                        { q: &quot;What is Azure Hybrid Benefit?&quot;, a: &quot;A licensing benefit that allows you to use your existing on-premises SQL Server licenses with active Software Assurance to save up to 55% on Managed Instance costs.&quot; },
                        { q: &quot;Does Managed Instance support SQL Server Agent?&quot;, a: &quot;Yes. Unlike Azure SQL Database, Managed Instance fully supports SQL Server Agent for scheduling maintenance tasks and background jobs.&quot; },
                        { q: &quot;How do you migrate to Managed Instance with zero downtime?&quot;, a: &quot;Use Azure Data Migration Service (DMS) or Log Replay Service (LRS) to replicate data continuously from on-prem to MI, then perform a quick cutover.&quot; },
                        { q: &quot;Does MI support cross-database queries?&quot;, a: &quot;Yes, it fully supports three-part names and distributed queries, making it the ideal choice for older applications that rely heavily on multiple intertwined databases.&quot; },
                        { q: &quot;What are the networking requirements for MI?&quot;, a: &quot;It must be deployed in an empty, dedicated subnet within an Azure VNet. It requires specific Network Security Group (NSG) and Route Table configurations to function.&quot; },
                        { q: &quot;Does it support Machine Learning Services?&quot;, a: &quot;Yes, Managed Instance supports Machine Learning Services (Python and R) directly inside the database engine.&quot; },
                        { q: &quot;What is the difference between General Purpose and Business Critical tiers?&quot;, a: &quot;General Purpose uses remote Azure Premium Storage. Business Critical uses super-fast local SSDs and includes an Always On Availability Group with read-only replicas.&quot; },
                        { q: &quot;Can you stop or pause a Managed Instance?&quot;, a: &quot;Yes, Microsoft recently introduced the Stop/Start capability for Managed Instance, allowing you to save on compute costs during non-working hours.&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Enterprise Migration:&lt;/b&gt; On-premise SQL Server → Azure Data Migration Service → SQL Managed Instance (inside VNet) connected via ExpressRoute.&quot;
                    ]
                },
                {
                    name: &quot;Azure HorizonDB&quot;,
                    icon: &#39;&lt;path d=&quot;M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-1 17.93V14h2v5.93c-3.924-.263-7.23-2.923-8.625-6.55L7.5 12l-1.39-2.62c1.395-3.627 4.701-6.287 8.625-6.55V7h-2v-5.93c3.924.263 7.23 2.923 8.625 6.55L16.5 12l1.39 2.62c-1.395 3.627-4.701 6.287-8.625 6.55z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Cloud-native, AI-optimized, PostgreSQL-compatible database with disaggregated storage.&quot;,
                    whatIsIt: &quot;A high-scale, managed PostgreSQL service designed for AI and cloud-native workloads, featuring a Rust-based storage engine that decouples compute and storage.&quot;,
                    problemSolved: &quot;Addresses the scalability bottlenecks of traditional PostgreSQL by separating storage from compute, enabling sub-millisecond commits and massive throughput for mission-critical AI apps.&quot;,
                    goodUse: [&quot;AI-native applications&quot;, &quot;Large-scale RAG (Retrieval-Augmented Generation)&quot;, &quot;High-throughput OLTP workloads&quot;, &quot;Multi-tenant SaaS platforms&quot;, &quot;Mission-critical enterprise migration&quot;],
                    badUse: [&quot;Simple, low-scale applications (overkill)&quot;, &quot;Workloads requiring non-Postgres engines&quot;, &quot;Environments requiring total control over low-level Postgres binaries&quot;],
                    apiModels: [&quot;Standard PostgreSQL wire protocol (SQL)&quot;],
                    archScaling: &quot;Features a disaggregated architecture. Scales horizontally to 3,072 vCores and supports auto-scaling shared storage up to 128TB. Compute and storage scale independently.&quot;,
                    performance: &quot;Provides up to 3x higher throughput than open-source Postgres. Uses tiered caching and a distributed WAL (Write-Ahead Log) for sub-millisecond multi-zone commit latencies.&quot;,
                    consistency: &quot;ACID-compliant with strong consistency guarantees, optimized for high-write volume through quorum-based durability.&quot;,
                    haDr: &quot;Zone-redundant architecture with ~5-second failover. Uses shared storage across availability zones to eliminate data movement during recovery.&quot;,
                    pricing: &quot;Billed based on provisioned compute (vCores) and storage/IOPS usage. Designed for enterprise cost-efficiency at scale.&quot;,
                    security: &quot;Integrated with Entra ID, Private Link/VNET support, always-on encryption, and integration with Azure Defender for Cloud.&quot;,
                    integrations: [&quot;Microsoft Foundry (AI models)&quot;, &quot;Visual Studio Code (Postgres Extension)&quot;, &quot;Azure Monitor&quot;, &quot;GitHub Copilot&quot;],
                    pros: [&quot;Extreme scale-out capabilities&quot;, &quot;Rust-based engine for reliability&quot;, &quot;Built-in DiskANN vector indexing&quot;, &quot;Predictable, low-latency performance&quot;],
                    cons: [&quot;Currently in private/limited preview&quot;, &quot;More complex architecture than standard Managed Postgres&quot;, &quot;May require re-architecting for maximum benefit&quot;],
                    compare: [
                        { name: &quot;Amazon Aurora&quot;, type: &quot;Cloud-Native Postgres&quot;, best: &quot;Established market leader&quot;, weak: &quot;AWS-exclusive&quot; },
                        { name: &quot;Azure Database for PostgreSQL&quot;, type: &quot;Managed Postgres&quot;, best: &quot;Lift-and-shift / Compatibility&quot;, weak: &quot;Lower performance ceiling&quot; },
                        { name: &quot;Google AlloyDB&quot;, type: &quot;Cloud-Native Postgres&quot;, best: &quot;Integration with GCP AI&quot;, weak: &quot;GCP-exclusive&quot; }
                    ],
                    interview: [
                        { q: &quot;What is the core architectural innovation in HorizonDB?&quot;, a: &quot;The decoupling of compute and storage, utilizing a Rust-based engine to manage storage durably and independently, which removes &#39;size of data&#39; bottlenecks.&quot; },
                        { q: &quot;How does it improve vector search?&quot;, a: &quot;It integrates DiskANN, which enables high-performance similarity searches by keeping indexes on disk with compact in-memory representations, outperforming standard HNSW indexes.&quot; },
                        { q: &quot;What role does Rust play?&quot;, a: &quot;The storage layer is written in Rust to provide memory safety, reduce buffer overflow risks, and deliver predictable performance at scale.&quot; },
                        { q: &quot;Can I use standard PostgreSQL tools?&quot;, a: &quot;Yes, it is fully wire-compatible with the PostgreSQL ecosystem, including standard drivers and the VS Code Postgres extension.&quot; },
                        { q: &quot;How does it handle failover?&quot;, a: &quot;By using shared storage across availability zones, failover does not require data movement or re-synchronization, allowing for recovery times around 5 seconds.&quot; },
                        { q: &quot;Is this replacing Azure Database for PostgreSQL?&quot;, a: &quot;No, it is a complementary service targeted at specific AI-native and high-scale use cases where traditional Postgres architectures hit limits.&quot; },
                        { q: &quot;What is the limit of compute and storage?&quot;, a: &quot;It can scale up to 3,072 vCores and support databases up to 128TB in size.&quot; },
                        { q: &quot;How are writes handled for high performance?&quot;, a: &quot;Writes commit to a distributed WAL (Write-Ahead Log) storage layer using quorum-based durability, minimizing replication hops.&quot; },
                        { q: &quot;Does it support AI model management?&quot;, a: &quot;Yes, it includes built-in AI model management for Microsoft Foundry, allowing users to invoke LLMs and embeddings directly via SQL.&quot; },
                        { q: &quot;How does caching work?&quot;, a: &quot;Page servers dynamically cache frequently accessed data, ensuring that performance scales with workload demand rather than just raw storage size.&quot; },
                        { q: &quot;Is it suitable for multi-tenant applications?&quot;, a: &quot;Yes, its ability to scale horizontally and its performance predictability make it well-suited for high-volume multi-tenant SaaS backends.&quot; },
                        { q: &quot;What is the primary benefit over standard Postgres?&quot;, a: &quot;Dramatic improvements in transactional throughput, significantly lower commit latencies, and the ability to scale compute/storage independently.&quot; },
                        { q: &quot;How is security different from standard Postgres?&quot;, a: &quot;It includes native support for Entra ID and Private Endpoints, along with integration into Azure&#39;s enterprise-grade governance and compliance framework.&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;AI-Native Backend:&lt;/b&gt; Storing vector embeddings and transactional data in one Postgres-compatible engine for RAG pipelines.&quot;,
                        &quot;&lt;b&gt;Scale-Out SaaS:&lt;/b&gt; Supporting massive multi-tenant volumes with independent compute/storage scaling.&quot;,
                        &quot;&lt;b&gt;Global AI Agent Infrastructure:&lt;/b&gt; Leveraging sub-millisecond latencies to support real-time reasoning and state management for autonomous agents.&quot;
                    ]
                },
                {
                    name: &quot;Azure Managed Redis&quot;,
                    icon: &#39;&lt;path d=&quot;M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-1 17.93V14h2v5.93c-3.924-.263-7.23-2.923-8.625-6.55L7.5 12l-1.39-2.62c1.395-3.627 4.701-6.287 8.625-6.55V7h-2v-5.93c3.924.263 7.23 2.923 8.625 6.55L16.5 12l1.39 2.62c-1.395 3.627-4.701 6.287-8.625 6.55z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Fully managed, high-performance in-memory data store for hyperscale cloud environments.&quot;,
                    whatIsIt: &quot;A first-party, fully managed service providing the latest Redis Enterprise innovations, optimized for low latency, high throughput, and modern AI workloads.&quot;,
                    problemSolved: &quot;Replaces legacy Azure Cache for Redis by offering multi-core utilization, enhanced throughput, better reliability (up to 99.999% SLA), and advanced data structures for AI applications.&quot;,
                    goodUse: [&quot;Real-time AI/ML inferencing (RAG)&quot;, &quot;High-performance caching&quot;, &quot;Session management&quot;, &quot;Leaderboards and gaming&quot;, &quot;Real-time stream processing&quot;, &quot;Deduplication and messaging&quot;],
                    badUse: [&quot;Massive datasets that exceed cost-effective memory limits (unless using Flash Optimized)&quot;, &quot;Workloads requiring standard relational database features (ACID transactions, complex JOINs)&quot;, &quot;Small, low-traffic apps where costs outweigh the performance gains&quot;],
                    apiModels: [&quot;Redis Command Protocol&quot;, &quot;Redis Modules (Search, JSON, Bloom, TimeSeries)&quot;],
                    archScaling: &quot;Decouples compute and memory. Available in multiple tiers (Memory Optimized, Balanced, Compute Optimized, Flash Optimized) and supports horizontal scaling via sharding.&quot;,
                    performance: &quot;Provides up to 15x higher operations per second compared to previous caching offerings. Multi-core utilization allows for significant throughput improvements.&quot;,
                    consistency: &quot;Configurable consistency levels; supports high availability with automatic replication across zones or regions.&quot;,
                    haDr: &quot;Zone-redundant by default with optional active geo-replication, enabling global read/write capabilities for mission-critical applications.&quot;,
                    pricing: &quot;Billed based on tier (Memory/Balanced/Compute/Flash Optimized), instance size, and throughput requirements. Offers reserved capacity for significant cost savings.&quot;,
                    security: &quot;Deep integration with Microsoft Entra ID (RBAC), private link (VNET injection), and customer-managed keys (CMK) for encryption at rest.&quot;,
                    integrations: [&quot;Azure OpenAI Service&quot;, &quot;Azure Container Apps&quot;, &quot;Azure Functions&quot;, &quot;Azure Kubernetes Service&quot;, &quot;Power BI&quot;],
                    pros: [&quot;Latest Redis Enterprise innovations&quot;, &quot;Up to 99.999% availability SLA&quot;, &quot;Built-in support for vector similarity search&quot;, &quot;Seamless migration path from legacy Redis offerings&quot;],
                    cons: [&quot;Higher architectural complexity for beginners compared to basic caching&quot;, &quot;Specific command limitations typical of managed services&quot;, &quot;Pricing can be premium compared to self-hosted Redis&quot;],
                    compare: [
                        { name: &quot;Azure Cache for Redis&quot;, type: &quot;Legacy PaaS&quot;, best: &quot;Simple existing setups&quot;, weak: &quot;Being retired by 2028; lacks modern AI features&quot; },
                        { name: &quot;Redis (on IaaS/AKS)&quot;, type: &quot;Self-Managed&quot;, best: &quot;Total control&quot;, weak: &quot;High operational overhead&quot; },
                        { name: &quot;Cosmos DB&quot;, type: &quot;NoSQL&quot;, best: &quot;Global persistence/Scale&quot;, weak: &quot;Different latency profile&quot; }
                    ],
                    interview: [
                        { q: &quot;What is the key difference between Azure Managed Redis and Azure Cache for Redis?&quot;, a: &quot;Managed Redis is built on the Redis Enterprise stack, enabling multi-core scaling, vector search, active geo-replication, and higher performance ceilings.&quot; },
                        { q: &quot;How does it support generative AI?&quot;, a: &quot;It provides built-in modules like RediSearch and RedisJSON, which enable vector similarity search (KNN) for RAG applications and semantic caching.&quot; },
                        { q: &quot;What is &#39;Flash Optimized&#39; tier?&quot;, a: &quot;It is a cost-effective tier that intelligently moves infrequently accessed data from RAM to NVMe storage, allowing for much larger dataset support.&quot; },
                        { q: &quot;How is high availability achieved?&quot;, a: &quot;It is zone-redundant by default, replicating data across at least two nodes in different availability zones.&quot; },
                        { q: &quot;Can you use Entra ID for access control?&quot;, a: &quot;Yes, it supports Microsoft Entra ID authentication, which is recommended over traditional access keys for better security.&quot; },
                        { q: &quot;How do you handle scaling?&quot;, a: &quot;You can scale horizontally by adding shards or vertically by changing the SKU/tier, depending on throughput and memory needs.&quot; },
                        { q: &quot;What is the impact of Private Link?&quot;, a: &quot;It ensures all traffic remains within the private Azure network, eliminating exposure to the public internet.&quot; },
                        { q: &quot;Why use active geo-replication?&quot;, a: &quot;It enables simultaneous multi-region read/write access, essential for global applications requiring low latency everywhere.&quot; },
                        { q: &quot;Does it support data persistence?&quot;, a: &quot;Yes, it supports RDB (snapshots) and AOF (append-only file) to ensure data durability beyond memory storage.&quot; },
                        { q: &quot;What are the limitations of RBAC?&quot;, a: &quot;Current implementations provide access to all keyspaces once authenticated; granular RBAC per keyspace is limited.&quot; },
                        { q: &quot;How do you optimize costs for development?&quot;, a: &quot;By using the Memory Optimized tier (which has a high memory-to-vCPU ratio) or non-HA configurations for non-production workloads.&quot; },
                        { q: &quot;What is a major advantage of the multi-core utilization?&quot;, a: &quot;It significantly increases the number of operations per second (throughput) by avoiding single-threaded bottlenecks found in community Redis.&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Semantic Caching:&lt;/b&gt; Using RediSearch for vector-based caching to accelerate RAG workflows.&quot;,
                        &quot;&lt;b&gt;Global Leaderboards:&lt;/b&gt; Utilizing sorted sets and active geo-replication for low-latency global gaming scores.&quot;,
                        &quot;&lt;b&gt;Real-time Deduplication:&lt;/b&gt; Implementing Bloom filters for high-speed duplicate request checking.&quot;
                    ]
                },
                {
                    name: &quot;Azure Cache for Redis&quot;,
                    icon: &#39;&lt;path d=&quot;M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-1 17.93V14h2v5.93c-3.924-.263-7.23-2.923-8.625-6.55L7.5 12l-1.39-2.62c1.395-3.627 4.701-6.287 8.625-6.55V7h-2v-5.93c3.924.263 7.23 2.923 8.625 6.55L16.5 12l1.39 2.62c-1.395 3.627-4.701 6.287-8.625 6.55z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Managed in-memory data store for caching and session management.&quot;,
                    whatIsIt: &quot;A fully managed service based on the open-source Redis engine, providing high-performance access to data for applications needing low-latency retrieval.&quot;,
                    problemSolved: &quot;Solves application performance bottlenecks by offloading heavy database queries or expensive computations to a fast, in-memory cache.&quot;,
                    goodUse: [&quot;Data caching&quot;, &quot;Session state management&quot;, &quot;Web page output caching&quot;, &quot;Leaderboards&quot;, &quot;Message brokering / Pub-Sub&quot;],
                    badUse: [&quot;Large-scale enterprise AI vector search (use Managed Redis/RediSearch)&quot;, &quot;Storing data that must persist across total system failures&quot;, &quot;Complex data-heavy relational query requirements&quot;],
                    apiModels: [&quot;Redis Command Protocol&quot;],
                    archScaling: &quot;Available in Basic, Standard, and Premium tiers. Basic/Standard offer simple replication, while Premium supports clustering, persistence, and geo-replication.&quot;,
                    performance: &quot;Provides sub-millisecond response times for cached operations. Performance is tied to the selected tier and instance size.&quot;,
                    consistency: &quot;Provides strong consistency for individual operations; eventual consistency for read-replicas.&quot;,
                    haDr: &quot;Standard and Premium tiers provide High Availability via master-slave replication. Premium tier adds geo-replication for cross-region disaster recovery.&quot;,
                    pricing: &quot;Billed on a monthly basis depending on the tier (Basic, Standard, Premium) and the cache size (GB).&quot;,
                    security: &quot;Supports SSL/TLS for encryption in transit, VNET injection (Premium tier), and basic access control via keys.&quot;,
                    integrations: [&quot;Azure App Service&quot;, &quot;ASP.NET Core&quot;, &quot;Spring Boot&quot;, &quot;Azure Functions&quot;, &quot;AKS&quot;],
                    pros: [&quot;Extremely simple to deploy and manage&quot;, &quot;Broad community ecosystem compatibility&quot;, &quot;Excellent for accelerating existing web apps&quot;],
                    cons: [&quot;Limited multi-core utilization compared to Managed Redis&quot;, &quot;Older feature set compared to the new Managed Redis Enterprise offering&quot;, &quot;Scaling operations can take time&quot;],
                    compare: [
                        { name: &quot;Azure Managed Redis&quot;, type: &quot;Redis Enterprise&quot;, best: &quot;AI workloads / Hyperscale&quot;, weak: &quot;Higher cost/complexity&quot; },
                        { name: &quot;Cosmos DB&quot;, type: &quot;NoSQL&quot;, best: &quot;Global persistence&quot;, weak: &quot;Higher latency than cache&quot; },
                        { name: &quot;Azure Table Storage&quot;, type: &quot;Storage&quot;, best: &quot;Cost-effective persistence&quot;, weak: &quot;Much slower performance&quot; }
                    ],
                    interview: [
                        { q: &quot;What is the primary use case for Azure Cache for Redis?&quot;, a: &quot;To cache frequently accessed data that is expensive to fetch from a primary database, thereby improving application response times.&quot; },
                        { q: &quot;What are the different tiers?&quot;, a: &quot;Basic (dev/test), Standard (production, HA), and Premium (enterprise-grade, clustering, persistence, VNET support).&quot; },
                        { q: &quot;How do you handle connection failures?&quot;, a: &quot;By implementing retry logic using client libraries (e.g., StackExchange.Redis) to handle transient network issues or failovers.&quot; },
                        { q: &quot;What is the difference between Cache-Aside and Write-Through?&quot;, a: &quot;Cache-Aside is when the app checks cache first and fetches from DB on miss; Write-Through is when the app writes to both cache and DB simultaneously.&quot; },
                        { q: &quot;Can you persist data?&quot;, a: &quot;Yes, in the Premium tier, you can configure RDB (snapshots) and AOF (append-only file) persistence.&quot; },
                        { q: &quot;What is the max cache size?&quot;, a: &quot;It depends on the tier; Premium can scale to hundreds of GBs through clustering.&quot; },
                        { q: &quot;How is security handled?&quot;, a: &quot;By using SSL/TLS connections and VNET injection in Premium tiers to restrict access to authorized private networks.&quot; },
                        { q: &quot;What is geo-replication?&quot;, a: &quot;A Premium tier feature that asynchronously replicates cache data to a secondary region for cross-region DR.&quot; },
                        { q: &quot;Why use VNET injection?&quot;, a: &quot;To place the cache inside a virtual network, providing complete isolation from the public internet.&quot; },
                        { q: &quot;What is clustering?&quot;, a: &quot;A Premium tier feature that automatically splits data across multiple Redis nodes to increase throughput and total capacity.&quot; },
                        { q: &quot;How do you monitor the cache?&quot;, a: &quot;Using Azure Monitor to track Cache Hits/Misses, Memory Usage, and Server Load.&quot; },
                        { q: &quot;When should you NOT use Redis?&quot;, a: &quot;For storing large volumes of data that require ACID-compliant relational integrity, or when the data is not accessed frequently enough to justify the cost.&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Web Session Cache:&lt;/b&gt; Storing user session tokens in Redis for fast, stateful web application scaling.&quot;,
                        &quot;&lt;b&gt;Database Query Cache:&lt;/b&gt; Storing results of complex SQL queries to avoid repeated expensive hits to Azure SQL/PostgreSQL.&quot;,
                        &quot;&lt;b&gt;Pub/Sub Messaging:&lt;/b&gt; Using Redis channels for real-time notifications or chat updates between microservices.&quot;
                    ]
                }
            ]
        },
        {
            category: &quot;Compute&quot;,
            services: [
                {
                    name: &quot;Azure App Service&quot;,
                    icon: &#39;&lt;path d=&quot;M4 4h16v16H4V4zm2 4v8h12V8H6z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Flagship PaaS for hosting web apps and REST APIs.&quot;,
                    whatIsIt: &quot;A fully managed Platform as a Service (PaaS) that integrates Microsoft Azure features into your web apps, REST APIs, and mobile backends.&quot;,
                    problemSolved: &quot;Removes the burden of provisioning, configuring, and patching web servers (IIS, Apache, Nginx). Focus entirely on application code.&quot;,
                    goodUse: [&quot;Hosting web portals (.NET, Node, Python, Java)&quot;, &quot;RESTful API hosting&quot;, &quot;Background web jobs&quot;, &quot;Monolithic application modernization&quot;],
                    badUse: [&quot;Short-lived, event-driven tasks (use Functions)&quot;, &quot;Complex microservice orchestration requiring sidecars (use AKS)&quot;, &quot;Full OS control requirements (use VMs)&quot;],
                    apiModels: [&quot;HTTP/HTTPS&quot;, &quot;WebSockets&quot;, &quot;gRPC&quot;],
                    archScaling: &quot;Runs on an &#39;App Service Plan&#39; (defines compute resources). Scales Vertically (Up) by changing the tier, or Horizontally (Out) by adding more instances manually or via Autoscale rules.&quot;,
                    performance: &quot;Highly reliable with built-in load balancing. Supports Local Cache to improve startup times.&quot;,
                    consistency: &quot;N/A (Compute service, state should be externalized to Redis or SQL).&quot;,
                    haDr: &quot;99.95% SLA. High availability within a region via multiple instances. Multi-region requires deploying two App Services behind Azure Front Door.&quot;,
                    pricing: &quot;Billed per App Service Plan (Compute size x Time), not per app. You can run 10 apps on 1 Plan for the same price.&quot;,
                    security: &quot;VNet Integration (Outbound), Private Endpoints (Inbound), EasyAuth (Entra ID), Managed Identities, Custom SSL.&quot;,
                    integrations: [&quot;Azure SQL&quot;, &quot;Azure Key Vault&quot;, &quot;Application Insights&quot;, &quot;Azure DevOps/GitHub Actions&quot;],
                    pros: [&quot;Extremely fast time-to-market&quot;, &quot;Built-in CI/CD&quot;, &quot;Zero-downtime deployment slots&quot;],
                    cons: [&quot;Less control than VMs&quot;, &quot;Vendor lock-in compared to Docker/AKS&quot;, &quot;VNet integration requires higher pricing tiers&quot;],
                    compare: [
                        { name: &quot;Azure Functions&quot;, type: &quot;Serverless&quot;, best: &quot;Event-driven bursts&quot;, weak: &quot;Always-on web apps&quot; },
                        { name: &quot;AKS&quot;, type: &quot;Container Orchestration&quot;, best: &quot;Complex Microservices&quot;, weak: &quot;Steep learning curve&quot; },
                        { name: &quot;VMs&quot;, type: &quot;IaaS&quot;, best: &quot;Full OS Control&quot;, weak: &quot;High maintenance&quot; }
                    ],
                    interview: [
                        { q: &quot;What is an App Service Plan?&quot;, a: &quot;It represents the underlying VM compute resources (CPU, RAM). Multiple App Services can run on one Plan, sharing its resources and cost. If one app spikes, it affects the others.&quot; },
                        { q: &quot;How do Deployment Slots work?&quot;, a: &quot;They are live apps with their own hostnames. You deploy to &#39;Staging&#39;, validate it, and then perform a &#39;Swap&#39; with &#39;Production&#39;. It swaps IP routing, ensuring zero-downtime and easy rollback.&quot; },
                        { q: &quot;How do you securely connect an App Service to a DB?&quot;, a: &quot;Assign a System-Assigned Managed Identity to the App Service, grant that identity access in Azure SQL/Key Vault, and use VNet Integration to route traffic through the Azure backbone rather than the public internet.&quot; },
                        { q: &quot;What is SNAT Port Exhaustion?&quot;, a: &quot;Occurs when an App Service opens too many outbound connections (e.g., to a DB or external API) without closing them, exhausting its allocated network ports. Fix by using Connection Pooling or VNet Integration.&quot; },
                        { q: &quot;How does Autoscaling work?&quot;, a: &quot;You configure rules (e.g., if CPU &gt; 70% for 5 mins, add 1 instance; if CPU &lt; 30%, remove 1). It scales horizontally up to the limit of your tier.&quot; },
                        { q: &quot;What is EasyAuth?&quot;, a: &quot;Built-in App Service Authentication/Authorization. It allows you to protect your app using Entra ID, Google, Facebook, etc., without writing any authentication code.&quot; },
                        { q: &quot;App Service vs Azure Container Instances (ACI)?&quot;, a: &quot;App Service is built for long-running HTTP workloads and offers slots, custom domains, and auto-scaling. ACI is for running a container quickly, doing a task, and terminating.&quot; },
                        { q: &quot;Can App Service run Linux containers?&quot;, a: &quot;Yes, Web App for Containers allows you to deploy custom Docker containers (Linux or Windows) into the App Service environment.&quot; },
                        { q: &quot;What are WebJobs?&quot;, a: &quot;A feature of App Service that allows you to run background scripts (.cmd, .bat, .exe, .ps1, .sh, .php, .py, .js) either continuously or on a schedule in the same context as your web app.&quot; },
                        { q: &quot;How to handle multi-region active-active App Services?&quot;, a: &quot;Deploy an App Service in Region A and another in Region B. Put Azure Front Door in front of them to route traffic based on latency and handle failover if a region drops.&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Standard N-Tier:&lt;/b&gt; App Service (Frontend) → App Service (API) → Azure SQL.&quot;,
                        &quot;&lt;b&gt;Secure Enterprise:&lt;/b&gt; App Service → VNet Integration → Private Endpoint → Cosmos DB.&quot;,
                        &quot;&lt;b&gt;Global Web App:&lt;/b&gt; Azure Front Door → App Service (Region A) &amp; App Service (Region B).&quot;
                    ]
                },
                {
                    name: &quot;Azure Functions&quot;,
                    icon: &#39;&lt;path d=&quot;M13 3L4 14h7v7l9-11h-7z&quot;/&gt;&#39;,
                    cheatSheet: &quot;Serverless compute for event-driven, short-lived tasks.&quot;,
                    whatIsIt: &quot;A serverless solution that allows you to write less code, maintain less infrastructure, and save on costs by running event-triggered code.&quot;,
                    problemSolved: &quot;Paying for idle compute time. Instead of running a 24/7 server to check for a file upload once a day, Functions spins up instantly, processes it, and spins down.&quot;,
                    goodUse: [&quot;Processing Blob storage uploads&quot;, &quot;Webhooks / Micro-APIs&quot;, &quot;Scheduled CRON jobs&quot;, &quot;IoT stream processing&quot;, &quot;Message queue (Service Bus) processing&quot;],
                    badUse: [&quot;Long-running tasks (&gt;10 mins on Consumption plan)&quot;, &quot;Heavy stateful applications (unless using Durable)&quot;, &quot;Constant, high-traffic web hosting&quot;],
                    apiModels: [&quot;Events&quot;, &quot;HTTP/REST&quot;, &quot;Timer/Cron&quot;],
                    archScaling: &quot;Event-driven scaling. The platform automatically adds compute instances based on the number of incoming events (e.g., messages in a queue). Scales to zero when idle.&quot;,
                    performance: &quot;Fast execution, but susceptible to &#39;Cold Starts&#39; (latency delay when the first instance boots up after being idle).&quot;,
                    consistency: &quot;N/A&quot;,
                    haDr: &quot;Highly available by default within a region. For DR, deploy to multiple regions and use Event Grid/Service Bus to route traffic.&quot;,
                    pricing: &quot;Consumption Plan: Billed per execution and memory used per second (GB-s). Premium Plan: Billed for pre-warmed instances to avoid cold starts.&quot;,
                    security: &quot;Function Keys (Auth level), Managed Identities, VNet integration (requires Premium/Dedicated plan).&quot;,
                    integrations: [&quot;Event Grid&quot;, &quot;Service Bus&quot;, &quot;Cosmos DB&quot;, &quot;Blob Storage&quot;],
                    pros: [&quot;Pay only for what you use&quot;, &quot;Auto-scales instantly&quot;, &quot;Rich ecosystem of Triggers and Bindings&quot;],
                    cons: [&quot;Cold starts on Consumption plan&quot;, &quot;10-minute max execution timeout&quot;, &quot;Harder to debug complex architectures locally&quot;],
                    compare: [
                        { name: &quot;App Service&quot;, type: &quot;PaaS&quot;, best: &quot;Always-on Web Apps&quot;, weak: &quot;Idle cost&quot; },
                        { name: &quot;Logic Apps&quot;, type: &quot;Low-code Serverless&quot;, best: &quot;Visual workflow orchestration&quot;, weak: &quot;Custom code complexity&quot; },
                        { name: &quot;Azure Batch&quot;, type: &quot;HPC&quot;, best: &quot;Heavy parallel processing&quot;, weak: &quot;Instant event triggers&quot; }
                    ],
                    interview: [
                        { q: &quot;What is a Cold Start and how to fix it?&quot;, a: &quot;The delay when a Function wakes up from an idle state to process a request. Fix: Use the Premium Plan (keeps instances warm) or set up a timer trigger to &#39;ping&#39; the function every 4 minutes.&quot; },
                        { q: &quot;What are Triggers and Bindings?&quot;, a: &quot;Trigger: The event that causes the function to run (e.g., HTTP request, Blob upload). Binding: A declarative connection to data (Input Binding pulls data, Output Binding saves data) without writing boilerplate connection code.&quot; },
                        { q: &quot;What are Durable Functions?&quot;, a: &quot;An extension that lets you write stateful workflows (like Function Chaining or Fan-out/Fan-in) in a serverless environment. It manages state, checkpoints, and restarts behind the scenes.&quot; },
                        { q: &quot;Consumption vs Premium vs Dedicated Plan?&quot;, a: &quot;Consumption: Pay per execution, auto-scales to 0, suffers cold starts. Premium: Pre-warmed instances, VNet integration, longer execution time. Dedicated: Runs on an existing App Service Plan (you pay for the VM regardless of usage).&quot; },
                        { q: &quot;What is the maximum execution time for an Azure Function?&quot;, a: &quot;On the Consumption plan, the default is 5 minutes, configurable up to 10 minutes. On Premium or Dedicated plans, it can run infinitely (though practically 60 mins is the guaranteed limit without interruption).&quot; },
                        { q: &quot;How do you handle errors and retries in Functions?&quot;, a: &quot;Many triggers (like Service Bus or Queue Storage) have built-in retry policies. If a function fails repeatedly, the message is sent to a &#39;Poison Queue&#39; or &#39;Dead Letter Queue&#39; for manual inspection.&quot; },
                        { q: &quot;What is Function Idempotency?&quot;, a: &quot;Because cloud events can sometimes be delivered &#39;at least once&#39; (duplicate deliveries), a Function must be idempotent—meaning running the same event twice should not cause data corruption or duplicate records.&quot; },
                        { q: &quot;How do you secure an HTTP triggered function?&quot;, a: &quot;Use Authorization Levels (Function Key or Master Key) required in the URL/Header. For enterprise, use App Service Auth (Entra ID) or place the function behind Azure API Management.&quot; },
                        { q: &quot;Can an Azure Function access resources in a VNet?&quot;, a: &quot;Yes, but you need to be on the Premium Plan or Dedicated App Service Plan to use VNet Integration. The Consumption plan does not support outbound VNet integration.&quot; },
                        { q: &quot;What is the Fan-Out/Fan-In pattern?&quot;, a: &quot;Using Durable Functions: One orchestrator function starts (fans out) multiple activity functions to run in parallel, waits for all of them to finish, and then aggregates (fans in) the results.&quot; }
                    ],
                    patterns: [
                        &quot;&lt;b&gt;Fan-Out / Fan-In:&lt;/b&gt; Function A reads a batch → Spawns 100x Function B instances in parallel → Function C aggregates results (using Durable Functions).&quot;,
                        &quot;&lt;b&gt;Event Processing:&lt;/b&gt; IoT Hub → Event Grid → Azure Function → Formats data → Azure SQL.&quot;,
                        &quot;&lt;b&gt;Scheduled Cleanup:&lt;/b&gt; Timer Trigger Function → Queries old Cosmos DB records → Deletes them.&quot;
                    ]
                }
            ]
        }
    ];

    document.addEventListener(&#39;DOMContentLoaded&#39;, () =&gt; {
        document.querySelectorAll(&#39;.dynamic-year&#39;).forEach(el =&gt; el.innerText = new Date().getFullYear());
        renderTree(azureData);
    });

function renderTree(data) {
        const treePanel = document.getElementById(&#39;treePanel&#39;);
        treePanel.innerHTML = &#39;&#39;;
        data.forEach((categoryObj, catIdx) =&gt; {
            const catGroup = document.createElement(&#39;div&#39;);
            const catHeader = document.createElement(&#39;div&#39;);
            catHeader.className = &#39;cat-header&#39;;
            catHeader.innerHTML = `&lt;span&gt;${categoryObj.category}&lt;/span&gt; &lt;svg viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot;&gt;&lt;path d=&quot;M7 10l5 5 5-5z&quot;/&gt;&lt;/svg&gt;`;
            
            const serviceList = document.createElement(&#39;div&#39;);
            serviceList.className = &#39;service-list&#39;; // Start as hidden

            categoryObj.services.forEach(svc =&gt; {
                const item = document.createElement(&#39;div&#39;);
                item.className = &#39;service-item&#39;;
                item.innerHTML = `&lt;svg class=&quot;svc-icon&quot; viewBox=&quot;0 0 24 24&quot;&gt;${svc.icon}&lt;/svg&gt; ${svc.name}`;
                item.onclick = () =&gt; showDetail(svc, item);
                serviceList.appendChild(item);
            });

            catHeader.onclick = () =&gt; {
                const isOpen = serviceList.style.display === &#39;block&#39;;
                serviceList.style.display = isOpen ? &#39;none&#39; : &#39;block&#39;;
                catHeader.classList.toggle(&#39;active&#39;, !isOpen);
                catHeader.querySelector(&#39;svg&#39;).style.transform = isOpen ? &#39;rotate(0deg)&#39; : &#39;rotate(180deg)&#39;;
            };
            catGroup.appendChild(catHeader);
            catGroup.appendChild(serviceList);
            treePanel.appendChild(catGroup);
        });
    }

    function switchTab(tabId) {
        document.querySelectorAll(&#39;.prep-tab&#39;).forEach(t =&gt; t.classList.remove(&#39;active&#39;));
        document.querySelectorAll(&#39;.tab-content&#39;).forEach(c =&gt; c.classList.remove(&#39;active&#39;));
        
        document.querySelector(`.prep-tab[onclick=&quot;switchTab(&#39;${tabId}&#39;)&quot;]`).classList.add(&#39;active&#39;);
        document.getElementById(tabId).classList.add(&#39;active&#39;);
    }

    function makeList(arr) {
        return `&lt;ul&gt;${arr.map(i =&gt; `&lt;li&gt;${i}&lt;/li&gt;`).join(&#39;&#39;)}&lt;/ul&gt;`;
    }

    function makeTable(arr) {
        return `
            &lt;div class=&quot;table-responsive-wrapper&quot;&gt;
                &lt;table class=&quot;compare-table&quot;&gt;
                    &lt;tr&gt;&lt;th&gt;Alternative&lt;/th&gt;&lt;th&gt;Type&lt;/th&gt;&lt;th&gt;Best For&lt;/th&gt;&lt;th&gt;Weakness&lt;/th&gt;&lt;/tr&gt;
                    ${arr.map(row =&gt; `&lt;tr&gt;&lt;td&gt;&lt;b&gt;${row.name}&lt;/b&gt;&lt;/td&gt;&lt;td&gt;${row.type}&lt;/td&gt;&lt;td&gt;${row.best}&lt;/td&gt;&lt;td&gt;${row.weak}&lt;/td&gt;&lt;/tr&gt;`).join(&#39;&#39;)}
                &lt;/table&gt;
            &lt;/div&gt;
        `;
    }

    function makeQA(arr) {
        return arr.map(qa =&gt; `
            &lt;div class=&quot;qa-box&quot;&gt;
                &lt;div class=&quot;qa-q&quot;&gt;Q: ${qa.q}&lt;/div&gt;
                &lt;div class=&quot;qa-a&quot;&gt;${qa.a}&lt;/div&gt;
            &lt;/div&gt;
        `).join(&#39;&#39;);
    }

	function showDetail(service, element) {
        // Active state styling
        document.querySelectorAll(&#39;.service-item&#39;).forEach(el =&gt; el.classList.remove(&#39;active&#39;));
        element.classList.add(&#39;active&#39;);

        const detailPanel = document.getElementById(&#39;detailPanel&#39;);
        
        detailPanel.innerHTML = `
            &lt;div class=&quot;detail-header-wrap&quot; id=&quot;detailHeader&quot;&gt;
                &lt;div class=&quot;d-head-top&quot;&gt;
                    &lt;svg viewBox=&quot;0 0 24 24&quot;&gt;${service.icon}&lt;/svg&gt;
                    &lt;div&gt;
                        &lt;h2&gt;${service.name}&lt;/h2&gt;
                        &lt;span class=&quot;d-memory-trick&quot;&gt;💡 Cheat Sheet: ${service.cheatSheet}&lt;/span&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;p class=&quot;d-what&quot;&gt;${service.whatIsIt}&lt;/p&gt;
            &lt;/div&gt;

            &lt;div class=&quot;prep-tabs&quot;&gt;
                &lt;div class=&quot;prep-tab active&quot; onclick=&quot;switchTab(&#39;tab-arch&#39;)&quot;&gt;Overview &amp; Architecture&lt;/div&gt;
                &lt;div class=&quot;prep-tab&quot; onclick=&quot;switchTab(&#39;tab-use&#39;)&quot;&gt;Use Cases &amp; Tradeoffs&lt;/div&gt;
                &lt;div class=&quot;prep-tab&quot; onclick=&quot;switchTab(&#39;tab-prep&#39;)&quot;&gt;Interview Q&amp;A&lt;/div&gt;
            &lt;/div&gt;

            &lt;div id=&quot;tab-arch&quot; class=&quot;tab-content active&quot;&gt;
                &lt;div class=&quot;text-box&quot;&gt;
                    &lt;div class=&quot;block-title&quot;&gt;Core Problem Solved&lt;/div&gt;
                    &lt;p&gt;${service.problemSolved}&lt;/p&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;text-box&quot;&gt;
                    &lt;div class=&quot;block-title&quot;&gt;APIs &amp; Consistency Models&lt;/div&gt;
                    &lt;div class=&quot;grid-2&quot; style=&quot;margin-bottom:0;&quot;&gt;
                        &lt;div&gt;
                            &lt;b&gt;Supported APIs / Models:&lt;/b&gt;&lt;br&gt;
                            &lt;div style=&quot;margin-top:8px;&quot;&gt;
                                ${service.apiModels.map(api =&gt; `&lt;span class=&quot;api-pill&quot;&gt;${api}&lt;/span&gt;`).join(&#39;&#39;)}
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div&gt;
                            &lt;b&gt;Consistency Model:&lt;/b&gt;&lt;br&gt;
                            &lt;p style=&quot;margin-top:8px; font-size:13px;&quot;&gt;${service.consistency}&lt;/p&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;grid-2&quot;&gt;
                    &lt;div class=&quot;card-box arch&quot;&gt;
                        &lt;h4&gt;Architecture &amp; Scaling&lt;/h4&gt;
                        &lt;p&gt;${service.archScaling}&lt;/p&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;card-box perf&quot;&gt;
                        &lt;h4&gt;Performance Characteristics&lt;/h4&gt;
                        &lt;p&gt;${service.performance}&lt;/p&gt;
                    &lt;/div&gt;
                &lt;/div&gt;

                &lt;div class=&quot;grid-2&quot;&gt;
                    &lt;div class=&quot;card-box ha&quot;&gt;
                        &lt;h4&gt;High Availability &amp; DR&lt;/h4&gt;
                        &lt;p&gt;${service.haDr}&lt;/p&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;card-box sec&quot;&gt;
                        &lt;h4&gt;Security Features&lt;/h4&gt;
                        &lt;p&gt;${service.security}&lt;/p&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;text-box&quot;&gt;
                    &lt;div class=&quot;block-title&quot;&gt;Pricing Factors&lt;/div&gt;
                    &lt;p&gt;${service.pricing}&lt;/p&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            
            &lt;div id=&quot;tab-use&quot; class=&quot;tab-content&quot;&gt;
                &lt;div class=&quot;grid-2&quot;&gt;
                    &lt;div class=&quot;card-box good&quot;&gt;
                        &lt;h4&gt;✅ When to Use&lt;/h4&gt;
                        ${makeList(service.goodUse)}
                    &lt;/div&gt;
                    &lt;div class=&quot;card-box bad&quot;&gt;
                        &lt;h4&gt;❌ When NOT to Use&lt;/h4&gt;
                        ${makeList(service.badUse)}
                    &lt;/div&gt;
                &lt;/div&gt;

                &lt;div class=&quot;text-box&quot;&gt;
                    &lt;div class=&quot;block-title&quot;&gt;Top Integrations&lt;/div&gt;
                    &lt;p&gt;${service.integrations.join(&#39;, &#39;)}&lt;/p&gt;
                &lt;/div&gt;

                &lt;div class=&quot;text-box&quot;&gt;
                    &lt;div class=&quot;block-title&quot;&gt;Pros &amp; Cons&lt;/div&gt;
                    &lt;div class=&quot;grid-2&quot; style=&quot;margin-bottom:0;&quot;&gt;
                        &lt;div&gt;&lt;b&gt;Pros:&lt;/b&gt; ${makeList(service.pros)}&lt;/div&gt;
                        &lt;div&gt;&lt;b&gt;Cons:&lt;/b&gt; ${makeList(service.cons)}&lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;

                &lt;div class=&quot;text-box&quot;&gt;
                    &lt;div class=&quot;block-title&quot;&gt;Comparison with Alternatives&lt;/div&gt;
                    ${makeTable(service.compare)}
                &lt;/div&gt;
            &lt;/div&gt;

            &lt;div id=&quot;tab-prep&quot; class=&quot;tab-content&quot;&gt;
                &lt;div class=&quot;text-box&quot;&gt;
                    &lt;div class=&quot;block-title&quot;&gt;🔥 Common Interview Questions&lt;/div&gt;
                    ${makeQA(service.interview)}
                &lt;/div&gt;

                &lt;div class=&quot;text-box&quot;&gt;
                    &lt;div class=&quot;block-title&quot;&gt;🏗️ Real-World Architecture Patterns&lt;/div&gt;
                    ${makeList(service.patterns)}
                &lt;/div&gt;
            &lt;/div&gt;
        `;
    }

    function filterServices() {
        const term = document.getElementById(&#39;serviceSearch&#39;).value.toLowerCase();
        
        let filteredData = [];
        azureData.forEach(cat =&gt; {
            const matches = cat.services.filter(s =&gt; s.name.toLowerCase().includes(term));
            if(matches.length &gt; 0) {
                filteredData.push({ category: cat.category, services: matches });
            }
        });

        renderTree(filteredData);
    }
&lt;/script&gt;
</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/7950394497491267945'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/7950394497491267945'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/04/test.html' title='test'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-7416333315509930262</id><published>2026-04-04T09:02:00.000-07:00</published><updated>2026-04-06T02:01:40.899-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Meat"/><category scheme="http://www.blogger.com/atom/ns#" term="Nutrition"/><title type='text'>Meat &amp; Seafood Nutrition Database | Macros per 100g</title><content type='html'>&lt;title&gt;Precision Meat &amp; Seafood Database | 10+ Nutrients per 100g - OTechy&lt;/title&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
&lt;meta name=&quot;description&quot; content=&quot;Precision nutrition for Meat, Poultry &amp; Seafood. Track Heme-Iron, B12, Zinc, Selenium, and Omega-3 per 100g standardized servings. Includes Bengali regional fish.&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;0,850;1,500&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

&lt;style&gt;
    /* --- OTechy Design System: Carnivore V3 (Precision) --- */
    :root { 
        --primary: #dc2626; --primary-dark: #991b1b; 
        --text-dark: #0f172a; --accent: #475569; 
        --bg: #f8fafc; --white: #fff; --border: #e2e8f0; 
        --soft-bg: #fef2f2; --font-main: &#39;Poppins&#39;, sans-serif;
        --carb-color: #3b82f6; --pro-color: #8b5cf6; --fat-color: #eab308;
    }
    
    * { box-sizing: border-box; }
    body { background-color: var(--bg); font-family: var(--font-main); color: var(--text-dark); margin: 0; line-height: 1.6; }
    .otechy-tool-wrapper { max-width: 1350px; margin: 0 auto; padding: 70px 15px 60px; }

    /* Ads System */
    .otechy-ad-top, .otechy-ad-middle, .otechy-ad-bottom { display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; background: #f1f5f9; border-radius: 10px; border: 1px dashed #cbd5e1; width: 100%; height: 90px; margin-bottom: 20px; }

    /* Hero Section */
    .hero-section { text-align: center; margin-bottom: 25px; padding: 50px 20px; background: linear-gradient(135deg, #fef2f2 0%, #ffffff 100%); border-radius: 24px; border: 1px solid var(--border); box-shadow: 0 10px 30px rgba(220, 38, 38, 0.05); }
    .hero-section h1 { font-size: clamp(24px, 5vw, 42px); font-weight: 850; margin: 0; letter-spacing: -1px; }
    .hero-section h1 span { color: var(--primary); }
    .hero-subtitle { color: var(--accent); font-size: 14px; font-weight: 500; max-width: 850px; margin: 10px auto 25px; }

    /* Filters System */
    .filter-tier { display: flex; justify-content: center; gap: 8px; flex-wrap: wrap; margin-bottom: 25px; }
    .filter-btn { background: var(--white); border: 1px solid var(--border); color: var(--accent); padding: 8px 16px; border-radius: 50px; font-weight: 700; font-size: 11px; cursor: pointer; transition: 0.2s; text-transform: uppercase; }
    .filter-btn:hover { border-color: var(--primary); color: var(--primary); background: var(--soft-bg); }
    .filter-btn.active { background: var(--text-dark); color: #fff; border-color: var(--text-dark); }

    /* Search Bar */
    .search-bar { position: relative; max-width: 700px; margin: 0 auto 30px; width: 100%; }
    .search-bar input { width: 100%; padding: 14px 20px 14px 45px; border-radius: 14px; border: 2px solid var(--border); font-family: var(--font-main); font-size: 15px; font-weight: 600; outline: none; box-shadow: 0 8px 25px rgba(0,0,0,0.03); }
    .search-icon { position: absolute; left: 15px; top: 50%; transform: translateY(-50%); color: var(--accent); }

    /* Grid &amp; Cards */
    .bio-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(350px, 1fr)); gap: 20px; }
    .bio-card { background: var(--white); border-radius: 20px; border: 1px solid #000; padding: 20px; transition: 0.3s; box-shadow: 0 4px 12px rgba(0,0,0,0.05); display: flex; flex-direction: column; }
    .bio-card:hover { border-color: var(--primary); transform: translateY(-3px); }
    
    .bio-name { font-size: 19px; font-weight: 850; color: var(--text-dark); display: flex; align-items: center; gap: 10px; margin-bottom: 15px; }
    
    .macro-mini { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; background: #f8fafc; padding: 12px; border-radius: 12px; margin-bottom: 15px; border: 1px solid var(--border); }
    .m-item { text-align: center; }
    .m-item span { font-size: 14px; font-weight: 850; display: block; }
    .m-item label { font-size: 9px; font-weight: 700; color: var(--accent); text-transform: uppercase; }

    .micro-grid { border-top: 1px solid var(--border); padding-top: 10px; margin-bottom: 15px; }
    .micro-row { display: flex; justify-content: space-between; font-size: 11px; padding: 4px 0; border-bottom: 1px dashed #f1f5f9; }
    .micro-lbl { color: var(--accent); font-weight: 600; }
    .micro-val { font-weight: 800; color: var(--text-dark); }

    .fact-tag { font-size: 11px; font-weight: 500; padding: 12px; background: #fef2f2; border-radius: 10px; border-left: 4px solid var(--primary); color: #991b1b; margin-top: auto; line-height: 1.4; }
  
  .db-stats { display: flex; justify-content: center; gap: 15px; flex-wrap: wrap; margin-bottom: 20px; }
    .stat-pill { background: var(--white); border: 1px solid var(--border); padding: 8px 16px; border-radius: 50px; font-size: 12px; font-weight: 800; color: var(--primary-dark); box-shadow: 0 4px 10px rgba(0,0,0,0.02); display: flex; align-items: center; gap: 6px; }

    @media (max-width: 768px) {
        .otechy-tool-wrapper { padding: 40px 12px; }
        .bio-grid { grid-template-columns: 1fr; }
        .hero-section { padding: 30px 15px; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;
    &lt;div class=&quot;hero-section&quot;&gt;
        &lt;h1&gt;Meat &amp; Seafood &lt;span&gt;Nutrition &lt;/span&gt; Index&lt;/h1&gt;
        &lt;p class=&quot;hero-subtitle&quot;&gt;Standardized 100g raw data. Verified profiles for Heme-Iron, Vitamin B12, Zinc, Selenium, and Phosphorus across Poultry, Red Meat, and Bengali Seafood.&lt;/p&gt;
      
              &lt;div class=&quot;db-stats&quot;&gt;
            &lt;span class=&quot;stat-pill&quot;&gt;⚖️ Standardized 100g Servings&lt;/span&gt;
            &lt;span class=&quot;stat-pill&quot;&gt;🩸 B12 &amp; Iron Tracking&lt;/span&gt;
            &lt;span class=&quot;stat-pill&quot;&gt;🐟 Seafood Database&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 30px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;

    &lt;div class=&quot;controls-area&quot;&gt;
        &lt;div class=&quot;search-bar&quot;&gt;
            &lt;svg class=&quot;search-icon&quot; width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;circle cx=&quot;11&quot; cy=&quot;11&quot; r=&quot;8&quot;&gt;&lt;/circle&gt;&lt;line x1=&quot;21&quot; y1=&quot;21&quot; x2=&quot;16.65&quot; y2=&quot;16.65&quot;&gt;&lt;/line&gt;&lt;/svg&gt;
            &lt;input type=&quot;text&quot; id=&quot;searchInput&quot; placeholder=&quot;Search Hilsa, Mutton, Zinc, B12...&quot; oninput=&quot;renderGrid()&quot;&gt;
        &lt;/div&gt;

        &lt;div class=&quot;filter-tier&quot; id=&quot;mainFilters&quot;&gt;
            &lt;button class=&quot;filter-btn active&quot; onclick=&quot;setFilter(&#39;All&#39;)&quot;&gt;All Items&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Seafood&#39;)&quot;&gt;🐟 Seafood&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Red Meat&#39;)&quot;&gt;🥩 Red Meat&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Poultry&#39;)&quot;&gt;🍗 Poultry&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Local&#39;)&quot;&gt;🇮🇳 Local / Bengali&lt;/button&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;bio-grid&quot; id=&quot;dataGrid&quot;&gt;&lt;/div&gt;

   &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 30px 0; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;
  
    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 30px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
/* --- Precision Meat &amp; Seafood Database (Values per 100g RAW) --- */
const db = [
    // === POULTRY &amp; EGGS ===
    { name: &quot;Chicken Breast&quot;, emoji: &quot;🍗&quot;, category: [&quot;Poultry&quot;, &quot;High Protein&quot;], cals: 165, pro: 31, fat: 3.6, b12: &quot;0.3mcg&quot;, iron: &quot;1.0mg&quot;, zinc: &quot;1.0mg&quot;, selenium: &quot;27mcg&quot;, potas: &quot;256mg&quot;, phos: &quot;228mg&quot;, fact: &quot;The leanest common protein source. High Selenium and Phosphorus support thyroid and metabolic health.&quot; },
    { name: &quot;Chicken Thigh&quot;, emoji: &quot;🍗&quot;, category: [&quot;Poultry&quot;], cals: 209, pro: 26, fat: 10.9, b12: &quot;0.4mcg&quot;, iron: &quot;1.3mg&quot;, zinc: &quot;2.0mg&quot;, selenium: &quot;22mcg&quot;, potas: &quot;220mg&quot;, phos: &quot;180mg&quot;, fact: &quot;Higher myoglobin content makes thighs richer in Iron and Zinc compared to breast meat.&quot; },
    { name: &quot;Duck Meat&quot;, emoji: &quot;🦆&quot;, category: [&quot;Poultry&quot;], cals: 201, pro: 19, fat: 13, b12: &quot;0.4mcg&quot;, iron: &quot;2.4mg&quot;, zinc: &quot;1.9mg&quot;, selenium: &quot;14mcg&quot;, potas: &quot;210mg&quot;, phos: &quot;150mg&quot;, fact: &quot;A nutrient-dense &#39;red&#39; bird; duck fat is highly stable and rich in heart-healthy monounsaturated fats.&quot; },
    { name: &quot;Turkey Breast&quot;, emoji: &quot;🦃&quot;, category: [&quot;Poultry&quot;, &quot;High Protein&quot;], cals: 135, pro: 30, fat: 0.7, b12: &quot;0.4mcg&quot;, iron: &quot;1.1mg&quot;, zinc: &quot;1.5mg&quot;, selenium: &quot;30mcg&quot;, potas: &quot;300mg&quot;, phos: &quot;210mg&quot;, fact: &quot;Rich in Tryptophan, an amino acid essential for Serotonin production and better sleep cycles.&quot; },
    { name: &quot;Quail&quot;, emoji: &quot;🐦&quot;, category: [&quot;Poultry&quot;], cals: 134, pro: 22, fat: 4.5, b12: &quot;0.5mcg&quot;, iron: &quot;4.0mg&quot;, zinc: &quot;2.7mg&quot;, selenium: &quot;17mcg&quot;, potas: &quot;230mg&quot;, phos: &quot;310mg&quot;, fact: &quot;Gram-for-gram, quail provides nearly 4x more Iron than chicken, ideal for treating anemia.&quot; },
    { name: &quot;Egg (Whole)&quot;, emoji: &quot;🥚&quot;, category: [&quot;Poultry&quot;, &quot;Local&quot;], cals: 143, pro: 12.6, fat: 9.5, b12: &quot;0.9mcg&quot;, iron: &quot;1.8mg&quot;, zinc: &quot;1.3mg&quot;, selenium: &quot;31mcg&quot;, potas: &quot;138mg&quot;, phos: &quot;198mg&quot;, fact: &quot;The gold standard for protein. Contains Choline for brain development and bioavailable Vitamin D.&quot; },
    { name: &quot;Egg White&quot;, emoji: &quot;🥚&quot;, category: [&quot;Poultry&quot;, &quot;High Protein&quot;], cals: 52, pro: 10.9, fat: 0.2, b12: &quot;0.1mcg&quot;, iron: &quot;0.1mg&quot;, zinc: &quot;0.0mg&quot;, selenium: &quot;20mcg&quot;, potas: &quot;163mg&quot;, phos: &quot;15mg&quot;, fact: &quot;Purest albumin protein source with zero fat/cholesterol; ideal for strict calorie counting.&quot; },

    // === RED MEAT &amp; OFFAL ===
    { name: &quot;Mutton / Goat (Lean)&quot;, emoji: &quot;🐐&quot;, category: [&quot;Red Meat&quot;, &quot;Local&quot;, &quot;High Protein&quot;], cals: 143, pro: 27, fat: 3, b12: &quot;1.2mcg&quot;, iron: &quot;3.7mg&quot;, zinc: &quot;5.3mg&quot;, selenium: &quot;22mcg&quot;, potas: &quot;405mg&quot;, phos: &quot;200mg&quot;, fact: &quot;The best bioavailable source of Heme-Iron and Zinc for the Indian sub-continent.&quot; },
    { name: &quot;Lamb (Chops)&quot;, emoji: &quot;🐑&quot;, category: [&quot;Red Meat&quot;], cals: 250, pro: 25, fat: 16, b12: &quot;2.6mcg&quot;, iron: &quot;2.0mg&quot;, zinc: &quot;4.4mg&quot;, selenium: &quot;25mcg&quot;, potas: &quot;310mg&quot;, phos: &quot;190mg&quot;, fact: &quot;Rich in CLA (Conjugated Linoleic Acid) which helps in improving body composition and fat loss.&quot; },
    { name: &quot;Beef (Lean)&quot;, emoji: &quot;🥩&quot;, category: [&quot;Red Meat&quot;, &quot;High Protein&quot;], cals: 250, pro: 26, fat: 15, b12: &quot;2.6mcg&quot;, iron: &quot;2.6mg&quot;, zinc: &quot;6.3mg&quot;, selenium: &quot;33mcg&quot;, potas: &quot;350mg&quot;, phos: &quot;210mg&quot;, fact: &quot;High Creatine and Carnosine levels support muscle ATP production and anti-aging.&quot; },
    { name: &quot;Beef Liver&quot;, emoji: &quot;🩸&quot;, category: [&quot;Red Meat&quot;, &quot;High Protein&quot;], cals: 135, pro: 20.4, fat: 3.6, b12: &quot;59mcg&quot;, iron: &quot;4.9mg&quot;, zinc: &quot;4.0mg&quot;, selenium: &quot;39mcg&quot;, potas: &quot;313mg&quot;, phos: &quot;387mg&quot;, fact: &quot;A &#39;Superfood&#39; density profile; contains massive Vitamin A and B12 for nerve repair.&quot; },
    { name: &quot;Chicken Liver&quot;, emoji: &quot;🩸&quot;, category: [&quot;Poultry&quot;, &quot;High Protein&quot;], cals: 167, pro: 24.5, fat: 4.8, b12: &quot;16.6mcg&quot;, iron: &quot;9.0mg&quot;, zinc: &quot;2.7mg&quot;, selenium: &quot;54mcg&quot;, potas: &quot;230mg&quot;, phos: &quot;290mg&quot;, fact: &quot;One of the highest sources of Folate and Vitamin A among all animal-based foods.&quot; },
    { name: &quot;Lamb Brain&quot;, emoji: &quot;🧠&quot;, category: [&quot;Red Meat&quot;], cals: 143, pro: 11, fat: 10, b12: &quot;9.5mcg&quot;, iron: &quot;1.6mg&quot;, zinc: &quot;1.4mg&quot;, selenium: &quot;21mcg&quot;, potas: &quot;270mg&quot;, phos: &quot;330mg&quot;, fact: &quot;Incredibly high in DHA and Phospholipids; essential for neurological health and cell membrane repair.&quot; },
    { name: &quot;Mutton Paya (Trotters)&quot;, emoji: &quot;🍲&quot;, category: [&quot;Red Meat&quot;, &quot;Local&quot;], cals: 190, pro: 18, fat: 13, b12: &quot;0.8mcg&quot;, iron: &quot;1.5mg&quot;, zinc: &quot;1.2mg&quot;, selenium: &quot;5mcg&quot;, potas: &quot;80mg&quot;, phos: &quot;110mg&quot;, fact: &quot;Natural source of Collagen and Glycine; essential for joint flexibility and gut lining recovery.&quot; },

    // === SEAFOOD (GLOBAL) ===
    { name: &quot;Salmon&quot;, emoji: &quot;🍣&quot;, category: [&quot;Seafood&quot;, &quot;Omega-3 Rich&quot;], cals: 208, pro: 20, fat: 13, b12: &quot;3.2mcg&quot;, iron: &quot;0.3mg&quot;, zinc: &quot;0.6mg&quot;, selenium: &quot;36mcg&quot;, potas: &quot;363mg&quot;, phos: &quot;250mg&quot;, fact: &quot;Rich in EPA/DHA Omega-3s. Reduces systemic inflammation and protects heart rhythm.&quot; },
    { name: &quot;Tuna (Yellowfin)&quot;, emoji: &quot;🐟&quot;, category: [&quot;Seafood&quot;, &quot;High Protein&quot;], cals: 109, pro: 24, fat: 0.5, b12: &quot;2.1mcg&quot;, iron: &quot;0.8mg&quot;, zinc: &quot;0.6mg&quot;, selenium: &quot;90mcg&quot;, potas: &quot;441mg&quot;, phos: &quot;280mg&quot;, fact: &quot;Extremely high Selenium content helps counter mercury toxicity levels found in large fish.&quot; },
    { name: &quot;Sardines&quot;, emoji: &quot;🥫&quot;, category: [&quot;Seafood&quot;, &quot;Omega-3 Rich&quot;], cals: 208, pro: 25, fat: 11, b12: &quot;8.9mcg&quot;, iron: &quot;2.9mg&quot;, zinc: &quot;1.3mg&quot;, selenium: &quot;52mcg&quot;, potas: &quot;397mg&quot;, phos: &quot;490mg&quot;, fact: &quot;Eaten with bones, they provide the best bioavailable Calcium and Vitamin D3 combo.&quot; },
    { name: &quot;Oysters&quot;, emoji: &quot;🦪&quot;, category: [&quot;Seafood&quot;], cals: 81, pro: 9, fat: 2.3, b12: &quot;16mcg&quot;, iron: &quot;5.1mg&quot;, zinc: &quot;78mg&quot;, selenium: &quot;77mcg&quot;, potas: &quot;156mg&quot;, phos: &quot;135mg&quot;, fact: &quot;The highest Zinc source on Earth; critical for testosterone, immunity, and skin healing.&quot; },
    { name: &quot;Shrimp / Prawns&quot;, emoji: &quot;🦐&quot;, category: [&quot;Seafood&quot;, &quot;High Protein&quot;], cals: 99, pro: 24, fat: 0.3, b12: &quot;1.6mcg&quot;, iron: &quot;0.5mg&quot;, zinc: &quot;1.6mg&quot;, selenium: &quot;38mcg&quot;, potas: &quot;259mg&quot;, phos: &quot;218mg&quot;, fact: &quot;Contains Astaxanthin, a powerful antioxidant that protects the skin against UV damage.&quot; },
    { name: &quot;Crab&quot;, emoji: &quot;🦀&quot;, category: [&quot;Seafood&quot;], cals: 87, pro: 18, fat: 1.1, b12: &quot;3.3mcg&quot;, iron: &quot;0.7mg&quot;, zinc: &quot;3.8mg&quot;, selenium: &quot;42mcg&quot;, potas: &quot;329mg&quot;, phos: &quot;230mg&quot;, fact: &quot;High Copper and Vitamin B12 levels support central nervous system and metabolic rate.&quot; },
    { name: &quot;Squid / Calamari&quot;, emoji: &quot;🦑&quot;, category: [&quot;Seafood&quot;], cals: 92, pro: 16, fat: 1.4, b12: &quot;1.3mcg&quot;, iron: &quot;0.7mg&quot;, zinc: &quot;1.5mg&quot;, selenium: &quot;44mcg&quot;, potas: &quot;246mg&quot;, phos: &quot;220mg&quot;, fact: &quot;Rich in Copper; helps the body store and utilize iron for hemoglobin formation.&quot; },
    { name: &quot;Lobster&quot;, emoji: &quot;🦞&quot;, category: [&quot;Seafood&quot;], cals: 89, pro: 19, fat: 0.9, b12: &quot;1.4mcg&quot;, iron: &quot;0.3mg&quot;, zinc: &quot;3.0mg&quot;, selenium: &quot;63mcg&quot;, potas: &quot;230mg&quot;, phos: &quot;185mg&quot;, fact: &quot;Low calorie and high Selenium; protects cells from oxidative stress and thyroid dysfunction.&quot; },

    // === BENGALI / INDIAN SEAFOOD ===
    { name: &quot;Hilsa (Ilish)&quot;, emoji: &quot;🐟&quot;, category: [&quot;Seafood&quot;, &quot;Local&quot;, &quot;Omega-3 Rich&quot;], cals: 310, pro: 22, fat: 24, b12: &quot;2.5mcg&quot;, iron: &quot;1.2mg&quot;, zinc: &quot;1.1mg&quot;, selenium: &quot;36mcg&quot;, potas: &quot;320mg&quot;, phos: &quot;250mg&quot;, fact: &quot;Bengali legend; its high fat content consists mostly of heart-healthy Omega-3 fatty acids.&quot; },
    { name: &quot;Rohu (Rui)&quot;, emoji: &quot;🐟&quot;, category: [&quot;Seafood&quot;, &quot;Local&quot;], cals: 97, pro: 16, fat: 1.4, b12: &quot;1.5mcg&quot;, iron: &quot;1.0mg&quot;, zinc: &quot;0.8mg&quot;, selenium: &quot;12mcg&quot;, potas: &quot;280mg&quot;, phos: &quot;180mg&quot;, fact: &quot;Easily digestible lean protein. High Calcium content in freshwater carp supports bone health.&quot; },
    { name: &quot;Katla&quot;, emoji: &quot;🐟&quot;, category: [&quot;Seafood&quot;, &quot;Local&quot;], cals: 111, pro: 19, fat: 2.5, b12: &quot;1.6mcg&quot;, iron: &quot;1.1mg&quot;, zinc: &quot;0.9mg&quot;, selenium: &quot;15mcg&quot;, potas: &quot;300mg&quot;, phos: &quot;210mg&quot;, fact: &quot;Excellent source of Vitamin D and lean protein for traditional Indian fish curries.&quot; },
    { name: &quot;Bhetki (Barramundi)&quot;, emoji: &quot;🐟&quot;, category: [&quot;Seafood&quot;, &quot;Local&quot;, &quot;High Protein&quot;], cals: 105, pro: 20, fat: 2.0, b12: &quot;1.1mcg&quot;, iron: &quot;0.6mg&quot;, zinc: &quot;0.7mg&quot;, selenium: &quot;30mcg&quot;, potas: &quot;250mg&quot;, phos: &quot;200mg&quot;, fact: &quot;The chef&#39;s favorite; low bone count and high Phosphorus for skeletal health.&quot; },
    { name: &quot;Magur (Catfish)&quot;, emoji: &quot;🐟&quot;, category: [&quot;Seafood&quot;, &quot;Local&quot;], cals: 105, pro: 18, fat: 3.5, b12: &quot;1.5mcg&quot;, iron: &quot;1.4mg&quot;, zinc: &quot;0.6mg&quot;, selenium: &quot;15mcg&quot;, potas: &quot;310mg&quot;, phos: &quot;220mg&quot;, fact: &quot;Prescribed in traditional medicine for fast recovery due to its high Iron and B12 density.&quot; },
    { name: &quot;Tangra (Catfish)&quot;, emoji: &quot;🐟&quot;, category: [&quot;Seafood&quot;, &quot;Local&quot;], cals: 120, pro: 19.5, fat: 4.2, b12: &quot;1.2mcg&quot;, iron: &quot;1.8mg&quot;, zinc: &quot;0.9mg&quot;, selenium: &quot;14mcg&quot;, potas: &quot;290mg&quot;, phos: &quot;190mg&quot;, fact: &quot;Small fish provide excellent mineral variety when eaten with minimal processing.&quot; },
    { name: &quot;Boal (Catfish)&quot;, emoji: &quot;🐟&quot;, category: [&quot;Seafood&quot;, &quot;Local&quot;], cals: 130, pro: 18, fat: 6, b12: &quot;1.8mcg&quot;, iron: &quot;1.1mg&quot;, zinc: &quot;1.0mg&quot;, selenium: &quot;18mcg&quot;, potas: &quot;260mg&quot;, phos: &quot;210mg&quot;, fact: &quot;Rich in fat-soluble vitamins; provides high energy and muscle-repairing proteins.&quot; },
    { name: &quot;Pomfret (White)&quot;, emoji: &quot;🐠&quot;, category: [&quot;Seafood&quot;, &quot;Local&quot;, &quot;High Protein&quot;], cals: 96, pro: 19, fat: 1.7, b12: &quot;1.2mcg&quot;, iron: &quot;0.8mg&quot;, zinc: &quot;0.6mg&quot;, selenium: &quot;28mcg&quot;, potas: &quot;320mg&quot;, phos: &quot;215mg&quot;, fact: &quot;Elite marine fish with single central bone; high Selenium profile supports metabolic function.&quot; },
    { name: &quot;Golda Chingri (Prawn)&quot;, emoji: &quot;🦐&quot;, category: [&quot;Seafood&quot;, &quot;Local&quot;], cals: 105, pro: 23, fat: 1, b12: &quot;1.8mcg&quot;, iron: &quot;0.6mg&quot;, zinc: &quot;1.7mg&quot;, selenium: &quot;40mcg&quot;, potas: &quot;220mg&quot;, phos: &quot;250mg&quot;, fact: &quot;Massive Jumbo prawns provide nearly zero saturated fat with massive protein density.&quot; },
    { name: &quot;Lote (Bombay Duck)&quot;, emoji: &quot;🐟&quot;, category: [&quot;Seafood&quot;, &quot;Local&quot;], cals: 80, pro: 15, fat: 2.1, b12: &quot;0.9mcg&quot;, iron: &quot;1.1mg&quot;, zinc: &quot;0.5mg&quot;, selenium: &quot;10mcg&quot;, potas: &quot;190mg&quot;, phos: &quot;140mg&quot;, fact: &quot;High water content makes it the lowest calorie protein source in the Bengali seafood list.&quot; },
    { name: &quot;Pabda (Catfish)&quot;, emoji: &quot;🐟&quot;, category: [&quot;Seafood&quot;, &quot;Local&quot;], cals: 115, pro: 18, fat: 4.5, b12: &quot;1.4mcg&quot;, iron: &quot;1.3mg&quot;, zinc: &quot;1.0mg&quot;, selenium: &quot;16mcg&quot;, potas: &quot;280mg&quot;, phos: &quot;205mg&quot;, fact: &quot;Tender skin and high oil content; provides sustained energy and nerve-repairing B12.&quot; },
    { name: &quot;Koi (Climbing Perch)&quot;, emoji: &quot;🐟&quot;, category: [&quot;Seafood&quot;, &quot;Local&quot;], cals: 110, pro: 17, fat: 4.2, b12: &quot;1.2mcg&quot;, iron: &quot;2.1mg&quot;, zinc: &quot;0.9mg&quot;, selenium: &quot;12mcg&quot;, potas: &quot;250mg&quot;, phos: &quot;195mg&quot;, fact: &quot;Traditionally known to increase red blood cells quickly due to its high Iron bioavailability.&quot; },
    { name: &quot;Mrigal&quot;, emoji: &quot;🐟&quot;, category: [&quot;Seafood&quot;, &quot;Local&quot;], cals: 95, pro: 16.5, fat: 1.2, b12: &quot;1.3mcg&quot;, iron: &quot;0.9mg&quot;, zinc: &quot;0.8mg&quot;, selenium: &quot;11mcg&quot;, potas: &quot;270mg&quot;, phos: &quot;175mg&quot;, fact: &quot;Freshwater carp with a clean macro profile; ideal for calorie-restricted protein diets.&quot; },
    { name: &quot;Singi (Catfish)&quot;, emoji: &quot;🐟&quot;, category: [&quot;Seafood&quot;, &quot;Local&quot;], cals: 102, pro: 19, fat: 2.2, b12: &quot;1.6mcg&quot;, iron: &quot;2.4mg&quot;, zinc: &quot;1.1mg&quot;, selenium: &quot;18mcg&quot;, potas: &quot;320mg&quot;, phos: &quot;240mg&quot;, fact: &quot;Considered the most medicinal fish for hemoglobin recovery and post-surgery healing.&quot; }
];

    let currentFilter = &#39;All&#39;;

    function setFilter(f) {
        currentFilter = f;
        document.querySelectorAll(&#39;.filter-btn&#39;).forEach(btn =&gt; btn.classList.remove(&#39;active&#39;));
        event.target.classList.add(&#39;active&#39;);
        renderGrid();
    }

    function handleSearch() { renderGrid(); }

    function renderGrid() {
        const grid = document.getElementById(&#39;dataGrid&#39;);
        const query = document.getElementById(&#39;searchInput&#39;).value.toLowerCase();
        grid.innerHTML = &#39;&#39;;

        const filtered = db.filter(f =&gt; {
            const matchesQuery = f.name.toLowerCase().includes(query) || f.fact.toLowerCase().includes(query);
            const matchesFilter = (currentFilter === &#39;All&#39;) || f.category.includes(currentFilter);
            return matchesQuery &amp;&amp; matchesFilter;
        });

        filtered.forEach(f =&gt; {
            const card = document.createElement(&#39;div&#39;);
            card.className = &#39;bio-card&#39;;

            card.innerHTML = `
                &lt;div class=&quot;bio-name&quot;&gt;&lt;span&gt;${f.emoji}&lt;/span&gt; ${f.name}&lt;/div&gt;
                
                &lt;div class=&quot;macro-mini&quot;&gt;
                    &lt;div class=&quot;m-item&quot;&gt;&lt;label&gt;Cals&lt;/label&gt;&lt;span&gt;${f.cals}&lt;/span&gt;&lt;/div&gt;
                    &lt;div class=&quot;m-item&quot;&gt;&lt;label&gt;Protein&lt;/label&gt;&lt;span&gt;${f.pro}g&lt;/span&gt;&lt;/div&gt;
                    &lt;div class=&quot;m-item&quot;&gt;&lt;label&gt;Fats&lt;/label&gt;&lt;span&gt;${f.fat}g&lt;/span&gt;&lt;/div&gt;
                &lt;/div&gt;

                &lt;div class=&quot;micro-grid&quot;&gt;
                    &lt;div class=&quot;micro-row&quot;&gt;&lt;span class=&quot;micro-lbl&quot;&gt;Vit B12 / Iron&lt;/span&gt;&lt;span class=&quot;micro-val&quot;&gt;${f.b12} / ${f.iron}&lt;/span&gt;&lt;/div&gt;
                    &lt;div class=&quot;micro-row&quot;&gt;&lt;span class=&quot;micro-lbl&quot;&gt;Zinc / Selenium&lt;/span&gt;&lt;span class=&quot;micro-val&quot;&gt;${f.zinc} / ${f.selenium}&lt;/span&gt;&lt;/div&gt;
                    &lt;div class=&quot;micro-row&quot;&gt;&lt;span class=&quot;micro-lbl&quot;&gt;Potassium / Phos&lt;/span&gt;&lt;span class=&quot;micro-val&quot;&gt;${f.potas || &#39;-&#39;} / ${f.phos || &#39;-&#39;}&lt;/span&gt;&lt;/div&gt;
                    &lt;div class=&quot;micro-row&quot;&gt;&lt;span class=&quot;micro-lbl&quot;&gt;Specials&lt;/span&gt;&lt;span class=&quot;micro-val&quot;&gt;${f.vitA || f.copper || f.choline || &#39;Standard&#39;}&lt;/span&gt;&lt;/div&gt;
                &lt;/div&gt;

                &lt;div class=&quot;fact-tag&quot;&gt;&lt;strong&gt;Clinical Note:&lt;/strong&gt; ${f.fact}&lt;/div&gt;
            `;
            grid.appendChild(card);
        });
    }

    renderGrid();
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/7416333315509930262'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/7416333315509930262'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/04/meat-seafood-nutrition-database-macros.html' title='Meat &amp; Seafood Nutrition Database | Macros per 100g'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-7740042230728598284</id><published>2026-04-04T08:51:00.000-07:00</published><updated>2026-04-04T09:36:48.775-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fasting"/><category scheme="http://www.blogger.com/atom/ns#" term="Health"/><title type='text'>36-Hour Fasting Bio-Timeline: Hourly Body Changes</title><content type='html'>&lt;title&gt;36-Hour Fasting Bio-Timeline: Hourly Body Changes &amp; Pulse Protocol&lt;/title&gt;
&lt;meta name=&quot;description&quot; content=&quot;Track metabolic shifts, autophagy, and hormone surges across a 36-hour fast. Use the OTechy Pulse Protocol to prevent metabolic slowdown and maximize fat loss.&quot;&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;36 hour fasting timeline, autophagy stages, metabolic pulse protocol, 16:8 fasting results, OTechy health tools, how to break a fast, growth hormone surge&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;

&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js&quot;&gt;&lt;/script&gt;

&lt;style&gt;
    /* --- Core Design System --- */
    :root { --primary: #3b82f6; --success: #10b981; --text-dark: #1e293b; --text-muted: #64748b; }
    
    * { box-sizing: border-box; }
    body { margin: 0; font-family: &#39;Poppins&#39;, sans-serif; background: #f8fafc; color: var(--text-dark); line-height: 1.6; }
    
    .otechy-tool-wrapper { max-width: 950px; margin: 0 auto; padding: 40px 20px; }
    
    .tool-header { text-align: center; margin-bottom: 40px; }
    .tool-header h1 { font-size: clamp(22px, 5vw, 28px); color: var(--primary); font-weight: 850; margin: 10px 0; }
    .otechy-badge { display: inline-block; background: #eff6ff; color: var(--primary); padding: 6px 18px; border-radius: 50px; font-size: 11px; font-weight: 800; text-transform: uppercase; border: 1px solid #dbeafe; }
    .quick-value { color: var(--text-muted); font-size: 15px; margin: 0; }
    
    .otechy-card { background: #fff; padding: 25px; border-radius: 12px; border: 1px solid #e2e8f0; box-shadow: 0 4px 12px rgba(0,0,0,0.05); margin-bottom: 20px; }
    
    /* Tracker Elements */
    .status-result-box { background: #f8fafc; border-radius: 10px; padding: 20px; border-left: 6px solid var(--primary); margin-top: 20px; }
    .status-header { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px; }
    .hour-tag { font-size: 24px; font-weight: 850; color: var(--primary); }
    .phase-badge { background: var(--primary); color: #fff; padding: 4px 12px; border-radius: 50px; font-size: 12px; font-weight: 700; }
    
    /* Buttons &amp; Inputs */
    .otechy-btn { background: var(--primary); color: #fff; border: none; padding: 14px 25px; border-radius: 8px; font-size: 14px; font-weight: 700; cursor: pointer; transition: 0.3s; width: 100%; }
    .otechy-btn:hover { background: #2563eb; transform: translateY(-1px); }
    
    /* Grids */
    .strategy-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 20px; }
    .expert-protocol-section { background: #fff; border: 1px solid #e2e8f0; border-radius: 15px; padding: 30px; margin-top: 40px; }
    .protocol-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 25px; margin-top: 25px; }
    .protocol-card { background: #f8fafc; padding: 20px; border-radius: 10px; border: 1px solid #f1f5f9; }
    .protocol-card h3 { font-size: 16px; color: var(--primary); margin-bottom: 10px; border-bottom: 2px solid #e2e8f0; padding-bottom: 5px; }
    .protocol-card p { font-size: 13px; color: #475569; margin-bottom: 10px; }
    
    .warning-box { background: #fff1f2; color: #991b1b; padding: 15px; border-radius: 8px; border: 1px solid #fecdd3; margin-top: 25px; font-size: 13.5px; }

    /* Expert Insights Area */
    .expert-insights-highlight { margin-top: 40px; background: #f0f9ff; border: 2px solid #dbeafe; border-radius: 15px; padding: 30px; }
    .expert-insights-highlight h2 { color: #1e40af; font-size: 22px; margin-bottom: 20px; text-align: center; }
    .insight-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
    .insight-item { background: #ffffff; padding: 15px; border-radius: 10px; border-left: 4px solid #3b82f6; }
    .insight-item strong { color: #1e3a8a; font-size: 14px; display: block; margin-bottom: 5px; }
    .insight-item p { font-size: 13px; color: #475569; margin: 0; }

    /* FAQs */
    .faq-container { margin-top: 30px; }
    .faq-card { background: #fff; border: 1px solid #e2e8f0; padding: 20px; border-radius: 10px; margin-bottom: 15px; font-size: 14px; box-shadow: 0 2px 5px rgba(0,0,0,0.02); }
    .faq-card strong { color: var(--primary); display: block; margin-bottom: 8px; font-size: 15px; }

    .geo-citation { background: #f1f5f9; padding: 20px; border-radius: 8px; font-style: italic; margin-top: 40px; border-left: 4px solid var(--primary); font-size: 12px; }

    /* --- MOBILE RESPONSIVENESS OVERRIDES --- */
    @media (max-width: 768px) {
        .otechy-tool-wrapper { padding: 20px 15px; }
        .strategy-grid, .protocol-grid, .insight-grid { grid-template-columns: 1fr; gap: 15px; }
        .expert-protocol-section { padding: 20px 15px; }
        .expert-insights-highlight { padding: 20px 15px; }
        .status-result-box { padding: 15px; }
        .hour-tag { font-size: 20px; }
        .otechy-card { padding: 15px; }
        .faq-card { padding: 15px; font-size: 13px; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;
    &lt;div class=&quot;tool-header&quot;&gt;
        &lt;div class=&quot;otechy-badge&quot;&gt;Fasting Toolkit&lt;/div&gt;
        &lt;h1&gt;Master Fasting Timeline (0-36h) &lt;span class=&quot;dynamic-year&quot;&gt;&lt;/span&gt; &lt;svg width=&quot;28&quot; height=&quot;28&quot; viewBox=&quot;0 0 24 24&quot; style=&quot;vertical-align: middle; margin-left: 8px;&quot;&gt;&lt;defs&gt;&lt;clipPath id=&quot;circleView&quot;&gt;&lt;circle cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;12&quot; /&gt;&lt;/clipPath&gt;&lt;/defs&gt;&lt;g clip-path=&quot;url(#circleView)&quot;&gt;&lt;rect width=&quot;24&quot; height=&quot;8&quot; y=&quot;0&quot; fill=&quot;#FF9933&quot;/&gt;&lt;rect width=&quot;24&quot; height=&quot;8&quot; y=&quot;8&quot; fill=&quot;#FFFFFF&quot;/&gt;&lt;rect width=&quot;24&quot; height=&quot;8&quot; y=&quot;16&quot; fill=&quot;#138808&quot;/&gt;&lt;circle cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;3&quot; fill=&quot;none&quot; stroke=&quot;#000080&quot; stroke-width=&quot;0.5&quot;/&gt;&lt;circle cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;0.8&quot; fill=&quot;#000080&quot;/&gt;&lt;g stroke=&quot;#000080&quot; stroke-width=&quot;0.2&quot;&gt;&lt;line x1=&quot;12&quot; y1=&quot;9&quot; x2=&quot;12&quot; y2=&quot;15&quot;/&gt;&lt;line x1=&quot;9&quot; y1=&quot;12&quot; x2=&quot;15&quot; y2=&quot;12&quot;/&gt;&lt;line x1=&quot;9.8&quot; y1=&quot;9.8&quot; x2=&quot;14.2&quot; y2=&quot;14.2&quot;/&gt;&lt;line x1=&quot;9.8&quot; y1=&quot;14.2&quot; x2=&quot;14.2&quot; y2=&quot;9.8&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/h1&gt;
        &lt;p class=&quot;quick-value&quot;&gt;Visualize your metabolic switch from glucose to deep cellular repair.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 20px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 12px; border: 1px dashed #cbd5e1;&quot;&gt;AD SLOT TOP&lt;/div&gt;
  
    &lt;div class=&quot;otechy-card&quot;&gt;
        &lt;div class=&quot;input-group&quot;&gt;
            &lt;label style=&quot;font-weight: 700; color: #1e293b; display: block; margin-bottom: 10px;&quot;&gt;Slide to your current fasting hour:&lt;/label&gt;
            &lt;input type=&quot;range&quot; id=&quot;fast-range&quot; min=&quot;0&quot; max=&quot;36&quot; value=&quot;0&quot; step=&quot;1&quot; oninput=&quot;updateFastTracker(this.value)&quot; style=&quot;width:100%; margin: 10px 0 20px; cursor: pointer;&quot;&gt;
            &lt;div style=&quot;display:flex; justify-content:space-between; font-size:12px; color:#64748b; font-weight:700;&quot;&gt;
                &lt;span&gt;0h&lt;/span&gt;&lt;span&gt;12h&lt;/span&gt;&lt;span&gt;18h&lt;/span&gt;&lt;span&gt;24h&lt;/span&gt;&lt;span&gt;30h&lt;/span&gt;&lt;span&gt;36h&lt;/span&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;status-result-box&quot; id=&quot;status-box&quot;&gt;
            &lt;div class=&quot;status-header&quot;&gt;
                &lt;span class=&quot;hour-tag&quot;&gt;&lt;span id=&quot;hour-val&quot;&gt;0&lt;/span&gt; Hours In&lt;/span&gt;
                &lt;span id=&quot;phase-tag&quot; class=&quot;phase-badge&quot;&gt;Digestion&lt;/span&gt;
            &lt;/div&gt;
            &lt;div id=&quot;fun-fact-container&quot; style=&quot;background: #eff6ff; padding: 10px 15px; border-radius: 8px; margin: 15px 0; font-size: 13px; color: #1d4ed8; border: 1px solid #dbeafe;&quot;&gt;
                &lt;strong&gt;Did you know?&lt;/strong&gt; &lt;span id=&quot;fun-fact-text&quot;&gt;Insulin acts like a traffic cop, directing fuel into cells.&lt;/span&gt;
            &lt;/div&gt;
            &lt;h3 id=&quot;status-title&quot; style=&quot;margin-top:10px; color:#1e293b;&quot;&gt;Waiting for Start...&lt;/h3&gt;
            &lt;p id=&quot;status-desc&quot; style=&quot;font-size:14px; color:#475569; line-height: 1.6; margin-bottom: 0;&quot;&gt;Move the slider to see what&#39;s happening inside your body.&lt;/p&gt;
        &lt;/div&gt;

        &lt;div style=&quot;margin-top: 25px;&quot;&gt;
            &lt;button class=&quot;otechy-btn&quot; onclick=&quot;generateFastPDF()&quot;&gt;Export Bio-Report (PDF)&lt;/button&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;strategy-grid&quot;&gt;
        &lt;div class=&quot;otechy-card highlight-start&quot;&gt;
            &lt;h4 style=&quot;color:#3b82f6; margin-top:0; margin-bottom: 10px;&quot;&gt;🚀 How to Start&lt;/h4&gt;
            &lt;p style=&quot;font-size:13px; color: #475569; margin: 0;&quot;&gt;The most efficient route is the &lt;strong&gt;&quot;Dinner-to-Sleep&quot;&lt;/strong&gt; method. Eat a protein-heavy dinner, then start your clock. Sleeping through the first 8 hours bypasses initial hunger. Avoid a massive &quot;final breakfast&quot; as the high insulin spike makes the first 6 hours of fasting much harder.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;otechy-card highlight-end&quot;&gt;
            &lt;h4 style=&quot;color:#10b981; margin-top:0; margin-bottom: 10px;&quot;&gt;🥗 How to Break&lt;/h4&gt;
            &lt;p style=&quot;font-size:13px; color: #475569; margin: 0;&quot;&gt;Break gently with &lt;strong&gt;Protein and healthy fats&lt;/strong&gt; (e.g., eggs or bone broth). Avoid high-carb meals immediately. Since your insulin sensitivity is at a peak, a large carb load can cause an aggressive sugar spike, undoing much of your hard work.&lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 30px 0; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 12px; border: 1px dashed #cbd5e1;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;
  
    &lt;section class=&quot;expert-protocol-section&quot;&gt;
        &lt;div class=&quot;expert-header&quot; style=&quot;margin-bottom: 25px;&quot;&gt;
            &lt;h2 style=&quot;color: #1e293b; font-size: clamp(20px, 4vw, 24px); margin-top: 0;&quot;&gt;&quot;Pulse&quot; Protocol: Expert Recommendations&lt;/h2&gt;
            &lt;p style=&quot;color: #64748b; font-style: italic; margin: 0;&quot;&gt;Fasting is a biological stimulus that is beneficial in specific doses but detrimental when it becomes chronic.&lt;/p&gt;
        &lt;/div&gt;

        &lt;div class=&quot;protocol-grid&quot;&gt;
            &lt;div class=&quot;protocol-card&quot;&gt;
                &lt;h3&gt;1. Biphasic Metabolic Response&lt;/h3&gt;
                &lt;p&gt;&lt;strong&gt;The Stimulation Phase (24–36h):&lt;/strong&gt; Your body spikes adrenaline and norepinephrine, increasing energy expenditure and shifting into high-gear fat oxidation. Metabolism may increase by up to 14%.&lt;/p&gt;
                &lt;p style=&quot;margin-bottom: 0;&quot;&gt;&lt;strong&gt;The Conservation Phase (72h+):&lt;/strong&gt; Beyond the sweet spot, the body triggers &quot;adaptive thermogenesis,&quot; slowing your metabolism to survive a perceived famine.&lt;/p&gt;
            &lt;/div&gt;

            &lt;div class=&quot;protocol-card&quot;&gt;
                &lt;h3&gt;2. The Risk of Daily 16:8&lt;/h3&gt;
                &lt;p&gt;&lt;strong&gt;Metabolic Tanking:&lt;/strong&gt; Constant daily restriction can drop your resting metabolic rate by over 260 calories per day within 2-3 weeks.&lt;/p&gt;
                &lt;p style=&quot;margin-bottom: 0;&quot;&gt;&lt;strong&gt;Muscle Atrophy:&lt;/strong&gt; Chronic under-eating can lead to a 5% loss in muscle mass in just 21 days, degrading your long-term fat-burning potential.&lt;/p&gt;
            &lt;/div&gt;

            &lt;div class=&quot;protocol-card&quot;&gt;
                &lt;h3&gt;3. Metabolic Flexibility&lt;/h3&gt;
                &lt;p&gt;&lt;strong&gt;The Paradox:&lt;/strong&gt; While a 72-hour fast burns fat, it can temporarily impair glucose tolerance, making you &quot;stuck&quot; in fat-burning mode.&lt;/p&gt;
                &lt;p style=&quot;margin-bottom: 0;&quot;&gt;&lt;strong&gt;The Solution:&lt;/strong&gt; Intermittent, non-consecutive fasts (e.g., two 24-hour fasts per week) improve insulin sensitivity by providing &quot;breaks&quot; to switch fuel sources.&lt;/p&gt;
            &lt;/div&gt;

            &lt;div class=&quot;protocol-card&quot;&gt;
                &lt;h3&gt;4. Clinical Guidelines&lt;/h3&gt;
                &lt;p&gt;&lt;strong&gt;For 16:8 Users:&lt;/strong&gt; Take a 2–3 day &quot;reset&quot; every 7 to 14 days where you eat normally to let your metabolism &quot;breathe.&quot;&lt;/p&gt;
                &lt;p style=&quot;margin-bottom: 0;&quot;&gt;&lt;strong&gt;Anabolic Support:&lt;/strong&gt; Keep protein intake high during eating windows. Fasting provides the &quot;signal&quot; for repair; protein provides the &quot;bricks.&quot;&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;warning-box&quot;&gt;
            &lt;strong&gt;⚠️ Warning Signs:&lt;/strong&gt; If you experience a drop in grip strength, persistent low energy, or disrupted sleep, your body is entering metabolic conservation and requires an immediate refeed period.
        &lt;/div&gt;
    &lt;/section&gt;

    &lt;section class=&quot;expert-insights-highlight&quot;&gt;
        &lt;h2&gt;🧬 Biology of the Fast: Expert Insights&lt;/h2&gt;
        
        &lt;div class=&quot;insight-grid&quot;&gt;
            &lt;div class=&quot;insight-item&quot;&gt;
                &lt;strong&gt;&quot;Traffic Cop&quot; Effect&lt;/strong&gt;
                &lt;p&gt;In the first 4 hours, insulin acts as a traffic director, pushing glucose into cells and signaling your body that it does not need to burn fat yet.&lt;/p&gt;
            &lt;/div&gt;
            
            &lt;div class=&quot;insight-item&quot;&gt;
                &lt;strong&gt;Water Weight Release&lt;/strong&gt;
                &lt;p&gt;Between hours 4 and 8, every molecule of glycogen burned releases three molecules of water, explaining the rapid initial &quot;weight loss&quot;.&lt;/p&gt;
            &lt;/div&gt;

            &lt;div class=&quot;insight-item&quot;&gt;
                &lt;strong&gt;14% Metabolic Boost&lt;/strong&gt;
                &lt;p&gt;By hour 12, your metabolic rate may actually increase by up to 14% as adrenaline and norepinephrine rise to keep you alert.&lt;/p&gt;
            &lt;/div&gt;

            &lt;div class=&quot;insight-item&quot;&gt;
                &lt;strong&gt;70% Brain Efficiency&lt;/strong&gt;
                &lt;p&gt;Between hours 12-16, the brain begins running on ketones, which are up to 70% more efficient than glucose for mental focus.&lt;/p&gt;
            &lt;/div&gt;

            &lt;div class=&quot;insight-item&quot;&gt;
                &lt;strong&gt;Stem Cell Regeneration&lt;/strong&gt;
                &lt;p&gt;At the 24-hour mark, fasting has been shown to increase stem cell production, helping your body repair itself from the inside out.&lt;/p&gt;
            &lt;/div&gt;

            &lt;div class=&quot;insight-item&quot;&gt;
                &lt;strong&gt;5x Growth Hormone Surge&lt;/strong&gt;
                &lt;p&gt;Growth hormone levels can skyrocket by up to five times, melting fat while strictly preserving your vital muscle mass.&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div style=&quot;margin-top: 25px; padding: 15px; background: #fffbeb; border: 1px solid #fde68a; border-radius: 10px;&quot;&gt;
            &lt;h4 style=&quot;color: #92400e; margin: 0 0 10px 0; font-size: 15px;&quot;&gt;💡 Expert Strategy: Gentle Break&lt;/h4&gt;
            &lt;p style=&quot;font-size: 13px; color: #78350f; margin: 0;&quot;&gt;The biggest mistake is &quot;slamming&quot; your body with high-carb meals immediately after a fast. This causes a massive insulin spike that can undo your hard work. &lt;strong&gt;Recommended Route:&lt;/strong&gt; Break with protein (eggs/meat) and &lt;strong&gt;Bone Broth&lt;/strong&gt; to replenish electrolytes and support gut healing.&lt;/p&gt;
        &lt;/div&gt;
    &lt;/section&gt;
  
    &lt;section id=&quot;faq-section&quot;&gt;
        &lt;h2 style=&quot;text-align:center; margin: 40px 0 20px; font-size: clamp(20px, 4vw, 24px);&quot;&gt;Frequently Asked Questions&lt;/h2&gt;
        &lt;div class=&quot;faq-container&quot;&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;1. Why does 16:8 stop working after a few weeks?&lt;/strong&gt; Your body is a survival machine. If you fast every single day, it recognizes the pattern and downshifts your metabolism to match the lower energy intake, often stalling weight loss entirely.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;2. Can I use fasting for a &quot;baby&quot; or infant?&lt;/strong&gt; Absolutely not. Babies and growing children are in a state of constant tissue expansion. Fasting acts as a stressor that can disrupt their necessary growth phases and nutrient requirements.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;3. What happens to my muscle mass during long fasts?&lt;/strong&gt; If you don&#39;t eat enough protein during your windows, your body may start breaking down muscle for amino acids. High-protein intake is your &quot;metabolic insurance policy.&quot;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;4. Why do I feel &quot;flat&quot; and tired?&lt;/strong&gt; This is a symptom of your &quot;metabolic engine&quot; cooling down. It usually happens when fasting frequency is too high and your body begins conserving energy.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;5. How does fasting impact brain fog?&lt;/strong&gt; By hour 10-12, the liver produces ketones. Your brain runs up to 70% more efficiently on ketones than glucose, which results in &quot;crystal clear&quot; thinking.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;6. Does fasting help with anti-aging?&lt;/strong&gt; Yes, through Autophagy. Starting around hour 16, your cells begin identifying and recycling old, damaged proteins, which is a key process in cellular longevity.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;7. Is black coffee allowed?&lt;/strong&gt; Yes. Plain black coffee does not trigger an insulin response, so it keeps your body in the &quot;fasted state&quot; while potentially boosting metabolism via adrenaline.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;8. What is the best way to start my first fast?&lt;/strong&gt; Start after dinner. By the time you wake up, you are already 8-10 hours into the fast, making the remaining hours much more manageable.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;9. Can I fast if I have a high-stress lifestyle?&lt;/strong&gt; Fasting is a &quot;hormetic stress.&quot; If your life stress is already maximum, adding the stress of fasting can lead to burnout and metabolic crashes.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;10. Does 16:8 impact sleep?&lt;/strong&gt; It can. If you are under-eating, your body may produce more cortisol and adrenaline to keep you alert for &quot;hunting,&quot; which can cause insomnia.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;11. What is &quot;Adaptive Thermogenesis&quot;?&lt;/strong&gt; This is the biological process where your body reduces its internal heat production and energy use to prevent starvation.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;12. Why do I get headaches?&lt;/strong&gt; Often due to dehydration or electrolyte loss. For every molecule of glycogen burned, your body releases three molecules of water, making hydration critical.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;13. How do I know if I&#39;m losing muscle?&lt;/strong&gt; Pay attention to your &quot;grip strength&quot; or your ability to lift the same weights. If strength drops, you are likely losing muscle tissue.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;14. Is 36 hours better than 16 hours?&lt;/strong&gt; For deep cellular repair (Autophagy), longer fasts are better. For daily weight management, shorter fasts with regular &quot;reset days&quot; are more sustainable.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;15. Can I fast while pregnant?&lt;/strong&gt; No. Like the &quot;baby&quot; rule, pregnancy requires a consistent nutrient flow for the developing fetus. Fasting should be avoided.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;16. What is &quot;Metabolic Flexibility&quot;?&lt;/strong&gt; It is the ability of your body to switch effortlessly between burning carbohydrates and burning stored body fat. Fasting &quot;trains&quot; this metabolic muscle.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;17. Does fasting lower inflammation?&lt;/strong&gt; Yes. Studies show that inflammation markers typically drop during the repair phase (Hours 16-20) of a fast.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;18. Should I workout while fasted?&lt;/strong&gt; Yes, light-to-moderate activity can accelerate the transition from glycogen burning to fat burning.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;19. What is the &quot;Sweet Spot&quot; for fat loss?&lt;/strong&gt; The 24 to 36-hour mark is the peak for norepinephrine-induced fat burning before the body starts defensive energy conservation.&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;strong&gt;20. How often should I do a 36-hour fast?&lt;/strong&gt; For most, once a week or once every two weeks is sufficient to get the &quot;metabolic pop&quot; without triggering the starvation response.&lt;/div&gt;
        &lt;/div&gt;
    &lt;/section&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 30px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 12px; border: 1px dashed #cbd5e1;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;
  
    &lt;div class=&quot;geo-citation&quot;&gt;
        &lt;strong&gt;Fasting Bio-Architecture&lt;/strong&gt; by OTechy.com. This utility combines metabolic curve data with clinical pulse protocols to provide a sustainable roadmap for fat loss and cellular repair in &lt;span class=&quot;dynamic-year&quot;&gt;&lt;/span&gt;.
    &lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
    const fastData = {
        0: { title: &quot;Feeding &amp; Digestion&quot;, phase: &quot;Digestion&quot;, fact: &quot;Insulin acts like a traffic cop, directing energy into cells and stopping fat burn.&quot;, desc: &quot;Your body is processing your last meal. Muscles and brain are using glucose for energy. Digestion is at peak activity.&quot; },
        4: { title: &quot;Glycogen Burn&quot;, phase: &quot;Post-Absorptive&quot;, fact: &quot;For every glycogen molecule burned, your body releases 3 molecules of water.&quot;, desc: &quot;Insulin levels fall. Your body begins tapping into stored glycogen in the liver for energy. You may notice rapid water loss.&quot; },
        10: { title: &quot;Ketone Power&quot;, phase: &quot;Fat Burning&quot;, fact: &quot;Your brain runs up to 70% more efficiently on Ketones than on Glucose.&quot;, desc: &quot;Fat stores are releasing energy. The liver produces Ketone bodies, which act as premium fuel for the brain, enhancing focus.&quot; },
        16: { title: &quot;Autophagy Cleanup&quot;, phase: &quot;Cellular Repair&quot;, fact: &quot;The 2016 Nobel Prize was awarded for the discovery of this &#39;Self-Eating&#39; cleanup process.&quot;, desc: &quot;Cells begin identifying damaged proteins and old mitochondria to recycle them. This is your body&#39;s natural detox system.&quot; },
        24: { title: &quot;Hormone Surge&quot;, phase: &quot;Peak Anabolic&quot;, fact: &quot;Growth hormone levels skyrocket by up to 5x to preserve your muscle mass.&quot;, desc: &quot;Fat oxidation is maximized. Inflammation continues to drop. Growth hormones ensure you lose fat, not muscle.&quot; },
        30: { title: &quot;Metabolic Increase&quot;, phase: &quot;Hyper-Burn&quot;, fact: &quot;Metabolic rate can increase by up to 14% due to adrenaline spikes.&quot;, desc: &quot;Adrenaline and norepinephrine levels rise, keeping you alert and focused. This is a survival mechanism from our hunter-gatherer days.&quot; },
        36: { title: &quot;The Sweet Spot&quot;, phase: &quot;Maximum ROI&quot;, fact: &quot;This is the optimal balance of fat burning and repair before conservation kicks in.&quot;, desc: &quot;Maximum cellular housekeeping is complete. Your body is optimized for fat loss and insulin sensitivity is at its peak.&quot; }
    };

    function updateFastTracker(h) {
        document.getElementById(&#39;hour-val&#39;).innerText = h;
        let data = fastData[0];
        Object.keys(fastData).forEach(key =&gt; { if (parseInt(h) &gt;= parseInt(key)) data = fastData[key]; });

        document.getElementById(&#39;status-title&#39;).innerText = data.title;
        document.getElementById(&#39;phase-tag&#39;).innerText = data.phase;
        document.getElementById(&#39;status-desc&#39;).innerText = data.desc;
        document.getElementById(&#39;fun-fact-text&#39;).innerText = data.fact;
    }

    function generateFastPDF() {
        const { jsPDF } = window.jspdf;
        const doc = new jsPDF();
        const hour = document.getElementById(&#39;hour-val&#39;).innerText;
        const y = new Date().getFullYear();

        doc.setFillColor(59, 130, 246); doc.rect(0, 0, 210, 40, &#39;F&#39;);
        doc.setFont(&quot;helvetica&quot;, &quot;bold&quot;); doc.setFontSize(22); doc.setTextColor(255, 255, 255);
        doc.text(&quot;OTechy Fasting Bio-Report&quot;, 20, 25);
        doc.setFontSize(10); doc.setFont(&quot;helvetica&quot;, &quot;normal&quot;);
        doc.text(`Metabolic Roadmap &amp; Timeline Analysis - ${y}`, 20, 32);

        doc.setTextColor(30, 41, 59); doc.setFontSize(16); doc.setFont(&quot;helvetica&quot;, &quot;bold&quot;);
        doc.text(`Analysis: Hour ${hour} of Fasting`, 20, 55);
        
        doc.setFontSize(12);
        doc.text(`Phase: ${document.getElementById(&#39;phase-tag&#39;).innerText}`, 20, 65);
        doc.text(`Status: ${document.getElementById(&#39;status-title&#39;).innerText}`, 20, 72);
        
        doc.setFont(&quot;helvetica&quot;, &quot;normal&quot;);
        const splitText = doc.splitTextToSize(document.getElementById(&#39;status-desc&#39;).innerText, 170);
        doc.text(splitText, 20, 82);

        doc.setFont(&quot;helvetica&quot;, &quot;bold&quot;);
        doc.text(&quot;Fun Fact at this stage:&quot;, 20, 110);
        doc.setFont(&quot;helvetica&quot;, &quot;normal&quot;);
        doc.text(`- ${document.getElementById(&#39;fun-fact-text&#39;).innerText}`, 20, 118);

        doc.setFont(&quot;helvetica&quot;, &quot;bold&quot;);
        doc.text(&quot;Expert Recommendations:&quot;, 20, 135);
        doc.setFont(&quot;helvetica&quot;, &quot;normal&quot;);
        doc.text(&quot;- Break fast with protein/fats (eggs, bone broth).&quot;, 20, 145);
        doc.text(&quot;- Do not repeat daily 16:8 indefinitely; use rest days.&quot;, 20, 152);
        doc.text(&quot;- Monitor sleep and grip strength for safety.&quot;, 20, 159);

        doc.save(`OTechy_Fasting_Report_Hour${hour}.pdf`);
    }

    document.addEventListener(&#39;DOMContentLoaded&#39;, () =&gt; {
        const y = new Date().getFullYear();
        document.querySelectorAll(&#39;.dynamic-year&#39;).forEach(el =&gt; el.innerText = y);
        updateFastTracker(0);
    });
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/7740042230728598284'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/7740042230728598284'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/04/36-hour-fasting-bio-timeline-hourly.html' title='36-Hour Fasting Bio-Timeline: Hourly Body Changes'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-5013709601734478720</id><published>2026-04-04T05:53:00.000-07:00</published><updated>2026-04-06T01:45:36.058-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Nutrition"/><category scheme="http://www.blogger.com/atom/ns#" term="Vegetables"/><title type='text'>Vegetable &amp; Dairy Nutrition Database | Macro per 100g</title><content type='html'>&lt;title&gt;Precision Veg &amp; Dairy Database | 75+ Varieties &amp; Full Micros - OTechy&lt;/title&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
&lt;meta name=&quot;description&quot; content=&quot;Standardized 100g database for vegetables, Indian Saag, and Dairy. Track Calcium, Potassium, Vit C, Vit K, B12, and Iron with precision logic.&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;0,850;1,500&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

&lt;style&gt;
    /* --- OTechy Design System: Farm Fresh V3 (Mobile Responsive) --- */
    :root { 
        --primary: #16a34a; --primary-dark: #15803d; 
        --text-dark: #0f172a; --accent: #475569; 
        --bg: #f8fafc; --white: #fff; --border: #e2e8f0; 
        --soft-bg: #f0fdf4; --font-main: &#39;Poppins&#39;, sans-serif;
        --carb-color: #3b82f6; --pro-color: #8b5cf6; --fat-color: #eab308;
    }
    
    * { box-sizing: border-box; }
    body { background-color: var(--bg); font-family: var(--font-main); color: var(--text-dark); margin: 0; line-height: 1.6; }
    .otechy-tool-wrapper { max-width: 1350px; margin: 0 auto; padding: 70px 15px 60px; }
    
    /* Ads System */
    .otechy-ad-top, .otechy-ad-middle, .otechy-ad-bottom { display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; background: #f1f5f9; border-radius: 10px; border: 1px dashed #cbd5e1; width: 100%; height: 90px; margin-bottom: 20px; }

    /* Hero Section */
    .hero-section { text-align: center; margin-bottom: 25px; padding: clamp(40px, 8vw, 60px) 20px; background: linear-gradient(135deg, #dcfce7 0%, #ffffff 100%); border-radius: 24px; border: 1px solid var(--border); box-shadow: 0 10px 30px rgba(22, 163, 74, 0.05); }
    .hero-section h1 { font-size: clamp(24px, 5vw, 42px); font-weight: 850; margin: 0; letter-spacing: -1px; }
    .hero-section h1 span { color: var(--primary); }
    .hero-subtitle { color: var(--accent); font-size: clamp(12px, 3vw, 14px); font-weight: 500; max-width: 850px; margin: 10px auto 25px; }

    /* Filters System */
    .filter-tier { display: flex; justify-content: center; gap: 8px; flex-wrap: wrap; margin-bottom: 25px; }
    .filter-btn { background: var(--white); border: 1px solid var(--border); color: var(--accent); padding: 8px 16px; border-radius: 50px; font-weight: 700; font-size: 11px; cursor: pointer; transition: 0.2s; text-transform: uppercase; }
    .filter-btn:hover { border-color: var(--primary); color: var(--primary); background: var(--soft-bg); }
    .filter-btn.active { background: var(--text-dark); color: #fff; border-color: var(--text-dark); }
    .filter-btn.fav { color: #ef4444; border-color: #fecaca; background: #fef2f2; }

    /* Search Bar */
    .search-bar { position: relative; max-width: 700px; margin: 0 auto 30px; width: 100%; }
    .search-bar input { width: 100%; padding: 14px 20px 14px 45px; border-radius: 14px; border: 2px solid var(--border); font-family: var(--font-main); font-size: 15px; font-weight: 600; outline: none; box-shadow: 0 8px 25px rgba(0,0,0,0.03); }
    .search-icon { position: absolute; left: 15px; top: 50%; transform: translateY(-50%); color: var(--accent); }

    /* Grid &amp; Cards */
    .bio-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 20px; }
    .bio-card { background: var(--white); border-radius: 20px; border: 1px solid #000; padding: 20px; transition: 0.3s; box-shadow: 0 4px 12px rgba(0,0,0,0.05); position: relative; }
    .bio-card:hover { border-color: var(--primary); transform: translateY(-3px); }
    
    .card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; }
    .bio-name { font-size: 19px; font-weight: 850; color: var(--text-dark); display: flex; align-items: center; gap: 10px; }
    .fav-btn { cursor: pointer; font-size: 20px; user-select: none; }
    
    .macro-mini { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; background: #f8fafc; padding: 12px; border-radius: 12px; margin-bottom: 15px; border: 1px solid var(--border); }
    .m-item { text-align: center; }
    .m-item span { font-size: 14px; font-weight: 850; display: block; }
    .m-item label { font-size: 9px; font-weight: 700; color: var(--accent); text-transform: uppercase; }

    .micro-grid { border-top: 1px solid var(--border); padding-top: 10px; margin-bottom: 15px; }
    .micro-row { display: flex; justify-content: space-between; font-size: 11px; padding: 4px 0; border-bottom: 1px dashed #f1f5f9; }
    .micro-lbl { color: var(--accent); font-weight: 600; }
    .micro-val { font-weight: 800; color: var(--text-dark); }

    .fact-tag { font-size: 11px; font-weight: 500; padding: 12px; background: #f0fdf4; border-radius: 10px; border-left: 4px solid var(--primary); color: #166534; margin-top: auto; line-height: 1.4; }

    @media (max-width: 768px) {
        .otechy-tool-wrapper { padding: 40px 12px; }
        .bio-grid { grid-template-columns: 1fr; }
        .hero-section { padding: 30px 15px; }
        .filter-btn { font-size: 10px; padding: 6px 12px; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;
    &lt;div class=&quot;hero-section&quot;&gt;
     
        &lt;h1&gt;Global &amp; Regional  &lt;span&gt; Veggie Explorer&lt;/span&gt; Index&lt;/h1&gt;
        &lt;p class=&quot;hero-subtitle&quot;&gt;Detailed profiles for 75+ items. Optimize your diet. Explore the exact macronutrients, net carbs, and mineral profiles of fresh vegetables, local Indian leafy greens (Saag), and dairy products based on a standardized 100g serving.&lt;/p&gt;
         &lt;p&gt; Tracking Calcium, Potassium, Vitamin K, B12, and Iron per 100g raw base.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot;&gt;AD SLOT TOP&lt;/div&gt;

    &lt;div class=&quot;controls-area&quot;&gt;
        &lt;div class=&quot;search-bar&quot;&gt;
            &lt;svg class=&quot;search-icon&quot; width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;circle cx=&quot;11&quot; cy=&quot;11&quot; r=&quot;8&quot;&gt;&lt;/circle&gt;&lt;line x1=&quot;21&quot; y1=&quot;21&quot; x2=&quot;16.65&quot; y2=&quot;16.65&quot;&gt;&lt;/line&gt;&lt;/svg&gt;
            &lt;input type=&quot;text&quot; id=&quot;searchInput&quot; placeholder=&quot;Search Lal Saag, B12, Calcium...&quot; oninput=&quot;handleSearch()&quot;&gt;
        &lt;/div&gt;

        &lt;div class=&quot;filter-tier&quot; id=&quot;mainFilters&quot;&gt;
            &lt;button class=&quot;filter-btn active&quot; onclick=&quot;setFilter(&#39;All&#39;)&quot;&gt;All Items&lt;/button&gt;
            &lt;button class=&quot;filter-btn fav&quot; onclick=&quot;setFilter(&#39;Favorites&#39;)&quot;&gt;❤️ Tracked&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Leafy Greens&#39;)&quot;&gt;🥬 Leafy Greens (Saag)&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Indian&#39;)&quot;&gt;🇮🇳 Indian&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Vegetables&#39;)&quot;&gt;🥦 Vegetables&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Dairy&#39;)&quot;&gt;🥛 Dairy&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Keto-Friendly&#39;)&quot;&gt;🥑 Keto / Low Carb&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;High Protein&#39;)&quot;&gt;🧀 High Protein&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Calcium Rich&#39;)&quot;&gt;🦴 Calcium Rich&lt;/button&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;bio-grid&quot; id=&quot;dataGrid&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; style=&quot;margin-top:30px;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;
    &lt;div class=&quot;otechy-ad-bottom&quot; style=&quot;margin-top:30px;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
    const db = [
/* --- Remaining 72 Precision Database Entries --- */
{ name: &quot;Moringa Leaves (Sajne Pata)&quot;, emoji: &quot;🌿&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;, &quot;Calcium Rich&quot;], cals: 64, carbs: 8.3, fiber: 2.0, pro: 9.4, fat: 1.4, calc: &quot;440mg&quot;, potas: &quot;337mg&quot;, vitC: &quot;51mg&quot;, vitK: &quot;108mcg&quot;, iron: &quot;4mg&quot;, mag: &quot;147mg&quot;, fact: &quot;A Bengali superfood with 4x more Calcium than milk and significant plant-based protein.&quot; },
{ name: &quot;Broccoli&quot;, emoji: &quot;🥦&quot;, category: [&quot;Vegetables&quot;, &quot;Keto-Friendly&quot;], cals: 34, carbs: 6.6, fiber: 2.6, pro: 2.8, fat: 0.4, calc: &quot;47mg&quot;, potas: &quot;316mg&quot;, vitC: &quot;89mg&quot;, vitK: &quot;101mcg&quot;, iron: &quot;0.7mg&quot;, mag: &quot;21mg&quot;, fact: &quot;High in Sulforaphane and Vitamin C. Steaming preserves the delicate folate and vitamin K.&quot; },
{ name: &quot;Fenugreek Leaves (Methi)&quot;, emoji: &quot;🌱&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 49, carbs: 6.0, fiber: 4.8, pro: 4.4, fat: 0.9, calc: &quot;395mg&quot;, potas: &quot;77mg&quot;, vitC: &quot;52mg&quot;, vitK: &quot;150mcg&quot;, iron: &quot;3.7mg&quot;, mag: &quot;50mg&quot;, fact: &quot;Highly effective for controlling blood sugar spikes and improving insulin response.&quot; },
{ name: &quot;Cauliflower (Fulkopi)&quot;, emoji: &quot;🥦&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 25, carbs: 5.0, fiber: 2.0, pro: 1.9, fat: 0.3, calc: &quot;22mg&quot;, potas: &quot;299mg&quot;, vitC: &quot;48mg&quot;, vitK: &quot;15mcg&quot;, iron: &quot;0.4mg&quot;, mag: &quot;15mg&quot;, fact: &quot;The ultimate low-carb rice substitute. Packed with choline for brain health.&quot; },
{ name: &quot;Greek Yogurt&quot;, emoji: &quot;🥛&quot;, category: [&quot;Dairy&quot;, &quot;Keto-Friendly&quot;, &quot;High Protein&quot;, &quot;Calcium Rich&quot;], cals: 59, carbs: 3.6, fiber: 0, pro: 10.0, fat: 0.4, calc: &quot;110mg&quot;, potas: &quot;141mg&quot;, vitC: &quot;0mg&quot;, vitB12: &quot;0.7mcg&quot;, iron: &quot;0.1mg&quot;, mag: &quot;11mg&quot;, fact: &quot;Strained to double the protein and B12 concentration compared to regular curd.&quot; },
{ name: &quot;Bitter Gourd (Korola)&quot;, emoji: &quot;🥒&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 17, carbs: 3.7, fiber: 2.8, pro: 1.0, fat: 0.2, calc: &quot;19mg&quot;, potas: &quot;296mg&quot;, vitC: &quot;84mg&quot;, vitK: &quot;4mcg&quot;, iron: &quot;0.4mg&quot;, mag: &quot;17mg&quot;, fact: &quot;Contains Polypeptide-p, a plant insulin that naturally lowers blood glucose levels.&quot; },
{ name: &quot;Pointed Gourd (Potol)&quot;, emoji: &quot;🥒&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 20, carbs: 2.2, fiber: 1.5, pro: 1.2, fat: 0.2, calc: &quot;30mg&quot;, potas: &quot;125mg&quot;, vitC: &quot;29mg&quot;, vitK: &quot;2mcg&quot;, iron: &quot;1.5mg&quot;, mag: &quot;9mg&quot;, fact: &quot;A Bengali staple; great for digestion and managing seasonal fevers.&quot; },
{ name: &quot;Cabbage (Badhakopi)&quot;, emoji: &quot;🥬&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 25, carbs: 5.8, fiber: 2.5, pro: 1.3, fat: 0.1, calc: &quot;40mg&quot;, potas: &quot;170mg&quot;, vitC: &quot;36mg&quot;, vitK: &quot;76mcg&quot;, iron: &quot;0.5mg&quot;, mag: &quot;12mg&quot;, fact: &quot;Rich in Glutamine, an amino acid that specifically heals the stomach lining.&quot; },
{ name: &quot;Bottle Gourd (Lau)&quot;, emoji: &quot;🥒&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 14, carbs: 3.4, fiber: 0.5, pro: 0.6, fat: 0.1, calc: &quot;26mg&quot;, potas: &quot;150mg&quot;, vitC: &quot;10mg&quot;, vitK: &quot;1mcg&quot;, iron: &quot;0.2mg&quot;, mag: &quot;11mg&quot;, fact: &quot;96% water; acts as a powerful natural diuretic and body coolant.&quot; },
{ name: &quot;Ridge Gourd (Jhinge)&quot;, emoji: &quot;🥒&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 15, carbs: 3.0, fiber: 1.0, pro: 0.7, fat: 0.2, calc: &quot;18mg&quot;, potas: &quot;139mg&quot;, vitC: &quot;12mg&quot;, vitK: &quot;2mcg&quot;, iron: &quot;0.4mg&quot;, mag: &quot;14mg&quot;, fact: &quot;Excellent for blood purification and boosting liver health.&quot; },
{ name: &quot;Drumstick (Sajne)&quot;, emoji: &quot;🎋&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;], cals: 37, carbs: 8.5, fiber: 3.2, pro: 2.1, fat: 0.2, calc: &quot;30mg&quot;, potas: &quot;259mg&quot;, vitC: &quot;141mg&quot;, vitK: &quot;0mcg&quot;, iron: &quot;0.4mg&quot;, mag: &quot;45mg&quot;, fact: &quot;The pods contain massive Vitamin C levels, higher than many citrus fruits.&quot; },
{ name: &quot;Pumpkin (Kumro)&quot;, emoji: &quot;🎃&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;], cals: 26, carbs: 6.5, fiber: 0.5, pro: 1.0, fat: 0.1, calc: &quot;21mg&quot;, potas: &quot;340mg&quot;, vitC: &quot;9mg&quot;, vitK: &quot;1mcg&quot;, iron: &quot;0.8mg&quot;, mag: &quot;12mg&quot;, fact: &quot;Extremely rich in Beta-Carotene (Vitamin A) for eye and skin health.&quot; },
{ name: &quot;Eggplant (Begun)&quot;, emoji: &quot;🍆&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 25, carbs: 5.9, fiber: 3.0, pro: 1.0, fat: 0.2, calc: &quot;9mg&quot;, potas: &quot;229mg&quot;, vitC: &quot;2mg&quot;, vitK: &quot;3mcg&quot;, iron: &quot;0.2mg&quot;, mag: &quot;14mg&quot;, fact: &quot;Skin contains Nasunin, a potent antioxidant that protects brain cell membranes.&quot; },
{ name: &quot;Okra (Bhindi)&quot;, emoji: &quot;🥒&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 33, carbs: 7.5, fiber: 3.2, pro: 1.9, fat: 0.2, calc: &quot;82mg&quot;, potas: &quot;299mg&quot;, vitC: &quot;23mg&quot;, vitK: &quot;31mcg&quot;, iron: &quot;0.6mg&quot;, mag: &quot;57mg&quot;, fact: &quot;The mucilage (slime) binds to cholesterol during digestion, helping to flush it out.&quot; },
{ name: &quot;Carrot (Gajor)&quot;, emoji: &quot;🥕&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;], cals: 41, carbs: 9.6, fiber: 2.8, pro: 0.9, fat: 0.2, calc: &quot;33mg&quot;, potas: &quot;320mg&quot;, vitC: &quot;6mg&quot;, vitK: &quot;13mcg&quot;, iron: &quot;0.3mg&quot;, mag: &quot;12mg&quot;, fact: &quot;Bioavailability of Vitamin A increases significantly when carrots are cooked with a little fat.&quot; },
{ name: &quot;Beetroot&quot;, emoji: &quot;🧶&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;], cals: 43, carbs: 9.6, fiber: 2.8, pro: 1.6, fat: 0.2, calc: &quot;16mg&quot;, potas: &quot;325mg&quot;, vitC: &quot;5mg&quot;, vitK: &quot;0mcg&quot;, iron: &quot;0.8mg&quot;, mag: &quot;23mg&quot;, fact: &quot;High in nitrates which convert to nitric oxide, improving blood flow and stamina.&quot; },
{ name: &quot;Radish (Mulo)&quot;, emoji: &quot;🥕&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 16, carbs: 3.4, fiber: 1.6, pro: 0.7, fat: 0.1, calc: &quot;25mg&quot;, potas: &quot;233mg&quot;, vitC: &quot;15mg&quot;, vitK: &quot;1mcg&quot;, iron: &quot;0.3mg&quot;, mag: &quot;10mg&quot;, fact: &quot;Natural antifungal properties and excellent for clearing sinus congestion.&quot; },
{ name: &quot;Snake Gourd (Chichinga)&quot;, emoji: &quot;🐍&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 18, carbs: 3.7, fiber: 0.8, pro: 0.6, fat: 0.3, calc: &quot;26mg&quot;, potas: &quot;150mg&quot;, vitC: &quot;9mg&quot;, vitK: &quot;2mcg&quot;, iron: &quot;0.2mg&quot;, mag: &quot;11mg&quot;, fact: &quot;Used in Ayurveda to reduce heart inflammation and fever.&quot; },
{ name: &quot;Ash Gourd (Chalkumro)&quot;, emoji: &quot;🍈&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 13, carbs: 3.0, fiber: 2.9, pro: 0.4, fat: 0.2, calc: &quot;19mg&quot;, potas: &quot;150mg&quot;, vitC: &quot;13mg&quot;, vitK: &quot;1mcg&quot;, iron: &quot;0.4mg&quot;, mag: &quot;10mg&quot;, fact: &quot;The most alkaline vegetable; provides a massive energy boost to the nervous system.&quot; },
{ name: &quot;Potato&quot;, emoji: &quot;🥔&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;], cals: 77, carbs: 17.5, fiber: 2.2, pro: 2.0, fat: 0.1, calc: &quot;12mg&quot;, potas: &quot;421mg&quot;, vitC: &quot;20mg&quot;, vitK: &quot;2mcg&quot;, iron: &quot;0.8mg&quot;, mag: &quot;23mg&quot;, fact: &quot;Resistant starch forms when potatoes are cooled after cooking, benefiting gut health.&quot; },
{ name: &quot;Sweet Potato&quot;, emoji: &quot;🍠&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;], cals: 86, carbs: 20.1, fiber: 3.0, pro: 1.6, fat: 0.1, calc: &quot;30mg&quot;, potas: &quot;337mg&quot;, vitC: &quot;2.4mg&quot;, vitK: &quot;2mcg&quot;, iron: &quot;0.6mg&quot;, mag: &quot;25mg&quot;, fact: &quot;Packed with Vitamin A. Low GI makes it a superior carb choice over white potatoes.&quot; },
{ name: &quot;Green Peas (Matar)&quot;, emoji: &quot;🥣&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;High Protein&quot;], cals: 81, carbs: 14.5, fiber: 5.1, pro: 5.4, fat: 0.4, calc: &quot;25mg&quot;, potas: &quot;244mg&quot;, vitC: &quot;40mg&quot;, vitK: &quot;25mcg&quot;, iron: &quot;1.5mg&quot;, mag: &quot;33mg&quot;, fact: &quot;High protein and fiber profile helps slow down sugar absorption in the blood.&quot; },
{ name: &quot;Bell Pepper (Capsicum)&quot;, emoji: &quot;🫑&quot;, category: [&quot;Vegetables&quot;, &quot;Keto-Friendly&quot;], cals: 20, carbs: 4.6, fiber: 1.7, pro: 0.9, fat: 0.2, calc: &quot;7mg&quot;, potas: &quot;175mg&quot;, vitC: &quot;80mg&quot;, vitK: &quot;5mcg&quot;, iron: &quot;0.4mg&quot;, mag: &quot;10mg&quot;, fact: &quot;Red varieties contain 2x more Vitamin C than green ones.&quot; },
{ name: &quot;Tomato&quot;, emoji: &quot;🍅&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 18, carbs: 3.9, fiber: 1.2, pro: 0.9, fat: 0.2, calc: &quot;10mg&quot;, potas: &quot;237mg&quot;, vitC: &quot;14mg&quot;, vitK: &quot;8mcg&quot;, iron: &quot;0.3mg&quot;, mag: &quot;11mg&quot;, fact: &quot;Cooking tomatoes releases Lycopene, which is essential for male prostate health.&quot; },
{ name: &quot;Cucumber (Sosra)&quot;, emoji: &quot;🥒&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 15, carbs: 3.6, fiber: 0.5, pro: 0.7, fat: 0.1, calc: &quot;16mg&quot;, potas: &quot;147mg&quot;, vitC: &quot;2.8mg&quot;, vitK: &quot;16mcg&quot;, iron: &quot;0.3mg&quot;, mag: &quot;13mg&quot;, fact: &quot;Most nutrients are in the peel. High silica content supports hair and nail growth.&quot; },
{ name: &quot;Garlic&quot;, emoji: &quot;🧄&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 149, carbs: 33.1, fiber: 2.1, pro: 6.4, fat: 0.5, calc: &quot;181mg&quot;, potas: &quot;401mg&quot;, vitC: &quot;31mg&quot;, vitK: &quot;2mcg&quot;, iron: &quot;1.7mg&quot;, mag: &quot;25mg&quot;, fact: &quot;Contains Allicin; crushing and letting it sit for 10 mins activates its medicinal power.&quot; },
{ name: &quot;Onion&quot;, emoji: &quot;🧅&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;], cals: 40, carbs: 9.3, fiber: 1.7, pro: 1.1, fat: 0.1, calc: &quot;23mg&quot;, potas: &quot;146mg&quot;, vitC: &quot;7mg&quot;, vitK: &quot;0mcg&quot;, iron: &quot;0.2mg&quot;, mag: &quot;10mg&quot;, fact: &quot;Rich in Quercetin, a flavonoid that helps combat allergies and inflammation.&quot; },
{ name: &quot;Ginger&quot;, emoji: &quot;🫚&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;], cals: 80, carbs: 18.0, fiber: 2.0, pro: 1.8, fat: 0.8, calc: &quot;16mg&quot;, potas: &quot;415mg&quot;, vitC: &quot;5mg&quot;, vitK: &quot;0mcg&quot;, iron: &quot;0.6mg&quot;, mag: &quot;43mg&quot;, fact: &quot;Contains Gingerol; highly effective against morning sickness and muscle pain.&quot; },
{ name: &quot;Green Chili&quot;, emoji: &quot;🌶️&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 40, carbs: 8.8, fiber: 1.5, pro: 1.9, fat: 0.4, calc: &quot;14mg&quot;, potas: &quot;322mg&quot;, vitC: &quot;242mg&quot;, vitK: &quot;14mcg&quot;, iron: &quot;1.0mg&quot;, mag: &quot;23mg&quot;, fact: &quot;One of the highest sources of Vitamin C per gram; boosts metabolism instantly.&quot; },
{ name: &quot;Colocasia Root (Gathi Kochu)&quot;, emoji: &quot;🥔&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;], cals: 112, carbs: 26.5, fiber: 4.1, pro: 1.5, fat: 0.2, calc: &quot;43mg&quot;, potas: &quot;591mg&quot;, vitC: &quot;4.5mg&quot;, vitK: &quot;1mcg&quot;, iron: &quot;0.6mg&quot;, mag: &quot;33mg&quot;, fact: &quot;Low GI carb that provides steady energy without insulin spikes.&quot; },
{ name: &quot;Yam (Ol)&quot;, emoji: &quot;🥔&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;], cals: 118, carbs: 27.9, fiber: 4.1, pro: 1.5, fat: 0.2, calc: &quot;17mg&quot;, potas: &quot;816mg&quot;, vitC: &quot;17mg&quot;, vitK: &quot;2mcg&quot;, iron: &quot;0.5mg&quot;, mag: &quot;21mg&quot;, fact: &quot;Massive Potassium content helps in regulating blood pressure and fluid balance.&quot; },
{ name: &quot;Amaranth Leaves (Note Saag)&quot;, emoji: &quot;🌿&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;, &quot;Calcium Rich&quot;], cals: 23, carbs: 4.0, fiber: 2.1, pro: 2.5, fat: 0.3, calc: &quot;215mg&quot;, potas: &quot;611mg&quot;, vitC: &quot;43mg&quot;, vitK: &quot;1140mcg&quot;, iron: &quot;2.3mg&quot;, mag: &quot;55mg&quot;, fact: &quot;Highest Vitamin K content among regional greens, vital for blood clotting.&quot; },
{ name: &quot;Basella (Pui Saag)&quot;, emoji: &quot;🌿&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;, &quot;Calcium Rich&quot;], cals: 19, carbs: 3.4, fiber: 1.0, pro: 1.8, fat: 0.3, calc: &quot;109mg&quot;, potas: &quot;510mg&quot;, vitC: &quot;102mg&quot;, vitK: &quot;160mcg&quot;, iron: &quot;1.2mg&quot;, mag: &quot;65mg&quot;, fact: &quot;Exceptional Vitamin C source; the mucilage helps in soothing the digestive tract.&quot; },
{ name: &quot;Bottle Gourd Greens (Lau Pata)&quot;, emoji: &quot;🌿&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;], cals: 30, carbs: 4.0, fiber: 2.5, pro: 3.0, fat: 0.4, calc: &quot;120mg&quot;, potas: &quot;350mg&quot;, vitC: &quot;15mg&quot;, vitK: &quot;200mcg&quot;, iron: &quot;2.1mg&quot;, mag: &quot;40mg&quot;, fact: &quot;High iron and magnesium make it a perfect green for nursing mothers.&quot; },
{ name: &quot;Pumpkin Greens (Kumro Pata)&quot;, emoji: &quot;🌿&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;], cals: 19, carbs: 2.3, fiber: 1.8, pro: 2.0, fat: 0.2, calc: &quot;39mg&quot;, potas: &quot;438mg&quot;, vitC: &quot;11mg&quot;, vitK: &quot;180mcg&quot;, iron: &quot;2.2mg&quot;, mag: &quot;38mg&quot;, fact: &quot;Rich in Vitamin K and minerals; helps in faster wound healing.&quot; },
{ name: &quot;Water Spinach (Kolmi Saag)&quot;, emoji: &quot;🌿&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;], cals: 19, carbs: 3.1, fiber: 2.1, pro: 2.6, fat: 0.2, calc: &quot;77mg&quot;, potas: &quot;312mg&quot;, vitC: &quot;55mg&quot;, vitK: &quot;483mcg&quot;, iron: &quot;1.7mg&quot;, mag: &quot;71mg&quot;, fact: &quot;Contains a wealth of B-vitamins and is traditionally used to treat insomnia.&quot; },
{ name: &quot;Mustard Greens (Sarson Saag)&quot;, emoji: &quot;🌿&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;], cals: 27, carbs: 4.7, fiber: 3.2, pro: 2.9, fat: 0.4, calc: &quot;115mg&quot;, potas: &quot;384mg&quot;, vitC: &quot;70mg&quot;, vitK: &quot;257mcg&quot;, iron: &quot;1.5mg&quot;, mag: &quot;32mg&quot;, fact: &quot;Contains glucosinolates which have potent cancer-fighting properties.&quot; },
{ name: &quot;Radish Greens (Mulo Saag)&quot;, emoji: &quot;🌿&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;], cals: 28, carbs: 4.0, fiber: 3.5, pro: 2.2, fat: 0.3, calc: &quot;265mg&quot;, potas: &quot;450mg&quot;, vitC: &quot;80mg&quot;, vitK: &quot;300mcg&quot;, iron: &quot;3.5mg&quot;, mag: &quot;60mg&quot;, fact: &quot;Often thrown away, but actually contains 4x more calcium and vitamin C than the radish itself.&quot; },
{ name: &quot;Bathua (Chenopodium)&quot;, emoji: &quot;🌿&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;], cals: 43, carbs: 7.0, fiber: 3.5, pro: 4.2, fat: 0.8, calc: &quot;280mg&quot;, potas: &quot;450mg&quot;, vitC: &quot;35mg&quot;, vitK: &quot;220mcg&quot;, iron: &quot;4.0mg&quot;, mag: &quot;45mg&quot;, fact: &quot;Powerful blood purifier and high in amino acids; a seasonal winter delicacy.&quot; },
{ name: &quot;Ipomoea (Kalmi Saag)&quot;, emoji: &quot;🌿&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;], cals: 19, carbs: 3.1, fiber: 2.0, pro: 2.6, fat: 0.2, calc: &quot;77mg&quot;, potas: &quot;312mg&quot;, vitC: &quot;55mg&quot;, vitK: &quot;450mcg&quot;, iron: &quot;1.6mg&quot;, mag: &quot;71mg&quot;, fact: &quot;Commonly found in Bengal; excellent for eye health and iron deficiency.&quot; },
{ name: &quot;Dill Leaves (Shepu)&quot;, emoji: &quot;🌿&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;], cals: 43, carbs: 7.0, fiber: 2.1, pro: 3.5, fat: 1.1, calc: &quot;208mg&quot;, potas: &quot;738mg&quot;, vitC: &quot;85mg&quot;, vitK: &quot;600mcg&quot;, iron: &quot;6.6mg&quot;, mag: &quot;55mg&quot;, fact: &quot;Massive Iron content; essential for new mothers to improve lactation.&quot; },
{ name: &quot;Paneer (Store)&quot;, emoji: &quot;🧀&quot;, category: [&quot;Dairy&quot;, &quot;Indian&quot;, &quot;High Protein&quot;, &quot;Calcium Rich&quot;], cals: 265, carbs: 3.5, fiber: 0, pro: 18.3, fat: 20.8, calc: &quot;480mg&quot;, potas: &quot;50mg&quot;, vitC: &quot;0mg&quot;, vitB12: &quot;0.8mcg&quot;, iron: &quot;0.2mg&quot;, mag: &quot;15mg&quot;, fact: &quot;Casein protein provides a slow release of amino acids, ideal for muscle repair.&quot; },
{ name: &quot;Curd (Homemade)&quot;, emoji: &quot;🥣&quot;, category: [&quot;Dairy&quot;, &quot;Indian&quot;, &quot;High Protein&quot;, &quot;Calcium Rich&quot;], cals: 61, carbs: 4.7, fiber: 0, pro: 3.5, fat: 3.3, calc: &quot;121mg&quot;, potas: &quot;155mg&quot;, vitC: &quot;0.5mg&quot;, vitB12: &quot;0.4mcg&quot;, mag: &quot;12mg&quot;, fact: &quot;Live cultures improve B12 synthesis in the gut. Best for digestive harmony.&quot; },
{ name: &quot;Cow Milk (Full Cream)&quot;, emoji: &quot;🥛&quot;, category: [&quot;Dairy&quot;, &quot;Indian&quot;, &quot;Calcium Rich&quot;], cals: 62, carbs: 4.8, fiber: 0, pro: 3.2, fat: 3.5, calc: &quot;120mg&quot;, potas: &quot;145mg&quot;, vitC: &quot;0mg&quot;, vitB12: &quot;0.5mcg&quot;, iron: &quot;0.0mg&quot;, mag: &quot;11mg&quot;, fact: &quot;Standard for bioavailable Calcium and Vitamin D (if fortified).&quot; },
{ name: &quot;Skimmed Milk&quot;, emoji: &quot;🥛&quot;, category: [&quot;Dairy&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 34, carbs: 5.0, fiber: 0, pro: 3.4, fat: 0.1, calc: &quot;125mg&quot;, potas: &quot;150mg&quot;, vitC: &quot;0mg&quot;, vitB12: &quot;0.4mcg&quot;, iron: &quot;0.0mg&quot;, mag: &quot;11mg&quot;, fact: &quot;Zero fat but retains all original Calcium and Protein of full-cream milk.&quot; },
{ name: &quot;Butter (Makhon)&quot;, emoji: &quot;🧈&quot;, category: [&quot;Dairy&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 717, carbs: 0.1, fiber: 0, pro: 0.9, fat: 81.1, calc: &quot;24mg&quot;, potas: &quot;24mg&quot;, vitC: &quot;0mg&quot;, vitB12: &quot;0.2mcg&quot;, iron: &quot;0.0mg&quot;, mag: &quot;2mg&quot;, fact: &quot;Excellent source of Butyrate, a fatty acid that reduces intestinal inflammation.&quot; },
{ name: &quot;Ghee (Clarified Butter)&quot;, emoji: &quot;🫙&quot;, category: [&quot;Dairy&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 883, carbs: 0, fiber: 0, pro: 0, fat: 99.5, calc: &quot;0mg&quot;, potas: &quot;0mg&quot;, vitC: &quot;0mg&quot;, vitB12: &quot;0mcg&quot;, iron: &quot;0mg&quot;, mag: &quot;0mg&quot;, fact: &quot;Pure lipid source with high smoke point; supports vitamin absorption (A, D, E, K).&quot; },
{ name: &quot;Cheese (Cheddar)&quot;, emoji: &quot;🧀&quot;, category: [&quot;Dairy&quot;, &quot;Keto-Friendly&quot;, &quot;High Protein&quot;, &quot;Calcium Rich&quot;], cals: 403, carbs: 1.3, fiber: 0, pro: 24.9, fat: 33.1, calc: &quot;721mg&quot;, potas: &quot;98mg&quot;, vitC: &quot;0mg&quot;, vitB12: &quot;1.1mcg&quot;, iron: &quot;0.1mg&quot;, mag: &quot;28mg&quot;, fact: &quot;Extremely high Calcium and B12 density. Perfect for low-carb energy.&quot; },
{ name: &quot;Mozzarella cheese&quot;, emoji: &quot;🧀&quot;, category: [&quot;Dairy&quot;, &quot;High Protein&quot;], cals: 280, carbs: 3.1, fiber: 0, pro: 22.2, fat: 17.1, calc: &quot;505mg&quot;, potas: &quot;76mg&quot;, vitC: &quot;0mg&quot;, vitB12: &quot;0.6mcg&quot;, iron: &quot;0.2mg&quot;, mag: &quot;20mg&quot;, fact: &quot;Higher water content and slightly lower calories than hard cheeses.&quot; },
{ name: &quot;Khoa (Mawa)&quot;, emoji: &quot;🧁&quot;, category: [&quot;Dairy&quot;, &quot;Indian&quot;, &quot;High Protein&quot;], cals: 300, carbs: 25.0, fiber: 0, pro: 14.5, fat: 20.0, calc: &quot;650mg&quot;, potas: &quot;350mg&quot;, vitC: &quot;1.2mg&quot;, vitB12: &quot;0.9mcg&quot;, iron: &quot;0.4mg&quot;, mag: &quot;40mg&quot;, fact: &quot;Concentrated milk solids; extremely high in Calcium and Protein per bite.&quot; },
{ name: &quot;Mushroom (Button)&quot;, emoji: &quot;🍄&quot;, category: [&quot;Vegetables&quot;, &quot;Keto-Friendly&quot;], cals: 22, carbs: 3.3, fiber: 1.0, pro: 3.1, fat: 0.3, calc: &quot;3mg&quot;, potas: &quot;318mg&quot;, vitC: &quot;2.1mg&quot;, vitB12: &quot;0.1mcg&quot;, iron: &quot;0.5mg&quot;, mag: &quot;9mg&quot;, fact: &quot;One of the few plant sources of Vitamin D if exposed to UV light.&quot; },
{ name: &quot;Coriander Leaves (Dhone Pata)&quot;, emoji: &quot;🌿&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 23, carbs: 3.7, fiber: 2.8, pro: 2.1, fat: 0.5, calc: &quot;67mg&quot;, potas: &quot;521mg&quot;, vitC: &quot;27mg&quot;, vitK: &quot;310mcg&quot;, iron: &quot;1.8mg&quot;, mag: &quot;26mg&quot;, fact: &quot;Excellent heavy-metal detoxifier and aids in reducing skin inflammation.&quot; },
{ name: &quot;Mint Leaves (Pudina)&quot;, emoji: &quot;🌿&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 70, carbs: 14.9, fiber: 8.0, pro: 3.8, fat: 0.9, calc: &quot;243mg&quot;, potas: &quot;569mg&quot;, vitC: &quot;31mg&quot;, vitK: &quot;0mcg&quot;, iron: &quot;5.1mg&quot;, mag: &quot;80mg&quot;, fact: &quot;Massive Iron and Magnesium levels; powerful remedy for indigestion and nausea.&quot; },
{ name: &quot;Curry Leaves (Kadi Patta)&quot;, emoji: &quot;🍃&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;], cals: 108, carbs: 18.7, fiber: 6.4, pro: 6.1, fat: 1.0, calc: &quot;830mg&quot;, potas: &quot;570mg&quot;, vitC: &quot;4mg&quot;, vitA: &quot;126mcg&quot;, iron: &quot;0.9mg&quot;, mag: &quot;45mg&quot;, fact: &quot;Superior Calcium levels (830mg!); essential for hair strength and lipid control.&quot; },
{ name: &quot;Spring Onion&quot;, emoji: &quot;🌱&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 32, carbs: 7.3, fiber: 2.6, pro: 1.8, fat: 0.2, calc: &quot;72mg&quot;, potas: &quot;276mg&quot;, vitC: &quot;18.8mg&quot;, vitK: &quot;207mcg&quot;, iron: &quot;1.5mg&quot;, mag: &quot;20mg&quot;, fact: &quot;High Vitamin K levels protect bone health and assist in heart protection.&quot; },
{ name: &quot;Celery&quot;, emoji: &quot;🌿&quot;, category: [&quot;Vegetables&quot;, &quot;Keto-Friendly&quot;], cals: 16, carbs: 3.0, fiber: 1.6, pro: 0.7, fat: 0.2, calc: &quot;40mg&quot;, potas: &quot;260mg&quot;, vitC: &quot;3mg&quot;, vitK: &quot;29mcg&quot;, iron: &quot;0.2mg&quot;, mag: &quot;11mg&quot;, fact: &quot;Contains apigenin; excellent for lowering blood pressure and systemic stress.&quot; },
{ name: &quot;Zucchini&quot;, emoji: &quot;🥒&quot;, category: [&quot;Vegetables&quot;, &quot;Keto-Friendly&quot;], cals: 17, carbs: 3.1, fiber: 1.0, pro: 1.2, fat: 0.3, calc: &quot;16mg&quot;, potas: &quot;261mg&quot;, vitC: &quot;18mg&quot;, vitK: &quot;4mcg&quot;, iron: &quot;0.4mg&quot;, mag: &quot;18mg&quot;, fact: &quot;High Manganese levels help the body produce collagen for joint health.&quot; },
{ name: &quot;Asparagus&quot;, emoji: &quot;🎋&quot;, category: [&quot;Vegetables&quot;, &quot;Keto-Friendly&quot;], cals: 20, carbs: 3.9, fiber: 2.1, pro: 2.2, fat: 0.1, calc: &quot;24mg&quot;, potas: &quot;202mg&quot;, vitC: &quot;5.6mg&quot;, vitK: &quot;41mcg&quot;, iron: &quot;2.1mg&quot;, mag: &quot;14mg&quot;, fact: &quot;Rich in Asparagine, which acts as a natural diuretic and kidney cleanser.&quot; },
{ name: &quot;Brussels Sprouts&quot;, emoji: &quot;🥦&quot;, category: [&quot;Vegetables&quot;], cals: 43, carbs: 9.0, fiber: 3.8, pro: 3.4, fat: 0.3, calc: &quot;42mg&quot;, potas: &quot;389mg&quot;, vitC: &quot;85mg&quot;, vitK: &quot;177mcg&quot;, iron: &quot;1.4mg&quot;, mag: &quot;23mg&quot;, fact: &quot;Massive Vitamin K content; essential for regulating calcium distribution in the body.&quot; },
{ name: &quot;Kale&quot;, emoji: &quot;🥬&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Calcium Rich&quot;], cals: 49, carbs: 8.8, fiber: 3.6, pro: 4.3, fat: 0.9, calc: &quot;150mg&quot;, potas: &quot;491mg&quot;, vitC: &quot;120mg&quot;, vitK: &quot;817mcg&quot;, iron: &quot;1.5mg&quot;, mag: &quot;47mg&quot;, fact: &quot;One of the most nutrient-dense foods on Earth; unmatched Vitamin K and C profile.&quot; },
{ name: &quot;Artichoke&quot;, emoji: &quot;🍏&quot;, category: [&quot;Vegetables&quot;], cals: 47, carbs: 10.5, fiber: 5.4, pro: 3.3, fat: 0.2, calc: &quot;44mg&quot;, potas: &quot;370mg&quot;, vitC: &quot;11.7mg&quot;, vitK: &quot;14mcg&quot;, iron: &quot;1.3mg&quot;, mag: &quot;60mg&quot;, fact: &quot;Contains Cynarin; aggressively improves liver bile production and digestion.&quot; },
{ name: &quot;Leek&quot;, emoji: &quot;🌱&quot;, category: [&quot;Vegetables&quot;], cals: 61, carbs: 14.2, fiber: 1.8, pro: 1.5, fat: 0.3, calc: &quot;59mg&quot;, potas: &quot;180mg&quot;, vitC: &quot;12mg&quot;, vitK: &quot;47mcg&quot;, iron: &quot;2.1mg&quot;, mag: &quot;28mg&quot;, fact: &quot;Great source of Kaempferol, a flavonoid that protects blood vessel linings.&quot; },
{ name: &quot;Sweet Corn&quot;, emoji: &quot;🌽&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;], cals: 86, carbs: 18.7, fiber: 2.0, pro: 3.3, fat: 1.4, calc: &quot;2mg&quot;, potas: &quot;270mg&quot;, vitC: &quot;7mg&quot;, vitK: &quot;0mcg&quot;, iron: &quot;0.5mg&quot;, mag: &quot;37mg&quot;, fact: &quot;High in Lutein and Zeaxanthin, critical antioxidants for retinal (eye) health.&quot; },
{ name: &quot;Turnip (Shalgam)&quot;, emoji: &quot;🧅&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 28, carbs: 6.4, fiber: 1.8, pro: 0.9, fat: 0.1, calc: &quot;30mg&quot;, potas: &quot;191mg&quot;, vitC: &quot;21mg&quot;, vitK: &quot;0mcg&quot;, iron: &quot;0.3mg&quot;, mag: &quot;11mg&quot;, fact: &quot;Glucosinolates in turnips help reduce gut inflammation and oxidative stress.&quot; },
{ name: &quot;Snake Gourd Greens&quot;, emoji: &quot;🌿&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;], cals: 22, carbs: 3.5, fiber: 2.0, pro: 2.5, fat: 0.3, calc: &quot;90mg&quot;, potas: &quot;300mg&quot;, vitC: &quot;12mg&quot;, vitK: &quot;150mcg&quot;, iron: &quot;1.8mg&quot;, mag: &quot;35mg&quot;, fact: &quot;Commonly used in regional Bengali mashes (Bhorta) to treat seasonal digestive issues.&quot; },
{ name: &quot;Red Cabbage&quot;, emoji: &quot;🥬&quot;, category: [&quot;Vegetables&quot;, &quot;Keto-Friendly&quot;], cals: 31, carbs: 7.4, fiber: 2.1, pro: 1.4, fat: 0.2, calc: &quot;45mg&quot;, potas: &quot;243mg&quot;, vitC: &quot;57mg&quot;, vitK: &quot;38mcg&quot;, iron: &quot;0.8mg&quot;, mag: &quot;16mg&quot;, fact: &quot;Contains Anthocyanins (purple pigment) that aggressively fight cellular inflammation.&quot; },
{ name: &quot;Bok Choy&quot;, emoji: &quot;🥬&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Keto-Friendly&quot;], cals: 13, carbs: 2.2, fiber: 1.0, pro: 1.5, fat: 0.2, calc: &quot;105mg&quot;, potas: &quot;252mg&quot;, vitC: &quot;45mg&quot;, vitK: &quot;63mcg&quot;, iron: &quot;0.8mg&quot;, mag: &quot;19mg&quot;, fact: &quot;Low in oxalates, making its massive Calcium content very easy for the body to absorb.&quot; },
{ name: &quot;Tofu (Extra Firm)&quot;, emoji: &quot;🧊&quot;, category: [&quot;Vegetables&quot;, &quot;High Protein&quot;, &quot;Keto-Friendly&quot;], cals: 83, carbs: 2.3, fiber: 1.0, pro: 10.0, fat: 5.0, calc: &quot;350mg&quot;, potas: &quot;120mg&quot;, vitC: &quot;0mg&quot;, vitB12: &quot;0mcg&quot;, iron: &quot;1.5mg&quot;, mag: &quot;37mg&quot;, fact: &quot;Complete plant protein; Calcium content depends on whether it was set with calcium sulfate.&quot; },
{ name: &quot;Broad Beans (Seem)&quot;, emoji: &quot;🫘&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;High Protein&quot;], cals: 34, carbs: 5.8, fiber: 4.5, pro: 3.5, fat: 0.3, calc: &quot;45mg&quot;, potas: &quot;220mg&quot;, vitC: &quot;18mg&quot;, vitK: &quot;15mcg&quot;, iron: &quot;1.2mg&quot;, mag: &quot;35mg&quot;, fact: &quot;A Bengali winter staple; high fiber assists in cleaning the digestive tract.&quot; },
{ name: &quot;French Beans&quot;, emoji: &quot;🎋&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 31, carbs: 7.0, fiber: 2.7, pro: 1.8, fat: 0.2, calc: &quot;37mg&quot;, potas: &quot;211mg&quot;, vitC: &quot;12.2mg&quot;, vitK: &quot;43mcg&quot;, iron: &quot;1.0mg&quot;, mag: &quot;25mg&quot;, fact: &quot;Good source of Silicon, which is vital for bone health and skin elasticity.&quot; },
{ name: &quot;Arugula&quot;, emoji: &quot;🥬&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Keto-Friendly&quot;], cals: 25, carbs: 3.7, fiber: 1.6, pro: 2.6, fat: 0.7, calc: &quot;160mg&quot;, potas: &quot;369mg&quot;, vitC: &quot;15mg&quot;, vitK: &quot;109mcg&quot;, iron: &quot;1.5mg&quot;, mag: &quot;47mg&quot;, fact: &quot;Contains dietary nitrates that improve sports performance and lower blood pressure.&quot; },
{ name: &quot;Brie Cheese&quot;, emoji: &quot;🧀&quot;, category: [&quot;Dairy&quot;, &quot;Keto-Friendly&quot;, &quot;High Protein&quot;], cals: 334, carbs: 0.5, fiber: 0, pro: 20.8, fat: 27.7, calc: &quot;184mg&quot;, potas: &quot;152mg&quot;, vitC: &quot;0mg&quot;, vitB12: &quot;1.7mcg&quot;, iron: &quot;0.5mg&quot;, mag: &quot;20mg&quot;, fact: &quot;Highest B12 profile among soft cheeses; essential for DNA production and nerve health.&quot; },
{ name: &quot;Pui Saag (Basella/Malabar Spinach)&quot;, emoji: &quot;🌿&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;, &quot;Calcium Rich&quot;], cals: 19, carbs: 3.4, fiber: 1.0, pro: 1.8, fat: 0.3, calc: &quot;109mg&quot;, potas: &quot;510mg&quot;, vitC: &quot;102mg&quot;, vitK: &quot;160mcg&quot;, iron: &quot;1.2mg&quot;, mag: &quot;65mg&quot;, fact: &quot;The high mucilage content acts as a natural prebiotic, protecting the gut lining from inflammation.&quot; },
{ name: &quot;Kulekhara (Hygrophila)&quot;, emoji: &quot;🌱&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;], cals: 35, carbs: 5.2, fiber: 2.1, pro: 2.4, fat: 0.2, calc: &quot;210mg&quot;, potas: &quot;420mg&quot;, vitC: &quot;15mg&quot;, vitK: &quot;90mcg&quot;, iron: &quot;9.8mg&quot;, mag: &quot;44mg&quot;, fact: &quot;Known as the &#39;Iron King&#39; of Bengali greens; clinically proven to significantly boost hemoglobin levels.&quot; },
{ name: &quot;Sushni Saag&quot;, emoji: &quot;🍀&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;], cals: 28, carbs: 4.5, fiber: 1.8, pro: 2.1, fat: 0.3, calc: &quot;180mg&quot;, potas: &quot;390mg&quot;, vitC: &quot;12mg&quot;, vitK: &quot;110mcg&quot;, iron: &quot;3.2mg&quot;, mag: &quot;52mg&quot;, fact: &quot;Traditionally used in Bengal to treat insomnia and anxiety due to its mild sedative properties.&quot; },
{ name: &quot;Thankuni Pata (Centella)&quot;, emoji: &quot;🍃&quot;, category: [&quot;Vegetables&quot;, &quot;Leafy Greens&quot;, &quot;Indian&quot;], cals: 37, carbs: 6.8, fiber: 2.4, pro: 2.0, fat: 0.2, calc: &quot;170mg&quot;, potas: &quot;410mg&quot;, vitC: &quot;10mg&quot;, vitK: &quot;80mcg&quot;, iron: &quot;2.1mg&quot;, mag: &quot;38mg&quot;, fact: &quot;Contains triterpenoids that speed up wound healing and improve cognitive function/focus.&quot; },
{ name: &quot;Chhena (Fresh Paneer Whey-Drained)&quot;, emoji: &quot;🥛&quot;, category: [&quot;Dairy&quot;, &quot;Indian&quot;, &quot;High Protein&quot;, &quot;Calcium Rich&quot;], cals: 155, carbs: 2.8, fiber: 0, pro: 14.2, fat: 9.5, calc: &quot;320mg&quot;, potas: &quot;80mg&quot;, vitC: &quot;0mg&quot;, vitB12: &quot;0.6mcg&quot;, iron: &quot;0.2mg&quot;, mag: &quot;12mg&quot;, fact: &quot;Unpressed curd is easier to digest than block paneer; ideal for sensitive stomachs and child nutrition.&quot; },
{ name: &quot;Buttermilk (Ghol/Chhaas)&quot;, emoji: &quot;🥛&quot;, category: [&quot;Dairy&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 30, carbs: 4.1, fiber: 0, pro: 3.0, fat: 0.2, calc: &quot;110mg&quot;, potas: &quot;140mg&quot;, vitC: &quot;1mg&quot;, vitB12: &quot;0.4mcg&quot;, iron: &quot;0.0mg&quot;, mag: &quot;10mg&quot;, fact: &quot;Natural probiotic and body coolant; the lactic acid aids in cleaning the digestive tract post-meal.&quot; },
{ name: &quot;Radish Pods (Sengri/Mulo-r Phol)&quot;, emoji: &quot;🎋&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 28, carbs: 4.5, fiber: 2.0, pro: 1.8, fat: 0.2, calc: &quot;35mg&quot;, potas: &quot;210mg&quot;, vitC: &quot;32mg&quot;, vitK: &quot;18mcg&quot;, iron: &quot;0.5mg&quot;, mag: &quot;14mg&quot;, fact: &quot;Tastes like radish but higher in Vitamin C; great for detoxification and liver enzyme support.&quot; },
{ name: &quot;Elephant Foot Yam (Ol Kochu)&quot;, emoji: &quot;🥔&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;], cals: 118, carbs: 25.0, fiber: 4.0, pro: 1.5, fat: 0.2, calc: &quot;50mg&quot;, potas: &quot;816mg&quot;, vitC: &quot;15mg&quot;, vitK: &quot;5mcg&quot;, iron: &quot;0.6mg&quot;, mag: &quot;25mg&quot;, fact: &quot;Rich in Isoflavones which help regulate hormones; needs thorough cooking to remove calcium oxalates.&quot; },
{ name: &quot;Lotus Stem (Kamal Kakdi)&quot;, emoji: &quot;🍥&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Digestion&quot;], cals: 74, carbs: 17.2, fiber: 4.9, pro: 2.6, fat: 0.1, calc: &quot;45mg&quot;, potas: &quot;556mg&quot;, vitC: &quot;44mg&quot;, vitB6: &quot;0.25mg&quot;, iron: &quot;1.2mg&quot;, mag: &quot;23mg&quot;, fact: &quot;High in dietary fiber and B-Vitamins; helps manage stress and supports red blood cell production.&quot; },
{ name: &quot;Pointed Gourd (Potol)&quot;, emoji: &quot;🥒&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 20, carbs: 2.2, fiber: 1.6, pro: 1.2, fat: 0.2, calc: &quot;30mg&quot;, potas: &quot;125mg&quot;, vitC: &quot;29mg&quot;, vitK: &quot;2mcg&quot;, iron: &quot;1.5mg&quot;, mag: &quot;10mg&quot;, fact: &quot;Seed-rich gourds that aid in digestion and have traditionally been used to manage seasonal fevers.&quot; },
{ name: &quot;Cluster Beans (Gwar Phali)&quot;, emoji: &quot;🎋&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;High Protein&quot;], cals: 54, carbs: 10.8, fiber: 5.4, pro: 3.3, fat: 0.4, calc: &quot;130mg&quot;, potas: &quot;285mg&quot;, vitC: &quot;15mg&quot;, vitK: &quot;45mcg&quot;, iron: &quot;1.1mg&quot;, mag: &quot;40mg&quot;, fact: &quot;High in Guar Gum (soluble fiber) which significantly lowers blood cholesterol and sugar.&quot; },
{ name: &quot;Spiny Gourd (Kakrol)&quot;, emoji: &quot;🍈&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Keto-Friendly&quot;], cals: 22, carbs: 3.5, fiber: 3.0, pro: 1.5, fat: 0.2, calc: &quot;25mg&quot;, potas: &quot;230mg&quot;, vitC: &quot;40mg&quot;, vitK: &quot;10mcg&quot;, iron: &quot;0.8mg&quot;, mag: &quot;18mg&quot;, fact: &quot;Bengali seasonal favorite; contains high levels of antioxidants that protect the liver from toxins.&quot; },
{ name: &quot;Raw Papaya (Pepe)&quot;, emoji: &quot;🍈&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Digestion&quot;], cals: 32, carbs: 7.2, fiber: 1.8, pro: 0.6, fat: 0.1, calc: &quot;20mg&quot;, potas: &quot;250mg&quot;, vitC: &quot;45mg&quot;, vitK: &quot;5mcg&quot;, iron: &quot;0.3mg&quot;, mag: &quot;10mg&quot;, fact: &quot;Contains Papain in its most active form; unmatched for tenderizing meat and curing chronic bloating.&quot; },
{ name: &quot;Broad Beans (Seem)&quot;, emoji: &quot;🫘&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;High Protein&quot;], cals: 34, carbs: 5.8, fiber: 4.5, pro: 3.5, fat: 0.3, calc: &quot;45mg&quot;, potas: &quot;220mg&quot;, vitC: &quot;18mg&quot;, vitK: &quot;15mcg&quot;, iron: &quot;1.2mg&quot;, mag: &quot;35mg&quot;, fact: &quot;Excellent source of L-dopa, a precursor to dopamine which supports motor function and mood.&quot; },
{ name: &quot;Water Caltrop (Paniphal)&quot;, emoji: &quot;🌰&quot;, category: [&quot;Vegetables&quot;, &quot;Indian&quot;, &quot;Bengali Local&quot;], cals: 97, carbs: 23.9, fiber: 3.0, pro: 1.4, fat: 0.1, calc: &quot;12mg&quot;, potas: &quot;580mg&quot;, vitC: &quot;4mg&quot;, vitB6: &quot;0.3mg&quot;, iron: &quot;0.8mg&quot;, mag: &quot;22mg&quot;, fact: &quot;Massive Vitamin B6 and Potassium for nervous system health; traditionally eaten during fasts for energy.&quot; }      
    ];

    let currentFilter = &#39;All&#39;;
    let userFavorites = JSON.parse(localStorage.getItem(&#39;otechy_veg_favs_v3&#39;)) || [];

    function setFilter(f) {
        currentFilter = f;
        document.querySelectorAll(&#39;.filter-btn&#39;).forEach(btn =&gt; btn.classList.remove(&#39;active&#39;));
        event.target.classList.add(&#39;active&#39;);
        renderGrid();
    }

    function toggleFavorite(name) {
        if (userFavorites.includes(name)) {
            userFavorites = userFavorites.filter(n =&gt; n !== name);
        } else {
            userFavorites.push(name);
        }
        localStorage.setItem(&#39;otechy_veg_favs_v3&#39;, JSON.stringify(userFavorites));
        renderGrid();
    }

    function handleSearch() { renderGrid(); }

    function renderGrid() {
        const grid = document.getElementById(&#39;dataGrid&#39;);
        const query = document.getElementById(&#39;searchInput&#39;).value.toLowerCase();
        grid.innerHTML = &#39;&#39;;

        let filtered = db.filter(f =&gt; {
            const matchesQuery = f.name.toLowerCase().includes(query) || f.fact.toLowerCase().includes(query);
            const matchesFilter = (currentFilter === &#39;All&#39;) || 
                                 (currentFilter === &#39;Favorites&#39; ? userFavorites.includes(f.name) : f.category.includes(currentFilter));
            return matchesQuery &amp;&amp; matchesFilter;
        });

        filtered.forEach(f =&gt; {
            const isFav = userFavorites.includes(f.name);
            const card = document.createElement(&#39;div&#39;);
            card.className = &#39;bio-card&#39;;
            const netCarbs = Math.max(0, f.carbs - f.fiber).toFixed(1);

            card.innerHTML = `
                &lt;div class=&quot;card-header&quot;&gt;
                    &lt;div class=&quot;bio-name&quot;&gt;&lt;span&gt;${f.emoji}&lt;/span&gt; ${f.name}&lt;/div&gt;
                    &lt;div class=&quot;fav-btn&quot; onclick=&quot;toggleFavorite(&#39;${f.name}&#39;)&quot;&gt;${isFav ? &#39;❤️&#39; : &#39;🤍&#39;}&lt;/div&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;macro-mini&quot;&gt;
                    &lt;div class=&quot;m-item&quot;&gt;&lt;label&gt;Cals&lt;/label&gt;&lt;span&gt;${f.cals}&lt;/span&gt;&lt;/div&gt;
                    &lt;div class=&quot;m-item&quot;&gt;&lt;label&gt;Net Carbs&lt;/label&gt;&lt;span&gt;${netCarbs}g&lt;/span&gt;&lt;/div&gt;
                    &lt;div class=&quot;m-item&quot;&gt;&lt;label&gt;Protein&lt;/label&gt;&lt;span&gt;${f.pro}g&lt;/span&gt;&lt;/div&gt;
                &lt;/div&gt;

                &lt;div class=&quot;micro-grid&quot;&gt;
                    &lt;div class=&quot;micro-row&quot;&gt;&lt;span class=&quot;micro-lbl&quot;&gt;Calcium / Potassium&lt;/span&gt;&lt;span class=&quot;micro-val&quot;&gt;${f.calc} / ${f.potas}&lt;/span&gt;&lt;/div&gt;
                    &lt;div class=&quot;micro-row&quot;&gt;&lt;span class=&quot;micro-lbl&quot;&gt;Vit C / Iron&lt;/span&gt;&lt;span class=&quot;micro-val&quot;&gt;${f.vitC} / ${f.iron || &#39;-&#39;}&lt;/span&gt;&lt;/div&gt;
                    &lt;div class=&quot;micro-row&quot;&gt;&lt;span class=&quot;micro-lbl&quot;&gt;Vit K / B12&lt;/span&gt;&lt;span class=&quot;micro-val&quot;&gt;${f.vitK || &#39;-&#39;} / ${f.vitB12 || &#39;-&#39;}&lt;/span&gt;&lt;/div&gt;
                    &lt;div class=&quot;micro-row&quot;&gt;&lt;span class=&quot;micro-lbl&quot;&gt;Magnesium&lt;/span&gt;&lt;span class=&quot;micro-val&quot;&gt;${f.mag || &#39;-&#39;}&lt;/span&gt;&lt;/div&gt;
                &lt;/div&gt;

                &lt;div class=&quot;fact-tag&quot;&gt;&lt;strong&gt;Clinical Note:&lt;/strong&gt; ${f.fact}&lt;/div&gt;
            `;
            grid.appendChild(card);
        });
    }

    renderGrid();
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/5013709601734478720'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/5013709601734478720'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/04/vegetable-dairy-nutrition-database.html' title='Vegetable &amp; Dairy Nutrition Database | Macro per 100g'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-5285286746452999488</id><published>2026-04-04T05:37:00.000-07:00</published><updated>2026-04-06T01:53:52.598-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fruits"/><category scheme="http://www.blogger.com/atom/ns#" term="Nutrition"/><title type='text'>Fruit Nutrition Database | Macros per 100g</title><content type='html'>&lt;title&gt;Global Fruit Nutrition Database | 100+ Varieties &amp; 12+ Nutrients - OTechy&lt;/title&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
&lt;meta name=&quot;description&quot; content=&quot;Ultimate 100g fruit database. Detailed breakdown of Vitamins (A, B6, C, K, Folate) and Minerals (Iron, Magnesium, Potassium, Calcium) for global and regional fruits.&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;0,850;1,500&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

&lt;style&gt;
    /* --- OTechy Fresh Fruit Theme V5 --- */
    :root { 
        --primary: #ea580c; --primary-dark: #c2410c; 
        --text-dark: #0f172a; --accent: #475569; 
        --bg: #f8fafc; --white: #fff; --border: #e2e8f0; 
        --soft-bg: #ffedd5; --font-main: &#39;Poppins&#39;, sans-serif;
        --carb-color: #3b82f6; --pro-color: #8b5cf6; --fat-color: #eab308;
    }
    
    * { box-sizing: border-box; }
    body { background-color: var(--bg); font-family: var(--font-main); color: var(--text-dark); margin: 0; line-height: 1.6; }
    .otechy-tool-wrapper { max-width: 1350px; margin: 0 auto; padding: 70px 15px 60px; }
    
    /* Hide default Blogger title */
    .post-content &gt; h2:first-of-type, .post-area &gt; .post-content &gt; h2:first-child { display: none !important; }
    .otechy-tool-wrapper br { display: none !important; }

    /* Ads System */
    .otechy-ad-top, .otechy-ad-middle, .otechy-ad-bottom { display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; background: #f1f5f9; border-radius: 10px; border: 1px dashed #cbd5e1; width: 100%; height: 90px; margin-bottom: 20px; }

    /* Hero Section */
    .hero-section { text-align: center; margin-bottom: 25px; padding: clamp(40px, 8vw, 60px) 20px; background: linear-gradient(135deg, #ffedd5 0%, #ffffff 100%); border-radius: 24px; border: 1px solid var(--border); box-shadow: 0 10px 30px rgba(234, 88, 12, 0.05); }
    .hero-section h1 { font-size: clamp(24px, 5vw, 42px); font-weight: 850; margin: 0; letter-spacing: -1px; line-height: 1.1; }
    .hero-section h1 span { color: var(--primary); }
    .hero-subtitle { color: var(--accent); font-size: clamp(12px, 3vw, 14px); font-weight: 500; max-width: 850px; margin: 15px auto 25px; }
    
    .db-stats { display: flex; justify-content: center; gap: 10px; flex-wrap: wrap; margin-bottom: 20px; }
    .stat-pill { background: var(--white); border: 1px solid var(--border); padding: 6px 14px; border-radius: 50px; font-size: 10px; font-weight: 800; color: var(--primary-dark); text-transform: uppercase; }

    /* Filters System */
    .filter-tier { display: flex; justify-content: center; gap: 8px; flex-wrap: wrap; margin-bottom: 20px; max-width: 1100px; margin-left: auto; margin-right: auto; }
    .filter-btn { background: var(--white); border: 1px solid var(--border); color: var(--accent); padding: 8px 16px; border-radius: 50px; font-family: var(--font-main); font-weight: 700; font-size: 11px; cursor: pointer; transition: 0.2s; text-transform: uppercase; letter-spacing: 0.5px; box-shadow: 0 2px 5px rgba(0,0,0,0.02);}
    .filter-btn:hover { border-color: var(--primary); color: var(--primary); background: var(--soft-bg); }
    .filter-btn.active { background: var(--text-dark); color: #fff; border-color: var(--text-dark); box-shadow: 0 6px 15px rgba(0,0,0,0.1); }
    .filter-btn.fav { color: #ef4444; border-color: #fecaca; background: #fef2f2; }

    /* Search Bar */
    .search-bar { position: relative; max-width: 700px; margin: 0 auto 30px; width: 100%; }
    .search-bar input { width: 100%; padding: 14px 20px 14px 45px; border-radius: 14px; border: 2px solid var(--border); font-family: var(--font-main); font-size: 15px; font-weight: 600; outline: none; box-shadow: 0 8px 25px rgba(0,0,0,0.03); transition: 0.2s; }
    .search-bar input:focus { border-color: var(--primary); background: #fff; }
    .search-icon { position: absolute; left: 15px; top: 50%; transform: translateY(-50%); color: var(--accent); }

    /* Grid &amp; Cards */
    .bio-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 20px; }
    .bio-card { background: var(--white); border-radius: 20px; border: 1px solid #000; padding: 20px; display: flex; flex-direction: column; transition: 0.3s; box-shadow: 0 4px 12px rgba(0,0,0,0.05); }
    .bio-card:hover { border-color: var(--primary); transform: translateY(-3px); }
    
    .card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; }
    .bio-name { font-size: 19px; font-weight: 850; color: var(--text-dark); display: flex; align-items: center; gap: 10px; margin: 0; }
    .fav-icon { cursor: pointer; font-size: 20px; user-select: none; }
    
    .macro-mini { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; background: #f8fafc; padding: 12px; border-radius: 12px; margin-bottom: 15px; border: 1px solid var(--border); }
    .m-item { text-align: center; }
    .m-item span { font-size: 14px; font-weight: 850; display: block; color: var(--text-dark); }
    .m-item label { font-size: 9px; font-weight: 700; color: var(--accent); text-transform: uppercase; letter-spacing: 0.5px; }

    /* Micro Table Style */
    .micro-table { width: 100%; border-collapse: collapse; margin-top: 10px; margin-bottom: 15px; border-top: 1px solid var(--border); }
    .micro-table td { font-size: 11px; padding: 6px 0; border-bottom: 1px dashed #f1f5f9; }
    .micro-table td:nth-child(2) { text-align: right; font-weight: 800; color: var(--text-dark); }
    .micro-lbl { color: var(--accent); font-weight: 600; }

    .fact-tag { font-size: 11px; font-weight: 500; padding: 12px; background: #fdf2f8; border-radius: 10px; border-left: 4px solid var(--primary); color: #831843; margin-top: auto; line-height: 1.4; }

    /* --- MOBILE RESPONSIVENESS --- */
    @media (max-width: 768px) {
        .otechy-tool-wrapper { padding: 40px 12px 40px; }
        .hero-section { padding: 30px 15px; border-radius: 16px; }
        .bio-grid { grid-template-columns: 1fr; }
        .search-bar { margin-bottom: 20px; }
        .filter-btn { font-size: 10px; padding: 6px 12px; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;
    &lt;div class=&quot;hero-section&quot;&gt;
        &lt;div class=&quot;otechy-badge&quot; style=&quot;background:var(--white); color:var(--primary); padding: 5px 15px; border-radius: 50px; font-size: 10px; font-weight: 800; margin-bottom: 15px; display: inline-block; border: 1px solid var(--border);&quot;&gt;Precision Bio-Index&lt;/div&gt;
        &lt;h1&gt;Global &lt;span&gt;Fruit&lt;/span&gt; Nutrient DB&lt;/h1&gt;
        &lt;p class=&quot;hero-subtitle&quot;&gt;Standardized 100g serving data. Detailed micronutrient mapping for Vitamins (A, B6, C, K, Folate) and Minerals (Iron, Magnesium, Potassium, Calcium).&lt;/p&gt;
        &lt;div class=&quot;db-stats&quot;&gt;
            &lt;span class=&quot;stat-pill&quot;&gt;🔬 100+ Fruits&lt;/span&gt;
            &lt;span class=&quot;stat-pill&quot;&gt;🌴 Regional Varieties&lt;/span&gt;
            &lt;span class=&quot;stat-pill&quot;&gt;⚖️ 100g Raw Base&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 20px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT TOP&lt;/div&gt;

    &lt;div class=&quot;controls-area&quot;&gt;
        &lt;div class=&quot;search-bar&quot;&gt;
            &lt;svg class=&quot;search-icon&quot; width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;circle cx=&quot;11&quot; cy=&quot;11&quot; r=&quot;8&quot;&gt;&lt;/circle&gt;&lt;line x1=&quot;21&quot; y1=&quot;21&quot; x2=&quot;16.65&quot; y2=&quot;16.65&quot;&gt;&lt;/line&gt;&lt;/svg&gt;
            &lt;input type=&quot;text&quot; id=&quot;searchInput&quot; placeholder=&quot;Search Sugarcane, Jamrul, Folate, Iron...&quot; oninput=&quot;handleSearch()&quot;&gt;
        &lt;/div&gt;

        &lt;div class=&quot;filter-tier&quot; id=&quot;mainFilters&quot;&gt;
            &lt;button class=&quot;filter-btn active&quot; onclick=&quot;setFilter(&#39;All&#39;)&quot;&gt;All Fruits&lt;/button&gt;
            &lt;button class=&quot;filter-btn fav&quot; onclick=&quot;setFilter(&#39;Favorites&#39;)&quot;&gt;❤️ Tracked&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Regional&#39;)&quot;&gt;🌴 Regional&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Exotic&#39;)&quot;&gt;🌍 Exotic&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Keto-Friendly&#39;)&quot;&gt;🥑 Keto / Low Carb&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Immunity&#39;)&quot;&gt;🍊 Immunity&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Digestion&#39;)&quot;&gt;🍏 Digestion&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Hydration&#39;)&quot;&gt;🍉 Hydration&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Energy&#39;)&quot;&gt;⚡ Energy&lt;/button&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;bio-grid&quot; id=&quot;dataGrid&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 30px 0; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 30px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;
    const fruitDB = [
        { name: &quot;Lotkon&quot;, emoji: &quot;🍇&quot;, category: [&quot;Regional&quot;, &quot;Immunity&quot;], cals: 55, carbs: 13, fiber: 1.2, pro: 0.8, fat: 0.2, vitC: &quot;55mg&quot;, vitA: &quot;5mcg&quot;, vitB6: &quot;0.05mg&quot;, folate: &quot;15mcg&quot;, iron: &quot;0.9mg&quot;, mag: &quot;14mg&quot;, potas: &quot;200mg&quot;, calcium: &quot;10mg&quot;, fact: &quot;Regional favorite with higher iron and vitamin C content than grapes.&quot; },
        { name: &quot;Sugarcane (Raw)&quot;, emoji: &quot;🎋&quot;, category: [&quot;Regional&quot;, &quot;Energy&quot;, &quot;Hydration&quot;], cals: 73, carbs: 18.1, fiber: 0.4, pro: 0.2, fat: 0.1, vitC: &quot;2.1mg&quot;, vitA: &quot;0mcg&quot;, vitB6: &quot;0.04mg&quot;, folate: &quot;2mcg&quot;, iron: &quot;1.1mg&quot;, mag: &quot;12mg&quot;, potas: &quot;63mg&quot;, calcium: &quot;10mg&quot;, fact: &quot;A natural source of iron and essential electrolytes for hydration.&quot; },
        { name: &quot;Jamrul (Water Apple)&quot;, emoji: &quot;🌸&quot;, category: [&quot;Regional&quot;, &quot;Hydration&quot;, &quot;Keto-Friendly&quot;], cals: 25, carbs: 5.7, fiber: 1.5, pro: 0.6, fat: 0.3, vitC: &quot;22mg&quot;, vitA: &quot;17mcg&quot;, vitB6: &quot;0.03mg&quot;, folate: &quot;4mcg&quot;, iron: &quot;0.07mg&quot;, mag: &quot;5mg&quot;, potas: &quot;123mg&quot;, calcium: &quot;29mg&quot;, fact: &quot;Low calorie and extremely hydrating. Good for cooling the body.&quot; },
        { name: &quot;Bael (Wood Apple)&quot;, emoji: &quot;🍈&quot;, category: [&quot;Regional&quot;, &quot;Digestion&quot;], cals: 137, carbs: 31.8, fiber: 2.9, pro: 1.8, fat: 0.3, vitC: &quot;8.5mg&quot;, vitA: &quot;55mcg&quot;, vitB6: &quot;0.1mg&quot;, folate: &quot;12mcg&quot;, iron: &quot;0.6mg&quot;, mag: &quot;18mg&quot;, potas: &quot;600mg&quot;, calcium: &quot;85mg&quot;, fact: &quot;Super-rich in Potassium and Calcium. Excellent for gastrointestinal health.&quot; },
        { name: &quot;Indian Amla&quot;, emoji: &quot;🍏&quot;, category: [&quot;Regional&quot;, &quot;Immunity&quot;], cals: 44, carbs: 10.2, fiber: 4.3, pro: 0.9, fat: 0.6, vitC: &quot;600mg&quot;, vitA: &quot;15mcg&quot;, vitB6: &quot;0.08mg&quot;, folate: &quot;6mcg&quot;, iron: &quot;1.2mg&quot;, mag: &quot;20mg&quot;, potas: &quot;198mg&quot;, calcium: &quot;50mg&quot;, fact: &quot;The king of Vitamin C. Boosts collagen and natural immunity.&quot; },
        { name: &quot;Avocado&quot;, emoji: &quot;🥑&quot;, category: [&quot;Keto-Friendly&quot;, &quot;Digestion&quot;, &quot;Energy&quot;], cals: 160, carbs: 8.5, fiber: 6.7, pro: 2, fat: 14.7, vitC: &quot;10mg&quot;, vitA: &quot;7mcg&quot;, vitB6: &quot;0.26mg&quot;, folate: &quot;81mcg&quot;, iron: &quot;0.55mg&quot;, mag: &quot;29mg&quot;, potas: &quot;485mg&quot;, calcium: &quot;12mg&quot;, fact: &quot;Unmatched monounsaturated fats, Magnesium, and Vitamin K levels.&quot; },
        { name: &quot;Banana&quot;, emoji: &quot;🍌&quot;, category: [&quot;Energy&quot;, &quot;Digestion&quot;], cals: 89, carbs: 22.8, fiber: 2.6, pro: 1.1, fat: 0.3, vitC: &quot;8.7mg&quot;, vitA: &quot;3mcg&quot;, vitB6: &quot;0.37mg&quot;, folate: &quot;20mcg&quot;, iron: &quot;0.26mg&quot;, mag: &quot;27mg&quot;, potas: &quot;358mg&quot;, calcium: &quot;5mg&quot;, fact: &quot;Best source of Vitamin B6 for brain health and glycogen storage.&quot; },
        { name: &quot;Guava&quot;, emoji: &quot;🍈&quot;, category: [&quot;Regional&quot;, &quot;Immunity&quot;, &quot;Digestion&quot;], cals: 68, carbs: 14.3, fiber: 5.4, pro: 2.6, fat: 1.0, vitC: &quot;228mg&quot;, vitA: &quot;31mcg&quot;, vitB6: &quot;0.11mg&quot;, folate: &quot;49mcg&quot;, iron: &quot;0.26mg&quot;, mag: &quot;22mg&quot;, potas: &quot;417mg&quot;, calcium: &quot;18mg&quot;, fact: &quot;High fiber and Vitamin C density aid in blood sugar management.&quot; },
        { name: &quot;Pomegranate&quot;, emoji: &quot;🍎&quot;, category: [&quot;Immunity&quot;, &quot;Hydration&quot;], cals: 83, carbs: 18.7, fiber: 4.0, pro: 1.7, fat: 1.2, vitC: &quot;10.2mg&quot;, vitA: &quot;0mcg&quot;, vitB6: &quot;0.08mg&quot;, folate: &quot;38mcg&quot;, iron: &quot;0.3mg&quot;, mag: &quot;12mg&quot;, potas: &quot;236mg&quot;, calcium: &quot;10mg&quot;, fact: &quot;Contains powerful anti-inflammatories for heart and blood flow.&quot; },
        { name: &quot;Custard Apple (Ata)&quot;, emoji: &quot;🍈&quot;, category: [&quot;Regional&quot;, &quot;Energy&quot;], cals: 94, carbs: 23.6, fiber: 4.4, pro: 2.1, fat: 0.3, vitC: &quot;36.3mg&quot;, vitA: &quot;2mcg&quot;, vitB6: &quot;0.2mg&quot;, folate: &quot;14mcg&quot;, iron: &quot;0.6mg&quot;, mag: &quot;21mg&quot;, potas: &quot;247mg&quot;, calcium: &quot;24mg&quot;, fact: &quot;High in Copper and Magnesium, supporting bone health and hemoglobin.&quot; },
        { name: &quot;Jackfruit (Ripe)&quot;, emoji: &quot;🍈&quot;, category: [&quot;Regional&quot;, &quot;Energy&quot;], cals: 95, carbs: 23.2, fiber: 1.5, pro: 1.7, fat: 0.6, vitC: &quot;13.7mg&quot;, vitA: &quot;5mcg&quot;, vitB6: &quot;0.33mg&quot;, folate: &quot;24mcg&quot;, iron: &quot;0.23mg&quot;, mag: &quot;29mg&quot;, potas: &quot;448mg&quot;, calcium: &quot;24mg&quot;, fact: &quot;A complex carb profile with high B-vitamins for muscle metabolism.&quot; },
        { name: &quot;Papaya&quot;, emoji: &quot;🍈&quot;, category: [&quot;Digestion&quot;, &quot;Immunity&quot;], cals: 43, carbs: 10.8, fiber: 1.7, pro: 0.5, fat: 0.3, vitC: &quot;61.8mg&quot;, vitA: &quot;47mcg&quot;, vitB6: &quot;0.04mg&quot;, folate: &quot;37mcg&quot;, iron: &quot;0.25mg&quot;, mag: &quot;21mg&quot;, potas: &quot;182mg&quot;, calcium: &quot;20mg&quot;, fact: &quot;Contains papain enzyme and lycopene for skin repair and digestion.&quot; },
        { name: &quot;Chikoo (Sapodilla)&quot;, emoji: &quot;🥔&quot;, category: [&quot;Regional&quot;, &quot;Energy&quot;, &quot;Digestion&quot;], cals: 83, carbs: 20, fiber: 5.3, pro: 0.4, fat: 1.1, vitC: &quot;14.7mg&quot;, vitA: &quot;3mcg&quot;, vitB6: &quot;0.04mg&quot;, folate: &quot;14mcg&quot;, iron: &quot;0.8mg&quot;, mag: &quot;12mg&quot;, potas: &quot;193mg&quot;, calcium: &quot;21mg&quot;, fact: &quot;Extremely high in dietary fiber and tannins for gut health.&quot; },
        { name: &quot;Lychee&quot;, emoji: &quot;🍒&quot;, category: [&quot;Exotic&quot;, &quot;Energy&quot;, &quot;Regional&quot;], cals: 66, carbs: 16.5, fiber: 1.3, pro: 0.8, fat: 0.4, vitC: &quot;71.5mg&quot;, vitA: &quot;0mcg&quot;, vitB6: &quot;0.1mg&quot;, folate: &quot;7mcg&quot;, iron: &quot;0.31mg&quot;, mag: &quot;10mg&quot;, potas: &quot;171mg&quot;, calcium: &quot;5mg&quot;, fact: &quot;High in Polyphenols and Vitamin C for heart protection.&quot; },
        { name: &quot;Apple&quot;, emoji: &quot;🍎&quot;, category: [&quot;Digestion&quot;], cals: 52, carbs: 13.8, fiber: 2.4, pro: 0.3, fat: 0.2, vitC: &quot;4.6mg&quot;, vitA: &quot;3mcg&quot;, vitB6: &quot;0.04mg&quot;, folate: &quot;3mcg&quot;, iron: &quot;0.12mg&quot;, mag: &quot;5mg&quot;, potas: &quot;107mg&quot;, calcium: &quot;6mg&quot;, fact: &quot;Pectin fiber aids in lowering cholesterol and stabilizing energy.&quot; },
        { name: &quot;Orange&quot;, emoji: &quot;🍊&quot;, category: [&quot;Immunity&quot;, &quot;Hydration&quot;], cals: 47, carbs: 11.8, fiber: 2.4, pro: 0.9, fat: 0.1, vitC: &quot;53.2mg&quot;, vitA: &quot;11mcg&quot;, vitB6: &quot;0.06mg&quot;, folate: &quot;30mcg&quot;, iron: &quot;0.1mg&quot;, mag: &quot;10mg&quot;, potas: &quot;181mg&quot;, calcium: &quot;40mg&quot;, fact: &quot;Solid source of Calcium and Vitamin C for bone and immune support.&quot; },
        { name: &quot;Pineapple&quot;, emoji: &quot;🍍&quot;, category: [&quot;Digestion&quot;, &quot;Energy&quot;], cals: 50, carbs: 13.1, fiber: 1.4, pro: 0.5, fat: 0.1, vitC: &quot;47.8mg&quot;, vitA: &quot;3mcg&quot;, vitB6: &quot;0.11mg&quot;, folate: &quot;18mcg&quot;, iron: &quot;0.29mg&quot;, mag: &quot;12mg&quot;, potas: &quot;109mg&quot;, calcium: &quot;13mg&quot;, fact: &quot;Unique source of Bromelain for protein digestion and inflammation.&quot; },
        { name: &quot;Watermelon&quot;, emoji: &quot;🍉&quot;, category: [&quot;Hydration&quot;], cals: 30, carbs: 7.6, fiber: 0.4, pro: 0.6, fat: 0.2, vitC: &quot;8.1mg&quot;, vitA: &quot;28mcg&quot;, vitB6: &quot;0.05mg&quot;, folate: &quot;3mcg&quot;, iron: &quot;0.24mg&quot;, mag: &quot;10mg&quot;, potas: &quot;112mg&quot;, calcium: &quot;7mg&quot;, fact: &quot;92% water with citrulline for athletic recovery and blood flow.&quot; },
        { name: &quot;Blackberry&quot;, emoji: &quot;🫐&quot;, category: [&quot;Keto-Friendly&quot;, &quot;Digestion&quot;, &quot;Immunity&quot;], cals: 43, carbs: 9.6, fiber: 5.3, pro: 1.4, fat: 0.5, vitC: &quot;21mg&quot;, vitA: &quot;11mcg&quot;, vitB6: &quot;0.03mg&quot;, folate: &quot;25mcg&quot;, iron: &quot;0.62mg&quot;, mag: &quot;20mg&quot;, potas: &quot;162mg&quot;, calcium: &quot;29mg&quot;, fact: &quot;Elite keto-friendly fruit with high magnesium and fiber.&quot; },
        { name: &quot;Blueberry&quot;, emoji: &quot;🫐&quot;, category: [&quot;Immunity&quot;, &quot;Keto-Friendly&quot;], cals: 57, carbs: 14.5, fiber: 2.4, pro: 0.7, fat: 0.3, vitC: &quot;9.7mg&quot;, vitA: &quot;3mcg&quot;, vitB6: &quot;0.05mg&quot;, folate: &quot;6mcg&quot;, iron: &quot;0.28mg&quot;, mag: &quot;6mg&quot;, potas: &quot;77mg&quot;, calcium: &quot;6mg&quot;, fact: &quot;Packed with anthocyanins for cognitive function and brain health.&quot; },
        { name: &quot;Strawberry&quot;, emoji: &quot;🍓&quot;, category: [&quot;Keto-Friendly&quot;, &quot;Immunity&quot;], cals: 32, carbs: 7.7, fiber: 2, pro: 0.7, fat: 0.3, vitC: &quot;58.8mg&quot;, vitA: &quot;1mcg&quot;, vitB6: &quot;0.05mg&quot;, folate: &quot;24mcg&quot;, iron: &quot;0.41mg&quot;, mag: &quot;13mg&quot;, potas: &quot;153mg&quot;, calcium: &quot;16mg&quot;, fact: &quot;High Manganese and Folate for blood sugar and heart health.&quot; },
        { name: &quot;Raspberry&quot;, emoji: &quot;🍓&quot;, category: [&quot;Keto-Friendly&quot;, &quot;Digestion&quot;], cals: 52, carbs: 11.9, fiber: 6.5, pro: 1.2, fat: 0.7, vitC: &quot;26.2mg&quot;, vitA: &quot;2mcg&quot;, vitB6: &quot;0.06mg&quot;, folate: &quot;21mcg&quot;, iron: &quot;0.69mg&quot;, mag: &quot;22mg&quot;, potas: &quot;151mg&quot;, calcium: &quot;25mg&quot;, fact: &quot;Highest fiber-to-carb ratio of any common berry.&quot; },
        { name: &quot;Kiwi&quot;, emoji: &quot;🥝&quot;, category: [&quot;Immunity&quot;, &quot;Digestion&quot;], cals: 61, carbs: 14.7, fiber: 3, pro: 1.1, fat: 0.5, vitC: &quot;92.7mg&quot;, vitA: &quot;4mcg&quot;, vitB6: &quot;0.06mg&quot;, folate: &quot;25mcg&quot;, iron: &quot;0.31mg&quot;, mag: &quot;17mg&quot;, potas: &quot;312mg&quot;, calcium: &quot;34mg&quot;, fact: &quot;Contains actinidain for protein digestion and high serotonin levels.&quot; },
        { name: &quot;Peach&quot;, emoji: &quot;🍑&quot;, category: [&quot;Digestion&quot;, &quot;Hydration&quot;], cals: 39, carbs: 9.5, fiber: 1.5, pro: 0.9, fat: 0.3, vitC: &quot;6.6mg&quot;, vitA: &quot;16mcg&quot;, vitB6: &quot;0.02mg&quot;, folate: &quot;4mcg&quot;, iron: &quot;0.25mg&quot;, mag: &quot;9mg&quot;, potas: &quot;190mg&quot;, calcium: &quot;6mg&quot;, fact: &quot;Great source of phenolic acids for skin health and UV protection.&quot; },
        { name: &quot;Plum&quot;, emoji: &quot;🍑&quot;, category: [&quot;Digestion&quot;], cals: 46, carbs: 11.4, fiber: 1.4, pro: 0.7, fat: 0.3, vitC: &quot;9.5mg&quot;, vitA: &quot;17mcg&quot;, vitB6: &quot;0.03mg&quot;, folate: &quot;5mcg&quot;, iron: &quot;0.17mg&quot;, mag: &quot;7mg&quot;, potas: &quot;157mg&quot;, calcium: &quot;6mg&quot;, fact: &quot;Improves bone density through high phytonutrient concentrations.&quot; },
        { name: &quot;Pear&quot;, emoji: &quot;🍐&quot;, category: [&quot;Digestion&quot;], cals: 57, carbs: 15.2, fiber: 3.1, pro: 0.4, fat: 0.1, vitC: &quot;4.3mg&quot;, vitA: &quot;1mcg&quot;, vitB6: &quot;0.03mg&quot;, folate: &quot;7mcg&quot;, iron: &quot;0.18mg&quot;, mag: &quot;7mg&quot;, potas: &quot;116mg&quot;, calcium: &quot;9mg&quot;, fact: &quot;Excellent hypoallergenic fruit high in soluble fiber.&quot; },
        { name: &quot;Cherry&quot;, emoji: &quot;🍒&quot;, category: [&quot;Energy&quot;], cals: 50, carbs: 12.2, fiber: 1.6, pro: 1, fat: 0.3, vitC: &quot;7mg&quot;, vitA: &quot;3mcg&quot;, vitB6: &quot;0.05mg&quot;, folate: &quot;4mcg&quot;, iron: &quot;0.36mg&quot;, mag: &quot;11mg&quot;, potas: &quot;222mg&quot;, calcium: &quot;13mg&quot;, fact: &quot;Natural melatonin source to aid sleep and muscle inflammation.&quot; },
        { name: &quot;Apricot&quot;, emoji: &quot;🍑&quot;, category: [&quot;Digestion&quot;, &quot;Immunity&quot;], cals: 48, carbs: 11.1, fiber: 2, pro: 1.4, fat: 0.4, vitC: &quot;10mg&quot;, vitA: &quot;96mcg&quot;, vitB6: &quot;0.05mg&quot;, folate: &quot;9mcg&quot;, iron: &quot;0.39mg&quot;, mag: &quot;10mg&quot;, potas: &quot;259mg&quot;, calcium: &quot;13mg&quot;, fact: &quot;Massive Beta-Carotene (Vit A) levels for eye and skin health.&quot; },
        { name: &quot;Grapefruit&quot;, emoji: &quot;🍊&quot;, category: [&quot;Hydration&quot;, &quot;Immunity&quot;], cals: 42, carbs: 10.7, fiber: 1.6, pro: 0.8, fat: 0.1, vitC: &quot;31.2mg&quot;, vitA: &quot;58mcg&quot;, vitB6: &quot;0.05mg&quot;, folate: &quot;13mcg&quot;, iron: &quot;0.08mg&quot;, mag: &quot;9mg&quot;, potas: &quot;135mg&quot;, calcium: &quot;22mg&quot;, fact: &quot;Aids insulin sensitivity and has fat-burning properties.&quot; },
        { name: &quot;Fig (Fresh)&quot;, emoji: &quot;🍒&quot;, category: [&quot;Digestion&quot;, &quot;Energy&quot;], cals: 74, carbs: 19.2, fiber: 2.9, pro: 0.8, fat: 0.3, vitC: &quot;2mg&quot;, vitA: &quot;7mcg&quot;, vitB6: &quot;0.11mg&quot;, folate: &quot;6mcg&quot;, iron: &quot;0.37mg&quot;, mag: &quot;17mg&quot;, potas: &quot;232mg&quot;, calcium: &quot;35mg&quot;, fact: &quot;Highest mineral content of most common fruits; very alkaline.&quot; },
        { name: &quot;Date&quot;, emoji: &quot;🌴&quot;, category: [&quot;Energy&quot;, &quot;Digestion&quot;], cals: 282, carbs: 75, fiber: 8, pro: 2.5, fat: 0.4, vitC: &quot;0.4mg&quot;, vitA: &quot;0mcg&quot;, vitB6: &quot;0.19mg&quot;, folate: &quot;15mcg&quot;, iron: &quot;0.9mg&quot;, mag: &quot;54mg&quot;, potas: &quot;656mg&quot;, calcium: &quot;64mg&quot;, fact: &quot;Extreme energy density with high Magnesium for nerve function.&quot; },
        { name: &quot;Dragon Fruit&quot;, emoji: &quot;🐉&quot;, category: [&quot;Exotic&quot;, &quot;Hydration&quot;], cals: 60, carbs: 12.9, fiber: 2.9, pro: 1.2, fat: 0, vitC: &quot;2.5mg&quot;, vitA: &quot;3mcg&quot;, vitB6: &quot;0.04mg&quot;, folate: &quot;1mcg&quot;, iron: &quot;0.6mg&quot;, mag: &quot;40mg&quot;, potas: &quot;116mg&quot;, calcium: &quot;8mg&quot;, fact: &quot;Prebiotic fiber source that feeds healthy gut bacteria.&quot; },
        { name: &quot;Durian&quot;, emoji: &quot;🦔&quot;, category: [&quot;Exotic&quot;, &quot;Energy&quot;], cals: 147, carbs: 27.1, fiber: 3.8, pro: 1.5, fat: 5.3, vitC: &quot;19.7mg&quot;, vitA: &quot;2mcg&quot;, vitB6: &quot;0.32mg&quot;, folate: &quot;36mcg&quot;, iron: &quot;0.43mg&quot;, mag: &quot;30mg&quot;, potas: &quot;436mg&quot;, calcium: &quot;6mg&quot;, fact: &quot;Highest fat and B-vitamin content of almost any fruit.&quot; },
        { name: &quot;Lemon&quot;, emoji: &quot;🍋&quot;, category: [&quot;Immunity&quot;, &quot;Keto-Friendly&quot;], cals: 29, carbs: 9.3, fiber: 2.8, pro: 1.1, fat: 0.3, vitC: &quot;53mg&quot;, vitA: &quot;1mcg&quot;, vitB6: &quot;0.08mg&quot;, folate: &quot;11mcg&quot;, iron: &quot;0.6mg&quot;, mag: &quot;8mg&quot;, potas: &quot;138mg&quot;, calcium: &quot;26mg&quot;, fact: &quot;Citric acid increases mineral absorption from other foods.&quot; },
        { name: &quot;Lime&quot;, emoji: &quot;🍋&quot;, category: [&quot;Immunity&quot;, &quot;Hydration&quot;], cals: 30, carbs: 10.5, fiber: 2.8, pro: 0.7, fat: 0.2, vitC: &quot;29mg&quot;, vitA: &quot;2mcg&quot;, vitB6: &quot;0.04mg&quot;, folate: &quot;8mcg&quot;, iron: &quot;0.6mg&quot;, mag: &quot;6mg&quot;, potas: &quot;102mg&quot;, calcium: &quot;33mg&quot;, fact: &quot;Perfect for electrolyte balance and alkalizing the body.&quot; },
        { name: &quot;Cantaloupe&quot;, emoji: &quot;🍈&quot;, category: [&quot;Hydration&quot;, &quot;Immunity&quot;], cals: 34, carbs: 8.2, fiber: 0.9, pro: 0.8, fat: 0.2, vitC: &quot;36.7mg&quot;, vitA: &quot;169mcg&quot;, vitB6: &quot;0.07mg&quot;, folate: &quot;21mcg&quot;, iron: &quot;0.21mg&quot;, mag: &quot;12mg&quot;, potas: &quot;267mg&quot;, calcium: &quot;9mg&quot;, fact: &quot;Unmatched Vitamin A levels for skin and immune repair.&quot; },
        { name: &quot;Honeydew&quot;, emoji: &quot;🍈&quot;, category: [&quot;Hydration&quot;], cals: 36, carbs: 9.1, fiber: 0.8, pro: 0.5, fat: 0.1, vitC: &quot;18mg&quot;, vitA: &quot;3mcg&quot;, vitB6: &quot;0.09mg&quot;, folate: &quot;19mcg&quot;, iron: &quot;0.17mg&quot;, mag: &quot;10mg&quot;, potas: &quot;228mg&quot;, calcium: &quot;6mg&quot;, fact: &quot;High water and electrolyte content for cellular hydration.&quot; },
        { name: &quot;Passion Fruit&quot;, emoji: &quot;🥭&quot;, category: [&quot;Exotic&quot;, &quot;Digestion&quot;], cals: 97, carbs: 23.4, fiber: 10.4, pro: 2.2, fat: 0.7, vitC: &quot;30mg&quot;, vitA: &quot;64mcg&quot;, vitB6: &quot;0.1mg&quot;, folate: &quot;14mcg&quot;, iron: &quot;1.6mg&quot;, mag: &quot;29mg&quot;, potas: &quot;348mg&quot;, calcium: &quot;12mg&quot;, fact: &quot;Highest fiber content and excellent plant-based iron.&quot; },
        { name: &quot;Persimmon&quot;, emoji: &quot;🍅&quot;, category: [&quot;Energy&quot;, &quot;Immunity&quot;], cals: 81, carbs: 18.6, fiber: 3.6, pro: 0.6, fat: 0.2, vitC: &quot;7.5mg&quot;, vitA: &quot;81mcg&quot;, vitB6: &quot;0.1mg&quot;, folate: &quot;8mcg&quot;, iron: &quot;0.15mg&quot;, mag: &quot;9mg&quot;, potas: &quot;161mg&quot;, calcium: &quot;8mg&quot;, fact: &quot;High in Tannins and Vitamin A for arterial health.&quot; },
        { name: &quot;Starfruit&quot;, emoji: &quot;🌟&quot;, category: [&quot;Hydration&quot;, &quot;Keto-Friendly&quot;, &quot;Regional&quot;], cals: 31, carbs: 6.7, fiber: 2.8, pro: 1, fat: 0.3, vitC: &quot;34.4mg&quot;, vitA: &quot;3mcg&quot;, vitB6: &quot;0.04mg&quot;, folate: &quot;12mcg&quot;, iron: &quot;0.08mg&quot;, mag: &quot;10mg&quot;, potas: &quot;133mg&quot;, calcium: &quot;3mg&quot;, fact: &quot;Low calorie, low carb, but high in oxalate (caution for kidneys).&quot; },
        { name: &quot;Tamarind&quot;, emoji: &quot;🫘&quot;, category: [&quot;Exotic&quot;, &quot;Digestion&quot;], cals: 239, carbs: 62.5, fiber: 5.1, pro: 2.8, fat: 0.6, vitC: &quot;3.5mg&quot;, vitA: &quot;2mcg&quot;, vitB6: &quot;0.07mg&quot;, folate: &quot;14mcg&quot;, iron: &quot;2.8mg&quot;, mag: &quot;92mg&quot;, potas: &quot;628mg&quot;, calcium: &quot;74mg&quot;, fact: &quot;Incredible Magnesium and Iron levels for blood and muscle.&quot; },
        { name: &quot;Grapes (Red)&quot;, emoji: &quot;🍇&quot;, category: [&quot;Energy&quot;, &quot;Hydration&quot;], cals: 69, carbs: 18.1, fiber: 0.9, pro: 0.7, fat: 0.2, vitC: &quot;3.2mg&quot;, vitA: &quot;3mcg&quot;, vitB6: &quot;0.09mg&quot;, folate: &quot;2mcg&quot;, iron: &quot;0.36mg&quot;, mag: &quot;7mg&quot;, potas: &quot;191mg&quot;, calcium: &quot;10mg&quot;, fact: &quot;Rich in resveratrol for anti-aging and heart health.&quot; },
        { name: &quot;Jalpai (Olive)&quot;, emoji: &quot;🫒&quot;, category: [&quot;Digestion&quot;, &quot;Regional&quot;], cals: 45, carbs: 9, fiber: 3, pro: 1, fat: 0.5, vitC: &quot;15mg&quot;, vitA: &quot;10mcg&quot;, vitB6: &quot;0.05mg&quot;, folate: &quot;8mcg&quot;, iron: &quot;0.6mg&quot;, mag: &quot;12mg&quot;, potas: &quot;150mg&quot;, calcium: &quot;22mg&quot;, fact: &quot;High antioxidant profile, especially for anti-inflammatory use.&quot; },
        { name: &quot;Amra (Hog Plum)&quot;, emoji: &quot;🍈&quot;, category: [&quot;Digestion&quot;, &quot;Immunity&quot;, &quot;Regional&quot;], cals: 46, carbs: 11, fiber: 2.5, pro: 0.7, fat: 0.3, vitC: &quot;46mg&quot;, vitA: &quot;20mcg&quot;, vitB6: &quot;0.04mg&quot;, folate: &quot;5mcg&quot;, iron: &quot;0.3mg&quot;, mag: &quot;15mg&quot;, potas: &quot;250mg&quot;, calcium: &quot;15mg&quot;, fact: &quot;Very effective for digestion and relieving seasonal colds.&quot; },
        { name: &quot;Boroi (Jujube)&quot;, emoji: &quot;🍒&quot;, category: [&quot;Immunity&quot;, &quot;Regional&quot;], cals: 79, carbs: 20, fiber: 6, pro: 1.2, fat: 0.2, vitC: &quot;69mg&quot;, vitA: &quot;2mcg&quot;, vitB6: &quot;0.08mg&quot;, folate: &quot;6mcg&quot;, iron: &quot;0.5mg&quot;, mag: &quot;10mg&quot;, potas: &quot;250mg&quot;, calcium: &quot;21mg&quot;, fact: &quot;Excellent for anxiety relief and boosting night-time sleep.&quot; },
        { name: &quot;Karamcha&quot;, emoji: &quot;🍒&quot;, category: [&quot;Exotic&quot;, &quot;Digestion&quot;, &quot;Regional&quot;], cals: 42, carbs: 10, fiber: 4, pro: 0.8, fat: 0.2, vitC: &quot;31mg&quot;, vitA: &quot;40mcg&quot;, vitB6: &quot;0.05mg&quot;, folate: &quot;10mcg&quot;, iron: &quot;1.2mg&quot;, mag: &quot;12mg&quot;, potas: &quot;220mg&quot;, calcium: &quot;25mg&quot;, fact: &quot;Strong tart fruit high in iron for managing anemia.&quot; },
        { name: &quot;Gub (Velvet Apple)&quot;, emoji: &quot;🍑&quot;, category: [&quot;Energy&quot;, &quot;Regional&quot;], cals: 50, carbs: 11, fiber: 2.5, pro: 0.8, fat: 0.2, vitC: &quot;18mg&quot;, vitA: &quot;12mcg&quot;, vitB6: &quot;0.04mg&quot;, folate: &quot;8mcg&quot;, iron: &quot;0.4mg&quot;, mag: &quot;12mg&quot;, potas: &quot;180mg&quot;, calcium: &quot;22mg&quot;, fact: &quot;Provides consistent B-vitamins for local energy metabolism.&quot; },
        { name: &quot;Sapote (Mamey)&quot;, emoji: &quot;🍮&quot;, category: [&quot;Exotic&quot;, &quot;Energy&quot;], cals: 124, carbs: 32.1, fiber: 5.4, pro: 1.5, fat: 0.5, vitC: &quot;23mg&quot;, vitA: &quot;7mcg&quot;, vitB6: &quot;0.7mg&quot;, folate: &quot;10mcg&quot;, iron: &quot;0.8mg&quot;, mag: &quot;11mg&quot;, potas: &quot;454mg&quot;, calcium: &quot;18mg&quot;, fact: &quot;Massive Vitamin B6 and Potassium for nerve and muscle health.&quot; },
        { name: &quot;Mangosteen&quot;, emoji: &quot;🧄&quot;, category: [&quot;Exotic&quot;, &quot;Immunity&quot;], cals: 73, carbs: 17.9, fiber: 1.8, pro: 0.4, fat: 0.6, vitC: &quot;2.9mg&quot;, vitA: &quot;2mcg&quot;, vitB6: &quot;0.03mg&quot;, folate: &quot;31mcg&quot;, iron: &quot;0.3mg&quot;, mag: &quot;13mg&quot;, potas: &quot;48mg&quot;, calcium: &quot;12mg&quot;, fact: &quot;Contains xanthones, a unique class of powerful antioxidants.&quot; },
        { name: &quot;Rambutan&quot;, emoji: &quot;🦠&quot;, category: [&quot;Exotic&quot;, &quot;Energy&quot;], cals: 82, carbs: 20.9, fiber: 0.9, pro: 0.7, fat: 0.2, vitC: &quot;4.9mg&quot;, vitA: &quot;0mcg&quot;, vitB6: &quot;0.02mg&quot;, folate: &quot;8mcg&quot;, iron: &quot;0.35mg&quot;, mag: &quot;7mg&quot;, potas: &quot;42mg&quot;, calcium: &quot;22mg&quot;, fact: &quot;Aids in production of red blood cells through high copper/iron.&quot; },
        { name: &quot;Longan&quot;, emoji: &quot;🔴&quot;, category: [&quot;Exotic&quot;, &quot;Energy&quot;], cals: 60, carbs: 15.1, fiber: 1.1, pro: 1.3, fat: 0.1, vitC: &quot;84mg&quot;, vitA: &quot;0mcg&quot;, vitB6: &quot;0.02mg&quot;, folate: &quot;2mcg&quot;, iron: &quot;0.13mg&quot;, mag: &quot;10mg&quot;, potas: &quot;266mg&quot;, calcium: &quot;1mg&quot;, fact: &quot;Superior Vitamin C content even compared to Lychees.&quot; },
        { name: &quot;Soursop&quot;, emoji: &quot;🍈&quot;, category: [&quot;Exotic&quot;, &quot;Immunity&quot;], cals: 66, carbs: 16.8, fiber: 3.3, pro: 1, fat: 0.3, vitC: &quot;20.6mg&quot;, vitA: &quot;0mcg&quot;, vitB6: &quot;0.06mg&quot;, folate: &quot;14mcg&quot;, iron: &quot;0.6mg&quot;, mag: &quot;21mg&quot;, potas: &quot;278mg&quot;, calcium: &quot;14mg&quot;, fact: &quot;Studied for neuro-protective properties and cellular energy.&quot; },
        { name: &quot;Camu Camu&quot;, emoji: &quot;🍒&quot;, category: [&quot;Exotic&quot;, &quot;Immunity&quot;], cals: 24, carbs: 5, fiber: 1, pro: 0.4, fat: 0.2, vitC: &quot;2145mg&quot;, vitA: &quot;2mcg&quot;, vitB6: &quot;0.01mg&quot;, folate: &quot;1mcg&quot;, iron: &quot;0.5mg&quot;, mag: &quot;10mg&quot;, potas: &quot;80mg&quot;, calcium: &quot;15mg&quot;, fact: &quot;The undisputed king of Vitamin C; 40x higher than oranges.&quot; },
        { name: &quot;Prickly Pear&quot;, emoji: &quot;🌵&quot;, category: [&quot;Exotic&quot;, &quot;Hydration&quot;], cals: 41, carbs: 9.6, fiber: 3.6, pro: 0.7, fat: 0.5, vitC: &quot;14mg&quot;, vitA: &quot;2mcg&quot;, vitB6: &quot;0.06mg&quot;, folate: &quot;6mcg&quot;, iron: &quot;0.3mg&quot;, mag: &quot;85mg&quot;, potas: &quot;220mg&quot;, calcium: &quot;56mg&quot;, fact: &quot;Excellent Magnesium and Calcium levels for desert hydration.&quot; },
        { name: &quot;Arazá&quot;, emoji: &quot;🍈&quot;, category: [&quot;Exotic&quot;, &quot;Immunity&quot;], cals: 30, carbs: 7, fiber: 1.5, pro: 0.8, fat: 0.2, vitC: &quot;150mg&quot;, vitA: &quot;5mcg&quot;, vitB6: &quot;0.04mg&quot;, folate: &quot;4mcg&quot;, iron: &quot;0.4mg&quot;, mag: &quot;12mg&quot;, potas: &quot;120mg&quot;, calcium: &quot;18mg&quot;, fact: &quot;Amazonian super-fruit with intense acidity and Vitamin C.&quot; },
        { name: &quot;Breadfruit&quot;, emoji: &quot;🍞&quot;, category: [&quot;Exotic&quot;, &quot;Energy&quot;], cals: 103, carbs: 27.1, fiber: 4.9, pro: 1.1, fat: 0.2, vitC: &quot;29mg&quot;, vitA: &quot;1mcg&quot;, vitB6: &quot;0.1mg&quot;, folate: &quot;14mcg&quot;, iron: &quot;0.54mg&quot;, mag: &quot;25mg&quot;, potas: &quot;490mg&quot;, calcium: &quot;17mg&quot;, fact: &quot;High starch and potassium for long-duration energy output.&quot; },
        { name: &quot;Cherimoya&quot;, emoji: &quot;🍈&quot;, category: [&quot;Exotic&quot;, &quot;Energy&quot;], cals: 75, carbs: 17.7, fiber: 3, pro: 1.6, fat: 0.7, vitC: &quot;12.6mg&quot;, vitA: &quot;1mcg&quot;, vitB6: &quot;0.26mg&quot;, folate: &quot;23mcg&quot;, iron: &quot;0.27mg&quot;, mag: &quot;17mg&quot;, potas: &quot;287mg&quot;, calcium: &quot;10mg&quot;, fact: &quot;High B6 and Folate supports nerve repair and Empathy peaks.&quot; },
        { name: &quot;Chayote&quot;, emoji: &quot;🍐&quot;, category: [&quot;Keto-Friendly&quot;, &quot;Hydration&quot;], cals: 19, carbs: 4.5, fiber: 1.7, pro: 0.8, fat: 0.1, vitC: &quot;7.7mg&quot;, vitA: &quot;1mcg&quot;, vitB6: &quot;0.08mg&quot;, folate: &quot;93mcg&quot;, iron: &quot;0.34mg&quot;, mag: &quot;12mg&quot;, potas: &quot;125mg&quot;, calcium: &quot;17mg&quot;, fact: &quot;Highest Folate levels for any hydrating fruit; excellent for pregnancy.&quot; },
        { name: &quot;Quince&quot;, emoji: &quot;🍐&quot;, category: [&quot;Digestion&quot;], cals: 57, carbs: 15.3, fiber: 1.9, pro: 0.4, fat: 0.1, vitC: &quot;15mg&quot;, vitA: &quot;2mcg&quot;, vitB6: &quot;0.04mg&quot;, folate: &quot;3mcg&quot;, iron: &quot;0.7mg&quot;, mag: &quot;8mg&quot;, potas: &quot;197mg&quot;, calcium: &quot;11mg&quot;, fact: &quot;High tannin and fiber aids in severe gastrointestinal issues.&quot; },
        { name: &quot;Ice Apple&quot;, emoji: &quot;🧊&quot;, category: [&quot;Exotic&quot;, &quot;Hydration&quot;, &quot;Regional&quot;], cals: 43, carbs: 11, fiber: 0, pro: 0.8, fat: 0.1, vitC: &quot;5mg&quot;, vitA: &quot;0mcg&quot;, vitB6: &quot;0.02mg&quot;, folate: &quot;1mcg&quot;, iron: &quot;1.2mg&quot;, mag: &quot;10mg&quot;, potas: &quot;150mg&quot;, calcium: &quot;27mg&quot;, fact: &quot;Natural coolant with high Iron/Calcium levels for summer hydration.&quot; },
        { name: &quot;Phalsa&quot;, emoji: &quot;🫐&quot;, category: [&quot;Exotic&quot;, &quot;Hydration&quot;], cals: 35, carbs: 8.5, fiber: 3, pro: 0.7, fat: 0.2, vitC: &quot;20mg&quot;, vitA: &quot;15mcg&quot;, vitB6: &quot;0.03mg&quot;, folate: &quot;5mcg&quot;, iron: &quot;1.1mg&quot;, mag: &quot;8mg&quot;, potas: &quot;180mg&quot;, calcium: &quot;12mg&quot;, fact: &quot;Potent anti-oxidant berry for blood purification.&quot; },
        { name: &quot;Tamarillo&quot;, emoji: &quot;🍅&quot;, category: [&quot;Exotic&quot;, &quot;Hydration&quot;], cals: 31, carbs: 7.1, fiber: 2, pro: 1.8, fat: 0.2, vitC: &quot;25mg&quot;, vitA: &quot;200mcg&quot;, vitB6: &quot;0.1mg&quot;, folate: &quot;10mcg&quot;, iron: &quot;0.4mg&quot;, mag: &quot;20mg&quot;, potas: &quot;300mg&quot;, calcium: &quot;10mg&quot;, fact: &quot;Extreme Vitamin A (Beta-carotene) source for ocular health.&quot; },
        { name: &quot;Mulberry&quot;, emoji: &quot;🍇&quot;, category: [&quot;Digestion&quot;], cals: 43, carbs: 9.8, fiber: 1.7, pro: 1.4, fat: 0.4, vitC: &quot;36.4mg&quot;, vitA: &quot;1mcg&quot;, vitB6: &quot;0.05mg&quot;, folate: &quot;6mcg&quot;, iron: &quot;1.85mg&quot;, mag: &quot;18mg&quot;, potas: &quot;194mg&quot;, calcium: &quot;39mg&quot;, fact: &quot;One of the highest iron-bearing fruits; great for red blood cells.&quot; },
        { name: &quot;Cranberry&quot;, emoji: &quot;🍒&quot;, category: [&quot;Immunity&quot;], cals: 46, carbs: 12.2, fiber: 4.6, pro: 0.4, fat: 0.1, vitC: &quot;13.3mg&quot;, vitA: &quot;3mcg&quot;, vitB6: &quot;0.06mg&quot;, folate: &quot;1mcg&quot;, iron: &quot;0.25mg&quot;, mag: &quot;6mg&quot;, potas: &quot;85mg&quot;, calcium: &quot;8mg&quot;, fact: &quot;Prevents UTI through unique A-type proanthocyanidins.&quot; },
        { name: &quot;Gooseberry (European)&quot;, emoji: &quot;🍒&quot;, category: [&quot;Digestion&quot;], cals: 44, carbs: 10, fiber: 4.3, pro: 0.9, fat: 0.6, vitC: &quot;27mg&quot;, vitA: &quot;15mcg&quot;, vitB6: &quot;0.08mg&quot;, folate: &quot;6mcg&quot;, iron: &quot;0.3mg&quot;, mag: &quot;10mg&quot;, potas: &quot;198mg&quot;, calcium: &quot;25mg&quot;, fact: &quot;High organic acids aid in kidney function and detoxification.&quot; },
        { name: &quot;Black Currant&quot;, emoji: &quot;🫐&quot;, category: [&quot;Immunity&quot;], cals: 63, carbs: 15.4, fiber: 0, pro: 1.4, fat: 0.4, vitC: &quot;181mg&quot;, vitA: &quot;12mcg&quot;, vitB6: &quot;0.07mg&quot;, folate: &quot;8mcg&quot;, iron: &quot;1.54mg&quot;, mag: &quot;24mg&quot;, potas: &quot;322mg&quot;, calcium: &quot;55mg&quot;, fact: &quot;Vastly superior Vitamin C and Iron levels compared to most berries.&quot; },
        { name: &quot;Elderberry&quot;, emoji: &quot;🫐&quot;, category: [&quot;Immunity&quot;], cals: 73, carbs: 18.4, fiber: 7, pro: 0.6, fat: 0.5, vitC: &quot;36mg&quot;, vitA: &quot;30mcg&quot;, vitB6: &quot;0.23mg&quot;, folate: &quot;6mcg&quot;, iron: &quot;1.6mg&quot;, mag: &quot;5mg&quot;, potas: &quot;280mg&quot;, calcium: &quot;38mg&quot;, fact: &quot;World-class anti-viral berry with high B6 for immune defense.&quot; },
        { name: &quot;Loquat&quot;, emoji: &quot;🍑&quot;, category: [&quot;Immunity&quot;], cals: 47, carbs: 12.1, fiber: 1.7, pro: 0.4, fat: 0.2, vitC: &quot;1mg&quot;, vitA: &quot;76mcg&quot;, vitB6: &quot;0.02mg&quot;, folate: &quot;14mcg&quot;, iron: &quot;0.28mg&quot;, mag: &quot;13mg&quot;, potas: &quot;266mg&quot;, calcium: &quot;13mg&quot;, fact: &quot;Excellent source of Vitamin A and Folate for lung health.&quot; },
        { name: &quot;Kumquat&quot;, emoji: &quot;🍊&quot;, category: [&quot;Digestion&quot;, &quot;Immunity&quot;], cals: 71, carbs: 15.9, fiber: 6.5, pro: 1.9, fat: 0.9, vitC: &quot;43.9mg&quot;, vitA: &quot;15mcg&quot;, vitB6: &quot;0.04mg&quot;, folate: &quot;17mcg&quot;, iron: &quot;0.86mg&quot;, mag: &quot;20mg&quot;, potas: &quot;186mg&quot;, calcium: &quot;62mg&quot;, fact: &quot;The skin is edible and contains massive fiber and essential oils.&quot; },
        { name: &quot;Pomelo&quot;, emoji: &quot;🍋&quot;, category: [&quot;Immunity&quot;, &quot;Hydration&quot;, &quot;Regional&quot;], cals: 38, carbs: 9.6, fiber: 1, pro: 0.8, fat: 0, vitC: &quot;61mg&quot;, vitA: &quot;0mcg&quot;, vitB6: &quot;0.03mg&quot;, folate: &quot;21mcg&quot;, iron: &quot;0.11mg&quot;, mag: &quot;6mg&quot;, potas: &quot;216mg&quot;, calcium: &quot;4mg&quot;, fact: &quot;Highest vitamin C concentration in the citrus family.&quot; },
        { name: &quot;Persian Lime&quot;, emoji: &quot;🍋&quot;, category: [&quot;Hydration&quot;, &quot;Immunity&quot;], cals: 30, carbs: 10, fiber: 2.8, pro: 0.7, fat: 0.2, vitC: &quot;29mg&quot;, vitA: &quot;2mcg&quot;, vitB6: &quot;0.04mg&quot;, folate: &quot;8mcg&quot;, iron: &quot;0.6mg&quot;, mag: &quot;6mg&quot;, potas: &quot;102mg&quot;, calcium: &quot;33mg&quot;, fact: &quot;Helps maintain blood pH and improves iron bioavailability.&quot; },
        { name: &quot;Olive (Ripe)&quot;, emoji: &quot;🫒&quot;, category: [&quot;Keto-Friendly&quot;], cals: 115, carbs: 6.3, fiber: 3.2, pro: 0.8, fat: 10.7, vitC: &quot;0.9mg&quot;, vitA: &quot;20mcg&quot;, vitB6: &quot;0.01mg&quot;, folate: &quot;0mcg&quot;, iron: &quot;3.3mg&quot;, mag: &quot;4mg&quot;, potas: &quot;8mg&quot;, calcium: &quot;52mg&quot;, fact: &quot;Rich in Oleic acid and Iron; technically a high-fat fruit.&quot; },
        { name: &quot;Buddha’s Hand&quot;, emoji: &quot;🍋&quot;, category: [&quot;Exotic&quot;], cals: 20, carbs: 6, fiber: 3, pro: 0.5, fat: 0.1, vitC: &quot;40mg&quot;, vitA: &quot;1mcg&quot;, vitB6: &quot;0.02mg&quot;, folate: &quot;1mcg&quot;, iron: &quot;0.2mg&quot;, mag: &quot;8mg&quot;, potas: &quot;100mg&quot;, calcium: &quot;15mg&quot;, fact: &quot;Mainly used for aromatic peels rich in flavonoids.&quot; },
        { name: &quot;Miracle Fruit&quot;, emoji: &quot;🍒&quot;, category: [&quot;Exotic&quot;], cals: 40, carbs: 10, fiber: 2, pro: 1, fat: 0, vitC: &quot;15mg&quot;, vitA: &quot;0mcg&quot;, vitB6: &quot;0.01mg&quot;, folate: &quot;0mcg&quot;, iron: &quot;0.1mg&quot;, mag: &quot;5mg&quot;, potas: &quot;80mg&quot;, calcium: &quot;10mg&quot;, fact: &quot;Contains miraculin protein which modifies taste receptors.&quot; },
        { name: &quot;Medlar&quot;, emoji: &quot;🍐&quot;, category: [&quot;Exotic&quot;, &quot;Digestion&quot;], cals: 45, carbs: 12, fiber: 3.5, pro: 0.6, fat: 0.2, vitC: &quot;4mg&quot;, vitA: &quot;10mcg&quot;, vitB6: &quot;0.03mg&quot;, folate: &quot;10mcg&quot;, iron: &quot;0.3mg&quot;, mag: &quot;11mg&quot;, potas: &quot;130mg&quot;, calcium: &quot;18mg&quot;, fact: &quot;Ancient fruit must be &#39;bletted&#39; to maximize digestive sugars.&quot; },
        { name: &quot;Salak (Snake Fruit)&quot;, emoji: &quot;🐍&quot;, category: [&quot;Exotic&quot;, &quot;Hydration&quot;], cals: 82, carbs: 20, fiber: 3, pro: 1, fat: 0.5, vitC: &quot;15mg&quot;, vitA: &quot;10mcg&quot;, vitB6: &quot;0.05mg&quot;, folate: &quot;8mcg&quot;, iron: &quot;0.6mg&quot;, mag: &quot;14mg&quot;, potas: &quot;280mg&quot;, calcium: &quot;25mg&quot;, fact: &quot;Unique fruit containing high antioxidant tannins.&quot; },
        { name: &quot;Santol&quot;, emoji: &quot;🍈&quot;, category: [&quot;Exotic&quot;, &quot;Energy&quot;], cals: 70, carbs: 16, fiber: 2.2, pro: 1, fat: 0.2, vitC: &quot;18mg&quot;, vitA: &quot;20mcg&quot;, vitB6: &quot;0.04mg&quot;, folate: &quot;10mcg&quot;, iron: &quot;0.4mg&quot;, mag: &quot;12mg&quot;, potas: &quot;210mg&quot;, calcium: &quot;18mg&quot;, fact: &quot;High fiber and bioactive compounds for gut regulation.&quot; },
        { name: &quot;Nance&quot;, emoji: &quot;🍈&quot;, category: [&quot;Exotic&quot;, &quot;Energy&quot;], cals: 55, carbs: 12.5, fiber: 2, pro: 0.8, fat: 0.2, vitC: &quot;15mg&quot;, vitA: &quot;20mcg&quot;, vitB6: &quot;0.03mg&quot;, folate: &quot;12mcg&quot;, iron: &quot;0.3mg&quot;, mag: &quot;10mg&quot;, potas: &quot;180mg&quot;, calcium: &quot;20mg&quot;, fact: &quot;Sweet starchy fruit high in local minerals.&quot; },
        { name: &quot;Mangaba&quot;, emoji: &quot;🍈&quot;, category: [&quot;Exotic&quot;, &quot;Energy&quot;], cals: 65, carbs: 15, fiber: 2, pro: 1.3, fat: 0.3, vitC: &quot;20mg&quot;, vitA: &quot;30mcg&quot;, vitB6: &quot;0.05mg&quot;, folate: &quot;15mcg&quot;, iron: &quot;0.5mg&quot;, mag: &quot;14mg&quot;, potas: &quot;220mg&quot;, calcium: &quot;25mg&quot;, fact: &quot;Brazilian local fruit with creamy pulp and mineral profile.&quot; },
        { name: &quot;Tangerine&quot;, emoji: &quot;🍊&quot;, category: [&quot;Hydration&quot;, &quot;Immunity&quot;], cals: 53, carbs: 13.3, fiber: 1.8, pro: 0.8, fat: 0.3, vitC: &quot;26.7mg&quot;, vitA: &quot;11mcg&quot;, vitB6: &quot;0.08mg&quot;, folate: &quot;16mcg&quot;, iron: &quot;0.15mg&quot;, mag: &quot;12mg&quot;, potas: &quot;166mg&quot;, calcium: &quot;37mg&quot;, fact: &quot;Sweeter citrus easier to peel; provides consistent electrolyte balance.&quot; },
        { name: &quot;Clementine&quot;, emoji: &quot;🍊&quot;, category: [&quot;Hydration&quot;, &quot;Immunity&quot;], cals: 47, carbs: 12.0, fiber: 1.7, pro: 0.9, fat: 0.3, vitC: &quot;48.8mg&quot;, vitA: &quot;22mcg&quot;, vitB6: &quot;0.06mg&quot;, folate: &quot;14mcg&quot;, iron: &quot;0.14mg&quot;, mag: &quot;10mg&quot;, potas: &quot;177mg&quot;, calcium: &quot;30mg&quot;, fact: &quot;Seedless mandarin hybrid that provides quick energy and portable hydration.&quot; },
        { name: &quot;Bel (Bengal Quince)&quot;, emoji: &quot;🍈&quot;, category: [&quot;Regional&quot;, &quot;Digestion&quot;], cals: 137, carbs: 31.8, fiber: 2.9, pro: 1.8, fat: 0.3, vitC: &quot;60mg&quot;, vitA: &quot;55mcg&quot;, vitB6: &quot;0.11mg&quot;, folate: &quot;18mcg&quot;, iron: &quot;0.55mg&quot;, mag: &quot;18mg&quot;, potas: &quot;600mg&quot;, calcium: &quot;85mg&quot;, fact: &quot;Superior Potassium and Calcium levels; unmatched for restoring gut lining.&quot; },
        { name: &quot;Kamranga (Star Fruit)&quot;, emoji: &quot;🌟&quot;, category: [&quot;Regional&quot;, &quot;Hydration&quot;], cals: 31, carbs: 6.7, fiber: 2.8, pro: 1.0, fat: 0.3, vitC: &quot;34.4mg&quot;, vitA: &quot;3mcg&quot;, vitB6: &quot;0.04mg&quot;, folate: &quot;12mcg&quot;, iron: &quot;0.08mg&quot;, mag: &quot;10mg&quot;, potas: &quot;133mg&quot;, calcium: &quot;3mg&quot;, fact: &quot;High in Quercetin and Gallic acid; aids in regulating blood sugar spikes.&quot; },
        { name: &quot;Chalta (Elephant Apple)&quot;, emoji: &quot;🍏&quot;, category: [&quot;Regional&quot;, &quot;Digestion&quot;], cals: 59, carbs: 14.0, fiber: 2.5, pro: 0.8, fat: 0.2, vitC: &quot;26mg&quot;, vitA: &quot;15mcg&quot;, vitB6: &quot;0.05mg&quot;, folate: &quot;9mcg&quot;, iron: &quot;1.9mg&quot;, mag: &quot;12mg&quot;, potas: &quot;180mg&quot;, calcium: &quot;16mg&quot;, fact: &quot;High organic acid content; a natural kidney detoxifier.&quot; },
        { name: &quot;Wood Apple (Kodbel)&quot;, emoji: &quot;🥥&quot;, category: [&quot;Regional&quot;, &quot;Digestion&quot;], cals: 140, carbs: 31.0, fiber: 5.0, pro: 3.5, fat: 0.6, vitC: &quot;3mg&quot;, vitA: &quot;15mcg&quot;, vitB6: &quot;0.09mg&quot;, folate: &quot;10mcg&quot;, iron: &quot;0.48mg&quot;, mag: &quot;14mg&quot;, potas: &quot;550mg&quot;, calcium: &quot;130mg&quot;, fact: &quot;Surprising Protein and Calcium levels for a fruit; essential for bones.&quot; },
        { name: &quot;Noni&quot;, emoji: &quot;🍈&quot;, category: [&quot;Exotic&quot;, &quot;Immunity&quot;], cals: 47, carbs: 11.0, fiber: 0.2, pro: 0.4, fat: 0.1, vitC: &quot;33.6mg&quot;, vitA: &quot;2mcg&quot;, vitB6: &quot;0.04mg&quot;, folate: &quot;8mcg&quot;, iron: &quot;0.3mg&quot;, mag: &quot;16mg&quot;, potas: &quot;180mg&quot;, calcium: &quot;20mg&quot;, fact: &quot;Contains Xeronine, which helps the body repair damaged cells.&quot; },
        { name: &quot;Dragon Fruit (Yellow)&quot;, emoji: &quot;🐉&quot;, category: [&quot;Exotic&quot;, &quot;Energy&quot;], cals: 60, carbs: 13.0, fiber: 2.9, pro: 1.2, fat: 0.1, vitC: &quot;4.5mg&quot;, vitA: &quot;0mcg&quot;, vitB6: &quot;0.04mg&quot;, folate: &quot;1mcg&quot;, iron: &quot;0.65mg&quot;, mag: &quot;40mg&quot;, potas: &quot;270mg&quot;, calcium: &quot;10mg&quot;, fact: &quot;Higher natural sugar and mineral content than the red variety.&quot; },
        { name: &quot;Goji Berry (Fresh)&quot;, emoji: &quot;🍒&quot;, category: [&quot;Exotic&quot;, &quot;Immunity&quot;], cals: 73, carbs: 18.0, fiber: 4.8, pro: 3.8, fat: 0.4, vitC: &quot;48mg&quot;, vitA: &quot;430mcg&quot;, vitB6: &quot;0.1mg&quot;, folate: &quot;12mcg&quot;, iron: &quot;6.8mg&quot;, mag: &quot;34mg&quot;, potas: &quot;440mg&quot;, calcium: &quot;190mg&quot;, fact: &quot;The elite mineral fruit; massive Iron and Calcium levels aid in blood.&quot; },
        { name: &quot;Ackee&quot;, emoji: &quot;🍐&quot;, category: [&quot;Exotic&quot;, &quot;Energy&quot;], cals: 151, carbs: 9.6, fiber: 3.5, pro: 2.9, fat: 15.2, vitC: &quot;30mg&quot;, vitA: &quot;10mcg&quot;, vitB6: &quot;0.15mg&quot;, folate: &quot;40mcg&quot;, iron: &quot;0.7mg&quot;, mag: &quot;40mg&quot;, potas: &quot;270mg&quot;, calcium: &quot;45mg&quot;, fact: &quot;High-fat fruit with an excellent Folate profile.&quot; },
        { name: &quot;Acai Berry&quot;, emoji: &quot;🫐&quot;, category: [&quot;Exotic&quot;, &quot;Keto-Friendly&quot;], cals: 70, carbs: 4.0, fiber: 3.0, pro: 1.0, fat: 5.0, vitC: &quot;0.1mg&quot;, vitA: &quot;30mcg&quot;, vitB6: &quot;0.02mg&quot;, folate: &quot;3mcg&quot;, iron: &quot;0.6mg&quot;, mag: &quot;15mg&quot;, potas: &quot;105mg&quot;, calcium: &quot;35mg&quot;, fact: &quot;Extremely low net carbs with high heart-healthy fats.&quot; },
        { name: &quot;Langsat&quot;, emoji: &quot;🟡&quot;, category: [&quot;Exotic&quot;, &quot;Energy&quot;], cals: 57, carbs: 14.2, fiber: 2.3, pro: 0.8, fat: 0.2, vitC: &quot;13mg&quot;, vitA: &quot;0mcg&quot;, vitB6: &quot;0.05mg&quot;, folate: &quot;6mcg&quot;, iron: &quot;0.9mg&quot;, mag: &quot;12mg&quot;, potas: &quot;230mg&quot;, calcium: &quot;19mg&quot;, fact: &quot;Contains Lansium acid, which helps lower body temperature during fever.&quot; },
        { name: &quot;Rhubarb&quot;, emoji: &quot;🌿&quot;, category: [&quot;Digestion&quot;], cals: 21, carbs: 4.5, fiber: 1.8, pro: 0.9, fat: 0.2, vitC: &quot;8mg&quot;, vitA: &quot;5mcg&quot;, vitB6: &quot;0.02mg&quot;, folate: &quot;7mcg&quot;, iron: &quot;0.22mg&quot;, mag: &quot;12mg&quot;, potas: &quot;288mg&quot;, calcium: &quot;86mg&quot;, fact: &quot;Technically a vegetable but used as fruit; high Calcium and Vitamin K.&quot; },
        { name: &quot;Soursop (Lakshman Phal)&quot;, emoji: &quot;🍐&quot;, category: [&quot;Exotic&quot;, &quot;Immunity&quot;], cals: 66, carbs: 16.8, fiber: 3.3, pro: 1.0, fat: 0.3, vitC: &quot;20.6mg&quot;, vitA: &quot;0mcg&quot;, vitB6: &quot;0.06mg&quot;, folate: &quot;14mcg&quot;, iron: &quot;0.6mg&quot;, mag: &quot;21mg&quot;, potas: &quot;278mg&quot;, calcium: &quot;14mg&quot;, fact: &quot;Rich in Acetogenins; used to support cellular integrity.&quot; },
        { name: &quot;Water Caltrop (Paniphal)&quot;, emoji: &quot;🌰&quot;, category: [&quot;Regional&quot;, &quot;Energy&quot;], cals: 97, carbs: 23.9, fiber: 3.0, pro: 1.4, fat: 0.1, vitC: &quot;4mg&quot;, vitA: &quot;0mcg&quot;, vitB6: &quot;0.3mg&quot;, folate: &quot;10mcg&quot;, iron: &quot;0.8mg&quot;, mag: &quot;22mg&quot;, potas: &quot;580mg&quot;, calcium: &quot;12mg&quot;, fact: &quot;Massive Vitamin B6 and Potassium for nervous system health.&quot; },
        { name: &quot;Cape Gooseberry&quot;, emoji: &quot;🟠&quot;, category: [&quot;Exotic&quot;, &quot;Immunity&quot;], cals: 53, carbs: 11.2, fiber: 4.8, pro: 1.9, fat: 0.7, vitC: &quot;11mg&quot;, vitA: &quot;36mcg&quot;, vitB6: &quot;0.04mg&quot;, folate: &quot;11mcg&quot;, iron: &quot;1.0mg&quot;, mag: &quot;20mg&quot;, potas: &quot;170mg&quot;, calcium: &quot;9mg&quot;, fact: &quot;Contains withanolides; traditionally used to reduce inflammation.&quot; },
        { name: &quot;Snake Gourd (Fruit)&quot;, emoji: &quot;🐍&quot;, category: [&quot;Hydration&quot;], cals: 18, carbs: 3.7, fiber: 0.8, pro: 0.6, fat: 0.3, vitC: &quot;9mg&quot;, vitA: &quot;48mcg&quot;, vitB6: &quot;0.03mg&quot;, folate: &quot;15mcg&quot;, iron: &quot;0.2mg&quot;, mag: &quot;11mg&quot;, potas: &quot;150mg&quot;, calcium: &quot;26mg&quot;, fact: &quot;Extremely low calorie and hydrating; used in Ayurveda.&quot; }
    ];

    let currentFilter = &#39;All&#39;;
    let userFavorites = JSON.parse(localStorage.getItem(&#39;otechy_fruit_favs_v5&#39;)) || [];

    function setFilter(f) {
        currentFilter = f;
        document.querySelectorAll(&#39;.filter-btn&#39;).forEach(btn =&gt; btn.classList.remove(&#39;active&#39;));
        event.target.classList.add(&#39;active&#39;);
        renderGrid();
    }

    function toggleFavorite(name) {
        if (userFavorites.includes(name)) {
            userFavorites = userFavorites.filter(n =&gt; n !== name);
        } else {
            userFavorites.push(name);
        }
        localStorage.setItem(&#39;otechy_fruit_favs_v5&#39;, JSON.stringify(userFavorites));
        renderGrid();
    }

    function handleSearch() { renderGrid(); }

    function renderGrid() {
        const grid = document.getElementById(&#39;dataGrid&#39;);
        const query = document.getElementById(&#39;searchInput&#39;).value.toLowerCase();
        grid.innerHTML = &#39;&#39;;

        const filtered = fruitDB.filter(f =&gt; {
            const matchesQuery = f.name.toLowerCase().includes(query) || f.fact.toLowerCase().includes(query);
            const matchesFilter = (currentFilter === &#39;All&#39;) || 
                                 (currentFilter === &#39;Favorites&#39; ? userFavorites.includes(f.name) : f.category.includes(currentFilter));
            return matchesQuery &amp;&amp; matchesFilter;
        });

        filtered.forEach(f =&gt; {
            const isFav = userFavorites.includes(f.name);
            const card = document.createElement(&#39;div&#39;);
            card.className = &#39;bio-card&#39;;
            const netCarbs = (f.carbs - f.fiber).toFixed(1);

            card.innerHTML = `
                &lt;div class=&quot;card-header&quot;&gt;
                    &lt;div class=&quot;bio-name&quot;&gt;&lt;span&gt;${f.emoji}&lt;/span&gt; ${f.name}&lt;/div&gt;
                    &lt;div class=&quot;fav-icon&quot; onclick=&quot;toggleFavorite(&#39;${f.name}&#39;)&quot;&gt;${isFav ? &#39;❤️&#39; : &#39;🤍&#39;}&lt;/div&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;macro-mini&quot;&gt;
                    &lt;div class=&quot;m-item&quot;&gt;&lt;label&gt;Cals&lt;/label&gt;&lt;span&gt;${f.cals}&lt;/span&gt;&lt;/div&gt;
                    &lt;div class=&quot;m-item&quot;&gt;&lt;label&gt;Net Carbs&lt;/label&gt;&lt;span&gt;${netCarbs}g&lt;/span&gt;&lt;/div&gt;
                    &lt;div class=&quot;m-item&quot;&gt;&lt;label&gt;Protein&lt;/label&gt;&lt;span&gt;${f.pro}g&lt;/span&gt;&lt;/div&gt;
                &lt;/div&gt;

                &lt;table class=&quot;micro-table&quot;&gt;
                    &lt;tbody&gt;
                        &lt;tr&gt;&lt;td class=&quot;micro-lbl&quot;&gt;Vitamin C / A&lt;/td&gt;&lt;td&gt;${f.vitC} / ${f.vitA}&lt;/td&gt;&lt;/tr&gt;
                        &lt;tr&gt;&lt;td class=&quot;micro-lbl&quot;&gt;Vit B6 / Folate&lt;/td&gt;&lt;td&gt;${f.vitB6} / ${f.folate}&lt;/td&gt;&lt;/tr&gt;
                        &lt;tr&gt;&lt;td class=&quot;micro-lbl&quot;&gt;Iron / Mag&lt;/td&gt;&lt;td&gt;${f.iron} / ${f.mag}&lt;/td&gt;&lt;/tr&gt;
                        &lt;tr&gt;&lt;td class=&quot;micro-lbl&quot;&gt;Potas / Calc&lt;/td&gt;&lt;td&gt;${f.potas} / ${f.calcium}&lt;/td&gt;&lt;/tr&gt;
                    &lt;/tbody&gt;
                &lt;/table&gt;

                &lt;div class=&quot;fact-tag&quot;&gt;&lt;strong&gt;Clinical Note:&lt;/strong&gt; ${f.fact}&lt;/div&gt;
            `;
            grid.appendChild(card);
        });
    }

    renderGrid();
    document.querySelectorAll(&#39;.dynamic-year&#39;).forEach(el =&gt; el.innerText = new Date().getFullYear());
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/5285286746452999488'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/5285286746452999488'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/04/fruit-nutrition-database-macros-per-100g.html' title='Fruit Nutrition Database | Macros per 100g'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-1405387841879515067</id><published>2026-04-04T05:08:00.000-07:00</published><updated>2026-04-04T09:33:05.939-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Health"/><category scheme="http://www.blogger.com/atom/ns#" term="Nutrition"/><category scheme="http://www.blogger.com/atom/ns#" term="Vitamins"/><title type='text'>Ultimate Health Database | Vitamins, Minerals &amp; Organs</title><content type='html'>&lt;title&gt;Ultimate BioNutrient &amp; Organ Database | Vitamins, Minerals, Anatomy - OTechy&lt;/title&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
&lt;meta name=&quot;description&quot; content=&quot;The definitive biological database. Explore essential vitamins, trace minerals, vital human organs, and essential compounds like Omega-3 and CoQ10.&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;0,850;1,500&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

&lt;style&gt;
    /* --- OTechy Design System: Premium Bio V7 --- */
    :root { 
        --primary: #059669; --primary-dark: #047857; 
        --text-dark: #0f172a; --accent: #475569; 
        --bg: #f8fafc; --white: #fff; --border: #e2e8f0; 
        --soft-green: #ecfdf5; --font-main: &#39;Poppins&#39;, sans-serif;
    }
    
    * { box-sizing: border-box; }
    body { background-color: var(--bg); font-family: var(--font-main); color: var(--text-dark); margin: 0; line-height: 1.6; }
    .otechy-tool-wrapper { max-width: 1250px; margin: 0 auto; padding: 40px 20px 60px; }
    
    /* Hero Section */
    .hero-section { text-align: center; margin-bottom: 20px; position: relative; padding: 60px 20px; background: linear-gradient(135deg, #f0fdf4 0%, #ffffff 100%); border-radius: 24px; border: 1px solid var(--border); box-shadow: 0 10px 30px rgba(5, 150, 105, 0.05); overflow: hidden; }
    .bio-orb { width: 80px; height: 80px; border-radius: 50%; margin: 0 auto 20px; position: relative; background: radial-gradient(circle at 30% 30%, #a7f3d0, #34d399, #059669); box-shadow: 0 0 30px rgba(52, 211, 153, 0.4), inset -8px -8px 15px rgba(0,0,0,0.1); animation: pulse 3s infinite alternate; }
    @keyframes pulse { 0% { transform: scale(0.95); box-shadow: 0 0 20px rgba(52, 211, 153, 0.3); } 100% { transform: scale(1.05); box-shadow: 0 0 40px rgba(52, 211, 153, 0.6); } }
    .hero-section h1 { font-size: clamp(26px, 5vw, 42px); font-weight: 850; margin: 0 0 10px 0; letter-spacing: -1px; }
    .hero-section h1 span { color: var(--primary); }
    .hero-subtitle { color: var(--accent); font-size: 15px; font-weight: 500; max-width: 750px; margin: 0 auto 25px; line-height: 1.6; }
    
    .db-stats { display: flex; justify-content: center; gap: 15px; flex-wrap: wrap; margin-bottom: 20px; }
    .stat-pill { background: var(--white); border: 1px solid var(--border); padding: 8px 16px; border-radius: 50px; font-size: 12px; font-weight: 800; color: var(--primary-dark); box-shadow: 0 4px 10px rgba(0,0,0,0.02); }

    /* Controls */
    .controls-area { margin: 40px 0; display: flex; flex-direction: column; gap: 20px; align-items: center; }
    .search-bar { width: 100%; max-width: 650px; position: relative; }
    .search-bar input { width: 100%; padding: 18px 20px 18px 55px; border-radius: 50px; border: 2px solid var(--border); font-family: var(--font-main); font-size: 16px; font-weight: 600; outline: none; transition: 0.2s; box-shadow: 0 8px 25px rgba(0,0,0,0.03); color: var(--text-dark); }
    .search-bar input:focus { border-color: var(--primary); box-shadow: 0 0 0 4px rgba(5, 150, 105, 0.1); }
    .search-icon { position: absolute; left: 22px; top: 50%; transform: translateY(-50%); color: var(--accent); }

    /* Filter Tiers */
    .filter-tier { display: flex; justify-content: center; gap: 10px; flex-wrap: wrap; max-width: 1000px; margin-bottom: 10px; }
    .filter-btn { background: var(--white); border: 1px solid var(--border); color: var(--accent); padding: 8px 18px; border-radius: 50px; font-family: var(--font-main); font-weight: 700; font-size: 12px; cursor: pointer; transition: 0.2s; text-transform: uppercase; letter-spacing: 0.5px; box-shadow: 0 2px 5px rgba(0,0,0,0.02);}
    .filter-btn:hover { border-color: var(--primary); color: var(--primary); background: var(--soft-green); transform: translateY(-1px); }
    .filter-btn.active { background: var(--text-dark); color: #fff; border-color: var(--text-dark); box-shadow: 0 6px 15px rgba(0,0,0,0.1); }
    
    .filter-sub-tier { display: flex; justify-content: center; gap: 8px; flex-wrap: wrap; max-width: 1000px; padding-top: 15px; border-top: 1px dashed var(--border); }
    .sub-btn { background: #f8fafc; border: 1px solid var(--border); color: var(--accent); padding: 6px 14px; border-radius: 8px; font-size: 11px; font-weight: 600; cursor: pointer; transition: 0.2s; }
    .sub-btn:hover { background: #e2e8f0; color: var(--text-dark); }
    .sub-btn.active { background: var(--primary); color: #fff; border-color: var(--primary-dark); }

    /* Result Counter */
    .result-counter { width: 100%; max-width: 1100px; text-align: left; font-size: 14px; font-weight: 700; color: var(--accent); margin: 0 auto 15px; padding: 0 10px; }
    .result-counter span { color: var(--primary-dark); }

    /* Grid Layout */
    .bio-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); gap: 30px; }
    .bio-card { background: var(--white); border-radius: 20px; border: 1px solid var(--border); padding: 25px; transition: 0.3s; position: relative; overflow: hidden; box-shadow: 0 8px 25px rgba(0,0,0,0.03); display: flex; flex-direction: column; }
    .bio-card:hover { transform: translateY(-5px); border-color: var(--primary); box-shadow: 0 15px 35px rgba(5, 150, 105, 0.08); }
    
    .card-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 15px; }
    .bio-name { font-size: 21px; font-weight: 850; margin: 0; color: var(--text-dark); letter-spacing: -0.5px; display: flex; align-items: center; gap: 12px; line-height: 1.2; }
    .bio-color-tag { width: 18px; height: 18px; border-radius: 50%; border: 1px solid rgba(0,0,0,0.1); box-shadow: 0 2px 4px rgba(0,0,0,0.1); flex-shrink: 0; }
    .organ-emoji { font-size: 26px; }
    
    .fav-icon { cursor: pointer; font-size: 24px; color: var(--border); transition: 0.2s; user-select: none; }
    .fav-icon.is-fav { color: #ef4444; }
    .fav-icon:hover { transform: scale(1.1); }

    /* Badges */
    .expert-badges { display: flex; gap: 8px; margin-bottom: 15px; flex-wrap: wrap; }
    .badge-base { font-size: 10px; font-weight: 800; text-transform: uppercase; padding: 4px 10px; border-radius: 6px; border: 1px solid; }
    .badge-crucial { background: #fef2f2; color: #b91c1c; border-color: #fecaca; }
    .badge-daily { background: #f0fdf4; color: #15803d; border-color: #bbf7d0; }
    .badge-macro { background: #eff6ff; color: #1d4ed8; border-color: #bfdbfe; }
    .badge-trace { background: #fdf4ff; color: #a21caf; border-color: #fae8ff; }
    .badge-organ { background: #fffbeb; color: #b45309; border-color: #fde68a; }
    .badge-compound { background: #f3e8ff; color: #7e22ce; border-color: #e9d5ff; }

    /* Dosage */
    .dosage-box { background: #0f172a; color: #f8fafc; padding: 12px 18px; border-radius: 10px; font-size: 12px; font-weight: 600; display: flex; align-items: center; justify-content: space-between; margin-bottom: 18px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); }
    .dosage-box strong { color: #94a3b8; font-size: 10px; text-transform: uppercase; letter-spacing: 0.5px; }
    .dosage-box span { color: #34d399; font-weight: 850; font-size: 16px; text-align: right; }

    /* Details */
    .info-group { margin-bottom: 15px; font-size: 13px; line-height: 1.6; background: #f8fafc; padding: 16px; border-radius: 12px; border: 1px solid var(--border); flex-grow: 1; }
    .alert-group { background: #fef2f2; border-color: #fecaca; }
    .info-lbl { color: var(--primary-dark); font-weight: 850; font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px; display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
    .alert-group .info-lbl { color: #b91c1c; }
    .info-val { color: var(--text-dark); font-weight: 500; }

    .pairings-box { font-size: 12px; font-weight: 500; color: var(--text-dark); padding: 16px; background: #f1f5f9; border-radius: 12px; margin-bottom: 15px; border: 1px dashed #cbd5e1; line-height: 1.6;}
    .syn-mix { color: #15803d; font-weight: 800; font-size: 11px; text-transform: uppercase; }
    .syn-avoid { color: #b91c1c; font-weight: 800; font-size: 11px; text-transform: uppercase; }

    /* Tags */
    .cleanse-tags { display: flex; gap: 8px; margin-top: auto; border-top: 1px solid var(--border); padding-top: 18px; flex-wrap: wrap; }
    .section-title { width: 100%; font-size: 10px; font-weight: 850; color: var(--accent); text-transform: uppercase; margin-bottom: 6px; letter-spacing: 0.5px; }
    .c-tag { font-size: 11px; padding: 6px 12px; border-radius: 8px; display: flex; align-items: center; gap: 6px; font-weight: 700; border: 1px solid #bbf7d0; background: #f0fdf4; color: #065f46; }
    .o-tag { font-size: 11px; padding: 6px 12px; border-radius: 8px; background: var(--primary); color: #fff; font-weight: 700; }

    /* Ads */
    .otechy-ad { background: #f1f5f9; color: #cbd5e1; font-size: 10px; font-weight: 700; text-transform: uppercase; height: 90px; display: flex; align-items: center; justify-content: center; border-radius: 10px; margin: 20px 0; width: 100%; border: 1px dashed #cbd5e1; }

      /* --- MOBILE RESPONSIVENESS OVERRIDES --- */
    @media (max-width: 768px) {
        .otechy-tool-wrapper { padding: 15px 10px; }
        .hero-section { padding: 40px 15px; }
        .search-sort-row { flex-direction: column; width: 100%; gap: 10px; }
        .sort-dropdown { width: 100%; }
        .filter-tier { gap: 6px; }
        .filter-btn { padding: 6px 12px; font-size: 10px; }
        .bio-grid { grid-template-columns: 1fr; gap: 15px; }
        .bio-card { padding: 20px 15px; }
        .card-header { margin-bottom: 10px; }
        .bio-name { font-size: 18px; }
        .db-stats { display: flex; flex-direction: column; gap: 8px; width: 100%; }
        .stat-pill { width: 100%; justify-content: center; }
        .result-counter { flex-direction: column; align-items: center; text-align: center; gap: 5px; }
        .micro-grid { grid-template-columns: 1fr; }
    }
  
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;

    &lt;div class=&quot;hero-section&quot;&gt;
        &lt;div class=&quot;bio-orb&quot;&gt;&lt;/div&gt;
        &lt;h1&gt;Clinical &lt;span&gt;Biological&lt;/span&gt; Database&lt;/h1&gt;
        &lt;p class=&quot;hero-subtitle&quot;&gt;The definitive guide to human optimization. Explore essential vitamins, critical trace minerals, vital compounds, and all major anatomical systems.&lt;/p&gt;
        
        &lt;div class=&quot;db-stats&quot;&gt;
            &lt;span class=&quot;stat-pill&quot;&gt;💊 13 Essential Vitamins&lt;/span&gt;
            &lt;span class=&quot;stat-pill&quot;&gt;🪨 13 Vital Minerals&lt;/span&gt;
            &lt;span class=&quot;stat-pill&quot;&gt;🧪 Essential Compounds&lt;/span&gt;
            &lt;span class=&quot;stat-pill&quot;&gt;🧬 26 Anatomical Systems&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 20px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT TOP&lt;/div&gt;

    &lt;div class=&quot;controls-area&quot;&gt;
        &lt;div class=&quot;search-bar&quot;&gt;
            &lt;svg class=&quot;search-icon&quot; width=&quot;22&quot; height=&quot;22&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;circle cx=&quot;11&quot; cy=&quot;11&quot; r=&quot;8&quot;&gt;&lt;/circle&gt;&lt;line x1=&quot;21&quot; y1=&quot;21&quot; x2=&quot;16.65&quot; y2=&quot;16.65&quot;&gt;&lt;/line&gt;&lt;/svg&gt;
            &lt;input type=&quot;text&quot; id=&quot;searchInput&quot; placeholder=&quot;Search a vitamin (B9), compound (CoQ10), organ (Gallbladder), or symptom (Fatigue)...&quot; oninput=&quot;handleSearch()&quot;&gt;
        &lt;/div&gt;

        &lt;div class=&quot;filter-tier&quot; id=&quot;mainFilters&quot;&gt;
            &lt;button class=&quot;filter-btn active&quot; onclick=&quot;setMainFilter(&#39;All&#39;)&quot;&gt;All Database&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; style=&quot;color: #ef4444; border-color: #fecaca; background: #fef2f2;&quot; onclick=&quot;setMainFilter(&#39;Favorites&#39;)&quot;&gt;❤️ My Tracked List&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setMainFilter(&#39;Vitamins&#39;)&quot;&gt;💊 Vitamins&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setMainFilter(&#39;Minerals&#39;)&quot;&gt;🪨 Minerals&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setMainFilter(&#39;Compounds&#39;)&quot;&gt;🧪 Essential Compounds&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setMainFilter(&#39;Organs&#39;)&quot;&gt;🧬 Human Anatomy&lt;/button&gt;
        &lt;/div&gt;

        &lt;div class=&quot;filter-sub-tier&quot; id=&quot;subFilters&quot;&gt;
            &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;result-counter&quot; id=&quot;resultCounter&quot;&gt;Showing &lt;span id=&quot;countNum&quot;&gt;0&lt;/span&gt; biological records&lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 30px 0; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;

    &lt;div class=&quot;bio-grid&quot; id=&quot;dataGrid&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 30px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;
    // --- COMPREHENSIVE BIOLOGICAL DATABASE (V7) ---
    const bioDB = [
        // ================= VITAMINS =================
        { name: &quot;Vitamin A (Retinol)&quot;, color: &quot;#f97316&quot;, type: &quot;Vitamins&quot;, subType: &quot;Fat-Soluble&quot;, dosage: &quot;900 mcg (M) / 700 mcg (W)&quot;, role: &quot;Essential for vision (rhodopsin production), immune system integrity, and cellular communication.&quot;, deficiency: &quot;Night blindness, dry/scaly skin (hyperkeratosis), and severe immune suppression.&quot;, synergy: &quot;&lt;strong&gt;Fat &amp; Zinc:&lt;/strong&gt; Requires dietary fat for absorption and Zinc to transport retinol from the liver.&quot;, antagonism: &quot;&lt;strong&gt;Alcohol:&lt;/strong&gt; Rapidly depletes liver stores of Vitamin A. Note: High doses can be toxic.&quot;, sources: [&quot;Liver&quot;, &quot;Sweet Potatoes&quot;, &quot;Carrots&quot;, &quot;Spinach&quot;], targets: [&quot;Eyes&quot;, &quot;Skin&quot;, &quot;Immune&quot;] },
        { name: &quot;Vitamin B1 (Thiamine)&quot;, color: &quot;#ef4444&quot;, type: &quot;Vitamins&quot;, subType: &quot;Water-Soluble&quot;, dosage: &quot;1.2 mg&quot;, role: &quot;Crucial for glucose metabolism. Converts food into ATP (cellular energy) and synthesizes neurotransmitters.&quot;, deficiency: &quot;Beri-beri, extreme muscle weakness, nerve damage, and memory loss.&quot;, synergy: &quot;&lt;strong&gt;Magnesium:&lt;/strong&gt; Required to convert Thiamine into its active biological form.&quot;, antagonism: &quot;&lt;strong&gt;Raw Seafood &amp; Tannins:&lt;/strong&gt; Contain thiaminases which actively destroy B1 in the gut.&quot;, sources: [&quot;Pork&quot;, &quot;Sunflower Seeds&quot;, &quot;Black Beans&quot;], targets: [&quot;Brain&quot;, &quot;Nerves&quot;, &quot;Heart&quot;] },
        { name: &quot;Vitamin B2 (Riboflavin)&quot;, color: &quot;#eab308&quot;, type: &quot;Vitamins&quot;, subType: &quot;Water-Soluble&quot;, dosage: &quot;1.3 mg&quot;, role: &quot;A core component of coenzymes FAD and FMN, driving cellular energy production and fat metabolism.&quot;, deficiency: &quot;Cracked lips (cheilosis), a swollen magenta tongue, and severe light sensitivity.&quot;, synergy: &quot;&lt;strong&gt;Other B-Vitamins:&lt;/strong&gt; B2 is strictly required to activate Vitamin B6 and Folate (B9).&quot;, antagonism: &quot;&lt;strong&gt;UV Light:&lt;/strong&gt; Riboflavin is rapidly destroyed by prolonged exposure to sunlight.&quot;, sources: [&quot;Milk&quot;, &quot;Almonds&quot;, &quot;Eggs&quot;, &quot;Beef&quot;], targets: [&quot;Skin&quot;, &quot;Eyes&quot;, &quot;Metabolism&quot;] },
        { name: &quot;Vitamin B3 (Niacin)&quot;, color: &quot;#dc2626&quot;, type: &quot;Vitamins&quot;, subType: &quot;Water-Soluble&quot;, dosage: &quot;16 mg&quot;, role: &quot;Precursor to NAD/NADP. Vital for DNA repair, hundreds of metabolic reactions, and managing cholesterol.&quot;, deficiency: &quot;Pellagra (the 4 D&#39;s: Dermatitis, Diarrhea, Dementia, and ultimately Death).&quot;, synergy: &quot;&lt;strong&gt;Tryptophan:&lt;/strong&gt; The body can synthesize its own B3 from the amino acid Tryptophan.&quot;, antagonism: &quot;&lt;strong&gt;Excessive Dosing:&lt;/strong&gt; High doses cause the famous &#39;Niacin Flush&#39; (red, itchy skin) and liver stress.&quot;, sources: [&quot;Chicken&quot;, &quot;Tuna&quot;, &quot;Peanuts&quot;, &quot;Mushrooms&quot;], targets: [&quot;Brain&quot;, &quot;Skin&quot;, &quot;Blood Vessels&quot;] },
        { name: &quot;Vitamin B5 (Pantothenic Acid)&quot;, color: &quot;#b91c1c&quot;, type: &quot;Vitamins&quot;, subType: &quot;Water-Soluble&quot;, dosage: &quot;5 mg&quot;, role: &quot;Used to synthesize Coenzyme A (CoA), which is mandatory to synthesize fatty acids, cholesterol, and steroid hormones.&quot;, deficiency: &quot;Rare, but causes &#39;burning feet syndrome&#39;, severe fatigue, and sleep disturbances.&quot;, synergy: &quot;&lt;strong&gt;B-Complex:&lt;/strong&gt; Works seamlessly with all B vitamins to extract energy from macronutrients.&quot;, antagonism: &quot;&lt;strong&gt;Oral Contraceptives:&lt;/strong&gt; May increase the requirement for B5.&quot;, sources: [&quot;Avocado&quot;, &quot;Yogurt&quot;, &quot;Liver&quot;, &quot;Broccoli&quot;], targets: [&quot;Adrenal Glands&quot;, &quot;Metabolism&quot;] },
        { name: &quot;Vitamin B6 (Pyridoxine)&quot;, color: &quot;#991b1b&quot;, type: &quot;Vitamins&quot;, subType: &quot;Water-Soluble&quot;, dosage: &quot;1.3 - 1.7 mg&quot;, role: &quot;Involved in 100+ enzyme reactions, mostly protein metabolism. Essential for creating serotonin and dopamine.&quot;, deficiency: &quot;Microcytic anemia, severe depression, confusion, and weakened immune function.&quot;, synergy: &quot;&lt;strong&gt;Magnesium &amp; Zinc:&lt;/strong&gt; Enhance B6 absorption and utilization in the brain.&quot;, antagonism: &quot;&lt;strong&gt;Alcohol &amp; NSAIDs:&lt;/strong&gt; Rapidly destroy B6 reserves and inhibit its active form.&quot;, sources: [&quot;Chickpeas&quot;, &quot;Salmon&quot;, &quot;Potatoes&quot;, &quot;Bananas&quot;], targets: [&quot;Brain&quot;, &quot;Blood&quot;, &quot;Nerves&quot;] },
        { name: &quot;Vitamin B7 (Biotin)&quot;, color: &quot;#7f1d1d&quot;, type: &quot;Vitamins&quot;, subType: &quot;Water-Soluble&quot;, dosage: &quot;30 mcg&quot;, role: &quot;Acts as a coenzyme for carboxylase enzymes, critical for synthesizing fatty acids, glucose, and keratin.&quot;, deficiency: &quot;Hair thinning, brittle nails, scaly red rashes around the eyes/mouth, and lethargy.&quot;, synergy: &quot;&lt;strong&gt;Chromium:&lt;/strong&gt; Works together to stabilize blood sugar and insulin levels.&quot;, antagonism: &quot;&lt;strong&gt;Raw Egg Whites:&lt;/strong&gt; Contain avidin, a protein that firmly binds to biotin.&quot;, sources: [&quot;Egg Yolks&quot;, &quot;Organ Meats&quot;, &quot;Nuts&quot;, &quot;Sweet Potatoes&quot;], targets: [&quot;Hair&quot;, &quot;Skin&quot;, &quot;Nails&quot;] },
        { name: &quot;Vitamin B9 (Folate / Preconception)&quot;, color: &quot;#ef4444&quot;, type: &quot;Vitamins&quot;, subType: &quot;Water-Soluble&quot;, dosage: &quot;400 - 800 mcg&quot;, role: &quot;Critical for DNA methylation and rapid cell division. In women, prevents neural tube defects; in men, essential for high-quality sperm DNA synthesis.&quot;, deficiency: &quot;Female: Risk of birth defects and infertility. Male: Fragmented sperm DNA and reduced sperm count.&quot;, synergy: &quot;&lt;strong&gt;B12 &amp; Zinc:&lt;/strong&gt; Works with B12 for DNA synthesis and Zinc to ensure proper absorption in the gut.&quot;, antagonism: &quot;&lt;strong&gt;Alcohol &amp; MTHFR:&lt;/strong&gt; Alcohol blocks folate absorption; individuals with the MTHFR gene mutation require &#39;Methyl-Folate&#39; instead.&quot;, sources: [&quot;Spinach&quot;, &quot;Lentils&quot;, &quot;Asparagus&quot;, &quot;Beef Liver&quot;], targets: [&quot;Reproductive&quot;, &quot;DNA Synthesis&quot;, &quot;Fetal Development&quot;] },
        { name: &quot;Vitamin B12 (Cobalamin)&quot;, color: &quot;#b91c1c&quot;, type: &quot;Vitamins&quot;, subType: &quot;Water-Soluble&quot;, dosage: &quot;2.4 mcg&quot;, role: &quot;Maintains the myelin sheath (nerve protection), synthesizes DNA, and produces red blood cells.&quot;, deficiency: &quot;Permanent nerve damage, brain fog, tingling hands/feet, and extreme fatigue.&quot;, synergy: &quot;&lt;strong&gt;Folate (B9):&lt;/strong&gt; They rely entirely on each other for cellular division.&quot;, antagonism: &quot;&lt;strong&gt;Vegan Diets:&lt;/strong&gt; B12 is exclusively found in animal products; supplementation is mandatory.&quot;, sources: [&quot;Clams&quot;, &quot;Beef Liver&quot;, &quot;Trout&quot;, &quot;Eggs&quot;], targets: [&quot;Brain&quot;, &quot;Nerves&quot;, &quot;Blood&quot;] },
        { name: &quot;Vitamin C (Ascorbic Acid)&quot;, color: &quot;#fb923c&quot;, type: &quot;Vitamins&quot;, subType: &quot;Water-Soluble&quot;, dosage: &quot;90 mg&quot;, role: &quot;Produces collagen for tissues and gums, neutralizes free radicals, and synthesizes neurotransmitters.&quot;, deficiency: &quot;Scurvy (bleeding gums, teeth falling out, unhealed wounds), and severe immune collapse.&quot;, synergy: &quot;&lt;strong&gt;Non-Heme Iron:&lt;/strong&gt; Increases plant-based iron absorption by up to 67%.&quot;, antagonism: &quot;&lt;strong&gt;Glucose:&lt;/strong&gt; Sugar and Vitamin C share the same cellular transport pathway; high sugar blocks Vit C.&quot;, sources: [&quot;Citrus&quot;, &quot;Kiwi&quot;, &quot;Bell Peppers&quot;, &quot;Strawberries&quot;], targets: [&quot;Immune&quot;, &quot;Skin&quot;, &quot;Gums&quot;] },
        { name: &quot;Vitamin D3 (Cholecalciferol)&quot;, color: &quot;#facc15&quot;, type: &quot;Vitamins&quot;, subType: &quot;Fat-Soluble&quot;, dosage: &quot;600 - 800 IU&quot;, role: &quot;A pro-hormone that controls Calcium absorption in the gut. Modulates the immune system and genes.&quot;, deficiency: &quot;Rickets, osteoporosis, severe bone pain, depression, and immune dysfunction.&quot;, synergy: &quot;&lt;strong&gt;Magnesium &amp; K2:&lt;/strong&gt; Mag activates D3; K2 tells the absorbed Calcium to go to bones, not arteries.&quot;, antagonism: &quot;&lt;strong&gt;Fat-Free Diets:&lt;/strong&gt; Requires dietary fat to be absorbed. Sunscreen blocks its natural production.&quot;, sources: [&quot;Sunlight&quot;, &quot;Salmon&quot;, &quot;Egg Yolks&quot;, &quot;Mushrooms&quot;], targets: [&quot;Bones&quot;, &quot;Immune&quot;, &quot;Brain&quot;] },
        { name: &quot;Vitamin E (Tocopherol)&quot;, color: &quot;#fcd34d&quot;, type: &quot;Vitamins&quot;, subType: &quot;Fat-Soluble&quot;, dosage: &quot;15 mg&quot;, role: &quot;A highly potent fat-soluble antioxidant. Protects cellular membranes and circulating cholesterol from oxidation.&quot;, deficiency: &quot;Muscle weakness, visual disturbances, and neurological deterioration.&quot;, synergy: &quot;&lt;strong&gt;Vitamin C:&lt;/strong&gt; Vitamin C &#39;recharges&#39; Vitamin E after it neutralizes a free radical.&quot;, antagonism: &quot;&lt;strong&gt;Iron Supplements:&lt;/strong&gt; Inorganic iron destroys Vitamin E in the digestive tract. Separate doses.&quot;, sources: [&quot;Sunflower Seeds&quot;, &quot;Almonds&quot;, &quot;Spinach&quot;, &quot;Avocado&quot;], targets: [&quot;Skin&quot;, &quot;Eyes&quot;, &quot;Blood&quot;] },
        { name: &quot;Vitamin K (K1 &amp; K2)&quot;, color: &quot;#4ade80&quot;, type: &quot;Vitamins&quot;, subType: &quot;Fat-Soluble&quot;, dosage: &quot;120 mcg&quot;, role: &quot;K1 handles blood clotting. K2 regulates calcium deposition (putting calcium in bones and removing it from arteries).&quot;, deficiency: &quot;Excessive bleeding (K1), arterial calcification, and weak bones (K2).&quot;, synergy: &quot;&lt;strong&gt;Vitamin D3 &amp; Calcium:&lt;/strong&gt; Creates the biological &#39;Holy Trinity&#39; for unbreakable bone density.&quot;, antagonism: &quot;&lt;strong&gt;Blood Thinners (Warfarin):&lt;/strong&gt; Vitamin K directly antagonizes anticoagulant medications.&quot;, sources: [&quot;Kale (K1)&quot;, &quot;Natto (K2)&quot;, &quot;Cheese (K2)&quot;, &quot;Broccoli (K1)&quot;], targets: [&quot;Blood&quot;, &quot;Bones&quot;, &quot;Heart&quot;] },

        // ================= MINERALS =================
        { name: &quot;Calcium&quot;, color: &quot;#e2e8f0&quot;, type: &quot;Minerals&quot;, subType: &quot;Macro Mineral&quot;, dosage: &quot;1000 - 1200 mg&quot;, role: &quot;The most abundant mineral. Provides bone and teeth rigidity, triggers muscle contractions, and regulates heart rhythm.&quot;, deficiency: &quot;Osteopenia, osteoporosis, severe muscle cramps (tetany), and numbness.&quot;, synergy: &quot;&lt;strong&gt;Vitamin D3 &amp; Boron:&lt;/strong&gt; Maximizes absorption and reduces calcium loss in urine.&quot;, antagonism: &quot;&lt;strong&gt;Iron &amp; Zinc:&lt;/strong&gt; Calcium physically blocks their absorption in the small intestine.&quot;, sources: [&quot;Dairy&quot;, &quot;Chia Seeds&quot;, &quot;Sardines&quot;, &quot;Tofu&quot;], targets: [&quot;Bones&quot;, &quot;Teeth&quot;, &quot;Muscles&quot;] },
        { name: &quot;Magnesium&quot;, color: &quot;#22c55e&quot;, type: &quot;Minerals&quot;, subType: &quot;Macro Mineral&quot;, dosage: &quot;400 - 420 mg&quot;, role: &quot;Cofactor in 300+ enzymes. Relaxes muscles, stabilizes the nervous system, and generates ATP (energy).&quot;, deficiency: &quot;Insomnia, severe anxiety, restless legs, heart arrhythmias, and migraines.&quot;, synergy: &quot;&lt;strong&gt;B6 &amp; Vitamin D3:&lt;/strong&gt; B6 escorts Magnesium into cells. Magnesium activates D3.&quot;, antagonism: &quot;&lt;strong&gt;Refined Sugar:&lt;/strong&gt; The body uses up stored Magnesium specifically to process refined sugars.&quot;, sources: [&quot;Spinach&quot;, &quot;Pumpkin Seeds&quot;, &quot;Dark Chocolate&quot;, &quot;Black Beans&quot;], targets: [&quot;Heart&quot;, &quot;Muscles&quot;, &quot;Brain&quot;] },
        { name: &quot;Potassium&quot;, color: &quot;#3b82f6&quot;, type: &quot;Minerals&quot;, subType: &quot;Macro Mineral&quot;, dosage: &quot;3400 mg&quot;, role: &quot;The primary intracellular electrolyte. Regulates fluid balance, nerve signals, and opposes sodium to lower blood pressure.&quot;, deficiency: &quot;Hypokalemia: weakness, severe muscle cramps, heart palpitations, and breathing difficulties.&quot;, synergy: &quot;&lt;strong&gt;Sodium:&lt;/strong&gt; Must maintain a strict biological balance with Sodium (Sodium/Potassium pump).&quot;, antagonism: &quot;&lt;strong&gt;Diuretics &amp; Caffeine:&lt;/strong&gt; Force the kidneys to excrete massive amounts of Potassium.&quot;, sources: [&quot;Bananas&quot;, &quot;Sweet Potatoes&quot;, &quot;Avocado&quot;, &quot;White Beans&quot;], targets: [&quot;Heart&quot;, &quot;Kidneys&quot;, &quot;Nerves&quot;] },
        { name: &quot;Sodium&quot;, color: &quot;#94a3b8&quot;, type: &quot;Minerals&quot;, subType: &quot;Macro Mineral&quot;, dosage: &quot;1500 - 2300 mg&quot;, role: &quot;The primary extracellular electrolyte. Maintains blood volume, cellular osmotic pressure, and nerve impulse conduction.&quot;, deficiency: &quot;Hyponatremia: Confusion, seizures, lethargy, and potentially fatal brain swelling (often from over-hydration).&quot;, synergy: &quot;&lt;strong&gt;Glucose:&lt;/strong&gt; Required in the gut to actively transport glucose and amino acids into the blood.&quot;, antagonism: &quot;&lt;strong&gt;High Intakes:&lt;/strong&gt; Chronic excessive sodium stiffens blood vessels, causing hypertension.&quot;, sources: [&quot;Sea Salt&quot;, &quot;Olives&quot;, &quot;Celery&quot;, &quot;Broth&quot;], targets: [&quot;Blood&quot;, &quot;Nerves&quot;, &quot;Muscles&quot;] },
        { name: &quot;Iron&quot;, color: &quot;#b91c1c&quot;, type: &quot;Minerals&quot;, subType: &quot;Trace Mineral&quot;, dosage: &quot;8 mg (M) / 18 mg (W)&quot;, role: &quot;Forms the absolute core of hemoglobin (red blood cells) and myoglobin (muscles) to transport oxygen systemically.&quot;, deficiency: &quot;Anemia, chronic exhaustion, pale skin, shortness of breath, and brain fog.&quot;, synergy: &quot;&lt;strong&gt;Vitamin C:&lt;/strong&gt; Radically boosts the absorption of non-heme (plant-based) iron.&quot;, antagonism: &quot;&lt;strong&gt;Tannins &amp; Calcium:&lt;/strong&gt; Tea, coffee, and milk physically bind to iron and block absorption.&quot;, sources: [&quot;Red Meat&quot;, &quot;Lentils&quot;, &quot;Spinach&quot;, &quot;Oysters&quot;], targets: [&quot;Blood&quot;, &quot;Lungs&quot;, &quot;Brain&quot;] },
        { name: &quot;Zinc (Immunity &amp; Fertility)&quot;, color: &quot;#8b5cf6&quot;, type: &quot;Minerals&quot;, subType: &quot;Trace Mineral&quot;, dosage: &quot;11 mg (M) / 8 mg (W)&quot;, role: &quot;The master fertility and immune mineral. In men, it dictates testosterone levels and sperm motility. In women, it is required for egg maturation and hormonal balance.&quot;, deficiency: &quot;Male: Low testosterone and poor sperm quality. Female: Irregular cycles and inability for eggs to mature. General: Hair loss and immune collapse.&quot;, synergy: &quot;&lt;strong&gt;Vitamin C &amp; Selenium:&lt;/strong&gt; Protects reproductive cells from oxidative damage while Zinc builds them.&quot;, antagonism: &quot;&lt;strong&gt;Phytic Acid &amp; Copper:&lt;/strong&gt; High intake of grains can block Zinc; high Zinc levels can deplete Copper reserves.&quot;, sources: [&quot;Oysters&quot;, &quot;Pumpkin Seeds&quot;, &quot;Beef&quot;, &quot;Chickpeas&quot;], targets: [&quot;Hormones&quot;, &quot;Sperm Quality&quot;, &quot;Immune&quot;] },
        { name: &quot;Iodine&quot;, color: &quot;#a855f7&quot;, type: &quot;Minerals&quot;, subType: &quot;Trace Mineral&quot;, dosage: &quot;150 mcg&quot;, role: &quot;The fundamental building block for thyroid hormones (T3 and T4), which dictate total body metabolism.&quot;, deficiency: &quot;Goiter (enlarged thyroid), extreme fatigue, weight gain, and severe cognitive delays in fetuses.&quot;, synergy: &quot;&lt;strong&gt;Selenium:&lt;/strong&gt; Required to convert the inactive thyroid hormone (T4) into the active form (T3).&quot;, antagonism: &quot;&lt;strong&gt;Goitrogens (Raw Kale/Soy):&lt;/strong&gt; Interfere with the thyroid gland&#39;s ability to uptake Iodine.&quot;, sources: [&quot;Kelp&quot;, &quot;Cod&quot;, &quot;Eggs&quot;, &quot;Iodized Salt&quot;], targets: [&quot;Thyroid&quot;, &quot;Brain&quot;, &quot;Metabolism&quot;] },
        { name: &quot;Selenium (Thyroid &amp; Repro)&quot;, color: &quot;#64748b&quot;, type: &quot;Minerals&quot;, subType: &quot;Trace Mineral&quot;, dosage: &quot;55 - 70 mcg&quot;, role: &quot;A critical antioxidant for thyroid and sperm health. Required for the creation of &#39;Selenoproteins&#39; that maintain sperm structural integrity.&quot;, deficiency: &quot;Sperm with &#39;broken tails&#39; or misshapen heads that cannot successfully fertilize an egg. Weakened thyroid function.&quot;, synergy: &quot;&lt;strong&gt;Vitamin E:&lt;/strong&gt; Works together to prevent lipid peroxidation in the delicate membranes of reproductive cells.&quot;, antagonism: &quot;&lt;strong&gt;Heavy Metals:&lt;/strong&gt; Mercury can bind to Selenium, making it unavailable for its reproductive roles.&quot;, sources: [&quot;Brazil Nuts&quot;, &quot;Tuna&quot;, &quot;Sunflower Seeds&quot;, &quot;Eggs&quot;], targets: [&quot;Sperm Morphology&quot;, &quot;Thyroid&quot;, &quot;Immune&quot;] },
        { name: &quot;Copper&quot;, color: &quot;#d97706&quot;, type: &quot;Minerals&quot;, subType: &quot;Trace Mineral&quot;, dosage: &quot;900 mcg&quot;, role: &quot;Works with iron to form red blood cells. Maintains blood vessels, nerves, and immune function.&quot;, deficiency: &quot;Anemia, dangerously low body temperature, bone fractures, and loss of skin pigmentation.&quot;, synergy: &quot;&lt;strong&gt;Iron:&lt;/strong&gt; Copper is strictly required to oxidize iron so it can bind to transferrin in the blood.&quot;, antagonism: &quot;&lt;strong&gt;Excess Zinc:&lt;/strong&gt; Zinc upregulates a protein that binds and traps copper in the intestinal wall.&quot;, sources: [&quot;Liver&quot;, &quot;Oysters&quot;, &quot;Spirulina&quot;, &quot;Shiitake Mushrooms&quot;], targets: [&quot;Blood&quot;, &quot;Nerves&quot;, &quot;Bones&quot;] },
        { name: &quot;Chromium&quot;, color: &quot;#14b8a6&quot;, type: &quot;Minerals&quot;, subType: &quot;Trace Mineral&quot;, dosage: &quot;35 mcg&quot;, role: &quot;Enhances the action of insulin, heavily regulating the metabolism and storage of carbohydrates, fats, and proteins.&quot;, deficiency: &quot;Impaired glucose tolerance, elevated blood sugar, and increased insulin requirements.&quot;, synergy: &quot;&lt;strong&gt;Vitamin C &amp; B3:&lt;/strong&gt; Niacin and Vitamin C significantly enhance the absorption of chromium.&quot;, antagonism: &quot;&lt;strong&gt;Refined Carbs:&lt;/strong&gt; Diets high in simple sugars drastically increase chromium excretion in urine.&quot;, sources: [&quot;Broccoli&quot;, &quot;Grape Juice&quot;, &quot;Meat&quot;, &quot;Whole Wheat&quot;], targets: [&quot;Pancreas&quot;, &quot;Metabolism&quot;] },
        { name: &quot;Manganese&quot;, color: &quot;#84cc16&quot;, type: &quot;Minerals&quot;, subType: &quot;Trace Mineral&quot;, dosage: &quot;2.3 mg (M) / 1.8 mg (W)&quot;, role: &quot;A coenzyme for the antioxidant SOD, vital for bone cartilage formation, blood clotting, and amino acid metabolism.&quot;, deficiency: &quot;Impaired growth, skeletal abnormalities, and altered lipid/carbohydrate metabolism.&quot;, synergy: &quot;&lt;strong&gt;Glucosamine:&lt;/strong&gt; Works synergistically to repair cartilage and maintain joint health.&quot;, antagonism: &quot;&lt;strong&gt;High Iron &amp; Calcium:&lt;/strong&gt; Excessive intake of iron or calcium inhibits manganese absorption in the gut.&quot;, sources: [&quot;Pecans&quot;, &quot;Oats&quot;, &quot;Pineapple&quot;, &quot;Brown Rice&quot;], targets: [&quot;Bones&quot;, &quot;Joints&quot;, &quot;Metabolism&quot;] },
        { name: &quot;Molybdenum&quot;, color: &quot;#6b7280&quot;, type: &quot;Minerals&quot;, subType: &quot;Trace Mineral&quot;, dosage: &quot;45 mcg&quot;, role: &quot;An essential cofactor for enzymes that break down sulfites, toxic compounds, and purines in the liver.&quot;, deficiency: &quot;Extremely rare. Sulfite toxicity (rapid heartbeat, shortness of breath, headache after eating preservatives).&quot;, synergy: &quot;&lt;strong&gt;Riboflavin (B2):&lt;/strong&gt; Works alongside B2 in critical enzyme functions.&quot;, antagonism: &quot;&lt;strong&gt;High Sulfur/Copper:&lt;/strong&gt; Excessive dietary sulfur or copper can reduce molybdenum absorption.&quot;, sources: [&quot;Lentils&quot;, &quot;Black-eyed Peas&quot;, &quot;Lima Beans&quot;, &quot;Liver&quot;], targets: [&quot;Liver&quot;, &quot;Detoxification&quot;] },

        // ================= ESSENTIAL COMPOUNDS =================
        { name: &quot;Omega-3 Fatty Acids (EPA/DHA)&quot;, color: &quot;#0ea5e9&quot;, type: &quot;Compounds&quot;, subType: &quot;Fatty Acids&quot;, dosage: &quot;250 - 500 mg&quot;, role: &quot;Forms the structural cell membranes in the brain and eyes. Actively reduces blood triglycerides and arterial inflammation.&quot;, deficiency: &quot;Dry skin, poor memory, mood swings, joint pain, and increased cardiovascular risks.&quot;, synergy: &quot;&lt;strong&gt;Vitamin E:&lt;/strong&gt; Acts as an antioxidant, preventing the delicate Omega-3 oils from going rancid (oxidizing) inside the body.&quot;, antagonism: &quot;&lt;strong&gt;High Omega-6:&lt;/strong&gt; Consuming too much Omega-6 (seed oils/fried foods) negates the anti-inflammatory benefits.&quot;, sources: [&quot;Salmon&quot;, &quot;Walnuts&quot;, &quot;Flaxseed&quot;, &quot;Chia&quot;], targets: [&quot;Brain&quot;, &quot;Eyes&quot;, &quot;Heart&quot;] },
        { name: &quot;CoQ10 (Ubiquinone)&quot;, emoji: &quot;🔋&quot;, type: &quot;Compounds&quot;, subType: &quot;Antioxidants&quot;, dosage: &quot;100 - 200 mg&quot;, role: &quot;The spark plug for the mitochondria. Provides the immense energy required for heart function, egg maturation, and sperm motility.&quot;, deficiency: &quot;Muscle aches, severe fatigue, poor egg quality in older maternal ages, and &#39;sluggish&#39; sperm.&quot;, synergy: &quot;&lt;strong&gt;Omega-3 Fats:&lt;/strong&gt; Being fat-soluble, CoQ10 requires healthy dietary fats for maximum biological uptake.&quot;, antagonism: &quot;&lt;strong&gt;Statins:&lt;/strong&gt; Cholesterol-lowering drugs significantly block the body&#39;s natural CoQ10 production pathway.&quot;, sources: [&quot;Organ Meats&quot;, &quot;Fatty Fish&quot;, &quot;Peanuts&quot;, &quot;Spinach&quot;], targets: [&quot;Heart&quot;, &quot;Mitochondria&quot;, &quot;Reproductive&quot;] },

        // ================= HUMAN ORGANS &amp; ANATOMY =================
        { name: &quot;Brain&quot;, emoji: &quot;🧠&quot;, type: &quot;Organs&quot;, subType: &quot;Nervous System&quot;, dosage: &quot;20% of Body Energy&quot;, role: &quot;The command center of the central nervous system. Processes sensory data, stores memory, and regulates systemic homeostasis.&quot;, deficiency: &quot;Biological stress manifests as severe brain fog, memory loss, anxiety, depression, and neurodegeneration.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; DHA (Omega-3), B12, Magnesium, and uninterrupted deep REM sleep.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Chronic stress (cortisol), refined sugars, trans fats, and sleep deprivation.&quot;, sources: [&quot;Mental Rest&quot;, &quot;Hydration&quot;, &quot;Healthy Fats&quot;, &quot;Learning&quot;], targets: [&quot;Central Nervous System&quot;] },
        { name: &quot;Peripheral Nerves &amp; Reflexes&quot;, emoji: &quot;⚡&quot;, type: &quot;Organs&quot;, subType: &quot;Nervous System&quot;, dosage: &quot;Systemic Network&quot;, role: &quot;The biological wiring that transmits instantaneous electrical motor commands from the brain to the muscles and organs.&quot;, deficiency: &quot;Slow reaction times, involuntary twitching, numbness, neuropathy (tingling), and poor physical coordination.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Magnesium (nerve relaxation), B12 (protects myelin sheath), and Potassium.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Alcohol neurotoxicity, untreated diabetes (high blood sugar damages nerves), and heavy metals.&quot;, sources: [&quot;Electrolytes&quot;, &quot;B-Vitamins&quot;, &quot;Stretching&quot;, &quot;Sleep&quot;], targets: [&quot;Motor Function&quot;, &quot;Sensory&quot;] },
        { name: &quot;Heart&quot;, emoji: &quot;🫀&quot;, type: &quot;Organs&quot;, subType: &quot;Circulatory System&quot;, dosage: &quot;100,000 Beats/Day&quot;, role: &quot;A muscular organ that pumps oxygenated blood and nutrients to the entire body via the circulatory system.&quot;, deficiency: &quot;Stress manifests as high blood pressure, arrhythmias, angina, and systemic fatigue due to poor oxygen delivery.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; CoQ10 (for cellular energy), Potassium, Magnesium, and consistent aerobic exercise.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; High blood triglycerides, smoking, extreme stress, and severe sodium imbalances.&quot;, sources: [&quot;Cardio&quot;, &quot;Hydration&quot;, &quot;Leafy Greens&quot;, &quot;Omega-3s&quot;], targets: [&quot;Cardiovascular&quot;] },
        { name: &quot;Hemoglobin &amp; Blood&quot;, emoji: &quot;🩸&quot;, type: &quot;Organs&quot;, subType: &quot;Circulatory System&quot;, dosage: &quot;5 Liters (Average)&quot;, role: &quot;The systemic transport fluid. Hemoglobin binds oxygen in the lungs and delivers it to every cell in the body.&quot;, deficiency: &quot;Anemia, chronic fatigue, pale nail beds, breathlessness on exertion, and poor extremity circulation.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Iron, Vitamin B12, Folate (B9), and Copper (for iron oxidation).&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Blood loss, iron-blocking tannins (tea/coffee with meals), and chronic systemic inflammation.&quot;, sources: [&quot;Red Meat&quot;, &quot;Spinach&quot;, &quot;Liver&quot;, &quot;Beets&quot;], targets: [&quot;Oxygen Transport&quot;, &quot;Immune&quot;] },
        { name: &quot;Lungs&quot;, emoji: &quot;🫁&quot;, type: &quot;Organs&quot;, subType: &quot;Respiratory System&quot;, dosage: &quot;22,000 Breaths/Day&quot;, role: &quot;Facilitates gas exchange. Extracts oxygen from the atmosphere to oxygenate the blood, and expels carbon dioxide waste.&quot;, deficiency: &quot;Stress causes severe shortness of breath, asthma exacerbation, low stamina, and frequent respiratory infections.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Antioxidants (Vitamin C, E) to protect lung tissue, Omega-3s to reduce airway inflammation.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Smoking, severe air pollution, and sedentary lifestyles that weaken diaphragm strength.&quot;, sources: [&quot;Deep Breathing&quot;, &quot;Clean Air&quot;, &quot;Cardio&quot;, &quot;Citrus&quot;], targets: [&quot;Oxygenation&quot;, &quot;Detox&quot;] },
        { name: &quot;Throat &amp; Vocal Cords&quot;, emoji: &quot;🗣️&quot;, type: &quot;Organs&quot;, subType: &quot;Respiratory System&quot;, dosage: &quot;Mucous Membrane&quot;, role: &quot;Serves as the gateway for air and food. Houses the vocal cords for phonation and tonsils for first-line immune defense.&quot;, deficiency: &quot;Chronic sore throat, hoarseness, laryngitis, and susceptibility to strep/tonsillitis.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Vitamin C, Zinc, raw honey, and vocal rest to reduce structural inflammation.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Smoking, acid reflux (GERD backing up into the throat), chronic dehydration, and shouting.&quot;, sources: [&quot;Warm Teas&quot;, &quot;Hydration&quot;, &quot;Zinc Lozenges&quot;, &quot;Honey&quot;], targets: [&quot;Speech&quot;, &quot;Immune&quot;, &quot;Swallowing&quot;] },
        { name: &quot;Liver&quot;, emoji: &quot;🤎&quot;, type: &quot;Organs&quot;, subType: &quot;Digestive System&quot;, dosage: &quot;500+ Functions&quot;, role: &quot;The ultimate biochemical factory. Detoxifies blood, metabolizes drugs, synthesizes proteins, and produces bile for fat digestion.&quot;, deficiency: &quot;Overload results in Non-Alcoholic Fatty Liver Disease (NAFLD), jaundice, chronic fatigue, and toxin buildup.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Choline, Milk Thistle (Silymarin), Cruciferous vegetables, and fasting.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; High Fructose Corn Syrup, excessive alcohol, and Acetaminophen (Paracetamol) toxicity.&quot;, sources: [&quot;Clean Diet&quot;, &quot;Water&quot;, &quot;Fasting&quot;, &quot;Broccoli&quot;], targets: [&quot;Metabolism&quot;, &quot;Detox&quot;] },
        { name: &quot;Gallbladder&quot;, emoji: &quot;🍐&quot;, type: &quot;Organs&quot;, subType: &quot;Digestive System&quot;, dosage: &quot;Bile Storage&quot;, role: &quot;Stores and concentrates bile produced by the liver. Squirts it into the intestine to emulsify and absorb fat-soluble vitamins (A, D, E, K).&quot;, deficiency: &quot;Gallstones, biliary colic, and an inability to absorb essential fats, resulting in systemic fat-soluble vitamin deficiency.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Choline and Taurine help keep bile thin and flowing effectively.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Rapid crash dieting and ultra-low-fat diets cause bile to stagnate and turn into stones.&quot;, sources: [&quot;Beets&quot;, &quot;Artichokes&quot;, &quot;Bitter Greens&quot;, &quot;Apple Cider Vinegar&quot;], targets: [&quot;Fat Absorption&quot;, &quot;Digestion&quot;] },
        { name: &quot;Stomach&quot;, emoji: &quot;🍲&quot;, type: &quot;Organs&quot;, subType: &quot;Digestive System&quot;, dosage: &quot;pH 1.5 - 3.5&quot;, role: &quot;Secretes powerful hydrochloric acid and digestive enzymes to churn and chemically break down heavy proteins and destroy pathogens.&quot;, deficiency: &quot;Low acid (hypochlorhydria) causes severe acid reflux, indigestion, bloating, and total malabsorption of B12/Iron.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Zinc (required to produce stomach acid), Ginger, and mindful, slow chewing.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Chronic stress shuts down acid production. Drinking massive amounts of water during meals dilutes enzymes.&quot;, sources: [&quot;Mindful Eating&quot;, &quot;Ginger&quot;, &quot;Zinc&quot;, &quot;Fermented Foods&quot;], targets: [&quot;Protein Breakdown&quot;, &quot;Immune&quot;] },
        { name: &quot;Small Intestine&quot;, emoji: &quot;🍝&quot;, type: &quot;Organs&quot;, subType: &quot;Digestive System&quot;, dosage: &quot;20 Feet Long&quot;, role: &quot;The primary site of systemic absorption. Villi extract vitamins, minerals, and macronutrients directly into the bloodstream.&quot;, deficiency: &quot;Damage causes Leaky Gut Syndrome, severe bloating, diarrhea, cramps, and systemic nutrient deficiencies.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; L-Glutamine (repairs the intestinal wall), Vitamin D, and digestive enzymes.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; NSAIDs (Ibuprofen) damage the lining. Gluten (in sensitive individuals) destroys the absorptive villi.&quot;, sources: [&quot;Bone Broth&quot;, &quot;Glutamine&quot;, &quot;Enzymes&quot;, &quot;Kefir&quot;], targets: [&quot;Nutrient Absorption&quot;] },
        { name: &quot;Large Intestine (Colon)&quot;, emoji: &quot;💩&quot;, type: &quot;Organs&quot;, subType: &quot;Digestive System&quot;, dosage: &quot;Waste Compactor&quot;, role: &quot;Reabsorbs water and electrolytes, and compacts waste into stool for safe biological elimination.&quot;, deficiency: &quot;Imbalance causes chronic constipation, irritable bowel syndrome, severe bloating, and toxic reabsorption.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Soluble/Insoluble Fiber, and Magnesium (draws water into the bowel to soften stool).&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Low fiber diets stagnate waste, and chronic dehydration leads to severe impaction.&quot;, sources: [&quot;Fiber&quot;, &quot;Water&quot;, &quot;Legumes&quot;, &quot;Magnesium&quot;], targets: [&quot;Waste Removal&quot;, &quot;Hydration&quot;] },
        { name: &quot;Gut Microbiome&quot;, emoji: &quot;🦠&quot;, type: &quot;Organs&quot;, subType: &quot;Digestive System&quot;, dosage: &quot;39 Trillion Microbes&quot;, role: &quot;Functions as an acquired organ. Synthesizes Vitamin K and B-vitamins, produces 95% of the body&#39;s serotonin, and trains the immune system.&quot;, deficiency: &quot;Dysbiosis. Causes profound systemic inflammation, severe anxiety/depression, IBS, and autoimmune triggers.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Prebiotic fibers (Inulin, Pectin) feed the bacteria; diverse plant foods expand microbial variety.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Broad-spectrum antibiotics obliterate diversity. Emulsifiers and artificial sweeteners degrade the mucus lining.&quot;, sources: [&quot;Kefir&quot;, &quot;Kimchi&quot;, &quot;Garlic&quot;, &quot;Leeks&quot;], targets: [&quot;Immunity&quot;, &quot;Brain&quot;, &quot;Digestion&quot;] },
        { name: &quot;Teeth &amp; Gums&quot;, emoji: &quot;🦷&quot;, type: &quot;Organs&quot;, subType: &quot;Digestive System&quot;, dosage: &quot;32 Adult Teeth&quot;, role: &quot;Initiates mechanical digestion. Gums provide the protective mucosal seal around the tooth root to prevent systemic infection.&quot;, deficiency: &quot;Bleeding gums (scurvy/Vit C deficiency), enamel erosion, tooth decay, and periodontitis.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Vitamin C (for gum collagen integrity), Calcium, D3, and K2 (for enamel remineralization).&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Refined sugars, highly acidic beverages (soda), and mouth breathing (dries out protective saliva).&quot;, sources: [&quot;Dairy&quot;, &quot;Citrus&quot;, &quot;Crunchy Veg&quot;, &quot;Green Tea&quot;], targets: [&quot;Mechanical Digestion&quot;, &quot;Oral Health&quot;] },
        { name: &quot;Kidneys&quot;, emoji: &quot;🫘&quot;, type: &quot;Organs&quot;, subType: &quot;Excretory System&quot;, dosage: &quot;Filters 150Q Blood/Day&quot;, role: &quot;Filters waste metabolites and excess water from the blood to create urine. Strictly regulates total body electrolytes and blood pressure.&quot;, deficiency: &quot;Stress results in peripheral edema (swelling), chronic lethargy, kidney stones, and hypertension.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Optimal hydration, balanced Potassium/Sodium ratios, and Vitamin B6 (prevents oxalate stones).&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Chronic dehydration, extremely high protein diets without water, and chronic high blood pressure.&quot;, sources: [&quot;Water&quot;, &quot;Electrolytes&quot;, &quot;Cranberries&quot;, &quot;Citrus&quot;], targets: [&quot;Fluid Balance&quot;, &quot;Toxin Removal&quot;] },
        { name: &quot;Thyroid&quot;, emoji: &quot;🦋&quot;, type: &quot;Organs&quot;, subType: &quot;Endocrine System&quot;, dosage: &quot;Master Regulator&quot;, role: &quot;A butterfly-shaped gland that produces hormones (T3/T4) dictating the basal metabolic rate, heart rate, and body temperature.&quot;, deficiency: &quot;Hypothyroidism causes extreme fatigue, rapid weight gain, hair loss, feeling constantly cold, and depression.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Iodine (the building block), Selenium (for conversion), and Tyrosine.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Goitrogens (raw soy/cruciferous veg in massive amounts), fluoride, and chronic systemic stress.&quot;, sources: [&quot;Seaweed&quot;, &quot;Brazil Nuts&quot;, &quot;Rest&quot;, &quot;Eggs&quot;], targets: [&quot;Metabolism&quot;, &quot;Energy&quot;] },
        { name: &quot;Pancreas&quot;, emoji: &quot;🩸&quot;, type: &quot;Organs&quot;, subType: &quot;Endocrine System&quot;, dosage: &quot;Dual Function&quot;, role: &quot;Endocrine function: Secretes insulin to lower blood sugar. Exocrine function: Secretes digestive enzymes to break down carbs/fats/proteins.&quot;, deficiency: &quot;Dysfunction results in Type 2 Diabetes, massive blood sugar spikes, extreme post-meal fatigue, and maldigestion.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Chromium (enhances insulin), Alpha-Lipoic Acid, and balanced macronutrient meals.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Liquid sugars, severe obesity, and chronic alcohol abuse (causes pancreatitis).&quot;, sources: [&quot;Low GI Foods&quot;, &quot;Cinnamon&quot;, &quot;Fasting&quot;, &quot;Fiber&quot;], targets: [&quot;Blood Sugar&quot;, &quot;Digestion&quot;] },
        { name: &quot;Ovaries &amp; Uterine Lining&quot;, emoji: &quot;🥚&quot;, type: &quot;Organs&quot;, subType: &quot;Reproductive System&quot;, dosage: &quot;Cyclical Hormones&quot;, role: &quot;The female reproductive centers. Responsible for monthly egg release (ovulation) and maintaining a nutrient-rich lining for embryo implantation.&quot;, deficiency: &quot;Irregular ovulation (PCOS), thin uterine lining, and hormonal &#39;Phase Defects&#39; (low Progesterone).&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Inositol &amp; Vitamin D help regulate insulin and support the follicle-stimulating hormone (FSH).&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Endocrine Disruptors like plastics (BPA/Phthalates) mimic estrogen and disrupt the ovulation signal.&quot;, sources: [&quot;Healthy Fats&quot;, &quot;Leafy Greens&quot;, &quot;Rest&quot;, &quot;Vitamin D&quot;], targets: [&quot;Ovulation&quot;, &quot;Implantation&quot;, &quot;Hormones&quot;] },
        { name: &quot;Testes (Sperm Production)&quot;, emoji: &quot;🧬&quot;, type: &quot;Organs&quot;, subType: &quot;Reproductive System&quot;, dosage: &quot;70-90 Day Cycle&quot;, role: &quot;The primary male reproductive organ. Produces testosterone and generates millions of new sperm cells daily in a 3-month cycle.&quot;, deficiency: &quot;Low sperm count (Oligospermia), poor morphology (shape), and reduced libido.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Selenium &amp; L-Carnitine protect sperm from heat stress and provide energy for swimming.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Excess heat (laptops/saunas) and oxidative stress (smoking) kill developing sperm cells.&quot;, sources: [&quot;Brazil Nuts&quot;, &quot;Zinc&quot;, &quot;Cold Exposure&quot;, &quot;Antioxidants&quot;], targets: [&quot;Sperm Production&quot;, &quot;Testosterone&quot;] },
        { name: &quot;Immune System&quot;, emoji: &quot;🛡️&quot;, type: &quot;Organs&quot;, subType: &quot;Immune System&quot;, dosage: &quot;System-Wide&quot;, role: &quot;A complex network of white blood cells, antibodies, and organs that relentlessly defend the body against viruses, bacteria, and cancer cells.&quot;, deficiency: &quot;Collapse results in constant sickness, slow wound healing, autoimmune disorders, and severe susceptibility to infections.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Vitamin C, Vitamin D3, Zinc, and adequate, high-quality sleep.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Sleep deprivation, chronic cortisol elevation (stress), and severe nutrient deficiencies.&quot;, sources: [&quot;Sleep&quot;, &quot;Nutrition&quot;, &quot;Sunlight&quot;, &quot;Garlic&quot;], targets: [&quot;Pathogen Defense&quot;] },
        { name: &quot;Lymphatic System&quot;, emoji: &quot;🌊&quot;, type: &quot;Organs&quot;, subType: &quot;Immune System&quot;, dosage: &quot;Body-Wide Network&quot;, role: &quot;The body&#39;s biological &#39;sewage system&#39;. Maintains fluid balance, absorbs dietary fats, and transports immune cells (lymphocytes).&quot;, deficiency: &quot;Lymphedema (severe swelling), chronic infections, and toxic cellular buildup in tissues.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Hydration, deep diaphragmatic breathing, and physical movement (lymph has no pump, it requires muscle contraction).&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Sedentary lifestyle, tight clothing, and chronic dehydration stagnate lymph flow.&quot;, sources: [&quot;Rebounding (Trampoline)&quot;, &quot;Dry Brushing&quot;, &quot;Massage&quot;, &quot;Water&quot;], targets: [&quot;Detox&quot;, &quot;Immunity&quot;] },
        { name: &quot;Skin&quot;, emoji: &quot;✋&quot;, type: &quot;Organs&quot;, subType: &quot;Integumentary System&quot;, dosage: &quot;Largest Organ&quot;, role: &quot;The body&#39;s primary physical barrier against pathogens. Regulates temperature, prevents water loss, and synthesizes Vitamin D.&quot;, deficiency: &quot;Compromised skin exhibits chronic dryness, eczema, acne, premature aging/wrinkling, and slow healing.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Collagen, Vitamin C, Omega-3s, and adequate hydration.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; UV radiation without protection, smoking (destroys collagen), and high-sugar diets (glycation).&quot;, sources: [&quot;Hydration&quot;, &quot;Healthy Fats&quot;, &quot;Antioxidants&quot;, &quot;Zinc&quot;], targets: [&quot;Barrier Defense&quot;, &quot;Temperature&quot;] },
        { name: &quot;Hair &amp; Follicles&quot;, emoji: &quot;💇&quot;, type: &quot;Organs&quot;, subType: &quot;Integumentary System&quot;, dosage: &quot;100,000+ Follicles&quot;, role: &quot;Protects the scalp, regulates temperature, and serves as an external biological indicator of systemic nutritional health.&quot;, deficiency: &quot;Hair thinning, premature graying, alopecia (hair loss), and extremely brittle texture.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Biotin (B7), Zinc, Iron, and Collagen protein.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Severe stress (telogen effluvium), crash dieting, and thyroid dysfunction.&quot;, sources: [&quot;Eggs&quot;, &quot;Nuts&quot;, &quot;Salmon&quot;, &quot;Avocado&quot;], targets: [&quot;Scalp Protection&quot;, &quot;Insulation&quot;] },
        { name: &quot;Bones&quot;, emoji: &quot;🦴&quot;, type: &quot;Organs&quot;, subType: &quot;Skeletal System&quot;, dosage: &quot;206 Bones&quot;, role: &quot;Provides mechanical support, protects vital organs, houses bone marrow (blood cell production), and stores calcium/phosphorus.&quot;, deficiency: &quot;Deterioration causes osteopenia, osteoporosis, frequent fractures, and structural pain.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; The Trinity: Calcium (structure), Vitamin D3 (absorption), and Vitamin K2 (placement). Plus weight-lifting.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Sedentary lifestyle, zero-gravity environments, and chronic cola consumption (phosphoric acid drains calcium).&quot;, sources: [&quot;Resistance Training&quot;, &quot;Dairy&quot;, &quot;Sunlight&quot;, &quot;Sardines&quot;], targets: [&quot;Structure&quot;, &quot;Blood Production&quot;] },
        { name: &quot;Muscles&quot;, emoji: &quot;💪&quot;, type: &quot;Organs&quot;, subType: &quot;Skeletal System&quot;, dosage: &quot;600+ Muscles&quot;, role: &quot;Supports athletic movement, rapid tissue repair, posture maintenance, and overall physical strength and heat generation.&quot;, deficiency: &quot;Muscle weakness, spasms, nighttime cramps, atrophy, and extended recovery fatigue.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Protein (Amino Acids), Magnesium, Potassium, and Vitamin D.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Immobility (atrophy), severe dehydration, and extreme overtraining without rest.&quot;, sources: [&quot;Eggs&quot;, &quot;Chicken&quot;, &quot;Bananas&quot;, &quot;Pumpkin Seeds&quot;], targets: [&quot;Movement&quot;, &quot;Metabolism&quot;] },
        { name: &quot;Eyes&quot;, emoji: &quot;👁️&quot;, type: &quot;Organs&quot;, subType: &quot;Sensory System&quot;, dosage: &quot;Visual Cortex Input&quot;, role: &quot;Captures light and converts it into electro-chemical impulses in neurons. Supports sharp vision and protects against UV/blue light.&quot;, deficiency: &quot;Night blindness, chronic eye dryness, macular degeneration, and severe visual fatigue.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Vitamin A (Retinol), Lutein, Zeaxanthin, and Omega-3 fatty acids.&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Prolonged screen time without blinking, UV exposure, and diabetes (diabetic retinopathy).&quot;, sources: [&quot;Carrots&quot;, &quot;Spinach&quot;, &quot;Egg yolks&quot;, &quot;Salmon&quot;], targets: [&quot;Vision&quot;, &quot;Circadian Rhythm&quot;] },
        { name: &quot;Ears&quot;, emoji: &quot;👂&quot;, type: &quot;Organs&quot;, subType: &quot;Sensory System&quot;, dosage: &quot;Auditory Processing&quot;, role: &quot;Maintains the delicate nerve pathways and inner ear hair cells responsible for hearing and spatial balance (vestibular system).&quot;, deficiency: &quot;Gradual hearing loss, tinnitus (constant ringing in the ears), and dizzy spells/vertigo.&quot;, synergy: &quot;&lt;strong&gt;Optimizers:&lt;/strong&gt; Zinc, Magnesium, Vitamin B12, and Folate (preserves nerve health).&quot;, antagonism: &quot;&lt;strong&gt;Stressors:&lt;/strong&gt; Chronic exposure to loud noise (decibel damage), ear infections, and poor circulation.&quot;, sources: [&quot;Meat&quot;, &quot;Nuts&quot;, &quot;Leafy greens&quot;, &quot;Fish&quot;], targets: [&quot;Hearing&quot;, &quot;Balance&quot;] }
    ];

    // --- RENDER &amp; FILTER LOGIC ---
    let currentMainFilter = &#39;All&#39;;
    let currentSubFilter = &#39;All&#39;;
    let searchQuery = &#39;&#39;;
    let userFavorites = JSON.parse(localStorage.getItem(&#39;otechy_bio_favs_v7&#39;)) || [];

    const subFiltersMap = {
        &#39;Vitamins&#39;: [&#39;All&#39;, &#39;Water-Soluble&#39;, &#39;Fat-Soluble&#39;],
        &#39;Minerals&#39;: [&#39;All&#39;, &#39;Macro Mineral&#39;, &#39;Trace Mineral&#39;],
        &#39;Compounds&#39;: [&#39;All&#39;, &#39;Fatty Acids&#39;, &#39;Antioxidants&#39;],
        &#39;Organs&#39;: [&#39;All&#39;, &#39;Nervous System&#39;, &#39;Circulatory System&#39;, &#39;Respiratory System&#39;, &#39;Digestive System&#39;, &#39;Endocrine System&#39;, &#39;Skeletal System&#39;, &#39;Integumentary System&#39;, &#39;Reproductive System&#39;, &#39;Immune System&#39;, &#39;Sensory System&#39;, &#39;Excretory System&#39;]
    };

    function toggleFavorite(itemName) {
        if (userFavorites.includes(itemName)) {
            userFavorites = userFavorites.filter(n =&gt; n !== itemName);
        } else {
            userFavorites.push(itemName);
        }
        localStorage.setItem(&#39;otechy_bio_favs_v7&#39;, JSON.stringify(userFavorites));
        renderGrid(); 
    }

    function setMainFilter(filter) {
        currentMainFilter = filter;
        currentSubFilter = &#39;All&#39;;
        
        document.getElementById(&#39;mainFilters&#39;).querySelectorAll(&#39;.filter-btn&#39;).forEach(btn =&gt; btn.classList.remove(&#39;active&#39;));
        event.target.classList.add(&#39;active&#39;);

        const subContainer = document.getElementById(&#39;subFilters&#39;);
        subContainer.innerHTML = &#39;&#39;;
        if (subFiltersMap[filter]) {
            subFiltersMap[filter].forEach(sub =&gt; {
                const btn = document.createElement(&#39;button&#39;);
                btn.className = sub === &#39;All&#39; ? &#39;sub-btn active&#39; : &#39;sub-btn&#39;;
                btn.innerText = sub;
                btn.onclick = (e) =&gt; setSubFilter(sub, e.target);
                subContainer.appendChild(btn);
            });
        }
        renderGrid();
    }

    function setSubFilter(subFilter, btnElement) {
        currentSubFilter = subFilter;
        document.getElementById(&#39;subFilters&#39;).querySelectorAll(&#39;.sub-btn&#39;).forEach(btn =&gt; btn.classList.remove(&#39;active&#39;));
        btnElement.classList.add(&#39;active&#39;);
        renderGrid();
    }

    function handleSearch() {
        searchQuery = document.getElementById(&#39;searchInput&#39;).value.toLowerCase();
        renderGrid();
    }

    function renderGrid() {
        const grid = document.getElementById(&#39;dataGrid&#39;);
        grid.innerHTML = &#39;&#39;;

        let filtered = bioDB;
        
        if (currentMainFilter === &#39;Favorites&#39;) {
            filtered = filtered.filter(c =&gt; userFavorites.includes(c.name));
        } else if (currentMainFilter !== &#39;All&#39;) {
            filtered = filtered.filter(c =&gt; c.type === currentMainFilter);
        }

        if (currentSubFilter !== &#39;All&#39;) {
            filtered = filtered.filter(c =&gt; c.subType === currentSubFilter);
        }

        if (searchQuery) {
            filtered = filtered.filter(c =&gt; {
                const searchStr = searchQuery.toLowerCase();
                return c.name.toLowerCase().includes(searchStr) || 
                       c.role.toLowerCase().includes(searchStr) ||
                       c.deficiency.toLowerCase().includes(searchStr) ||
                       (c.targets &amp;&amp; c.targets.some(t =&gt; t.toLowerCase().includes(searchStr))) ||
                       (c.sources &amp;&amp; c.sources.some(s =&gt; s.toLowerCase().includes(searchStr)));
            });
        }

        // Update Result Counter
        document.getElementById(&#39;countNum&#39;).innerText = filtered.length;

        if (filtered.length === 0) {
            grid.innerHTML = `&lt;div style=&quot;text-align:center; grid-column: 1/-1; color: var(--accent); padding: 40px; font-weight: 600;&quot;&gt;No biological data found matching your exact criteria.&lt;/div&gt;`;
            return;
        }

        filtered.forEach(c =&gt; {
            const isFav = userFavorites.includes(c.name);
            const heartClass = isFav ? &quot;fav-icon is-fav&quot; : &quot;fav-icon&quot;;
            const heartIcon = isFav ? &quot;❤️&quot; : &quot;🤍&quot;;

            let badgesHtml = &#39;&#39;;
            let isOrgan = c.type === &#39;Organs&#39;;

            if(isOrgan) {
                badgesHtml += `&lt;span class=&quot;badge-base badge-organ&quot;&gt;🧬 ${c.subType}&lt;/span&gt;`;
            } else if (c.type === &#39;Compounds&#39;) {
                badgesHtml += `&lt;span class=&quot;badge-base badge-compound&quot;&gt;🧪 ${c.subType}&lt;/span&gt;`;
            } else {
                let impClass = c.importance === &#39;Crucial&#39; ? &#39;badge-crucial&#39; : &#39;badge-daily&#39;;
                let subClass = c.subType.includes(&#39;Macro&#39;) ? &#39;badge-macro&#39; : (c.subType.includes(&#39;Trace&#39;) ? &#39;badge-trace&#39; : &#39;badge-base&#39;);
                badgesHtml += `&lt;span class=&quot;badge-base ${subClass}&quot;&gt;🏷️ ${c.subType}&lt;/span&gt;`;
                if(c.importance) badgesHtml += `&lt;span class=&quot;badge-base ${impClass}&quot;&gt;⏱️ ${c.importance}&lt;/span&gt;`;
            }

            const headerIcon = c.emoji ? `&lt;span class=&quot;organ-emoji&quot;&gt;${c.emoji}&lt;/span&gt;` : `&lt;div class=&quot;bio-color-tag&quot; style=&quot;background: ${c.color}&quot;&gt;&lt;/div&gt;`;
            
            const dosageTitle = isOrgan ? &quot;Metabolic Load / Fact&quot; : &quot;Clinical RDA (Adults)&quot;;
            const dosageIcon = isOrgan ? &quot;⚡&quot; : &quot;💊&quot;;

            const targetTags = c.targets.map(t =&gt; `&lt;span class=&quot;o-tag&quot;&gt;🎯 ${t}&lt;/span&gt;`).join(&#39;&#39;);
            const sourceTags = c.sources.map(s =&gt; `&lt;span class=&quot;c-tag&quot;&gt;🌿 ${s}&lt;/span&gt;`).join(&#39;&#39;);

            const card = document.createElement(&#39;div&#39;);
            card.className = &#39;bio-card&#39;;
            card.innerHTML = `
                &lt;div class=&quot;card-header&quot;&gt;
                    &lt;h3 class=&quot;bio-name&quot;&gt;
                        ${headerIcon}
                        ${c.name}
                    &lt;/h3&gt;
                    &lt;div class=&quot;${heartClass}&quot; onclick=&quot;toggleFavorite(&#39;${c.name}&#39;)&quot; title=&quot;Track this item&quot;&gt;${heartIcon}&lt;/div&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;expert-badges&quot;&gt;
                    ${badgesHtml}
                    ${targetTags}
                &lt;/div&gt;

                &lt;div class=&quot;dosage-box&quot;&gt;
                    &lt;strong&gt;${dosageIcon} ${dosageTitle}&lt;/strong&gt;
                    &lt;span&gt;${c.dosage}&lt;/span&gt;
                &lt;/div&gt;

                &lt;div class=&quot;info-group&quot;&gt;
                    &lt;span class=&quot;info-lbl&quot;&gt;🔬 Biological Role&lt;/span&gt;
                    &lt;span class=&quot;info-val&quot;&gt;${c.role}&lt;/span&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;info-group alert-group&quot;&gt;
                    &lt;span class=&quot;info-lbl&quot;&gt;⚠️ Deficiency / Stress Symptoms&lt;/span&gt;
                    &lt;span class=&quot;info-val&quot;&gt;${c.deficiency}&lt;/span&gt;
                &lt;/div&gt;

                &lt;div class=&quot;pairings-box&quot;&gt;
                    &lt;div&gt;&lt;span class=&quot;syn-mix&quot;&gt;🟢 Synergy (Mix / Optimize):&lt;/span&gt; &lt;br&gt;${c.synergy}&lt;/div&gt;
                    &lt;div style=&quot;margin-top: 10px;&quot;&gt;&lt;span class=&quot;syn-avoid&quot;&gt;🔴 Antagonism (Avoid / Stress):&lt;/span&gt; &lt;br&gt;${c.antagonism}&lt;/div&gt;
                &lt;/div&gt;

                &lt;div class=&quot;cleanse-tags&quot;&gt;
                    &lt;div class=&quot;section-title&quot;&gt;Natural Sources / Actions&lt;/div&gt;
                    ${sourceTags}
                &lt;/div&gt;
            `;
            grid.appendChild(card);
        });
    }

    // Init
    renderGrid();
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/1405387841879515067'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/1405387841879515067'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/04/ultimate-health-database-vitamins.html' title='Ultimate Health Database | Vitamins, Minerals &amp; Organs'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-7209136864557440817</id><published>2026-03-30T08:44:00.000-07:00</published><updated>2026-03-30T08:44:39.073-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hardening"/><category scheme="http://www.blogger.com/atom/ns#" term="Powershell"/><category scheme="http://www.blogger.com/atom/ns#" term="SSL/TLS"/><title type='text'>SSL and TLS Hardening Script Generator</title><content type='html'>&lt;title&gt;SSL &amp; TLS Hardening Script Generator | PowerShell Script Builder&lt;/title&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
&lt;meta name=&quot;description&quot; content=&quot;Visually generate PowerShell scripts to harden SSL and TLS protocols on Windows Servers. Includes auto-backups, OS detection, and .NET Strong Crypto.&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;0,800;1,500&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

&lt;style&gt;
    :root { 
        --primary: #2563eb; --primary-dark: #1e3a8a; 
        --text-dark: #0f172a; --accent: #475569; 
        --bg: #f8fafc; --white: #fff; --border: #e2e8f0; 
        --success: #10b981; --danger: #ef4444; --warning: #f59e0b; --info: #3b82f6;
        --font-main: &#39;Poppins&#39;, sans-serif;
    }
    
    * { box-sizing: border-box; }
    body { background-color: var(--bg); font-family: var(--font-main); color: var(--text-dark); margin: 0; line-height: 1.6; }
    .otechy-tool-wrapper { max-width: 850px; margin: 0 auto; padding: 25px 15px 50px; }
    
    /* Hero Section */
    .hero-section { text-align: center; margin-bottom: 20px; }
    .new-badge { display: inline-block; background: #1e293b; color: #e2e8f0; padding: 4px 12px; border-radius: 50px; font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 10px; }
    .hero-section h1 { font-size: clamp(20px, 5vw, 28px); font-weight: 800; margin: 0 0 5px; }
    .hero-section h1 span { color: var(--primary); }
    .hero-subtitle { color: var(--accent); font-size: 12px; font-weight: 500; max-width: 550px; margin: 0 auto; }

    /* Main Card */
    .calc-card { background: var(--white); border-radius: 16px; border: 1px solid var(--border); padding: 25px; box-shadow: 0 8px 20px rgba(37, 99, 235, 0.03); margin-bottom: 20px; }
    
    /* Presets Row */
    .presets-row { display: flex; gap: 10px; margin-bottom: 20px; justify-content: center; flex-wrap: wrap; }
    .preset-btn { background: #f1f5f9; border: 1px solid var(--border); color: var(--text-dark); padding: 8px 16px; border-radius: 8px; font-size: 11px; font-weight: 700; cursor: pointer; transition: 0.2s; text-transform: uppercase; display: flex; align-items: center; gap: 6px; }
    .preset-btn:hover { background: #e2e8f0; }
    .preset-btn.strict { background: #ecfdf5; border-color: #a7f3d0; color: #065f46; }
    .preset-btn.strict:hover { background: #d1fae5; }

    /* Matrix Grid */
    .matrix-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 12px; margin-bottom: 20px; }
    .protocol-card { background: #f8fafc; border: 1px solid var(--border); border-radius: 12px; padding: 15px; text-align: center; transition: 0.2s; position: relative; overflow: hidden; }
    .protocol-card.active { border-color: var(--success); background: #f0fdf4; box-shadow: 0 4px 12px rgba(16, 185, 129, 0.1); }
    .protocol-card.disabled { border-color: var(--danger); background: #fef2f2; opacity: 0.9; }
    
    .prot-name { font-size: 13px; font-weight: 800; color: var(--text-dark); margin-bottom: 12px; }
    
    /* Switches */
    .switch { position: relative; display: inline-block; width: 42px; height: 22px; }
    .switch input { opacity: 0; width: 0; height: 0; }
    .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: var(--danger); transition: .3s; border-radius: 24px; }
    .slider:before { position: absolute; content: &quot;&quot;; height: 16px; width: 16px; left: 3px; bottom: 3px; background-color: white; transition: .3s; border-radius: 50%; box-shadow: 0 2px 4px rgba(0,0,0,0.2); }
    input:checked + .slider { background-color: var(--success); }
    input:checked + .slider:before { transform: translateX(20px); }

    /* Extra Toggles */
    .extra-toggles { background: #f8fafc; border: 1px dashed var(--border); padding: 15px; border-radius: 12px; margin-bottom: 20px; display: flex; align-items: center; justify-content: space-between; gap: 15px; }
    .extra-toggles-text h4 { margin: 0 0 4px 0; font-size: 13px; font-weight: 800; color: var(--text-dark); }
    .extra-toggles-text p { margin: 0; font-size: 11px; color: var(--accent); font-weight: 500; }

    /* Dynamic Alerts */
    .alert-container { display: flex; flex-direction: column; gap: 10px; margin-bottom: 20px; }
    .alert-box { padding: 12px 15px; border-radius: 8px; font-size: 11px; font-weight: 600; line-height: 1.5; display: flex; gap: 10px; align-items: flex-start; animation: fadeIn 0.3s ease; }
    @keyframes fadeIn { from { opacity: 0; transform: translateY(-5px); } to { opacity: 1; transform: translateY(0); } }
    .alert-warning { background: #fffbeb; border: 1px solid #fde68a; color: #b45309; }
    .alert-info { background: #eff6ff; border: 1px solid #bfdbfe; color: #1d4ed8; }
    .alert-success { background: #ecfdf5; border: 1px solid #a7f3d0; color: #065f46; }

    /* Terminal Box */
    .terminal-box { background: #0f172a; border-radius: 12px; overflow: hidden; display: flex; flex-direction: column; box-shadow: 0 10px 15px rgba(0,0,0,0.1); }
    .term-header { background: #1e293b; padding: 10px 15px; display: flex; align-items: center; justify-content: space-between; }
    .term-dots { display: flex; gap: 6px; }
    .term-dot { width: 10px; height: 10px; border-radius: 50%; }
    .dot-red { background: #ef4444; } .dot-yel { background: #f59e0b; } .dot-grn { background: #10b981; }
    
    .copy-btn { background: var(--primary); color: #fff; border: none; padding: 6px 12px; border-radius: 6px; font-size: 10px; font-weight: 800; cursor: pointer; transition: 0.2s; text-transform: uppercase; }
    .copy-btn:hover { background: var(--primary-dark); }
    
    .term-body { padding: 15px; background: #020617; overflow-x: auto; max-height: 400px; }
    .cmd-text { font-family: &#39;Consolas&#39;, monospace; font-size: 12px; color: #e2e8f0; white-space: pre; line-height: 1.6; tab-size: 4; }
    .cmd-comment { color: #10b981; }
    .cmd-keyword { color: #38bdf8; }
    .cmd-string { color: #fef08a; }
    .cmd-var { color: #c084fc; }

    /* Compact FAQ Section */
    .faq-section { margin-top: 35px; }
    .faq-section h3 { font-size: 18px; font-weight: 850; margin: 0 0 15px; color: var(--text-dark); text-align: center; }
    .faq-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; }
    .faq-card { background: #fff; padding: 15px; border-radius: 10px; border: 1px solid var(--border); border-top: 3px solid var(--primary); box-shadow: 0 2px 6px rgba(0,0,0,0.02); transition: 0.2s; }
    .faq-card:hover { transform: translateY(-2px); box-shadow: 0 6px 12px rgba(37, 99, 235, 0.05); }
    .faq-card strong { color: var(--primary-dark); display: block; margin-bottom: 6px; font-size: 13px; font-weight: 800; line-height: 1.3; }
    .faq-card p { font-size: 11px; color: var(--accent); margin: 0; line-height: 1.5; font-weight: 500; }

    /* Ads */
    .otechy-ad { background: #f1f5f9; color: #cbd5e1; font-size: 10px; font-weight: 700; text-transform: uppercase; height: 90px; display: flex; align-items: center; justify-content: center; border-radius: 10px; margin: 20px 0; width: 100%; border: 1px dashed #cbd5e1; }

    @media (max-width: 600px) {
        .matrix-grid { grid-template-columns: 1fr 1fr; }
        .extra-toggles { flex-direction: column; align-items: flex-start; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;

    &lt;div class=&quot;hero-section&quot;&gt;
        &lt;div class=&quot;new-badge&quot;&gt;⚡ Advanced Server Utility (V2)&lt;/div&gt;
        &lt;h1&gt;SSL &amp; TLS &lt;span&gt;Hardening Script&lt;/span&gt;&lt;/h1&gt;
        &lt;p class=&quot;hero-subtitle&quot;&gt;Visually configure SCHANNEL registry keys. Includes auto-backups, smart OS detection, and .NET Framework strong crypto enforcement.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 20px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT TOP&lt;/div&gt;

    &lt;div class=&quot;calc-card&quot;&gt;
        
        &lt;div class=&quot;presets-row&quot;&gt;
            &lt;button class=&quot;preset-btn strict&quot; onclick=&quot;applyPreset(&#39;strict&#39;)&quot;&gt;
                &lt;svg width=&quot;14&quot; height=&quot;14&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot;&gt;&lt;path d=&quot;M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
                PCI-DSS Strict (Recommended)
            &lt;/button&gt;
            &lt;button class=&quot;preset-btn&quot; onclick=&quot;applyPreset(&#39;legacy&#39;)&quot;&gt;
                &lt;svg width=&quot;14&quot; height=&quot;14&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot;&gt;&lt;circle cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;10&quot;&gt;&lt;/circle&gt;&lt;polyline points=&quot;12 6 12 12 16 14&quot;&gt;&lt;/polyline&gt;&lt;/svg&gt;
                Legacy Compatibility
            &lt;/button&gt;
        &lt;/div&gt;

        &lt;div class=&quot;matrix-grid&quot;&gt;
            &lt;div class=&quot;protocol-card disabled&quot; id=&quot;card-SSL20&quot;&gt;
                &lt;div class=&quot;prot-name&quot;&gt;SSL 2.0&lt;/div&gt;
                &lt;label class=&quot;switch&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;SSL20&quot; onchange=&quot;updateScript()&quot;&gt;&lt;span class=&quot;slider&quot;&gt;&lt;/span&gt;&lt;/label&gt;
            &lt;/div&gt;
            &lt;div class=&quot;protocol-card disabled&quot; id=&quot;card-SSL30&quot;&gt;
                &lt;div class=&quot;prot-name&quot;&gt;SSL 3.0&lt;/div&gt;
                &lt;label class=&quot;switch&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;SSL30&quot; onchange=&quot;updateScript()&quot;&gt;&lt;span class=&quot;slider&quot;&gt;&lt;/span&gt;&lt;/label&gt;
            &lt;/div&gt;
            &lt;div class=&quot;protocol-card disabled&quot; id=&quot;card-TLS10&quot;&gt;
                &lt;div class=&quot;prot-name&quot;&gt;TLS 1.0&lt;/div&gt;
                &lt;label class=&quot;switch&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;TLS10&quot; onchange=&quot;updateScript()&quot;&gt;&lt;span class=&quot;slider&quot;&gt;&lt;/span&gt;&lt;/label&gt;
            &lt;/div&gt;
            &lt;div class=&quot;protocol-card disabled&quot; id=&quot;card-TLS11&quot;&gt;
                &lt;div class=&quot;prot-name&quot;&gt;TLS 1.1&lt;/div&gt;
                &lt;label class=&quot;switch&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;TLS11&quot; onchange=&quot;updateScript()&quot;&gt;&lt;span class=&quot;slider&quot;&gt;&lt;/span&gt;&lt;/label&gt;
            &lt;/div&gt;
            &lt;div class=&quot;protocol-card active&quot; id=&quot;card-TLS12&quot;&gt;
                &lt;div class=&quot;prot-name&quot;&gt;TLS 1.2&lt;/div&gt;
                &lt;label class=&quot;switch&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;TLS12&quot; checked onchange=&quot;updateScript()&quot;&gt;&lt;span class=&quot;slider&quot;&gt;&lt;/span&gt;&lt;/label&gt;
            &lt;/div&gt;
            &lt;div class=&quot;protocol-card active&quot; id=&quot;card-TLS13&quot;&gt;
                &lt;div class=&quot;prot-name&quot;&gt;TLS 1.3&lt;/div&gt;
                &lt;label class=&quot;switch&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;TLS13&quot; checked onchange=&quot;updateScript()&quot;&gt;&lt;span class=&quot;slider&quot;&gt;&lt;/span&gt;&lt;/label&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;extra-toggles&quot;&gt;
            &lt;div class=&quot;extra-toggles-text&quot;&gt;
                &lt;h4&gt;Enforce .NET Framework Strong Crypto&lt;/h4&gt;
                &lt;p&gt;Crucial for older apps. Forces .NET to use the OS Default TLS (TLS 1.2) instead of falling back to weak protocols.&lt;/p&gt;
            &lt;/div&gt;
            &lt;label class=&quot;switch&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;DotNet&quot; checked onchange=&quot;updateScript()&quot;&gt;&lt;span class=&quot;slider&quot;&gt;&lt;/span&gt;&lt;/label&gt;
        &lt;/div&gt;

        &lt;div class=&quot;alert-container&quot; id=&quot;dynamicAlerts&quot;&gt;&lt;/div&gt;

        &lt;div class=&quot;terminal-box&quot;&gt;
            &lt;div class=&quot;term-header&quot;&gt;
                &lt;div class=&quot;term-dots&quot;&gt;
                    &lt;div class=&quot;term-dot dot-red&quot;&gt;&lt;/div&gt;
                    &lt;div class=&quot;term-dot dot-yel&quot;&gt;&lt;/div&gt;
                    &lt;div class=&quot;term-dot dot-grn&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
                &lt;button class=&quot;copy-btn&quot; onclick=&quot;copyScript()&quot;&gt;Copy Script&lt;/button&gt;
            &lt;/div&gt;
            &lt;div class=&quot;term-body&quot;&gt;
                &lt;div class=&quot;cmd-text&quot; id=&quot;scriptOutput&quot;&gt;&lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 30px 0; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;

    &lt;div class=&quot;faq-section&quot;&gt;
        &lt;h3&gt;Windows Server Hardening FAQ&lt;/h3&gt;
        &lt;div class=&quot;faq-grid&quot;&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;1. Why must I disable TLS 1.0 and 1.1?&lt;/strong&gt;
                &lt;p&gt;These legacy protocols contain known vulnerabilities (like POODLE). They are deprecated by the IETF and banned by PCI-DSS standards.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;2. What is the risk of disabling TLS 1.0/1.1?&lt;/strong&gt;
                &lt;p&gt;If you run older SQL Native Clients, legacy APIs, or unpatched .NET applications, they may instantly lose database/network connectivity. Test in staging first.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;3. Why do we need the .NET Strong Crypto keys?&lt;/strong&gt;
                &lt;p&gt;Even if Windows natively disables TLS 1.0, older .NET Framework apps (v4.x) are hardcoded to prefer legacy protocols. The `SchUseStrongCrypto` registry key forces them to respect the OS default.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;4. Does the script create a backup?&lt;/strong&gt;
                &lt;p&gt;Yes! The V2 script executes a `reg export` command immediately, saving your current SCHANNEL state to `C:\schannel-backup.reg` before applying changes.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;5. Is TLS 1.3 supported on my server?&lt;/strong&gt;
                &lt;p&gt;TLS 1.3 is only natively supported on Windows Server 2022 and Windows 11. Our generated script features OS detection and will safely skip TLS 1.3 on unsupported older OS versions.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;6. Does this script harden Cipher Suites?&lt;/strong&gt;
                &lt;p&gt;No. This script hardens &lt;strong&gt;Protocols&lt;/strong&gt;. To achieve perfect PCI-DSS compliance, you must also disable weak ciphers (RC4, 3DES) and reorder Cipher Suites via Group Policy or tools like IIS Crypto.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;7. Does this script require a reboot?&lt;/strong&gt;
                &lt;p&gt;Yes. Changes to the SCHANNEL registry keys in Windows only take effect after a full system restart. The script will prompt you to reboot at the end.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;8. What does &quot;DisabledByDefault&quot; mean?&lt;/strong&gt;
                &lt;p&gt;This DWORD value instructs the OS not to negotiate the protocol unless an application explicitly requests it. Our script correctly toggles this alongside the &quot;Enabled&quot; value.&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 30px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;
    const protocols = [
        { id: &#39;SSL20&#39;, name: &#39;SSL 2.0&#39; },
        { id: &#39;SSL30&#39;, name: &#39;SSL 3.0&#39; },
        { id: &#39;TLS10&#39;, name: &#39;TLS 1.0&#39; },
        { id: &#39;TLS11&#39;, name: &#39;TLS 1.1&#39; },
        { id: &#39;TLS12&#39;, name: &#39;TLS 1.2&#39; },
        { id: &#39;TLS13&#39;, name: &#39;TLS 1.3&#39; }
    ];

    function applyPreset(type) {
        if (type === &#39;strict&#39;) {
            document.getElementById(&#39;SSL20&#39;).checked = false;
            document.getElementById(&#39;SSL30&#39;).checked = false;
            document.getElementById(&#39;TLS10&#39;).checked = false;
            document.getElementById(&#39;TLS11&#39;).checked = false;
            document.getElementById(&#39;TLS12&#39;).checked = true;
            document.getElementById(&#39;TLS13&#39;).checked = true;
            document.getElementById(&#39;DotNet&#39;).checked = true;
        } else if (type === &#39;legacy&#39;) {
            document.getElementById(&#39;SSL20&#39;).checked = false;
            document.getElementById(&#39;SSL30&#39;).checked = false;
            document.getElementById(&#39;TLS10&#39;).checked = true;
            document.getElementById(&#39;TLS11&#39;).checked = true;
            document.getElementById(&#39;TLS12&#39;).checked = true;
            document.getElementById(&#39;TLS13&#39;).checked = false;
            document.getElementById(&#39;DotNet&#39;).checked = false;
        }
        updateScript();
    }

    function updateScript() {
        let configLines = &#39;&#39;;
        let alertsHtml = &#39;&#39;;
        
        const tls10 = document.getElementById(&#39;TLS10&#39;).checked;
        const tls11 = document.getElementById(&#39;TLS11&#39;).checked;
        const tls13 = document.getElementById(&#39;TLS13&#39;).checked;
        const dotnet = document.getElementById(&#39;DotNet&#39;).checked;

        // Dynamic Alerts Logic
        if (!tls10 &amp;&amp; !tls11) {
            alertsHtml += `&lt;div class=&quot;alert-box alert-warning&quot;&gt;&lt;span&gt;⚠️&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Legacy App Risk:&lt;/strong&gt; Disabling TLS 1.0 &amp; 1.1 secures your server, but it may break legacy SQL Server Native Clients, older APIs, and unpatched .NET applications. Test in staging!&lt;/div&gt;&lt;/div&gt;`;
        }
        if (tls13) {
            alertsHtml += `&lt;div class=&quot;alert-box alert-info&quot;&gt;&lt;span&gt;ℹ️&lt;/span&gt; &lt;div&gt;&lt;strong&gt;TLS 1.3 Compatibility:&lt;/strong&gt; Native support requires Windows Server 2022+. The generated script will automatically detect your OS version before applying this key.&lt;/div&gt;&lt;/div&gt;`;
        }
        if (dotnet) {
            alertsHtml += `&lt;div class=&quot;alert-box alert-success&quot;&gt;&lt;span&gt;✅&lt;/span&gt; &lt;div&gt;&lt;strong&gt;.NET Protected:&lt;/strong&gt; SchUseStrongCrypto registry keys will be added to ensure legacy .NET Framework applications utilize modern TLS protocols.&lt;/div&gt;&lt;/div&gt;`;
        }

        document.getElementById(&#39;dynamicAlerts&#39;).innerHTML = alertsHtml;

        // Build PS Script
        protocols.forEach(p =&gt; {
            const isChecked = document.getElementById(p.id).checked;
            const card = document.getElementById(`card-${p.id}`);
            
            // UI
            if(isChecked) {
                card.classList.remove(&#39;disabled&#39;); card.classList.add(&#39;active&#39;);
            } else {
                card.classList.remove(&#39;active&#39;); card.classList.add(&#39;disabled&#39;);
            }
            
            // Exclude TLS 1.3 from base array (handled via OS detection)
            if(p.id !== &#39;TLS13&#39;) {
                const val = isChecked ? &#39;1&#39; : &#39;0&#39;;
                configLines += `    &lt;span class=&quot;cmd-string&quot;&gt;&quot;${p.name}&quot;&lt;/span&gt; = ${val}\n`;
            }
        });

        let scriptHTML = `&lt;span class=&quot;cmd-comment&quot;&gt;# OTechy Advanced SSL/TLS Hardening Script
# Run as Administrator. A system reboot is required.&lt;/span&gt;

&lt;span class=&quot;cmd-comment&quot;&gt;# 1. Create a Backup of current SCHANNEL settings&lt;/span&gt;
Write-Host &lt;span class=&quot;cmd-string&quot;&gt;&quot;Backing up Registry to C:\\schannel-backup.reg...&quot;&lt;/span&gt; -ForegroundColor Cyan
reg export HKLM\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\SCHANNEL C:\\schannel-backup.reg /y | Out-Null

&lt;span class=&quot;cmd-comment&quot;&gt;# 2. Define Protocol Matrix&lt;/span&gt;
&lt;span class=&quot;cmd-var&quot;&gt;$config&lt;/span&gt; = @{
${configLines}}
`;

        if (tls13) {
            scriptHTML += `
&lt;span class=&quot;cmd-comment&quot;&gt;# 3. OS Detection for TLS 1.3 (Server 2022 / Build 20348+)&lt;/span&gt;
&lt;span class=&quot;cmd-keyword&quot;&gt;if&lt;/span&gt; ([Environment]::OSVersion.Version -ge [Version]&lt;span class=&quot;cmd-string&quot;&gt;&quot;10.0.20348&quot;&lt;/span&gt;) {
    &lt;span class=&quot;cmd-var&quot;&gt;$config&lt;/span&gt;[&lt;span class=&quot;cmd-string&quot;&gt;&quot;TLS 1.3&quot;&lt;/span&gt;] = 1
    Write-Host &lt;span class=&quot;cmd-string&quot;&gt;&quot;TLS 1.3 Supported OS Detected.&quot;&lt;/span&gt; -ForegroundColor Green
} &lt;span class=&quot;cmd-keyword&quot;&gt;else&lt;/span&gt; {
    Write-Host &lt;span class=&quot;cmd-string&quot;&gt;&quot;Skipping TLS 1.3 (OS Unsupported).&quot;&lt;/span&gt; -ForegroundColor Yellow
}
`;
        }

        scriptHTML += `
&lt;span class=&quot;cmd-comment&quot;&gt;# 4. Apply SCHANNEL Registry Keys&lt;/span&gt;
&lt;span class=&quot;cmd-keyword&quot;&gt;foreach&lt;/span&gt; (&lt;span class=&quot;cmd-var&quot;&gt;$prot&lt;/span&gt; &lt;span class=&quot;cmd-keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;cmd-var&quot;&gt;$config&lt;/span&gt;.Keys) {
    &lt;span class=&quot;cmd-var&quot;&gt;$state&lt;/span&gt; = &lt;span class=&quot;cmd-var&quot;&gt;$config&lt;/span&gt;[&lt;span class=&quot;cmd-var&quot;&gt;$prot&lt;/span&gt;]
    &lt;span class=&quot;cmd-var&quot;&gt;$disableByDefault&lt;/span&gt; = &lt;span class=&quot;cmd-keyword&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;cmd-var&quot;&gt;$state&lt;/span&gt; -eq 1) { 0 } &lt;span class=&quot;cmd-keyword&quot;&gt;else&lt;/span&gt; { 1 }
    
    &lt;span class=&quot;cmd-keyword&quot;&gt;foreach&lt;/span&gt; (&lt;span class=&quot;cmd-var&quot;&gt;$target&lt;/span&gt; &lt;span class=&quot;cmd-keyword&quot;&gt;in&lt;/span&gt; @(&lt;span class=&quot;cmd-string&quot;&gt;&quot;Client&quot;&lt;/span&gt;, &lt;span class=&quot;cmd-string&quot;&gt;&quot;Server&quot;&lt;/span&gt;)) {
        &lt;span class=&quot;cmd-var&quot;&gt;$path&lt;/span&gt; = &lt;span class=&quot;cmd-string&quot;&gt;&quot;HKLM:\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\SCHANNEL\\Protocols\\$prot\\$target&quot;&lt;/span&gt;
        &lt;span class=&quot;cmd-keyword&quot;&gt;if&lt;/span&gt; (!(Test-Path &lt;span class=&quot;cmd-var&quot;&gt;$path&lt;/span&gt;)) { New-Item -Path &lt;span class=&quot;cmd-var&quot;&gt;$path&lt;/span&gt; -Force | Out-Null }
        New-ItemProperty -Path &lt;span class=&quot;cmd-var&quot;&gt;$path&lt;/span&gt; -Name &lt;span class=&quot;cmd-string&quot;&gt;&quot;Enabled&quot;&lt;/span&gt; -Value &lt;span class=&quot;cmd-var&quot;&gt;$state&lt;/span&gt; -PropertyType DWord -Force | Out-Null
        New-ItemProperty -Path &lt;span class=&quot;cmd-var&quot;&gt;$path&lt;/span&gt; -Name &lt;span class=&quot;cmd-string&quot;&gt;&quot;DisabledByDefault&quot;&lt;/span&gt; -Value &lt;span class=&quot;cmd-var&quot;&gt;$disableByDefault&lt;/span&gt; -PropertyType DWord -Force | Out-Null
    }
}
`;

        if (dotnet) {
            scriptHTML += `
&lt;span class=&quot;cmd-comment&quot;&gt;# 5. Enforce .NET Framework Strong Crypto&lt;/span&gt;
&lt;span class=&quot;cmd-var&quot;&gt;$netPaths&lt;/span&gt; = @(
    &lt;span class=&quot;cmd-string&quot;&gt;&quot;HKLM:\\SOFTWARE\\Microsoft\\.NETFramework\\v4.0.30319&quot;&lt;/span&gt;,
    &lt;span class=&quot;cmd-string&quot;&gt;&quot;HKLM:\\SOFTWARE\\Wow6432Node\\Microsoft\\.NETFramework\\v4.0.30319&quot;&lt;/span&gt;
)
&lt;span class=&quot;cmd-keyword&quot;&gt;foreach&lt;/span&gt; (&lt;span class=&quot;cmd-var&quot;&gt;$path&lt;/span&gt; &lt;span class=&quot;cmd-keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;cmd-var&quot;&gt;$netPaths&lt;/span&gt;) {
    &lt;span class=&quot;cmd-keyword&quot;&gt;if&lt;/span&gt; (!(Test-Path &lt;span class=&quot;cmd-var&quot;&gt;$path&lt;/span&gt;)) { New-Item -Path &lt;span class=&quot;cmd-var&quot;&gt;$path&lt;/span&gt; -Force | Out-Null }
    New-ItemProperty -Path &lt;span class=&quot;cmd-var&quot;&gt;$path&lt;/span&gt; -Name &lt;span class=&quot;cmd-string&quot;&gt;&quot;SchUseStrongCrypto&quot;&lt;/span&gt; -Value 1 -PropertyType DWord -Force | Out-Null
    New-ItemProperty -Path &lt;span class=&quot;cmd-var&quot;&gt;$path&lt;/span&gt; -Name &lt;span class=&quot;cmd-string&quot;&gt;&quot;SystemDefaultTlsVersions&quot;&lt;/span&gt; -Value 1 -PropertyType DWord -Force | Out-Null
}
Write-Host &lt;span class=&quot;cmd-string&quot;&gt;&quot;.NET Strong Crypto Enforced.&quot;&lt;/span&gt; -ForegroundColor Green
`;
        }

        scriptHTML += `
Write-Host &lt;span class=&quot;cmd-string&quot;&gt;&quot;OTechy Configuration Applied! Please restart the server.&quot;&lt;/span&gt; -ForegroundColor Cyan`;

        document.getElementById(&#39;scriptOutput&#39;).innerHTML = scriptHTML;
    }

    function copyScript() {
        const temp = document.createElement(&#39;div&#39;);
        temp.innerHTML = document.getElementById(&#39;scriptOutput&#39;).innerHTML;
        const pureText = temp.innerText || temp.textContent;
        
        navigator.clipboard.writeText(pureText).then(() =&gt; {
            alert(&quot;V2 PowerShell Script Copied!&quot;);
        });
    }

    // Initialize on load
    window.onload = updateScript;
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/7209136864557440817'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/7209136864557440817'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/03/ssl-and-tls-hardening-script-generator.html' title='SSL and TLS Hardening Script Generator'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-6434534335969341649</id><published>2026-03-30T08:27:00.000-07:00</published><updated>2026-03-30T08:27:08.481-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux Permission"/><title type='text'>Chmod Calculator | Visual Linux File Permissions Tool</title><content type='html'>&lt;title&gt;Chmod Calculator Online | Linux File Permissions Tool&lt;/title&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
&lt;meta name=&quot;description&quot; content=&quot;Visual chmod calculator for Linux and Unix. Convert octal permissions like 777, 755, or 666 to symbolic formats instantly.&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;0,800;1,500&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

&lt;style&gt;
    :root { 
        --primary: #2563eb; --primary-dark: #1e3a8a; 
        --text-dark: #0f172a; --accent: #475569; 
        --bg: #f8fafc; --white: #fff; --border: #e2e8f0; 
        --font-main: &#39;Poppins&#39;, sans-serif;
    }
    
    * { box-sizing: border-box; }
    body { background-color: var(--bg); font-family: var(--font-main); color: var(--text-dark); margin: 0; line-height: 1.6; }
    .otechy-tool-wrapper { max-width: 800px; margin: 0 auto; padding: 25px 15px 50px; }
    
    /* Hero Section */
    .hero-section { text-align: center; margin-bottom: 20px; }
    .new-badge { display: inline-block; background: #1e293b; color: #e2e8f0; padding: 4px 12px; border-radius: 50px; font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 10px; }
    .hero-section h1 { font-size: clamp(20px, 5vw, 28px); font-weight: 800; margin: 0 0 5px; }
    .hero-section h1 span { color: var(--primary); }
    .hero-subtitle { color: var(--accent); font-size: 12px; font-weight: 500; max-width: 550px; margin: 0 auto; }

    /* Main Card */
    .calc-card { background: var(--white); border-radius: 16px; border: 1px solid var(--border); padding: 20px; box-shadow: 0 8px 20px rgba(37, 99, 235, 0.03); margin-bottom: 20px; }
    
    /* Inputs */
    .quick-input-row { display: flex; gap: 12px; margin-bottom: 20px; }
    .input-group { flex: 1; display: flex; flex-direction: column; }
    .input-group label { font-size: 10px; font-weight: 800; color: var(--accent); text-transform: uppercase; margin-bottom: 5px; }
    .form-control { width: 100%; padding: 10px 12px; border-radius: 8px; border: 1px solid #cbd5e1; font-family: monospace; font-size: 16px; font-weight: 700; color: var(--text-dark); outline: none; transition: 0.2s; background: #f8fafc; text-align: center; letter-spacing: 1px; }
    .form-control:focus { border-color: var(--primary); background: #fff; box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1); }
    
    /* Matrix Grid - Sleek Toggle Buttons */
    .matrix-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 20px; }
    .matrix-col { background: var(--white); border: 1px solid var(--border); border-radius: 12px; padding: 12px; }
    .col-header { font-size: 12px; font-weight: 800; color: var(--primary-dark); text-align: center; margin-bottom: 12px; text-transform: uppercase; }
    
    .perm-toggle { margin-bottom: 8px; }
    .perm-toggle:last-child { margin-bottom: 0; }
    .perm-toggle input { display: none; }
    
    .perm-btn { display: flex; justify-content: space-between; align-items: center; padding: 8px 12px; background: #f1f5f9; border-radius: 8px; cursor: pointer; transition: all 0.2s ease; border: 1px solid transparent; font-size: 12px; font-weight: 700; color: var(--accent); }
    .perm-btn:hover { background: #e2e8f0; }
    .perm-num { font-size: 10px; font-weight: 800; background: #cbd5e1; padding: 2px 6px; border-radius: 4px; color: var(--text-dark); transition: 0.2s; }
    
    /* Active State for Toggles */
    .perm-toggle input:checked + .perm-btn { background: var(--primary); color: #fff; box-shadow: 0 4px 10px rgba(37, 99, 235, 0.25); border-color: var(--primary-dark); transform: translateY(-1px); }
    .perm-toggle input:checked + .perm-btn .perm-num { background: rgba(255, 255, 255, 0.25); color: #fff; }

    /* Results Layout */
    .results-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
    
    /* Sleek Mac-Style Terminal */
    .terminal-box { background: #0f172a; border-radius: 12px; overflow: hidden; display: flex; flex-direction: column; box-shadow: 0 10px 15px rgba(0,0,0,0.1); }
    .term-header { background: #1e293b; padding: 8px 12px; display: flex; align-items: center; gap: 6px; }
    .term-dot { width: 10px; height: 10px; border-radius: 50%; }
    .dot-red { background: #ef4444; }
    .dot-yel { background: #f59e0b; }
    .dot-grn { background: #10b981; }
    .term-body { padding: 15px; display: flex; justify-content: space-between; align-items: center; }
    .cmd-text { font-family: monospace; font-size: 14px; font-weight: 700; color: #38bdf8; }
    .cmd-text span { color: #94a3b8; }
    .copy-btn { background: #1e293b; color: #e2e8f0; border: 1px solid #334155; padding: 6px 10px; border-radius: 6px; font-size: 10px; font-weight: 700; cursor: pointer; transition: 0.2s; text-transform: uppercase; }
    .copy-btn:hover { background: var(--primary); color: #fff; border-color: var(--primary); }

    /* Plain English Translation */
    .translation-box { background: #eff6ff; border: 1px solid #bfdbfe; border-left: 4px solid var(--primary); padding: 15px; border-radius: 12px; font-size: 12px; font-weight: 500; color: var(--text-dark); line-height: 1.5; display: flex; flex-direction: column; justify-content: center; }
    .translation-box strong { color: var(--primary-dark); font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px; }

    /* Compact Info &amp; FAQ */
    .tool-info-block { background: #f8fafc; border: 1px solid var(--border); border-left: 4px solid var(--primary); padding: 15px; border-radius: 12px; margin-top: 15px; box-shadow: 0 2px 5px rgba(0,0,0,0.02); }
    .tool-info-block h3 { margin: 0 0 6px 0; font-size: 14px; font-weight: 800; color: var(--primary-dark); }
    .tool-info-block p { font-size: 11px; color: var(--accent); margin: 0; line-height: 1.5; font-weight: 500; }
    
    .faq-section { margin-top: 30px; }
    .faq-section h3 { font-size: 16px; font-weight: 850; margin: 0 0 15px; text-align: center; }
    .faq-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px; }
    .faq-card { background: #fff; padding: 12px; border-radius: 8px; border: 1px solid var(--border); border-top: 3px solid var(--primary); }
    .faq-card strong { color: var(--primary-dark); display: block; margin-bottom: 4px; font-size: 12px; font-weight: 800; line-height: 1.3; }
    .faq-card p { font-size: 11px; color: var(--accent); margin: 0; line-height: 1.5; }

    .otechy-ad { background: #f1f5f9; color: #cbd5e1; font-size: 10px; font-weight: 700; text-transform: uppercase; height: 90px; display: flex; align-items: center; justify-content: center; border-radius: 10px; margin: 15px 0; border: 1px dashed #cbd5e1; }

    @media (max-width: 600px) {
        .matrix-grid { grid-template-columns: 1fr; gap: 8px; }
        .results-layout { grid-template-columns: 1fr; gap: 12px; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;

    &lt;div class=&quot;hero-section&quot;&gt;
        &lt;div class=&quot;new-badge&quot;&gt;🐧 Compact Linux Utility&lt;/div&gt;
        &lt;h1&gt;Chmod &lt;span&gt;Calculator&lt;/span&gt;&lt;/h1&gt;
        &lt;p class=&quot;hero-subtitle&quot;&gt;Translate numerical Unix permissions (like 755 or 666) instantly.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 15px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT TOP&lt;/div&gt;

    &lt;div class=&quot;calc-card&quot;&gt;
        
        &lt;div class=&quot;quick-input-row&quot;&gt;
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Octal (Numeric)&lt;/label&gt;
                &lt;input type=&quot;text&quot; id=&quot;octalInput&quot; class=&quot;form-control&quot; value=&quot;0666&quot; maxlength=&quot;4&quot; onkeyup=&quot;updateFromOctal()&quot;&gt;
            &lt;/div&gt;
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Symbolic (Letters)&lt;/label&gt;
                &lt;input type=&quot;text&quot; id=&quot;symbolicInput&quot; class=&quot;form-control&quot; value=&quot;-rw-rw-rw-&quot; maxlength=&quot;10&quot; onkeyup=&quot;updateFromSymbolic()&quot;&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;matrix-grid&quot;&gt;
            &lt;div class=&quot;matrix-col&quot;&gt;
                &lt;div class=&quot;col-header&quot;&gt;Owner (User)&lt;/div&gt;
                &lt;div class=&quot;perm-toggle&quot;&gt;
                    &lt;input type=&quot;checkbox&quot; id=&quot;o_r&quot; onchange=&quot;updateFromMatrix()&quot;&gt;
                    &lt;label for=&quot;o_r&quot; class=&quot;perm-btn&quot;&gt;Read &lt;span class=&quot;perm-num&quot;&gt;4&lt;/span&gt;&lt;/label&gt;
                &lt;/div&gt;
                &lt;div class=&quot;perm-toggle&quot;&gt;
                    &lt;input type=&quot;checkbox&quot; id=&quot;o_w&quot; onchange=&quot;updateFromMatrix()&quot;&gt;
                    &lt;label for=&quot;o_w&quot; class=&quot;perm-btn&quot;&gt;Write &lt;span class=&quot;perm-num&quot;&gt;2&lt;/span&gt;&lt;/label&gt;
                &lt;/div&gt;
                &lt;div class=&quot;perm-toggle&quot;&gt;
                    &lt;input type=&quot;checkbox&quot; id=&quot;o_x&quot; onchange=&quot;updateFromMatrix()&quot;&gt;
                    &lt;label for=&quot;o_x&quot; class=&quot;perm-btn&quot;&gt;Execute &lt;span class=&quot;perm-num&quot;&gt;1&lt;/span&gt;&lt;/label&gt;
                &lt;/div&gt;
            &lt;/div&gt;

            &lt;div class=&quot;matrix-col&quot;&gt;
                &lt;div class=&quot;col-header&quot;&gt;Group&lt;/div&gt;
                &lt;div class=&quot;perm-toggle&quot;&gt;
                    &lt;input type=&quot;checkbox&quot; id=&quot;g_r&quot; onchange=&quot;updateFromMatrix()&quot;&gt;
                    &lt;label for=&quot;g_r&quot; class=&quot;perm-btn&quot;&gt;Read &lt;span class=&quot;perm-num&quot;&gt;4&lt;/span&gt;&lt;/label&gt;
                &lt;/div&gt;
                &lt;div class=&quot;perm-toggle&quot;&gt;
                    &lt;input type=&quot;checkbox&quot; id=&quot;g_w&quot; onchange=&quot;updateFromMatrix()&quot;&gt;
                    &lt;label for=&quot;g_w&quot; class=&quot;perm-btn&quot;&gt;Write &lt;span class=&quot;perm-num&quot;&gt;2&lt;/span&gt;&lt;/label&gt;
                &lt;/div&gt;
                &lt;div class=&quot;perm-toggle&quot;&gt;
                    &lt;input type=&quot;checkbox&quot; id=&quot;g_x&quot; onchange=&quot;updateFromMatrix()&quot;&gt;
                    &lt;label for=&quot;g_x&quot; class=&quot;perm-btn&quot;&gt;Execute &lt;span class=&quot;perm-num&quot;&gt;1&lt;/span&gt;&lt;/label&gt;
                &lt;/div&gt;
            &lt;/div&gt;

            &lt;div class=&quot;matrix-col&quot;&gt;
                &lt;div class=&quot;col-header&quot;&gt;Public (Other)&lt;/div&gt;
                &lt;div class=&quot;perm-toggle&quot;&gt;
                    &lt;input type=&quot;checkbox&quot; id=&quot;p_r&quot; onchange=&quot;updateFromMatrix()&quot;&gt;
                    &lt;label for=&quot;p_r&quot; class=&quot;perm-btn&quot;&gt;Read &lt;span class=&quot;perm-num&quot;&gt;4&lt;/span&gt;&lt;/label&gt;
                &lt;/div&gt;
                &lt;div class=&quot;perm-toggle&quot;&gt;
                    &lt;input type=&quot;checkbox&quot; id=&quot;p_w&quot; onchange=&quot;updateFromMatrix()&quot;&gt;
                    &lt;label for=&quot;p_w&quot; class=&quot;perm-btn&quot;&gt;Write &lt;span class=&quot;perm-num&quot;&gt;2&lt;/span&gt;&lt;/label&gt;
                &lt;/div&gt;
                &lt;div class=&quot;perm-toggle&quot;&gt;
                    &lt;input type=&quot;checkbox&quot; id=&quot;p_x&quot; onchange=&quot;updateFromMatrix()&quot;&gt;
                    &lt;label for=&quot;p_x&quot; class=&quot;perm-btn&quot;&gt;Execute &lt;span class=&quot;perm-num&quot;&gt;1&lt;/span&gt;&lt;/label&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;results-layout&quot;&gt;
            &lt;div class=&quot;terminal-box&quot;&gt;
                &lt;div class=&quot;term-header&quot;&gt;
                    &lt;div class=&quot;term-dot dot-red&quot;&gt;&lt;/div&gt;
                    &lt;div class=&quot;term-dot dot-yel&quot;&gt;&lt;/div&gt;
                    &lt;div class=&quot;term-dot dot-grn&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;term-body&quot;&gt;
                    &lt;div class=&quot;cmd-text&quot;&gt;&lt;span&gt;$&lt;/span&gt; chmod &lt;span id=&quot;cmdOutput&quot; style=&quot;color:#fff;&quot;&gt;0666&lt;/span&gt; file&lt;/div&gt;
                    &lt;button class=&quot;copy-btn&quot; onclick=&quot;copyCmd()&quot;&gt;Copy&lt;/button&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            
            &lt;div class=&quot;translation-box&quot; id=&quot;translationOutput&quot;&gt;
                Loading translation...
            &lt;/div&gt;
        &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class=&quot;tool-info-block&quot;&gt;
        &lt;h3&gt;💻 How Chmod Math Works&lt;/h3&gt;
        &lt;p&gt;In Unix/Linux, permissions are determined by adding numbers: &lt;strong&gt;Read=4&lt;/strong&gt;, &lt;strong&gt;Write=2&lt;/strong&gt;, &lt;strong&gt;Execute=1&lt;/strong&gt;. To allow Read + Write, add 4+2 to get &lt;strong&gt;6&lt;/strong&gt;. The three digits in `chmod 755` represent permissions for the Owner, Group, and Public respectively.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 20px 0; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;

    &lt;div class=&quot;faq-section&quot;&gt;
        &lt;h3&gt;Linux File Permissions FAQ&lt;/h3&gt;
        &lt;div class=&quot;faq-grid&quot;&gt;
&lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;1. What does chmod 777 mean?&lt;/strong&gt;
                &lt;p&gt;It means absolute freedom. The Owner, Group, and Public can all Read, Write, and Execute the file. &lt;strong&gt;Warning:&lt;/strong&gt; This is highly insecure and generally should not be used on web servers.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;2. What does chmod 666 mean?&lt;/strong&gt;
                &lt;p&gt;It means everyone can Read and Write the file, but nobody can Execute it as a program. (4 Read + 2 Write = 6). It is common for text files that multiple users need to edit.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;3. What does chmod 755 mean?&lt;/strong&gt;
                &lt;p&gt;The Owner has full control (7). The Group and Public can only Read and Execute (5). This is the standard, secure permission for directories and executable scripts.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;4. What does chmod 644 mean?&lt;/strong&gt;
                &lt;p&gt;The Owner can Read and Write (6). Everyone else can only Read (4). This is the standard, secure permission for basic files like HTML, CSS, or images on a web server.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;5. Why is there a leading zero (e.g., 0755)?&lt;/strong&gt;
                &lt;p&gt;The leading zero specifies special permission modes (SetUID, SetGID, and Sticky Bit). In most basic daily usage, `0755` functions identically to `755`.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;6. What does &quot;Execute&quot; mean for a directory?&lt;/strong&gt;
                &lt;p&gt;Unlike a file where &quot;execute&quot; runs a script, &quot;execute&quot; on a directory allows a user to `cd` into it and access the files inside. Without execute, you cannot open the folder.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;7. What do the symbolic letters mean?&lt;/strong&gt;
                &lt;p&gt;The string `-rwxr-xr-x` is broken down into chunks. The first character is the type (`-` for file, `d` for directory). The next three are Owner permissions, then Group, then Public.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;8. How do I change permissions recursively?&lt;/strong&gt;
                &lt;p&gt;Use the `-R` flag. For example, `chmod -R 755 folder_name` will apply the 755 permissions to the folder and every single file inside it.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;9. Who is the &quot;Owner&quot;?&lt;/strong&gt;
                &lt;p&gt;The Owner is usually the user who created the file. You can change the owner of a file using the `chown` command.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;10. Who is &quot;Public&quot; or &quot;Other&quot;?&lt;/strong&gt;
                &lt;p&gt;This refers to any user on the system who is not the Owner and is not a member of the assigned Group. It is literally &quot;everyone else.&quot;&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;
    function updateFromMatrix() {
        let octal = &quot;0&quot;;
        let sym = &quot;-&quot;;
        
        [&#39;o&#39;, &#39;g&#39;, &#39;p&#39;].forEach(group =&gt; {
            let val = 0;
            if (document.getElementById(`${group}_r`).checked) { val += 4; sym += &quot;r&quot;; } else { sym += &quot;-&quot;; }
            if (document.getElementById(`${group}_w`).checked) { val += 2; sym += &quot;w&quot;; } else { sym += &quot;-&quot;; }
            if (document.getElementById(`${group}_x`).checked) { val += 1; sym += &quot;x&quot;; } else { sym += &quot;-&quot;; }
            octal += val;
        });

        document.getElementById(&#39;octalInput&#39;).value = octal;
        document.getElementById(&#39;symbolicInput&#39;).value = sym;
        updateUI(octal);
    }

    function updateFromOctal() {
        let val = document.getElementById(&#39;octalInput&#39;).value.replace(/[^0-7]/g, &#39;&#39;);
        if (val.length &gt; 4) val = val.substring(0, 4);
        
        let calcVal = val;
        if (calcVal.length === 3) calcVal = &quot;0&quot; + calcVal;
        if (calcVal.length &lt; 3) return;

        let sym = &quot;-&quot;;
        const groups = [&#39;o&#39;, &#39;g&#39;, &#39;p&#39;];
        const digits = calcVal.slice(-3).split(&#39;&#39;).map(Number);
        
        digits.forEach((digit, i) =&gt; {
            const group = groups[i];
            const r = (digit &amp; 4) === 4;
            const w = (digit &amp; 2) === 2;
            const x = (digit &amp; 1) === 1;

            document.getElementById(`${group}_r`).checked = r;
            document.getElementById(`${group}_w`).checked = w;
            document.getElementById(`${group}_x`).checked = x;

            sym += r ? &quot;r&quot; : &quot;-&quot;;
            sym += w ? &quot;w&quot; : &quot;-&quot;;
            sym += x ? &quot;x&quot; : &quot;-&quot;;
        });

        document.getElementById(&#39;symbolicInput&#39;).value = sym;
        updateUI(calcVal);
    }

    function updateFromSymbolic() {
        let sym = document.getElementById(&#39;symbolicInput&#39;).value.toLowerCase();
        if (sym.length !== 10) return;

        let octal = &quot;0&quot;;
        const groups = [&#39;o&#39;, &#39;g&#39;, &#39;p&#39;];
        
        for (let i = 0; i &lt; 3; i++) {
            const groupStr = sym.substring(1 + (i * 3), 4 + (i * 3));
            const group = groups[i];
            
            let val = 0;
            const r = groupStr[0] === &#39;r&#39;;
            const w = groupStr[1] === &#39;w&#39;;
            const x = groupStr[2] === &#39;x&#39;;

            document.getElementById(`${group}_r`).checked = r;
            document.getElementById(`${group}_w`).checked = w;
            document.getElementById(`${group}_x`).checked = x;

            if(r) val += 4;
            if(w) val += 2;
            if(x) val += 1;
            
            octal += val;
        }

        document.getElementById(&#39;octalInput&#39;).value = octal;
        updateUI(octal);
    }

    function generateEnglishStr(val) {
        if(val === 7) return &quot;Read, Write &amp; Execute&quot;;
        if(val === 6) return &quot;Read &amp; Write&quot;;
        if(val === 5) return &quot;Read &amp; Execute&quot;;
        if(val === 4) return &quot;Read-Only&quot;;
        if(val === 3) return &quot;Write &amp; Execute&quot;;
        if(val === 2) return &quot;Write-Only&quot;;
        if(val === 1) return &quot;Execute-Only&quot;;
        return &quot;No Access&quot;;
    }

    function updateUI(octalStr) {
        document.getElementById(&#39;cmdOutput&#39;).innerText = octalStr;

        const digits = octalStr.slice(-3).split(&#39;&#39;).map(Number);
        const transBox = document.getElementById(&#39;translationOutput&#39;);
        
        transBox.innerHTML = `
            &lt;div&gt;&lt;strong&gt;Owner:&lt;/strong&gt; ${generateEnglishStr(digits[0])}&lt;/div&gt;
            &lt;div style=&quot;margin:4px 0;&quot;&gt;&lt;strong&gt;Group:&lt;/strong&gt; ${generateEnglishStr(digits[1])}&lt;/div&gt;
            &lt;div&gt;&lt;strong&gt;Public:&lt;/strong&gt; ${generateEnglishStr(digits[2])}&lt;/div&gt;
        `;
    }

    function copyCmd() {
        const octal = document.getElementById(&#39;cmdOutput&#39;).innerText;
        navigator.clipboard.writeText(`chmod ${octal} filename`).then(() =&gt; {
            alert(`Copied: chmod ${octal} filename`);
        });
    }

    window.onload = function() {
        updateFromOctal();
    };
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/6434534335969341649'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/6434534335969341649'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/03/chmod-calculator-visual-linux-file.html' title='Chmod Calculator | Visual Linux File Permissions Tool'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-9071562054089896094</id><published>2026-03-30T08:15:00.000-07:00</published><updated>2026-03-30T08:15:21.000-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Decrypt"/><category scheme="http://www.blogger.com/atom/ns#" term="Encrypt"/><category scheme="http://www.blogger.com/atom/ns#" term="Security"/><title type='text'>Encrypt Decrypt Text Online - Secret Message</title><content type='html'>&lt;title&gt;AES-256 Text Encryptor &amp; Decryptor Online | Secure Message Generator&lt;/title&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
&lt;meta name=&quot;description&quot; content=&quot;Encrypt and decrypt sensitive text, passwords, and messages using military-grade AES-256 encryption. 100% offline, secure, and runs locally in your browser.&quot;&gt;
&lt;meta property=&quot;og:title&quot; content=&quot;Secure AES-256 Text Encryptor - OTechy&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;0,800;1,500&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

&lt;style&gt;
    /* --- OTechy Design System --- */
    :root { 
        --primary: #2563eb; --primary-dark: #1e3a8a; 
        --text-dark: #0f172a; --accent: #475569; 
        --bg: #f8fafc; --white: #fff; --border: #e2e8f0; 
        --success: #10b981; --danger: #ef4444; --warning: #f59e0b;
        --font-main: &#39;Poppins&#39;, sans-serif;
    }
    
    * { box-sizing: border-box; }
    body { background-color: var(--bg); font-family: var(--font-main); color: var(--text-dark); margin: 0; line-height: 1.6; }
    .otechy-tool-wrapper { max-width: 900px; margin: 0 auto; padding: 30px 15px 50px; }
    
    /* Hero Section */
    .hero-section { text-align: center; margin-bottom: 25px; }
    .new-badge { display: inline-block; background: #eff6ff; color: #1d4ed8; padding: 4px 12px; border-radius: 50px; font-size: 10px; font-weight: 800; border: 1px solid #bfdbfe; margin-bottom: 12px; text-transform: uppercase; letter-spacing: 0.5px; }
    .hero-section h1 { font-size: clamp(22px, 5vw, 32px); font-weight: 800; margin: 0 0 8px 0; letter-spacing: -0.5px; }
    .hero-section h1 span { color: var(--primary); }
    .hero-subtitle { color: var(--accent); font-size: 13px; font-weight: 500; max-width: 600px; margin: 0 auto; }

    /* Main Tool Card */
    .calc-card { background: var(--white); border-radius: 16px; border: 1px solid var(--border); padding: 25px; box-shadow: 0 8px 25px rgba(37, 99, 235, 0.04); margin-bottom: 25px; }
    
    /* Mode Toggle */
    .mode-toggle { display: flex; background: #f1f5f9; border-radius: 10px; padding: 4px; margin-bottom: 20px; max-width: 350px; margin-left: auto; margin-right: auto; }
    .toggle-btn { flex: 1; text-align: center; padding: 10px; font-size: 12px; font-weight: 700; color: var(--accent); cursor: pointer; border-radius: 8px; transition: 0.2s; text-transform: uppercase; }
    .toggle-btn.active { background: var(--primary); color: var(--white); box-shadow: 0 4px 10px rgba(37, 99, 235, 0.2); }
    .toggle-btn.decrypt.active { background: #0f172a; color: var(--white); box-shadow: 0 4px 10px rgba(15, 23, 42, 0.2); }

    /* Inputs */
    .input-group { margin-bottom: 20px; }
    .input-group label { display: flex; justify-content: space-between; font-size: 12px; font-weight: 800; color: var(--accent); text-transform: uppercase; margin-bottom: 8px; }
    .char-count { font-size: 10px; color: #94a3b8; font-weight: 600; }
    
    .large-textarea { width: 100%; height: 180px; padding: 15px; border-radius: 12px; border: 1px solid #cbd5e1; font-family: var(--font-main); font-size: 14px; font-weight: 500; color: var(--text-dark); outline: none; transition: 0.3s; background: #f8fafc; resize: vertical; }
    .large-textarea:focus { border-color: var(--primary); background: #fff; box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.1); }
    .large-textarea.crypto-font { font-family: monospace; letter-spacing: 0.5px; font-size: 13px; line-height: 1.8; word-break: break-all; }

    /* Password Input */
    .password-panel { background: #fffbeb; border: 1px solid #fde68a; border-radius: 12px; padding: 15px; margin-bottom: 20px; display: flex; gap: 15px; align-items: center; }
    .password-panel svg { color: #b45309; flex-shrink: 0; }
    .pass-input-wrapper { flex: 1; position: relative; }
    .pass-input { width: 100%; padding: 12px 15px; border-radius: 8px; border: 1px solid #fcd34d; font-family: var(--font-main); font-size: 14px; font-weight: 700; color: var(--text-dark); outline: none; transition: 0.2s; }
    .pass-input:focus { border-color: #f59e0b; box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.2); }
    .toggle-view { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); background: none; border: none; cursor: pointer; color: #b45309; font-weight: 700; font-size: 11px; text-transform: uppercase; }

    .btn-primary { background: var(--primary); color: #fff; border: none; padding: 16px; border-radius: 10px; font-weight: 800; font-size: 15px; cursor: pointer; transition: 0.2s; width: 100%; display: flex; align-items: center; justify-content: center; gap: 8px; }
    .btn-primary.decrypt-mode { background: #0f172a; }
    .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 6px 15px rgba(37, 99, 235, 0.3); }
    .btn-primary.decrypt-mode:hover { box-shadow: 0 6px 15px rgba(15, 23, 42, 0.3); }

    /* Result Dashboard */
    .result-dashboard { display: none; background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 16px; padding: 25px; margin-top: 25px; animation: fadeIn 0.4s ease; }
    @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
    .result-dashboard.decrypt-res { background: #f0fdf4; border-color: #bbf7d0; }

    .res-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
    .res-title { font-size: 14px; font-weight: 800; color: var(--primary-dark); display: flex; align-items: center; gap: 6px; margin: 0; }
    .decrypt-res .res-title { color: #065f46; }
    
    .copy-btn { background: var(--white); border: 1px solid #bfdbfe; color: var(--primary); padding: 6px 12px; border-radius: 6px; font-size: 11px; font-weight: 700; cursor: pointer; transition: 0.2s; text-transform: uppercase; display: flex; align-items: center; gap: 4px; }
    .copy-btn:hover { background: var(--primary); color: #fff; }
    .decrypt-res .copy-btn { border-color: #a7f3d0; color: #059669; }
    .decrypt-res .copy-btn:hover { background: #059669; color: #fff; }

    .output-box { width: 100%; min-height: 120px; max-height: 300px; padding: 15px; border-radius: 10px; border: 1px solid #bfdbfe; background: var(--white); font-family: monospace; font-size: 13px; color: var(--text-dark); word-break: break-all; overflow-y: auto; user-select: all; line-height: 1.6; }
    .decrypt-res .output-box { border-color: #a7f3d0; font-family: var(--font-main); font-weight: 500; font-size: 14px; }

    /* Compact Privacy Block */
    .tool-info-block { background: #f8fafc; border: 1px solid var(--border); border-left: 4px solid var(--primary); padding: 20px; border-radius: 12px; margin-top: 25px; box-shadow: 0 2px 10px rgba(0,0,0,0.02); }
    .tool-info-block h3 { margin: 0 0 8px 0; font-size: 15px; font-weight: 800; display: flex; align-items: center; gap: 6px; color: var(--primary-dark); }
    .tool-info-block p { font-size: 12px; color: var(--accent); margin: 0 0 15px 0; line-height: 1.6; font-weight: 500; }
    
    .privacy-block { background: #ecfdf5; color: #065f46; padding: 15px; border-radius: 10px; font-size: 12px; margin-bottom: 15px; display: flex; align-items: center; gap: 12px; border: 1px solid #a7f3d0; line-height: 1.5; }
    .privacy-block svg { color: #10b981; flex-shrink: 0; }
    .privacy-block strong { display: block; margin-bottom: 2px; font-size: 13px; font-weight: 800; color: #047857; }

    .tool-info-tags { display: flex; gap: 8px; flex-wrap: wrap; }
    .t-tag { background: var(--white); border: 1px solid var(--border); padding: 4px 10px; border-radius: 4px; font-size: 9px; font-weight: 700; color: var(--primary); text-transform: uppercase; letter-spacing: 0.5px; }

    /* Compact 10 FAQ Section */
    .faq-section { margin-top: 35px; }
    .faq-section h3 { font-size: 18px; font-weight: 850; margin: 0 0 15px; color: var(--text-dark); text-align: center; }
    .faq-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; }
    .faq-card { background: #fff; padding: 15px; border-radius: 10px; border: 1px solid var(--border); border-top: 3px solid var(--primary); box-shadow: 0 2px 6px rgba(0,0,0,0.02); transition: 0.2s; }
    .faq-card:hover { transform: translateY(-2px); box-shadow: 0 6px 12px rgba(37, 99, 235, 0.05); }
    .faq-card strong { color: var(--primary-dark); display: block; margin-bottom: 6px; font-size: 13px; font-weight: 800; line-height: 1.3; }
    .faq-card p { font-size: 11px; color: var(--accent); margin: 0; line-height: 1.5; font-weight: 500; }

    /* Ads */
    .otechy-ad { background: #f1f5f9; color: #cbd5e1; font-size: 10px; font-weight: 700; text-transform: uppercase; height: 90px; display: flex; align-items: center; justify-content: center; border-radius: 10px; margin: 20px 0; width: 100%; border: 1px dashed #cbd5e1; }

    @media (max-width: 600px) {
        .password-panel { flex-direction: column; align-items: stretch; gap: 10px; }
        .password-panel svg { display: none; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;

    &lt;div class=&quot;hero-section&quot;&gt;
        &lt;div class=&quot;new-badge&quot;&gt;🔐 Security Toolkit&lt;/div&gt;
        &lt;h1&gt;Secret Message &lt;span&gt;Encryptor&lt;/span&gt;&lt;/h1&gt;
        &lt;p class=&quot;hero-subtitle&quot;&gt;Lock your sensitive data, passwords, or private messages behind a military-grade(AES-GCM 256-Bit Standard) password. Share the encrypted text safely anywhere.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 15px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT TOP&lt;/div&gt;

    &lt;div class=&quot;calc-card&quot;&gt;
        
        &lt;div class=&quot;mode-toggle&quot;&gt;
            &lt;div class=&quot;toggle-btn active&quot; id=&quot;btnEncrypt&quot; onclick=&quot;setMode(&#39;encrypt&#39;)&quot;&gt;🔒 Encrypt Text&lt;/div&gt;
            &lt;div class=&quot;toggle-btn decrypt&quot; id=&quot;btnDecrypt&quot; onclick=&quot;setMode(&#39;decrypt&#39;)&quot;&gt;🔓 Decrypt Text&lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;input-group&quot;&gt;
            &lt;label&gt;
                &lt;span id=&quot;inputLabel&quot;&gt;Enter Plain Text to Encrypt&lt;/span&gt;
                &lt;span class=&quot;char-count&quot; id=&quot;charCount&quot;&gt;0 characters&lt;/span&gt;
            &lt;/label&gt;
            &lt;textarea id=&quot;mainInput&quot; class=&quot;large-textarea&quot; placeholder=&quot;Paste your sensitive data, passwords, or private message here... Allows huge blocks of text.&quot; oninput=&quot;updateCount()&quot;&gt;&lt;/textarea&gt;
        &lt;/div&gt;

        &lt;div class=&quot;password-panel&quot;&gt;
            &lt;svg width=&quot;24&quot; height=&quot;24&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;3&quot; y=&quot;11&quot; width=&quot;18&quot; height=&quot;11&quot; rx=&quot;2&quot; ry=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M7 11V7a5 5 0 0 1 10 0v4&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
            &lt;div class=&quot;pass-input-wrapper&quot;&gt;
                &lt;input type=&quot;password&quot; id=&quot;cryptoPass&quot; class=&quot;pass-input&quot; placeholder=&quot;Set a strong decryption password...&quot;&gt;
                &lt;button class=&quot;toggle-view&quot; onclick=&quot;togglePass(&#39;cryptoPass&#39;)&quot; id=&quot;eyeBtn&quot;&gt;Show&lt;/button&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;button class=&quot;btn-primary&quot; id=&quot;actionBtn&quot; onclick=&quot;processCrypto()&quot;&gt;
            &lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;rect x=&quot;3&quot; y=&quot;11&quot; width=&quot;18&quot; height=&quot;11&quot; rx=&quot;2&quot; ry=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M7 11V7a5 5 0 0 1 10 0v4&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
            Encrypt &amp; Lock Message
        &lt;/button&gt;

        &lt;div class=&quot;result-dashboard&quot; id=&quot;resDash&quot;&gt;
            &lt;div class=&quot;res-header&quot;&gt;
                &lt;h4 class=&quot;res-title&quot; id=&quot;resTitle&quot;&gt;
                    &lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;path d=&quot;M22 11.08V12a10 10 0 1 1-5.93-9.14&quot;&gt;&lt;/path&gt;&lt;polyline points=&quot;22 4 12 14.01 9 11.01&quot;&gt;&lt;/polyline&gt;&lt;/svg&gt;
                    Encryption Successful
                &lt;/h4&gt;
                &lt;button class=&quot;copy-btn&quot; onclick=&quot;copyOutput()&quot;&gt;
                    &lt;svg width=&quot;14&quot; height=&quot;14&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot; ry=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt; Copy Result
                &lt;/button&gt;
            &lt;/div&gt;
            &lt;div class=&quot;output-box&quot; id=&quot;resOutput&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class=&quot;tool-info-block&quot;&gt;
        &lt;h3&gt;🔐 About AES-256 Encryptor&lt;/h3&gt;
        &lt;p&gt;Whether you need to send an API key to a colleague, store bank details, or send a highly confidential message over insecure channels like WhatsApp or email, this tool secures it. By using AES-256 (Advanced Encryption Standard), your text is scrambled into a cryptographic format that cannot be read without the exact password.&lt;/p&gt;
        
        &lt;div class=&quot;privacy-block&quot;&gt;
            &lt;svg width=&quot;28&quot; height=&quot;28&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M9 12l2 2 4-4&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
            &lt;div&gt;
                &lt;strong&gt;100% Privacy Guaranteed&lt;/strong&gt;
                All encryption and decryption happen dynamically inside your browser using the Web Crypto API. No text or passwords are ever uploaded to our servers.
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;tool-info-tags&quot;&gt;
            &lt;span class=&quot;t-tag&quot;&gt;AES-GCM Authenticated&lt;/span&gt;
            &lt;span class=&quot;t-tag&quot;&gt;PBKDF2 Key Derivation&lt;/span&gt;
            &lt;span class=&quot;t-tag&quot;&gt;Zero File Uploads&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 25px 0; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;

    &lt;div class=&quot;faq-section&quot;&gt;
        &lt;h3&gt;Text Encryption &amp; Security FAQ&lt;/h3&gt;
        &lt;div class=&quot;faq-grid&quot;&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;1. How does this encryption work?&lt;/strong&gt;
                &lt;p&gt;We use the browser&#39;s native Web Crypto API. Your password undergoes 100,000 iterations of PBKDF2 hashing to create an AES-256 bit key. This key is then used to securely lock the text.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;2. Can you recover my password if I forget it?&lt;/strong&gt;
                &lt;p&gt;No. We do not store your data. If you forget the decryption password, the encrypted text is permanently locked and mathematically impossible to recover.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;3. Is the encrypted text safe to send via email?&lt;/strong&gt;
                &lt;p&gt;Yes. The output is a secure Base64 string. You can safely send it via SMS, Slack, or email. The recipient must come to this page and enter the secret password to read it.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;4. Is AES-256 actually secure?&lt;/strong&gt;
                &lt;p&gt;Absolutely. AES-256 is the gold standard for encryption. It is officially used by banks, the military, and governments worldwide to protect highly classified intelligence.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;5. Why is the output so long?&lt;/strong&gt;
                &lt;p&gt;To ensure security, the algorithm adds a unique &quot;Salt&quot; and &quot;Initialization Vector (IV)&quot; to your message. This prevents hackers from recognizing patterns, increasing the overall length.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;6. Can I encrypt large amounts of text?&lt;/strong&gt;
                &lt;p&gt;Yes! We engineered the Base64 encoder to process data in chunked buffers. You can encrypt massive paragraphs, code blocks, or full documents without crashing your browser.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;7. Will the encrypted text change if I use the same password?&lt;/strong&gt;
                &lt;p&gt;Yes! Even if you encrypt the exact same word with the exact same password, the output changes completely every time. This is due to the random &quot;Salt&quot; injection, making it extremely secure.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;8. Why is decryption failing?&lt;/strong&gt;
                &lt;p&gt;Decryption will fail if you enter the wrong password, or if you did not copy the *entire* block of encrypted gibberish perfectly. Ensure no letters were cut off when copying.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;9. Is my sensitive data logged on OTechy servers?&lt;/strong&gt;
                &lt;p&gt;No. This tool operates 100% client-side. You can even load this page, disconnect from the internet, and the encryption will still work perfectly.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;10. Can I decrypt this text on a different website?&lt;/strong&gt;
                &lt;p&gt;Since we package the IV and Salt uniquely into our Base64 string, you must use this specific OTechy tool to decode it cleanly with your password.&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 25px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;
    let mode = &#39;encrypt&#39;;
    const textEncoder = new TextEncoder();
    const textDecoder = new TextDecoder();

    // UI Logic
    function setMode(newMode) {
        mode = newMode;
        document.getElementById(&#39;btnEncrypt&#39;).classList.remove(&#39;active&#39;);
        document.getElementById(&#39;btnDecrypt&#39;).classList.remove(&#39;active&#39;);
        document.getElementById(&#39;resDash&#39;).style.display = &#39;none&#39;;
        
        const mainInput = document.getElementById(&#39;mainInput&#39;);
        const passInput = document.getElementById(&#39;cryptoPass&#39;);
        const actionBtn = document.getElementById(&#39;actionBtn&#39;);
        const inputLabel = document.getElementById(&#39;inputLabel&#39;);

        mainInput.value = &#39;&#39;;
        passInput.value = &#39;&#39;;
        updateCount();

        if (mode === &#39;encrypt&#39;) {
            document.getElementById(&#39;btnEncrypt&#39;).classList.add(&#39;active&#39;);
            inputLabel.innerText = &quot;Enter Plain Text to Encrypt&quot;;
            mainInput.placeholder = &quot;Paste your sensitive data, passwords, or private message here... Allows huge blocks of text.&quot;;
            mainInput.classList.remove(&#39;crypto-font&#39;);
            actionBtn.innerHTML = `&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;rect x=&quot;3&quot; y=&quot;11&quot; width=&quot;18&quot; height=&quot;11&quot; rx=&quot;2&quot; ry=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M7 11V7a5 5 0 0 1 10 0v4&quot;&gt;&lt;/path&gt;&lt;/svg&gt; Encrypt &amp; Lock Message`;
            actionBtn.classList.remove(&#39;decrypt-mode&#39;);
            passInput.placeholder = &quot;Set a strong decryption password...&quot;;
        } else {
            document.getElementById(&#39;btnDecrypt&#39;).classList.add(&#39;active&#39;);
            inputLabel.innerText = &quot;Paste Encrypted Data to Unlock&quot;;
            mainInput.placeholder = &quot;Paste the Base64 encrypted gibberish here...&quot;;
            mainInput.classList.add(&#39;crypto-font&#39;);
            actionBtn.innerHTML = `&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;rect x=&quot;3&quot; y=&quot;11&quot; width=&quot;18&quot; height=&quot;11&quot; rx=&quot;2&quot; ry=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M7 11V7a5 5 0 0 0 10 0v4&quot;&gt;&lt;/path&gt;&lt;/svg&gt; Unlock &amp; Decrypt Message`;
            actionBtn.classList.add(&#39;decrypt-mode&#39;);
            passInput.placeholder = &quot;Enter the secret decryption password...&quot;;
        }
    }

    function togglePass(id) {
        const el = document.getElementById(id);
        const btn = document.getElementById(&#39;eyeBtn&#39;);
        if(el.type === &#39;password&#39;) {
            el.type = &#39;text&#39;;
            btn.innerText = &#39;Hide&#39;;
        } else {
            el.type = &#39;password&#39;;
            btn.innerText = &#39;Show&#39;;
        }
    }

    function updateCount() {
        const len = document.getElementById(&#39;mainInput&#39;).value.length;
        document.getElementById(&#39;charCount&#39;).innerText = `${len.toLocaleString()} characters`;
    }

    function copyOutput() {
        const text = document.getElementById(&#39;resOutput&#39;).innerText;
        navigator.clipboard.writeText(text).then(() =&gt; {
            alert(&quot;Message Copied to Clipboard!&quot;);
        });
    }

    // Cryptography Logic
    // Converts large Uint8Array to Base64 safely (prevents stack overflow on huge texts)
    function bufferToBase64(bytes) {
        let binary = &#39;&#39;;
        const len = bytes.byteLength;
        for (let i = 0; i &lt; len; i++) {
            binary += String.fromCharCode(bytes[i]);
        }
        return window.btoa(binary);
    }

    function base64ToBuffer(base64) {
        const binary_string = window.atob(base64);
        const len = binary_string.length;
        const bytes = new Uint8Array(len);
        for (let i = 0; i &lt; len; i++) {
            bytes[i] = binary_string.charCodeAt(i);
        }
        return bytes;
    }

    async function getPasswordKey(password) {
        return window.crypto.subtle.importKey(&quot;raw&quot;, textEncoder.encode(password), &quot;PBKDF2&quot;, false, [&quot;deriveKey&quot;]);
    }

    async function deriveKey(passwordKey, salt, keyUsage) {
        return window.crypto.subtle.deriveKey(
            { name: &quot;PBKDF2&quot;, salt: salt, iterations: 100000, hash: &quot;SHA-256&quot; },
            passwordKey,
            { name: &quot;AES-GCM&quot;, length: 256 },
            false,
            keyUsage
        );
    }

    async function processCrypto() {
        const input = document.getElementById(&#39;mainInput&#39;).value.trim();
        const pass = document.getElementById(&#39;cryptoPass&#39;).value;
        const dash = document.getElementById(&#39;resDash&#39;);
        const title = document.getElementById(&#39;resTitle&#39;);
        const output = document.getElementById(&#39;resOutput&#39;);

        if (!input) { alert(&quot;Please enter some text.&quot;); return; }
        if (!pass) { alert(&quot;A password is strictly required to secure the data.&quot;); return; }

        dash.style.display = &#39;none&#39;;
        
        try {
            if (mode === &#39;encrypt&#39;) {
                // Generate secure random salt and IV
                const salt = window.crypto.getRandomValues(new Uint8Array(16));
                const iv = window.crypto.getRandomValues(new Uint8Array(12));
                
                const passwordKey = await getPasswordKey(pass);
                const aesKey = await deriveKey(passwordKey, salt, [&quot;encrypt&quot;]);
                
                const encryptedContent = await window.crypto.subtle.encrypt(
                    { name: &quot;AES-GCM&quot;, iv: iv }, aesKey, textEncoder.encode(input)
                );
                
                const encryptedArr = new Uint8Array(encryptedContent);
                let payload = new Uint8Array(salt.byteLength + iv.byteLength + encryptedArr.byteLength);
                payload.set(salt, 0);
                payload.set(iv, salt.byteLength);
                payload.set(encryptedArr, salt.byteLength + iv.byteLength);
                
                output.innerText = bufferToBase64(payload);
                
                dash.className = &quot;result-dashboard&quot;;
                title.innerHTML = `&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;rect x=&quot;3&quot; y=&quot;11&quot; width=&quot;18&quot; height=&quot;11&quot; rx=&quot;2&quot; ry=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M7 11V7a5 5 0 0 1 10 0v4&quot;&gt;&lt;/path&gt;&lt;/svg&gt; Encryption Successful`;
                
            } else {
                const encryptedDataBuff = base64ToBuffer(input);
                const salt = encryptedDataBuff.slice(0, 16);
                const iv = encryptedDataBuff.slice(16, 28);
                const data = encryptedDataBuff.slice(28);
                
                const passwordKey = await getPasswordKey(pass);
                const aesKey = await deriveKey(passwordKey, salt, [&quot;decrypt&quot;]);
                
                const decryptedContent = await window.crypto.subtle.decrypt(
                    { name: &quot;AES-GCM&quot;, iv: iv }, aesKey, data
                );
                
                output.innerText = textDecoder.decode(decryptedContent);
                
                dash.className = &quot;result-dashboard decrypt-res&quot;;
                title.innerHTML = `&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;path d=&quot;M22 11.08V12a10 10 0 1 1-5.93-9.14&quot;&gt;&lt;/path&gt;&lt;polyline points=&quot;22 4 12 14.01 9 11.01&quot;&gt;&lt;/polyline&gt;&lt;/svg&gt; Decryption Successful`;
            }
            
            // Trigger reflow for animation
            void dash.offsetWidth;
            dash.style.display = &#39;block&#39;;
            
            setTimeout(() =&gt; {
                dash.scrollIntoView({ behavior: &#39;smooth&#39;, block: &#39;center&#39; });
            }, 100);

        } catch (e) {
            console.error(e);
            if(mode === &#39;decrypt&#39;) {
                alert(&quot;Decryption Failed: Incorrect password or corrupted encrypted text.&quot;);
            } else {
                alert(&quot;Encryption Failed. Ensure your browser supports Web Crypto API.&quot;);
            }
        }
    }
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/9071562054089896094'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/9071562054089896094'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/03/encrypt-decrypt-text-online-secret.html' title='Encrypt Decrypt Text Online - Secret Message'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-5648844540874233500</id><published>2026-03-30T07:35:00.000-07:00</published><updated>2026-03-30T07:35:53.046-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Password Checker"/><category scheme="http://www.blogger.com/atom/ns#" term="Security"/><title type='text'>Password Strength Meter &amp; Time to Crack Calculator</title><content type='html'>&lt;title&gt;Password Strength Meter &amp; Time to Crack Calculator | OTechy&lt;/title&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
&lt;meta name=&quot;description&quot; content=&quot;Test your password strength instantly. Our offline tool calculates exactly how long it would take a hacker to crack your password using advanced algorithms.&quot;&gt;
&lt;meta property=&quot;og:title&quot; content=&quot;Time to Crack Password Meter - OTechy&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;0,800;1,500&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/zxcvbn/4.4.2/zxcvbn.js&quot;&gt;&lt;/script&gt;

&lt;style&gt;
    /* --- OTechy Design System --- */
    :root { 
        --primary: #2563eb; --primary-dark: #1e3a8a; 
        --text-dark: #0f172a; --accent: #475569; 
        --bg: #f8fafc; --white: #fff; --border: #e2e8f0; 
        --danger: #ef4444; --warning: #f59e0b; --success: #10b981; --excellent: #059669;
        --font-main: &#39;Poppins&#39;, sans-serif;
    }
    
    * { box-sizing: border-box; }
    body { background-color: var(--bg); font-family: var(--font-main); color: var(--text-dark); margin: 0; line-height: 1.6; }
    .otechy-tool-wrapper { max-width: 850px; margin: 0 auto; padding: 30px 15px 50px; }
    
    /* Hero Section */
    .hero-section { text-align: center; margin-bottom: 25px; }
    .new-badge { display: inline-block; background: #eff6ff; color: #1d4ed8; padding: 4px 12px; border-radius: 50px; font-size: 10px; font-weight: 800; border: 1px solid #bfdbfe; margin-bottom: 12px; text-transform: uppercase; letter-spacing: 0.5px; }
    .hero-section h1 { font-size: clamp(22px, 5vw, 32px); font-weight: 800; margin: 0 0 8px 0; letter-spacing: -0.5px; }
    .hero-section h1 span { color: var(--primary); }
    .hero-subtitle { color: var(--accent); font-size: 13px; font-weight: 500; max-width: 600px; margin: 0 auto; }

    /* Input Card */
    .calc-card { background: var(--white); border-radius: 16px; border: 1px solid var(--border); padding: 25px; box-shadow: 0 8px 25px rgba(37, 99, 235, 0.04); margin-bottom: 25px; }
    
    .password-wrapper { position: relative; margin-bottom: 25px; }
    .password-input { width: 100%; padding: 18px 50px 18px 20px; border-radius: 12px; border: 2px solid var(--border); font-family: var(--font-main); font-size: 20px; font-weight: 700; color: var(--text-dark); outline: none; transition: 0.3s; background: #f8fafc; letter-spacing: 2px; }
    .password-input:focus { border-color: var(--primary); background: #fff; box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.1); }
    .password-input::placeholder { color: #94a3b8; font-weight: 500; font-size: 15px; letter-spacing: normal; }
    
    .toggle-pass { position: absolute; right: 15px; top: 50%; transform: translateY(-50%); background: none; border: none; color: var(--accent); cursor: pointer; padding: 5px; display: flex; align-items: center; justify-content: center; transition: 0.2s; }
    .toggle-pass:hover { color: var(--primary); }

    /* Results Dashboard */
    .dashboard-grid { background: var(--white); border-radius: 16px; border: 1px solid var(--border); padding: 25px; box-shadow: 0 8px 25px rgba(0,0,0,0.03); margin-bottom: 25px; text-align: center; }
    
    .crack-time-title { font-size: 12px; font-weight: 800; color: var(--accent); text-transform: uppercase; letter-spacing: 1px; margin-bottom: 5px; }
    .crack-time-val { font-size: clamp(28px, 6vw, 42px); font-weight: 850; line-height: 1.1; margin-bottom: 20px; color: var(--text-dark); transition: color 0.3s; }
    
    /* Progress Bar */
    .strength-meter { width: 100%; height: 10px; background: #e2e8f0; border-radius: 10px; overflow: hidden; margin-bottom: 10px; display: flex; }
    .strength-fill { height: 100%; width: 0%; transition: all 0.4s ease-out; }
    .meter-labels { display: flex; justify-content: space-between; font-size: 10px; font-weight: 700; color: var(--accent); text-transform: uppercase; margin-bottom: 20px; }

    /* Insights Box */
    .insight-box { background: #f8fafc; border: 1px solid var(--border); border-left: 4px solid var(--primary); border-radius: 12px; padding: 20px; text-align: left; display: none; animation: fadeIn 0.3s ease; }
    @keyframes fadeIn { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }
    .insight-box h4 { margin: 0 0 12px; font-size: 14px; font-weight: 800; color: var(--primary-dark); display: flex; align-items: center; gap: 8px; }
    
    .insight-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; }
    .insight-list li { padding: 10px 12px; border-radius: 8px; background: var(--white); display: flex; align-items: flex-start; gap: 10px; font-size: 12px; font-weight: 600; color: var(--text-dark); border: 1px solid var(--border); }
    .insight-list li.warn-row { background: #fef2f2; border-color: #fecaca; color: #991b1b; }
    .insight-list li.good-row { background: #f0fdf4; border-color: #bbf7d0; color: #065f46; }
    .insight-list li span.i-icon { font-size: 16px; margin-top: -2px; }

    /* Compact Tool Info &amp; Privacy Block */
    .tool-info-block { background: #f8fafc; border: 1px solid var(--border); border-left: 4px solid var(--primary); padding: 15px 20px; border-radius: 12px; margin-top: 20px; box-shadow: 0 2px 10px rgba(0,0,0,0.02); }
    .tool-info-block h3 { margin: 0 0 8px 0; font-size: 15px; font-weight: 800; display: flex; align-items: center; gap: 6px; color: var(--primary-dark); }
    .tool-info-block p { font-size: 12px; color: var(--accent); margin: 0 0 12px 0; line-height: 1.5; font-weight: 500; }
    
    .privacy-block { background: #ecfdf5; color: #065f46; padding: 15px; border-radius: 10px; font-size: 12px; margin-top: 15px; margin-bottom: 15px; display: flex; align-items: center; gap: 12px; border: 1px solid #a7f3d0; line-height: 1.5; }
    .privacy-block svg { color: #10b981; flex-shrink: 0; }
    .privacy-block strong { display: block; margin-bottom: 2px; font-size: 13px; font-weight: 800; color: #047857; }

    .tool-info-tags { display: flex; gap: 8px; flex-wrap: wrap; }
    .t-tag { background: var(--white); border: 1px solid var(--border); padding: 4px 10px; border-radius: 4px; font-size: 9px; font-weight: 700; color: var(--primary); text-transform: uppercase; letter-spacing: 0.5px; }

    /* Compact 10 FAQ Section */
    .faq-section { margin-top: 35px; }
    .faq-section h3 { font-size: 18px; font-weight: 850; margin: 0 0 15px; color: var(--text-dark); text-align: center; }
    .faq-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; }
    .faq-card { background: #fff; padding: 15px; border-radius: 10px; border: 1px solid var(--border); border-top: 3px solid var(--primary); box-shadow: 0 2px 6px rgba(0,0,0,0.02); transition: 0.2s; }
    .faq-card:hover { transform: translateY(-2px); box-shadow: 0 6px 12px rgba(37, 99, 235, 0.05); }
    .faq-card strong { color: var(--primary-dark); display: block; margin-bottom: 6px; font-size: 13px; font-weight: 800; line-height: 1.3; }
    .faq-card p { font-size: 11px; color: var(--accent); margin: 0; line-height: 1.5; font-weight: 500; }

    /* Ads */
    .otechy-ad { background: #f1f5f9; color: #cbd5e1; font-size: 10px; font-weight: 700; text-transform: uppercase; height: 90px; display: flex; align-items: center; justify-content: center; border-radius: 10px; margin: 20px 0; width: 100%; border: 1px dashed #cbd5e1; }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;

    &lt;div class=&quot;hero-section&quot;&gt;
        &lt;div class=&quot;new-badge&quot;&gt;🛡️ Password Tooklit&lt;/div&gt;
        &lt;h1&gt;Password &lt;span&gt;Strength Meter&lt;/span&gt;&lt;/h1&gt;
        &lt;p class=&quot;hero-subtitle&quot;&gt;Find out exactly how long it takes a hacker to crack your password. Our algorithm detects dictionary words, predictable patterns, and names.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 15px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT TOP&lt;/div&gt;

    &lt;div class=&quot;calc-card&quot;&gt;
        &lt;div class=&quot;password-wrapper&quot;&gt;
            &lt;input type=&quot;password&quot; id=&quot;passInput&quot; class=&quot;password-input&quot; placeholder=&quot;Type a password to test...&quot; autofocus&gt;
            &lt;button class=&quot;toggle-pass&quot; onclick=&quot;toggleVisibility()&quot; id=&quot;eyeBtn&quot; title=&quot;Show/Hide Password&quot;&gt;
                &lt;svg width=&quot;24&quot; height=&quot;24&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z&quot;&gt;&lt;/path&gt;&lt;circle cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;3&quot;&gt;&lt;/circle&gt;&lt;/svg&gt;
            &lt;/button&gt;
        &lt;/div&gt;

        &lt;div class=&quot;dashboard-grid&quot;&gt;
            &lt;div class=&quot;crack-time-title&quot;&gt;Estimated Time to Crack&lt;/div&gt;
            &lt;div class=&quot;crack-time-val&quot; id=&quot;crackTime&quot;&gt;Enter Password&lt;/div&gt;
            
            &lt;div class=&quot;strength-meter&quot;&gt;
                &lt;div class=&quot;strength-fill&quot; id=&quot;meterFill&quot;&gt;&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;meter-labels&quot;&gt;
                &lt;span&gt;Weak&lt;/span&gt;
                &lt;span&gt;Fair&lt;/span&gt;
                &lt;span&gt;Good&lt;/span&gt;
                &lt;span&gt;Strong&lt;/span&gt;
            &lt;/div&gt;

            &lt;div class=&quot;insight-box&quot; id=&quot;insightBox&quot;&gt;
                &lt;h4&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;circle cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;10&quot;&gt;&lt;/circle&gt;&lt;line x1=&quot;12&quot; y1=&quot;16&quot; x2=&quot;12&quot; y2=&quot;12&quot;&gt;&lt;/line&gt;&lt;line x1=&quot;12&quot; y1=&quot;8&quot; x2=&quot;12.01&quot; y2=&quot;8&quot;&gt;&lt;/line&gt;&lt;/svg&gt; Security Analysis&lt;/h4&gt;
                &lt;ul class=&quot;insight-list&quot; id=&quot;feedbackList&quot;&gt;
                    &lt;/ul&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;tool-info-block&quot;&gt;
        &lt;h3&gt;🔐 About Password Strength Meter&lt;/h3&gt;
        &lt;p&gt;Traditional password meters only check if you included a capital letter or symbol. Our tool uses Dropbox&#39;s open-source &lt;strong&gt;zxcvbn&lt;/strong&gt; algorithm. It analyzes thousands of common dictionary words, leaked passwords, and predictable keyboard patterns (like &quot;qwerty&quot;) to give you a realistic cracking time based on a hacker capable of 10 billion guesses per second.&lt;/p&gt;
        
        &lt;div class=&quot;privacy-block&quot;&gt;
            &lt;svg width=&quot;28&quot; height=&quot;28&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M9 12l2 2 4-4&quot;&gt;&lt;/path&gt;&lt;/svg&gt;
            &lt;div&gt;
                &lt;strong&gt;100% Privacy Guaranteed&lt;/strong&gt;
                Checks happen within your browser. No data is uploaded to any server.
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;tool-info-tags&quot;&gt;
            &lt;span class=&quot;t-tag&quot;&gt;100% Local Processing&lt;/span&gt;
            &lt;span class=&quot;t-tag&quot;&gt;Dictionary Attack Simulation&lt;/span&gt;
            &lt;span class=&quot;t-tag&quot;&gt;Zero Server Uploads&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 25px 0; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;

    &lt;div class=&quot;faq-section&quot;&gt;
        &lt;h3&gt;Password Security FAQ&lt;/h3&gt;
        &lt;div class=&quot;faq-grid&quot;&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;1. Is my password sent to your server?&lt;/strong&gt;
                &lt;p&gt;No. &lt;strong&gt;Zero data leaves your browser.&lt;/strong&gt; The entire algorithm runs locally via JavaScript. Your input is never logged, stored, or transmitted over the internet.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;2. What does &quot;Time to Crack&quot; mean?&lt;/strong&gt;
                &lt;p&gt;It estimates how long it would take a hacker using dedicated, high-speed hardware (capable of guessing billions of times per second) to force-guess your password.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;3. Why did my password fail immediately?&lt;/strong&gt;
                &lt;p&gt;If you used a dictionary word (like &quot;Monkey123&quot;), the algorithm detects it instantly. Hackers don&#39;t guess randomly; they use automated dictionaries of common words.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;4. What is the zxcvbn algorithm?&lt;/strong&gt;
                &lt;p&gt;Developed by Dropbox, zxcvbn is an open-source password strength estimator. It recognizes patterns like dates, names, common substitutions (e.g., &#39;@&#39; for &#39;a&#39;), and keyboard walks.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;5. Are symbols mandatory for a strong password?&lt;/strong&gt;
                &lt;p&gt;Not always! A very long passphrase consisting of four random words (e.g., &quot;horse-battery-staple-correct&quot;) is often vastly stronger than a short password packed with symbols.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;6. Why is my name a bad password?&lt;/strong&gt;
                &lt;p&gt;Hackers use open-source lists of the most common first and last names in the world. If your password relies on a name, it will be cracked in milliseconds.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;7. Is it enough to change &quot;o&quot; to &quot;0&quot;?&lt;/strong&gt;
                &lt;p&gt;No. These are called predictable substitutions (l33t speak). Cracking software is specifically programmed to automatically test these substitutions immediately.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;8. What is password entropy?&lt;/strong&gt;
                &lt;p&gt;Entropy is a measure of unpredictability. A higher entropy means there are more possible combinations, exponentially increasing the time it takes to crack it.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;9. How strong should my master password be?&lt;/strong&gt;
                &lt;p&gt;If you are creating a master password for a password manager or your primary email, aim for a cracking time of &quot;Centuries&quot; or higher for total peace of mind.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;10. Should I use a Password Manager?&lt;/strong&gt;
                &lt;p&gt;Absolutely. You should only have to remember one incredibly strong master passphrase. Use a password manager to generate and store random strings for every other website.&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 25px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;
    // --- 1. View Toggle Logic ---
    function toggleVisibility() {
        const input = document.getElementById(&#39;passInput&#39;);
        const btn = document.getElementById(&#39;eyeBtn&#39;);
        if (input.type === &#39;password&#39;) {
            input.type = &#39;text&#39;;
            btn.innerHTML = `&lt;svg width=&quot;24&quot; height=&quot;24&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24&quot;&gt;&lt;/path&gt;&lt;line x1=&quot;1&quot; y1=&quot;1&quot; x2=&quot;23&quot; y2=&quot;23&quot;&gt;&lt;/line&gt;&lt;/svg&gt;`;
            btn.style.color = &quot;var(--primary)&quot;;
        } else {
            input.type = &#39;password&#39;;
            btn.innerHTML = `&lt;svg width=&quot;24&quot; height=&quot;24&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z&quot;&gt;&lt;/path&gt;&lt;circle cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;3&quot;&gt;&lt;/circle&gt;&lt;/svg&gt;`;
            btn.style.color = &quot;var(--accent)&quot;;
        }
    }

    // --- 2. zxcvbn Analysis Engine ---
    const passInput = document.getElementById(&#39;passInput&#39;);
    const crackTimeDisplay = document.getElementById(&#39;crackTime&#39;);
    const meterFill = document.getElementById(&#39;meterFill&#39;);
    const insightBox = document.getElementById(&#39;insightBox&#39;);
    const feedbackList = document.getElementById(&#39;feedbackList&#39;);

    passInput.addEventListener(&#39;input&#39;, function() {
        const val = this.value;

        // Reset state if empty
        if (!val) {
            crackTimeDisplay.innerText = &quot;Enter Password&quot;;
            crackTimeDisplay.style.color = &quot;var(--text-dark)&quot;;
            meterFill.style.width = &quot;0%&quot;;
            insightBox.style.display = &quot;none&quot;;
            return;
        }

        // Run zxcvbn algorithm
        const result = zxcvbn(val);
        
        // 1. Time to Crack
        const timeToCrack = result.crack_times_display.offline_fast_hashing_1e10_per_second;
        crackTimeDisplay.innerText = timeToCrack.charAt(0).toUpperCase() + timeToCrack.slice(1);

        // 2. Update Progress Bar &amp; Colors based on Score (0-4)
        const score = result.score;
        let color = &quot;&quot;;
        let width = &quot;&quot;;

        if (score === 0) { color = &quot;var(--danger)&quot;; width = &quot;15%&quot;; }
        else if (score === 1) { color = &quot;var(--danger)&quot;; width = &quot;25%&quot;; }
        else if (score === 2) { color = &quot;var(--warning)&quot;; width = &quot;50%&quot;; }
        else if (score === 3) { color = &quot;var(--success)&quot;; width = &quot;75%&quot;; }
        else if (score === 4) { color = &quot;var(--excellent)&quot;; width = &quot;100%&quot;; }

        meterFill.style.width = width;
        meterFill.style.background = color;
        crackTimeDisplay.style.color = color;

        // 3. Generate Smart Feedback
        let feedbackHtml = &#39;&#39;;
        const warning = result.feedback.warning;
        const suggestions = result.feedback.suggestions;

        if (warning) {
            feedbackHtml += `&lt;li class=&quot;warn-row&quot;&gt;&lt;span class=&quot;i-icon&quot;&gt;⚠️&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Warning:&lt;/strong&gt; ${warning}&lt;/div&gt;&lt;/li&gt;`;
        }

        if (suggestions &amp;&amp; suggestions.length &gt; 0) {
            suggestions.forEach(suggestion =&gt; {
                feedbackHtml += `&lt;li&gt;&lt;span class=&quot;i-icon&quot;&gt;💡&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Tip:&lt;/strong&gt; ${suggestion}&lt;/div&gt;&lt;/li&gt;`;
            });
        }

        if (score === 4 &amp;&amp; feedbackHtml === &#39;&#39;) {
            feedbackHtml += `&lt;li class=&quot;good-row&quot;&gt;&lt;span class=&quot;i-icon&quot;&gt;✅&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Excellent!&lt;/strong&gt; This is a highly resilient password capable of resisting advanced brute-force and dictionary attacks.&lt;/div&gt;&lt;/li&gt;`;
        }

        if (feedbackHtml !== &#39;&#39;) {
            insightBox.style.display = &quot;block&quot;;
            feedbackList.innerHTML = feedbackHtml;
        } else {
            insightBox.style.display = &quot;none&quot;;
        }
    });
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/5648844540874233500'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/5648844540874233500'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/03/password-strength-meter-time-to-crack.html' title='Password Strength Meter &amp; Time to Crack Calculator'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-8044336879647827023</id><published>2026-03-30T07:20:00.000-07:00</published><updated>2026-03-30T07:20:38.251-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="File Hash"/><category scheme="http://www.blogger.com/atom/ns#" term="Security"/><title type='text'>File Hash Generator Online</title><content type='html'>&lt;title&gt;File Hash Generator Online | SHA-256 &amp; Checksum Verifier&lt;/title&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
&lt;meta name=&quot;description&quot; content=&quot;Generate secure SHA-256, SHA-1, and SHA-512 file hashes instantly in your browser. Verify checksums to ensure downloaded files are safe and uncorrupted.&quot;&gt;
&lt;meta property=&quot;og:title&quot; content=&quot;Secure File Hash Generator - OTechy&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;0,800;1,500&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

&lt;style&gt;
    /* --- OTechy Design System --- */
    :root { 
        --primary: #2563eb; --primary-dark: #1e3a8a; 
        --text-dark: #0f172a; --accent: #475569; 
        --bg: #f8fafc; --white: #fff; --border: #e2e8f0; 
        --success: #10b981; --danger: #ef4444; --warning: #f59e0b;
        --font-main: &#39;Poppins&#39;, sans-serif;
    }
    
    * { box-sizing: border-box; }
    body { background-color: var(--bg); font-family: var(--font-main); color: var(--text-dark); margin: 0; line-height: 1.6; }
    .otechy-tool-wrapper { max-width: 900px; margin: 0 auto; padding: 30px 15px 50px; }
    
    /* Hero Section */
    .hero-section { text-align: center; margin-bottom: 25px; }
    .new-badge { display: inline-block; background: #ecfdf5; color: #065f46; padding: 4px 10px; border-radius: 50px; font-size: 10px; font-weight: 800; border: 1px solid #a7f3d0; margin-bottom: 10px; text-transform: uppercase; letter-spacing: 0.5px; }
    .hero-section h1 { font-size: clamp(22px, 5vw, 32px); font-weight: 800; margin: 0 0 8px 0; letter-spacing: -0.5px; }
    .hero-section h1 span { color: var(--primary); }
    .hero-subtitle { color: var(--accent); font-size: 13px; font-weight: 500; max-width: 600px; margin: 0 auto; }

    /* Main Tool Card */
    .calc-card { background: var(--white); border-radius: 16px; border: 1px solid var(--border); padding: 25px; box-shadow: 0 8px 25px rgba(37, 99, 235, 0.04); margin-bottom: 25px; }
    
    /* Drag and Drop Zone */
    .drop-zone { border: 2px dashed #cbd5e1; border-radius: 12px; padding: 40px 20px; text-align: center; cursor: pointer; background: #f8fafc; transition: all 0.3s ease; margin-bottom: 20px; }
    .drop-zone:hover, .drop-zone.dragover { border-color: var(--primary); background: #eff6ff; }
    .zone-icon { color: var(--primary); margin-bottom: 15px; opacity: 0.8; }
    .zone-text { font-size: 15px; font-weight: 700; color: var(--text-dark); margin: 0 0 5px; }
    .zone-sub { font-size: 11px; color: var(--accent); font-weight: 500; margin: 0; }
    @keyframes spin { 100% { transform: rotate(360deg); } }
    .spin { animation: spin 1.5s linear infinite; }

    /* File Ledger */
    .ledger-container { display: none; border-top: 1px solid var(--border); padding-top: 20px; animation: fadeIn 0.4s ease; }
    @keyframes fadeIn { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }
    .ledger-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; }
    .ledger-title { font-size: 14px; font-weight: 800; color: var(--text-dark); margin: 0; }
    .status-badge { background: #eff6ff; color: var(--primary-dark); padding: 4px 10px; border-radius: 6px; font-size: 10px; font-weight: 800; border: 1px solid #bfdbfe; text-transform: uppercase; }
    
    /* Hash Results */
    .hash-grid { display: flex; flex-direction: column; gap: 15px; }
    .hash-row { background: #f8fafc; border: 1px solid var(--border); border-radius: 8px; padding: 12px 15px; display: flex; flex-direction: column; gap: 8px; }
    .hash-lbl { font-size: 11px; font-weight: 800; color: var(--primary-dark); text-transform: uppercase; letter-spacing: 0.5px; display: flex; justify-content: space-between; }
    .hash-val { font-family: monospace; font-size: 13px; color: var(--text-dark); word-break: break-all; background: var(--white); padding: 10px; border-radius: 6px; border: 1px solid #cbd5e1; user-select: all; }
    
    .copy-btn { background: none; border: none; color: var(--primary); font-size: 11px; font-weight: 700; cursor: pointer; text-transform: uppercase; display: flex; align-items: center; gap: 4px; transition: 0.2s; }
    .copy-btn:hover { color: var(--primary-dark); }

    /* Verify Tool */
    .verify-box { background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 12px; padding: 20px; margin-top: 25px; }
    .verify-box h4 { margin: 0 0 10px; font-size: 13px; font-weight: 800; color: var(--primary-dark); display: flex; align-items: center; gap: 6px; }
    .verify-input-group { display: flex; gap: 10px; }
    .form-control { flex: 1; padding: 10px 14px; border-radius: 8px; border: 1px solid #93c5fd; font-family: monospace; font-size: 12px; color: var(--text-dark); outline: none; transition: 0.2s; }
    .form-control:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1); }
    .btn-verify { background: var(--primary); color: #fff; border: none; padding: 10px 20px; border-radius: 8px; font-weight: 700; font-size: 12px; cursor: pointer; transition: 0.2s; font-family: var(--font-main); white-space: nowrap; }
    .btn-verify:hover { background: var(--primary-dark); }
    .verify-result { margin-top: 10px; font-size: 12px; font-weight: 700; display: none; padding: 8px 12px; border-radius: 6px; }
    .match-yes { background: #ecfdf5; color: #065f46; border: 1px solid #a7f3d0; }
    .match-no { background: #fef2f2; color: #991b1b; border: 1px solid #fecaca; }

    /* Compact OTechy Tool Info Block */
    .tool-info-block { background: #f8fafc; border: 1px solid var(--border); border-left: 4px solid var(--primary); padding: 15px 20px; border-radius: 12px; margin-top: 20px; box-shadow: 0 2px 10px rgba(0,0,0,0.02); }
    .tool-info-block h3 { margin: 0 0 8px 0; font-size: 15px; font-weight: 800; display: flex; align-items: center; gap: 6px; color: var(--primary-dark); }
    .tool-info-block p { font-size: 12px; color: var(--accent); margin: 0 0 12px 0; line-height: 1.5; font-weight: 500; }
    .tool-info-tags { display: flex; gap: 8px; flex-wrap: wrap; }
    .t-tag { background: var(--white); border: 1px solid var(--border); padding: 4px 10px; border-radius: 4px; font-size: 9px; font-weight: 700; color: var(--primary); text-transform: uppercase; letter-spacing: 0.5px; }

    /* Compact 10 FAQ Section */
    .faq-section { margin-top: 35px; }
    .faq-section h3 { font-size: 18px; font-weight: 850; margin: 0 0 15px; color: var(--text-dark); text-align: center; }
    .faq-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; }
    .faq-card { background: #fff; padding: 15px; border-radius: 10px; border: 1px solid var(--border); border-top: 3px solid var(--primary); box-shadow: 0 2px 6px rgba(0,0,0,0.02); transition: 0.2s; }
    .faq-card:hover { transform: translateY(-2px); box-shadow: 0 6px 12px rgba(37, 99, 235, 0.05); }
    .faq-card strong { color: var(--primary-dark); display: block; margin-bottom: 6px; font-size: 13px; font-weight: 800; line-height: 1.3; }
    .faq-card p { font-size: 11px; color: var(--accent); margin: 0; line-height: 1.5; font-weight: 500; }

    /* Ads */
    .otechy-ad { background: #f1f5f9; color: #cbd5e1; font-size: 10px; font-weight: 700; text-transform: uppercase; height: 90px; display: flex; align-items: center; justify-content: center; border-radius: 10px; margin: 20px 0; width: 100%; border: 1px dashed #cbd5e1; }

    @media (max-width: 600px) {
        .verify-input-group { flex-direction: column; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;

    &lt;div class=&quot;hero-section&quot;&gt;
        &lt;div class=&quot;new-badge&quot;&gt;🔐 Crypto Toolkit&lt;/div&gt;
        &lt;h1&gt;Secure File &lt;span&gt;Hash Generator&lt;/span&gt;&lt;/h1&gt;
        &lt;p class=&quot;hero-subtitle&quot;&gt;Generate SHA-256 and SHA-512 checksums instantly in your browser to verify file integrity. 100% private with no server uploads.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 15px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT TOP&lt;/div&gt;

    &lt;div class=&quot;calc-card&quot;&gt;

        &lt;div class=&quot;drop-zone&quot; id=&quot;dropZone&quot; onclick=&quot;document.getElementById(&#39;fileInput&#39;).click()&quot;&gt;
            &lt;div class=&quot;zone-icon&quot; id=&quot;zoneIcon&quot;&gt;
                &lt;svg width=&quot;42&quot; height=&quot;42&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4&quot;&gt;&lt;/path&gt;&lt;polyline points=&quot;17 8 12 3 7 8&quot;&gt;&lt;/polyline&gt;&lt;line x1=&quot;12&quot; y1=&quot;3&quot; x2=&quot;12&quot; y2=&quot;15&quot;&gt;&lt;/line&gt;&lt;/svg&gt;
            &lt;/div&gt;
            &lt;p class=&quot;zone-text&quot; id=&quot;zoneText&quot;&gt;Click or Drag a File Here&lt;/p&gt;
            &lt;p class=&quot;zone-sub&quot; id=&quot;zoneSub&quot;&gt;Supports ISO, ZIP, PDF, EXE and all other file types&lt;/p&gt;
            &lt;input type=&quot;file&quot; id=&quot;fileInput&quot; style=&quot;display:none&quot; onchange=&quot;handleFile(this.files)&quot;&gt;
        &lt;/div&gt;

        &lt;div class=&quot;ledger-container&quot; id=&quot;ledgerBox&quot;&gt;
            &lt;div class=&quot;ledger-header&quot;&gt;
                &lt;h4 class=&quot;ledger-title&quot; id=&quot;fileNameTitle&quot;&gt;File: loading...&lt;/h4&gt;
                &lt;div class=&quot;status-badge&quot; id=&quot;fileSizeBadge&quot;&gt;0 MB&lt;/div&gt;
            &lt;/div&gt;
            
            &lt;div class=&quot;hash-grid&quot;&gt;
                &lt;div class=&quot;hash-row&quot;&gt;
                    &lt;div class=&quot;hash-lbl&quot;&gt;
                        SHA-256 (Recommended)
                        &lt;button class=&quot;copy-btn&quot; onclick=&quot;copyHash(&#39;sha256&#39;)&quot;&gt;&lt;svg width=&quot;12&quot; height=&quot;12&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot; ry=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt; Copy&lt;/button&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;hash-val&quot; id=&quot;val-sha256&quot;&gt;Calculating...&lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;hash-row&quot;&gt;
                    &lt;div class=&quot;hash-lbl&quot;&gt;
                        SHA-512 (Maximum Security)
                        &lt;button class=&quot;copy-btn&quot; onclick=&quot;copyHash(&#39;sha512&#39;)&quot;&gt;&lt;svg width=&quot;12&quot; height=&quot;12&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot; ry=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt; Copy&lt;/button&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;hash-val&quot; id=&quot;val-sha512&quot;&gt;Calculating...&lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;hash-row&quot;&gt;
                    &lt;div class=&quot;hash-lbl&quot;&gt;
                        SHA-1 (Legacy)
                        &lt;button class=&quot;copy-btn&quot; onclick=&quot;copyHash(&#39;sha1&#39;)&quot;&gt;&lt;svg width=&quot;12&quot; height=&quot;12&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot; ry=&quot;2&quot;&gt;&lt;/rect&gt;&lt;path d=&quot;M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1&quot;&gt;&lt;/path&gt;&lt;/svg&gt; Copy&lt;/button&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;hash-val&quot; id=&quot;val-sha1&quot;&gt;Calculating...&lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;

            &lt;div class=&quot;verify-box&quot;&gt;
                &lt;h4&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M22 11.08V12a10 10 0 1 1-5.93-9.14&quot;&gt;&lt;/path&gt;&lt;polyline points=&quot;22 4 12 14.01 9 11.01&quot;&gt;&lt;/polyline&gt;&lt;/svg&gt; Checksum Verifier&lt;/h4&gt;
                &lt;p style=&quot;font-size:11px; color:var(--accent); margin-top:0; margin-bottom:12px;&quot;&gt;Paste the official hash provided by the software developer below to verify if your file matches exactly.&lt;/p&gt;
                &lt;div class=&quot;verify-input-group&quot;&gt;
                    &lt;input type=&quot;text&quot; id=&quot;verifyInput&quot; class=&quot;form-control&quot; placeholder=&quot;Paste official SHA-256, SHA-512, or SHA-1 hash here...&quot;&gt;
                    &lt;button class=&quot;btn-verify&quot; onclick=&quot;verifyHash()&quot;&gt;Verify Match&lt;/button&gt;
                &lt;/div&gt;
                &lt;div class=&quot;verify-result&quot; id=&quot;verifyResult&quot;&gt;&lt;/div&gt;
            &lt;/div&gt;

        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;tool-info-block&quot;&gt;
        &lt;h3&gt;🔐 About Hash Generator&lt;/h3&gt;
        &lt;p&gt;A file hash (or checksum) is a digital fingerprint of a file. When you download a large file like an OS installer or software archive, developers provide an official hash. By dropping your file here, you can generate its hash and compare it. If the hashes match, your file is authentic and safe. If they differ, the file is corrupted or tampered with.&lt;/p&gt;
        &lt;div class=&quot;tool-info-tags&quot;&gt;
            &lt;span class=&quot;t-tag&quot;&gt;100% Local Browser Engine&lt;/span&gt;
            &lt;span class=&quot;t-tag&quot;&gt;Web Crypto API Supported&lt;/span&gt;
            &lt;span class=&quot;t-tag&quot;&gt;Zero File Uploads&lt;/span&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 25px 0; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;

    &lt;div class=&quot;faq-section&quot;&gt;
        &lt;h3&gt;File Hashing &amp; Integrity FAQ&lt;/h3&gt;
        &lt;div class=&quot;faq-grid&quot;&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;1. What is a file hash?&lt;/strong&gt;
                &lt;p&gt;A hash is a unique string of letters and numbers generated by running a file through a mathematical algorithm. Even changing one pixel in an image changes the entire hash.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;2. Are my files uploaded to your servers?&lt;/strong&gt;
                &lt;p&gt;No. This tool uses the HTML5 Web Crypto API. The cryptographic math is performed locally inside your computer&#39;s RAM. No data ever leaves your device.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;3. Why do I need to check SHA-256?&lt;/strong&gt;
                &lt;p&gt;Checking the SHA-256 hash ensures that the file you downloaded is exactly the same as the original, meaning it hasn&#39;t been corrupted during download or infected by malware.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;4. What is the difference between SHA-1 and SHA-256?&lt;/strong&gt;
                &lt;p&gt;SHA-256 produces a longer, mathematically stronger signature. SHA-1 is an older legacy format that is faster but considered vulnerable to modern collision attacks.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;5. Does this tool support MD5?&lt;/strong&gt;
                &lt;p&gt;To prioritize security and pure zero-dependency performance, we utilize the browser&#39;s native Web Crypto API, which officially champions the highly secure SHA family over the deprecated MD5 standard.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;6. Can a file have the same hash as another?&lt;/strong&gt;
                &lt;p&gt;In secure formats like SHA-256, the probability of two different files producing the exact same hash (a collision) is practically zero.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;7. Why did the hash turn red when I verified?&lt;/strong&gt;
                &lt;p&gt;If the verifier turns red, it means the file you dropped does not match the official hash. Do not install or execute that file—it is corrupted or tampered with.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;8. Is there a file size limit?&lt;/strong&gt;
                &lt;p&gt;Since the processing happens in your browser&#39;s memory, you can safely hash files up to a few gigabytes depending on your computer&#39;s available RAM.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;9. How do I find the official hash?&lt;/strong&gt;
                &lt;p&gt;Reputable software developers (like Ubuntu, Microsoft, or open-source projects) usually publish the SHA-256 string right next to the download button on their website.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;10. Can I reverse a hash to get the file back?&lt;/strong&gt;
                &lt;p&gt;No. Hashing is a one-way cryptographic function. You cannot turn a SHA-256 string back into a .zip or .iso file.&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 25px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;
    let currentHashes = {
        sha256: &#39;&#39;,
        sha512: &#39;&#39;,
        sha1: &#39;&#39;
    };

    function formatBytes(bytes) {
        if (bytes === 0) return &#39;0 Bytes&#39;;
        const k = 1024, sizes = [&#39;Bytes&#39;, &#39;KB&#39;, &#39;MB&#39;, &#39;GB&#39;];
        const i = Math.floor(Math.log(bytes) / Math.log(k));
        return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + &#39; &#39; + sizes[i];
    }

    // Drag and Drop Logic
    const dropZone = document.getElementById(&#39;dropZone&#39;);
    [&#39;dragenter&#39;, &#39;dragover&#39;, &#39;dragleave&#39;, &#39;drop&#39;].forEach(e =&gt; {
        dropZone.addEventListener(e, (ev) =&gt; { ev.preventDefault(); ev.stopPropagation(); });
    });
    dropZone.addEventListener(&#39;dragover&#39;, () =&gt; dropZone.classList.add(&#39;dragover&#39;));
    dropZone.addEventListener(&#39;dragleave&#39;, () =&gt; dropZone.classList.remove(&#39;dragover&#39;));
    dropZone.addEventListener(&#39;drop&#39;, (e) =&gt; {
        dropZone.classList.remove(&#39;dragover&#39;);
        if (e.dataTransfer.files.length &gt; 0) handleFile(e.dataTransfer.files);
    });

    async function handleFile(files) {
        if (files.length === 0) return;
        const file = files[0];

        // Reset UI
        document.getElementById(&#39;verifyResult&#39;).style.display = &#39;none&#39;;
        document.getElementById(&#39;verifyInput&#39;).value = &#39;&#39;;
        document.getElementById(&#39;val-sha256&#39;).innerText = &#39;Calculating...&#39;;
        document.getElementById(&#39;val-sha512&#39;).innerText = &#39;Calculating...&#39;;
        document.getElementById(&#39;val-sha1&#39;).innerText = &#39;Calculating...&#39;;
        
        document.getElementById(&#39;fileNameTitle&#39;).innerText = file.name;
        document.getElementById(&#39;fileSizeBadge&#39;).innerText = formatBytes(file.size);
        document.getElementById(&#39;ledgerBox&#39;).style.display = &#39;block&#39;;

        // UI Loading State
        const zText = document.getElementById(&#39;zoneText&#39;);
        const zIcon = document.getElementById(&#39;zoneIcon&#39;);
        zText.innerText = &quot;Hashing in progress...&quot;;
        zIcon.innerHTML = `&lt;svg width=&quot;42&quot; height=&quot;42&quot; viewBox=&quot;0 0 24 24&quot; class=&quot;spin&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot;&gt;&lt;path d=&quot;M12 2v4m0 12v4M4.93 4.93l2.83 2.83m8.48 8.48l2.83 2.83M2 12h4m12 0h4M4.93 19.07l2.83-2.83m8.48-8.48l2.83-2.83&quot;/&gt;&lt;/svg&gt;`;

        try {
            // Read file as ArrayBuffer
            const arrayBuffer = await file.arrayBuffer();

            // Calculate hashes simultaneously using Native Web Crypto API
            const [hash256, hash512, hash1] = await Promise.all([
                crypto.subtle.digest(&#39;SHA-256&#39;, arrayBuffer),
                crypto.subtle.digest(&#39;SHA-512&#39;, arrayBuffer),
                crypto.subtle.digest(&#39;SHA-1&#39;, arrayBuffer)
            ]);

            // Convert to Hex strings
            currentHashes.sha256 = bufferToHex(hash256);
            currentHashes.sha512 = bufferToHex(hash512);
            currentHashes.sha1 = bufferToHex(hash1);

            // Update UI
            document.getElementById(&#39;val-sha256&#39;).innerText = currentHashes.sha256;
            document.getElementById(&#39;val-sha512&#39;).innerText = currentHashes.sha512;
            document.getElementById(&#39;val-sha1&#39;).innerText = currentHashes.sha1;

            zText.innerText = &quot;Hash Generation Complete&quot;;
            zIcon.innerHTML = `&lt;svg width=&quot;42&quot; height=&quot;42&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;var(--success)&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot;&gt;&lt;path d=&quot;M22 11.08V12a10 10 0 1 1-5.93-9.14&quot;&gt;&lt;/path&gt;&lt;polyline points=&quot;22 4 12 14.01 9 11.01&quot;&gt;&lt;/polyline&gt;&lt;/svg&gt;`;

        } catch (error) {
            console.error(error);
            zText.innerText = &quot;Hashing Failed&quot;;
            zIcon.innerHTML = `&lt;svg width=&quot;42&quot; height=&quot;42&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;var(--danger)&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot;&gt;&lt;circle cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;10&quot;&gt;&lt;/circle&gt;&lt;line x1=&quot;15&quot; y1=&quot;9&quot; x2=&quot;9&quot; y2=&quot;15&quot;&gt;&lt;/line&gt;&lt;line x1=&quot;9&quot; y1=&quot;9&quot; x2=&quot;15&quot; y2=&quot;15&quot;&gt;&lt;/line&gt;&lt;/svg&gt;`;
            document.getElementById(&#39;val-sha256&#39;).innerText = &#39;Error reading file memory&#39;;
            document.getElementById(&#39;val-sha512&#39;).innerText = &#39;Error reading file memory&#39;;
            document.getElementById(&#39;val-sha1&#39;).innerText = &#39;Error reading file memory&#39;;
        }
    }

    function bufferToHex(buffer) {
        return Array.from(new Uint8Array(buffer))
            .map(b =&gt; b.toString(16).padStart(2, &#39;0&#39;))
            .join(&#39;&#39;);
    }

    function copyHash(type) {
        const hash = currentHashes[type];
        if(!hash) return;
        
        navigator.clipboard.writeText(hash).then(() =&gt; {
            alert(`Copied ${type.toUpperCase()} to clipboard!`);
        });
    }

    function verifyHash() {
        const input = document.getElementById(&#39;verifyInput&#39;).value.trim().toLowerCase();
        const resBox = document.getElementById(&#39;verifyResult&#39;);
        
        if(!input) {
            resBox.className = &#39;verify-result match-no&#39;;
            resBox.style.display = &#39;block&#39;;
            resBox.innerText = &quot;Please paste a hash to verify.&quot;;
            return;
        }

        // Check if input matches any of our calculated hashes
        if(input === currentHashes.sha256 || input === currentHashes.sha512 || input === currentHashes.sha1) {
            resBox.className = &#39;verify-result match-yes&#39;;
            resBox.style.display = &#39;block&#39;;
            resBox.innerHTML = `✅ &lt;strong&gt;Perfect Match!&lt;/strong&gt; The file is authentic and uncorrupted.`;
        } else {
            resBox.className = &#39;verify-result match-no&#39;;
            resBox.style.display = &#39;block&#39;;
            resBox.innerHTML = `❌ &lt;strong&gt;Hash Mismatch!&lt;/strong&gt; The file has been corrupted or tampered with. Do not use it.`;
        }
    }
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/8044336879647827023'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/8044336879647827023'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/03/file-hash-generator-online.html' title='File Hash Generator Online'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-4249232283106068310</id><published>2026-03-30T06:13:00.000-07:00</published><updated>2026-03-30T06:13:23.826-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IRCTC"/><title type='text'>Train Ticket Waitlist Checker Online</title><content type='html'>&lt;title&gt;Train Ticket Waitlist Predictor - OTechy&lt;/title&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
&lt;meta name=&quot;description&quot; content=&quot;Will your waitlisted train ticket get confirmed? Our smart algorithm checks your route, travel date, weekends, and festival rush to estimate your chances.&quot;&gt;
&lt;meta property=&quot;og:title&quot; content=&quot;Smart Waitlist Predictor - OTechy&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;0,800;1,500&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

&lt;style&gt;
    /* --- OTechy Design System --- */
    :root { 
        --primary: #2563eb; --primary-dark: #1e3a8a; 
        --text-dark: #0f172a; --accent: #475569; 
        --bg: #f8fafc; --white: #fff; --border: #e2e8f0; 
        --success: #10b981; --warning: #f59e0b; --danger: #ef4444;
        --font-main: &#39;Poppins&#39;, sans-serif;
    }
    
    * { box-sizing: border-box; }
    body { background-color: var(--bg); font-family: var(--font-main); color: var(--text-dark); margin: 0; line-height: 1.6; }
    .otechy-tool-wrapper { max-width: 850px; margin: 0 auto; padding: 30px 15px 50px; }
    
    /* Hero Section */
    .hero-section { text-align: center; margin-bottom: 25px; }
    .new-badge { display: inline-block; background: #eff6ff; color: #1d4ed8; padding: 4px 12px; border-radius: 50px; font-size: 10px; font-weight: 800; border: 1px solid #bfdbfe; margin-bottom: 12px; text-transform: uppercase; letter-spacing: 0.5px; }
    .hero-section h1 { font-size: clamp(22px, 5vw, 32px); font-weight: 800; margin: 0 0 8px 0; letter-spacing: -0.5px; }
    .hero-section h1 span { color: var(--primary); }
    .hero-subtitle { color: var(--accent); font-size: 13px; font-weight: 500; max-width: 600px; margin: 0 auto; }

    /* Input Card */
    .calc-card { background: var(--white); border-radius: 16px; border: 1px solid var(--border); padding: 25px; box-shadow: 0 8px 25px rgba(37, 99, 235, 0.04); margin-bottom: 25px; }
    .calc-header { font-size: 16px; font-weight: 800; margin: 0 0 20px; color: var(--text-dark); display: flex; align-items: center; gap: 8px; border-bottom: 1px solid var(--border); padding-bottom: 12px; }
    
    .input-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 15px; margin-bottom: 20px; }
    .input-group { display: flex; flex-direction: column; }
    .input-group label { font-size: 11px; font-weight: 700; color: var(--accent); text-transform: uppercase; margin-bottom: 6px; }
    
    .form-control { width: 100%; padding: 12px; border-radius: 8px; border: 1px solid #cbd5e1; font-family: var(--font-main); font-size: 13px; font-weight: 700; color: var(--text-dark); outline: none; transition: 0.2s; background: #f8fafc; }
    .form-control:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1); background: #fff; }
    select.form-control { cursor: pointer; -webkit-appearance: none; background-image: url(&quot;data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23475569%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E&quot;); background-repeat: no-repeat; background-position: right 12px top 50%; background-size: 9px auto; }
    
    .btn-primary { background: var(--primary); color: #fff; border: none; padding: 14px 20px; border-radius: 8px; font-weight: 800; font-size: 14px; cursor: pointer; transition: 0.2s; font-family: var(--font-main); width: 100%; display: flex; align-items: center; justify-content: center; gap: 8px; }
    .btn-primary:hover { background: var(--primary-dark); transform: translateY(-2px); box-shadow: 0 4px 12px rgba(37, 99, 235, 0.25); }

    /* Results Dashboard */
    .dashboard-grid { display: none; background: var(--white); border-radius: 16px; border: 1px solid var(--border); padding: 30px; box-shadow: 0 8px 25px rgba(0,0,0,0.03); margin-bottom: 25px; text-align: center; }
    .dashboard-grid.active { display: block; animation: fadeIn 0.4s ease-out; }
    @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
    
    .score-circle { width: 140px; height: 140px; border-radius: 50%; margin: 0 auto 15px; display: flex; flex-direction: column; align-items: center; justify-content: center; border: 8px solid #cbd5e1; transition: border-color 0.5s ease; }
    .score-circle.high { border-color: var(--success); background: #f0fdf4; color: #065f46; box-shadow: 0 0 30px rgba(16, 185, 129, 0.2); }
    .score-circle.med { border-color: var(--warning); background: #fffbeb; color: #92400e; box-shadow: 0 0 30px rgba(245, 158, 11, 0.2); }
    .score-circle.low { border-color: var(--danger); background: #fef2f2; color: #991b1b; box-shadow: 0 0 30px rgba(239, 68, 68, 0.2); }
    
    .score-val { font-size: 38px; font-weight: 850; line-height: 1; }
    .score-lbl { font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; margin-top: 5px; opacity: 0.8; }
    
    .res-status { font-size: 20px; font-weight: 800; margin: 15px 0 25px; }

    /* Insights Box */
    .insight-box { background: #f8fafc; border: 1px solid var(--border); border-left: 4px solid var(--primary); border-radius: 12px; padding: 20px; text-align: left; }
    .insight-box h4 { margin: 0 0 12px; font-size: 14px; font-weight: 800; color: var(--primary-dark); text-transform: uppercase; display: flex; align-items: center; gap: 8px; }
    .insight-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
    .insight-list li { padding: 10px 12px; border-radius: 8px; background: var(--white); display: flex; align-items: flex-start; gap: 10px; font-size: 12px; font-weight: 600; color: var(--text-dark); border: 1px solid var(--border); }
    .insight-list li span.i-icon { font-size: 16px; }
    .insight-list li.warn-row { background: #fffbeb; border-color: #fde68a; color: #b45309; }

    /* FAQ Section */
    .faq-section { margin-top: 35px; }
    .faq-section h3 { font-size: 18px; font-weight: 850; margin: 0 0 15px; color: var(--text-dark); text-align: center; }
    .faq-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; }
    .faq-card { background: #fff; padding: 15px; border-radius: 10px; border: 1px solid var(--border); border-left: 4px solid var(--primary); box-shadow: 0 2px 6px rgba(0,0,0,0.02); transition: 0.2s; }
    .faq-card:hover { transform: translateY(-2px); box-shadow: 0 6px 12px rgba(37, 99, 235, 0.05); }
    .faq-card strong { color: var(--text-dark); display: block; margin-bottom: 6px; font-size: 13px; font-weight: 800; line-height: 1.3; }
    .faq-card p { font-size: 11px; color: var(--accent); margin: 0; line-height: 1.5; font-weight: 500; }

    /* Ads */
    .otechy-ad { background: #f1f5f9; color: #cbd5e1; font-size: 10px; font-weight: 700; text-transform: uppercase; height: 90px; display: flex; align-items: center; justify-content: center; border-radius: 10px; margin: 20px 0; width: 100%; border: 1px dashed #cbd5e1; }

    @media (max-width: 600px) {
        .input-grid { grid-template-columns: 1fr; gap: 12px; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;

    &lt;div class=&quot;hero-section&quot;&gt;
        &lt;div class=&quot;new-badge&quot;&gt;🧠 IRCTC Toolkit&lt;/div&gt;
        &lt;h1&gt;Train &lt;span&gt;Ticket Waitlist&lt;/span&gt; Checker&lt;/h1&gt;
        &lt;p class=&quot;hero-subtitle&quot;&gt;Will your ticket clear? Simply enter your details and our engine automatically calculates festival rushes, weekend factors, and route popularity.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 15px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT TOP&lt;/div&gt;

&lt;datalist id=&quot;stationsList&quot;&gt;
    &lt;option value=&quot;New Delhi (NDLS/ANVT)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Old Delhi (DLI)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Hazrat Nizamuddin (NZM)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Mumbai CSMT (CSMT)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Mumbai Central (BCT)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Lokmanya Tilak Terminus (LTT)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Dadar (DR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Bengaluru City (SBC/KSR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Yesvantpur (YPR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Chennai Central (MAS)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Chennai Egmore (MS)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Howrah (HWH)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Sealdah (SDAH)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Kolkata Terminal (KOAA)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Patna (PNBE)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Danapur (DNR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Rajendra Nagar (RJPB)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Gaya (GAYA)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Lucknow NR (LKO)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Lucknow Jn (LJN)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Kanpur Central (CNB)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Prayagraj Jn (PRYJ)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Varanasi (BSB)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Pandit Deen Dayal Upadhyay Jn (DDU)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Gorakhpur (GKP)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Jaipur (JP)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Ajmer (AII)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Udaipur City (UDZ)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Jodhpur (JU)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Bikaner (BKN)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Ahmedabad (ADI)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Gandhinagar (GNC)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Surat (ST)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Vadodara (BRC)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Rajkot (RJT)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Pune (PUNE)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Nagpur (NGP)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Nashik Road (NK)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Aurangabad (AWB)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Solapur (SUR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Hyderabad (HYB)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Secunderabad (SC)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Kacheguda (KCG)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Vijayawada (BZA)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Visakhapatnam (VSKP)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Tirupati (TPTY)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Coimbatore (CBE)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Madurai (MDU)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Trichy (TPJ)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Salem (SA)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Ernakulam (ERS)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Thiruvananthapuram (TVC)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Kozhikode (CLT)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Kannur (CAN)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Mangaluru Central (MAQ)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Mangaluru Jn (MAJN)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Hubballi (UBL)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Belagavi (BGM)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Raipur (R)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Bilaspur (BSP)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Durg (DURG)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Bhopal (BPL)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Habibganj/Rani Kamlapati (RKMP)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Jabalpur (JBP)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Indore (INDB)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Gwalior (GWL)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Jhansi (JHS)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Agra Cantt (AGC)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Mathura (MTJ)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Dehradun (DDN)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Haridwar (HW)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Rishikesh (RKSH)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Chandigarh (CDG)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Amritsar (ASR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Ludhiana (LDH)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Jammu Tawi (JAT)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Katra (SVDK)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Shimla (SML)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Guwahati (GHY)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Kamakhya (KYQ)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Dibrugarh (DBRG)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Silchar (SCL)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;New Jalpaiguri (NJP)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Darjeeling (DJ)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Ranchi (RNC)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Tatanagar (TATA)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Dhanbad (DHN)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Asansol (ASN)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Barddhaman (BWN)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Malda Town (MLDT)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Cuttack (CTC)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Bhubaneswar (BBS)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Puri (PURI)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Sambalpur (SBP)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Aligarh (ALJN)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Bareilly (BE)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Moradabad (MB)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Saharanpur (SRE)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Meerut City (MTC)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Ghaziabad (GZB)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Firozabad (FZD)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Etawah (ETW)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Unnao (ON)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Sitapur (STP)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Faizabad/Ayodhya (AY)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Sultanpur (SLN)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Ballia (BUI)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Mau (MAU)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Azamgarh (AMH)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Basti (BST)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Deoria Sadar (DEOS)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Siwan (SV)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Chapra (CPR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Hajipur (HJP)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Samastipur (SPJ)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Darbhanga (DBG)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Katihar (KIR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Kishanganj (KNE)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Arrah (ARA)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Buxar (BXR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Sasaram (SSM)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Hazaribagh Road (HZD)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Bokaro Steel City (BKSC)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Giridih (GRD)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Deoghar (DGHR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Koderma (KQR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Ramgarh Cantt (RMT)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Chakradharpur (CKP)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Rourkela (ROU)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Jharsuguda (JSG)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Balasore (BLS)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Jajpur Keonjhar Road (JJKR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Angul (ANGL)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Koraput (KRPU)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Rayagada (RGDA)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Titlagarh (TIG)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Kharagpur (KGP)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Haldia (HLZ)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Krishnanagar (KNJ)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Berhampore Court (BPC)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Rampurhat (RPH)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Bolpur Shantiniketan (BHP)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Durgapur (DGR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Bankura (BQA)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Purulia (PRR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Alipurduar (APDJ)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Cooch Behar (COB)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Kollam (QLN)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Alappuzha (ALLP)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Kottayam (KTYM)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Palakkad (PGT)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Thrissur (TCR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Kasargod (KGQ)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Karwar (KAWR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Udupi (UD)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Shimoga (SMET)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Davangere (DVG)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Bellary (BAY)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Guntakal (GTL)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Anantapur (ATP)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Kurnool (KRNT)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Nellore (NLR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Rajahmundry (RJY)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Kakinada (CCT)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Eluru (EE)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Warangal (WL)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Karimnagar (KRMR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Nizamabad (NZB)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Adilabad (ADB)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Latur (LUR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Nanded (NED)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Akola (AK)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Amravati (AMI)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Chandrapur (CD)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Wardha (WR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Jalgaon (JL)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Dhule (DHI)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Ratnagiri (RN)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Satara (STR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Kolhapur (KOP)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Sangli (SLI)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Bhavnagar (BVC)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Jamnagar (JAM)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Porbandar (PBR)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Bhuj (BHUJ)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Palanpur (PNU)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Mehsana (MSH)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Anand (ANND)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Godhra (GDA)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Valsad (BL)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Vapi (VAPI)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Siliguri Junction (SGUJ)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Anand Vihar Terminal (ANVT)&quot;&gt;&lt;/option&gt;
	&lt;option value=&quot;Delhi Cantt (DEC)&quot;&gt;&lt;/option&gt;
	&lt;option value=&quot;Sarai Rohilla (DEE)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Thane (TNA)&quot;&gt;&lt;/option&gt;
	&lt;option value=&quot;Kalyan (KYN)&quot;&gt;&lt;/option&gt;
	&lt;option value=&quot;Panvel (PNVL)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Santragachi (SRC)&quot;&gt;&lt;/option&gt;
	&lt;option value=&quot;Dankuni (DKAE)&quot;&gt;&lt;/option&gt;
	&lt;option value=&quot;Bally (BLY)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Katpadi (KPD)&quot;&gt;&lt;/option&gt;
	&lt;option value=&quot;Erode (ED)&quot;&gt;&lt;/option&gt;
	&lt;option value=&quot;Tambaram (TBM)&quot;&gt;&lt;/option&gt;
	&lt;option value=&quot;Krishnarajapuram (KJM)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Udhna (UDN)&quot;&gt;&lt;/option&gt;
	&lt;option value=&quot;Bharuch (BH)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Begusarai (BGS)&quot;&gt;&lt;/option&gt;
	&lt;option value=&quot;Khagaria (KGG)&quot;&gt;&lt;/option&gt;
	&lt;option value=&quot;Motihari (MKI)&quot;&gt;&lt;/option&gt;
	&lt;option value=&quot;Betiah (BTH)&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;Other / Intermediate Station&quot;&gt;&lt;/option&gt;
&lt;/datalist&gt;

    &lt;div class=&quot;calc-card&quot;&gt;
        &lt;h2 class=&quot;calc-header&quot;&gt;
            &lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;polyline points=&quot;22 12 18 12 15 21 9 3 6 12 2 12&quot;&gt;&lt;/polyline&gt;&lt;/svg&gt;
            Journey Details
        &lt;/h2&gt;
        
        &lt;div class=&quot;input-grid&quot;&gt;
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;From Station&lt;/label&gt;
                &lt;input type=&quot;text&quot; id=&quot;fromStn&quot; class=&quot;form-control&quot; list=&quot;stationsList&quot; placeholder=&quot;Select or type...&quot; required&gt;
            &lt;/div&gt;
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;To Station&lt;/label&gt;
                &lt;input type=&quot;text&quot; id=&quot;toStn&quot; class=&quot;form-control&quot; list=&quot;stationsList&quot; placeholder=&quot;Select or type...&quot; required&gt;
            &lt;/div&gt;
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Date of Journey&lt;/label&gt;
                &lt;input type=&quot;date&quot; id=&quot;jDate&quot; class=&quot;form-control&quot; required&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;input-grid&quot;&gt;
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Current WL Number&lt;/label&gt;
                &lt;input type=&quot;number&quot; id=&quot;wlNum&quot; class=&quot;form-control&quot; placeholder=&quot;e.g. 25&quot; min=&quot;1&quot; required&gt;
            &lt;/div&gt;

            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Waitlist Quota&lt;/label&gt;
                &lt;select class=&quot;form-control&quot; id=&quot;quotaType&quot;&gt;
                    &lt;option value=&quot;GNWL&quot;&gt;GNWL (General - Highest Chance)&lt;/option&gt;
                    &lt;option value=&quot;RLWL&quot;&gt;RLWL (Remote - Med Chance)&lt;/option&gt;
                    &lt;option value=&quot;PQWL&quot;&gt;PQWL (Pooled - Low Chance)&lt;/option&gt;
                    &lt;option value=&quot;TQWL&quot;&gt;TQWL (Tatkal WL - Very Low)&lt;/option&gt;
                &lt;/select&gt;
            &lt;/div&gt;
            
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Travel Class&lt;/label&gt;
                &lt;select class=&quot;form-control&quot; id=&quot;trainClass&quot;&gt;
                    &lt;option value=&quot;SL&quot;&gt;Sleeper (SL) / 2S&lt;/option&gt;
                    &lt;option value=&quot;3A&quot;&gt;3-Tier AC (3A) / CC&lt;/option&gt;
                    &lt;option value=&quot;2A&quot;&gt;2-Tier AC (2A)&lt;/option&gt;
                    &lt;option value=&quot;1A&quot;&gt;1st Class AC (1A)&lt;/option&gt;
                &lt;/select&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;button class=&quot;btn-primary&quot; onclick=&quot;predictWL()&quot;&gt;
            Calculate Probability
        &lt;/button&gt;
    &lt;/div&gt;

    &lt;div class=&quot;dashboard-grid&quot; id=&quot;resultDash&quot;&gt;
        
        &lt;div class=&quot;score-circle&quot; id=&quot;scoreRing&quot;&gt;
            &lt;span class=&quot;score-val&quot; id=&quot;scoreText&quot;&gt;0%&lt;/span&gt;
            &lt;span class=&quot;score-lbl&quot;&gt;Chance&lt;/span&gt;
        &lt;/div&gt;

        &lt;div class=&quot;res-status&quot; id=&quot;statusText&quot;&gt;Evaluating...&lt;/div&gt;

        &lt;div class=&quot;insight-box&quot;&gt;
            &lt;h4&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;circle cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;10&quot;&gt;&lt;/circle&gt;&lt;path d=&quot;M12 16v-4&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M12 8h.01&quot;&gt;&lt;/path&gt;&lt;/svg&gt; Backend Logic Insights:&lt;/h4&gt;
            &lt;ul class=&quot;insight-list&quot; id=&quot;insightList&quot;&gt;
                &lt;/ul&gt;
        &lt;/div&gt;
        
        &lt;p style=&quot;font-size: 10px; color: var(--accent); margin-top: 15px; font-weight: 500;&quot;&gt;*Disclaimer: This tool utilizes heuristic modeling based on Indian Railway patterns. True confirmation depends on real-time cancellations.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 25px 0; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;

    &lt;div class=&quot;faq-section&quot;&gt;
        &lt;h3&gt;Waitlist Terminology Decoded&lt;/h3&gt;
        &lt;div class=&quot;faq-grid&quot;&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;GNWL (General Waitlist)&lt;/strong&gt;
                &lt;p&gt;The most common waitlist. Issued when you travel from the originating station. It has the &lt;strong&gt;highest&lt;/strong&gt; priority and clears the fastest because maximum seats are allocated to this quota.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;RLWL (Remote Location Waitlist)&lt;/strong&gt;
                &lt;p&gt;Issued for intermediate stations connecting major cities. It has &lt;strong&gt;medium&lt;/strong&gt; chances of clearing because it relies heavily on cancellations from passengers boarding at your specific station.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;PQWL (Pooled Quota Waitlist)&lt;/strong&gt;
                &lt;p&gt;Issued for passengers traveling between intermediate stations. It has a &lt;strong&gt;low&lt;/strong&gt; chance of clearing as it draws from a very small pool of shared seats for the entire journey.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;TQWL (Tatkal Waitlist)&lt;/strong&gt;
                &lt;p&gt;Issued against cancelled Tatkal tickets. It has the &lt;strong&gt;lowest&lt;/strong&gt; chance of clearing because Tatkal tickets are strictly non-refundable, meaning almost nobody cancels them.&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 25px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;
    // Set default date to today
    document.getElementById(&#39;jDate&#39;).valueAsDate = new Date();

    function predictWL() {
        const wlInput = document.getElementById(&#39;wlNum&#39;).value;
        const fromStn = document.getElementById(&#39;fromStn&#39;).value.toLowerCase();
        const toStn = document.getElementById(&#39;toStn&#39;).value.toLowerCase();
        const dateInput = document.getElementById(&#39;jDate&#39;).value;
        const wlPos = parseInt(wlInput);
        
        if (!wlPos || wlPos &lt; 1) { alert(&quot;Please enter a valid waitlist number.&quot;); return; }
        if (!dateInput) { alert(&quot;Please select a Journey Date.&quot;); return; }

        const quota = document.getElementById(&#39;quotaType&#39;).value;
        const cls = document.getElementById(&#39;trainClass&#39;).value;
        
        const journeyDate = new Date(dateInput);
        const today = new Date();
        const timeDiffHours = (journeyDate - today) / (1000 * 60 * 60);

        // --- 1. SMART ROUTE DETECTOR ---
        let routeMult = 1.0;
        let routeInsight = &quot;Normal route demand assumed.&quot;;
        let isWarnRoute = false;

        // High Rush Corridors (e.g. Metros to UP/Bihar/Bengal)
        const isMetro = fromStn.includes(&#39;delhi&#39;) || fromStn.includes(&#39;mumbai&#39;) || fromStn.includes(&#39;bengaluru&#39;) || fromStn.includes(&#39;chennai&#39;);
        const isEastNorth = toStn.includes(&#39;patna&#39;) || toStn.includes(&#39;gorakhpur&#39;) || toStn.includes(&#39;lucknow&#39;) || toStn.includes(&#39;howrah&#39;) || toStn.includes(&#39;kolkata&#39;) || toStn.includes(&#39;varanasi&#39;);
        
        // Reverse
        const isReverseMetro = toStn.includes(&#39;delhi&#39;) || toStn.includes(&#39;mumbai&#39;) || toStn.includes(&#39;bengaluru&#39;);
        const isReverseEast = fromStn.includes(&#39;patna&#39;) || fromStn.includes(&#39;gorakhpur&#39;) || fromStn.includes(&#39;lucknow&#39;);

        if ((isMetro &amp;&amp; isEastNorth) || (isReverseMetro &amp;&amp; isReverseEast)) {
            routeMult = 0.6; // High demand, less clearance
            routeInsight = &quot;&lt;strong&gt;High Demand Corridor Detected.&lt;/strong&gt; Trains on this specific route operate at near maximum occupancy.&quot;;
            isWarnRoute = true;
        }

        // --- 2. SMART DATE DETECTOR (Weekends &amp; Festivals) ---
        let dateMult = 1.0;
        let dateInsight = &quot;Standard weekday travel. Normal cancellation patterns expected.&quot;;
        let isWarnDate = false;

        const day = journeyDate.getDay(); // 0=Sun, 5=Fri, 6=Sat, 1=Mon
        const month = journeyDate.getMonth() + 1; // 1-12
        const dateNum = journeyDate.getDate();

        // Weekend Check (Outbound Fri/Sat, Return Sun/Mon)
        if (day === 5 || day === 6 || day === 0 || day === 1) {
            dateMult = 0.8;
            dateInsight = &quot;&lt;strong&gt;Weekend Travel Detected.&lt;/strong&gt; Passengers are significantly less likely to cancel Friday-Monday trips.&quot;;
            isWarnDate = true;
        }

        // 2026/2027 Festival Check
        // Holi (Mar 1-10), Summer (May-June), Durga Puja (Oct 15-25), Diwali/Chhath (Nov 1-20)
        if ( (month === 3 &amp;&amp; dateNum &lt;= 10) || 
             (month === 5 || month === 6) || 
             (month === 10 &amp;&amp; dateNum &gt;= 15 &amp;&amp; dateNum &lt;= 25) || 
             (month === 11 &amp;&amp; dateNum &lt;= 20) ) {
            
            dateMult = 0.4; // Massive drop in probability
            dateInsight = &quot;&lt;strong&gt;🚨 Extreme Festival/Holiday Rush Detected!&lt;/strong&gt; Very few passengers will cancel tickets during this specific date window.&quot;;
            isWarnDate = true;
        }

        // --- 3. TIME &amp; QUOTA MULTIPLIERS ---
        let timeMult = 1.0;
        let timeInsight = &quot;With 3+ days left, there is plenty of time for bulk cancellations.&quot;;
        
        if (timeDiffHours &lt;= 0) { timeMult = 0; timeInsight = &quot;Chart Prepared. No further movement expected.&quot;; }
        else if (timeDiffHours &lt;= 24) { timeMult = 0.4; timeInsight = &quot;Less than 24h left. Relying entirely on last-minute emergency cancellations.&quot;; }
        else if (timeDiffHours &lt;= 72) { timeMult = 0.7; timeInsight = &quot;Approaching charting window. Cancellation momentum will slow down soon.&quot;; }

        let quotaMult = 1.0;
        let quotaInsight = &quot;GNWL gets top priority during chart preparation.&quot;;
        if (quota === &#39;RLWL&#39;) { quotaMult = 0.6; quotaInsight = &quot;RLWL only clears if a passenger boarding at your specific station cancels.&quot;; }
        if (quota === &#39;PQWL&#39;) { quotaMult = 0.4; quotaInsight = &quot;PQWL shares a very tiny pool of seats. Hard to clear.&quot;; }
        if (quota === &#39;TQWL&#39;) { quotaMult = 0.1; quotaInsight = &quot;Tatkal tickets are non-refundable, meaning almost nobody cancels them.&quot;; }

        // --- 4. CLASS BASE CAPACITY ---
        let baseCapacity = 0;
        let classInsight = &quot;&quot;;
        if (cls === &#39;SL&#39;) { baseCapacity = 60; classInsight = &quot;Sleeper class has the highest volume of total seats and turnover.&quot;; }
        if (cls === &#39;3A&#39;) { baseCapacity = 40; classInsight = &quot;3AC has moderate turnover. Reasonable chances for lower numbers.&quot;; }
        if (cls === &#39;2A&#39;) { baseCapacity = 15; classInsight = &quot;2AC has very limited seats. Waitlist clears slowly.&quot;; }
        if (cls === &#39;1A&#39;) { baseCapacity = 4; classInsight = &quot;1st AC has tiny capacity. Even WL 5 is difficult to clear.&quot;; }

        // --- 5. CALCULATE PROBABILITY ---
        let effectiveCapacity = baseCapacity * quotaMult * timeMult * dateMult * routeMult;
        let prob = 0;

        if (timeDiffHours &lt;= 0 &amp;&amp; wlPos &gt; 0) {
            prob = 0;
        } else {
            const ratio = effectiveCapacity / wlPos;
            if (ratio &gt;= 2.0) prob = Math.floor(Math.random() * (95 - 88 + 1)) + 88;
            else if (ratio &gt;= 1.0) prob = Math.floor(Math.random() * (85 - 65 + 1)) + 65;
            else if (ratio &gt;= 0.5) prob = Math.floor(Math.random() * (60 - 35 + 1)) + 35;
            else prob = Math.floor(Math.random() * (30 - 5 + 1)) + 5;
        }

        if (prob &gt; 95) prob = 95;
        if (prob &lt; 0) prob = 0;

        // --- 6. RENDER UI ---
        const dash = document.getElementById(&#39;resultDash&#39;);
        const ring = document.getElementById(&#39;scoreRing&#39;);
        const text = document.getElementById(&#39;scoreText&#39;);
        const status = document.getElementById(&#39;statusText&#39;);
        const list = document.getElementById(&#39;insightList&#39;);

        dash.classList.remove(&#39;active&#39;);
        void dash.offsetWidth; 
        dash.classList.add(&#39;active&#39;);

        text.innerText = prob + &#39;%&#39;;
        
        ring.className = &#39;score-circle&#39;;
        if (prob &gt;= 65) {
            ring.classList.add(&#39;high&#39;);
            status.innerHTML = `&lt;span style=&quot;color:var(--success);&quot;&gt;High Chances of Confirmation&lt;/span&gt;`;
        } else if (prob &gt;= 35) {
            ring.classList.add(&#39;med&#39;);
            status.innerHTML = `&lt;span style=&quot;color:var(--warning);&quot;&gt;Medium / RAC Chances&lt;/span&gt;`;
        } else {
            ring.classList.add(&#39;low&#39;);
            status.innerHTML = `&lt;span style=&quot;color:var(--danger);&quot;&gt;Low Chances (Plan Alternatives)&lt;/span&gt;`;
        }

        // Generate Insights HTML
        const routeRowClass = isWarnRoute ? &#39;warn-row&#39; : &#39;&#39;;
        const dateRowClass = isWarnDate ? &#39;warn-row&#39; : &#39;&#39;;

        list.innerHTML = `
            &lt;li class=&quot;${dateRowClass}&quot;&gt;&lt;span class=&quot;i-icon&quot;&gt;📅&lt;/span&gt; &lt;div&gt;${dateInsight}&lt;/div&gt;&lt;/li&gt;
            &lt;li class=&quot;${routeRowClass}&quot;&gt;&lt;span class=&quot;i-icon&quot;&gt;🗺️&lt;/span&gt; &lt;div&gt;${routeInsight}&lt;/div&gt;&lt;/li&gt;
            &lt;li&gt;&lt;span class=&quot;i-icon&quot;&gt;🎟️&lt;/span&gt; &lt;div&gt;&lt;strong&gt;${quota} Impact:&lt;/strong&gt; ${quotaInsight}&lt;/div&gt;&lt;/li&gt;
            &lt;li&gt;&lt;span class=&quot;i-icon&quot;&gt;🚆&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Class Capacity:&lt;/strong&gt; ${classInsight}&lt;/div&gt;&lt;/li&gt;
            &lt;li&gt;&lt;span class=&quot;i-icon&quot;&gt;⏳&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Timing Factor:&lt;/strong&gt; ${timeInsight}&lt;/div&gt;&lt;/li&gt;
        `;
        
        setTimeout(() =&gt; {
            dash.scrollIntoView({ behavior: &#39;smooth&#39;, block: &#39;start&#39; });
        }, 100);
    }
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/4249232283106068310'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/4249232283106068310'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/03/train-ticket-waitlist-checker-online.html' title='Train Ticket Waitlist Checker Online'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-6614685440951962535</id><published>2026-03-30T01:47:00.000-07:00</published><updated>2026-03-30T01:52:10.915-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Indian Railway"/><title type='text'>Find Train Berth and Seating Arrangement Online</title><content type='html'>&lt;title&gt;Indian Railways 3D Berth &amp; Seat Locator - OTechy&lt;/title&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
&lt;meta name=&quot;description&quot; content=&quot;Find your exact train seat layout. Map multiple seats at once, for seating arrangement, check group seating, and toggle between modern LHB and old ICF coaches. Includes 10 FAQs.&quot;&gt;
&lt;meta property=&quot;og:title&quot; content=&quot;3D Smart Berth Locator - OTechy&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;0,800;1,500&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

&lt;style&gt;
    /* --- OTechy Design System --- */
    :root { 
        --primary: #2563eb; --primary-dark: #1e3a8a; 
        --text-dark: #0f172a; --accent: #475569; 
        --bg: #f8fafc; --white: #fff; --border: #e2e8f0; 
        --font-main: &#39;Poppins&#39;, sans-serif;
    }
    
    * { box-sizing: border-box; }
    body { background-color: var(--bg); font-family: var(--font-main); color: var(--text-dark); margin: 0; line-height: 1.6; }
    .otechy-tool-wrapper { max-width: 900px; margin: 0 auto; padding: 30px 15px 50px; }
    
    /* Hero Section */
    .hero-section { text-align: center; margin-bottom: 25px; }
    .new-badge { display: inline-block; background: #eff6ff; color: #1d4ed8; padding: 4px 10px; border-radius: 50px; font-size: 10px; font-weight: 800; border: 1px solid #bfdbfe; margin-bottom: 10px; text-transform: uppercase; letter-spacing: 0.5px; }
    .hero-section h1 { font-size: clamp(22px, 5vw, 32px); font-weight: 800; margin: 0 0 8px 0; letter-spacing: -0.5px; }
    .hero-section h1 span { color: var(--primary); }
    .hero-subtitle { color: var(--accent); font-size: 13px; font-weight: 500; max-width: 600px; margin: 0 auto; }

    /* Input Card &amp; Toggle */
    .calc-card { background: var(--white); border-radius: 16px; border: 1px solid var(--border); padding: 20px; box-shadow: 0 8px 25px rgba(37, 99, 235, 0.04); margin-bottom: 25px; }
    .train-toggle { display: flex; background: #f1f5f9; border-radius: 10px; padding: 4px; margin-bottom: 15px; max-width: 350px; margin-left: auto; margin-right: auto; }
    .toggle-btn { flex: 1; text-align: center; padding: 8px; font-size: 11px; font-weight: 700; color: var(--accent); cursor: pointer; border-radius: 6px; transition: 0.2s; text-transform: uppercase; }
    .toggle-btn.active { background: var(--white); color: var(--primary-dark); box-shadow: 0 2px 8px rgba(0,0,0,0.05); }

    .input-grid { display: grid; grid-template-columns: 1fr 1.5fr auto; gap: 12px; align-items: end; }
    .input-group { display: flex; flex-direction: column; }
    .input-group label { font-size: 11px; font-weight: 700; color: var(--accent); text-transform: uppercase; margin-bottom: 6px; }
    
    .form-control { width: 100%; padding: 12px; border-radius: 8px; border: 1px solid #cbd5e1; font-family: var(--font-main); font-size: 13px; font-weight: 700; color: var(--text-dark); outline: none; transition: 0.2s; background: #f8fafc; }
    .form-control:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1); background: #fff; }
    
    .btn-primary { background: var(--primary); color: #fff; border: none; padding: 12px 20px; border-radius: 8px; font-weight: 800; font-size: 13px; cursor: pointer; transition: 0.2s; font-family: var(--font-main); display: flex; align-items: center; justify-content: center; gap: 6px; }
    .btn-primary:hover { background: var(--primary-dark); transform: translateY(-2px); box-shadow: 0 4px 12px rgba(37, 99, 235, 0.25); }

    /* Results Dashboard */
    .dashboard-grid { display: grid; grid-template-columns: 1fr; gap: 20px; display: none; }
    .dashboard-grid.active { display: block; }
    
    .info-card { background: var(--white); border-radius: 16px; border: 1px solid var(--border); padding: 20px; box-shadow: 0 8px 25px rgba(0,0,0,0.02); margin-bottom: 20px; }
    .berth-title { font-size: 18px; font-weight: 850; color: var(--primary-dark); margin: 0 0 12px; line-height: 1.3; }
    
    .insight-list { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 8px; }
    .insight-list li { padding: 10px 12px; border-radius: 8px; background: #f8fafc; display: flex; align-items: flex-start; gap: 8px; font-size: 12px; font-weight: 600; color: var(--text-dark); border: 1px solid var(--border); }
    .insight-list li.warn { background: #fffbeb; border-color: #fde68a; color: #b45309; }
    .insight-list li.good { background: #f0fdf4; border-color: #bbf7d0; color: #15803d; }

    /* Crisp 3D Map Container */
    .maps-container { display: flex; flex-direction: column; gap: 15px; }
    .map-card { background: #f1f5f9; border-radius: 12px; border: 2px solid #cbd5e1; padding: 35px 15px; display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; overflow: hidden; perspective: 1000px; }
    .window-line { position: absolute; left: 10px; top: 0; bottom: 0; width: 5px; background: #cbd5e1; border-radius: 8px; }
    .window-line.right { left: auto; right: 10px; }
    .window-glass { position: absolute; width: 3px; height: 100px; background: #60a5fa; left: 1px; top: 50%; transform: translateY(-50%); border-radius: 8px; }
    
    .map-title { position: absolute; top: 10px; left: 20px; font-size: 10px; font-weight: 800; text-transform: uppercase; color: #475569; letter-spacing: 1px; }

    /* Dynamic CSS Grid for Cabins */
    .cabin-grid { display: grid; gap: 10px; transform: rotateX(15deg); transform-style: preserve-3d; }
    .grid-3a { grid-template-columns: 55px 55px 35px 55px; } 
    .grid-2a { grid-template-columns: 65px 65px 45px 65px; } 
    .grid-cc { grid-template-columns: 45px 45px 45px 25px 45px 45px; } 
    
    .col-bay { display: flex; flex-direction: column; gap: 6px; justify-content: center; }
    .aisle-space { display: flex; align-items: center; justify-content: center; color: #94a3b8; font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 2px; writing-mode: vertical-rl; text-orientation: mixed; border-left: 2px dashed #94a3b8; border-right: 2px dashed #94a3b8; padding: 0 4px; }

    /* Edged, Crisp 3D Seat Styles */
    .seat { 
        width: 100%; height: 45px; background: #ffffff; border-radius: 5px; 
        border: 2px solid #94a3b8; 
        display: flex; flex-direction: column; align-items: center; justify-content: center; 
        font-weight: 800; color: #475569; font-size: 13px; position: relative;
        box-shadow: 0 3px 0 #94a3b8; transition: 0.15s ease-in-out;
    }
    .seat.active { 
        background: var(--primary); color: #fff; border-color: var(--primary-dark);
        transform: translateY(3px); 
        box-shadow: 0 0 0 var(--primary-dark); 
        z-index: 10;
    }
    .seat small { font-size: 8px; font-weight: 700; text-transform: uppercase; opacity: 0.8; margin-top: -2px; }

    /* OTechy Tool Info Block - Compact Light Theme */
    .tool-info-block { background: #f8fafc; border: 1px solid var(--border); border-left: 4px solid var(--primary); padding: 15px 20px; border-radius: 12px; margin-top: 20px; box-shadow: 0 2px 10px rgba(0,0,0,0.02); }
    .tool-info-block h3 { margin: 0 0 8px 0; font-size: 15px; font-weight: 800; display: flex; align-items: center; gap: 6px; color: var(--primary-dark); }
    .tool-info-block p { font-size: 12px; color: var(--accent); margin: 0 0 12px 0; line-height: 1.5; font-weight: 500; }
    .tool-info-tags { display: flex; gap: 8px; flex-wrap: wrap; }
    .t-tag { background: var(--white); border: 1px solid var(--border); padding: 4px 10px; border-radius: 4px; font-size: 9px; font-weight: 700; color: var(--primary); text-transform: uppercase; letter-spacing: 0.5px; }

    /* Compact 10 FAQ Section */
    .faq-section { margin-top: 35px; }
    .faq-section h3 { font-size: 18px; font-weight: 850; margin: 0 0 15px; color: var(--text-dark); text-align: center; }
    .faq-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; }
    .faq-card { background: #fff; padding: 15px; border-radius: 10px; border: 1px solid var(--border); border-top: 3px solid var(--primary); box-shadow: 0 2px 6px rgba(0,0,0,0.02); transition: 0.2s; }
    .faq-card:hover { transform: translateY(-2px); box-shadow: 0 6px 12px rgba(37, 99, 235, 0.05); }
    .faq-card strong { color: var(--primary-dark); display: block; margin-bottom: 6px; font-size: 13px; font-weight: 800; line-height: 1.3; }
    .faq-card p { font-size: 11px; color: var(--accent); margin: 0; line-height: 1.5; font-weight: 500; }

    /* Ads */
    .otechy-ad { background: #f1f5f9; color: #cbd5e1; font-size: 10px; font-weight: 700; text-transform: uppercase; height: 90px; display: flex; align-items: center; justify-content: center; border-radius: 10px; margin: 20px 0; width: 100%; border: 1px dashed #cbd5e1; }

    @media (max-width: 600px) {
        .input-grid { grid-template-columns: 1fr; }
        .grid-3a { grid-template-columns: 45px 45px 25px 45px; }
        .grid-cc { grid-template-columns: 35px 35px 35px 15px 35px 35px; }
        .seat { font-size: 11px; height: 40px; }
        .seat small { font-size: 7px; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;

    &lt;div class=&quot;hero-section&quot;&gt;
        &lt;div class=&quot;new-badge&quot;&gt;🔥 IRCTC Toolkit&lt;/div&gt;
        &lt;h1&gt;3D Berth &amp; &lt;span&gt;Seat Locator&lt;/span&gt;&lt;/h1&gt;
        &lt;p class=&quot;hero-subtitle&quot;&gt;Enter one or multiple seats (e.g. 42, 43, 47) to instantly map your family&#39;s layout and see exactly how close you are sitting.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 15px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT TOP&lt;/div&gt;

    &lt;div class=&quot;calc-card&quot;&gt;
        
        &lt;div class=&quot;train-toggle&quot;&gt;
            &lt;div class=&quot;toggle-btn active&quot; id=&quot;btnLhb&quot; onclick=&quot;setTrainType(&#39;LHB&#39;)&quot;&gt;Modern LHB Coach&lt;/div&gt;
            &lt;div class=&quot;toggle-btn&quot; id=&quot;btnIcf&quot; onclick=&quot;setTrainType(&#39;ICF&#39;)&quot;&gt;Old ICF Coach&lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;input-grid&quot;&gt;
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Select Coach Type&lt;/label&gt;
                &lt;select class=&quot;form-control&quot; id=&quot;coachType&quot;&gt;
                    &lt;option value=&quot;3A&quot;&gt;3-Tier AC (3A) / Sleeper (SL)&lt;/option&gt;
                    &lt;option value=&quot;2A&quot;&gt;2-Tier AC (2A)&lt;/option&gt;
                    &lt;option value=&quot;CC&quot;&gt;AC Chair Car (CC)&lt;/option&gt;
                &lt;/select&gt;
            &lt;/div&gt;
            
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Enter Seat(s) (Comma separated)&lt;/label&gt;
                &lt;input type=&quot;text&quot; id=&quot;seatNumber&quot; class=&quot;form-control&quot; placeholder=&quot;e.g. 42, 43, 47&quot;&gt;
            &lt;/div&gt;

            &lt;button class=&quot;btn-primary&quot; onclick=&quot;locateSeat()&quot;&gt;
                &lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;circle cx=&quot;11&quot; cy=&quot;11&quot; r=&quot;8&quot;&gt;&lt;/circle&gt;&lt;line x1=&quot;21&quot; y1=&quot;21&quot; x2=&quot;16.65&quot; y2=&quot;16.65&quot;&gt;&lt;/line&gt;&lt;/svg&gt;
                Locate
            &lt;/button&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;dashboard-grid&quot; id=&quot;resultDash&quot;&gt;
        
        &lt;div class=&quot;info-card&quot;&gt;
            &lt;h2 class=&quot;berth-title&quot; id=&quot;resTitle&quot;&gt;Berth Loading...&lt;/h2&gt;
            &lt;ul class=&quot;insight-list&quot; id=&quot;insightList&quot;&gt;
                &lt;/ul&gt;
        &lt;/div&gt;

        &lt;div class=&quot;maps-container&quot; id=&quot;mapsContainer&quot;&gt;&lt;/div&gt;
        
        &lt;div class=&quot;tool-info-block&quot;&gt;
            &lt;h3&gt;🚄 About 3D Seat Locator&lt;/h3&gt;
            &lt;p&gt;This algorithm maps your exact seat layout on Indian Railways. It dynamically accounts for the structural differences between modern LHB (Linke Hofmann Busch) coaches with higher capacities and traditional ICF (Integral Coach Factory) coaches. It visually displays proximity to windows, aisles, and washrooms, perfect for checking if family members are seated together.&lt;/p&gt;
            &lt;div class=&quot;tool-info-tags&quot;&gt;
                &lt;span class=&quot;t-tag&quot;&gt;Calculates Group Distance&lt;/span&gt;
                &lt;span class=&quot;t-tag&quot;&gt;LHB &amp; ICF Math Supported&lt;/span&gt;
                &lt;span class=&quot;t-tag&quot;&gt;Visualizes Aisles &amp; Windows&lt;/span&gt;
            &lt;/div&gt;
        &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 25px 0; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;

    &lt;div class=&quot;faq-section&quot;&gt;
        &lt;h3&gt;Indian Railways Seating FAQ&lt;/h3&gt;
        &lt;div class=&quot;faq-grid&quot;&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;1. What is the difference between LHB and ICF coaches?&lt;/strong&gt;
                &lt;p&gt;LHB coaches (red/silver) are modern, safer, and longer. They hold 80 seats in Sleeper and 72 in 3AC. Older ICF coaches (blue) hold 72 in Sleeper and 64 in 3AC.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;2. Which berth is best for senior citizens?&lt;/strong&gt;
                &lt;p&gt;The Lower Berth (LB) is heavily preferred as it requires no climbing. IRCTC typically prioritizes lower berths for older passengers during booking.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;3. What is a Side Lower (SL) berth?&lt;/strong&gt;
                &lt;p&gt;A Side Lower berth runs longitudinally along the window on the aisle side. It offers great views but the bed length is slightly shorter than inside cabin berths.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;4. Does AC Chair Car (CC) have sleeper berths?&lt;/strong&gt;
                &lt;p&gt;No, CC consists purely of sitting chairs arranged in a 3x2 format. It is used exclusively for daytime intercity travel.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;5. How do I know if my group is sitting together?&lt;/strong&gt;
                &lt;p&gt;Enter your seat numbers separated by commas in the tool above. It instantly calculates if your party is in the same cabin or scattered across the coach.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;6. Can I change my berth after booking?&lt;/strong&gt;
                &lt;p&gt;Officially, no. However, you can mutually agree to swap seats with a co-passenger, or ask the TTE to reassign you if vacant seats exist after charting.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;7. Why are seats 1, 2, 3 usually noisier?&lt;/strong&gt;
                &lt;p&gt;Seats at the extreme ends of any coach are located immediately next to the doors and washrooms, leading to high foot traffic and occasional odors.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;8. What does Middle Berth (MB) mean?&lt;/strong&gt;
                &lt;p&gt;Found in 3AC and Sleeper classes, the MB is a foldable berth suspended between the lower and upper berths. It must be folded down during daytime hours.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;9. Do 2AC coaches have middle berths?&lt;/strong&gt;
                &lt;p&gt;No. 2-Tier AC (2A) only features Lower and Upper berths inside the main cabin, providing significantly more headroom to sit comfortably.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;
                &lt;strong&gt;10. Are Side Upper (SU) berths good?&lt;/strong&gt;
                &lt;p&gt;Yes! They offer excellent privacy and their own high window. They are unaffected by daytime seating rules, though they share the slightly shorter length of the SL.&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 25px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;
    let trainType = &#39;LHB&#39;; // Default

    function setTrainType(type) {
        trainType = type;
        document.getElementById(&#39;btnLhb&#39;).classList.remove(&#39;active&#39;);
        document.getElementById(&#39;btnIcf&#39;).classList.remove(&#39;active&#39;);
        if(type === &#39;LHB&#39;) document.getElementById(&#39;btnLhb&#39;).classList.add(&#39;active&#39;);
        if(type === &#39;ICF&#39;) document.getElementById(&#39;btnIcf&#39;).classList.add(&#39;active&#39;);
    }

    function locateSeat() {
        const coach = document.getElementById(&#39;coachType&#39;).value;
        const rawInput = document.getElementById(&#39;seatNumber&#39;).value;
        
        let seats = rawInput.split(&#39;,&#39;).map(s =&gt; parseInt(s.trim())).filter(s =&gt; !isNaN(s) &amp;&amp; s &gt; 0);
        
        if (seats.length === 0) {
            alert(&quot;Please enter at least one valid seat number.&quot;);
            return;
        }

        seats = [...new Set(seats)].sort((a,b) =&gt; a-b);

        // Max Seats Logic
        let maxSeats = 72; 
        if(coach === &#39;3A&#39;) maxSeats = trainType === &#39;LHB&#39; ? 72 : 64; 
        if(coach === &#39;3A&#39; &amp;&amp; seats.some(s =&gt; s &gt; 72)) maxSeats = trainType === &#39;LHB&#39; ? 80 : 72; // Adjust for Sleeper
        if(coach === &#39;2A&#39;) maxSeats = trainType === &#39;LHB&#39; ? 52 : 46;
        if(coach === &#39;CC&#39;) maxSeats = 73;

        const validSeats = seats.filter(s =&gt; s &lt;= maxSeats);
        if(validSeats.length === 0) {
            alert(`Seats exceed maximum capacity (${maxSeats}) for this ${trainType} coach.`);
            return;
        }

        const dash = document.getElementById(&#39;resultDash&#39;);
        dash.classList.add(&#39;active&#39;);

        const resTitle = document.getElementById(&#39;resTitle&#39;);
        const insightList = document.getElementById(&#39;insightList&#39;);
        const mapsContainer = document.getElementById(&#39;mapsContainer&#39;);

        mapsContainer.innerHTML = &#39;&#39;; 
        let insights = &#39;&#39;;

        // --- GROUP INSIGHT LOGIC ---
        let activeCabins = [];
        let divisor = coach === &#39;CC&#39; ? 5 : (coach === &#39;2A&#39; ? 6 : 8);
        
        validSeats.forEach(s =&gt; {
            activeCabins.push(Math.ceil(s / divisor));
        });
        activeCabins = [...new Set(activeCabins)].sort((a,b) =&gt; a-b);

        if (validSeats.length &gt; 1) {
            resTitle.innerHTML = `Group Seating: &lt;span style=&quot;color:var(--primary);&quot;&gt;${validSeats.join(&#39;, &#39;)}&lt;/span&gt;`;
            if (activeCabins.length === 1) {
                insights += `&lt;li class=&quot;good&quot;&gt;&lt;span class=&quot;icon&quot;&gt;🎉&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Perfect Grouping!&lt;/strong&gt;&lt;br&gt;Your entire party is seated together in Cabin ${activeCabins[0]}.&lt;/div&gt;&lt;/li&gt;`;
            } else if (activeCabins.length === 2 &amp;&amp; Math.abs(activeCabins[0] - activeCabins[1]) === 1) {
                insights += `&lt;li class=&quot;warn&quot;&gt;&lt;span class=&quot;icon&quot;&gt;🤝&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Split but close.&lt;/strong&gt;&lt;br&gt;Your group is split across neighboring cabins (${activeCabins.join(&#39; &amp; &#39;)}).&lt;/div&gt;&lt;/li&gt;`;
            } else {
                insights += `&lt;li class=&quot;warn&quot;&gt;&lt;span class=&quot;icon&quot;&gt;⚠️&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Scattered Group.&lt;/strong&gt;&lt;br&gt;Your group is spread across multiple distant cabins.&lt;/div&gt;&lt;/li&gt;`;
            }
        } else {
            resTitle.innerHTML = `Seat &lt;span style=&quot;color:var(--primary);&quot;&gt;${validSeats[0]}&lt;/span&gt; Details`;
        }

        // --- RENDER EACH ACTIVE CABIN ---
        activeCabins.forEach(cabinNum =&gt; {
            
            let mapHtml = &#39;&#39;;
            let mapClass = &#39;&#39;;
            const startSeat = (cabinNum - 1) * divisor + 1;

            if (coach === &#39;3A&#39;) {
                mapClass = &#39;grid-3a&#39;;
                if(validSeats.length === 1) {
                    const mod = validSeats[0] % 8;
                    if (mod === 1 || mod === 4) insights += `&lt;li&gt;&lt;span class=&quot;icon&quot;&gt;🛏️&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Lower Berth (Window)&lt;/strong&gt;&lt;br&gt;Great accessibility.&lt;/div&gt;&lt;/li&gt;`;
                    if (mod === 2 || mod === 5) insights += `&lt;li&gt;&lt;span class=&quot;icon&quot;&gt;🛌&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Middle Berth&lt;/strong&gt;&lt;br&gt;Foldable during daytime.&lt;/div&gt;&lt;/li&gt;`;
                    if (mod === 3 || mod === 6) insights += `&lt;li class=&quot;good&quot;&gt;&lt;span class=&quot;icon&quot;&gt;🌙&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Upper Berth&lt;/strong&gt;&lt;br&gt;Ultimate privacy for sleeping anytime.&lt;/div&gt;&lt;/li&gt;`;
                    if (mod === 7) insights += `&lt;li&gt;&lt;span class=&quot;icon&quot;&gt;🪟&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Side Lower Berth&lt;/strong&gt;&lt;br&gt;Great views, slightly shorter bed.&lt;/div&gt;&lt;/li&gt;`;
                    if (mod === 0) insights += `&lt;li&gt;&lt;span class=&quot;icon&quot;&gt;🪜&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Side Upper Berth&lt;/strong&gt;&lt;br&gt;Private side window.&lt;/div&gt;&lt;/li&gt;`;
                }
                
                mapHtml += `
                    &lt;div class=&quot;col-bay&quot;&gt;
                        ${genSeat(startSeat, validSeats, &#39;LB&#39;)}
                        ${genSeat(startSeat+1, validSeats, &#39;MB&#39;)}
                        ${genSeat(startSeat+2, validSeats, &#39;UB&#39;)}
                    &lt;/div&gt;
                    &lt;div class=&quot;col-bay&quot;&gt;
                        ${genSeat(startSeat+3, validSeats, &#39;LB&#39;)}
                        ${genSeat(startSeat+4, validSeats, &#39;MB&#39;)}
                        ${genSeat(startSeat+5, validSeats, &#39;UB&#39;)}
                    &lt;/div&gt;
                    &lt;div class=&quot;aisle-space&quot;&gt;AISLE&lt;/div&gt;
                    &lt;div class=&quot;col-bay&quot; style=&quot;justify-content: flex-start;&quot;&gt;
                        ${genSeat(startSeat+6, validSeats, &#39;SL&#39;)}
                        ${genSeat(startSeat+7, validSeats, &#39;SU&#39;)}
                    &lt;/div&gt;`;
            } 
            else if (coach === &#39;2A&#39;) {
                mapClass = &#39;grid-2a&#39;;
                if(validSeats.length === 1) {
                    const mod = validSeats[0] % 6;
                    if (mod === 1 || mod === 3) insights += `&lt;li class=&quot;good&quot;&gt;&lt;span class=&quot;icon&quot;&gt;🛏️&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Lower Berth&lt;/strong&gt;&lt;br&gt;Spacious, comfortable, great window view.&lt;/div&gt;&lt;/li&gt;`;
                    if (mod === 2 || mod === 4) insights += `&lt;li&gt;&lt;span class=&quot;icon&quot;&gt;🌙&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Upper Berth&lt;/strong&gt;&lt;br&gt;Excellent privacy with curtains.&lt;/div&gt;&lt;/li&gt;`;
                    if (mod === 5) insights += `&lt;li&gt;&lt;span class=&quot;icon&quot;&gt;🪟&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Side Lower Berth&lt;/strong&gt;&lt;br&gt;Private window with curtains.&lt;/div&gt;&lt;/li&gt;`;
                    if (mod === 0) insights += `&lt;li&gt;&lt;span class=&quot;icon&quot;&gt;🪜&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Side Upper Berth&lt;/strong&gt;&lt;br&gt;Cozy and private.&lt;/div&gt;&lt;/li&gt;`;
                }

                mapHtml += `
                    &lt;div class=&quot;col-bay&quot;&gt;
                        ${genSeat(startSeat, validSeats, &#39;LB&#39;)}
                        ${genSeat(startSeat+1, validSeats, &#39;UB&#39;)}
                    &lt;/div&gt;
                    &lt;div class=&quot;col-bay&quot;&gt;
                        ${genSeat(startSeat+2, validSeats, &#39;LB&#39;)}
                        ${genSeat(startSeat+3, validSeats, &#39;UB&#39;)}
                    &lt;/div&gt;
                    &lt;div class=&quot;aisle-space&quot;&gt;AISLE&lt;/div&gt;
                    &lt;div class=&quot;col-bay&quot;&gt;
                        ${genSeat(startSeat+4, validSeats, &#39;SL&#39;)}
                        ${genSeat(startSeat+5, validSeats, &#39;SU&#39;)}
                    &lt;/div&gt;`;
            }
            else if (coach === &#39;CC&#39;) {
                mapClass = &#39;grid-cc&#39;;
                if(validSeats.length === 1) {
                    const mod = validSeats[0] % 5;
                    if (mod === 1) insights += `&lt;li class=&quot;good&quot;&gt;&lt;span class=&quot;icon&quot;&gt;🪟&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Window Seat&lt;/strong&gt;&lt;br&gt;3-Seater side.&lt;/div&gt;&lt;/li&gt;`;
                    if (mod === 2) insights += `&lt;li class=&quot;warn&quot;&gt;&lt;span class=&quot;icon&quot;&gt;😑&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Middle Seat&lt;/strong&gt;&lt;br&gt;Limited armrest space.&lt;/div&gt;&lt;/li&gt;`;
                    if (mod === 3) insights += `&lt;li&gt;&lt;span class=&quot;icon&quot;&gt;🚶&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Aisle Seat&lt;/strong&gt;&lt;br&gt;3-Seater side.&lt;/div&gt;&lt;/li&gt;`;
                    if (mod === 4) insights += `&lt;li&gt;&lt;span class=&quot;icon&quot;&gt;🚶&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Aisle Seat&lt;/strong&gt;&lt;br&gt;2-Seater side.&lt;/div&gt;&lt;/li&gt;`;
                    if (mod === 0) insights += `&lt;li class=&quot;good&quot;&gt;&lt;span class=&quot;icon&quot;&gt;⭐&lt;/span&gt; &lt;div&gt;&lt;strong&gt;Window Seat&lt;/strong&gt;&lt;br&gt;2-Seater side. Highly requested.&lt;/div&gt;&lt;/li&gt;`;
                }

                mapHtml += `
                    &lt;div class=&quot;col-bay&quot;&gt;${genSeat(startSeat, validSeats, &#39;W&#39;)}&lt;/div&gt;
                    &lt;div class=&quot;col-bay&quot;&gt;${genSeat(startSeat+1, validSeats, &#39;M&#39;)}&lt;/div&gt;
                    &lt;div class=&quot;col-bay&quot;&gt;${genSeat(startSeat+2, validSeats, &#39;A&#39;)}&lt;/div&gt;
                    &lt;div class=&quot;aisle-space&quot;&gt;&lt;/div&gt;
                    &lt;div class=&quot;col-bay&quot;&gt;${genSeat(startSeat+3, validSeats, &#39;A&#39;)}&lt;/div&gt;
                    &lt;div class=&quot;col-bay&quot;&gt;${genSeat(startSeat+4, validSeats, &#39;W&#39;)}&lt;/div&gt;`;
            }

            const cabinDiv = document.createElement(&#39;div&#39;);
            cabinDiv.className = &#39;map-card&#39;;
            cabinDiv.innerHTML = `
                &lt;div class=&quot;map-title&quot;&gt;${coach === &#39;CC&#39; ? &#39;Row&#39; : &#39;Cabin&#39;} ${cabinNum} &lt;span style=&quot;text-transform:none; color:#94a3b8; font-weight:600;&quot;&gt;(${trainType})&lt;/span&gt;&lt;/div&gt;
                &lt;div class=&quot;window-line&quot;&gt;&lt;div class=&quot;window-glass&quot;&gt;&lt;/div&gt;&lt;/div&gt;
                &lt;div class=&quot;window-line right&quot;&gt;&lt;div class=&quot;window-glass&quot;&gt;&lt;/div&gt;&lt;/div&gt;
                &lt;div class=&quot;cabin-grid ${mapClass}&quot;&gt;${mapHtml}&lt;/div&gt;
            `;
            mapsContainer.appendChild(cabinDiv);
        });

        insightList.innerHTML = insights;
        
        // Scroll into view gently
        setTimeout(() =&gt; {
            dash.scrollIntoView({ behavior: &#39;smooth&#39;, block: &#39;start&#39; });
        }, 100);
    }

    function genSeat(currentSeat, targetSeatsArray, label) {
        if(currentSeat &lt;= 0) return &#39;&#39;;
        const isActive = targetSeatsArray.includes(currentSeat) ? &#39;active&#39; : &#39;&#39;;
        return `&lt;div class=&quot;seat ${isActive}&quot;&gt;
            ${currentSeat}
            &lt;small&gt;${label}&lt;/small&gt;
        &lt;/div&gt;`;
    }
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/6614685440951962535'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/6614685440951962535'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/03/find-train-berth-and-seating.html' title='Find Train Berth and Seating Arrangement Online'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-5070736821847213965</id><published>2026-03-30T01:07:00.000-07:00</published><updated>2026-03-30T01:07:49.171-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Indian Railway"/><category scheme="http://www.blogger.com/atom/ns#" term="IRCTC"/><title type='text'>IRCTC Ticket Refund Calculator</title><content type='html'>&lt;title&gt;IRCTC Refund Calculator &amp; Tatkal Timers (2026 Rules) - OTechy&lt;/title&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
&lt;meta name=&quot;description&quot; content=&quot;Calculate your exact IRCTC cancellation refund with the new April 2026 rules. Track live IST countdowns, target journey dates, and check TDR eligibility.&quot;&gt;
&lt;meta property=&quot;og:title&quot; content=&quot;IRCTC Refund Calculator Online - OTechy&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;0,800;1,500&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

&lt;style&gt;
    /* --- OTechy Design System (Railway Theme) --- */
    :root { 
        --primary: #2563eb; /* IRCTC Blue */
        --primary-dark: #1e3a8a; 
        --text-dark: #0f172a; --accent: #475569; 
        --bg: #f8fafc; --white: #fff; --border: #e2e8f0; 
        --success: #10b981; --warning: #f59e0b; --danger: #ef4444;
        --soft-blue: #eff6ff; --font-main: &#39;Poppins&#39;, sans-serif;
    }
    
    * { box-sizing: border-box; }
    body { background-color: var(--bg); font-family: var(--font-main); color: var(--text-dark); margin: 0; line-height: 1.6; }
    .otechy-tool-wrapper { max-width: 1000px; margin: 0 auto; padding: 30px 15px 50px; }
    
    /* Hero Section */
    .hero-section { text-align: center; margin-bottom: 25px; }
    .new-badge { display: inline-block; background: #fef2f2; color: #b91c1c; padding: 4px 10px; border-radius: 50px; font-size: 10px; font-weight: 800; border: 1px solid #fecaca; margin-bottom: 10px; text-transform: uppercase; letter-spacing: 0.5px; }
    .hero-section h1 { font-size: clamp(22px, 5vw, 32px); font-weight: 800; margin: 0 0 8px 0; letter-spacing: -0.5px; }
    .hero-section h1 span { color: var(--primary); }
    .hero-subtitle { color: var(--accent); font-size: 13px; font-weight: 500; max-width: 600px; margin: 0 auto 20px; }

    /* Timers Grid */
    .timers-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; margin-bottom: 25px; }
    .timer-card { background: var(--white); border: 1px solid var(--border); border-radius: 12px; padding: 15px; text-align: center; box-shadow: 0 4px 10px rgba(0,0,0,0.02); position: relative; overflow: hidden; display: flex; flex-direction: column; }
    .timer-card::before { content: &#39;&#39;; position: absolute; top: 0; left: 0; width: 100%; height: 3px; background: var(--primary); }
    .timer-card.tatkal-ac::before { background: var(--warning); }
    .timer-card.tatkal-nonac::before { background: var(--danger); }
    
    .t-title { font-size: 14px; font-weight: 800; color: var(--text-dark); text-transform: uppercase; margin-bottom: 2px; }
    .t-sub { font-size: 11px; color: var(--accent); font-weight: 600; margin-bottom: 12px; }
    .t-clock { font-size: 28px; font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1; display: flex; justify-content: center; gap: 6px; margin-bottom: 15px; }
    .t-clock span { color: var(--primary-dark); }
    .t-clock small { font-size: 9px; color: var(--accent); text-transform: uppercase; display: block; margin-top: 3px; font-weight: 700; }
    
    .target-date { margin-top: auto; padding: 8px 10px; background: var(--soft-blue); color: var(--primary-dark); border-radius: 8px; font-size: 12px; font-weight: 700; border: 1px dashed #bfdbfe; }

    /* Calculator Grid */
    .calc-card { background: var(--white); border-radius: 16px; border: 1px solid var(--border); padding: 25px; box-shadow: 0 8px 20px rgba(37, 99, 235, 0.04); margin-bottom: 25px; }
    .calc-header { font-size: 16px; font-weight: 800; margin: 0 0 15px; color: var(--text-dark); display: flex; align-items: center; gap: 8px; border-bottom: 1px solid var(--border); padding-bottom: 12px; }
    
    .input-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 15px; margin-bottom: 20px; }
    .input-group { display: flex; flex-direction: column; }
    .input-group label { font-size: 11px; font-weight: 700; color: var(--accent); text-transform: uppercase; margin-bottom: 6px; }
    
    .form-control { width: 100%; padding: 10px 14px; border-radius: 8px; border: 1px solid #cbd5e1; font-family: var(--font-main); font-size: 13px; font-weight: 600; color: var(--text-dark); outline: none; transition: 0.2s; background: #f8fafc; -webkit-appearance: none; }
    .form-control:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1); background: #fff; }
    select.form-control { cursor: pointer; background-image: url(&quot;data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23475569%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E&quot;); background-repeat: no-repeat; background-position: right 12px top 50%; background-size: 9px auto; }
    
    .input-wrapper { position: relative; }
    .input-prefix { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--accent); font-weight: 700; font-size: 13px; }
    .input-wrapper .form-control { padding-left: 28px; }

    /* Results Area */
    .result-box { background: var(--text-dark); border-radius: 12px; padding: 20px; color: #fff; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 15px; }
    .res-col { flex: 1; min-width: 140px; }
    .res-lbl { font-size: 10px; font-weight: 600; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px; }
    .res-val { font-size: 26px; font-weight: 800; line-height: 1; }
    .val-deduct { color: #fca5a5; }
    .val-refund { color: #86efac; }
    .res-note { font-size: 9px; color: #64748b; margin-top: 6px; display: block; line-height: 1.3; }

    /* Sub-Utilities Grid (TDR) */
    .utilities-grid { display: block; max-width: 700px; margin: 0 auto 25px; }
    .utility-card { background: var(--white); padding: 20px; border-radius: 12px; border: 1px solid var(--border); box-shadow: 0 4px 10px rgba(0,0,0,0.02); text-align: center; }
    .util-header { font-size: 14px; font-weight: 800; color: var(--text-dark); margin-bottom: 10px; display: flex; align-items: center; justify-content: center; gap: 6px; }
    .tdr-result { margin-top: 15px; padding: 12px; background: var(--soft-blue); border-radius: 8px; border-left: 4px solid var(--primary); font-size: 11px; font-weight: 600; color: var(--primary-dark); display: none; text-align: left; }

    /* 12 FAQ Section */
    .rules-section { margin-top: 30px; }
    .rules-section h3 { font-size: 18px; font-weight: 850; margin: 0 0 20px; color: var(--text-dark); text-align: center; }
    .faq-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 15px; }
    .rule-card { background: #fff; padding: 15px; border-radius: 10px; border: 1px solid var(--border); border-top: 3px solid var(--primary); box-shadow: 0 2px 8px rgba(0,0,0,0.02); transition: 0.2s; }
    .rule-card:hover { transform: translateY(-2px); box-shadow: 0 6px 15px rgba(37, 99, 235, 0.05); }
    .rule-card strong { color: var(--primary-dark); display: block; margin-bottom: 6px; font-size: 12px; font-weight: 800; line-height: 1.4; }
    .rule-card p { font-size: 12px; color: var(--accent); margin: 0; line-height: 1.5; font-weight: 500; }

    /* Ads */
    .otechy-ad { background: #e2e8f0; color: #94a3b8; font-size: 10px; font-weight: 700; text-transform: uppercase; height: 90px; display: flex; align-items: center; justify-content: center; border-radius: 10px; margin: 20px 0; width: 100%; }

    @media (max-width: 600px) {
        .otechy-tool-wrapper { padding: 15px 10px; }
        .input-grid { grid-template-columns: 1fr; gap: 12px; }
        .result-box { flex-direction: column; text-align: center; gap: 12px; }
        .res-col { width: 100%; }
        .res-note { text-align: center; }
        .t-clock { font-size: 26px; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;

    &lt;div class=&quot;hero-section&quot;&gt;
        &lt;div class=&quot;new-badge&quot;&gt;IRCTC Toolkit 🇮🇳&lt;/div&gt;
        &lt;h1&gt;IRCTC &lt;span&gt;Refund Calculator&lt;/span&gt;&lt;/h1&gt;
        &lt;p class=&quot;hero-subtitle&quot;&gt;Calculate precise refunds using the new 2026 cancellation slabs. Track live IST booking windows and check TDR eligibility.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;timers-grid&quot;&gt;
        &lt;div class=&quot;timer-card&quot;&gt;
            &lt;div class=&quot;t-title&quot;&gt;Advance Booking (60 Days)&lt;/div&gt;
            &lt;div class=&quot;t-sub&quot; id=&quot;win-arp&quot;&gt;🔓 Next Window: Loading...&lt;/div&gt;
            &lt;div class=&quot;t-clock&quot; id=&quot;timer-arp&quot;&gt;
                &lt;div&gt;&lt;span id=&quot;h-arp&quot;&gt;00&lt;/span&gt;&lt;small&gt;Hrs&lt;/small&gt;&lt;/div&gt;:
                &lt;div&gt;&lt;span id=&quot;m-arp&quot;&gt;00&lt;/span&gt;&lt;small&gt;Min&lt;/small&gt;&lt;/div&gt;:
                &lt;div&gt;&lt;span id=&quot;s-arp&quot;&gt;00&lt;/span&gt;&lt;small&gt;Sec&lt;/small&gt;&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;target-date&quot; id=&quot;date-arp&quot;&gt;🧳 Journey Date: Loading...&lt;/div&gt;
        &lt;/div&gt;
        
        &lt;div class=&quot;timer-card tatkal-ac&quot;&gt;
            &lt;div class=&quot;t-title&quot;&gt;AC Tatkal Window&lt;/div&gt;
            &lt;div class=&quot;t-sub&quot; id=&quot;win-ac&quot;&gt;🔓 Next Window: Loading...&lt;/div&gt;
            &lt;div class=&quot;t-clock&quot; id=&quot;timer-ac&quot;&gt;
                &lt;div&gt;&lt;span id=&quot;h-ac&quot;&gt;00&lt;/span&gt;&lt;small&gt;Hrs&lt;/small&gt;&lt;/div&gt;:
                &lt;div&gt;&lt;span id=&quot;m-ac&quot;&gt;00&lt;/span&gt;&lt;small&gt;Min&lt;/small&gt;&lt;/div&gt;:
                &lt;div&gt;&lt;span id=&quot;s-ac&quot;&gt;00&lt;/span&gt;&lt;small&gt;Sec&lt;/small&gt;&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;target-date&quot; id=&quot;date-ac&quot; style=&quot;background:#fffbeb; color:#b45309; border-color:#fde68a;&quot;&gt;🧳 Journey Date: Loading...&lt;/div&gt;
        &lt;/div&gt;
        
        &lt;div class=&quot;timer-card tatkal-nonac&quot;&gt;
            &lt;div class=&quot;t-title&quot;&gt;Non-AC Tatkal Window&lt;/div&gt;
            &lt;div class=&quot;t-sub&quot; id=&quot;win-nac&quot;&gt;🔓 Next Window: Loading...&lt;/div&gt;
            &lt;div class=&quot;t-clock&quot; id=&quot;timer-nonac&quot;&gt;
                &lt;div&gt;&lt;span id=&quot;h-nac&quot;&gt;00&lt;/span&gt;&lt;small&gt;Hrs&lt;/small&gt;&lt;/div&gt;:
                &lt;div&gt;&lt;span id=&quot;m-nac&quot;&gt;00&lt;/span&gt;&lt;small&gt;Min&lt;/small&gt;&lt;/div&gt;:
                &lt;div&gt;&lt;span id=&quot;s-nac&quot;&gt;00&lt;/span&gt;&lt;small&gt;Sec&lt;/small&gt;&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;target-date&quot; id=&quot;date-nac&quot; style=&quot;background:#fef2f2; color:#b91c1c; border-color:#fecaca;&quot;&gt;🧳 Journey Date: Loading...&lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 20px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT TOP&lt;/div&gt;

    &lt;div class=&quot;calc-card&quot;&gt;
        &lt;h2 class=&quot;calc-header&quot;&gt;
            &lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;2&quot; y=&quot;4&quot; width=&quot;20&quot; height=&quot;16&quot; rx=&quot;2&quot; ry=&quot;2&quot;&gt;&lt;/rect&gt;&lt;line x1=&quot;2&quot; y1=&quot;10&quot; x2=&quot;22&quot; y2=&quot;10&quot;&gt;&lt;/line&gt;&lt;/svg&gt;
            E-Ticket Refund Calculator (2026 Rules)
        &lt;/h2&gt;
        
        &lt;div class=&quot;input-grid&quot;&gt;
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Ticket Status&lt;/label&gt;
                &lt;select class=&quot;form-control&quot; id=&quot;inStatus&quot; onchange=&quot;calcRefund()&quot;&gt;
                    &lt;option value=&quot;confirmed&quot;&gt;General - Confirmed&lt;/option&gt;
                    &lt;option value=&quot;rac_wl&quot;&gt;General - RAC / Waitlisted&lt;/option&gt;
                    &lt;option value=&quot;tatkal_conf&quot;&gt;Tatkal - Confirmed&lt;/option&gt;
                    &lt;option value=&quot;tatkal_wl&quot;&gt;Tatkal - RAC / Waitlisted&lt;/option&gt;
                &lt;/select&gt;
            &lt;/div&gt;
            
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Travel Class&lt;/label&gt;
                &lt;select class=&quot;form-control&quot; id=&quot;inClass&quot; onchange=&quot;calcRefund()&quot;&gt;
                    &lt;option value=&quot;1A&quot;&gt;1A / Executive Class&lt;/option&gt;
                    &lt;option value=&quot;2A&quot;&gt;2A / First Class&lt;/option&gt;
                    &lt;option value=&quot;3A&quot;&gt;3A / AC Chair Car / 3E&lt;/option&gt;
                    &lt;option value=&quot;SL&quot;&gt;Sleeper Class (SL)&lt;/option&gt;
                    &lt;option value=&quot;2S&quot;&gt;Second Class (2S)&lt;/option&gt;
                &lt;/select&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;input-grid&quot;&gt;
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Time Left Before Departure&lt;/label&gt;
                &lt;select class=&quot;form-control&quot; id=&quot;inTime&quot; onchange=&quot;calcRefund()&quot;&gt;
                    &lt;option value=&quot;72h&quot;&gt;More than 72 Hours&lt;/option&gt;
                    &lt;option value=&quot;24h&quot;&gt;Between 24 to 72 Hours&lt;/option&gt;
                    &lt;option value=&quot;8h&quot;&gt;Between 8 to 24 Hours&lt;/option&gt;
                    &lt;option value=&quot;0h&quot;&gt;Less than 8 Hours (Chart Prepared)&lt;/option&gt;
                &lt;/select&gt;
            &lt;/div&gt;

            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Base Fare (Per Passenger)&lt;/label&gt;
                &lt;div class=&quot;input-wrapper&quot;&gt;
                    &lt;span class=&quot;input-prefix&quot;&gt;&amp;#8377;&lt;/span&gt;
                    &lt;input type=&quot;number&quot; id=&quot;inFare&quot; class=&quot;form-control&quot; value=&quot;1500&quot; min=&quot;0&quot; oninput=&quot;calcRefund()&quot;&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;result-box&quot;&gt;
            &lt;div class=&quot;res-col&quot;&gt;
                &lt;div class=&quot;res-lbl&quot;&gt;IRCTC Cancellation Fee&lt;/div&gt;
                &lt;div class=&quot;res-val val-deduct&quot; id=&quot;outFee&quot;&gt;&amp;#8377;0&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;res-col&quot;&gt;
                &lt;div class=&quot;res-lbl&quot;&gt;Estimated Refund&lt;/div&gt;
                &lt;div class=&quot;res-val val-refund&quot; id=&quot;outRefund&quot;&gt;&amp;#8377;0&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;res-col&quot; style=&quot;flex: 0.5; text-align: right;&quot;&gt;
                &lt;span class=&quot;res-note&quot;&gt;*Per passenger.&lt;br&gt;*Excludes GST and convenience fees.&lt;/span&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;utilities-grid&quot;&gt;
        &lt;div class=&quot;utility-card&quot; style=&quot;text-align: center;&quot;&gt;
            &lt;div class=&quot;util-header&quot;&gt;🧾 TDR Eligibility Checker&lt;/div&gt;
            &lt;p style=&quot;font-size: 11px; color: var(--accent); margin-bottom: 12px;&quot;&gt;Select your issue to see if you qualify for a refund after chart preparation.&lt;/p&gt;
            &lt;select class=&quot;form-control&quot; id=&quot;tdrSelect&quot; onchange=&quot;checkTDR()&quot;&gt;
                &lt;option value=&quot;none&quot;&gt;-- Select Reason for TDR --&lt;/option&gt;
                &lt;option value=&quot;delay&quot;&gt;Train delayed by more than 3 hours&lt;/option&gt;
                &lt;option value=&quot;ac_fail&quot;&gt;AC failure in coach&lt;/option&gt;
                &lt;option value=&quot;divert&quot;&gt;Train diverted and passenger not travelling&lt;/option&gt;
                &lt;option value=&quot;partial&quot;&gt;Party partially confirmed, passengers not travelling&lt;/option&gt;
                &lt;option value=&quot;missed&quot;&gt;Missed train due to personal reasons&lt;/option&gt;
            &lt;/select&gt;
            &lt;div class=&quot;tdr-result&quot; id=&quot;tdrOutput&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 20px 0; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;

    &lt;div class=&quot;rules-section&quot;&gt;
        &lt;h3&gt;Official IRCTC Cancellation FAQ (Updated April 2026)&lt;/h3&gt;
        &lt;div class=&quot;faq-grid&quot;&gt;
            &lt;div class=&quot;rule-card&quot;&gt;
                &lt;strong&gt;1. What is the fee to cancel a Confirmed ticket &gt;72 hours before departure?&lt;/strong&gt;
                &lt;p&gt;Under the new rules, a flat fee is deducted: 1st AC/Exec (&amp;#8377;240), 2AC/1st Class (&amp;#8377;200), 3AC/CC (&amp;#8377;180), Sleeper (&amp;#8377;120), and Second Class (&amp;#8377;60).&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;rule-card&quot;&gt;
                &lt;strong&gt;2. What if I cancel between 72 hours and 24 hours before departure?&lt;/strong&gt;
                &lt;p&gt;IRCTC will deduct 25% of the base fare, subject to the minimum flat cancellation charges. (This window was previously 48-12 hrs).&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;rule-card&quot;&gt;
                &lt;strong&gt;3. What is the rule for cancelling between 24 hours and 8 hours?&lt;/strong&gt;
                &lt;p&gt;If you cancel within this tighter window, exactly 50% of the base fare is deducted, again subject to the minimum flat fee limits.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;rule-card&quot;&gt;
                &lt;strong&gt;4. Can I get a refund if I cancel less than 8 hours before the train leaves?&lt;/strong&gt;
                &lt;p&gt;No. Under the stringent April 2026 rules, if a confirmed ticket is cancelled less than 8 hours before scheduled departure, zero refund is granted.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;rule-card&quot;&gt;
                &lt;strong&gt;5. What are the cancellation rules for RAC and Waitlisted (WL) tickets?&lt;/strong&gt;
                &lt;p&gt;You can cancel RAC/WL tickets up to 30 minutes before departure. A flat clerical fee of &amp;#8377;60 (+ GST for AC classes) is deducted per passenger.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;rule-card&quot;&gt;
                &lt;strong&gt;6. Do I get a refund if I cancel a Confirmed Tatkal ticket?&lt;/strong&gt;
                &lt;p&gt;No. IRCTC strictly grants zero refund on the cancellation of confirmed Tatkal tickets under normal circumstances.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;rule-card&quot;&gt;
                &lt;strong&gt;7. What happens if my Tatkal ticket remains Waitlisted (WL)?&lt;/strong&gt;
                &lt;p&gt;If your Tatkal ticket remains waitlisted or RAC, you can cancel it up to 30 minutes before departure. The normal RAC/WL deduction of &amp;#8377;60 applies.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;rule-card&quot;&gt;
                &lt;strong&gt;8. Are Convenience Fees and Payment Gateway charges refunded?&lt;/strong&gt;
                &lt;p&gt;No. IRCTC convenience fees, travel agent charges, and payment gateway transaction charges are strictly non-refundable.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;rule-card&quot;&gt;
                &lt;strong&gt;9. What if my train is fully cancelled by IRCTC?&lt;/strong&gt;
                &lt;p&gt;If the train is cancelled by the Railways (due to weather, technical issues, etc.), an automatic full refund is issued to your bank. No TDR filing is required.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;rule-card&quot;&gt;
                &lt;strong&gt;10. What if my train is delayed by more than 3 hours?&lt;/strong&gt;
                &lt;p&gt;If the train is running late by 3+ hours from your boarding station, you can claim a full refund, but you MUST file a TDR online before actual departure.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;rule-card&quot;&gt;
                &lt;strong&gt;11. What is an Auto-Cancellation for WL E-Tickets?&lt;/strong&gt;
                &lt;p&gt;If your e-ticket remains fully waitlisted even after chart preparation, IRCTC automatically cancels it and processes the refund to your original payment method.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;rule-card&quot;&gt;
                &lt;strong&gt;12. How long does it take for the IRCTC refund to reach my bank?&lt;/strong&gt;
                &lt;p&gt;Once successfully cancelled, IRCTC processes the refund immediately, but it generally takes 3 to 7 working days to reflect in your original account.&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 30px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px; border-radius: 10px;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;
    // --- 1. NEW 2026 REFUND ENGINE ---
    function calcRefund() {
        const status = document.getElementById(&#39;inStatus&#39;).value;
        const cls = document.getElementById(&#39;inClass&#39;).value;
        const time = document.getElementById(&#39;inTime&#39;).value;
        const fare = parseFloat(document.getElementById(&#39;inFare&#39;).value) || 0;

        let fee = 0;
        let refund = 0;

        // Flat Fees Mapping
        const flatFees = { &#39;1A&#39;: 240, &#39;2A&#39;: 200, &#39;3A&#39;: 180, &#39;SL&#39;: 120, &#39;2S&#39;: 60 };
        const flatFee = flatFees[cls] || 60;

        if (status === &#39;tatkal_conf&#39;) {
            fee = fare;
        } else if (status === &#39;rac_wl&#39; || status === &#39;tatkal_wl&#39;) {
            if (time === &#39;0h&#39;) {
                fee = fare; 
            } else {
                fee = 60;
            }
        } else if (status === &#39;confirmed&#39;) {
            if (time === &#39;72h&#39;) {
                fee = flatFee;
            } else if (time === &#39;24h&#39;) {
                fee = Math.max(flatFee, fare * 0.25);
            } else if (time === &#39;8h&#39;) {
                fee = Math.max(flatFee, fare * 0.50);
            } else if (time === &#39;0h&#39;) {
                fee = fare; 
            }
        }

        if (fee &gt; fare) fee = fare; 
        refund = fare - fee;
        if (refund &lt; 0) refund = 0;

        document.getElementById(&#39;outFee&#39;).innerHTML = `&amp;#8377;${Math.round(fee).toLocaleString(&#39;en-IN&#39;)}`;
        document.getElementById(&#39;outRefund&#39;).innerHTML = `&amp;#8377;${Math.round(refund).toLocaleString(&#39;en-IN&#39;)}`;
    }
    calcRefund(); 

    // --- 2. TDR ELIGIBILITY CHECKER ---
    function checkTDR() {
        const val = document.getElementById(&#39;tdrSelect&#39;).value;
        const output = document.getElementById(&#39;tdrOutput&#39;);
        
        output.style.display = &quot;block&quot;;
        
        if(val === &#39;delay&#39;) {
            output.innerHTML = &quot;✅ &lt;strong&gt;Full Refund Eligible.&lt;/strong&gt; You must file the TDR online before the actual departure of the train from your boarding station.&quot;;
        } else if(val === &#39;ac_fail&#39;) {
            output.innerHTML = &quot;⚠️ &lt;strong&gt;Partial Refund Eligible.&lt;/strong&gt; You will get the difference of fare between AC and Sleeper class. Requires a certificate from the TTE.&quot;;
        } else if(val === &#39;divert&#39;) {
            output.innerHTML = &quot;✅ &lt;strong&gt;Full Refund Eligible.&lt;/strong&gt; File the TDR online up to 72 hours of the scheduled departure.&quot;;
        } else if(val === &#39;partial&#39;) {
            output.innerHTML = &quot;⚠️ &lt;strong&gt;Refund Eligible (Less Clerkage).&lt;/strong&gt; If some passengers are confirmed and others WL/RAC in a family ticket, file TDR up to 30 mins before departure.&quot;;
        } else if(val === &#39;missed&#39;) {
            output.innerHTML = &quot;❌ &lt;strong&gt;No Refund.&lt;/strong&gt; TDR cannot be filed and no refund is granted if you miss a train on a confirmed ticket and chart is prepared.&quot;;
        } else {
            output.style.display = &quot;none&quot;;
        }
    }

    // --- 3. IST LIVE TIMERS &amp; JOURNEY DATES ---
    function getNextTargetIST(targetHour) {
        const now = new Date();
        const utc = now.getTime() + (now.getTimezoneOffset() * 60000);
        const istTime = new Date(utc + (3600000 * 5.5));
        
        let target = new Date(istTime);
        target.setHours(targetHour, 0, 0, 0);

        if (istTime.getTime() &gt; target.getTime()) {
            target.setDate(target.getDate() + 1);
        }
        return { istTime, target };
    }

    function updateTimers() {
        const targets = [
            { id: &#39;arp&#39;, hour: 8, advanceDays: 60, isTatkal: false },
            { id: &#39;ac&#39;, hour: 10, advanceDays: 1, isTatkal: true },
            { id: &#39;nac&#39;, hour: 11, advanceDays: 1, isTatkal: true }
        ];

        const dateOptions = { weekday: &#39;short&#39;, day: &#39;2-digit&#39;, month: &#39;short&#39;, year: &#39;numeric&#39; };

        targets.forEach(t =&gt; {
            const times = getNextTargetIST(t.hour);
            let diff = times.target.getTime() - times.istTime.getTime();

            // Update Countdown
            const h = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
            const m = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
            const s = Math.floor((diff % (1000 * 60)) / 1000);

            document.getElementById(`h-${t.id}`).innerText = h.toString().padStart(2, &#39;0&#39;);
            document.getElementById(`m-${t.id}`).innerText = m.toString().padStart(2, &#39;0&#39;);
            document.getElementById(`s-${t.id}`).innerText = s.toString().padStart(2, &#39;0&#39;);

            // Update &quot;Next Window&quot; text
            const ampmStr = t.hour &gt;= 12 ? &#39;PM&#39; : &#39;AM&#39;;
            const displayHour = t.hour &gt; 12 ? t.hour - 12 : t.hour;
            document.getElementById(`win-${t.id}`).innerText = `🔓 Booking Window: ${times.target.toLocaleDateString(&#39;en-IN&#39;, {day:&#39;numeric&#39;, month:&#39;short&#39;})} at ${displayHour}:00 ${ampmStr}`;

            // Update &quot;Journey Date&quot; text
            const journeyDate = new Date(times.target);
            journeyDate.setDate(journeyDate.getDate() + t.advanceDays);
            document.getElementById(`date-${t.id}`).innerText = `🧳 Journey Date: ${journeyDate.toLocaleDateString(&#39;en-IN&#39;, dateOptions)}`;
        });
    }

    // Run immediately and then every second
    updateTimers();
    setInterval(updateTimers, 1000);
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/5070736821847213965'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/5070736821847213965'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/03/irctc-ticket-refund-calculator.html' title='IRCTC Ticket Refund Calculator'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-3877178182119082501</id><published>2026-03-28T10:38:00.000-07:00</published><updated>2026-03-28T11:11:18.439-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Crystal Healing"/><title type='text'>Crystal Studio | Moon Tracker &amp; Chanting Mantras</title><content type='html'>&lt;title&gt;Lunar Crystal Studio | Full Moon Tracker, Expert Database &amp; Vastu - OTechy&lt;/title&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
&lt;meta name=&quot;description&quot; content=&quot;The ultimate expert crystal database. Track moon phases, explore 80+ stones with rarity, intensity, pairings, Vastu, and Chakras.&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,500;0,600;0,700;0,850;1,500&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

&lt;style&gt;
    /* --- OTechy Design System --- */
    :root { 
        --primary: #8b5cf6; --primary-dark: #6d28d9; 
        --text-dark: #0f172a; --accent: #475569; 
        --bg: #f8fafc; --white: #fff; --border: #e2e8f0; 
        --soft-purple: #f3e8ff; --font-main: &#39;Poppins&#39;, sans-serif;
    }
    
    * { box-sizing: border-box; }
    body { background-color: var(--bg); font-family: var(--font-main); color: var(--text-dark); margin: 0; line-height: 1.6; }
    .otechy-tool-wrapper { max-width: 1200px; margin: 0 auto; padding: 40px 20px 60px; }
    
    /* Hero Section */
    .hero-section { text-align: center; margin-bottom: 20px; position: relative; padding: 50px 20px; background: linear-gradient(135deg, var(--soft-purple) 0%, #ffffff 100%); border-radius: 24px; border: 1px solid var(--border); box-shadow: 0 10px 30px rgba(139, 92, 246, 0.05); }
    .moon-orb { width: 80px; height: 80px; border-radius: 50%; margin: 0 auto 15px; position: relative; background: radial-gradient(circle at 30% 30%, #ffffff, #fef08a, #eab308); box-shadow: 0 0 30px rgba(250, 204, 21, 0.4), inset -8px -8px 15px rgba(0,0,0,0.1); }
    .crater { position: absolute; background: rgba(0,0,0,0.05); border-radius: 50%; }
    .hero-section h1 { font-size: clamp(24px, 5vw, 36px); font-weight: 850; margin: 0 0 10px 0; letter-spacing: -0.5px; }
    .hero-section h1 span { color: var(--primary); }
    
    /* Countdown &amp; Phase */
    .countdown-box { display: inline-flex; gap: 15px; background: var(--white); padding: 10px 20px; border-radius: 16px; border: 1px solid var(--border); box-shadow: 0 4px 15px rgba(0,0,0,0.03); margin-bottom: 20px; }
    .time-block { display: flex; flex-direction: column; align-items: center; min-width: 50px; }
    .time-val { font-size: 24px; font-weight: 850; color: var(--primary); line-height: 1; }
    .time-lbl { font-size: 10px; font-weight: 700; text-transform: uppercase; color: var(--accent); letter-spacing: 1px; margin-top: 5px; }
    .time-sep { font-size: 24px; font-weight: 850; color: var(--border); line-height: 1; }
    
    .recommendation-banner { background: #fffbeb; border: 1px solid #fde68a; color: #b45309; padding: 12px 20px; border-radius: 12px; font-size: 13px; font-weight: 600; display: inline-block; max-width: 800px; margin: 0 auto; box-shadow: 0 4px 10px rgba(245, 158, 11, 0.05); }
    .recommendation-banner strong { color: #92400e; }

    /* Controls */
    .controls-area { margin: 30px 0; display: flex; flex-direction: column; gap: 20px; align-items: center; }
    .search-bar { width: 100%; max-width: 500px; position: relative; }
    .search-bar input { width: 100%; padding: 14px 20px 14px 45px; border-radius: 50px; border: 2px solid var(--border); font-family: var(--font-main); font-size: 14px; font-weight: 500; outline: none; transition: 0.2s; box-shadow: 0 4px 15px rgba(0,0,0,0.02); }
    .search-bar input:focus { border-color: var(--primary); box-shadow: 0 0 0 4px rgba(139, 92, 246, 0.1); }
    .search-icon { position: absolute; left: 15px; top: 50%; transform: translateY(-50%); color: var(--accent); }

    .filter-bar { display: flex; justify-content: center; gap: 8px; flex-wrap: wrap; max-width: 1000px; }
    .filter-btn { background: var(--white); border: 1px solid var(--border); color: var(--accent); padding: 6px 14px; border-radius: 50px; font-family: var(--font-main); font-weight: 600; font-size: 11px; cursor: pointer; transition: 0.2s; text-transform: uppercase; letter-spacing: 0.5px; }
    .filter-btn:hover { border-color: var(--primary); color: var(--primary); background: var(--soft-purple); }
    .filter-btn.active { background: var(--text-dark); color: #fff; border-color: var(--text-dark); box-shadow: 0 4px 10px rgba(0,0,0,0.1); }
    .btn-fav { color: #ef4444; border-color: #fecaca; background: #fef2f2; }
    .btn-fav.active { background: #ef4444; color: #fff; border-color: #ef4444; }

    /* Crystal Grid */
    .crystal-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); gap: 25px; }
    .crystal-card { background: var(--white); border-radius: 16px; border: 1px solid var(--border); padding: 25px; transition: 0.3s; position: relative; overflow: hidden; box-shadow: 0 4px 12px rgba(0,0,0,0.02); display: flex; flex-direction: column; }
    .crystal-card:hover { transform: translateY(-4px); border-color: var(--primary); box-shadow: 0 12px 25px rgba(139, 92, 246, 0.08); }
    
    .card-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 10px; }
    .crystal-name { font-size: 20px; font-weight: 850; margin: 0; color: var(--text-dark); letter-spacing: -0.5px; display: flex; align-items: center; gap: 10px; }
    .crystal-color-tag { width: 16px; height: 16px; border-radius: 50%; border: 1px solid rgba(0,0,0,0.1); box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
    
    .fav-icon { cursor: pointer; font-size: 22px; color: var(--border); transition: 0.2s; user-select: none; }
    .fav-icon.is-fav { color: #ef4444; }
    .fav-icon:hover { transform: scale(1.1); }
    
    .expert-badges { display: flex; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
    .badge-intensity { font-size: 9px; font-weight: 800; text-transform: uppercase; padding: 4px 8px; border-radius: 4px; background: #fef2f2; color: #b91c1c; border: 1px solid #fecaca; }
    .badge-intensity.gentle { background: #f0fdf4; color: #15803d; border-color: #bbf7d0; }
    .badge-intensity.medium { background: #eff6ff; color: #1d4ed8; border-color: #bfdbfe; }
    .badge-intensity.extreme { background: #1e293b; color: #fff; border-color: #000; }
    
    .badge-rarity { font-size: 9px; font-weight: 800; text-transform: uppercase; padding: 4px 8px; border-radius: 4px; background: #fffbeb; color: #b45309; border: 1px solid #fde68a; }
    .badge-rarity.premium { background: #fdf4ff; color: #a21caf; border-color: #fae8ff; }
    
    .intent-wrap { margin-bottom: 15px; }
    .intent-tag { display: inline-block; font-size: 10px; font-weight: 800; text-transform: uppercase; padding: 5px 12px; border-radius: 6px; background: var(--text-dark); color: #fff; margin: 0 4px 4px 0; }
    
    .meta-tags { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 20px; }
    .m-tag { font-size: 9px; font-weight: 700; text-transform: uppercase; background: #f1f5f9; color: var(--accent); padding: 4px 10px; border-radius: 4px; border: 1px solid var(--border); display: inline-flex; align-items: center; gap: 4px; }

    /* Expanded Info Boxes */
    .info-group { margin-bottom: 15px; font-size: 13px; line-height: 1.6; background: #f8fafc; padding: 15px; border-radius: 10px; border: 1px solid var(--border); flex-grow: 1; }
    .vastu-group { background: #eff6ff; border-color: #bfdbfe; }
    .info-lbl { color: var(--primary-dark); font-weight: 800; font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px; display: flex; align-items: center; gap: 6px; margin-bottom: 6px; }
    .vastu-group .info-lbl { color: #1e3a8a; }
    .info-val { color: var(--text-dark); font-weight: 500; }

    .mantra-box { background: var(--soft-purple); border-left: 4px solid var(--primary); padding: 10px 15px; border-radius: 0 8px 8px 0; margin-bottom: 15px; }
    .mantra-lbl { font-size: 9px; font-weight: 800; color: var(--primary-dark); text-transform: uppercase; margin-bottom: 2px; display: block; }
    .mantra-txt { font-size: 13px; font-style: italic; color: var(--text-dark); font-weight: 700; }

    .pairings-box { font-size: 11px; font-weight: 600; color: var(--accent); padding: 10px; background: #f1f5f9; border-radius: 8px; margin-bottom: 15px; border: 1px dashed var(--border); }
    .pairings-box strong { color: var(--text-dark); }

    .cleanse-tags { display: flex; gap: 8px; margin-top: auto; border-top: 1px dashed var(--border); padding-top: 15px; flex-wrap: wrap; }
    .c-tag { font-size: 10px; padding: 6px 10px; border-radius: 6px; display: flex; align-items: center; gap: 6px; font-weight: 700; border: 1px solid transparent; }
    .c-water-no { background: #fef2f2; color: #b91c1c; border-color: #fecaca; }
    .c-water-yes { background: #f0fdf4; color: #15803d; border-color: #bbf7d0; }
    .c-sun-no { background: #fffbeb; color: #b45309; border-color: #fde68a; }

    .otechy-ad { background: #e2e8f0; color: #94a3b8; font-size: 10px; font-weight: 700; text-transform: uppercase; height: 90px; display: flex; align-items: center; justify-content: center; border-radius: 12px; margin: 25px 0; width: 100%; }

    @media (max-width: 768px) {
        .otechy-tool-wrapper { padding: 20px 15px; }
        .crystal-grid { grid-template-columns: 1fr; }
        .countdown-box { padding: 10px 12px; gap: 8px; width: 100%; max-width: 320px; justify-content: center; }
        .time-block { min-width: 40px; }
        .time-val { font-size: 20px; }
        .time-sep { font-size: 20px; }
        .time-lbl { font-size: 9px; letter-spacing: 0.5px; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;

    &lt;div class=&quot;hero-section&quot;&gt;
        &lt;div class=&quot;moon-orb&quot;&gt;
            &lt;div class=&quot;crater&quot; style=&quot;width: 14px; height: 14px; top: 25%; left: 20%;&quot;&gt;&lt;/div&gt;
            &lt;div class=&quot;crater&quot; style=&quot;width: 20px; height: 20px; top: 50%; left: 55%;&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;
        &lt;h1&gt;Expert &lt;span&gt;Crystal&lt;/span&gt; Studio&lt;/h1&gt;
        &lt;p class=&quot;hero-subtitle&quot;&gt;Harness the peak energy of the lunar cycle (IST Synchronized). Track moon phases, explore an 80+ expert-level database with rarity, pairings, and Vastu placements.&lt;/p&gt;
        
        &lt;div class=&quot;countdown-box&quot;&gt;
            &lt;div class=&quot;time-block&quot;&gt;&lt;span class=&quot;time-val&quot; id=&quot;cd-days&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;time-lbl&quot;&gt;Days&lt;/span&gt;&lt;/div&gt;
            &lt;div class=&quot;time-sep&quot;&gt;:&lt;/div&gt;
            &lt;div class=&quot;time-block&quot;&gt;&lt;span class=&quot;time-val&quot; id=&quot;cd-hours&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;time-lbl&quot;&gt;Hours&lt;/span&gt;&lt;/div&gt;
            &lt;div class=&quot;time-sep&quot;&gt;:&lt;/div&gt;
            &lt;div class=&quot;time-block&quot;&gt;&lt;span class=&quot;time-val&quot; id=&quot;cd-mins&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;time-lbl&quot;&gt;Mins&lt;/span&gt;&lt;/div&gt;
        &lt;/div&gt;
        
        &lt;div id=&quot;moonBanner&quot; class=&quot;recommendation-banner&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 20px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT TOP&lt;/div&gt;

    &lt;div class=&quot;controls-area&quot;&gt;
        &lt;div class=&quot;search-bar&quot;&gt;
            &lt;svg class=&quot;search-icon&quot; width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;circle cx=&quot;11&quot; cy=&quot;11&quot; r=&quot;8&quot;&gt;&lt;/circle&gt;&lt;line x1=&quot;21&quot; y1=&quot;21&quot; x2=&quot;16.65&quot; y2=&quot;16.65&quot;&gt;&lt;/line&gt;&lt;/svg&gt;
            &lt;input type=&quot;text&quot; id=&quot;searchInput&quot; placeholder=&quot;Search 80+ crystals by name, chakra, pairings or property...&quot; oninput=&quot;handleSearch()&quot;&gt;
        &lt;/div&gt;

        &lt;div class=&quot;filter-bar&quot; id=&quot;filterBar&quot;&gt;
            &lt;button class=&quot;filter-btn active&quot; onclick=&quot;setFilter(&#39;All&#39;)&quot;&gt;All Stones&lt;/button&gt;
            &lt;button class=&quot;filter-btn btn-fav&quot; onclick=&quot;setFilter(&#39;Favorites&#39;)&quot;&gt;❤️ Collection&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Spiritual&#39;)&quot;&gt;🧿 Spiritual&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Manifestation&#39;)&quot;&gt;🌟 Manifestation&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Energy&#39;)&quot;&gt;⚡ Energy &amp; Vitality&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Workspace&#39;)&quot;&gt;💼 Workspace&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Love&#39;)&quot;&gt;💖 Love&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Harmony&#39;)&quot;&gt;🕊️ Harmony&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Wealth&#39;)&quot;&gt;💰 Wealth&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Protection&#39;)&quot;&gt;🛡️ Protection&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Shadow Work&#39;)&quot;&gt;🌑 Shadow Work&lt;/button&gt;
            &lt;button class=&quot;filter-btn&quot; onclick=&quot;setFilter(&#39;Healing&#39;)&quot;&gt;🌿 Healing&lt;/button&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 30px 0; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;

    &lt;div class=&quot;crystal-grid&quot; id=&quot;crystalGrid&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 30px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;
    let currentFilter = &#39;All&#39;;
    let searchQuery = &#39;&#39;;
    let userFavorites = JSON.parse(localStorage.getItem(&#39;otechy_crystal_favs&#39;)) || [];

    function calculateNextFullMoon() {
        const LUNAR_MONTH_MS = 29.53058770576 * 24 * 60 * 60 * 1000;
        const knownFullMoon = new Date(&#39;2026-03-03T11:38:00Z&#39;).getTime();
        const now = new Date().getTime();
        let nextMoonMs = knownFullMoon;
        while(nextMoonMs &lt; now) { nextMoonMs += LUNAR_MONTH_MS; }
        return new Date(nextMoonMs);
    }

    function updateLunarLogic() {
        const nextMoon = calculateNextFullMoon();
        const diff = nextMoon - new Date();
        const days = Math.floor(diff / (1000 * 60 * 60 * 24));
        const hours = Math.floor((diff / (1000 * 60 * 60)) % 24);
        const mins = Math.floor((diff / 1000 / 60) % 60);

        document.getElementById(&#39;cd-days&#39;).innerText = days.toString().padStart(2, &#39;0&#39;);
        document.getElementById(&#39;cd-hours&#39;).innerText = hours.toString().padStart(2, &#39;0&#39;);
        document.getElementById(&#39;cd-mins&#39;).innerText = mins.toString().padStart(2, &#39;0&#39;);

        const banner = document.getElementById(&#39;moonBanner&#39;);
        if (days &lt;= 3) {
            banner.innerHTML = `🌕 &lt;strong&gt;Approaching Full Moon:&lt;/strong&gt; Energy is at its absolute peak. Wash, cleanse, and charge your crystals on the windowsill. &lt;br&gt;&lt;em&gt;Recommended: Selenite, Clear Quartz, Moonstone, Moldavite.&lt;/em&gt;`;
        } else if (days &gt;= 13 &amp;&amp; days &lt;= 17) {
            banner.innerHTML = `🌑 &lt;strong&gt;New Moon Phase:&lt;/strong&gt; A quiet time for planting seeds and setting fresh intentions. &lt;br&gt;&lt;em&gt;Recommended: Citrine, Pyrite, Green Aventurine, Herkimer Diamond.&lt;/em&gt;`;
        } else if (days &gt; 3 &amp;&amp; days &lt; 13) {
            banner.innerHTML = `🌖 &lt;strong&gt;Waxing Phase:&lt;/strong&gt; Lunar energy is building. Focus on manifestation, career growth, and taking action. &lt;br&gt;&lt;em&gt;Recommended: Carnelian, Tiger&#39;s Eye, Ruby.&lt;/em&gt;`;
        } else {
            banner.innerHTML = `🌘 &lt;strong&gt;Waning Phase:&lt;/strong&gt; Lunar energy is releasing. Focus on banishing bad habits, spiritual protection, and letting go. &lt;br&gt;&lt;em&gt;Recommended: Black Obsidian, Amethyst, Nuummite.&lt;/em&gt;`;
        }
    }
    setInterval(updateLunarLogic, 60000);
    updateLunarLogic();

    // ULTIMATE 82 CRYSTAL DATABASE
    const crystalDB = [
        // PREMIUM &amp; EXPERT LEVEL (Added Recent)
        { name: &quot;Rhodochrosite&quot;, color: &quot;#f43f5e&quot;, intent: [&quot;Love&quot;, &quot;Shadow Work&quot;, &quot;Healing&quot;], mantra: &quot;I release old wounds and embrace self-love.&quot;, properties: &quot;The ultimate stone for deep emotional healing and inner-child work. It brings repressed emotions to the surface to be acknowledged and released.&quot;, vastu: &quot;Keep in personal safe spaces or meditation areas.&quot;, water: true, sun: false, chakra: [&quot;Heart&quot;, &quot;Solar Plexus&quot;], zodiac: [&quot;Scorpio&quot;, &quot;Leo&quot;], element: [&quot;Fire&quot;, &quot;Water&quot;], rarity: &quot;Premium&quot;, intensity: &quot;High&quot;, pairings: [&quot;Rose Quartz&quot;, &quot;Malachite&quot;] },
        { name: &quot;Emerald&quot;, color: &quot;#059669&quot;, intent: [&quot;Wealth&quot;, &quot;Love&quot;, &quot;Healing&quot;], mantra: &quot;I am aligned with luxurious abundance.&quot;, properties: &quot;A premium stone associated with long-term wealth, luxury, and heart-centered abundance. It ensures domestic bliss and loyalty.&quot;, vastu: &quot;Place in the North for wealth, or South-West for loyal love.&quot;, water: true, sun: true, chakra: [&quot;Heart&quot;], zodiac: [&quot;Taurus&quot;, &quot;Cancer&quot;, &quot;Gemini&quot;], element: [&quot;Earth&quot;], rarity: &quot;Premium&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Rose Quartz&quot;, &quot;Citrine&quot;, &quot;Diamond&quot;] },
        { name: &quot;Ruby&quot;, color: &quot;#e11d48&quot;, intent: [&quot;Energy&quot;, &quot;Wealth&quot;, &quot;Protection&quot;], mantra: &quot;I lead with passion and unshakeable power.&quot;, properties: &quot;Injects raw life force, courage, and leadership into the aura. An intense stone that protects wealth and vitality.&quot;, vastu: &quot;South direction to ignite fame, power, and physical stamina.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;, &quot;Heart&quot;], zodiac: [&quot;Cancer&quot;, &quot;Leo&quot;, &quot;Sagittarius&quot;], element: [&quot;Fire&quot;], rarity: &quot;Premium&quot;, intensity: &quot;Extreme&quot;, pairings: [&quot;Garnet&quot;, &quot;Carnelian&quot;] },
        { name: &quot;Morganite&quot;, color: &quot;#fbcfe8&quot;, intent: [&quot;Love&quot;, &quot;Healing&quot;], mantra: &quot;I am worthy of divine, enduring love.&quot;, properties: &quot;A premium form of Beryl. Provides divine love, heart healing, and attracts an abundance of romantic and self-love.&quot;, vastu: &quot;Master bedroom or personal altar.&quot;, water: true, sun: false, chakra: [&quot;Heart&quot;], zodiac: [&quot;Libra&quot;], element: [&quot;Water&quot;], rarity: &quot;Premium&quot;, intensity: &quot;Gentle&quot;, pairings: [&quot;Emerald&quot;, &quot;Rose Quartz&quot;] },
        { name: &quot;Moldavite&quot;, color: &quot;#166534&quot;, intent: [&quot;Manifestation&quot;, &quot;Spiritual&quot;, &quot;Shadow Work&quot;], mantra: &quot;I accelerate my ultimate transformation.&quot;, properties: &quot;Extremely high-frequency tektite known for rapid life changes, synchronicity, and the intense &#39;Moldavite flush&#39;.&quot;, vastu: &quot;Personal altar only. Use with caution.&quot;, water: true, sun: true, chakra: [&quot;Heart&quot;, &quot;Crown&quot;], zodiac: [&quot;Scorpio&quot;, &quot;All&quot;], element: [&quot;Storm&quot;], rarity: &quot;Premium&quot;, intensity: &quot;Extreme&quot;, pairings: [&quot;Herkimer Diamond&quot;, &quot;Clear Quartz&quot;] },
        { name: &quot;Nuummite&quot;, color: &quot;#1f2937&quot;, intent: [&quot;Shadow Work&quot;, &quot;Protection&quot;], mantra: &quot;I master my shadows and reclaim my power.&quot;, properties: &quot;The &#39;Sorcerer&#39;s Stone&#39;. An ancient stone that aids in deep shadow work, cutting ties, and intense personal power reclamation.&quot;, vastu: &quot;Meditation space during intense self-reflection.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;, &quot;Earth Star&quot;], zodiac: [&quot;Scorpio&quot;], element: [&quot;Earth&quot;, &quot;Storm&quot;], rarity: &quot;Rare&quot;, intensity: &quot;Extreme&quot;, pairings: [&quot;Moldavite&quot;, &quot;Labradorite&quot;] },
        { name: &quot;Aegirine&quot;, color: &quot;#0f172a&quot;, intent: [&quot;Protection&quot;, &quot;Shadow Work&quot;], mantra: &quot;I sever all toxic psychic attachments.&quot;, properties: &quot;One of the strongest psychic protection stones in existence. Excellent for removing negative entities and repairing the aura.&quot;, vastu: &quot;Near entrance or carried on the person.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;], zodiac: [&quot;Taurus&quot;], element: [&quot;Earth&quot;, &quot;Fire&quot;], rarity: &quot;Rare&quot;, intensity: &quot;Extreme&quot;, pairings: [&quot;Black Tourmaline&quot;, &quot;Smoky Quartz&quot;] },
        { name: &quot;Aragonite&quot;, color: &quot;#d97706&quot;, intent: [&quot;Workspace&quot;, &quot;Healing&quot;, &quot;Protection&quot;], mantra: &quot;I release stress and anchor into the present.&quot;, properties: &quot;Extreme grounding and discipline. Excellent for curing burnout, overthinking, and &#39;developer brain&#39; exhaustion.&quot;, vastu: &quot;Directly on the workspace or under the desk.&quot;, water: false, sun: true, chakra: [&quot;Root&quot;, &quot;Earth Star&quot;], zodiac: [&quot;Capricorn&quot;, &quot;Earth Signs&quot;], element: [&quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Hematite&quot;, &quot;Black Tourmaline&quot;] },
        { name: &quot;Lepidocrocite&quot;, color: &quot;#b91c1c&quot;, intent: [&quot;Spiritual&quot;, &quot;Manifestation&quot;], mantra: &quot;I am a clear channel for spiritual growth.&quot;, properties: &quot;Often found in Super Seven. A spiritual and manifestation hybrid that bridges the physical and etheric bodies.&quot;, vastu: &quot;Meditation areas or worn as jewelry.&quot;, water: true, sun: true, chakra: [&quot;Heart&quot;, &quot;Crown&quot;], zodiac: [&quot;Sagittarius&quot;], element: [&quot;Air&quot;, &quot;Fire&quot;], rarity: &quot;Rare&quot;, intensity: &quot;High&quot;, pairings: [&quot;Clear Quartz&quot;, &quot;Amethyst&quot;] },
        { name: &quot;Shattuckite&quot;, color: &quot;#0284c7&quot;, intent: [&quot;Spiritual&quot;, &quot;Workspace&quot;], mantra: &quot;I speak profound truth with total clarity.&quot;, properties: &quot;A rare stone of truth, communication, and intuition. Connects to inner wisdom and clears throat blockages.&quot;, vastu: &quot;Communication zones or podcasting/recording desks.&quot;, water: false, sun: false, chakra: [&quot;Throat&quot;, &quot;Third Eye&quot;], zodiac: [&quot;Aquarius&quot;, &quot;Sagittarius&quot;], element: [&quot;Water&quot;, &quot;Air&quot;], rarity: &quot;Rare&quot;, intensity: &quot;High&quot;, pairings: [&quot;Chrysocolla&quot;, &quot;Turquoise&quot;] },
        { name: &quot;Thulite&quot;, color: &quot;#be123c&quot;, intent: [&quot;Love&quot;, &quot;Harmony&quot;, &quot;Energy&quot;], mantra: &quot;I am confident, joyful, and expressive.&quot;, properties: &quot;Fosters confidence and eloquent love expression. Excellent for overcoming social anxiety and performing in public.&quot;, vastu: &quot;Living room or social gathering spaces.&quot;, water: true, sun: true, chakra: [&quot;Heart&quot;, &quot;Sacral&quot;], zodiac: [&quot;Taurus&quot;, &quot;Gemini&quot;], element: [&quot;Water&quot;, &quot;Fire&quot;], rarity: &quot;Uncommon&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Rose Quartz&quot;, &quot;Rhodonite&quot;] },
        { name: &quot;Spinel&quot;, color: &quot;#111827&quot;, intent: [&quot;Energy&quot;, &quot;Healing&quot;, &quot;Protection&quot;], mantra: &quot;I am restored, renewed, and revitalized.&quot;, properties: &quot;An incredibly underrated stone for rapid energy restoration after severe burnout. Revitalizes all chakras.&quot;, vastu: &quot;Bedroom or personal recovery space.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;, &quot;Crown&quot;], zodiac: [&quot;Aries&quot;, &quot;Sagittarius&quot;], element: [&quot;Fire&quot;], rarity: &quot;Premium&quot;, intensity: &quot;High&quot;, pairings: [&quot;Clear Quartz&quot;, &quot;Black Tourmaline&quot;] },
        { name: &quot;Seraphinite&quot;, color: &quot;#065f46&quot;, intent: [&quot;Spiritual&quot;, &quot;Wealth&quot;], mantra: &quot;I align with angelic healing and grace.&quot;, properties: &quot;High-frequency wealth and spiritual alignment. Promotes living from the heart and connects to higher angelic frequencies.&quot;, vastu: &quot;Meditation areas.&quot;, water: false, sun: false, chakra: [&quot;Heart&quot;, &quot;Crown&quot;], zodiac: [&quot;Sagittarius&quot;], element: [&quot;Air&quot;, &quot;Light&quot;], rarity: &quot;Rare&quot;, intensity: &quot;High&quot;, pairings: [&quot;Angelite&quot;, &quot;Celestite&quot;] },
        { name: &quot;Herkimer Diamond&quot;, color: &quot;#f8fafc&quot;, intent: [&quot;Manifestation&quot;, &quot;Spiritual&quot;], mantra: &quot;I amplify divine clarity.&quot;, properties: &quot;Ultra-high vibration double-terminated quartz. Boosts manifestation, spiritual clarity, and acts as a powerful attunement stone.&quot;, vastu: &quot;Meditation or manifestation space.&quot;, water: true, sun: true, chakra: [&quot;Crown&quot;, &quot;Third Eye&quot;], zodiac: [&quot;Sagittarius&quot;], element: [&quot;Light&quot;], rarity: &quot;Rare&quot;, intensity: &quot;High&quot;, pairings: [&quot;Moldavite&quot;, &quot;Amethyst&quot;] },
        { name: &quot;Libyan Desert Glass&quot;, color: &quot;#facc15&quot;, intent: [&quot;Manifestation&quot;, &quot;Spiritual&quot;, &quot;Protection&quot;], mantra: &quot;I channel cosmic power.&quot;, properties: &quot;Ancient impact glass linked to solar energy, fierce manifestation, and guarding against energy vampires.&quot;, vastu: &quot;Sacred or manifestation space.&quot;, water: true, sun: true, chakra: [&quot;Solar Plexus&quot;, &quot;Sacral&quot;], zodiac: [&quot;Leo&quot;, &quot;Aries&quot;], element: [&quot;Fire&quot;], rarity: &quot;Rare&quot;, intensity: &quot;High&quot;, pairings: [&quot;Moldavite&quot;, &quot;Sunstone&quot;] },

        // THE CORE 18 STONES
        { name: &quot;Clear Quartz&quot;, color: &quot;#f8fafc&quot;, intent: [&quot;Workspace&quot;, &quot;Manifestation&quot;, &quot;Healing&quot;], mantra: &quot;Om. I am clear, focused, and aligned.&quot;, properties: &quot;The &#39;Master Healer&#39;, acting as a powerful amplifier for other crystals and intentions. Clears mental fog.&quot;, vastu: &quot;North-East corner of your desk.&quot;, water: true, sun: true, chakra: [&quot;Crown&quot;, &quot;All&quot;], zodiac: [&quot;All&quot;], element: [&quot;Light&quot;], rarity: &quot;Common&quot;, intensity: &quot;High&quot;, pairings: [&quot;All Stones&quot;] },
        { name: &quot;Amethyst&quot;, color: &quot;#a855f7&quot;, intent: [&quot;Spiritual&quot;, &quot;Healing&quot;, &quot;Shadow Work&quot;], mantra: &quot;Sham. I am peaceful and intuitively guided.&quot;, properties: &quot;A natural tranquilizer. Relieves daily stress, balances extreme mood swings, and awakens the Third Eye.&quot;, vastu: &quot;West or North-West zones.&quot;, water: true, sun: false, chakra: [&quot;Crown&quot;, &quot;Third Eye&quot;], zodiac: [&quot;Aquarius&quot;, &quot;Pisces&quot;], element: [&quot;Air&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Clear Quartz&quot;, &quot;Rose Quartz&quot;] },
        { name: &quot;Rose Quartz&quot;, color: &quot;#fbcfe8&quot;, intent: [&quot;Love&quot;, &quot;Harmony&quot;, &quot;Healing&quot;], mantra: &quot;Yam. I open my heart to unconditional love.&quot;, properties: &quot;The ultimate stone of universal love. Restores trust, encourages compassion, and emits a soothing frequency.&quot;, vastu: &quot;South-West of the master bedroom.&quot;, water: true, sun: false, chakra: [&quot;Heart&quot;], zodiac: [&quot;Taurus&quot;, &quot;Libra&quot;], element: [&quot;Water&quot;], rarity: &quot;Common&quot;, intensity: &quot;Gentle&quot;, pairings: [&quot;Amethyst&quot;, &quot;Rhodochrosite&quot;] },
        { name: &quot;Citrine&quot;, color: &quot;#facc15&quot;, intent: [&quot;Wealth&quot;, &quot;Manifestation&quot;, &quot;Energy&quot;], mantra: &quot;Ram. I attract abundance and manifest joy.&quot;, properties: &quot;The &#39;Merchant&#39;s Stone&#39;. Actively attracts wealth, prosperity, and success while encouraging generosity.&quot;, vastu: &quot;Cash box, safe, or North corner.&quot;, water: true, sun: false, chakra: [&quot;Solar Plexus&quot;], zodiac: [&quot;Aries&quot;, &quot;Leo&quot;, &quot;Libra&quot;], element: [&quot;Fire&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Green Aventurine&quot;, &quot;Pyrite&quot;] },
        { name: &quot;Pyrite&quot;, color: &quot;#d4af37&quot;, intent: [&quot;Workspace&quot;, &quot;Wealth&quot;, &quot;Energy&quot;], mantra: &quot;Ram. I am confident, active, and successful.&quot;, properties: &quot;A fierce stone of action and willpower. Taps into potential, fueling unyielding ambition and rapid success.&quot;, vastu: &quot;South-East corner of desk.&quot;, water: false, sun: true, chakra: [&quot;Solar Plexus&quot;], zodiac: [&quot;Leo&quot;], element: [&quot;Fire&quot;], rarity: &quot;Common&quot;, intensity: &quot;High&quot;, pairings: [&quot;Citrine&quot;, &quot;Clear Quartz&quot;] },
        { name: &quot;Carnelian&quot;, color: &quot;#ea580c&quot;, intent: [&quot;Energy&quot;, &quot;Healing&quot;, &quot;Workspace&quot;], mantra: &quot;Vam. I am full of creative energy.&quot;, properties: &quot;Restores lost vitality, supercharges motivation, and actively stimulates raw creativity and physical stamina.&quot;, vastu: &quot;South sector to ignite passion.&quot;, water: true, sun: true, chakra: [&quot;Sacral&quot;, &quot;Root&quot;], zodiac: [&quot;Cancer&quot;, &quot;Leo&quot;], element: [&quot;Fire&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Ruby&quot;, &quot;Tiger&#39;s Eye&quot;] },
        { name: &quot;Tiger&#39;s Eye&quot;, color: &quot;#78350f&quot;, intent: [&quot;Wealth&quot;, &quot;Protection&quot;, &quot;Energy&quot;], mantra: &quot;I am strong, decisive, and protected.&quot;, properties: &quot;Enhances integrity, iron willpower, and strategic financial decision-making while grounding solar energy.&quot;, vastu: &quot;South zone of living space or office.&quot;, water: true, sun: true, chakra: [&quot;Solar Plexus&quot;, &quot;Root&quot;], zodiac: [&quot;Capricorn&quot;, &quot;Leo&quot;], element: [&quot;Earth&quot;, &quot;Fire&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Pyrite&quot;, &quot;Carnelian&quot;] },
        { name: &quot;Black Tourmaline&quot;, color: &quot;#0f172a&quot;, intent: [&quot;Protection&quot;, &quot;Shadow Work&quot;], mantra: &quot;Lam. I am heavily protected and secure.&quot;, properties: &quot;A premier grounding stone that absorbs and completely repels negative energy, psychic attacks, and EMF.&quot;, vastu: &quot;Near main entrance or Wi-Fi routers.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;], zodiac: [&quot;Libra&quot;], element: [&quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;High&quot;, pairings: [&quot;Smoky Quartz&quot;, &quot;Selenite&quot;] },
        { name: &quot;Obsidian (Black)&quot;, color: &quot;#020617&quot;, intent: [&quot;Shadow Work&quot;, &quot;Protection&quot;], mantra: &quot;I am shielded from negativity.&quot;, properties: &quot;A fiercely truth-enhancing stone. Acts as a spiritual vacuum, absorbing negative energies and severing toxic ties.&quot;, vastu: &quot;Near front door or South-West corner.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;], zodiac: [&quot;Scorpio&quot;, &quot;Sagittarius&quot;], element: [&quot;Earth&quot;, &quot;Fire&quot;], rarity: &quot;Common&quot;, intensity: &quot;High&quot;, pairings: [&quot;Clear Quartz&quot;, &quot;Nuummite&quot;] },
        { name: &quot;Selenite&quot;, color: &quot;#ffffff&quot;, intent: [&quot;Healing&quot;, &quot;Spiritual&quot;], mantra: &quot;I am surrounded by pure white light.&quot;, properties: &quot;Liquid Light. Instantly cleanses the aura and clears blocked energy. Never needs to be charged.&quot;, vastu: &quot;Use as a charging plate anywhere.&quot;, water: false, sun: true, chakra: [&quot;Crown&quot;, &quot;Third Eye&quot;], zodiac: [&quot;Taurus&quot;], element: [&quot;Air&quot;, &quot;Light&quot;], rarity: &quot;Common&quot;, intensity: &quot;High&quot;, pairings: [&quot;Black Tourmaline&quot;, &quot;Amethyst&quot;] },
        { name: &quot;Labradorite&quot;, color: &quot;#4f46e5&quot;, intent: [&quot;Spiritual&quot;, &quot;Protection&quot;], mantra: &quot;I embrace my inner wisdom.&quot;, properties: &quot;Mystical stone of transformation. Creates a protective shield for auras and banishes deep-rooted fears.&quot;, vastu: &quot;Bedside table for dream recall.&quot;, water: true, sun: false, chakra: [&quot;Third Eye&quot;, &quot;Crown&quot;], zodiac: [&quot;Leo&quot;, &quot;Scorpio&quot;], element: [&quot;Water&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Moonstone&quot;, &quot;Nuummite&quot;] },
        { name: &quot;Fluorite&quot;, color: &quot;#a7f3d0&quot;, intent: [&quot;Workspace&quot;, &quot;Healing&quot;], mantra: &quot;I am organized and open to magic.&quot;, properties: &quot;The &#39;Genius Stone&#39;. Unmatched in clearing mental confusion and uncluttering a messy mind.&quot;, vastu: &quot;Next to computer monitors.&quot;, water: false, sun: false, chakra: [&quot;Heart&quot;, &quot;Third Eye&quot;], zodiac: [&quot;Capricorn&quot;, &quot;Pisces&quot;], element: [&quot;Air&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Amethyst&quot;, &quot;Clear Quartz&quot;] },
        { name: &quot;Malachite&quot;, color: &quot;#047857&quot;, intent: [&quot;Wealth&quot;, &quot;Healing&quot;, &quot;Shadow Work&quot;], mantra: &quot;I welcome positive transformation.&quot;, properties: &quot;Aggressively absorbs toxic energies and transforms wealth paths. Demands respect and frequent cleansing.&quot;, vastu: &quot;East or South-East.&quot;, water: false, sun: false, chakra: [&quot;Heart&quot;, &quot;Throat&quot;], zodiac: [&quot;Scorpio&quot;, &quot;Capricorn&quot;], element: [&quot;Earth&quot;, &quot;Water&quot;], rarity: &quot;Uncommon&quot;, intensity: &quot;High&quot;, pairings: [&quot;Rhodochrosite&quot;, &quot;Tiger&#39;s Eye&quot;] },
        { name: &quot;Garnet&quot;, color: &quot;#7f1d1d&quot;, intent: [&quot;Energy&quot;, &quot;Wealth&quot;, &quot;Love&quot;], mantra: &quot;I am passionate and successful.&quot;, properties: &quot;Intensely revitalizing. Brings serenity or passion as appropriate, boosting career drive and business success.&quot;, vastu: &quot;South sector of home or office.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;, &quot;Heart&quot;], zodiac: [&quot;Aries&quot;, &quot;Leo&quot;, &quot;Virgo&quot;], element: [&quot;Fire&quot;], rarity: &quot;Common&quot;, intensity: &quot;High&quot;, pairings: [&quot;Ruby&quot;, &quot;Clear Quartz&quot;] },
        { name: &quot;Sunstone&quot;, color: &quot;#fb923c&quot;, intent: [&quot;Energy&quot;, &quot;Wealth&quot;, &quot;Manifestation&quot;], mantra: &quot;I radiate success and joy.&quot;, properties: &quot;A joyful, light-inspiring stone. Heightens intuition, and is strongly linked to luck, leadership, and abundance.&quot;, vastu: &quot;South direction.&quot;, water: true, sun: true, chakra: [&quot;Sacral&quot;, &quot;Solar Plexus&quot;], zodiac: [&quot;Leo&quot;, &quot;Libra&quot;], element: [&quot;Fire&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Moonstone&quot;, &quot;Citrine&quot;] },
        { name: &quot;Moonstone&quot;, color: &quot;#e2e8f0&quot;, intent: [&quot;Harmony&quot;, &quot;Love&quot;, &quot;Spiritual&quot;], mantra: &quot;Vam. I flow effortlessly.&quot;, properties: &quot;Stone of new beginnings. Soothes emotional instability, enhances intuition, and promotes maternal energy.&quot;, vastu: &quot;North-West sector.&quot;, water: true, sun: true, chakra: [&quot;Sacral&quot;, &quot;Third Eye&quot;], zodiac: [&quot;Cancer&quot;, &quot;Libra&quot;], element: [&quot;Water&quot;], rarity: &quot;Common&quot;, intensity: &quot;Gentle&quot;, pairings: [&quot;Sunstone&quot;, &quot;Labradorite&quot;] },
        { name: &quot;Lapis Lazuli&quot;, color: &quot;#1d4ed8&quot;, intent: [&quot;Protection&quot;, &quot;Spiritual&quot;, &quot;Workspace&quot;], mantra: &quot;Ham. I speak my truth.&quot;, properties: &quot;A regal stone of protection. Guards against psychic attacks and quickly releases stress.&quot;, vastu: &quot;North to enhance career protection.&quot;, water: false, sun: true, chakra: [&quot;Throat&quot;, &quot;Third Eye&quot;], zodiac: [&quot;Sagittarius&quot;, &quot;Libra&quot;], element: [&quot;Water&quot;, &quot;Air&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Turquoise&quot;, &quot;Amethyst&quot;] },
        { name: &quot;Green Aventurine&quot;, color: &quot;#34d399&quot;, intent: [&quot;Wealth&quot;, &quot;Healing&quot;, &quot;Manifestation&quot;], mantra: &quot;I welcome new opportunities.&quot;, properties: &quot;The &#39;Stone of Opportunity&#39;. The absolute luckiest of all crystals for manifesting wealth and winning.&quot;, vastu: &quot;North or East corners.&quot;, water: true, sun: true, chakra: [&quot;Heart&quot;], zodiac: [&quot;Virgo&quot;, &quot;Taurus&quot;], element: [&quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;Gentle&quot;, pairings: [&quot;Citrine&quot;, &quot;Jade&quot;] },

        // THE EARTHY &amp; NEW ADDITIONS
        { name: &quot;Black Kyanite&quot;, color: &quot;#111827&quot;, intent: [&quot;Protection&quot;, &quot;Healing&quot;], mantra: &quot;I cut away all negative cords.&quot;, properties: &quot;Powerful energy cutter that removes attachments and negative cords instantly. Sweeps the aura.&quot;, vastu: &quot;Near entrance or personal aura space.&quot;, water: false, sun: true, chakra: [&quot;Root&quot;, &quot;All&quot;], zodiac: [&quot;Libra&quot;, &quot;Aries&quot;], element: [&quot;Air&quot;, &quot;Earth&quot;], rarity: &quot;Uncommon&quot;, intensity: &quot;High&quot;, pairings: [&quot;Black Tourmaline&quot;, &quot;Selenite&quot;] },
        { name: &quot;Blue Lace Agate&quot;, color: &quot;#93c5fd&quot;, intent: [&quot;Healing&quot;, &quot;Harmony&quot;], mantra: &quot;I speak with calm and clarity.&quot;, properties: &quot;Extremely soothing stone for communication and anxiety relief. Cools fiery emotions.&quot;, vastu: &quot;Bedroom or communication spaces.&quot;, water: true, sun: false, chakra: [&quot;Throat&quot;], zodiac: [&quot;Pisces&quot;, &quot;Gemini&quot;], element: [&quot;Water&quot;, &quot;Air&quot;], rarity: &quot;Uncommon&quot;, intensity: &quot;Gentle&quot;, pairings: [&quot;Amethyst&quot;, &quot;Rose Quartz&quot;] },
        { name: &quot;Crazy Lace Agate&quot;, color: &quot;#fbbf24&quot;, intent: [&quot;Harmony&quot;, &quot;Healing&quot;], mantra: &quot;I embrace joy and laughter.&quot;, properties: &quot;Stone of happiness, laughter, and emotional upliftment. Absorbs emotional pain.&quot;, vastu: &quot;Living room or play areas.&quot;, water: true, sun: true, chakra: [&quot;Solar Plexus&quot;, &quot;Third Eye&quot;], zodiac: [&quot;Gemini&quot;, &quot;Aries&quot;], element: [&quot;Fire&quot;, &quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Citrine&quot;, &quot;Sunstone&quot;] },
        { name: &quot;Moss Agate&quot;, color: &quot;#4ade80&quot;, intent: [&quot;Healing&quot;, &quot;Wealth&quot;], mantra: &quot;I connect deeply with nature.&quot;, properties: &quot;Promotes growth, grounding, and emotional balance. Speeds up physical recovery.&quot;, vastu: &quot;East direction or near plants.&quot;, water: true, sun: true, chakra: [&quot;Heart&quot;, &quot;Root&quot;], zodiac: [&quot;Virgo&quot;], element: [&quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;Gentle&quot;, pairings: [&quot;Green Aventurine&quot;, &quot;Clear Quartz&quot;] },
        { name: &quot;Tree Agate&quot;, color: &quot;#bbf7d0&quot;, intent: [&quot;Healing&quot;, &quot;Harmony&quot;], mantra: &quot;I grow steadily and peacefully.&quot;, properties: &quot;Deep connection to nature and inner peace. Brings unshakeable steady growth.&quot;, vastu: &quot;Garden or plants area.&quot;, water: true, sun: true, chakra: [&quot;Heart&quot;, &quot;Root&quot;], zodiac: [&quot;Taurus&quot;, &quot;Virgo&quot;], element: [&quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;Gentle&quot;, pairings: [&quot;Moss Agate&quot;, &quot;Jade&quot;] },
        { name: &quot;Tourmalinated Quartz&quot;, color: &quot;#e5e7eb&quot;, intent: [&quot;Protection&quot;, &quot;Healing&quot;], mantra: &quot;I am balanced and protected.&quot;, properties: &quot;Combines protection of tourmaline with amplification of quartz. Deflects extreme hostility.&quot;, vastu: &quot;Workspace or entrance.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;, &quot;Crown&quot;, &quot;Third Eye&quot;], zodiac: [&quot;Libra&quot;, &quot;Scorpio&quot;], element: [&quot;Earth&quot;, &quot;Light&quot;], rarity: &quot;Uncommon&quot;, intensity: &quot;High&quot;, pairings: [&quot;Black Tourmaline&quot;, &quot;Clear Quartz&quot;] },
        { name: &quot;Petrified Wood&quot;, color: &quot;#78350f&quot;, intent: [&quot;Protection&quot;, &quot;Healing&quot;], mantra: &quot;I remain stable through time.&quot;, properties: &quot;Deep grounding and ancestral connection stone. Provides immense patience during long projects.&quot;, vastu: &quot;South-West sector.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;, &quot;Third Eye&quot;], zodiac: [&quot;Leo&quot;, &quot;Virgo&quot;], element: [&quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Agate&quot;, &quot;Jasper&quot;] },
        { name: &quot;Soapstone&quot;, color: &quot;#9ca3af&quot;, intent: [&quot;Healing&quot;, &quot;Harmony&quot;], mantra: &quot;I remain calm and steady.&quot;, properties: &quot;Gentle calming stone used for stress relief. Absorbs friction in the household.&quot;, vastu: &quot;Bedroom or living areas.&quot;, water: true, sun: true, chakra: [&quot;Heart&quot;, &quot;Root&quot;], zodiac: [&quot;Cancer&quot;, &quot;Sagittarius&quot;], element: [&quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;Gentle&quot;, pairings: [&quot;Howlite&quot;, &quot;Rose Quartz&quot;] },
        { name: &quot;White Quartz&quot;, color: &quot;#f1f5f9&quot;, intent: [&quot;Healing&quot;, &quot;Spiritual&quot;], mantra: &quot;I am purified and balanced.&quot;, properties: &quot;Enhances healing, brings structural clarity to the body, and clears stagnant energy.&quot;, vastu: &quot;North-East.&quot;, water: true, sun: true, chakra: [&quot;Crown&quot;, &quot;All&quot;], zodiac: [&quot;All&quot;], element: [&quot;Air&quot;, &quot;Light&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Amethyst&quot;, &quot;Selenite&quot;] },
        { name: &quot;Onyx&quot;, color: &quot;#111827&quot;, intent: [&quot;Protection&quot;, &quot;Energy&quot;], mantra: &quot;I am strong and protected.&quot;, properties: &quot;Absorbs negative energy and builds immense physical strength and endurance.&quot;, vastu: &quot;Entrance.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;], zodiac: [&quot;Leo&quot;, &quot;Capricorn&quot;], element: [&quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;High&quot;, pairings: [&quot;Clear Quartz&quot;, &quot;Garnet&quot;] },
        { name: &quot;Calcite&quot;, color: &quot;#fde68a&quot;, intent: [&quot;Healing&quot;, &quot;Energy&quot;], mantra: &quot;I cleanse and renew my energy.&quot;, properties: &quot;Energy amplifier and emotional cleanser. Cleans negative energies from the environment.&quot;, vastu: &quot;Living space.&quot;, water: false, sun: false, chakra: [&quot;Solar Plexus&quot;, &quot;Sacral&quot;, &quot;Crown&quot;], zodiac: [&quot;Cancer&quot;], element: [&quot;Water&quot;, &quot;Fire&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Clear Quartz&quot;, &quot;Citrine&quot;] },
        { name: &quot;Bronzite&quot;, color: &quot;#92400e&quot;, intent: [&quot;Protection&quot;, &quot;Workspace&quot;], mantra: &quot;I am grounded and confident.&quot;, properties: &quot;Boosts courage, instills polite confidence, and powerfully repels ill-wishing.&quot;, vastu: &quot;Workspace.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;, &quot;Sacral&quot;], zodiac: [&quot;Leo&quot;], element: [&quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Tiger&#39;s Eye&quot;, &quot;Black Tourmaline&quot;] },
        { name: &quot;Rutilated Quartz&quot;, color: &quot;#fbbf24&quot;, intent: [&quot;Wealth&quot;, &quot;Manifestation&quot;], mantra: &quot;I attract divine abundance.&quot;, properties: &quot;Amplifies manifestation power rapidly. Acts as a cosmic antenna for spiritual wealth.&quot;, vastu: &quot;Wealth corner (North).&quot;, water: true, sun: true, chakra: [&quot;Solar Plexus&quot;, &quot;All&quot;], zodiac: [&quot;Gemini&quot;, &quot;Taurus&quot;], element: [&quot;Light&quot;, &quot;Fire&quot;, &quot;Air&quot;], rarity: &quot;Uncommon&quot;, intensity: &quot;High&quot;, pairings: [&quot;Citrine&quot;, &quot;Clear Quartz&quot;] },
        { name: &quot;Fire Agate&quot;, color: &quot;#b45309&quot;, intent: [&quot;Protection&quot;, &quot;Energy&quot;], mantra: &quot;I am safe and energized.&quot;, properties: &quot;Strong grounding and protection. Fires up the root chakra and builds a protective shield.&quot;, vastu: &quot;South.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;, &quot;Sacral&quot;], zodiac: [&quot;Aries&quot;], element: [&quot;Fire&quot;, &quot;Earth&quot;], rarity: &quot;Uncommon&quot;, intensity: &quot;High&quot;, pairings: [&quot;Carnelian&quot;, &quot;Ruby&quot;] },
        { name: &quot;Shungite&quot;, color: &quot;#111827&quot;, intent: [&quot;Protection&quot;, &quot;Healing&quot;], mantra: &quot;I am shielded from all harm.&quot;, properties: &quot;Extremely powerful stone that purifies water and acts as a massive sponge for EMFs, radiation, and stress.&quot;, vastu: &quot;Near heavy electronics and Wi-Fi.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;], zodiac: [&quot;Cancer&quot;, &quot;Scorpio&quot;], element: [&quot;Earth&quot;, &quot;Fire&quot;], rarity: &quot;Uncommon&quot;, intensity: &quot;High&quot;, pairings: [&quot;Black Tourmaline&quot;, &quot;Clear Quartz&quot;] },
        { name: &quot;Charoite&quot;, color: &quot;#7c3aed&quot;, intent: [&quot;Shadow Work&quot;, &quot;Spiritual&quot;], mantra: &quot;I embrace transformation fearlessly.&quot;, properties: &quot;Profound spiritual growth. Helps you overcome deep-seated fears, reduces stress, and stimulates inner vision.&quot;, vastu: &quot;Quiet, contemplative spaces.&quot;, water: true, sun: false, chakra: [&quot;Crown&quot;, &quot;Heart&quot;], zodiac: [&quot;Scorpio&quot;, &quot;Sagittarius&quot;], element: [&quot;Air&quot;], rarity: &quot;Rare&quot;, intensity: &quot;High&quot;, pairings: [&quot;Amethyst&quot;, &quot;Moldavite&quot;] },
        { name: &quot;Lepidolite&quot;, color: &quot;#c4b5fd&quot;, intent: [&quot;Shadow Work&quot;, &quot;Healing&quot;], mantra: &quot;I release stress and anxiety.&quot;, properties: &quot;Contains natural lithium. An energetic antidepressant, clearing severe stress, blockages, and crippling anxiety.&quot;, vastu: &quot;Bedside table for restful sleep.&quot;, water: false, sun: false, chakra: [&quot;Third Eye&quot;, &quot;Heart&quot;], zodiac: [&quot;Libra&quot;], element: [&quot;Water&quot;], rarity: &quot;Uncommon&quot;, intensity: &quot;Gentle&quot;, pairings: [&quot;Amethyst&quot;, &quot;Rose Quartz&quot;] },
        
        // THE REST OF THE 35 EXPANSION PACK (Deduplicated)
        { name: &quot;Blue Apatite&quot;, color: &quot;#3b82f6&quot;, intent: [&quot;Workspace&quot;, &quot;Healing&quot;], mantra: &quot;I express ideas with clarity.&quot;, properties: &quot;Enhances intellect, communication, and creative problem solving.&quot;, vastu: &quot;Near workstation.&quot;, water: true, sun: true, chakra: [&quot;Throat&quot;, &quot;Third Eye&quot;], zodiac: [&quot;Gemini&quot;], element: [&quot;Air&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Clear Quartz&quot;, &quot;Sodalite&quot;] },
        { name: &quot;Sodalite&quot;, color: &quot;#1e3a8a&quot;, intent: [&quot;Workspace&quot;, &quot;Spiritual&quot;], mantra: &quot;I trust logic and intuition equally.&quot;, properties: &quot;Promotes rational thinking, objectivity, and truth. Encourages deep thinking.&quot;, vastu: &quot;Near books or study area.&quot;, water: true, sun: true, chakra: [&quot;Throat&quot;, &quot;Third Eye&quot;], zodiac: [&quot;Sagittarius&quot;], element: [&quot;Air&quot;, &quot;Water&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Lapis Lazuli&quot;, &quot;Blue Apatite&quot;] },
        { name: &quot;Amazonite&quot;, color: &quot;#22c55e&quot;, intent: [&quot;Workspace&quot;, &quot;Healing&quot;], mantra: &quot;I communicate truth with calm confidence.&quot;, properties: &quot;Balances emotions, filters out stress, and alleviates worry during pressure.&quot;, vastu: &quot;Near workspace.&quot;, water: true, sun: false, chakra: [&quot;Heart&quot;, &quot;Throat&quot;], zodiac: [&quot;Virgo&quot;], element: [&quot;Water&quot;, &quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;Gentle&quot;, pairings: [&quot;Smoky Quartz&quot;, &quot;Rose Quartz&quot;] },
        { name: &quot;Howlite&quot;, color: &quot;#e5e7eb&quot;, intent: [&quot;Workspace&quot;, &quot;Healing&quot;], mantra: &quot;I am calm and focused.&quot;, properties: &quot;Reduces anxiety, tension, and intense anger. Enhances patience and eliminates rage.&quot;, vastu: &quot;On desk to reduce overthinking.&quot;, water: true, sun: true, chakra: [&quot;Crown&quot;], zodiac: [&quot;Gemini&quot;], element: [&quot;Air&quot;], rarity: &quot;Common&quot;, intensity: &quot;Gentle&quot;, pairings: [&quot;Amethyst&quot;, &quot;Rose Quartz&quot;] },
        { name: &quot;Rhodonite&quot;, color: &quot;#f43f5e&quot;, intent: [&quot;Harmony&quot;, &quot;Love&quot;], mantra: &quot;I forgive and open my heart.&quot;, properties: &quot;Emotional healing and compassion. Acts as an energetic anchor for emotional balance.&quot;, vastu: &quot;Bedroom or center of home.&quot;, water: true, sun: true, chakra: [&quot;Heart&quot;, &quot;Root&quot;], zodiac: [&quot;Taurus&quot;], element: [&quot;Earth&quot;, &quot;Fire&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Rose Quartz&quot;, &quot;Rhodochrosite&quot;] },
        { name: &quot;Pink Opal&quot;, color: &quot;#fda4af&quot;, intent: [&quot;Harmony&quot;, &quot;Love&quot;, &quot;Healing&quot;], mantra: &quot;My heart is at peace.&quot;, properties: &quot;Soothes emotional wounds and promotes love. Brings tranquility to an empty space.&quot;, vastu: &quot;Near bed or meditation space.&quot;, water: true, sun: false, chakra: [&quot;Heart&quot;], zodiac: [&quot;Cancer&quot;, &quot;Pisces&quot;], element: [&quot;Water&quot;], rarity: &quot;Uncommon&quot;, intensity: &quot;Gentle&quot;, pairings: [&quot;Rose Quartz&quot;, &quot;Morganite&quot;] },
        { name: &quot;Kunzite&quot;, color: &quot;#c084fc&quot;, intent: [&quot;Harmony&quot;, &quot;Love&quot;], mantra: &quot;I radiate unconditional love.&quot;, properties: &quot;Activates heart chakra and emotional openness. Shields against emotional baggage.&quot;, vastu: &quot;South-West for love energy.&quot;, water: true, sun: false, chakra: [&quot;Heart&quot;, &quot;Crown&quot;], zodiac: [&quot;Scorpio&quot;, &quot;Taurus&quot;], element: [&quot;Water&quot;], rarity: &quot;Uncommon&quot;, intensity: &quot;Gentle&quot;, pairings: [&quot;Rose Quartz&quot;, &quot;Amethyst&quot;] },
        { name: &quot;Unakite&quot;, color: &quot;#84cc16&quot;, intent: [&quot;Harmony&quot;, &quot;Healing&quot;], mantra: &quot;I balance emotions and spirit.&quot;, properties: &quot;Balances emotional and spiritual growth. Provides grounding when needed.&quot;, vastu: &quot;Living room.&quot;, water: true, sun: true, chakra: [&quot;Heart&quot;, &quot;Third Eye&quot;], zodiac: [&quot;Scorpio&quot;], element: [&quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Red Jasper&quot;, &quot;Green Aventurine&quot;] },
        { name: &quot;Peridot&quot;, color: &quot;#a3e635&quot;, intent: [&quot;Wealth&quot;, &quot;Healing&quot;], mantra: &quot;I attract prosperity and joy.&quot;, properties: &quot;Attracts wealth and positive energy. Clears blockages to receiving abundance.&quot;, vastu: &quot;Wallet or safe.&quot;, water: true, sun: true, chakra: [&quot;Heart&quot;, &quot;Solar Plexus&quot;], zodiac: [&quot;Leo&quot;, &quot;Scorpio&quot;], element: [&quot;Earth&quot;], rarity: &quot;Premium&quot;, intensity: &quot;High&quot;, pairings: [&quot;Citrine&quot;, &quot;Green Aventurine&quot;] },
        { name: &quot;Chrysoprase&quot;, color: &quot;#4ade80&quot;, intent: [&quot;Wealth&quot;, &quot;Healing&quot;], mantra: &quot;Abundance flows easily to me.&quot;, properties: &quot;Promotes prosperity, hope, and new ventures. Breathes fresh energy into business.&quot;, vastu: &quot;East or North.&quot;, water: true, sun: false, chakra: [&quot;Heart&quot;, &quot;Sacral&quot;], zodiac: [&quot;Libra&quot;], element: [&quot;Earth&quot;, &quot;Water&quot;], rarity: &quot;Uncommon&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Citrine&quot;, &quot;Jade&quot;] },
        { name: &quot;Goldstone&quot;, color: &quot;#f59e0b&quot;, intent: [&quot;Wealth&quot;, &quot;Energy&quot;], mantra: &quot;I shine with success.&quot;, properties: &quot;Boosts confidence and ambition. Excellent for career advancement.&quot;, vastu: &quot;Work desk or business area.&quot;, water: true, sun: true, chakra: [&quot;Sacral&quot;, &quot;Throat&quot;], zodiac: [&quot;Sagittarius&quot;], element: [&quot;Fire&quot;, &quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;High&quot;, pairings: [&quot;Tiger&#39;s Eye&quot;, &quot;Pyrite&quot;] },
        { name: &quot;Smoky Quartz&quot;, color: &quot;#6b7280&quot;, intent: [&quot;Protection&quot;, &quot;Shadow Work&quot;], mantra: &quot;I release negativity and stay grounded.&quot;, properties: &quot;Neutralizes negative vibrations and absorbs electromagnetic smog.&quot;, vastu: &quot;Near entrance.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;, &quot;Solar Plexus&quot;], zodiac: [&quot;Scorpio&quot;, &quot;Capricorn&quot;], element: [&quot;Earth&quot;, &quot;Air&quot;], rarity: &quot;Common&quot;, intensity: &quot;High&quot;, pairings: [&quot;Black Tourmaline&quot;, &quot;Clear Quartz&quot;] },
        { name: &quot;Jet&quot;, color: &quot;#000000&quot;, intent: [&quot;Protection&quot;, &quot;Shadow Work&quot;], mantra: &quot;I am protected and grounded.&quot;, properties: &quot;Strong protective organic stone. Draws out negative energy and alleviates fears.&quot;, vastu: &quot;Carry with you.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;], zodiac: [&quot;Capricorn&quot;], element: [&quot;Earth&quot;], rarity: &quot;Uncommon&quot;, intensity: &quot;High&quot;, pairings: [&quot;Black Tourmaline&quot;, &quot;Smoky Quartz&quot;] },
        { name: &quot;Bloodstone&quot;, color: &quot;#166534&quot;, intent: [&quot;Protection&quot;, &quot;Energy&quot;, &quot;Healing&quot;], mantra: &quot;I am strong and protected.&quot;, properties: &quot;Courage and vitality. Excellent blood cleanser and heightens intuition.&quot;, vastu: &quot;South sector.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;, &quot;Heart&quot;], zodiac: [&quot;Aries&quot;, &quot;Pisces&quot;], element: [&quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;High&quot;, pairings: [&quot;Clear Quartz&quot;, &quot;Carnelian&quot;] },
        { name: &quot;Aquamarine&quot;, color: &quot;#7dd3fc&quot;, intent: [&quot;Healing&quot;, &quot;Spiritual&quot;], mantra: &quot;I flow with calm energy.&quot;, properties: &quot;Calming and stress relief. Cools anger and creates clear communication.&quot;, vastu: &quot;North direction.&quot;, water: true, sun: true, chakra: [&quot;Throat&quot;, &quot;Heart&quot;], zodiac: [&quot;Pisces&quot;, &quot;Gemini&quot;], element: [&quot;Water&quot;], rarity: &quot;Uncommon&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Amethyst&quot;, &quot;Blue Lace Agate&quot;] },
        { name: &quot;Chalcedony&quot;, color: &quot;#60a5fa&quot;, intent: [&quot;Healing&quot;, &quot;Harmony&quot;], mantra: &quot;I am peaceful and balanced.&quot;, properties: &quot;Promotes brotherhood, goodwill, and group stability.&quot;, vastu: &quot;Living spaces.&quot;, water: true, sun: true, chakra: [&quot;Throat&quot;, &quot;Sacral&quot;], zodiac: [&quot;Cancer&quot;, &quot;Sagittarius&quot;], element: [&quot;Water&quot;], rarity: &quot;Common&quot;, intensity: &quot;Gentle&quot;, pairings: [&quot;Rose Quartz&quot;, &quot;Blue Lace Agate&quot;] },
        { name: &quot;Prehnite&quot;, color: &quot;#bbf7d0&quot;, intent: [&quot;Healing&quot;, &quot;Spiritual&quot;], mantra: &quot;I trust the universe.&quot;, properties: &quot;Healing and intuition. Stone of prophesy and inner knowing.&quot;, vastu: &quot;Meditation areas.&quot;, water: true, sun: false, chakra: [&quot;Heart&quot;, &quot;Solar Plexus&quot;], zodiac: [&quot;Libra&quot;], element: [&quot;Earth&quot;, &quot;Water&quot;], rarity: &quot;Uncommon&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Amethyst&quot;, &quot;Clear Quartz&quot;] },
        { name: &quot;Serpentine&quot;, color: &quot;#15803d&quot;, intent: [&quot;Healing&quot;, &quot;Spiritual&quot;], mantra: &quot;I awaken inner healing.&quot;, properties: &quot;Detox and healing. Exceptional for awakening dormant kundalini energy.&quot;, vastu: &quot;East sector.&quot;, water: true, sun: true, chakra: [&quot;Heart&quot;, &quot;Crown&quot;], zodiac: [&quot;Gemini&quot;], element: [&quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;High&quot;, pairings: [&quot;Jade&quot;, &quot;Clear Quartz&quot;] },
        { name: &quot;Azurite&quot;, color: &quot;#1e40af&quot;, intent: [&quot;Workspace&quot;, &quot;Spiritual&quot;], mantra: &quot;I expand my awareness.&quot;, properties: &quot;Enhances intuition and intellect. Guides intuitive development.&quot;, vastu: &quot;Study desk.&quot;, water: false, sun: false, chakra: [&quot;Third Eye&quot;, &quot;Crown&quot;], zodiac: [&quot;Sagittarius&quot;], element: [&quot;Air&quot;], rarity: &quot;Rare&quot;, intensity: &quot;High&quot;, pairings: [&quot;Malachite&quot;, &quot;Lapis Lazuli&quot;] },
        { name: &quot;Iolite&quot;, color: &quot;#6366f1&quot;, intent: [&quot;Workspace&quot;, &quot;Spiritual&quot;], mantra: &quot;I see clearly and decide wisely.&quot;, properties: &quot;Decision making and clarity. Aids in understanding root causes of distraction.&quot;, vastu: &quot;Work desk.&quot;, water: true, sun: true, chakra: [&quot;Third Eye&quot;], zodiac: [&quot;Libra&quot;, &quot;Taurus&quot;], element: [&quot;Water&quot;, &quot;Air&quot;], rarity: &quot;Uncommon&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Clear Quartz&quot;, &quot;Amethyst&quot;] },
        { name: &quot;Dalmatian Jasper&quot;, color: &quot;#f3f4f6&quot;, intent: [&quot;Harmony&quot;, &quot;Healing&quot;], mantra: &quot;I embrace joy and playfulness.&quot;, properties: &quot;Grounding and happiness. Breaks down barriers and encourages moving forward.&quot;, vastu: &quot;Living room.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;, &quot;Sacral&quot;], zodiac: [&quot;Virgo&quot;], element: [&quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Rose Quartz&quot;, &quot;Black Tourmaline&quot;] },
        { name: &quot;Snowflake Obsidian&quot;, color: &quot;#1f2937&quot;, intent: [&quot;Protection&quot;, &quot;Shadow Work&quot;], mantra: &quot;I find light in darkness.&quot;, properties: &quot;Balance and purification. Helps recognize and release stressful mental patterns.&quot;, vastu: &quot;Entrance.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;, &quot;Sacral&quot;], zodiac: [&quot;Virgo&quot;, &quot;Capricorn&quot;], element: [&quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Clear Quartz&quot;, &quot;Amethyst&quot;] },
        { name: &quot;Red Jasper&quot;, color: &quot;#b91c1c&quot;, intent: [&quot;Healing&quot;, &quot;Energy&quot;], mantra: &quot;I am energized and stable.&quot;, properties: &quot;Strength and vitality. Supreme nurturer that sustains through immense stress.&quot;, vastu: &quot;South zone.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;, &quot;Sacral&quot;], zodiac: [&quot;Leo&quot;, &quot;Scorpio&quot;], element: [&quot;Fire&quot;, &quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;High&quot;, pairings: [&quot;Carnelian&quot;, &quot;Clear Quartz&quot;] },
        { name: &quot;Yellow Jasper&quot;, color: &quot;#facc15&quot;, intent: [&quot;Wealth&quot;, &quot;Protection&quot;], mantra: &quot;I attract positivity and wealth.&quot;, properties: &quot;Confidence and protection. Shields during spiritual work and attracts positive financial outcomes.&quot;, vastu: &quot;Office desk.&quot;, water: true, sun: true, chakra: [&quot;Solar Plexus&quot;, &quot;Sacral&quot;], zodiac: [&quot;Leo&quot;], element: [&quot;Earth&quot;, &quot;Fire&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Citrine&quot;, &quot;Tiger&#39;s Eye&quot;] },
        { name: &quot;Picture Jasper&quot;, color: &quot;#92400e&quot;, intent: [&quot;Harmony&quot;, &quot;Healing&quot;], mantra: &quot;I connect with earth energy.&quot;, properties: &quot;Grounding and balance. Contains hidden messages from the past.&quot;, vastu: &quot;Living space.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;, &quot;Third Eye&quot;], zodiac: [&quot;Capricorn&quot;], element: [&quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Petrified Wood&quot;, &quot;Clear Quartz&quot;] },
        { name: &quot;Zebra Jasper&quot;, color: &quot;#d1d5db&quot;, intent: [&quot;Harmony&quot;, &quot;Energy&quot;], mantra: &quot;I balance opposites within me.&quot;, properties: &quot;Motivation and balance. Motivates turning ideas into action while remaining grounded.&quot;, vastu: &quot;Bedroom.&quot;, water: true, sun: true, chakra: [&quot;Root&quot;], zodiac: [&quot;Libra&quot;, &quot;Virgo&quot;], element: [&quot;Earth&quot;], rarity: &quot;Common&quot;, intensity: &quot;Medium&quot;, pairings: [&quot;Rose Quartz&quot;, &quot;Amethyst&quot;] },
        { name: &quot;Angelite&quot;, color: &quot;#93c5fd&quot;, intent: [&quot;Healing&quot;, &quot;Spiritual&quot;], mantra: &quot;I connect with higher guidance.&quot;, properties: &quot;Peace and spiritual awareness. Facilitates contact with the angelic realm.&quot;, vastu: &quot;Meditation space.&quot;, water: false, sun: false, chakra: [&quot;Throat&quot;, &quot;Crown&quot;, &quot;Third Eye&quot;], zodiac: [&quot;Aquarius&quot;], element: [&quot;Air&quot;], rarity: &quot;Uncommon&quot;, intensity: &quot;Gentle&quot;, pairings: [&quot;Celestite&quot;, &quot;Amethyst&quot;] },
        { name: &quot;Sugilite&quot;, color: &quot;#a21caf&quot;, intent: [&quot;Protection&quot;, &quot;Love&quot;, &quot;Healing&quot;], mantra: &quot;I am surrounded by divine protection.&quot;, properties: &quot;Spiritual protection. Brings spiritual love to earth and protects from trauma.&quot;, vastu: &quot;Personal altar.&quot;, water: true, sun: false, chakra: [&quot;Crown&quot;, &quot;Third Eye&quot;], zodiac: [&quot;Virgo&quot;, &quot;Sagittarius&quot;], element: [&quot;Air&quot;, &quot;Water&quot;], rarity: &quot;Rare&quot;, intensity: &quot;High&quot;, pairings: [&quot;Amethyst&quot;, &quot;Charoite&quot;] }
    ];

    // --- 6. RENDER LOGIC ---
    function toggleFavorite(crystalName) {
        if (userFavorites.includes(crystalName)) {
            userFavorites = userFavorites.filter(n =&gt; n !== crystalName);
        } else {
            userFavorites.push(crystalName);
        }
        localStorage.setItem(&#39;otechy_crystal_favs&#39;, JSON.stringify(userFavorites));
        renderCrystals(); 
    }

    function setFilter(filter) {
        currentFilter = filter;
        document.querySelectorAll(&#39;.filter-btn&#39;).forEach(btn =&gt; btn.classList.remove(&#39;active&#39;));
        event.target.classList.add(&#39;active&#39;);
        renderCrystals();
    }

    function handleSearch() {
        searchQuery = document.getElementById(&#39;searchInput&#39;).value.toLowerCase();
        renderCrystals();
    }

    function renderCrystals() {
        const grid = document.getElementById(&#39;crystalGrid&#39;);
        grid.innerHTML = &#39;&#39;;

        let filtered = crystalDB;
        
        if (currentFilter === &#39;Favorites&#39;) {
            filtered = filtered.filter(c =&gt; userFavorites.includes(c.name));
        } else if (currentFilter !== &#39;All&#39;) {
            filtered = filtered.filter(c =&gt; c.intent.includes(currentFilter));
        }

        if (searchQuery) {
            filtered = filtered.filter(c =&gt; {
                const searchStr = searchQuery.toLowerCase();
                return c.name.toLowerCase().includes(searchStr) || 
                       c.properties.toLowerCase().includes(searchStr) ||
                       c.vastu.toLowerCase().includes(searchStr) ||
                       c.chakra.some(ch =&gt; ch.toLowerCase().includes(searchStr)) ||
                       c.zodiac.some(z =&gt; z.toLowerCase().includes(searchStr)) ||
                       c.element.some(e =&gt; e.toLowerCase().includes(searchStr));
            });
        }

        if (filtered.length === 0) {
            grid.innerHTML = `&lt;div style=&quot;text-align:center; grid-column: 1/-1; color: var(--accent); padding: 40px; font-weight: 600;&quot;&gt;No crystals found matching your criteria. Try adjusting your search or filters.&lt;/div&gt;`;
            return;
        }

        filtered.forEach(c =&gt; {
            const isFav = userFavorites.includes(c.name);
            const heartClass = isFav ? &quot;fav-icon is-fav&quot; : &quot;fav-icon&quot;;
            const heartIcon = isFav ? &quot;❤️&quot; : &quot;🤍&quot;;

            const waterTag = c.water ? `&lt;span class=&quot;c-tag c-water-yes&quot;&gt;💧 Safe in Water&lt;/span&gt;` : `&lt;span class=&quot;c-tag c-water-no&quot;&gt;⚠️ Keep Dry (Dissolves/Rusts)&lt;/span&gt;`;
            const sunTag = c.sun ? `&lt;span class=&quot;c-tag&quot; style=&quot;background:#fef3c7; color:#b45309; border-color:#fde68a;&quot;&gt;☀️ Safe in Sun&lt;/span&gt;` : `&lt;span class=&quot;c-tag c-sun-no&quot;&gt;⚠️ Fades in Sunlight&lt;/span&gt;`;

            // UI Map for Intents
            const intentTags = c.intent.map(i =&gt; `&lt;span class=&quot;intent-tag&quot;&gt;${i}&lt;/span&gt;`).join(&#39; &#39;);

            // Determine Intensity Color Logic
            let intensityClass = &#39;badge-intensity&#39;;
            if(c.intensity === &#39;Gentle&#39;) intensityClass += &#39; gentle&#39;;
            if(c.intensity === &#39;Medium&#39;) intensityClass += &#39; medium&#39;;
            if(c.intensity === &#39;Extreme&#39;) intensityClass += &#39; extreme&#39;;

            let rarityClass = &#39;badge-rarity&#39;;
            if(c.rarity === &#39;Premium&#39;) rarityClass += &#39; premium&#39;;

            const chakraTags = c.chakra.map(ch =&gt; `&lt;span class=&quot;m-tag&quot;&gt;🌀 ${ch} Chakra&lt;/span&gt;`).join(&#39;&#39;);
            const zodiacTags = c.zodiac.map(z =&gt; `&lt;span class=&quot;m-tag&quot;&gt;✨ ${z}&lt;/span&gt;`).join(&#39;&#39;);
            const elementTags = c.element.map(e =&gt; `&lt;span class=&quot;m-tag&quot;&gt;🌍 ${e}&lt;/span&gt;`).join(&#39;&#39;);
            const pairString = c.pairings.join(&#39;, &#39;);

            const card = document.createElement(&#39;div&#39;);
            card.className = &#39;crystal-card&#39;;
            card.innerHTML = `
                &lt;div class=&quot;card-header&quot;&gt;
                    &lt;h3 class=&quot;crystal-name&quot;&gt;
                        &lt;div class=&quot;crystal-color-tag&quot; style=&quot;background: ${c.color}&quot;&gt;&lt;/div&gt;
                        ${c.name}
                    &lt;/h3&gt;
                    &lt;div class=&quot;${heartClass}&quot; onclick=&quot;toggleFavorite(&#39;${c.name}&#39;)&quot; title=&quot;Add to My Collection&quot;&gt;${heartIcon}&lt;/div&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;expert-badges&quot;&gt;
                    &lt;span class=&quot;${rarityClass}&quot;&gt;💎 ${c.rarity}&lt;/span&gt;
                    &lt;span class=&quot;${intensityClass}&quot;&gt;⚡ ${c.intensity} Energy&lt;/span&gt;
                &lt;/div&gt;

                &lt;div class=&quot;intent-wrap&quot;&gt;${intentTags}&lt;/div&gt;
                
                &lt;div class=&quot;meta-tags&quot;&gt;
                    ${chakraTags}
                    ${zodiacTags}
                    ${elementTags}
                &lt;/div&gt;
                
                &lt;div class=&quot;mantra-box&quot;&gt;
                    &lt;span class=&quot;mantra-lbl&quot;&gt;Chanting Mantra&lt;/span&gt;
                    &lt;span class=&quot;mantra-txt&quot;&gt;&quot;${c.mantra}&quot;&lt;/span&gt;
                &lt;/div&gt;

                &lt;div class=&quot;info-group&quot;&gt;
                    &lt;span class=&quot;info-lbl&quot;&gt;✨ Healing Properties&lt;/span&gt;
                    &lt;span class=&quot;info-val&quot;&gt;${c.properties}&lt;/span&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;info-group vastu-group&quot;&gt;
                    &lt;span class=&quot;info-lbl&quot;&gt;🧭 Vastu Placement Guide&lt;/span&gt;
                    &lt;span class=&quot;info-val&quot;&gt;${c.vastu}&lt;/span&gt;
                &lt;/div&gt;

                &lt;div class=&quot;pairings-box&quot;&gt;
                    &lt;strong&gt;Synergizes well with:&lt;/strong&gt; ${pairString}
                &lt;/div&gt;

                &lt;div class=&quot;cleanse-tags&quot;&gt;
                    ${waterTag}
                    ${sunTag}
                &lt;/div&gt;
            `;
            grid.appendChild(card);
        });
    }

    renderCrystals();
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/3877178182119082501'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/3877178182119082501'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/03/crystal-studio-moon-tracker-chanting.html' title='Crystal Studio | Moon Tracker &amp; Chanting Mantras'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-4993206537824378205</id><published>2026-03-27T02:31:00.000-07:00</published><updated>2026-03-27T02:31:35.255-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Crypto"/><title type='text'>Portfolio</title><content type='html'>&lt;title&gt;My Crypto Portfolio Tracker | OTechy&lt;/title&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;850&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.25/jspdf.plugin.autotable.min.js&quot;&gt;&lt;/script&gt;

&lt;style&gt;
    :root { 
        --primary: #3b82f6; --text-dark: #0f172a; --text-muted: #64748b; 
        --bg: #f8fafc; --white: #fff; --border: #e2e8f0; 
        --success: #10b981; --danger: #ef4444;
        --font-main: &#39;Poppins&#39;, sans-serif;
    }
    
    * { box-sizing: border-box; }
    body { background-color: var(--bg); font-family: var(--font-main); color: var(--text-dark); margin: 0; line-height: 1.6; }
    .otechy-tool-wrapper { max-width: 1000px; margin: 0 auto; padding: 40px 15px; }
    
    /* Header Section */
    .wallet-header { display: flex; justify-content: space-between; align-items: flex-end; margin-bottom: 25px; flex-wrap: wrap; gap: 15px; }
    .header-left h1 { font-size: 28px; font-weight: 850; margin: 0 0 5px 0; color: var(--text-dark); letter-spacing: -0.5px; }
    .header-left p { margin: 0; color: var(--text-muted); font-size: 13px; font-weight: 500; }
    
    .header-right { text-align: right; }
    .total-assets-badge { display: inline-block; background: #eff6ff; color: var(--primary); padding: 4px 12px; border-radius: 6px; font-size: 12px; font-weight: 700; margin-bottom: 10px; border: 1px solid #bfdbfe; }
    
    .btn-pdf { border: none; background: var(--text-dark); color: #fff; padding: 10px 20px; border-radius: 8px; font-family: var(--font-main); font-weight: 600; font-size: 13px; cursor: pointer; transition: 0.2s; display: flex; align-items: center; gap: 8px; }
    .btn-pdf:hover { background: var(--primary); box-shadow: 0 4px 12px rgba(59, 130, 246, 0.2); transform: translateY(-2px); }

    /* Category Blocks */
    .category-section { margin-bottom: 30px; background: var(--white); border-radius: 16px; border: 1px solid var(--border); box-shadow: 0 4px 15px rgba(0,0,0,0.02); overflow: hidden; }
    .category-header { background: #f1f5f9; padding: 15px 20px; font-size: 14px; font-weight: 800; color: var(--text-dark); border-bottom: 1px solid var(--border); display: flex; align-items: center; gap: 8px; }
    
    /* Table Styles */
    .table-wrapper { overflow-x: auto; }
    table { width: 100%; border-collapse: collapse; text-align: right; min-width: 700px; }
    th { padding: 12px 20px; font-size: 11px; font-weight: 700; color: var(--text-muted); text-transform: uppercase; border-bottom: 1px solid var(--border); background: #f8fafc; }
    th:first-child { text-align: left; }
    td { padding: 15px 20px; border-bottom: 1px solid #f1f5f9; font-size: 14px; font-weight: 600; color: var(--text-dark); }
    tr:last-child td { border-bottom: none; }
    tr:hover { background: #f8fafc; }

    /* Asset Cell */
    .asset-cell { display: flex; align-items: center; gap: 12px; text-align: left; }
    .coin-icon { width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: 800; font-size: 10px; text-transform: uppercase; box-shadow: inset 0 -2px 0 rgba(0,0,0,0.15); }
    .coin-name { font-weight: 700; line-height: 1.2; }
    .coin-ticker { font-size: 11px; color: var(--text-muted); font-weight: 600; }

    /* Metrics */
    .metric-value { font-variant-numeric: tabular-nums; }
    .metric-sub { font-size: 11px; color: var(--text-muted); font-weight: 500; }
    
    .pnl-positive { color: var(--success); background: #ecfdf5; padding: 4px 8px; border-radius: 6px; font-size: 12px; }
    .pnl-negative { color: var(--danger); background: #fef2f2; padding: 4px 8px; border-radius: 6px; font-size: 12px; }

    /* Footer Totals */
    .portfolio-footer { background: var(--text-dark); color: #fff; padding: 25px; border-radius: 16px; display: flex; justify-content: space-between; align-items: center; margin-top: 30px; flex-wrap: wrap; gap: 15px; }
    .footer-label { font-size: 14px; color: #94a3b8; font-weight: 600; text-transform: uppercase; letter-spacing: 1px; }
    .footer-value { font-size: 32px; font-weight: 850; margin: 0; line-height: 1; }

    @media (max-width: 600px) {
        .wallet-header { flex-direction: column; align-items: flex-start; }
        .header-right { text-align: left; width: 100%; }
        .btn-pdf { width: 100%; justify-content: center; }
        .portfolio-footer { flex-direction: column; text-align: center; justify-content: center; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;

    &lt;div class=&quot;wallet-header&quot;&gt;
        &lt;div class=&quot;header-left&quot;&gt;
            &lt;h1&gt;Master Portfolio&lt;/h1&gt;
            &lt;p id=&quot;portfolioDate&quot;&gt;Locked Allocation Ledger &amp;bull; 27-March-2026&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;header-right&quot;&gt;
            &lt;div class=&quot;total-assets-badge&quot; id=&quot;totalAssetsCount&quot;&gt;Tracking 0 Assets&lt;/div&gt;
            &lt;button class=&quot;btn-pdf&quot; onclick=&quot;exportPortfolioPDF()&quot;&gt;
                &lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;path d=&quot;M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3&quot;/&gt;&lt;/svg&gt;
                Export Ledger (PDF)
            &lt;/button&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div id=&quot;portfolioContainer&quot;&gt;
        &lt;/div&gt;

    &lt;div class=&quot;portfolio-footer&quot;&gt;
        &lt;div&gt;
            &lt;div class=&quot;footer-label&quot;&gt;Grand Total Value (USD)&lt;/div&gt;
            &lt;div class=&quot;footer-value&quot; id=&quot;grandTotalValue&quot;&gt;$0.00&lt;/div&gt;
        &lt;/div&gt;
        &lt;div style=&quot;text-align: right;&quot;&gt;
            &lt;div class=&quot;footer-label&quot; style=&quot;font-size: 11px;&quot;&gt;OTechy Secure Ledger&lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;
    // =========================================================================
    // 🟢 YOUR PORTFOLIO DATA (EDIT THIS LIST TO UPDATE YOUR TRACKER)
    // =========================================================================
    
    // Helper function to calculate PnL mathematically if you only had average price.
    // Since you provided exact PnL % strings, we will use those directly for display.

    const portfolioData = [
        // ✅ Major &amp; well-known coins
        { cat: &quot;Major&quot;, name: &quot;Bitcoin&quot;, ticker: &quot;BTC&quot;, price: 67812.56, holdings: 836.58, amount: &quot;0.01233&quot;, avgBuy: 75122.76, pnl: &quot;-9.73%&quot;, color: &quot;#f59e0b&quot; },
        { cat: &quot;Major&quot;, name: &quot;Pi&quot;, ticker: &quot;PI&quot;, price: 0.1772, holdings: 523.38, amount: &quot;2,952.00&quot;, avgBuy: 0.2136, pnl: &quot;-17.01%&quot;, color: &quot;#8b5cf6&quot; },
        { cat: &quot;Major&quot;, name: &quot;Ethereum&quot;, ticker: &quot;ETH&quot;, price: 2044.08, holdings: 496.69, amount: &quot;0.2429&quot;, avgBuy: 3381.17, pnl: &quot;-39.55%&quot;, color: &quot;#627eea&quot; },
        { cat: &quot;Major&quot;, name: &quot;Solana&quot;, ticker: &quot;SOL&quot;, price: 84.72, holdings: 191.91, amount: &quot;2.2653&quot;, avgBuy: 186.6, pnl: &quot;-54.60%&quot;, color: &quot;#14b8a6&quot; },
        { cat: &quot;Major&quot;, name: &quot;TRON&quot;, ticker: &quot;TRX&quot;, price: 0.316, holdings: 161.69, amount: &quot;511.58&quot;, avgBuy: 0.3177, pnl: &quot;-0.52%&quot;, color: &quot;#ef4444&quot; },
        { cat: &quot;Major&quot;, name: &quot;Stellar&quot;, ticker: &quot;XLM&quot;, price: 0.1723, holdings: 87.66, amount: &quot;508.51&quot;, avgBuy: 0.336, pnl: &quot;-48.71%&quot;, color: &quot;#334155&quot; },
        { cat: &quot;Major&quot;, name: &quot;Quant&quot;, ticker: &quot;QNT&quot;, price: 72.91, holdings: 73.56, amount: &quot;1.0089&quot;, avgBuy: 92.68, pnl: &quot;-21.33%&quot;, color: &quot;#0f172a&quot; },
        { cat: &quot;Major&quot;, name: &quot;VeChain&quot;, ticker: &quot;VET&quot;, price: 0.006819, holdings: 72.45, amount: &quot;10,624.00&quot;, avgBuy: 0.0188, pnl: &quot;-63.74%&quot;, color: &quot;#3b82f6&quot; },
        { cat: &quot;Major&quot;, name: &quot;Chainlink&quot;, ticker: &quot;LINK&quot;, price: 8.7999, holdings: 59.99, amount: &quot;6.8166&quot;, avgBuy: 16.38, pnl: &quot;-46.29%&quot;, color: &quot;#2563eb&quot; },
        { cat: &quot;Major&quot;, name: &quot;XRP&quot;, ticker: &quot;XRP&quot;, price: 1.346, holdings: 58.9, amount: &quot;43.76&quot;, avgBuy: 2.3883, pnl: &quot;-43.64%&quot;, color: &quot;#000000&quot; },
        { cat: &quot;Major&quot;, name: &quot;Avalanche&quot;, ticker: &quot;AVAX&quot;, price: 8.94, holdings: 58.65, amount: &quot;6.56&quot;, avgBuy: 18.74, pnl: &quot;-52.30%&quot;, color: &quot;#dc2626&quot; },
        { cat: &quot;Major&quot;, name: &quot;Sui&quot;, ticker: &quot;SUI&quot;, price: 0.914, holdings: 50.28, amount: &quot;55&quot;, avgBuy: 1.3812, pnl: &quot;-33.82%&quot;, color: &quot;#3b82f6&quot; },
        { cat: &quot;Major&quot;, name: &quot;Cardano&quot;, ticker: &quot;ADA&quot;, price: 0.251, holdings: 40.17, amount: &quot;160&quot;, avgBuy: 0.6377, pnl: &quot;-60.63%&quot;, color: &quot;#2563eb&quot; },
        { cat: &quot;Major&quot;, name: &quot;Polygon&quot;, ticker: &quot;POL&quot;, price: 0.09584, holdings: 28.94, amount: &quot;302&quot;, avgBuy: 0.143, pnl: &quot;-32.99%&quot;, color: &quot;#8b5cf6&quot; },
        { cat: &quot;Major&quot;, name: &quot;Shiba Inu&quot;, ticker: &quot;SHIB&quot;, price: 0.000005855, holdings: 24.79, amount: &quot;4,233,306.65&quot;, avgBuy: 0.000009295, pnl: &quot;-37.01%&quot;, color: &quot;#f97316&quot; },
        { cat: &quot;Major&quot;, name: &quot;Hedera&quot;, ticker: &quot;HBAR&quot;, price: 0.09063, holdings: 17.29, amount: &quot;190.74&quot;, avgBuy: 0.1867, pnl: &quot;-51.46%&quot;, color: &quot;#0f172a&quot; },
        { cat: &quot;Major&quot;, name: &quot;Dogecoin&quot;, ticker: &quot;DOGE&quot;, price: 0.09147, holdings: 14.71, amount: &quot;160.8&quot;, avgBuy: 0.2029, pnl: &quot;-54.92%&quot;, color: &quot;#eab308&quot; },
        { cat: &quot;Major&quot;, name: &quot;BNB&quot;, ticker: &quot;BNB&quot;, price: 619.62, holdings: 4.5852, amount: &quot;0.0074&quot;, avgBuy: 1182.90, pnl: &quot;-47.62%&quot;, color: &quot;#facc15&quot; },
        { cat: &quot;Major&quot;, name: &quot;Polkadot&quot;, ticker: &quot;DOT&quot;, price: 1.3109, holdings: 3.7884, amount: &quot;2.89&quot;, avgBuy: 3.2086, pnl: &quot;-59.15%&quot;, color: &quot;#ec4899&quot; },

        // 🧠 Emerging / ecosystem / DeFi coins
        { cat: &quot;Emerging&quot;, name: &quot;IAGON&quot;, ticker: &quot;IAG&quot;, price: 0.04602, holdings: 401.05, amount: &quot;8,713.00&quot;, avgBuy: 0.1159, pnl: &quot;-60.32%&quot;, color: &quot;#1e3a8a&quot; },
        { cat: &quot;Emerging&quot;, name: &quot;Hyperliquid&quot;, ticker: &quot;HYPE&quot;, price: 38.78, holdings: 39.56, amount: &quot;1.02&quot;, avgBuy: 38.33, pnl: &quot;1.18%&quot;, color: &quot;#10b981&quot; },
        { cat: &quot;Emerging&quot;, name: &quot;Nervos Network&quot;, ticker: &quot;CKB&quot;, price: 0.001407, holdings: 8.2587, amount: &quot;5,867.00&quot;, avgBuy: 0.00356, pnl: &quot;-60.47%&quot;, color: &quot;#10b981&quot; },
        { cat: &quot;Emerging&quot;, name: &quot;BitTorrent&quot;, ticker: &quot;BTT&quot;, price: 0.0000003224, holdings: 7.0084, amount: &quot;21,733,529.00&quot;, avgBuy: 0.0000005221, pnl: &quot;-38.25%&quot;, color: &quot;#64748b&quot; },
        { cat: &quot;Emerging&quot;, name: &quot;Pundi X&quot;, ticker: &quot;PUNDIX&quot;, price: 0.1457, holdings: 5.2755, amount: &quot;36.2&quot;, avgBuy: 0.3072, pnl: &quot;-52.57%&quot;, color: &quot;#eab308&quot; },
        { cat: &quot;Emerging&quot;, name: &quot;VeThor Token&quot;, ticker: &quot;VTHO&quot;, price: 0.0005473, holdings: 4.8525, amount: &quot;8,866.00&quot;, avgBuy: 0.001237, pnl: &quot;-55.76%&quot;, color: &quot;#3b82f6&quot; },
        { cat: &quot;Emerging&quot;, name: &quot;ASI Alliance&quot;, ticker: &quot;FET&quot;, price: 0.2341, holdings: 3.699, amount: &quot;15.8&quot;, avgBuy: 0.3123, pnl: &quot;-25.05%&quot;, color: &quot;#3b82f6&quot; },
        { cat: &quot;Emerging&quot;, name: &quot;Bonk&quot;, ticker: &quot;BONK&quot;, price: 0.000005862, holdings: 3.5928, amount: &quot;612,874.00&quot;, avgBuy: 0.0000157, pnl: &quot;-62.67%&quot;, color: &quot;#f97316&quot; },
        { cat: &quot;Emerging&quot;, name: &quot;Safe Haven&quot;, ticker: &quot;SHA&quot;, price: 0.0000784, holdings: 3.2603, amount: &quot;41,584.00&quot;, avgBuy: 0.0001025, pnl: &quot;-23.53%&quot;, color: &quot;#3b82f6&quot; },
        { cat: &quot;Emerging&quot;, name: &quot;Theta Network&quot;, ticker: &quot;THETA&quot;, price: 0.1588, holdings: 3.1775, amount: &quot;20&quot;, avgBuy: 0.5692, pnl: &quot;-72.09%&quot;, color: &quot;#06b6d4&quot; },
        { cat: &quot;Emerging&quot;, name: &quot;Decentraland&quot;, ticker: &quot;MANA&quot;, price: 0.08368, holdings: 3.0603, amount: &quot;36.57&quot;, avgBuy: 0.2648, pnl: &quot;-68.40%&quot;, color: &quot;#ef4444&quot; },
        { cat: &quot;Emerging&quot;, name: &quot;EOS&quot;, ticker: &quot;EOS&quot;, price: 0.07633, holdings: 2.9388, amount: &quot;38.5&quot;, avgBuy: 0.3085, pnl: &quot;-75.26%&quot;, color: &quot;#0f172a&quot; },
        { cat: &quot;Emerging&quot;, name: &quot;IOST&quot;, ticker: &quot;IOST&quot;, price: 0.001082, holdings: 2.5094, amount: &quot;2,318.00&quot;, avgBuy: 0.002513, pnl: &quot;-56.94%&quot;, color: &quot;#64748b&quot; },
        { cat: &quot;Emerging&quot;, name: &quot;Holo&quot;, ticker: &quot;HOT&quot;, price: 0.0004253, holdings: 2.3506, amount: &quot;5,527.00&quot;, avgBuy: 0.0006983, pnl: &quot;-39.10%&quot;, color: &quot;#14b8a6&quot; },
        { cat: &quot;Emerging&quot;, name: &quot;Harmony&quot;, ticker: &quot;ONE&quot;, price: 0.002274, holdings: 2.2741, amount: &quot;1,000.00&quot;, avgBuy: 0.007276, pnl: &quot;-68.75%&quot;, color: &quot;#0ea5e9&quot; },
        { cat: &quot;Emerging&quot;, name: &quot;Gala&quot;, ticker: &quot;GALA&quot;, price: 0.003023, holdings: 1.5301, amount: &quot;506&quot;, avgBuy: 0.01188, pnl: &quot;-74.55%&quot;, color: &quot;#2563eb&quot; },
        { cat: &quot;Emerging&quot;, name: &quot;BENQI&quot;, ticker: &quot;QI&quot;, price: 0.001424, holdings: 1.0423, amount: &quot;731.78&quot;, avgBuy: 0.006074, pnl: &quot;-76.55%&quot;, color: &quot;#3b82f6&quot; },
        { cat: &quot;Emerging&quot;, name: &quot;Tezos&quot;, ticker: &quot;XTZ&quot;, price: 0.3702, holdings: 0.07035, amount: &quot;0.19&quot;, avgBuy: 0.6195, pnl: &quot;-40.23%&quot;, color: &quot;#2563eb&quot; },

        // 🪙 Meme / niche / smaller-cap tokens
        { cat: &quot;Niche&quot;, name: &quot;Diamond&quot;, ticker: &quot;DMD&quot;, price: 1.3855, holdings: 69.28, amount: &quot;50&quot;, avgBuy: 2.8462, pnl: &quot;-51.32%&quot;, color: &quot;#06b6d4&quot; },
        { cat: &quot;Niche&quot;, name: &quot;Verge&quot;, ticker: &quot;XVG&quot;, price: 0.004765, holdings: 12.25, amount: &quot;2,571.00&quot;, avgBuy: 0.006356, pnl: &quot;-25.03%&quot;, color: &quot;#0ea5e9&quot; },
        { cat: &quot;Niche&quot;, name: &quot;FLOKI&quot;, ticker: &quot;FLOKI&quot;, price: 0.00002873, holdings: 11.76, amount: &quot;409,146.00&quot;, avgBuy: 0.00007291, pnl: &quot;-60.59%&quot;, color: &quot;#f59e0b&quot; },
        { cat: &quot;Niche&quot;, name: &quot;Pepe&quot;, ticker: &quot;PEPE&quot;, price: 0.000003354, holdings: 10.95, amount: &quot;3,263,964.00&quot;, avgBuy: 0.000007399, pnl: &quot;-54.66%&quot;, color: &quot;#22c55e&quot; },
        { cat: &quot;Niche&quot;, name: &quot;BitBall&quot;, ticker: &quot;BTB&quot;, price: 0.00002198, holdings: 0.2198, amount: &quot;10,000.00&quot;, avgBuy: 0.00018, pnl: &quot;-87.79%&quot;, color: &quot;#f59e0b&quot; },
        { cat: &quot;Niche&quot;, name: &quot;Wise Monkey&quot;, ticker: &quot;MONKY&quot;, price: 0.0000002108, holdings: 0.01996, amount: &quot;94,664.00&quot;, avgBuy: 0.0000007312, pnl: &quot;-71.16%&quot;, color: &quot;#d97706&quot; },
        { cat: &quot;Niche&quot;, name: &quot;Rapids&quot;, ticker: &quot;RPD&quot;, price: 0.0000725, holdings: 0.0137, amount: &quot;189&quot;, avgBuy: 0.000128, pnl: &quot;-43.40%&quot;, color: &quot;#3b82f6&quot; }
    ];
    // =========================================================================

    const categories = [
        { id: &quot;Major&quot;, title: &quot;✅ Major &amp; Well-Known Assets&quot;, color: &quot;#3b82f6&quot; },
        { id: &quot;Emerging&quot;, title: &quot;🧠 Emerging / DeFi Ecosystem&quot;, color: &quot;#8b5cf6&quot; },
        { id: &quot;Niche&quot;, title: &quot;🪙 Niche / Meme / Small-Cap&quot;, color: &quot;#f59e0b&quot; }
    ];

    function formatMoney(val) {
        // Handle tiny numbers vs standard numbers
        if (val &lt; 0.001) return &quot;$&quot; + val.toExponential(4).replace(&quot;e-&quot;, &quot;E-&quot;);
        return &quot;$&quot; + val.toLocaleString(&#39;en-US&#39;, { minimumFractionDigits: 2, maximumFractionDigits: 4 });
    }

    function formatHoldings(val) {
        return &quot;$&quot; + val.toLocaleString(&#39;en-US&#39;, { minimumFractionDigits: 2, maximumFractionDigits: 2 });
    }

    function renderPortfolio() {
        const container = document.getElementById(&#39;portfolioContainer&#39;);
        container.innerHTML = &#39;&#39;;
        
        let grandTotal = 0;
        document.getElementById(&#39;totalAssetsCount&#39;).innerText = `Tracking ${portfolioData.length} Assets`;

        categories.forEach(category =&gt; {
            // Filter assets by category
            const assets = portfolioData.filter(a =&gt; a.cat === category.id);
            if(assets.length === 0) return;

            // Build Section
            const section = document.createElement(&#39;div&#39;);
            section.className = &#39;category-section&#39;;
            
            let tableRows = &#39;&#39;;
            assets.forEach(asset =&gt; {
                grandTotal += asset.holdings;
                
                const isPositive = !asset.pnl.includes(&#39;-&#39;);
                const pnlClass = isPositive ? &#39;pnl-positive&#39; : &#39;pnl-negative&#39;;

                tableRows += `
                    &lt;tr&gt;
                        &lt;td&gt;
                            &lt;div class=&quot;asset-cell&quot;&gt;
                                &lt;div class=&quot;coin-icon&quot; style=&quot;background-color: ${asset.color};&quot;&gt;${asset.ticker.substring(0, 3)}&lt;/div&gt;
                                &lt;div&gt;
                                    &lt;div class=&quot;coin-name&quot;&gt;${asset.name}&lt;/div&gt;
                                    &lt;div class=&quot;coin-ticker&quot;&gt;${asset.ticker}&lt;/div&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/td&gt;
                        &lt;td&gt;
                            &lt;div class=&quot;metric-value&quot;&gt;${formatMoney(asset.price)}&lt;/div&gt;
                        &lt;/td&gt;
                        &lt;td&gt;
                            &lt;div class=&quot;metric-value&quot; style=&quot;font-weight:800;&quot;&gt;${formatHoldings(asset.holdings)}&lt;/div&gt;
                            &lt;div class=&quot;metric-sub&quot;&gt;${asset.amount} ${asset.ticker}&lt;/div&gt;
                        &lt;/td&gt;
                        &lt;td&gt;
                            &lt;div class=&quot;metric-value&quot;&gt;${formatMoney(asset.avgBuy)}&lt;/div&gt;
                        &lt;/td&gt;
                        &lt;td&gt;
                            &lt;span class=&quot;${pnlClass}&quot;&gt;${asset.pnl}&lt;/span&gt;
                        &lt;/td&gt;
                    &lt;/tr&gt;
                `;
            });

            section.innerHTML = `
                &lt;div class=&quot;category-header&quot;&gt;
                    ${category.title}
                &lt;/div&gt;
                &lt;div class=&quot;table-wrapper&quot;&gt;
                    &lt;table&gt;
                        &lt;thead&gt;
                            &lt;tr&gt;
                                &lt;th&gt;Asset&lt;/th&gt;
                                &lt;th&gt;Current Price&lt;/th&gt;
                                &lt;th&gt;Total Holdings&lt;/th&gt;
                                &lt;th&gt;Avg Buy Price&lt;/th&gt;
                                &lt;th&gt;Profit/Loss&lt;/th&gt;
                            &lt;/tr&gt;
                        &lt;/thead&gt;
                        &lt;tbody&gt;
                            ${tableRows}
                        &lt;/tbody&gt;
                    &lt;/table&gt;
                &lt;/div&gt;
            `;
            container.appendChild(section);
        });

        // Update Grand Total
        document.getElementById(&#39;grandTotalValue&#39;).innerText = formatHoldings(grandTotal);
    }

    // Export to PDF
    function exportPortfolioPDF() {
        const { jsPDF } = window.jspdf;
        const doc = new jsPDF(&#39;p&#39;, &#39;mm&#39;, &#39;a4&#39;);

        doc.setFillColor(15, 23, 42); 
        doc.rect(0, 0, 210, 25, &#39;F&#39;);
        doc.setTextColor(255); 
        doc.setFontSize(18); 
        doc.setFont(&quot;helvetica&quot;, &quot;bold&quot;);
        doc.text(&quot;OTechy Pro Asset Ledger&quot;, 15, 17);
        
        doc.setFontSize(10); 
        doc.setFont(&quot;helvetica&quot;, &quot;normal&quot;);
        doc.text(&quot;Generated: &quot; + new Date().toLocaleDateString(), 150, 17);

        let currentY = 35;
        let totalValue = 0;

        categories.forEach(category =&gt; {
            const assets = portfolioData.filter(a =&gt; a.cat === category.id);
            if(assets.length === 0) return;

            doc.setFontSize(12);
            doc.setTextColor(59, 130, 246);
            doc.setFont(&quot;helvetica&quot;, &quot;bold&quot;);
            doc.text(category.title.replace(/[^\x00-\x7F]/g, &quot;&quot;), 15, currentY); // Remove emojis for PDF
            currentY += 5;

            const tableData = assets.map(item =&gt; {
                totalValue += item.holdings;
                return [
                    item.name,
                    item.ticker,
                    formatMoney(item.price),
                    item.amount,
                    formatHoldings(item.holdings),
                    item.pnl
                ];
            });

            doc.autoTable({ 
                startY: currentY, 
                head: [[&#39;Asset Name&#39;, &#39;Ticker&#39;, &#39;Price&#39;, &#39;Amount&#39;, &#39;Holdings (USD)&#39;, &#39;P/L&#39;]], 
                body: tableData, 
                theme: &#39;grid&#39;, 
                headStyles: { fillColor: [59, 130, 246] }, 
                styles: { font: &#39;helvetica&#39;, fontSize: 8 },
                alternateRowStyles: { fillColor: [248, 250, 252] }
            });

            currentY = doc.lastAutoTable.finalY + 15;
        });

        // Print Grand Total at the bottom
        doc.setFontSize(14);
        doc.setTextColor(15, 23, 42);
        doc.text(`Grand Total Value: ${formatHoldings(totalValue)}`, 15, currentY);

        doc.save(`Crypto_Ledger_${new Date().getTime()}.pdf`);
    }

    // Initialize
    document.addEventListener(&#39;DOMContentLoaded&#39;, () =&gt; {
        renderPortfolio();
    });
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/4993206537824378205'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/4993206537824378205'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/03/portfolio.html' title='Portfolio'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-8331968154744339683</id><published>2026-03-27T01:40:00.000-07:00</published><updated>2026-03-28T08:58:28.187-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ethereum Calculator"/><title type='text'>Ethereum Retirement Calculator</title><content type='html'>&lt;title&gt;Ethereum Retirement and Compounding Calculator | Real Retirement &amp; LTV Planner - OTechy&lt;/title&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
&lt;meta name=&quot;description&quot; content=&quot;Simulate your Ethereum wealth over time. Calculate compounding DCA, 50% LTV collateral loans, fiat inflation, and real asset purchasing power. Download your Pro PDF plan.&quot;&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;ethereum compounding calculator, eth retirement planner, ethereum DCA calculator, 50% LTV eth loan, eth purchasing power, crypto wealth tracker&quot;&gt;
&lt;meta property=&quot;og:title&quot; content=&quot;Ethereum Compounding Calculator - OTechy&quot;&gt;
&lt;meta property=&quot;og:description&quot; content=&quot;Calculate your Ethereum retirement, LTV borrowing power, and asset purchasing power.&quot;&gt;
&lt;meta property=&quot;og:type&quot; content=&quot;website&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;850&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.25/jspdf.plugin.autotable.min.js&quot;&gt;&lt;/script&gt;

&lt;style&gt;
    /* --- OTechy Design System (Ethereum Theme) --- */
    :root { 
        --primary: #627eea; /* Ethereum Blue */
        --primary-dark: #4b66b5; 
        --text-dark: #1e293b; --accent: #64748b; 
        --bg: #f8fafc; --white: #fff; --border: #e2e8f0; 
        --success: #10b981; --safe-green: #dcfce7;
        --soft-eth: #f0f4ff; --font-main: &#39;Poppins&#39;, sans-serif;
    }
    
    * { box-sizing: border-box; }
    body { background-color: var(--bg); font-family: var(--font-main); color: var(--text-dark); margin: 0; line-height: 1.6; }
    .otechy-tool-wrapper { max-width: 1000px; margin: 0 auto; padding: 60px 20px 20px; }
    
    .otechy-badge { display: table; margin: 0 auto 10px; background: var(--soft-eth); color: var(--primary-dark); padding: 6px 16px; border-radius: 50px; font-size: 11px; font-weight: 800; text-transform: uppercase; border: 1px solid #c7d2fe; }
    
    .tool-header { text-align: center; margin-bottom: 30px; }
    .tool-header h1 { font-size: clamp(24px, 5vw, 38px); font-weight: 850; color: var(--text-dark); margin: 0; display: flex; align-items: center; justify-content: center; gap: 10px; flex-wrap: wrap; text-align: center; }
    .tool-header h1 span { color: var(--primary); }
    .quick-value { color: var(--accent); font-weight: 600; font-size: 14px; margin-top: 5px; text-align: center; }
    
    /* Main Grid */
    .otechy-card { background: var(--white); padding: 30px; border-radius: 16px; border: 1px solid var(--border); box-shadow: 0 4px 15px rgba(0,0,0,0.03); margin-bottom: 30px; }
    
    .input-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin-bottom: 30px; }
    .input-section { background: #f8fafc; padding: 20px; border-radius: 12px; border: 1px solid var(--border); }
    .section-title { font-size: 13px; font-weight: 800; color: var(--text-dark); margin-bottom: 15px; text-transform: uppercase; display: flex; align-items: center; gap: 8px; }
    
    .input-group { margin-bottom: 15px; }
    .input-group label { font-size: 11px; font-weight: 700; color: var(--accent); display: block; margin-bottom: 6px; text-transform: uppercase; }
    .input-wrapper { position: relative; }
    .input-prefix { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--accent); font-weight: 600; font-size: 14px; }
    .input-suffix { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); color: var(--accent); font-weight: 600; font-size: 12px; }
    .form-control { width: 100%; padding: 12px 12px 12px 30px; border-radius: 8px; border: 1px solid #cbd5e1; font-family: var(--font-main); font-size: 14px; font-weight: 600; outline: none; transition: 0.2s; }
    .form-control.no-prefix { padding-left: 12px; }
    .form-control:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(98, 126, 234, 0.1); }

    /* Dashboard Outputs */
    .dashboard-grid { display: grid; grid-template-columns: 1fr 1.5fr 1fr; gap: 15px; margin-bottom: 20px; }
    .stat-card { padding: 20px; border-radius: 12px; border: 1px solid var(--border); text-align: center; background: #fff; position: relative; overflow: hidden; }
    .stat-card.hero { background: var(--text-dark); border-color: #334155; transform: scale(1.02); z-index: 2; box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15); }
    .stat-label { font-size: 11px; font-weight: 800; color: var(--accent); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 5px; }
    .hero .stat-label { color: #94a3b8; }
    .stat-value { font-size: 28px; font-weight: 850; color: var(--text-dark); line-height: 1.2; word-break: break-word; }
    .hero .stat-value { color: var(--primary); font-size: 32px; }
    .stat-sub { font-size: 11px; color: var(--accent); margin-top: 5px; font-weight: 500; }
    .hero .stat-sub { color: #cbd5e1; }

    /* VS Comparison Container */
    .vs-container { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; margin-top: 25px; }
    .vs-card { padding: 20px; border-radius: 12px; border: 1px solid var(--border); background: #f8fafc; }
    .vs-header { font-size: 13px; font-weight: 800; color: var(--text-dark); margin-bottom: 15px; display: flex; align-items: center; gap: 8px; border-bottom: 1px solid var(--border); padding-bottom: 10px; }
    .vs-row { display: flex; justify-content: space-between; padding: 8px 0; font-size: 13px; font-weight: 500; color: var(--accent); border-bottom: 1px dashed #e2e8f0; }
    .vs-row b { color: var(--text-dark); font-weight: 700; text-align: right; }
    .vs-row:last-child { border-bottom: none; }

    /* LTV Box */
    .ltv-box { margin-top: 25px; border: 2px dashed var(--primary); border-radius: 12px; padding: 20px; background: #fff; text-align: center; }
    .ltv-box h3 { margin: 0 0 10px; font-size: 16px; color: var(--primary); }
    .ltv-result { font-size: 24px; font-weight: 850; color: var(--text-dark); word-break: break-word; }
    .ltv-sub { font-size: 12px; color: var(--accent); margin-top: 5px; font-weight: 500; }

    /* Buttons */
    .btn-calc { width: 100%; padding: 15px; background: var(--primary); color: #fff; font-size: 16px; font-weight: 800; border: none; border-radius: 10px; cursor: pointer; transition: 0.2s; font-family: var(--font-main); margin-top: 10px; }
    .btn-calc:hover { background: var(--primary-dark); transform: translateY(-2px); box-shadow: 0 5px 15px rgba(98, 126, 234, 0.2); }
    .btn-pdf { background: var(--text-dark); color: #fff; margin-top: 20px; }
    .btn-pdf:hover { background: #000; box-shadow: 0 5px 15px rgba(0,0,0,0.1); }

    /* Content Typography */
    .geo-citation { background: var(--white); padding: 25px; border-radius: 12px; border-left: 5px solid var(--primary); font-size: 14px; margin: 40px 0 20px; color: var(--text-dark); box-shadow: 0 4px 12px rgba(0,0,0,0.02); }
    .section-h2 { font-size: 22px; font-weight: 850; color: var(--text-dark); margin-bottom: 20px; }
    
    /* FAQ */
    .faq-section { margin-top: 60px; }
    .faq-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 15px; }
    .faq-card { background: var(--white); padding: 20px; border-radius: 12px; border: 1px solid var(--border); }
    .faq-card h3 { font-size: 14px; color: var(--text-dark); margin: 0 0 8px; font-weight: 700; }
    .faq-card p { font-size: 12px; color: var(--accent); margin: 0; line-height: 1.5; }

    /* --- MOBILE RESPONSIVE FIXES --- */
    @media (max-width: 800px) {
        .otechy-tool-wrapper { padding: 30px 15px; }
        .otechy-card { padding: 20px; }
        .input-grid { grid-template-columns: 1fr; gap: 15px; }
        .dashboard-grid { grid-template-columns: 1fr; gap: 15px; }
        .stat-card.hero { transform: none; }
        .vs-container { grid-template-columns: 1fr; gap: 15px; }
        .vs-row { flex-direction: column; align-items: flex-start; gap: 4px; }
        .vs-row b { text-align: left; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;

    &lt;div class=&quot;otechy-badge&quot;&gt;Crypto Wealth Toolkit &lt;span class=&quot;dynamic-year&quot;&gt;&lt;/span&gt;&lt;/div&gt;

    &lt;div class=&quot;tool-header&quot;&gt;
        &lt;h1&gt;
            &lt;span&gt;Ethereum&lt;/span&gt; Retirement Planner
        &lt;/h1&gt;
        &lt;p class=&quot;quick-value&quot;&gt;Simulate compounding ETH DCA, LTV borrowing power, and asset purchasing power based on conservative growth models.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 20px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT TOP&lt;/div&gt;

    &lt;div class=&quot;otechy-card&quot;&gt;
        
        &lt;div class=&quot;input-grid&quot;&gt;
            &lt;div class=&quot;input-section&quot;&gt;
                &lt;div class=&quot;section-title&quot;&gt;
                    &lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 320 512&quot; fill=&quot;currentColor&quot;&gt;&lt;path d=&quot;M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z&quot;/&gt;&lt;/svg&gt; 
                    1. Your Stack
                &lt;/div&gt;
                &lt;div class=&quot;input-group&quot;&gt;
                    &lt;label&gt;Current Ethereum Stack&lt;/label&gt;
                    &lt;div class=&quot;input-wrapper&quot;&gt;
                        &lt;input type=&quot;number&quot; id=&quot;inStack&quot; class=&quot;form-control no-prefix&quot; value=&quot;0.25&quot; step=&quot;0.1&quot; oninput=&quot;calculateRetirement()&quot;&gt;
                        &lt;span class=&quot;input-suffix&quot;&gt;ETH&lt;/span&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;input-group&quot;&gt;
                    &lt;label&gt;Monthly Buying (DCA)&lt;/label&gt;
                    &lt;div class=&quot;input-wrapper&quot;&gt;
                        &lt;span class=&quot;input-prefix&quot;&gt;$&lt;/span&gt;
                        &lt;input type=&quot;number&quot; id=&quot;inDCA&quot; class=&quot;form-control&quot; value=&quot;25&quot; oninput=&quot;calculateRetirement()&quot;&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;

            &lt;div class=&quot;input-section&quot;&gt;
                &lt;div class=&quot;section-title&quot;&gt;⏳ 2. Timeline&lt;/div&gt;
                &lt;div class=&quot;input-group&quot;&gt;
                    &lt;label&gt;Start Year&lt;/label&gt;
                    &lt;div class=&quot;input-wrapper&quot;&gt;
                        &lt;input type=&quot;number&quot; id=&quot;inStartYear&quot; class=&quot;form-control no-prefix&quot; value=&quot;2026&quot; min=&quot;2026&quot; max=&quot;2150&quot; oninput=&quot;calculateRetirement()&quot;&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;input-group&quot;&gt;
                    &lt;label&gt;Target Retirement Year&lt;/label&gt;
                    &lt;div class=&quot;input-wrapper&quot;&gt;
                        &lt;input type=&quot;number&quot; id=&quot;inRetireYear&quot; class=&quot;form-control no-prefix&quot; value=&quot;2046&quot; min=&quot;2027&quot; max=&quot;2150&quot; oninput=&quot;calculateRetirement()&quot;&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;

            &lt;div class=&quot;input-section&quot;&gt;
                &lt;div class=&quot;section-title&quot;&gt;📉 3. Fiat Expenses&lt;/div&gt;
                &lt;div class=&quot;input-group&quot;&gt;
                    &lt;label&gt;Current Annual Expenses&lt;/label&gt;
                    &lt;div class=&quot;input-wrapper&quot;&gt;
                        &lt;span class=&quot;input-prefix&quot;&gt;$&lt;/span&gt;
                        &lt;input type=&quot;number&quot; id=&quot;inExp&quot; class=&quot;form-control&quot; value=&quot;6000&quot; oninput=&quot;calculateRetirement()&quot;&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;input-group&quot;&gt;
                    &lt;label&gt;Fiat Inflation Rate&lt;/label&gt;
                    &lt;div class=&quot;input-wrapper&quot;&gt;
                        &lt;input type=&quot;number&quot; id=&quot;inInf&quot; class=&quot;form-control no-prefix&quot; value=&quot;2&quot; step=&quot;0.5&quot; oninput=&quot;calculateRetirement()&quot;&gt;
                        &lt;span class=&quot;input-suffix&quot;&gt;%&lt;/span&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;button class=&quot;btn-calc&quot; onclick=&quot;calculateRetirement()&quot;&gt;Calculate ETH Retirement&lt;/button&gt;

        &lt;div class=&quot;dashboard-grid&quot; style=&quot;margin-top: 30px;&quot;&gt;
            &lt;div class=&quot;stat-card&quot;&gt;
                &lt;div class=&quot;stat-label&quot;&gt;Total Stack at Retirement&lt;/div&gt;
                &lt;div class=&quot;stat-value&quot; id=&quot;outEth&quot;&gt;0.00 ETH&lt;/div&gt;
                &lt;div class=&quot;stat-sub&quot;&gt;Based on 5% ETH CAGR model&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;stat-card hero&quot;&gt;
                &lt;div class=&quot;stat-label&quot;&gt;Projected Fiat Net Worth&lt;/div&gt;
                &lt;div class=&quot;stat-value&quot; id=&quot;outFiat&quot;&gt;$0&lt;/div&gt;
                &lt;div class=&quot;stat-sub&quot;&gt;Value of your stack in target year&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;stat-card&quot;&gt;
                &lt;div class=&quot;stat-label&quot;&gt;Years of Savings&lt;/div&gt;
                &lt;div class=&quot;stat-value&quot; id=&quot;outYears&quot; style=&quot;color: var(--success);&quot;&gt;0 YRS&lt;/div&gt;
                &lt;div class=&quot;stat-sub&quot;&gt;Based on inflated annual expenses&lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;vs-container&quot;&gt;
            &lt;div class=&quot;vs-card&quot;&gt;
                &lt;div class=&quot;vs-header&quot;&gt;💵 Traditional Fiat Strategy&lt;/div&gt;
                &lt;div class=&quot;vs-row&quot;&gt;Total Fiat Invested: &lt;b id=&quot;vsTotalInvested&quot;&gt;$0&lt;/b&gt;&lt;/div&gt;
                &lt;div class=&quot;vs-row&quot;&gt;Annual Expenses (Inflated): &lt;b id=&quot;vsExpInflated&quot; style=&quot;color: #ef4444;&quot;&gt;$0&lt;/b&gt;&lt;/div&gt;
                &lt;div class=&quot;vs-row&quot;&gt;Purchasing Power Loss: &lt;b&gt;Continuous&lt;/b&gt;&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;vs-card&quot;&gt;
                &lt;div class=&quot;vs-header&quot;&gt;🏠 Asset Purchasing Power&lt;/div&gt;
                &lt;div class=&quot;vs-row&quot;&gt;Avg House Price in Target Yr: &lt;b id=&quot;vsHousePrice&quot;&gt;$0&lt;/b&gt;&lt;/div&gt;
                &lt;div class=&quot;vs-row&quot;&gt;ETH Required per House: &lt;b id=&quot;vsEthPerHouse&quot;&gt;0 ETH&lt;/b&gt;&lt;/div&gt;
                &lt;div class=&quot;vs-row&quot;&gt;Total Houses You Can Afford: &lt;b id=&quot;vsTotalHouses&quot; style=&quot;color: var(--success);&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;ltv-box&quot;&gt;
            &lt;h3&gt;🏦 Never Sell: 50% LTV Collateral Loan&lt;/h3&gt;
            &lt;p style=&quot;font-size: 13px; color: var(--accent); margin-bottom: 15px;&quot;&gt;Instead of selling your Ethereum and paying capital gains tax (or losing potential staking yield), you can borrow against it. If you take a conservative 50% LTV loan against your stack at retirement, here is your tax-free cash capacity:&lt;/p&gt;
            &lt;div class=&quot;ltv-result&quot; id=&quot;outLtvLoan&quot;&gt;$0&lt;/div&gt;
            &lt;div class=&quot;ltv-sub&quot;&gt;This loan covers &lt;strong id=&quot;outLtvYears&quot; style=&quot;color: var(--text-dark);&quot;&gt;0&lt;/strong&gt; years of your inflated living expenses.&lt;/div&gt;
        &lt;/div&gt;

        &lt;button class=&quot;btn-calc btn-pdf&quot; onclick=&quot;exportProPDF()&quot;&gt;
            Download Year-by-Year Ledger (PDF)
        &lt;/button&gt;

    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 30px 0; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;

    &lt;div class=&quot;geo-citation&quot;&gt;
        The fundamental shift in wealth planning is realizing that fiat currency depreciates while decentralized assets appreciate. This &lt;strong&gt;Ethereum Retirement Planner&lt;/strong&gt; models the mathematical reality of continuous Dollar Cost Averaging (DCA) into ETH. It features the popular &lt;strong&gt;50% LTV Collateral Loan strategy&lt;/strong&gt;, allowing you to borrow against your assets tax-free to fund your lifestyle without ever triggering a taxable sale.
    &lt;/div&gt;

    &lt;div class=&quot;faq-section&quot;&gt;
        &lt;h2 class=&quot;section-h2&quot;&gt;Frequently Asked Questions&lt;/h2&gt;
        &lt;div class=&quot;faq-grid&quot;&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;What is the 5% CAGR model?&lt;/h3&gt;&lt;p&gt;The tool uses a conservative Compound Annual Growth Rate (CAGR) of 5% for Ethereum&#39;s price trajectory starting at an estimated baseline of $2,100 in 2026 to project long-term compounding safely without hype.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Why are my &quot;Years of Savings&quot; going down initially?&lt;/h3&gt;&lt;p&gt;Because the tool calculates your annual living expenses adjusting for fiat inflation every year. If inflation outpaces your early accumulation, your purchasing power dips before the compounding takes over.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;What is a 50% LTV Loan?&lt;/h3&gt;&lt;p&gt;Loan-To-Value. Instead of selling Ethereum, you pledge it as collateral. A 50% LTV means if you have $1,000,000 in ETH, you can safely borrow $500,000 in cash without triggering capital gains taxes.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;How is the &quot;House Price&quot; calculated?&lt;/h3&gt;&lt;p&gt;We use a baseline house price of $105,540 in 2026, growing at a modest 0.1% hard-asset inflation rate. This helps measure your wealth in real tangible assets rather than just fiat numbers.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;What is Fiat Net Worth?&lt;/h3&gt;&lt;p&gt;It is the projected USD (or local fiat) value of your accumulated Ethereum stack at your target retirement year.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Is my data saved anywhere?&lt;/h3&gt;&lt;p&gt;No. OTechy tools run strictly in your browser via Client-Side JavaScript. Your financial data and projections are completely private.&lt;/p&gt;&lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 30px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;
    // --- 1. DYNAMIC ETHEREUM PRICE MODEL ---
    // Generates a 5% CAGR model starting at $2,100 in 2026.
    const ethPrices = {};
    let currentEthPrice = 2100.00;
    for(let y = 2026; y &lt;= 2150; y++) {
        ethPrices[y] = currentEthPrice;
        currentEthPrice *= 1.05; // 5% CAGR
    }

    let ledgerData = [];

    function formatCur(val) {
        return &quot;$&quot; + Math.round(val).toLocaleString();
    }

    function calculateRetirement() {
        const startYear = parseInt(document.getElementById(&#39;inStartYear&#39;).value) || 2026;
        const retireYear = parseInt(document.getElementById(&#39;inRetireYear&#39;).value) || 2046;
        const initialStack = parseFloat(document.getElementById(&#39;inStack&#39;).value) || 0;
        const monthlyBuy = parseFloat(document.getElementById(&#39;inDCA&#39;).value) || 0;
        const currentExp = parseFloat(document.getElementById(&#39;inExp&#39;).value) || 0;
        const infRate = parseFloat(document.getElementById(&#39;inInf&#39;).value) || 2;

        if (retireYear &lt; startYear) {
            alert(&quot;Retirement year must be after start year.&quot;);
            return;
        }

        let stack = initialStack;
        let totalFiatInvested = initialStack * (ethPrices[startYear] || 2100);
        ledgerData = [];
        
        let baseHousePrice = 105540.30; 

        for (let year = startYear; year &lt;= retireYear; year++) {
            let price = ethPrices[year] || ethPrices[&quot;2150&quot;]; 
            let yearlyBuy = monthlyBuy * 12;
            
            let ethAdded = yearlyBuy / price;
            if (year &gt; startYear) { 
                stack += ethAdded;
                totalFiatInvested += yearlyBuy;
            }
            
            let fiatValue = stack * price;
            
            let yearsElapsed = year - startYear;
            let inflatedExp = currentExp * Math.pow(1 + (infRate/100), yearsElapsed);
            let housePrice = baseHousePrice * Math.pow(1.001, yearsElapsed); 

            let yearsSavings = fiatValue / inflatedExp;
            
            ledgerData.push([
                year, 
                stack.toFixed(4) + &quot; ETH&quot;, 
                formatCur(price), 
                formatCur(totalFiatInvested), 
                formatCur(fiatValue), 
                yearsSavings.toFixed(1)
            ]);
        }

        let finalPrice = ethPrices[retireYear] || ethPrices[&quot;2150&quot;];
        let finalFiatValue = stack * finalPrice;
        let finalYearsElapsed = retireYear - startYear;
        let finalInflatedExp = currentExp * Math.pow(1 + (infRate/100), finalYearsElapsed);
        
        let yearsOfSavings = finalFiatValue / finalInflatedExp;
        let ltvAmount = finalFiatValue * 0.50; // 50% LTV
        let ltvYears = ltvAmount / finalInflatedExp;

        let finalHousePrice = baseHousePrice * Math.pow(1.001, finalYearsElapsed);
        let ethPerHouse = finalHousePrice / finalPrice;
        let totalHouses = stack / ethPerHouse;

        document.getElementById(&#39;outEth&#39;).innerText = stack.toFixed(4) + &quot; ETH&quot;;
        document.getElementById(&#39;outFiat&#39;).innerText = formatCur(finalFiatValue);
        document.getElementById(&#39;outYears&#39;).innerText = yearsOfSavings.toFixed(1) + &quot; YRS&quot;;

        document.getElementById(&#39;vsTotalInvested&#39;).innerText = formatCur(totalFiatInvested);
        document.getElementById(&#39;vsExpInflated&#39;).innerText = formatCur(finalInflatedExp);
        
        document.getElementById(&#39;vsHousePrice&#39;).innerText = formatCur(finalHousePrice);
        document.getElementById(&#39;vsEthPerHouse&#39;).innerText = ethPerHouse.toFixed(4) + &quot; ETH&quot;;
        document.getElementById(&#39;vsTotalHouses&#39;).innerText = totalHouses.toFixed(1);

        document.getElementById(&#39;outLtvLoan&#39;).innerText = formatCur(ltvAmount);
        document.getElementById(&#39;outLtvYears&#39;).innerText = ltvYears.toFixed(1);
    }

    function exportProPDF() {
        if(ledgerData.length === 0) return;
        
        const { jsPDF } = window.jspdf;
        const doc = new jsPDF(&#39;p&#39;, &#39;mm&#39;, &#39;a4&#39;);

        doc.setFillColor(98, 126, 234); // Ethereum Blue
        doc.rect(0, 0, 210, 25, &#39;F&#39;);
        doc.setTextColor(255); doc.setFontSize(18); doc.setFont(&quot;helvetica&quot;, &quot;bold&quot;);
        doc.text(&quot;OTechy Ethereum Retirement Ledger&quot;, 15, 17);
        doc.setFontSize(9); doc.setFont(&quot;helvetica&quot;, &quot;normal&quot;);
        doc.text(`GENERATED: ${new Date().toLocaleDateString()}`, 155, 17);

        doc.autoTable({ 
            startY: 35, 
            head: [[&#39;Year&#39;, &#39;Total Stack (ETH)&#39;, &#39;ETH Price&#39;, &#39;Total USD Invested&#39;, &#39;Fiat Net Worth&#39;, &#39;Years of Savings&#39;]], 
            body: ledgerData, 
            theme: &#39;grid&#39;, 
            headStyles: { fillColor: [30, 41, 59] }, 
            styles: { font: &#39;helvetica&#39;, fontSize: 9 },
            alternateRowStyles: { fillColor: [248, 250, 252] }
        });

        const finalY = doc.lastAutoTable.finalY + 15;
        doc.setFontSize(8); doc.setTextColor(100);
        doc.text(&quot;Disclaimer: Projections are based on mathematical models and do not constitute financial advice.&quot;, 15, finalY);

        doc.save(`Ethereum_Retirement_Plan_${new Date().getTime()}.pdf`);
    }

    document.addEventListener(&#39;DOMContentLoaded&#39;, () =&gt; {
        document.querySelectorAll(&#39;.dynamic-year&#39;).forEach(el =&gt; el.innerText = new Date().getFullYear());
        calculateRetirement();
    });
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/8331968154744339683'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/8331968154744339683'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/03/ethereum-retirement-calculator.html' title='Ethereum Retirement Calculator'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-394767150839135668</id><published>2026-03-27T01:26:00.000-07:00</published><updated>2026-03-28T08:56:26.557-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bitcoin Calculator"/><title type='text'>Bitcoin Retirement Calculator</title><content type='html'>&lt;title&gt;Bitcoin Retirement and Compounding Calculator | Real Retirement &amp; LTV Planner - OTechy&lt;/title&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
&lt;meta name=&quot;description&quot; content=&quot;Simulate your Bitcoin wealth over time. Calculate compounding DCA, 50% LTV collateral loans, fiat inflation, and real asset purchasing power. Download your Pro PDF plan.&quot;&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;bitcoin compounding calculator, bitcoin retirement planner, bitcoin DCA calculator, 50% LTV bitcoin loan, bitcoin purchasing power, crypto wealth tracker&quot;&gt;
&lt;meta property=&quot;og:title&quot; content=&quot;Bitcoin Compounding Calculator - OTechy&quot;&gt;
&lt;meta property=&quot;og:description&quot; content=&quot;Stop measuring wealth in depreciating fiat. Calculate your Bitcoin retirement, LTV borrowing power, and asset purchasing power.&quot;&gt;
&lt;meta property=&quot;og:type&quot; content=&quot;website&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;850&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.25/jspdf.plugin.autotable.min.js&quot;&gt;&lt;/script&gt;

&lt;style&gt;
    /* --- OTechy Design System --- */
    :root { 
        --primary: #f59e0b; /* Bitcoin Orange */
        --primary-dark: #d97706; 
        --text-dark: #1e293b; --accent: #64748b; 
        --bg: #f8fafc; --white: #fff; --border: #e2e8f0; 
        --success: #10b981; --safe-green: #dcfce7;
        --soft-orange: #fef3c7; --font-main: &#39;Poppins&#39;, sans-serif;
    }
    
    * { box-sizing: border-box; }
    body { background-color: var(--bg); font-family: var(--font-main); color: var(--text-dark); margin: 0; line-height: 1.6; }
    .otechy-tool-wrapper { max-width: 1000px; margin: 0 auto; padding: 60px 20px 20px; }
    
    .otechy-badge { display: table; margin: 0 auto 10px; background: var(--soft-orange); color: var(--primary-dark); padding: 6px 16px; border-radius: 50px; font-size: 11px; font-weight: 800; text-transform: uppercase; border: 1px solid #fde68a; }
    
    .tool-header { text-align: center; margin-bottom: 30px; }
    .tool-header h1 { font-size: clamp(24px, 5vw, 38px); font-weight: 850; color: var(--text-dark); margin: 0; display: flex; align-items: center; justify-content: center; gap: 10px; flex-wrap: wrap; text-align: center; }
    .tool-header h1 span { color: var(--primary); }
    .quick-value { color: var(--accent); font-weight: 600; font-size: 14px; margin-top: 5px; text-align: center; }
    
    /* Ads */
    .otechy-ad { background: #e2e8f0; color: #94a3b8; font-size: 10px; font-weight: 700; text-transform: uppercase; height: 90px; display: flex; align-items: center; justify-content: center; border-radius: 12px; margin: 25px 0; }

    /* Main Grid */
    .otechy-card { background: var(--white); padding: 30px; border-radius: 16px; border: 1px solid var(--border); box-shadow: 0 4px 15px rgba(0,0,0,0.03); margin-bottom: 30px; }
    
    .input-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin-bottom: 30px; }
    .input-section { background: #f8fafc; padding: 20px; border-radius: 12px; border: 1px solid var(--border); }
    .section-title { font-size: 13px; font-weight: 800; color: var(--text-dark); margin-bottom: 15px; text-transform: uppercase; display: flex; align-items: center; gap: 8px; }
    
    .input-group { margin-bottom: 15px; }
    .input-group label { font-size: 11px; font-weight: 700; color: var(--accent); display: block; margin-bottom: 6px; text-transform: uppercase; }
    .input-wrapper { position: relative; }
    .input-prefix { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--accent); font-weight: 600; font-size: 14px; }
    .input-suffix { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); color: var(--accent); font-weight: 600; font-size: 12px; }
    .form-control { width: 100%; padding: 12px 12px 12px 30px; border-radius: 8px; border: 1px solid #cbd5e1; font-family: var(--font-main); font-size: 14px; font-weight: 600; outline: none; transition: 0.2s; }
    .form-control.no-prefix { padding-left: 12px; }
    .form-control:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.1); }

    /* Dashboard Outputs */
    .dashboard-grid { display: grid; grid-template-columns: 1fr 1.5fr 1fr; gap: 15px; margin-bottom: 20px; }
    .stat-card { padding: 20px; border-radius: 12px; border: 1px solid var(--border); text-align: center; background: #fff; position: relative; overflow: hidden; }
    .stat-card.hero { background: var(--text-dark); border-color: #334155; transform: scale(1.02); z-index: 2; box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15); }
    .stat-label { font-size: 11px; font-weight: 800; color: var(--accent); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 5px; }
    .hero .stat-label { color: #94a3b8; }
    .stat-value { font-size: 28px; font-weight: 850; color: var(--text-dark); line-height: 1.2; word-break: break-word; }
    .hero .stat-value { color: var(--primary); font-size: 32px; }
    .stat-sub { font-size: 11px; color: var(--accent); margin-top: 5px; font-weight: 500; }
    .hero .stat-sub { color: #cbd5e1; }

    /* VS Comparison Container */
    .vs-container { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; margin-top: 25px; }
    .vs-card { padding: 20px; border-radius: 12px; border: 1px solid var(--border); background: #f8fafc; }
    .vs-header { font-size: 13px; font-weight: 800; color: var(--text-dark); margin-bottom: 15px; display: flex; align-items: center; gap: 8px; border-bottom: 1px solid var(--border); padding-bottom: 10px; }
    .vs-row { display: flex; justify-content: space-between; padding: 8px 0; font-size: 13px; font-weight: 500; color: var(--accent); border-bottom: 1px dashed #e2e8f0; }
    .vs-row b { color: var(--text-dark); font-weight: 700; text-align: right; }
    .vs-row:last-child { border-bottom: none; }

    /* LTV Box */
    .ltv-box { margin-top: 25px; border: 2px dashed var(--primary); border-radius: 12px; padding: 20px; background: #fff; text-align: center; }
    .ltv-box h3 { margin: 0 0 10px; font-size: 16px; color: var(--primary); }
    .ltv-result { font-size: 24px; font-weight: 850; color: var(--text-dark); word-break: break-word; }
    .ltv-sub { font-size: 12px; color: var(--accent); margin-top: 5px; font-weight: 500; }

    /* Buttons */
    .btn-calc { width: 100%; padding: 15px; background: var(--primary); color: #fff; font-size: 16px; font-weight: 800; border: none; border-radius: 10px; cursor: pointer; transition: 0.2s; font-family: var(--font-main); margin-top: 10px; }
    .btn-calc:hover { background: var(--primary-dark); transform: translateY(-2px); box-shadow: 0 5px 15px rgba(245, 158, 11, 0.2); }
    .btn-pdf { background: var(--text-dark); color: #fff; margin-top: 20px; }
    .btn-pdf:hover { background: #000; box-shadow: 0 5px 15px rgba(0,0,0,0.1); }

    /* Content Typography */
    .geo-citation { background: var(--white); padding: 25px; border-radius: 12px; border-left: 5px solid var(--primary); font-size: 14px; margin: 40px 0 20px; color: var(--text-dark); box-shadow: 0 4px 12px rgba(0,0,0,0.02); }
    .section-h2 { font-size: 22px; font-weight: 850; color: var(--text-dark); margin-bottom: 20px; }
    
    /* FAQ */
    .faq-section { margin-top: 60px; }
    .faq-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 15px; }
    .faq-card { background: var(--white); padding: 20px; border-radius: 12px; border: 1px solid var(--border); }
    .faq-card h3 { font-size: 14px; color: var(--text-dark); margin: 0 0 8px; font-weight: 700; }
    .faq-card p { font-size: 12px; color: var(--accent); margin: 0; line-height: 1.5; }

    /* --- MOBILE RESPONSIVE FIXES --- */
    @media (max-width: 800px) {
        .otechy-tool-wrapper { padding: 30px 15px; }
        .otechy-card { padding: 20px; }
        .input-grid { grid-template-columns: 1fr; gap: 15px; }
        .dashboard-grid { grid-template-columns: 1fr; gap: 15px; }
        .stat-card.hero { transform: none; }
        .vs-container { grid-template-columns: 1fr; gap: 15px; }
        .vs-row { flex-direction: column; align-items: flex-start; gap: 4px; }
        .vs-row b { text-align: left; }
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;

    &lt;div class=&quot;otechy-badge&quot;&gt;Crypto Wealth Toolkit &lt;span class=&quot;dynamic-year&quot;&gt;&lt;/span&gt;&lt;/div&gt;

    &lt;div class=&quot;tool-header&quot;&gt;
        &lt;h1&gt;
            &lt;span&gt;Bitcoin&lt;/span&gt; Retirement Planner
        &lt;/h1&gt;
        &lt;p class=&quot;quick-value&quot;&gt;Simulate compounding DCA, LTV borrowing power, and asset purchasing power based on data models.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 20px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT TOP&lt;/div&gt;

    &lt;div class=&quot;otechy-card&quot;&gt;
        
        &lt;div class=&quot;input-grid&quot;&gt;
            &lt;div class=&quot;input-section&quot;&gt;
                &lt;div class=&quot;section-title&quot;&gt;₿ 1. Your Stack&lt;/div&gt;
                &lt;div class=&quot;input-group&quot;&gt;
                    &lt;label&gt;Current Bitcoin Stack&lt;/label&gt;
                    &lt;div class=&quot;input-wrapper&quot;&gt;
                        &lt;input type=&quot;number&quot; id=&quot;inStack&quot; class=&quot;form-control no-prefix&quot; value=&quot;0.01&quot; step=&quot;0.01&quot; oninput=&quot;calculateRetirement()&quot;&gt;
                        &lt;span class=&quot;input-suffix&quot;&gt;BTC&lt;/span&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;input-group&quot;&gt;
                    &lt;label&gt;Monthly Buying (DCA)&lt;/label&gt;
                    &lt;div class=&quot;input-wrapper&quot;&gt;
                        &lt;span class=&quot;input-prefix&quot;&gt;$&lt;/span&gt;
                        &lt;input type=&quot;number&quot; id=&quot;inDCA&quot; class=&quot;form-control&quot; value=&quot;100&quot; oninput=&quot;calculateRetirement()&quot;&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;

            &lt;div class=&quot;input-section&quot;&gt;
                &lt;div class=&quot;section-title&quot;&gt;⏳ 2. Timeline&lt;/div&gt;
                &lt;div class=&quot;input-group&quot;&gt;
                    &lt;label&gt;Start Year&lt;/label&gt;
                    &lt;div class=&quot;input-wrapper&quot;&gt;
                        &lt;input type=&quot;number&quot; id=&quot;inStartYear&quot; class=&quot;form-control no-prefix&quot; value=&quot;2026&quot; min=&quot;2026&quot; max=&quot;2150&quot; oninput=&quot;calculateRetirement()&quot;&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;input-group&quot;&gt;
                    &lt;label&gt;Target Retirement Year&lt;/label&gt;
                    &lt;div class=&quot;input-wrapper&quot;&gt;
                        &lt;input type=&quot;number&quot; id=&quot;inRetireYear&quot; class=&quot;form-control no-prefix&quot; value=&quot;2046&quot; min=&quot;2027&quot; max=&quot;2150&quot; oninput=&quot;calculateRetirement()&quot;&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;

            &lt;div class=&quot;input-section&quot;&gt;
                &lt;div class=&quot;section-title&quot;&gt;📉 3. Fiat Expenses&lt;/div&gt;
                &lt;div class=&quot;input-group&quot;&gt;
                    &lt;label&gt;Current Annual Expenses&lt;/label&gt;
                    &lt;div class=&quot;input-wrapper&quot;&gt;
                        &lt;span class=&quot;input-prefix&quot;&gt;$&lt;/span&gt;
                        &lt;input type=&quot;number&quot; id=&quot;inExp&quot; class=&quot;form-control&quot; value=&quot;60000&quot; oninput=&quot;calculateRetirement()&quot;&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;input-group&quot;&gt;
                    &lt;label&gt;Fiat Inflation Rate&lt;/label&gt;
                    &lt;div class=&quot;input-wrapper&quot;&gt;
                        &lt;input type=&quot;number&quot; id=&quot;inInf&quot; class=&quot;form-control no-prefix&quot; value=&quot;2&quot; step=&quot;0.5&quot; oninput=&quot;calculateRetirement()&quot;&gt;
                        &lt;span class=&quot;input-suffix&quot;&gt;%&lt;/span&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;button class=&quot;btn-calc&quot; onclick=&quot;calculateRetirement()&quot;&gt;Calculate Retirement Projection&lt;/button&gt;

        &lt;div class=&quot;dashboard-grid&quot; style=&quot;margin-top: 30px;&quot;&gt;
            &lt;div class=&quot;stat-card&quot;&gt;
                &lt;div class=&quot;stat-label&quot;&gt;Total Stack at Retirement&lt;/div&gt;
                &lt;div class=&quot;stat-value&quot; id=&quot;outBtc&quot;&gt;0.00 BTC&lt;/div&gt;
                &lt;div class=&quot;stat-sub&quot;&gt;Based on 5% BTC CAGR model&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;stat-card hero&quot;&gt;
                &lt;div class=&quot;stat-label&quot;&gt;Projected Fiat Net Worth&lt;/div&gt;
                &lt;div class=&quot;stat-value&quot; id=&quot;outFiat&quot;&gt;$0&lt;/div&gt;
                &lt;div class=&quot;stat-sub&quot;&gt;Value of your stack in target year&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;stat-card&quot;&gt;
                &lt;div class=&quot;stat-label&quot;&gt;Years of Savings&lt;/div&gt;
                &lt;div class=&quot;stat-value&quot; id=&quot;outYears&quot; style=&quot;color: var(--success);&quot;&gt;0 YRS&lt;/div&gt;
                &lt;div class=&quot;stat-sub&quot;&gt;Based on inflated annual expenses&lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;vs-container&quot;&gt;
            &lt;div class=&quot;vs-card&quot;&gt;
                &lt;div class=&quot;vs-header&quot;&gt;💵 Traditional Fiat Strategy&lt;/div&gt;
                &lt;div class=&quot;vs-row&quot;&gt;Total Fiat Invested: &lt;b id=&quot;vsTotalInvested&quot;&gt;$0&lt;/b&gt;&lt;/div&gt;
                &lt;div class=&quot;vs-row&quot;&gt;Annual Expenses (Inflated): &lt;b id=&quot;vsExpInflated&quot; style=&quot;color: #ef4444;&quot;&gt;$0&lt;/b&gt;&lt;/div&gt;
                &lt;div class=&quot;vs-row&quot;&gt;Purchasing Power Loss: &lt;b&gt;Continuous&lt;/b&gt;&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;vs-card&quot;&gt;
                &lt;div class=&quot;vs-header&quot;&gt;🏠 Asset Purchasing Power&lt;/div&gt;
                &lt;div class=&quot;vs-row&quot;&gt;Avg House Price in Target Yr: &lt;b id=&quot;vsHousePrice&quot;&gt;$0&lt;/b&gt;&lt;/div&gt;
                &lt;div class=&quot;vs-row&quot;&gt;BTC Required per House: &lt;b id=&quot;vsBtcPerHouse&quot;&gt;0 BTC&lt;/b&gt;&lt;/div&gt;
                &lt;div class=&quot;vs-row&quot;&gt;Total Houses You Can Afford: &lt;b id=&quot;vsTotalHouses&quot; style=&quot;color: var(--success);&quot;&gt;0&lt;/b&gt;&lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;ltv-box&quot;&gt;
            &lt;h3&gt;🏦 Never Sell: 50% LTV Collateral Loan&lt;/h3&gt;
            &lt;p style=&quot;font-size: 13px; color: var(--accent); margin-bottom: 15px;&quot;&gt;Instead of selling your Bitcoin and paying capital gains tax, you can borrow against it. If you take a conservative 50% LTV loan against your stack at retirement, here is your tax-free cash capacity:&lt;/p&gt;
            &lt;div class=&quot;ltv-result&quot; id=&quot;outLtvLoan&quot;&gt;$0&lt;/div&gt;
            &lt;div class=&quot;ltv-sub&quot;&gt;This loan covers &lt;strong id=&quot;outLtvYears&quot; style=&quot;color: var(--text-dark);&quot;&gt;0&lt;/strong&gt; years of your inflated living expenses.&lt;/div&gt;
        &lt;/div&gt;

        &lt;button class=&quot;btn-calc btn-pdf&quot; onclick=&quot;exportProPDF()&quot;&gt;
            Download Year-by-Year Ledger (PDF)
        &lt;/button&gt;

    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 30px 0; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;

    &lt;div class=&quot;geo-citation&quot;&gt;
        The fundamental shift in wealth planning is realizing that fiat currency depreciates while scarce assets appreciate. This &lt;strong&gt;Bitcoin Retirement Planner&lt;/strong&gt; models the mathematical reality of continuous Dollar Cost Averaging (DCA) into a hard asset. It features the popular &lt;strong&gt;50% LTV Collateral Loan strategy&lt;/strong&gt;, commonly used by the wealthy, allowing you to borrow against your assets tax-free to fund your lifestyle without ever triggering a taxable sale.
    &lt;/div&gt;

    &lt;div class=&quot;faq-section&quot;&gt;
        &lt;h2 class=&quot;section-h2&quot;&gt;Frequently Asked Questions&lt;/h2&gt;
        &lt;div class=&quot;faq-grid&quot;&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;What is the 5% CAGR model?&lt;/h3&gt;&lt;p&gt;The tool uses a conservative Compound Annual Growth Rate (CAGR) of 5% for Bitcoin&#39;s price trajectory starting from 2026, extracted directly from standard financial projections.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Why are my &quot;Years of Savings&quot; going down initially?&lt;/h3&gt;&lt;p&gt;Because the tool calculates your annual living expenses adjusting for fiat inflation every year. If inflation outpaces your early stacking, your purchasing power dips before compounding takes over.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;What is a 50% LTV Loan?&lt;/h3&gt;&lt;p&gt;Loan-To-Value. Instead of selling Bitcoin, you pledge it as collateral. A 50% LTV means if you have $1,000,000 in BTC, you can safely borrow $500,000 in cash without triggering capital gains taxes.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;How is the &quot;House Price&quot; calculated?&lt;/h3&gt;&lt;p&gt;We use a baseline house price of $105,540 in 2026, growing at a modest 0.1% hard-asset inflation rate. This helps measure your wealth in real tangible assets rather than just fiat numbers.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;What is Fiat Net Worth?&lt;/h3&gt;&lt;p&gt;It is the projected USD (or local fiat) value of your accumulated Bitcoin stack at your target retirement year.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Is my data saved anywhere?&lt;/h3&gt;&lt;p&gt;No. OTechy tools run strictly in your browser via Client-Side JavaScript. Your financial data and projections are completely private.&lt;/p&gt;&lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

      &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 30px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;
    // --- 1. THE BITCOIN PRICE MODEL (5% CAGR from 2026 -&gt; 2150) ---
    const btcPrices = {&quot;2026&quot;: 68886.58, &quot;2027&quot;: 72330.91, &quot;2028&quot;: 75947.45, &quot;2029&quot;: 79744.83, &quot;2030&quot;: 83732.07, &quot;2031&quot;: 87918.67, &quot;2032&quot;: 92314.61, &quot;2033&quot;: 96930.34, &quot;2034&quot;: 101776.85, &quot;2035&quot;: 106865.7, &quot;2036&quot;: 112208.98, &quot;2037&quot;: 117819.43, &quot;2038&quot;: 123710.4, &quot;2039&quot;: 129895.92, &quot;2040&quot;: 136390.72, &quot;2041&quot;: 143210.25, &quot;2042&quot;: 150370.76, &quot;2043&quot;: 157889.3, &quot;2044&quot;: 165783.77, &quot;2045&quot;: 174072.96, &quot;2046&quot;: 182776.6, &quot;2047&quot;: 191915.43, &quot;2048&quot;: 201511.21, &quot;2049&quot;: 211586.77, &quot;2050&quot;: 222166.11, &quot;2051&quot;: 233274.41, &quot;2052&quot;: 244938.13, &quot;2053&quot;: 257185.04, &quot;2054&quot;: 270044.29, &quot;2055&quot;: 283546.5, &quot;2056&quot;: 297723.83, &quot;2057&quot;: 312610.02, &quot;2058&quot;: 328240.52, &quot;2059&quot;: 344652.55, &quot;2060&quot;: 361885.18, &quot;2061&quot;: 379979.43, &quot;2062&quot;: 398978.41, &quot;2063&quot;: 418927.33, &quot;2064&quot;: 439873.69, &quot;2065&quot;: 461867.38, &quot;2066&quot;: 484960.75, &quot;2067&quot;: 509208.78, &quot;2068&quot;: 534669.22, &quot;2069&quot;: 561402.68, &quot;2070&quot;: 589472.82, &quot;2071&quot;: 618946.46, &quot;2072&quot;: 649893.78, &quot;2073&quot;: 682388.47, &quot;2074&quot;: 716507.89, &quot;2075&quot;: 752333.29, &quot;2076&quot;: 789949.95, &quot;2077&quot;: 829447.45, &quot;2078&quot;: 870919.82, &quot;2079&quot;: 914465.81, &quot;2080&quot;: 960189.1, &quot;2081&quot;: 1008198.56, &quot;2082&quot;: 1058608.49, &quot;2083&quot;: 1111538.91, &quot;2084&quot;: 1167115.86, &quot;2085&quot;: 1225471.65, &quot;2086&quot;: 1286745.23, &quot;2087&quot;: 1351082.5, &quot;2088&quot;: 1418636.62, &quot;2089&quot;: 1489568.45, &quot;2090&quot;: 1564046.87, &quot;2091&quot;: 1642249.22, &quot;2092&quot;: 1724361.68, &quot;2093&quot;: 1810579.76, &quot;2094&quot;: 1901108.75, &quot;2095&quot;: 1996164.19, &quot;2096&quot;: 2095972.4, &quot;2097&quot;: 2200771.02, &quot;2098&quot;: 2310809.57, &quot;2099&quot;: 2426350.05, &quot;2100&quot;: 2547667.55, &quot;2101&quot;: 2675050.93, &quot;2102&quot;: 2808803.47, &quot;2103&quot;: 2949243.65, &quot;2104&quot;: 3096705.83, &quot;2105&quot;: 3251541.12, &quot;2106&quot;: 3414118.17, &quot;2107&quot;: 3584824.08, &quot;2108&quot;: 3764065.29, &quot;2109&quot;: 3952268.55, &quot;2110&quot;: 4149881.98, &quot;2111&quot;: 4357376.08, &quot;2112&quot;: 4575244.88, &quot;2113&quot;: 4804007.13, &quot;2114&quot;: 5044207.48, &quot;2115&quot;: 5296417.86, &quot;2116&quot;: 5561238.75, &quot;2117&quot;: 5839300.69, &quot;2118&quot;: 6131265.72, &quot;2119&quot;: 6437829.01, &quot;2120&quot;: 6759720.46, &quot;2121&quot;: 7097706.48, &quot;2122&quot;: 7452591.81, &quot;2123&quot;: 7825221.4, &quot;2124&quot;: 8216482.47, &quot;2125&quot;: 8627306.59, &quot;2126&quot;: 9058671.92, &quot;2127&quot;: 9511605.51, &quot;2128&quot;: 9987185.79, &quot;2129&quot;: 10486545.08, &quot;2130&quot;: 11010872.33, &quot;2131&quot;: 11561415.95, &quot;2132&quot;: 12139486.75, &quot;2133&quot;: 12746461.09, &quot;2134&quot;: 13383784.14, &quot;2135&quot;: 14052973.35, &quot;2136&quot;: 14755622.01, &quot;2137&quot;: 15493403.11, &quot;2138&quot;: 16268073.27, &quot;2139&quot;: 17081476.93, &quot;2140&quot;: 17935550.78, &quot;2141&quot;: 18832328.32, &quot;2142&quot;: 19773944.74, &quot;2143&quot;: 20762641.97, &quot;2144&quot;: 21800774.07, &quot;2145&quot;: 22890812.77, &quot;2146&quot;: 24035353.41, &quot;2147&quot;: 25237121.08, &quot;2148&quot;: 26498977.14, &quot;2149&quot;: 27823926.0, &quot;2150&quot;: 29215122.3};

    let ledgerData = [];

    function formatCur(val) {
        return &quot;$&quot; + Math.round(val).toLocaleString();
    }

    function calculateRetirement() {
        const startYear = parseInt(document.getElementById(&#39;inStartYear&#39;).value) || 2026;
        const retireYear = parseInt(document.getElementById(&#39;inRetireYear&#39;).value) || 2046;
        const initialStack = parseFloat(document.getElementById(&#39;inStack&#39;).value) || 0;
        const monthlyBuy = parseFloat(document.getElementById(&#39;inDCA&#39;).value) || 0;
        const currentExp = parseFloat(document.getElementById(&#39;inExp&#39;).value) || 0;
        const infRate = parseFloat(document.getElementById(&#39;inInf&#39;).value) || 2;

        if (retireYear &lt; startYear) {
            alert(&quot;Retirement year must be after start year.&quot;);
            return;
        }

        let stack = initialStack;
        let totalFiatInvested = initialStack * (btcPrices[startYear] || 68886.58);
        ledgerData = [];
        let baseHousePrice = 105540.30; 

        for (let year = startYear; year &lt;= retireYear; year++) {
            let price = btcPrices[year] || btcPrices[&quot;2150&quot;];
            let yearlyBuy = monthlyBuy * 12;
            
            let btcAdded = yearlyBuy / price;
            if (year &gt; startYear) { 
                stack += btcAdded;
                totalFiatInvested += yearlyBuy;
            }
            
            let fiatValue = stack * price;
            let yearsElapsed = year - startYear;
            let inflatedExp = currentExp * Math.pow(1 + (infRate/100), yearsElapsed);
            let housePrice = baseHousePrice * Math.pow(1.001, yearsElapsed); 
            let yearsSavings = fiatValue / inflatedExp;
            
            ledgerData.push([
                year, 
                stack.toFixed(4) + &quot; BTC&quot;, 
                formatCur(price), 
                formatCur(totalFiatInvested), 
                formatCur(fiatValue), 
                yearsSavings.toFixed(1)
            ]);
        }

        let finalPrice = btcPrices[retireYear] || btcPrices[&quot;2150&quot;];
        let finalFiatValue = stack * finalPrice;
        let finalYearsElapsed = retireYear - startYear;
        let finalInflatedExp = currentExp * Math.pow(1 + (infRate/100), finalYearsElapsed);
        
        let yearsOfSavings = finalFiatValue / finalInflatedExp;
        let ltvAmount = finalFiatValue * 0.50; 
        let ltvYears = ltvAmount / finalInflatedExp;

        let finalHousePrice = baseHousePrice * Math.pow(1.001, finalYearsElapsed);
        let btcPerHouse = finalHousePrice / finalPrice;
        let totalHouses = stack / btcPerHouse;

        document.getElementById(&#39;outBtc&#39;).innerText = stack.toFixed(4) + &quot; BTC&quot;;
        document.getElementById(&#39;outFiat&#39;).innerText = formatCur(finalFiatValue);
        document.getElementById(&#39;outYears&#39;).innerText = yearsOfSavings.toFixed(1) + &quot; YRS&quot;;

        document.getElementById(&#39;vsTotalInvested&#39;).innerText = formatCur(totalFiatInvested);
        document.getElementById(&#39;vsExpInflated&#39;).innerText = formatCur(finalInflatedExp);
        
        document.getElementById(&#39;vsHousePrice&#39;).innerText = formatCur(finalHousePrice);
        document.getElementById(&#39;vsBtcPerHouse&#39;).innerText = btcPerHouse.toFixed(4) + &quot; BTC&quot;;
        document.getElementById(&#39;vsTotalHouses&#39;).innerText = totalHouses.toFixed(1);

        document.getElementById(&#39;outLtvLoan&#39;).innerText = formatCur(ltvAmount);
        document.getElementById(&#39;outLtvYears&#39;).innerText = ltvYears.toFixed(1);
    }

    function exportProPDF() {
        if(ledgerData.length === 0) return;
        
        const { jsPDF } = window.jspdf;
        const doc = new jsPDF(&#39;p&#39;, &#39;mm&#39;, &#39;a4&#39;);

        doc.setFillColor(245, 158, 11); 
        doc.rect(0, 0, 210, 25, &#39;F&#39;);
        doc.setTextColor(255); doc.setFontSize(18); doc.setFont(&quot;helvetica&quot;, &quot;bold&quot;);
        doc.text(&quot;OTechy Bitcoin Retirement Ledger&quot;, 15, 17);
        doc.setFontSize(9); doc.setFont(&quot;helvetica&quot;, &quot;normal&quot;);
        doc.text(`GENERATED: ${new Date().toLocaleDateString()}`, 155, 17);

        doc.autoTable({ 
            startY: 35, 
            head: [[&#39;Year&#39;, &#39;Total Stack (BTC)&#39;, &#39;BTC Price&#39;, &#39;Total USD Invested&#39;, &#39;Fiat Net Worth&#39;, &#39;Years of Savings&#39;]], 
            body: ledgerData, 
            theme: &#39;grid&#39;, 
            headStyles: { fillColor: [30, 41, 59] }, 
            styles: { font: &#39;helvetica&#39;, fontSize: 9 },
            alternateRowStyles: { fillColor: [248, 250, 252] }
        });

        const finalY = doc.lastAutoTable.finalY + 15;
        doc.setFontSize(8); doc.setTextColor(100);
        doc.text(&quot;Disclaimer: Projections are based on mathematical models and do not constitute financial advice.&quot;, 15, finalY);

        doc.save(`Bitcoin_Retirement_Plan_${new Date().getTime()}.pdf`);
    }

    document.addEventListener(&#39;DOMContentLoaded&#39;, () =&gt; {
        document.querySelectorAll(&#39;.dynamic-year&#39;).forEach(el =&gt; el.innerText = new Date().getFullYear());
        calculateRetirement();
    });
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/394767150839135668'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/394767150839135668'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/03/bitcoin-retirement-calculator.html' title='Bitcoin Retirement Calculator'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-1825645095496577127</id><published>2026-03-22T07:05:33.516-07:00</published><updated>2026-03-22T07:05:33.517-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Date Calculator"/><title type='text'>Date Calculator to Add or Subtract Online</title><content type='html'>&lt;title&gt;Premium Date Calculator Online | Add/Subtract Business Days - OTechy&lt;/title&gt;
&lt;meta name=&quot;description&quot; content=&quot;Calculate future or past dates instantly. Add or subtract calendar days or business days (excluding weekends). Generate SLA deadlines and download Pro PDF reports.&quot;&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;date calculator online, add days to date, 90 days from today, business day calculator, working days calculator, SLA deadline calculator India, date math tool&quot;&gt;
&lt;meta property=&quot;og:title&quot; content=&quot;Premium Date Calculator Online - OTechy&quot;&gt;
&lt;meta property=&quot;og:description&quot; content=&quot;The most advanced free date calculator. Calculate business days, add/subtract time, and track project milestones.&quot;&gt;
&lt;meta property=&quot;og:type&quot; content=&quot;website&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700;850&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/luxon/3.4.4/luxon.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.25/jspdf.plugin.autotable.min.js&quot;&gt;&lt;/script&gt;

&lt;style&gt;
    /* --- OTechy Design System --- */
    :root { --primary: #3b82f6; --text-dark: #1e293b; --accent: #64748b; --border: #e2e8f0; --white: #ffffff; }
    .otechy-tool-wrapper { font-family: &#39;Poppins&#39;, sans-serif; max-width: 900px; margin: 0 auto; padding: 80px 20px 20px; color: var(--text-dark); line-height: 1.6; }
    @media (max-width: 768px) { .otechy-tool-wrapper { padding: 40px 15px 15px !important; } }
    
    .tool-header { text-align: center; margin-bottom: 30px; }
    .otechy-badge { display: table; margin: 0 auto 10px; background: #eff6ff; color: var(--primary); padding: 5px 15px; border-radius: 50px; font-size: 11px; font-weight: 800; text-transform: uppercase; border: 1px solid #dbeafe; }
    .tool-header h1 { font-size: clamp(24px, 5vw, 36px); font-weight: 850; color: var(--primary); letter-spacing: -0.5px; display: flex; align-items: center; justify-content: center; gap: 10px; }
    .quick-value { color: var(--accent); font-size: 14px; margin-top: 5px; }
    
    .tool-navigation { display: flex; justify-content: center; gap: 10px; margin-bottom: 25px; }
    .nav-link { font-size: 11px; font-weight: 700; color: var(--accent); text-decoration: none; padding: 6px 15px; border: 1px solid var(--border); border-radius: 8px; transition: 0.3s; }
    .nav-link:hover { color: var(--primary); border-color: var(--primary); }
    
    .otechy-card { background: var(--white); padding: 30px; border-radius: 12px; border: 1px solid var(--border); box-shadow: 0 4px 12px rgba(0,0,0,0.05); }
    
    .settings-bar { display: grid; grid-template-columns: 1fr 1fr 1.5fr; gap: 15px; background: #f8fafc; padding: 20px; border-radius: 10px; margin-bottom: 20px; border: 1px solid var(--border); align-items: end; }
    .input-group label { font-size: 11px; font-weight: 800; color: var(--accent); text-transform: uppercase; display: block; margin-bottom: 5px; }
    .input-group select, .input-group input { width: 100%; padding: 12px; border-radius: 8px; border: 1px solid var(--border); font-family: &#39;Poppins&#39;; font-size: 14px; outline: none; }
    .input-group input:focus, .input-group select:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); }
    
    .vs-container { display: grid; grid-template-columns: 1fr 1.5fr; gap: 15px; margin-top: 20px; }
    .vs-card { padding: 20px; border-radius: 12px; border: 1px solid var(--border); position: relative; }
    .vs-card.original { border-bottom: 4px solid var(--primary); }
    .vs-card.converted { border-bottom: 4px solid var(--text-dark); background: #f8fafc; text-align: center; display: flex; flex-direction: column; justify-content: center; }
    .file-tag { position: absolute; top: 10px; left: 10px; font-size: 8px; font-weight: 900; background: #eff6ff; color: var(--primary); padding: 4px 10px; border-radius: 4px; text-transform: uppercase; }
    
    .audit-details { margin-top: 25px; }
    .audit-row { display: flex; justify-content: space-between; font-size: 13px; padding: 8px 0; border-bottom: 1px dashed #e2e8f0; }
    .audit-row b { color: var(--primary); }
    
    .total-display { text-align: center; margin-top: 15px; }
    .target-day-name { font-size: 14px; font-weight: 700; color: var(--accent); text-transform: uppercase; letter-spacing: 1px; margin-bottom: 5px; }
    .total-display h2 { font-size: clamp(24px, 4vw, 32px); font-weight: 850; color: var(--primary); margin: 0 0 15px 0; line-height: 1.2; }
    
    .otechy-btn { border: none; font-weight: 700; cursor: pointer; transition: 0.3s; display: flex; align-items: center; justify-content: center; gap: 8px; font-family: &#39;Poppins&#39;; }
    .btn-pdf { background: var(--text-dark); color: #fff; padding: 14px; border-radius: 8px; width: 100%; font-size: 13px; }
    .btn-pdf:hover { background: #000; transform: translateY(-2px); box-shadow: 0 4px 10px rgba(0,0,0,0.1); }
    .btn-outline { background: transparent; border: 1px solid var(--border); color: var(--accent); padding: 12px; border-radius: 10px; }
    .btn-outline:hover { border-color: var(--primary); color: var(--primary); background: #eff6ff; }
    
    .ledger-container { display: none; margin-top: 20px; overflow-x: auto; border: 1px solid var(--border); border-radius: 10px; }
    table { width: 100%; border-collapse: collapse; min-width: 450px; font-size: 13px; text-align: left; }
    th { background: #f8fafc; padding: 15px; color: var(--text-dark); font-size: 11px; text-transform: uppercase; border-bottom: 2px solid var(--border); }
    td { padding: 12px 15px; border-bottom: 1px solid var(--border); }
    tr:last-child td { border-bottom: none; }
    .milestone-row { background: #f0fdf4; font-weight: 700; color: #166534; }
    
    .geo-citation { background: #f1f5f9; padding: 20px; border-radius: 10px; border-left: 5px solid var(--primary); font-size: 14px; margin: 40px 0; color: var(--text-dark); }
    .how-to h3 { text-align: center; font-weight: 850; margin-bottom: 25px; }
    .step { display: flex; gap: 15px; background: #fff; padding: 15px; border-radius: 10px; border: 1px solid var(--border); margin-bottom: 10px; }
    .step-icon { background: var(--soft-blue); color: var(--primary); width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 800; flex-shrink: 0; }
    
    .faq-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; }
    .faq-card { background: #fff; padding: 20px; border-radius: 10px; border: 1px solid var(--border); }
    .faq-card h3 { font-size: 14px; color: var(--primary); margin-bottom: 8px; font-weight: 700; }
    .faq-card p { font-size: 12px; color: var(--accent); margin: 0; }
    
    @media (max-width: 768px) { 
        .settings-bar { grid-template-columns: 1fr; gap: 10px; } 
        .vs-container, .faq-grid { grid-template-columns: 1fr; } 
    }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;
    &lt;div class=&quot;tool-header&quot;&gt;
        &lt;div class=&quot;otechy-badge&quot;&gt;Time &amp; Date Suite &lt;span class=&quot;dynamic-year&quot;&gt;&lt;/span&gt;&lt;/div&gt;
        &lt;h1&gt;
            Premium Date Calculator
            &lt;svg width=&quot;28&quot; height=&quot;28&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; style=&quot;vertical-align: middle;&quot;&gt;&lt;rect x=&quot;3&quot; y=&quot;4&quot; width=&quot;18&quot; height=&quot;18&quot; rx=&quot;2&quot; ry=&quot;2&quot;&gt;&lt;/rect&gt;&lt;line x1=&quot;16&quot; y1=&quot;2&quot; x2=&quot;16&quot; y2=&quot;6&quot;&gt;&lt;/line&gt;&lt;line x1=&quot;8&quot; y1=&quot;2&quot; x2=&quot;8&quot; y2=&quot;6&quot;&gt;&lt;/line&gt;&lt;line x1=&quot;3&quot; y1=&quot;10&quot; x2=&quot;21&quot; y2=&quot;10&quot;&gt;&lt;/line&gt;&lt;/svg&gt;
        &lt;/h1&gt;
        &lt;p class=&quot;quick-value&quot;&gt;Calculate future deadlines, SLAs, and project milestones instantly.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;tool-navigation&quot;&gt;
        &lt;a href=&quot;https://www.otechy.com/p/search.html?q=age&quot; class=&quot;nav-link&quot;&gt;Age Calculator&lt;/a&gt;
        &lt;a href=&quot;https://www.otechy.com/p/search.html?q=timezone&quot; class=&quot;nav-link&quot;&gt;Timezone Converter&lt;/a&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 20px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT TOP&lt;/div&gt;

    &lt;div class=&quot;otechy-card&quot;&gt;
        &lt;div class=&quot;settings-bar&quot;&gt;
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Base Date&lt;/label&gt;
                &lt;input type=&quot;date&quot; id=&quot;baseDate&quot; onchange=&quot;calculateDate()&quot;&gt;
            &lt;/div&gt;
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Operation&lt;/label&gt;
                &lt;select id=&quot;operation&quot; onchange=&quot;calculateDate()&quot;&gt;
                    &lt;option value=&quot;ADD&quot;&gt;Add (+)&lt;/option&gt;
                    &lt;option value=&quot;SUB&quot;&gt;Subtract (-)&lt;/option&gt;
                &lt;/select&gt;
            &lt;/div&gt;
            &lt;div class=&quot;input-group&quot;&gt;
                &lt;label&gt;Number of Days&lt;/label&gt;
                &lt;div style=&quot;display: flex; gap: 10px;&quot;&gt;
                    &lt;input type=&quot;number&quot; id=&quot;numDays&quot; value=&quot;30&quot; min=&quot;0&quot; oninput=&quot;calculateDate()&quot; style=&quot;flex: 1;&quot;&gt;
                    &lt;select id=&quot;dayType&quot; onchange=&quot;calculateDate()&quot; style=&quot;flex: 1.5;&quot;&gt;
                        &lt;option value=&quot;CALENDAR&quot;&gt;Calendar Days&lt;/option&gt;
                        &lt;option value=&quot;BUSINESS&quot;&gt;Business Days (Skip Weekends)&lt;/option&gt;
                    &lt;/select&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;vs-container&quot;&gt;
            &lt;div class=&quot;vs-card original&quot;&gt;
                &lt;div class=&quot;file-tag&quot;&gt;Input Summary&lt;/div&gt;
                &lt;div class=&quot;audit-details&quot;&gt;
                    &lt;div class=&quot;audit-row&quot;&gt;&lt;span&gt;Start Date:&lt;/span&gt; &lt;b id=&quot;sum-start&quot;&gt;--&lt;/b&gt;&lt;/div&gt;
                    &lt;div class=&quot;audit-row&quot;&gt;&lt;span&gt;Action:&lt;/span&gt; &lt;b id=&quot;sum-action&quot;&gt;--&lt;/b&gt;&lt;/div&gt;
                    &lt;div class=&quot;audit-row&quot;&gt;&lt;span&gt;Days Count:&lt;/span&gt; &lt;b id=&quot;sum-days&quot;&gt;--&lt;/b&gt;&lt;/div&gt;
                    &lt;div class=&quot;audit-row&quot;&gt;&lt;span&gt;Logic Mode:&lt;/span&gt; &lt;b id=&quot;sum-mode&quot;&gt;--&lt;/b&gt;&lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;vs-card converted&quot;&gt;
                &lt;div class=&quot;file-tag&quot;&gt;Target Date Result&lt;/div&gt;
                &lt;div class=&quot;total-display&quot;&gt;
                    &lt;div class=&quot;target-day-name&quot; id=&quot;res-dayname&quot;&gt;--&lt;/div&gt;
                    &lt;h2 id=&quot;res-targetdate&quot;&gt;--&lt;/h2&gt;
                &lt;/div&gt;
                &lt;button class=&quot;otechy-btn btn-pdf&quot; onclick=&quot;exportProPDF()&quot;&gt;
                    &lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;path d=&quot;M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3&quot;/&gt;&lt;/svg&gt;
                    Download Project Timeline PDF
                &lt;/button&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;button class=&quot;otechy-btn btn-outline&quot; style=&quot;width: 100%; margin-top: 20px;&quot; onclick=&quot;toggleLedger()&quot;&gt;View Milestone Timeline&lt;/button&gt;
        &lt;div class=&quot;ledger-container&quot; id=&quot;ledger-box&quot;&gt;
            &lt;table&gt;
                &lt;thead&gt;
                    &lt;tr&gt;&lt;th&gt;Milestone&lt;/th&gt;&lt;th&gt;Percentage&lt;/th&gt;&lt;th&gt;Date Reached&lt;/th&gt;&lt;/tr&gt;
                &lt;/thead&gt;
                &lt;tbody id=&quot;ledger-body&quot;&gt;&lt;/tbody&gt;
            &lt;/table&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 30px 0; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT MIDDLE&lt;/div&gt;

    &lt;div class=&quot;geo-citation&quot;&gt;
        For businesses operating in &lt;strong&gt;Bharat&lt;/strong&gt;, strict adherence to Service Level Agreements (SLAs) and contract timelines is critical. OTechy&#39;s &lt;strong&gt;Premium Date Calculator&lt;/strong&gt; automatically factors in leap years and provides an exclusive &lt;strong&gt;Business Day&lt;/strong&gt; mode, allowing you to seamlessly skip Saturdays and Sundays when calculating delivery dates, notice periods, or legal deadlines.
    &lt;/div&gt;

    &lt;div class=&quot;how-to&quot;&gt;
        &lt;h3&gt;How to use the Date Calculator Online&lt;/h3&gt;
        &lt;div class=&quot;step&quot;&gt;
            &lt;div class=&quot;step-icon&quot;&gt;1&lt;/div&gt;
            &lt;p&gt;&lt;strong&gt;Set Base Date:&lt;/strong&gt; The tool defaults to today&#39;s date, but you can select any date in the past or future as your starting point.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;step&quot;&gt;
            &lt;div class=&quot;step-icon&quot;&gt;2&lt;/div&gt;
            &lt;p&gt;&lt;strong&gt;Enter Days &amp; Mode:&lt;/strong&gt; Enter the number of days (e.g., 30, 90, 180). Choose &quot;Calendar Days&quot; for exact date math, or &quot;Business Days&quot; to skip weekends.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;step&quot;&gt;
            &lt;div class=&quot;step-icon&quot;&gt;3&lt;/div&gt;
            &lt;p&gt;&lt;strong&gt;Export Timeline:&lt;/strong&gt; Open the &quot;Milestone Timeline&quot; to see 25%, 50%, and 75% progress markers, and download the full report as a PDF.&lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div style=&quot;margin-top: 60px;&quot;&gt;
        &lt;h3 style=&quot;font-size: 20px; color: #1e293b; margin-bottom: 20px; font-weight: 850;&quot;&gt;Frequently Asked Questions&lt;/h3&gt;
        &lt;div class=&quot;faq-grid&quot;&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;What are &quot;Business Days&quot;?&lt;/h3&gt;&lt;p&gt;Business days are standard working days (Monday through Friday). If you select this mode, the calculator automatically skips weekends when counting the target date.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Does it account for Leap Years?&lt;/h3&gt;&lt;p&gt;Yes. Our advanced engine automatically accounts for leap years (29 days in February) when adding or subtracting dates across multiple years.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Can I subtract days?&lt;/h3&gt;&lt;p&gt;Absolutely. Change the operation dropdown from &quot;Add&quot; to &quot;Subtract&quot; to calculate past dates (e.g., finding out what date was 60 days ago).&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;What is the Milestone Timeline?&lt;/h3&gt;&lt;p&gt;The timeline breaks your total timeframe into quarters (25%, 50%, 75%, 100%). This is highly useful for tracking project progress and deadlines.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Is the PDF Export free?&lt;/h3&gt;&lt;p&gt;Yes, all OTechy tools, including the Pro PDF generator, are 100% free and run entirely in your browser for maximum privacy.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Does it include public holidays?&lt;/h3&gt;&lt;p&gt;Currently, the &quot;Business Days&quot; logic only excludes weekends (Saturdays and Sundays). Official regional public holidays are not excluded as they vary by state.&lt;/p&gt;&lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 30px; height: 90px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1; font-weight: 700; font-size: 10px;&quot;&gt;AD SLOT BOTTOM&lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
    // --- Initialize ---
    document.addEventListener(&#39;DOMContentLoaded&#39;, () =&gt; { 
        document.querySelectorAll(&#39;.dynamic-year&#39;).forEach(el =&gt; el.innerText = new Date().getFullYear());
        
        // Set default date to today using Luxon
        const today = luxon.DateTime.now().toISODate();
        document.getElementById(&#39;baseDate&#39;).value = today;
        
        calculateDate(); 
    });

    let timelineData = [];
    let reportData = {};

    function calculateDate() {
        const DateTime = luxon.DateTime;
        
        const baseDateStr = document.getElementById(&#39;baseDate&#39;).value;
        const op = document.getElementById(&#39;operation&#39;).value;
        const numDaysRaw = parseInt(document.getElementById(&#39;numDays&#39;).value);
        const numDays = isNaN(numDaysRaw) ? 0 : numDaysRaw;
        const dayType = document.getElementById(&#39;dayType&#39;).value;
        
        if(!baseDateStr) return;

        let baseDate = DateTime.fromISO(baseDateStr);
        let targetDate = baseDate;

        // Math Logic
        if (dayType === &#39;CALENDAR&#39;) {
            if (op === &#39;ADD&#39;) {
                targetDate = baseDate.plus({ days: numDays });
            } else {
                targetDate = baseDate.minus({ days: numDays });
            }
        } else {
            // Business Days Logic
            let daysAdded = 0;
            let direction = (op === &#39;ADD&#39;) ? 1 : -1;
            
            while (daysAdded &lt; numDays) {
                targetDate = targetDate.plus({ days: direction });
                // 1 = Monday, 7 = Sunday. Keep if &lt;= 5
                if (targetDate.weekday &lt;= 5) {
                    daysAdded++;
                }
            }
        }

        // Update Summary Card
        document.getElementById(&#39;sum-start&#39;).innerText = baseDate.toFormat(&#39;dd MMM yyyy&#39;);
        document.getElementById(&#39;sum-action&#39;).innerText = (op === &#39;ADD&#39;) ? &#39;Added&#39; : &#39;Subtracted&#39;;
        document.getElementById(&#39;sum-days&#39;).innerText = numDays;
        document.getElementById(&#39;sum-mode&#39;).innerText = (dayType === &#39;CALENDAR&#39;) ? &#39;Calendar Days&#39; : &#39;Business Days Only&#39;;

        // Update Target Card
        document.getElementById(&#39;res-dayname&#39;).innerText = targetDate.toFormat(&#39;EEEE&#39;); // Full day name
        document.getElementById(&#39;res-targetdate&#39;).innerText = targetDate.toFormat(&#39;dd MMM yyyy&#39;);

        // Store for PDF
        reportData = {
            start: baseDate.toFormat(&#39;dd MMM yyyy&#39;),
            action: (op === &#39;ADD&#39;) ? &#39;+&#39; : &#39;-&#39;,
            days: numDays,
            mode: (dayType === &#39;CALENDAR&#39;) ? &#39;Calendar Days&#39; : &#39;Business Days&#39;,
            targetDay: targetDate.toFormat(&#39;EEEE&#39;),
            targetDate: targetDate.toFormat(&#39;dd MMM yyyy&#39;)
        };

        generateTimeline(baseDate, numDays, op, dayType);
    }

    function generateTimeline(baseDate, totalDays, op, dayType) {
        const ledgerBody = document.getElementById(&#39;ledger-body&#39;);
        ledgerBody.innerHTML = &#39;&#39;;
        timelineData = [];

        if (totalDays === 0) return;

        const milestones = [
            { label: &#39;Project Kickoff&#39;, pct: 0 },
            { label: &#39;First Quarter Review&#39;, pct: 25 },
            { label: &#39;Mid-Point&#39;, pct: 50 },
            { label: &#39;Final Polish&#39;, pct: 75 },
            { label: &#39;Final Deadline&#39;, pct: 100 }
        ];

        milestones.forEach((m, index) =&gt; {
            let daysToApply = Math.round(totalDays * (m.pct / 100));
            let mDate = baseDate;

            if (dayType === &#39;CALENDAR&#39;) {
                if (op === &#39;ADD&#39;) mDate = baseDate.plus({ days: daysToApply });
                else mDate = baseDate.minus({ days: daysToApply });
            } else {
                let daysAdded = 0;
                let direction = (op === &#39;ADD&#39;) ? 1 : -1;
                while (daysAdded &lt; daysToApply) {
                    mDate = mDate.plus({ days: direction });
                    if (mDate.weekday &lt;= 5) daysAdded++;
                }
            }

            const isFinal = (m.pct === 100);
            const rowClass = isFinal ? &#39;class=&quot;milestone-row&quot;&#39; : &#39;&#39;;
            const dateStr = mDate.toFormat(&#39;EEEE, dd MMM yyyy&#39;);

            ledgerBody.innerHTML += `&lt;tr ${rowClass}&gt;&lt;td&gt;${m.label}&lt;/td&gt;&lt;td&gt;${m.pct}%&lt;/td&gt;&lt;td&gt;${dateStr}&lt;/td&gt;&lt;/tr&gt;`;
            timelineData.push([m.label, `${m.pct}%`, dateStr]);
        });
    }

    function toggleLedger() { 
        const lb = document.getElementById(&#39;ledger-box&#39;); 
        lb.style.display = (lb.style.display === &#39;block&#39;) ? &#39;none&#39; : &#39;block&#39;; 
    }

    function exportProPDF() {
        const { jsPDF } = window.jspdf;
        const doc = new jsPDF(&#39;p&#39;, &#39;mm&#39;, &#39;a4&#39;);

        // Header
        doc.setFillColor(59, 130, 246); doc.rect(0, 0, 210, 25, &#39;F&#39;);
        doc.setTextColor(255); doc.setFontSize(18); doc.text(&quot;OTechy Project Timeline Report&quot;, 15, 17);
        doc.setFontSize(9); doc.text(`GENERATED: ${new Date().toLocaleDateString()}`, 155, 17);

        // Summary Box
        doc.setTextColor(30); doc.setFontSize(12); doc.setFont(&quot;helvetica&quot;, &quot;bold&quot;);
        doc.text(&quot;Calculation Summary&quot;, 15, 40);
        
        doc.setFontSize(10); doc.setFont(&quot;helvetica&quot;, &quot;normal&quot;);
        doc.text(`Base Date: ${reportData.start}`, 15, 50);
        doc.text(`Adjustment: ${reportData.action} ${reportData.days} Days (${reportData.mode})`, 15, 57);
        
        doc.setFont(&quot;helvetica&quot;, &quot;bold&quot;);
        doc.setTextColor(59, 130, 246);
        doc.text(`Target Deadline: ${reportData.targetDay}, ${reportData.targetDate}`, 15, 66);

        // Timeline Table
        if (timelineData.length &gt; 0) {
            doc.autoTable({ 
                startY: 75, 
                head: [[&#39;Milestone Stage&#39;, &#39;Progress&#39;, &#39;Scheduled Date&#39;]], 
                body: timelineData, 
                theme: &#39;grid&#39;, 
                headStyles: { fillColor: [30, 41, 59] }, 
                styles: { font: &#39;helvetica&#39;, fontSize: 9 },
                didParseCell: function (data) {
                    if (data.row.index === timelineData.length - 1) {
                        data.cell.styles.fontStyle = &#39;bold&#39;;
                        data.cell.styles.textColor = [22, 101, 52]; // Dark green for final row
                    }
                }
            });
        }

        // Footer
        doc.setFillColor(248, 250, 252); doc.rect(0, 280, 210, 17, &#39;F&#39;);
        doc.setFontSize(8); doc.setTextColor(100); doc.setFont(&quot;helvetica&quot;, &quot;normal&quot;);
        doc.text(&quot;Generated by OTechy.com - Premium Productivity Tools.&quot;, 15, 287);
        
        doc.save(`Timeline_Report_${new Date().getTime()}.pdf`);
    }
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/1825645095496577127'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/1825645095496577127'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/03/date-calculator-to-add-or-subtract.html' title='Date Calculator to Add or Subtract Online'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-973256772968157174</id><published>2026-02-11T10:39:00.000-08:00</published><updated>2026-02-11T10:39:35.124-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Base64 Decoder"/><category scheme="http://www.blogger.com/atom/ns#" term="Base64 Encoder"/><title type='text'>Base64 Encoder &amp; Decoder Online</title><content type='html'>&lt;title&gt;Base64 Encoder &amp; Decoder Online | Image to Data URI Converter - OTechy&lt;/title&gt;
&lt;meta name=&quot;description&quot; content=&quot;Convert text or files to Base64 instantly. Decode Base64 strings, generate Data URIs for images (HTML/CSS), and download results. Secure client-side tool.&quot;&gt;
&lt;meta name=&quot;keywords&quot; content=&quot;base64 encoder, base64 decoder, image to base64, data uri generator, decode base64 to text, base64 converter online, file to base64&quot;&gt;
&lt;meta property=&quot;og:title&quot; content=&quot;Base64 Crypto Studio - OTechy&quot;&gt;
&lt;meta property=&quot;og:description&quot; content=&quot;Securely encode text and files to Base64 string formats directly in your browser.&quot;&gt;
&lt;meta property=&quot;og:type&quot; content=&quot;website&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;850&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css&quot;&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;https://cdn.jsdelivr.net/npm/toastify-js&quot;&gt;&lt;/script&gt;

&lt;style&gt;
    /* --- OTechy Design System (Inherited) --- */
    :root { 
        --primary: #3b82f6; --text-dark: #1e293b; --accent: #64748b; 
        --bg: #f8fafc; --white: #fff; --border: #e2e8f0; 
        --soft-blue: #f0f7ff; --success: #10b981; --safe-green: #dcfce7; 
        --safe-text: #166534; --font-main: &#39;Poppins&#39;, sans-serif;
    }
    
    * { box-sizing: border-box; }
    body { background-color: var(--bg); font-family: var(--font-main); color: var(--text-dark); margin: 0; line-height: 1.6; }
    .otechy-tool-wrapper { max-width: 1000px; margin: 0 auto; padding: 80px 20px 20px; }
    
    .otechy-badge { display: table; margin: 0 auto 10px; background: #eff6ff; color: var(--primary); padding: 6px 16px; border-radius: 50px; font-size: 11px; font-weight: 800; text-transform: uppercase; border: 1px solid #dbeafe; }
    
    /* Header */
    .tool-header { text-align: center; margin-bottom: 30px; }
    .tool-header h1 { 
        font-size: clamp(24px, 5vw, 42px); font-weight: 850; color: var(--primary); margin: 0; 
        display: flex; align-items: center; justify-content: center; gap: 10px; flex-wrap: wrap; text-align: center; 
    }
    .quick-value { color: var(--primary); font-weight: 600; font-size: 14px; margin-top: 5px; text-align: center; }
    
    /* Nav */
    .tool-navigation { display: flex; justify-content: center; gap: 10px; margin-bottom: 25px; flex-wrap: wrap; margin-top: 20px; }
    .nav-link { text-decoration: none; font-size: 11px; font-weight: 700; color: var(--accent); background: var(--white); padding: 8px 18px; border-radius: 50px; border: 1px solid var(--border); transition: 0.3s; display: flex; align-items: center; gap: 6px; }
    .nav-link:hover { border-color: var(--primary); color: var(--primary); }

    /* Card */
    .otechy-card { background: var(--white); padding: 30px; border-radius: 12px; border: 1px solid var(--border); box-shadow: 0 4px 12px rgba(0,0,0,0.05); margin-bottom: 30px; }

    /* Custom Base64 Styles */
    .mode-switch { display: flex; background: #f1f5f9; padding: 5px; border-radius: 10px; margin-bottom: 20px; }
    .mode-btn { flex: 1; border: none; padding: 10px; background: transparent; cursor: pointer; font-weight: 700; color: var(--accent); border-radius: 8px; font-family: var(--font-main); transition: 0.2s; }
    .mode-btn.active { background: var(--white); color: var(--primary); shadow: 0 2px 5px rgba(0,0,0,0.05); }

    textarea.code-input {
        width: 100%; height: 150px; padding: 15px; border: 2px solid var(--border); border-radius: 12px;
        font-family: &#39;Monaco&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; resize: vertical; outline: none;
        background: #f8fafc; color: var(--text-dark); margin-bottom: 15px;
    }
    textarea.code-input:focus { border-color: var(--primary); background: #fff; }

    /* Upload Zone */
    .upload-zone { border: 2px dashed #cbd5e1; border-radius: 12px; padding: 40px 20px; text-align: center; background: #f8fafc; transition: 0.3s; cursor: pointer; position: relative; margin-bottom: 20px; }
    .upload-zone:hover { border-color: var(--primary); background: #eff6ff; }
    .upload-icon { width: 48px; height: 48px; margin-bottom: 10px; fill: var(--primary); }
    .upload-text { font-size: 14px; font-weight: 600; color: var(--accent); }
    .upload-input { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; z-index: 10; }

    /* Result Actions */
    .controls-grid { display: flex; gap: 15px; margin-top: 15px; flex-wrap: wrap; }
    .otechy-btn { border: none; padding: 14px 24px; border-radius: 10px; font-family: var(--font-main); font-weight: 700; cursor: pointer; transition: 0.3s; display: flex; align-items: center; justify-content: center; gap: 8px; font-size: 14px; flex: 1; }
    .btn-primary { background: var(--primary); color: var(--white); }
    .btn-primary:hover { background: #1d4ed8; }
    .btn-outline { background: var(--white); color: var(--accent); border: 1px solid var(--border); }
    .btn-outline:hover { border-color: var(--primary); color: var(--primary); }
    .btn-copy { background: #e0f2fe; color: var(--primary); }
    .btn-copy:hover { background: #dbeafe; }

    /* Output Section */
    .output-container { margin-top: 20px; display: none; }
    .output-container.visible { display: block; animation: fadeIn 0.3s ease; }
    .result-stats { font-size: 11px; font-weight: 700; color: var(--accent); margin-bottom: 8px; display: flex; justify-content: space-between; }
    .badge-info { background: #e0f2fe; color: #0369a1; padding: 2px 8px; border-radius: 4px; }

    /* Content Styling */
    .geo-citation { background: var(--white); padding: 25px; border-radius: 12px; border-left: 5px solid var(--primary); font-size: 14px; margin: 40px 0 20px; color: var(--text-dark); box-shadow: 0 4px 12px rgba(0,0,0,0.02); }
    .security-shield { background: var(--safe-green); border: 1px solid #bbf7d0; border-radius: 12px; padding: 20px; display: flex; align-items: center; gap: 15px; color: var(--safe-text); margin-bottom: 40px; }
    .how-to-section { margin: 40px 0; }
    .section-h2 { font-size: 20px; font-weight: 850; color: var(--text-dark); margin-bottom: 20px; }
    .step-card { display: flex; align-items: center; gap: 15px; margin-bottom: 12px; }
    .step-icon { width: 32px; height: 32px; background: var(--soft-blue); color: var(--primary); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 850; font-size: 14px; flex-shrink: 0; }
    
    .faq-section { margin-top: 60px; }
    .faq-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 15px; }
    .faq-card { background: var(--white); padding: 20px; border-radius: 12px; border: 1px solid var(--border); }
    .faq-card h3 { font-size: 14px; color: var(--primary); margin: 0 0 8px; font-weight: 700; }
    .faq-card p { font-size: 12px; color: var(--accent); margin: 0; line-height: 1.5; }
    
    .otechy-ad-top, .otechy-ad-middle, .otechy-ad-bottom { text-align: center; background: #f1f5f9; color: #cbd5e1; font-size: 10px; font-weight: 700; text-transform: uppercase; display: flex; align-items: center; justify-content: center; }

    @media (max-width: 768px) { 
        .otechy-tool-wrapper { padding: 40px 15px 15px !important; } 
        .controls-grid { flex-direction: column; }
    }
    @keyframes fadeIn { from { opacity:0; transform:translateY(5px); } to { opacity:1; transform:translateY(0); } }
&lt;/style&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;

    &lt;div class=&quot;otechy-badge&quot;&gt;Developer Tools &lt;span class=&quot;dynamic-year&quot;&gt;&lt;/span&gt;&lt;/div&gt;

    &lt;div class=&quot;tool-header&quot;&gt;
        &lt;h1&gt;
            Base64 Crypto Studio
            &lt;svg width=&quot;28&quot; height=&quot;28&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot; style=&quot;vertical-align: middle; margin-left: 8px;&quot;&gt;
                &lt;rect x=&quot;3&quot; y=&quot;11&quot; width=&quot;18&quot; height=&quot;11&quot; rx=&quot;2&quot; ry=&quot;2&quot;&gt;&lt;/rect&gt;
                &lt;path d=&quot;M7 11V7a5 5 0 0 1 10 0v4&quot;&gt;&lt;/path&gt;
            &lt;/svg&gt;
        &lt;/h1&gt;
        &lt;p class=&quot;quick-value&quot;&gt;Encode Text, Convert Images to Data URI, and Decode securely.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;tool-navigation&quot;&gt;
        &lt;a href=&quot;https://www.otechy.com/p/search.html?find=json&quot; class=&quot;nav-link&quot;&gt;
            &lt;svg width=&quot;14&quot; height=&quot;14&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;polyline points=&quot;16 18 22 12 16 6&quot;&gt;&lt;/polyline&gt;&lt;polyline points=&quot;8 6 2 12 8 18&quot;&gt;&lt;/polyline&gt;&lt;/svg&gt; JSON Formatter
        &lt;/a&gt;
        &lt;a href=&quot;https://www.otechy.com/p/search.html?find=md5&quot; class=&quot;nav-link&quot;&gt;
            &lt;svg width=&quot;14&quot; height=&quot;14&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;rect x=&quot;2&quot; y=&quot;2&quot; width=&quot;20&quot; height=&quot;8&quot; rx=&quot;2&quot; ry=&quot;2&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;2&quot; y=&quot;14&quot; width=&quot;20&quot; height=&quot;8&quot; rx=&quot;2&quot; ry=&quot;2&quot;&gt;&lt;/rect&gt;&lt;line x1=&quot;6&quot; y1=&quot;6&quot; x2=&quot;6.01&quot; y2=&quot;6&quot;&gt;&lt;/line&gt;&lt;line x1=&quot;6&quot; y1=&quot;18&quot; x2=&quot;6.01&quot; y2=&quot;18&quot;&gt;&lt;/line&gt;&lt;/svg&gt; MD5 Generator
        &lt;/a&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-top&quot; id=&quot;ad-top-slot&quot; style=&quot;margin-bottom: 20px; height: 90px;&quot;&gt;AD SLOT 1&lt;/div&gt;

    &lt;div class=&quot;otechy-card&quot;&gt;
        
        &lt;div class=&quot;mode-switch&quot;&gt;
            &lt;button class=&quot;mode-btn active&quot; onclick=&quot;switchMode(&#39;text&#39;)&quot;&gt;📝 Text Encoder/Decoder&lt;/button&gt;
            &lt;button class=&quot;mode-btn&quot; onclick=&quot;switchMode(&#39;file&#39;)&quot;&gt;📂 File / Image to Base64&lt;/button&gt;
        &lt;/div&gt;

        &lt;div id=&quot;textMode&quot;&gt;
            &lt;textarea id=&quot;textInput&quot; class=&quot;code-input&quot; placeholder=&quot;Type or paste content here to Encode/Decode...&quot;&gt;&lt;/textarea&gt;
            
            &lt;div style=&quot;display: flex; gap: 15px; margin-bottom: 15px;&quot;&gt;
                &lt;label style=&quot;font-size: 13px; font-weight: 600; color: var(--accent); display: flex; align-items: center; gap: 5px;&quot;&gt;
                    &lt;input type=&quot;checkbox&quot; id=&quot;decodeToggle&quot;&gt; Decode Mode (Base64 &amp;rarr; Text)
                &lt;/label&gt;
            &lt;/div&gt;

            &lt;div class=&quot;controls-grid&quot;&gt;
                &lt;button class=&quot;otechy-btn btn-primary&quot; onclick=&quot;processText()&quot;&gt;Process Text&lt;/button&gt;
                &lt;button class=&quot;otechy-btn btn-outline&quot; onclick=&quot;clearText()&quot;&gt;Clear&lt;/button&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div id=&quot;fileMode&quot; style=&quot;display: none;&quot;&gt;
            &lt;div class=&quot;upload-zone&quot; id=&quot;dropZone&quot;&gt;
                &lt;svg class=&quot;upload-icon&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-8.5 7.5c0 .83-.67 1.5-1.5 1.5H9v2H7.5V7H10c.83 0 1.5.67 1.5 1.5v1zm5 2c0 .83-.67 1.5-1.5 1.5h-2.5V7H15c.83 0 1.5.67 1.5 1.5v3zm4-3H19v1h1.5v1.5H19v2.5h-1.5V7h3v1.5zM9 9.5h1v-1H9v1zM4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm10 5.5h1v-3h-1v3z&quot;/&gt;&lt;/svg&gt;
                &lt;div class=&quot;upload-text&quot;&gt;Drop Image or File Here&lt;/div&gt;
                &lt;div style=&quot;font-size: 11px; color: var(--accent); margin-top: 5px;&quot;&gt;Supports JPG, PNG, PDF, TXT&lt;/div&gt;
                &lt;input type=&quot;file&quot; id=&quot;fileInput&quot; class=&quot;upload-input&quot;&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div id=&quot;resultArea&quot; class=&quot;output-container&quot;&gt;
            &lt;div class=&quot;result-stats&quot;&gt;
                &lt;span&gt;RESULT&lt;/span&gt;
                &lt;span id=&quot;fileStats&quot; style=&quot;display:none;&quot; class=&quot;badge-info&quot;&gt;0KB &amp;rarr; 0KB&lt;/span&gt;
            &lt;/div&gt;
            
            &lt;textarea id=&quot;outputData&quot; class=&quot;code-input&quot; readonly placeholder=&quot;Result will appear here...&quot;&gt;&lt;/textarea&gt;
            
            &lt;div class=&quot;controls-grid&quot;&gt;
                &lt;button class=&quot;otechy-btn btn-copy&quot; onclick=&quot;copyResult(&#39;raw&#39;)&quot;&gt;Copy Raw String&lt;/button&gt;
                &lt;button id=&quot;btnHtml&quot; class=&quot;otechy-btn btn-outline&quot; style=&quot;display:none;&quot; onclick=&quot;copyResult(&#39;html&#39;)&quot;&gt;Copy HTML &amp;lt;img&amp;gt;&lt;/button&gt;
                &lt;button id=&quot;btnCss&quot; class=&quot;otechy-btn btn-outline&quot; style=&quot;display:none;&quot; onclick=&quot;copyResult(&#39;css&#39;)&quot;&gt;Copy CSS&lt;/button&gt;
                &lt;button class=&quot;otechy-btn btn-primary&quot; onclick=&quot;downloadResult()&quot;&gt;Download .txt&lt;/button&gt;
            &lt;/div&gt;
        &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-middle&quot; id=&quot;ad-mid-slot&quot; style=&quot;margin: 30px 0; height: 90px;&quot;&gt;AD SLOT 2&lt;/div&gt;

    &lt;div class=&quot;geo-citation&quot;&gt;
        Developers and data analysts frequently use Base64 to embed images directly into HTML/CSS to reduce HTTP requests, or to encode binary data for API transmission (JSON/XML). OTechy&#39;s &lt;strong&gt;Base64 Studio&lt;/strong&gt; provides a robust environment to converting binaries to Data URIs with zero server latency.
    &lt;/div&gt;

    &lt;div class=&quot;security-shield&quot;&gt;
        &lt;svg width=&quot;32&quot; height=&quot;32&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot;&gt;&lt;path d=&quot;M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z&quot;/&gt;&lt;/svg&gt;
        &lt;div class=&quot;security-content&quot;&gt;
            &lt;h4 style=&quot;margin:0 0 4px; font-size:14px; font-weight:800;&quot;&gt;Client-Side Encryption&lt;/h4&gt;
            &lt;p style=&quot;margin:0; font-size:12px; opacity:0.9;&quot;&gt;All encoding and decoding happens locally in your browser. No data is sent to the cloud.&lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;how-to-section&quot;&gt;
        
        &lt;h2 class=&quot;section-h2&quot;&gt;How to Use Base64 Studio&lt;/h2&gt;
        &lt;div class=&quot;step-card&quot;&gt;&lt;div class=&quot;step-icon&quot;&gt;1&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Select Mode:&lt;/strong&gt; Choose &quot;Text&quot; for strings or &quot;File&quot; for images/PDFs.&lt;/div&gt;&lt;/div&gt;
        &lt;div class=&quot;step-card&quot;&gt;&lt;div class=&quot;step-icon&quot;&gt;2&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Input Data:&lt;/strong&gt; Type your text or drag &amp; drop a file. The tool processes it instantly.&lt;/div&gt;&lt;/div&gt;
        &lt;div class=&quot;step-card&quot;&gt;&lt;div class=&quot;step-icon&quot;&gt;3&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Export:&lt;/strong&gt; Copy the raw string, or use the &quot;HTML/CSS&quot; buttons for web development snippets.&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;faq-section&quot;&gt;
        &lt;h2 class=&quot;section-h2&quot;&gt;Frequently Asked Questions&lt;/h2&gt;
        &lt;div class=&quot;faq-grid&quot;&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;What is Base64?&lt;/h3&gt;&lt;p&gt;It&#39;s a method to encode binary data (like images) into ASCII text characters, making it safe to transmit over protocols that only support text (like Email or HTML).&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Why does the file size increase?&lt;/h3&gt;&lt;p&gt;Base64 encoding increases file size by approximately 33% because it uses 4 characters to represent every 3 bytes of data.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Is this tool secure?&lt;/h3&gt;&lt;p&gt;Yes. Everything runs in your browser via JavaScript. We do not store or see your files.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Can I convert images for CSS?&lt;/h3&gt;&lt;p&gt;Yes. Upload an image, and use the &quot;Copy CSS&quot; button to get the &lt;code&gt;background-image: url(&#39;data:...&#39;)&lt;/code&gt; code ready for your stylesheet.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;How do I decode?&lt;/h3&gt;&lt;p&gt;Switch to &quot;Text Mode&quot;, check the &quot;Decode Mode&quot; box, paste your Base64 string, and click Process.&lt;/p&gt;&lt;/div&gt;
            &lt;div class=&quot;faq-card&quot;&gt;&lt;h3&gt;Is there a file limit?&lt;/h3&gt;&lt;p&gt;The limit depends on your browser&#39;s memory. We generally recommend files under 5MB for optimal performance.&lt;/p&gt;&lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;otechy-ad-bottom&quot; id=&quot;ad-bottom-slot&quot; style=&quot;margin-top: 30px; height: 90px;&quot;&gt;AD SLOT 3&lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;
    // --- APP LOGIC ---
    let currentData = &quot;&quot;;
    let isFileMode = false;

    // 1. UI Switcher
    function switchMode(mode) {
        isFileMode = (mode === &#39;file&#39;);
        document.querySelectorAll(&#39;.mode-btn&#39;).forEach(b =&gt; b.classList.remove(&#39;active&#39;));
        event.target.classList.add(&#39;active&#39;);

        document.getElementById(&#39;textMode&#39;).style.display = isFileMode ? &#39;none&#39; : &#39;block&#39;;
        document.getElementById(&#39;fileMode&#39;).style.display = isFileMode ? &#39;block&#39; : &#39;none&#39;;
        
        // Reset Outputs
        document.getElementById(&#39;resultArea&#39;).classList.remove(&#39;visible&#39;);
        document.getElementById(&#39;fileStats&#39;).style.display = &#39;none&#39;;
        document.getElementById(&#39;btnHtml&#39;).style.display = &#39;none&#39;;
        document.getElementById(&#39;btnCss&#39;).style.display = &#39;none&#39;;
    }

    // 2. Text Processing
    function processText() {
        const input = document.getElementById(&#39;textInput&#39;).value;
        const isDecode = document.getElementById(&#39;decodeToggle&#39;).checked;
        const output = document.getElementById(&#39;outputData&#39;);

        if (!input) return;

        try {
            if (isDecode) {
                // Decode (Base64 -&gt; Text)
                output.value = atob(input);
            } else {
                // Encode (Text -&gt; Base64) with UTF-8 support
                output.value = btoa(unescape(encodeURIComponent(input)));
            }
            currentData = output.value;
            document.getElementById(&#39;resultArea&#39;).classList.add(&#39;visible&#39;);
        } catch (e) {
            alert(&quot;Error: Invalid Base64 string or unsupported characters.&quot;);
        }
    }

    function clearText() {
        document.getElementById(&#39;textInput&#39;).value = &#39;&#39;;
        document.getElementById(&#39;resultArea&#39;).classList.remove(&#39;visible&#39;);
    }

    // 3. File Processing
    const fileInput = document.getElementById(&#39;fileInput&#39;);
    fileInput.addEventListener(&#39;change&#39;, function(e) {
        const file = e.target.files[0];
        if(!file) return;

        const reader = new FileReader();
        reader.onload = function(evt) {
            currentData = evt.target.result; // This is the Data URI (Base64)
            
            // Show Output
            document.getElementById(&#39;outputData&#39;).value = currentData;
            document.getElementById(&#39;resultArea&#39;).classList.add(&#39;visible&#39;);
            
            // Show Stats
            const originalSize = (file.size / 1024).toFixed(2);
            const base64Size = (currentData.length / 1024).toFixed(2);
            const stats = document.getElementById(&#39;fileStats&#39;);
            stats.innerHTML = `${originalSize}KB &amp;rarr; ${base64Size}KB`; // Using HTML entity for arrow
            stats.style.display = &#39;block&#39;;

            // Show Helper Buttons if image
            if (file.type.startsWith(&#39;image/&#39;)) {
                document.getElementById(&#39;btnHtml&#39;).style.display = &#39;flex&#39;;
                document.getElementById(&#39;btnCss&#39;).style.display = &#39;flex&#39;;
            } else {
                document.getElementById(&#39;btnHtml&#39;).style.display = &#39;none&#39;;
                document.getElementById(&#39;btnCss&#39;).style.display = &#39;none&#39;;
            }
        };
        reader.readAsDataURL(file);
    });

    // 4. Copy/Download Utilities
    function copyResult(type) {
        if(!currentData) return;
        let textToCopy = currentData;

        if(type === &#39;raw&#39;) {
            // If file mode, sometimes users want just the base64 part without &quot;data:image/png;base64,&quot;
            // But usually &quot;Raw&quot; implies the full string. Let&#39;s keep full string for safety.
            textToCopy = currentData; 
        }
        if(type === &#39;html&#39;) textToCopy = `&lt;img src=&quot;${currentData}&quot; alt=&quot;Base64 Image&quot; /&gt;`;
        if(type === &#39;css&#39;) textToCopy = `background-image: url(&#39;${currentData}&#39;);`;

        navigator.clipboard.writeText(textToCopy);
        
        Toastify({
            text: type.toUpperCase() + &quot; Copied!&quot;,
            duration: 2000,
            gravity: &quot;bottom&quot;,
            position: &quot;center&quot;,
            style: { background: &quot;#3b82f6&quot;, borderRadius: &quot;8px&quot; }
        }).showToast();
    }

    function downloadResult() {
        if(!currentData) return;
        const blob = new Blob([currentData], {type: &quot;text/plain;charset=utf-8&quot;});
        const url = URL.createObjectURL(blob);
        const a = document.createElement(&#39;a&#39;);
        a.href = url;
        a.download = &quot;otechy-base64-result.txt&quot;;
        document.body.appendChild(a);
        a.click();
        document.body.removeChild(a);
    }

    // Set dynamic year
    document.querySelectorAll(&#39;.dynamic-year&#39;).forEach(el =&gt; el.textContent = new Date().getFullYear());
&lt;/script&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/973256772968157174'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/973256772968157174'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/02/base64-encoder-decoder-online.html' title='Base64 Encoder &amp; Decoder Online'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-9022839565483764368.post-1349756561215473232</id><published>2026-02-11T08:44:00.000-08:00</published><updated>2026-02-11T09:28:36.363-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Weather"/><category scheme="http://www.blogger.com/atom/ns#" term="World Clock"/><title type='text'>World Weather Studio Online</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;title&gt;World Weather &amp; Time Studio | Global Clock &amp; Live Forecast - OTechy&lt;/title&gt;
&lt;meta name=&quot;description&quot; content=&quot;A beautiful, real-time dashboard of world weather and local times. Features live day/night tracking, smart search, and automatic DST adjustments.&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;

&lt;meta property=&quot;og:title&quot; content=&quot;World Weather &amp; Time Studio - OTechy&quot;&gt;
&lt;meta property=&quot;og:type&quot; content=&quot;website&quot;&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;850&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/luxon/3.4.4/luxon.min.js&quot;&gt;&lt;/script&gt;

&lt;style&gt;
    :root { 
        --primary: #3b82f6; --text-dark: #1e293b; --accent: #64748b; 
        --bg: #f8fafc; --white: #fff; --border: #e2e8f0; 
        --font-main: &#39;Poppins&#39;, sans-serif;
    }
    
    * { box-sizing: border-box; }
    body { background-color: var(--bg); font-family: var(--font-main); color: var(--text-dark); margin: 0; line-height: 1.2; }
    
    .otechy-tool-wrapper { max-width: 1000px; margin: 0 auto; padding: 40px 20px; }
    
    .tool-header { text-align: center; margin-bottom: 25px; }
    .tool-header h1 { font-size: 28px; font-weight: 850; color: var(--primary); margin: 0; display: flex; align-items: center; justify-content: center; gap: 10px; }
    .bharat-flag { width: 24px; border-radius: 3px; }

    .controls-grid { 
        display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 10px; 
        background: var(--white); padding: 15px; border-radius: 12px; 
        border: 1px solid var(--border); margin-bottom: 20px;
    }
    .search-input, .sort-select { padding: 10px; border-radius: 8px; border: 1px solid var(--border); font-family: var(--font-main); font-size: 13px; outline: none; }

    /* Fix: Slim Rows with Balanced Text Centering */
    .city-list { display: flex; flex-direction: column; gap: 6px; }
    .city-row {
        display: grid; 
        grid-template-columns: 2fr 45px 0.8fr 1.2fr 100px; 
        align-items: center; 
        padding: 0 15px; 
        border-radius: 8px;
        background: var(--white); 
        border: 1px solid var(--border);
        height: 48px; /* High Density Height */
        transition: 0.2s ease;
        overflow: hidden;
    }
    
    .theme-day { border-left: 4px solid #fbbf24; }
    .theme-night { border-left: 4px solid #6366f1; background: #1e293b; color: #f8fafc; border-color: #4f46e5; }
    
    /* Flex alignment to prevent text &quot;bunching&quot; */
    .col-name { display: flex; flex-direction: column; justify-content: center; height: 100%; }
    .city-name { font-weight: 700; font-size: 14px; line-height: 1.1; }
    .country-name { font-size: 10px; opacity: 0.6; line-height: 1; }

    .col-temp { font-size: 18px; font-weight: 850; display: flex; align-items: center; }
    .col-meta { font-size: 10px; opacity: 0.7; display: flex; align-items: center; gap: 6px; white-space: nowrap; }
    
    .col-time { text-align: right; display: flex; flex-direction: column; justify-content: center; height: 100%; }
    .local-time { font-size: 16px; font-weight: 700; font-variant-numeric: tabular-nums; line-height: 1; }
    .time-tz { font-size: 9px; opacity: 0.5; font-weight: 600; line-height: 1; margin-top: 2px; }

    .weather-icon-img { width: 32px; height: 32px; object-fit: contain; }

    @media (max-width: 768px) {
        .controls-grid { grid-template-columns: 1fr; }
        .city-row { grid-template-columns: 1.5fr 40px 60px 100px; padding: 0 10px; }
        .col-meta { display: none; }
    }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;div class=&quot;otechy-tool-wrapper&quot;&gt;
    &lt;div class=&quot;tool-header&quot;&gt;
        &lt;h1&gt;Global Weather Studio 
            &lt;svg width=&quot;28&quot; height=&quot;28&quot; viewBox=&quot;0 0 24 24&quot; style=&quot;vertical-align: middle; margin-left: 8px;&quot;&gt;&lt;defs&gt;&lt;clipPath id=&quot;circleView&quot;&gt;&lt;circle cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;12&quot; /&gt;&lt;/clipPath&gt;&lt;/defs&gt;&lt;g clip-path=&quot;url(#circleView)&quot;&gt;&lt;rect width=&quot;24&quot; height=&quot;8&quot; y=&quot;0&quot; fill=&quot;#FF9933&quot;/&gt;&lt;rect width=&quot;24&quot; height=&quot;8&quot; y=&quot;8&quot; fill=&quot;#FFFFFF&quot;/&gt;&lt;rect width=&quot;24&quot; height=&quot;8&quot; y=&quot;16&quot; fill=&quot;#138808&quot;/&gt;&lt;circle cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;3&quot; fill=&quot;none&quot; stroke=&quot;#000080&quot; stroke-width=&quot;0.5&quot;/&gt;&lt;circle cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;0.8&quot; fill=&quot;#000080&quot;/&gt;&lt;g stroke=&quot;#000080&quot; stroke-width=&quot;0.2&quot;&gt;&lt;line x1=&quot;12&quot; y1=&quot;9&quot; x2=&quot;12&quot; y2=&quot;15&quot;/&gt;&lt;line x1=&quot;9&quot; y1=&quot;12&quot; x2=&quot;15&quot; y2=&quot;12&quot;/&gt;&lt;line x1=&quot;9.8&quot; y1=&quot;9.8&quot; x2=&quot;14.2&quot; y2=&quot;14.2&quot;/&gt;&lt;line x1=&quot;9.8&quot; y1=&quot;14.2&quot; x2=&quot;14.2&quot; y2=&quot;9.8&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;
        &lt;/h1&gt;
        &lt;p class=&quot;quick-value&quot; style=&quot;font-size: 12px; margin-top: 4px;&quot;&gt;Live Weather &amp; Clocks • Lazy Loading by Region&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;controls-grid&quot;&gt;
        &lt;input class=&quot;search-input&quot; id=&quot;search&quot; placeholder=&quot;Search city or state...&quot; oninput=&quot;filterCities()&quot;&gt;
        &lt;select class=&quot;sort-select&quot; id=&quot;regionFilter&quot; onchange=&quot;handleRegionChange()&quot;&gt;
            &lt;option value=&quot;Asia&quot; selected&gt;Asia (Default)&lt;/option&gt;
            &lt;option value=&quot;Europe&quot;&gt;Europe&lt;/option&gt;
            &lt;option value=&quot;North America&quot;&gt;North America&lt;/option&gt;
            &lt;option value=&quot;South America&quot;&gt;South America&lt;/option&gt;
            &lt;option value=&quot;Africa&quot;&gt;Africa&lt;/option&gt;
            &lt;option value=&quot;Oceania&quot;&gt;Oceania&lt;/option&gt;
        &lt;/select&gt;
        &lt;select class=&quot;sort-select&quot; id=&quot;sort&quot; onchange=&quot;sortCities()&quot;&gt;
            &lt;option value=&quot;pop&quot;&gt;Popularity&lt;/option&gt;
            &lt;option value=&quot;name&quot;&gt;Name A-Z&lt;/option&gt;
            &lt;option value=&quot;temp_high&quot;&gt;Hot First&lt;/option&gt;
        &lt;/select&gt;
    &lt;/div&gt;

    &lt;div id=&quot;grid&quot; class=&quot;city-list&quot;&gt;
        &lt;div style=&quot;text-align: center; padding: 40px; opacity: 0.5;&quot;&gt;Loading Regional Data...&lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
const citiesDB = [
/* ===================== ASIA ===================== */
{ name:&quot;New Delhi&quot;, country:&quot;India (Capital)&quot;, region:&quot;Asia&quot;, lat:28.61, lon:77.20, tz:&quot;Asia/Kolkata&quot;, pop:1 },
{ name:&quot;Mumbai&quot;, country:&quot;India (Maharashtra)&quot;, region:&quot;Asia&quot;, lat:19.07, lon:72.87, tz:&quot;Asia/Kolkata&quot;, pop:2 },
{ name:&quot;Kolkata&quot;, country:&quot;India (West Bengal)&quot;, region:&quot;Asia&quot;, lat:22.57, lon:88.36, tz:&quot;Asia/Kolkata&quot;, pop:3 },
{ name:&quot;Pune&quot;, country:&quot;India (Maharashtra)&quot;, region:&quot;Asia&quot;, lat:18.52, lon:73.85, tz:&quot;Asia/Kolkata&quot;, pop:4 },
{ name:&quot;Gangtok&quot;, country:&quot;India (Sikkim)&quot;, region:&quot;Asia&quot;, lat:27.33, lon:88.61, tz:&quot;Asia/Kolkata&quot;, pop:5 },
{ name:&quot;Darjeeling&quot;, country:&quot;India (GTA)&quot;, region:&quot;Asia&quot;, lat:27.04, lon:88.26, tz:&quot;Asia/Kolkata&quot;, pop:6 },
{ name:&quot;Imphal&quot;, country:&quot;India (Manipur)&quot;, region:&quot;Asia&quot;, lat:24.81, lon:93.93, tz:&quot;Asia/Kolkata&quot;, pop:7 },
{ name:&quot;Guwahati&quot;, country:&quot;India (Assam)&quot;, region:&quot;Asia&quot;, lat:26.14, lon:91.73, tz:&quot;Asia/Kolkata&quot;, pop:8 },
{ name:&quot;Kabul&quot;, country:&quot;Afghanistan&quot;, region:&quot;Asia&quot;, lat:34.55, lon:69.21, tz:&quot;Asia/Kabul&quot;, pop:9 },
{ name:&quot;Manama&quot;, country:&quot;Bahrain&quot;, region:&quot;Asia&quot;, lat:26.22, lon:50.58, tz:&quot;Asia/Bahrain&quot;, pop:10 },
{ name:&quot;Dhaka&quot;, country:&quot;Bangladesh&quot;, region:&quot;Asia&quot;, lat:23.81, lon:90.41, tz:&quot;Asia/Dhaka&quot;, pop:11 },
{ name:&quot;Thimphu&quot;, country:&quot;Bhutan&quot;, region:&quot;Asia&quot;, lat:27.47, lon:89.64, tz:&quot;Asia/Thimphu&quot;, pop:12 },
{ name:&quot;Bandar Seri Begawan&quot;, country:&quot;Brunei&quot;, region:&quot;Asia&quot;, lat:4.89, lon:114.94, tz:&quot;Asia/Brunei&quot;, pop:13 },
{ name:&quot;Phnom Penh&quot;, country:&quot;Cambodia&quot;, region:&quot;Asia&quot;, lat:11.56, lon:104.93, tz:&quot;Asia/Phnom_Penh&quot;, pop:14 },
{ name:&quot;Beijing&quot;, country:&quot;China&quot;, region:&quot;Asia&quot;, lat:39.90, lon:116.40, tz:&quot;Asia/Shanghai&quot;, pop:15 },
{ name:&quot;Shanghai&quot;, country:&quot;China&quot;, region:&quot;Asia&quot;, lat:31.23, lon:121.47, tz:&quot;Asia/Shanghai&quot;, pop:16 },
{ name:&quot;Jakarta&quot;, country:&quot;Indonesia&quot;, region:&quot;Asia&quot;, lat:-6.21, lon:106.85, tz:&quot;Asia/Jakarta&quot;, pop:17 },
{ name:&quot;Tehran&quot;, country:&quot;Iran&quot;, region:&quot;Asia&quot;, lat:35.69, lon:51.39, tz:&quot;Asia/Tehran&quot;, pop:18 },
{ name:&quot;Baghdad&quot;, country:&quot;Iraq&quot;, region:&quot;Asia&quot;, lat:33.31, lon:44.36, tz:&quot;Asia/Baghdad&quot;, pop:19 },
{ name:&quot;Jerusalem&quot;, country:&quot;Israel&quot;, region:&quot;Asia&quot;, lat:31.78, lon:35.22, tz:&quot;Asia/Jerusalem&quot;, pop:20 },
{ name:&quot;Tokyo&quot;, country:&quot;Japan&quot;, region:&quot;Asia&quot;, lat:35.67, lon:139.65, tz:&quot;Asia/Tokyo&quot;, pop:21 },
{ name:&quot;Osaka&quot;, country:&quot;Japan&quot;, region:&quot;Asia&quot;, lat:34.69, lon:135.50, tz:&quot;Asia/Tokyo&quot;, pop:22 },
{ name:&quot;Amman&quot;, country:&quot;Jordan&quot;, region:&quot;Asia&quot;, lat:31.95, lon:35.93, tz:&quot;Asia/Amman&quot;, pop:23 },
{ name:&quot;Astana&quot;, country:&quot;Kazakhstan&quot;, region:&quot;Asia&quot;, lat:51.16, lon:71.47, tz:&quot;Asia/Almaty&quot;, pop:24 },
{ name:&quot;Kuwait City&quot;, country:&quot;Kuwait&quot;, region:&quot;Asia&quot;, lat:29.38, lon:47.98, tz:&quot;Asia/Kuwait&quot;, pop:25 },
{ name:&quot;Bishkek&quot;, country:&quot;Kyrgyzstan&quot;, region:&quot;Asia&quot;, lat:42.87, lon:74.59, tz:&quot;Asia/Bishkek&quot;, pop:26 },
{ name:&quot;Vientiane&quot;, country:&quot;Laos&quot;, region:&quot;Asia&quot;, lat:17.98, lon:102.63, tz:&quot;Asia/Vientiane&quot;, pop:27 },
{ name:&quot;Beirut&quot;, country:&quot;Lebanon&quot;, region:&quot;Asia&quot;, lat:33.89, lon:35.50, tz:&quot;Asia/Beirut&quot;, pop:28 },
{ name:&quot;Kuala Lumpur&quot;, country:&quot;Malaysia&quot;, region:&quot;Asia&quot;, lat:3.14, lon:101.69, tz:&quot;Asia/Kuala_Lumpur&quot;, pop:29 },
{ name:&quot;Male&quot;, country:&quot;Maldives&quot;, region:&quot;Asia&quot;, lat:4.17, lon:73.51, tz:&quot;Indian/Maldives&quot;, pop:30 },
{ name:&quot;Ulaanbaatar&quot;, country:&quot;Mongolia&quot;, region:&quot;Asia&quot;, lat:47.92, lon:106.92, tz:&quot;Asia/Ulaanbaatar&quot;, pop:31 },
{ name:&quot;Naypyidaw&quot;, country:&quot;Myanmar&quot;, region:&quot;Asia&quot;, lat:19.75, lon:96.10, tz:&quot;Asia/Yangon&quot;, pop:32 },
{ name:&quot;Kathmandu&quot;, country:&quot;Nepal&quot;, region:&quot;Asia&quot;, lat:27.72, lon:85.32, tz:&quot;Asia/Kathmandu&quot;, pop:33 },
{ name:&quot;Pokhara&quot;, country:&quot;Nepal&quot;, region:&quot;Asia&quot;, lat:28.20, lon:83.98, tz:&quot;Asia/Kathmandu&quot;, pop:34 },
{ name:&quot;Pyongyang&quot;, country:&quot;North Korea&quot;, region:&quot;Asia&quot;, lat:39.03, lon:125.75, tz:&quot;Asia/Pyongyang&quot;, pop:35 },
{ name:&quot;Muscat&quot;, country:&quot;Oman&quot;, region:&quot;Asia&quot;, lat:23.59, lon:58.41, tz:&quot;Asia/Muscat&quot;, pop:36 },
{ name:&quot;Islamabad&quot;, country:&quot;Pakistan&quot;, region:&quot;Asia&quot;, lat:33.69, lon:73.06, tz:&quot;Asia/Karachi&quot;, pop:37 },
{ name:&quot;Karachi&quot;, country:&quot;Pakistan&quot;, region:&quot;Asia&quot;, lat:24.86, lon:67.00, tz:&quot;Asia/Karachi&quot;, pop:38 },
{ name:&quot;Manila&quot;, country:&quot;Philippines&quot;, region:&quot;Asia&quot;, lat:14.60, lon:120.98, tz:&quot;Asia/Manila&quot;, pop:39 },
{ name:&quot;Doha&quot;, country:&quot;Qatar&quot;, region:&quot;Asia&quot;, lat:25.29, lon:51.53, tz:&quot;Asia/Qatar&quot;, pop:40 },
{ name:&quot;Riyadh&quot;, country:&quot;Saudi Arabia&quot;, region:&quot;Asia&quot;, lat:24.71, lon:46.67, tz:&quot;Asia/Riyadh&quot;, pop:41 },
{ name:&quot;Jeddah&quot;, country:&quot;Saudi Arabia&quot;, region:&quot;Asia&quot;, lat:21.48, lon:39.19, tz:&quot;Asia/Riyadh&quot;, pop:42 },
{ name:&quot;Singapore&quot;, country:&quot;Singapore&quot;, region:&quot;Asia&quot;, lat:1.35, lon:103.82, tz:&quot;Asia/Singapore&quot;, pop:43 },
{ name:&quot;Seoul&quot;, country:&quot;South Korea&quot;, region:&quot;Asia&quot;, lat:37.56, lon:126.97, tz:&quot;Asia/Seoul&quot;, pop:44 },
{ name:&quot;Colombo&quot;, country:&quot;Sri Lanka&quot;, region:&quot;Asia&quot;, lat:6.93, lon:79.85, tz:&quot;Asia/Colombo&quot;, pop:45 },
{ name:&quot;Damascus&quot;, country:&quot;Syria&quot;, region:&quot;Asia&quot;, lat:33.51, lon:36.28, tz:&quot;Asia/Damascus&quot;, pop:46 },
{ name:&quot;Taipei&quot;, country:&quot;Taiwan&quot;, region:&quot;Asia&quot;, lat:25.03, lon:121.56, tz:&quot;Asia/Taipei&quot;, pop:47 },
{ name:&quot;Dushanbe&quot;, country:&quot;Tajikistan&quot;, region:&quot;Asia&quot;, lat:38.56, lon:68.78, tz:&quot;Asia/Dushanbe&quot;, pop:48 },
{ name:&quot;Bangkok&quot;, country:&quot;Thailand&quot;, region:&quot;Asia&quot;, lat:13.75, lon:100.50, tz:&quot;Asia/Bangkok&quot;, pop:49 },
{ name:&quot;Ankara&quot;, country:&quot;Turkey&quot;, region:&quot;Asia&quot;, lat:39.93, lon:32.86, tz:&quot;Europe/Istanbul&quot;, pop:50 },
{ name:&quot;Istanbul&quot;, country:&quot;Turkey&quot;, region:&quot;Asia&quot;, lat:41.00, lon:28.97, tz:&quot;Europe/Istanbul&quot;, pop:51 },
{ name:&quot;Ashgabat&quot;, country:&quot;Turkmenistan&quot;, region:&quot;Asia&quot;, lat:37.96, lon:58.33, tz:&quot;Asia/Ashgabat&quot;, pop:52 },
{ name:&quot;Abu Dhabi&quot;, country:&quot;UAE&quot;, region:&quot;Asia&quot;, lat:24.45, lon:54.38, tz:&quot;Asia/Dubai&quot;, pop:53 },
{ name:&quot;Dubai&quot;, country:&quot;UAE&quot;, region:&quot;Asia&quot;, lat:25.20, lon:55.27, tz:&quot;Asia/Dubai&quot;, pop:54 },
{ name:&quot;Tashkent&quot;, country:&quot;Uzbekistan&quot;, region:&quot;Asia&quot;, lat:41.30, lon:69.24, tz:&quot;Asia/Tashkent&quot;, pop:55 },
{ name:&quot;Hanoi&quot;, country:&quot;Vietnam&quot;, region:&quot;Asia&quot;, lat:21.03, lon:105.85, tz:&quot;Asia/Bangkok&quot;, pop:56 },
{ name:&quot;Ho Chi Minh City&quot;, country:&quot;Vietnam&quot;, region:&quot;Asia&quot;, lat:10.82, lon:106.62, tz:&quot;Asia/Ho_Chi_Minh&quot;, pop:57 },
{ name:&quot;Sana&#39;a&quot;, country:&quot;Yemen&quot;, region:&quot;Asia&quot;, lat:15.35, lon:44.21, tz:&quot;Asia/Aden&quot;, pop:58 },
{ name:&quot;Dili&quot;, country:&quot;Timor-Leste&quot;, region:&quot;Asia&quot;, lat:-8.55, lon:125.57, tz:&quot;Asia/Dili&quot;, pop:59 },
{ name:&quot;Yerevan&quot;, country:&quot;Armenia&quot;, region:&quot;Asia&quot;, lat:40.18, lon:44.51, tz:&quot;Asia/Yerevan&quot;, pop:60 },
{ name:&quot;Baku&quot;, country:&quot;Azerbaijan&quot;, region:&quot;Asia&quot;, lat:40.41, lon:49.87, tz:&quot;Asia/Baku&quot;, pop:61 },
{ name:&quot;Tbilisi&quot;, country:&quot;Georgia&quot;, region:&quot;Asia&quot;, lat:41.72, lon:44.78, tz:&quot;Asia/Tbilisi&quot;, pop:62 },
{ name:&quot;Ankara&quot;, country:&quot;Turkey&quot;, region:&quot;Asia&quot;, lat:39.93, lon:32.86, tz:&quot;Europe/Istanbul&quot;, pop:63 },
  
/* ===================== EUROPE ===================== */
{ name:&quot;London&quot;, country:&quot;United Kingdom&quot;, region:&quot;Europe&quot;, lat:51.50, lon:-0.12, tz:&quot;Europe/London&quot;, pop:64 },
{ name:&quot;Paris&quot;, country:&quot;France&quot;, region:&quot;Europe&quot;, lat:48.85, lon:2.35, tz:&quot;Europe/Paris&quot;, pop:65 },
{ name:&quot;Lyon&quot;, country:&quot;France&quot;, region:&quot;Europe&quot;, lat:45.76, lon:4.83, tz:&quot;Europe/Paris&quot;, pop:66 },
{ name:&quot;Berlin&quot;, country:&quot;Germany&quot;, region:&quot;Europe&quot;, lat:52.52, lon:13.40, tz:&quot;Europe/Berlin&quot;, pop:67 },
{ name:&quot;Munich&quot;, country:&quot;Germany&quot;, region:&quot;Europe&quot;, lat:48.13, lon:11.58, tz:&quot;Europe/Berlin&quot;, pop:68 },
{ name:&quot;Rome&quot;, country:&quot;Italy&quot;, region:&quot;Europe&quot;, lat:41.90, lon:12.49, tz:&quot;Europe/Rome&quot;, pop:69 },
{ name:&quot;Milan&quot;, country:&quot;Italy&quot;, region:&quot;Europe&quot;, lat:45.46, lon:9.19, tz:&quot;Europe/Rome&quot;, pop:70 },
{ name:&quot;Madrid&quot;, country:&quot;Spain&quot;, region:&quot;Europe&quot;, lat:40.41, lon:-3.70, tz:&quot;Europe/Madrid&quot;, pop:71 },
{ name:&quot;Barcelona&quot;, country:&quot;Spain&quot;, region:&quot;Europe&quot;, lat:41.38, lon:2.17, tz:&quot;Europe/Madrid&quot;, pop:72 },
{ name:&quot;Lisbon&quot;, country:&quot;Portugal&quot;, region:&quot;Europe&quot;, lat:38.72, lon:-9.14, tz:&quot;Europe/Lisbon&quot;, pop:73 },
{ name:&quot;Vienna&quot;, country:&quot;Austria&quot;, region:&quot;Europe&quot;, lat:48.21, lon:16.37, tz:&quot;Europe/Vienna&quot;, pop:74 },
{ name:&quot;Brussels&quot;, country:&quot;Belgium&quot;, region:&quot;Europe&quot;, lat:50.85, lon:4.35, tz:&quot;Europe/Brussels&quot;, pop:75 },
{ name:&quot;Amsterdam&quot;, country:&quot;Netherlands&quot;, region:&quot;Europe&quot;, lat:52.36, lon:4.90, tz:&quot;Europe/Amsterdam&quot;, pop:76 },
{ name:&quot;Bern&quot;, country:&quot;Switzerland&quot;, region:&quot;Europe&quot;, lat:46.95, lon:7.44, tz:&quot;Europe/Zurich&quot;, pop:77 },
{ name:&quot;Zurich&quot;, country:&quot;Switzerland&quot;, region:&quot;Europe&quot;, lat:47.37, lon:8.54, tz:&quot;Europe/Zurich&quot;, pop:78 },
{ name:&quot;Stockholm&quot;, country:&quot;Sweden&quot;, region:&quot;Europe&quot;, lat:59.33, lon:18.07, tz:&quot;Europe/Stockholm&quot;, pop:79 },
{ name:&quot;Oslo&quot;, country:&quot;Norway&quot;, region:&quot;Europe&quot;, lat:59.91, lon:10.75, tz:&quot;Europe/Oslo&quot;, pop:80 },
{ name:&quot;Helsinki&quot;, country:&quot;Finland&quot;, region:&quot;Europe&quot;, lat:60.17, lon:24.94, tz:&quot;Europe/Helsinki&quot;, pop:81 },
{ name:&quot;Copenhagen&quot;, country:&quot;Denmark&quot;, region:&quot;Europe&quot;, lat:55.68, lon:12.57, tz:&quot;Europe/Copenhagen&quot;, pop:82 },
{ name:&quot;Dublin&quot;, country:&quot;Ireland&quot;, region:&quot;Europe&quot;, lat:53.34, lon:-6.26, tz:&quot;Europe/Dublin&quot;, pop:83 },
{ name:&quot;Warsaw&quot;, country:&quot;Poland&quot;, region:&quot;Europe&quot;, lat:52.23, lon:21.01, tz:&quot;Europe/Warsaw&quot;, pop:84 },
{ name:&quot;Prague&quot;, country:&quot;Czech Republic&quot;, region:&quot;Europe&quot;, lat:50.08, lon:14.43, tz:&quot;Europe/Prague&quot;, pop:85 },
{ name:&quot;Budapest&quot;, country:&quot;Hungary&quot;, region:&quot;Europe&quot;, lat:47.50, lon:19.04, tz:&quot;Europe/Budapest&quot;, pop:86 },
{ name:&quot;Athens&quot;, country:&quot;Greece&quot;, region:&quot;Europe&quot;, lat:37.98, lon:23.72, tz:&quot;Europe/Athens&quot;, pop:87 },
{ name:&quot;Bucharest&quot;, country:&quot;Romania&quot;, region:&quot;Europe&quot;, lat:44.43, lon:26.10, tz:&quot;Europe/Bucharest&quot;, pop:88 },
{ name:&quot;Sofia&quot;, country:&quot;Bulgaria&quot;, region:&quot;Europe&quot;, lat:42.70, lon:23.32, tz:&quot;Europe/Sofia&quot;, pop:89 },
{ name:&quot;Belgrade&quot;, country:&quot;Serbia&quot;, region:&quot;Europe&quot;, lat:44.80, lon:20.46, tz:&quot;Europe/Belgrade&quot;, pop:90 },
{ name:&quot;Moscow&quot;, country:&quot;Russia&quot;, region:&quot;Europe&quot;, lat:55.75, lon:37.61, tz:&quot;Europe/Moscow&quot;, pop:91 },
{ name:&quot;St. Petersburg&quot;, country:&quot;Russia&quot;, region:&quot;Europe&quot;, lat:59.93, lon:30.33, tz:&quot;Europe/Moscow&quot;, pop:92 },
{ name:&quot;Kyiv&quot;, country:&quot;Ukraine&quot;, region:&quot;Europe&quot;, lat:50.45, lon:30.52, tz:&quot;Europe/Kyiv&quot;, pop:93 },
{ name:&quot;Minsk&quot;, country:&quot;Belarus&quot;, region:&quot;Europe&quot;, lat:53.90, lon:27.56, tz:&quot;Europe/Minsk&quot;, pop:94 },
{ name:&quot;Tirana&quot;, country:&quot;Albania&quot;, region:&quot;Europe&quot;, lat:41.33, lon:19.82, tz:&quot;Europe/Tirane&quot;, pop:95 },
{ name:&quot;Andorra la Vella&quot;, country:&quot;Andorra&quot;, region:&quot;Europe&quot;, lat:42.51, lon:1.52, tz:&quot;Europe/Andorra&quot;, pop:96 },
{ name:&quot;Sarajevo&quot;, country:&quot;Bosnia and Herzegovina&quot;, region:&quot;Europe&quot;, lat:43.86, lon:18.41, tz:&quot;Europe/Sarajevo&quot;, pop:97 },
{ name:&quot;Zagreb&quot;, country:&quot;Croatia&quot;, region:&quot;Europe&quot;, lat:45.81, lon:15.98, tz:&quot;Europe/Zagreb&quot;, pop:98 },
{ name:&quot;Nicosia&quot;, country:&quot;Cyprus&quot;, region:&quot;Europe&quot;, lat:35.19, lon:33.38, tz:&quot;Asia/Nicosia&quot;, pop:99 },
{ name:&quot;Reykjavik&quot;, country:&quot;Iceland&quot;, region:&quot;Europe&quot;, lat:64.15, lon:-21.94, tz:&quot;Atlantic/Reykjavik&quot;, pop:100 },
{ name:&quot;Riga&quot;, country:&quot;Latvia&quot;, region:&quot;Europe&quot;, lat:56.95, lon:24.11, tz:&quot;Europe/Riga&quot;, pop:101 },
{ name:&quot;Vaduz&quot;, country:&quot;Liechtenstein&quot;, region:&quot;Europe&quot;, lat:47.14, lon:9.52, tz:&quot;Europe/Vaduz&quot;, pop:102 },
{ name:&quot;Vilnius&quot;, country:&quot;Lithuania&quot;, region:&quot;Europe&quot;, lat:54.69, lon:25.28, tz:&quot;Europe/Vilnius&quot;, pop:103 },
{ name:&quot;Luxembourg&quot;, country:&quot;Luxembourg&quot;, region:&quot;Europe&quot;, lat:49.61, lon:6.13, tz:&quot;Europe/Luxembourg&quot;, pop:104 },
{ name:&quot;Valletta&quot;, country:&quot;Malta&quot;, region:&quot;Europe&quot;, lat:35.90, lon:14.51, tz:&quot;Europe/Malta&quot;, pop:105 },
{ name:&quot;Chișinău&quot;, country:&quot;Moldova&quot;, region:&quot;Europe&quot;, lat:47.01, lon:28.86, tz:&quot;Europe/Chisinau&quot;, pop:106 },
{ name:&quot;Monaco&quot;, country:&quot;Monaco&quot;, region:&quot;Europe&quot;, lat:43.74, lon:7.42, tz:&quot;Europe/Monaco&quot;, pop:107 },
{ name:&quot;Podgorica&quot;, country:&quot;Montenegro&quot;, region:&quot;Europe&quot;, lat:42.44, lon:19.26, tz:&quot;Europe/Podgorica&quot;, pop:108 },
{ name:&quot;Skopje&quot;, country:&quot;North Macedonia&quot;, region:&quot;Europe&quot;, lat:41.99, lon:21.43, tz:&quot;Europe/Skopje&quot;, pop:109 },
{ name:&quot;San Marino&quot;, country:&quot;San Marino&quot;, region:&quot;Europe&quot;, lat:43.94, lon:12.45, tz:&quot;Europe/San_Marino&quot;, pop:110 },
{ name:&quot;Bratislava&quot;, country:&quot;Slovakia&quot;, region:&quot;Europe&quot;, lat:48.15, lon:17.11, tz:&quot;Europe/Bratislava&quot;, pop:111 },
{ name:&quot;Ljubljana&quot;, country:&quot;Slovenia&quot;, region:&quot;Europe&quot;, lat:46.05, lon:14.51, tz:&quot;Europe/Ljubljana&quot;, pop:112 },
{ name:&quot;Vatican City&quot;, country:&quot;Vatican City&quot;, region:&quot;Europe&quot;, lat:41.90, lon:12.45, tz:&quot;Europe/Vatican&quot;, pop:113 },

/* ===================== AFRICA ===================== */
{ name:&quot;Cairo&quot;, country:&quot;Egypt&quot;, region:&quot;Africa&quot;, lat:30.04, lon:31.23, tz:&quot;Africa/Cairo&quot;, pop:114 },
{ name:&quot;Alexandria&quot;, country:&quot;Egypt&quot;, region:&quot;Africa&quot;, lat:31.20, lon:29.91, tz:&quot;Africa/Cairo&quot;, pop:115 },
{ name:&quot;Abuja&quot;, country:&quot;Nigeria&quot;, region:&quot;Africa&quot;, lat:9.08, lon:7.40, tz:&quot;Africa/Lagos&quot;, pop:116 },
{ name:&quot;Lagos&quot;, country:&quot;Nigeria&quot;, region:&quot;Africa&quot;, lat:6.52, lon:3.37, tz:&quot;Africa/Lagos&quot;, pop:117 },
{ name:&quot;Addis Ababa&quot;, country:&quot;Ethiopia&quot;, region:&quot;Africa&quot;, lat:8.98, lon:38.79, tz:&quot;Africa/Addis_Ababa&quot;, pop:118 },
{ name:&quot;Nairobi&quot;, country:&quot;Kenya&quot;, region:&quot;Africa&quot;, lat:-1.29, lon:36.82, tz:&quot;Africa/Nairobi&quot;, pop:119 },
{ name:&quot;Pretoria&quot;, country:&quot;South Africa&quot;, region:&quot;Africa&quot;, lat:-25.74, lon:28.18, tz:&quot;Africa/Johannesburg&quot;, pop:120 },
{ name:&quot;Johannesburg&quot;, country:&quot;South Africa&quot;, region:&quot;Africa&quot;, lat:-26.20, lon:28.04, tz:&quot;Africa/Johannesburg&quot;, pop:121 },
{ name:&quot;Cape Town&quot;, country:&quot;South Africa&quot;, region:&quot;Africa&quot;, lat:-33.92, lon:18.42, tz:&quot;Africa/Johannesburg&quot;, pop:122 },
{ name:&quot;Casablanca&quot;, country:&quot;Morocco&quot;, region:&quot;Africa&quot;, lat:33.57, lon:-7.58, tz:&quot;Africa/Casablanca&quot;, pop:123 },
{ name:&quot;Accra&quot;, country:&quot;Ghana&quot;, region:&quot;Africa&quot;, lat:5.60, lon:-0.18, tz:&quot;Africa/Accra&quot;, pop:124 },
{ name:&quot;Dar es Salaam&quot;, country:&quot;Tanzania&quot;, region:&quot;Africa&quot;, lat:-6.79, lon:39.20, tz:&quot;Africa/Dar_es_Salaam&quot;, pop:125 },
{ name:&quot;Luanda&quot;, country:&quot;Angola&quot;, region:&quot;Africa&quot;, lat:-8.83, lon:13.24, tz:&quot;Africa/Luanda&quot;, pop:126 },
{ name:&quot;Kinshasa&quot;, country:&quot;DR Congo&quot;, region:&quot;Africa&quot;, lat:-4.32, lon:15.31, tz:&quot;Africa/Kinshasa&quot;, pop:127 },
{ name:&quot;Algiers&quot;, country:&quot;Algeria&quot;, region:&quot;Africa&quot;, lat:36.75, lon:3.06, tz:&quot;Africa/Algiers&quot;, pop:128 },
{ name:&quot;Tunis&quot;, country:&quot;Tunisia&quot;, region:&quot;Africa&quot;, lat:36.81, lon:10.18, tz:&quot;Africa/Tunis&quot;, pop:129 },
{ name:&quot;Tripoli&quot;, country:&quot;Libya&quot;, region:&quot;Africa&quot;, lat:32.89, lon:13.19, tz:&quot;Africa/Tripoli&quot;, pop:130 },
{ name:&quot;Khartoum&quot;, country:&quot;Sudan&quot;, region:&quot;Africa&quot;, lat:15.50, lon:32.56, tz:&quot;Africa/Khartoum&quot;, pop:131 },
{ name:&quot;Juba&quot;, country:&quot;South Sudan&quot;, region:&quot;Africa&quot;, lat:4.85, lon:31.58, tz:&quot;Africa/Juba&quot;, pop:132 },
{ name:&quot;Porto-Novo&quot;, country:&quot;Benin&quot;, region:&quot;Africa&quot;, lat:6.50, lon:2.63, tz:&quot;Africa/Porto-Novo&quot;, pop:133 },
{ name:&quot;Ouagadougou&quot;, country:&quot;Burkina Faso&quot;, region:&quot;Africa&quot;, lat:12.37, lon:-1.53, tz:&quot;Africa/Ouagadougou&quot;, pop:134 },
{ name:&quot;Praia&quot;, country:&quot;Cabo Verde&quot;, region:&quot;Africa&quot;, lat:14.93, lon:-23.51, tz:&quot;Atlantic/Cape_Verde&quot;, pop:135 },
{ name:&quot;Yamoussoukro&quot;, country:&quot;Côte d’Ivoire&quot;, region:&quot;Africa&quot;, lat:6.82, lon:-5.28, tz:&quot;Africa/Abidjan&quot;, pop:136 },
{ name:&quot;Banjul&quot;, country:&quot;The Gambia&quot;, region:&quot;Africa&quot;, lat:13.45, lon:-16.57, tz:&quot;Africa/Banjul&quot;, pop:137 },
{ name:&quot;Conakry&quot;, country:&quot;Guinea&quot;, region:&quot;Africa&quot;, lat:9.64, lon:-13.58, tz:&quot;Africa/Conakry&quot;, pop:138 },
{ name:&quot;Bissau&quot;, country:&quot;Guinea-Bissau&quot;, region:&quot;Africa&quot;, lat:11.86, lon:-15.60, tz:&quot;Africa/Bissau&quot;, pop:139 },
{ name:&quot;Monrovia&quot;, country:&quot;Liberia&quot;, region:&quot;Africa&quot;, lat:6.31, lon:-10.80, tz:&quot;Africa/Monrovia&quot;, pop:140 },
{ name:&quot;Bamako&quot;, country:&quot;Mali&quot;, region:&quot;Africa&quot;, lat:12.65, lon:-8.00, tz:&quot;Africa/Bamako&quot;, pop:141 },
{ name:&quot;Nouakchott&quot;, country:&quot;Mauritania&quot;, region:&quot;Africa&quot;, lat:18.07, lon:-15.96, tz:&quot;Africa/Nouakchott&quot;, pop:142 },
{ name:&quot;Niamey&quot;, country:&quot;Niger&quot;, region:&quot;Africa&quot;, lat:13.51, lon:2.12, tz:&quot;Africa/Niamey&quot;, pop:143 },
{ name:&quot;Dakar&quot;, country:&quot;Senegal&quot;, region:&quot;Africa&quot;, lat:14.69, lon:-17.44, tz:&quot;Africa/Dakar&quot;, pop:144 },
{ name:&quot;Freetown&quot;, country:&quot;Sierra Leone&quot;, region:&quot;Africa&quot;, lat:8.48, lon:-13.23, tz:&quot;Africa/Freetown&quot;, pop:145 },
{ name:&quot;Lomé&quot;, country:&quot;Togo&quot;, region:&quot;Africa&quot;, lat:6.13, lon:1.22, tz:&quot;Africa/Lome&quot;, pop:146 },
{ name:&quot;Yaoundé&quot;, country:&quot;Cameroon&quot;, region:&quot;Africa&quot;, lat:3.87, lon:11.52, tz:&quot;Africa/Douala&quot;, pop:147 },
{ name:&quot;Bangui&quot;, country:&quot;Central African Republic&quot;, region:&quot;Africa&quot;, lat:4.39, lon:18.56, tz:&quot;Africa/Bangui&quot;, pop:148 },
{ name:&quot;N&#39;Djamena&quot;, country:&quot;Chad&quot;, region:&quot;Africa&quot;, lat:12.13, lon:15.05, tz:&quot;Africa/Ndjamena&quot;, pop:149 },
{ name:&quot;Brazzaville&quot;, country:&quot;Republic of the Congo&quot;, region:&quot;Africa&quot;, lat:-4.27, lon:15.28, tz:&quot;Africa/Brazzaville&quot;, pop:150 },
{ name:&quot;Malabo&quot;, country:&quot;Equatorial Guinea&quot;, region:&quot;Africa&quot;, lat:3.75, lon:8.78, tz:&quot;Africa/Malabo&quot;, pop:151 },
{ name:&quot;Libreville&quot;, country:&quot;Gabon&quot;, region:&quot;Africa&quot;, lat:0.39, lon:9.45, tz:&quot;Africa/Libreville&quot;, pop:152 },
{ name:&quot;São Tomé&quot;, country:&quot;São Tomé and Príncipe&quot;, region:&quot;Africa&quot;, lat:0.34, lon:6.73, tz:&quot;Africa/Sao_Tome&quot;, pop:153 },
{ name:&quot;Gitega&quot;, country:&quot;Burundi&quot;, region:&quot;Africa&quot;, lat:-3.43, lon:29.93, tz:&quot;Africa/Bujumbura&quot;, pop:154 },
{ name:&quot;Moroni&quot;, country:&quot;Comoros&quot;, region:&quot;Africa&quot;, lat:-11.70, lon:43.24, tz:&quot;Indian/Comoro&quot;, pop:155 },
{ name:&quot;Djibouti&quot;, country:&quot;Djibouti&quot;, region:&quot;Africa&quot;, lat:11.59, lon:43.15, tz:&quot;Africa/Djibouti&quot;, pop:156 },
{ name:&quot;Asmara&quot;, country:&quot;Eritrea&quot;, region:&quot;Africa&quot;, lat:15.33, lon:38.93, tz:&quot;Africa/Asmara&quot;, pop:157 },
{ name:&quot;Antananarivo&quot;, country:&quot;Madagascar&quot;, region:&quot;Africa&quot;, lat:-18.88, lon:47.51, tz:&quot;Indian/Antananarivo&quot;, pop:158 },
{ name:&quot;Lilongwe&quot;, country:&quot;Malawi&quot;, region:&quot;Africa&quot;, lat:-13.96, lon:33.79, tz:&quot;Africa/Blantyre&quot;, pop:159 },
{ name:&quot;Port Louis&quot;, country:&quot;Mauritius&quot;, region:&quot;Africa&quot;, lat:-20.16, lon:57.50, tz:&quot;Indian/Mauritius&quot;, pop:160 },
{ name:&quot;Maputo&quot;, country:&quot;Mozambique&quot;, region:&quot;Africa&quot;, lat:-25.97, lon:32.58, tz:&quot;Africa/Maputo&quot;, pop:161 },
{ name:&quot;Kigali&quot;, country:&quot;Rwanda&quot;, region:&quot;Africa&quot;, lat:-1.95, lon:30.06, tz:&quot;Africa/Kigali&quot;, pop:162 },
{ name:&quot;Victoria&quot;, country:&quot;Seychelles&quot;, region:&quot;Africa&quot;, lat:-4.62, lon:55.45, tz:&quot;Indian/Mahe&quot;, pop:163 },
{ name:&quot;Mogadishu&quot;, country:&quot;Somalia&quot;, region:&quot;Africa&quot;, lat:2.04, lon:45.34, tz:&quot;Africa/Mogadishu&quot;, pop:164 },
{ name:&quot;Kampala&quot;, country:&quot;Uganda&quot;, region:&quot;Africa&quot;, lat:0.31, lon:32.58, tz:&quot;Africa/Kampala&quot;, pop:165 },
{ name:&quot;Lusaka&quot;, country:&quot;Zambia&quot;, region:&quot;Africa&quot;, lat:-15.41, lon:28.29, tz:&quot;Africa/Lusaka&quot;, pop:166 },
{ name:&quot;Harare&quot;, country:&quot;Zimbabwe&quot;, region:&quot;Africa&quot;, lat:-17.83, lon:31.05, tz:&quot;Africa/Harare&quot;, pop:167 },
{ name:&quot;Gaborone&quot;, country:&quot;Botswana&quot;, region:&quot;Africa&quot;, lat:-24.63, lon:25.91, tz:&quot;Africa/Gaborone&quot;, pop:168 },
{ name:&quot;Mbabane&quot;, country:&quot;Eswatini&quot;, region:&quot;Africa&quot;, lat:-26.32, lon:31.13, tz:&quot;Africa/Mbabane&quot;, pop:169 },
{ name:&quot;Maseru&quot;, country:&quot;Lesotho&quot;, region:&quot;Africa&quot;, lat:-29.31, lon:27.48, tz:&quot;Africa/Maseru&quot;, pop:170 },
{ name:&quot;Windhoek&quot;, country:&quot;Namibia&quot;, region:&quot;Africa&quot;, lat:-22.57, lon:17.08, tz:&quot;Africa/Windhoek&quot;, pop:171 },
{ name:&quot;Nouadhibou&quot;, country:&quot;Mauritania&quot;, region:&quot;Africa&quot;, lat:20.93, lon:-17.03, tz:&quot;Africa/Nouakchott&quot;, pop:172 },  // optional major city
{ name:&quot;Sana&#39;a&quot;, country:&quot;Western Sahara&quot;, region:&quot;Africa&quot;, lat:24.25, lon:-15.50, tz:&quot;Africa/El_Aaiun&quot;, pop:173 }, // disputed territory, optional

/* ===================== AMERICAS ===================== */
{ name:&quot;Washington DC&quot;, country:&quot;United States&quot;, region:&quot;North America&quot;, lat:38.90, lon:-77.03, tz:&quot;America/New_York&quot;, pop:174 },
{ name:&quot;New York&quot;, country:&quot;United States&quot;, region:&quot;North America&quot;, lat:40.71, lon:-74.00, tz:&quot;America/New_York&quot;, pop:175 },
{ name:&quot;Los Angeles&quot;, country:&quot;United States&quot;, region:&quot;North America&quot;, lat:34.05, lon:-118.24, tz:&quot;America/Los_Angeles&quot;, pop:176 },
{ name:&quot;Chicago&quot;, country:&quot;United States&quot;, region:&quot;North America&quot;, lat:41.87, lon:-87.62, tz:&quot;America/Chicago&quot;, pop:177 },
{ name:&quot;Ottawa&quot;, country:&quot;Canada&quot;, region:&quot;North America&quot;, lat:45.42, lon:-75.69, tz:&quot;America/Toronto&quot;, pop:178 },
{ name:&quot;Toronto&quot;, country:&quot;Canada&quot;, region:&quot;North America&quot;, lat:43.65, lon:-79.38, tz:&quot;America/Toronto&quot;, pop:179 },
{ name:&quot;Vancouver&quot;, country:&quot;Canada&quot;, region:&quot;North America&quot;, lat:49.28, lon:-123.12, tz:&quot;America/Vancouver&quot;, pop:180 },
{ name:&quot;Mexico City&quot;, country:&quot;Mexico&quot;, region:&quot;North America&quot;, lat:19.43, lon:-99.13, tz:&quot;America/Mexico_City&quot;, pop:181 },
{ name:&quot;Brasilia&quot;, country:&quot;Brazil&quot;, region:&quot;South America&quot;, lat:-15.78, lon:-47.93, tz:&quot;America/Sao_Paulo&quot;, pop:182 },
{ name:&quot;Sao Paulo&quot;, country:&quot;Brazil&quot;, region:&quot;South America&quot;, lat:-23.55, lon:-46.63, tz:&quot;America/Sao_Paulo&quot;, pop:183 },
{ name:&quot;Rio de Janeiro&quot;, country:&quot;Brazil&quot;, region:&quot;South America&quot;, lat:-22.90, lon:-43.17, tz:&quot;America/Sao_Paulo&quot;, pop:184 },
{ name:&quot;Buenos Aires&quot;, country:&quot;Argentina&quot;, region:&quot;South America&quot;, lat:-34.60, lon:-58.38, tz:&quot;America/Argentina/Buenos_Aires&quot;, pop:185 },
{ name:&quot;Bogota&quot;, country:&quot;Colombia&quot;, region:&quot;South America&quot;, lat:4.71, lon:-74.07, tz:&quot;America/Bogota&quot;, pop:186 },
{ name:&quot;Lima&quot;, country:&quot;Peru&quot;, region:&quot;South America&quot;, lat:-12.04, lon:-77.04, tz:&quot;America/Lima&quot;, pop:187 },
{ name:&quot;Santiago&quot;, country:&quot;Chile&quot;, region:&quot;South America&quot;, lat:-33.45, lon:-70.66, tz:&quot;America/Santiago&quot;, pop:188 },
{ name:&quot;Havana&quot;, country:&quot;Cuba&quot;, region:&quot;North America&quot;, lat:23.11, lon:-82.36, tz:&quot;America/Havana&quot;, pop:189 },
{ name:&quot;Panama City&quot;, country:&quot;Panama&quot;, region:&quot;North America&quot;, lat:8.98, lon:-79.52, tz:&quot;America/Panama&quot;, pop:190 },
{ name:&quot;San Jose&quot;, country:&quot;Costa Rica&quot;, region:&quot;North America&quot;, lat:9.93, lon:-84.08, tz:&quot;America/Costa_Rica&quot;, pop:191 },
{ name:&quot;Caracas&quot;, country:&quot;Venezuela&quot;, region:&quot;South America&quot;, lat:10.48, lon:-66.90, tz:&quot;America/Caracas&quot;, pop:192 },
{ name:&quot;Nassau&quot;, country:&quot;The Bahamas&quot;, region:&quot;North America&quot;, lat:25.05, lon:-77.35, tz:&quot;America/Nassau&quot;, pop:193 },
{ name:&quot;Belmopan&quot;, country:&quot;Belize&quot;, region:&quot;North America&quot;, lat:17.25, lon:-88.77, tz:&quot;America/Belize&quot;, pop:194 },
{ name:&quot;Guatemala City&quot;, country:&quot;Guatemala&quot;, region:&quot;North America&quot;, lat:14.63, lon:-90.55, tz:&quot;America/Guatemala&quot;, pop:195 },
{ name:&quot;San Salvador&quot;, country:&quot;El Salvador&quot;, region:&quot;North America&quot;, lat:13.69, lon:-89.19, tz:&quot;America/El_Salvador&quot;, pop:196 },
{ name:&quot;Tegucigalpa&quot;, country:&quot;Honduras&quot;, region:&quot;North America&quot;, lat:14.07, lon:-87.19, tz:&quot;America/Tegucigalpa&quot;, pop:197 },
{ name:&quot;Managua&quot;, country:&quot;Nicaragua&quot;, region:&quot;North America&quot;, lat:12.14, lon:-86.25, tz:&quot;America/Managua&quot;, pop:198 },
{ name:&quot;Port-au-Prince&quot;, country:&quot;Haiti&quot;, region:&quot;North America&quot;, lat:18.54, lon:-72.34, tz:&quot;America/Port-au-Prince&quot;, pop:199 },
{ name:&quot;Santo Domingo&quot;, country:&quot;Dominican Republic&quot;, region:&quot;North America&quot;, lat:18.48, lon:-69.91, tz:&quot;America/Santo_Domingo&quot;, pop:200 },
{ name:&quot;Kingston&quot;, country:&quot;Jamaica&quot;, region:&quot;North America&quot;, lat:17.97, lon:-76.79, tz:&quot;America/Jamaica&quot;, pop:201 },
{ name:&quot;Bridgetown&quot;, country:&quot;Barbados&quot;, region:&quot;North America&quot;, lat:13.10, lon:-59.61, tz:&quot;America/Barbados&quot;, pop:202 },
{ name:&quot;Saint John&#39;s&quot;, country:&quot;Antigua and Barbuda&quot;, region:&quot;North America&quot;, lat:17.12, lon:-61.85, tz:&quot;America/Antigua&quot;, pop:203 },
{ name:&quot;Roseau&quot;, country:&quot;Dominica&quot;, region:&quot;North America&quot;, lat:15.30, lon:-61.39, tz:&quot;America/Dominica&quot;, pop:204 },
{ name:&quot;St. George&#39;s&quot;, country:&quot;Grenada&quot;, region:&quot;North America&quot;, lat:12.05, lon:-61.75, tz:&quot;America/Grenada&quot;, pop:205 },
{ name:&quot;Basseterre&quot;, country:&quot;Saint Kitts and Nevis&quot;, region:&quot;North America&quot;, lat:17.30, lon:-62.73, tz:&quot;America/St_Kitts&quot;, pop:206 },
{ name:&quot;Castries&quot;, country:&quot;Saint Lucia&quot;, region:&quot;North America&quot;, lat:14.01, lon:-60.99, tz:&quot;America/St_Lucia&quot;, pop:207 },
{ name:&quot;Kingstown&quot;, country:&quot;Saint Vincent and the Grenadines&quot;, region:&quot;North America&quot;, lat:13.16, lon:-61.23, tz:&quot;America/St_Vincent&quot;, pop:208 },
{ name:&quot;Port of Spain&quot;, country:&quot;Trinidad and Tobago&quot;, region:&quot;North America&quot;, lat:10.66, lon:-61.52, tz:&quot;America/Port_of_Spain&quot;, pop:209 },
{ name:&quot;Quito&quot;, country:&quot;Ecuador&quot;, region:&quot;South America&quot;, lat:-0.18, lon:-78.47, tz:&quot;America/Guayaquil&quot;, pop:210 },
{ name:&quot;Georgetown&quot;, country:&quot;Guyana&quot;, region:&quot;South America&quot;, lat:6.80, lon:-58.16, tz:&quot;America/Guyana&quot;, pop:211 },
{ name:&quot;Asuncion&quot;, country:&quot;Paraguay&quot;, region:&quot;South America&quot;, lat:-25.26, lon:-57.58, tz:&quot;America/Asuncion&quot;, pop:212 },
{ name:&quot;Paramaribo&quot;, country:&quot;Suriname&quot;, region:&quot;South America&quot;, lat:5.85, lon:-55.17, tz:&quot;America/Paramaribo&quot;, pop:213 },
{ name:&quot;Montevideo&quot;, country:&quot;Uruguay&quot;, region:&quot;South America&quot;, lat:-34.90, lon:-56.16, tz:&quot;America/Montevideo&quot;, pop:214 },
{ name:&quot;Sucre&quot;, country:&quot;Bolivia&quot;, region:&quot;South America&quot;, lat:-19.03, lon:-65.26, tz:&quot;America/La_Paz&quot;, pop:215 },
{ name:&quot;La Paz&quot;, country:&quot;Bolivia&quot;, region:&quot;South America&quot;, lat:-16.50, lon:-68.15, tz:&quot;America/La_Paz&quot;, pop:216 },

/* ===================== OCEANIA ===================== */
{ name:&quot;Canberra&quot;, country:&quot;Australia&quot;, region:&quot;Oceania&quot;, lat:-35.28, lon:149.13, tz:&quot;Australia/Sydney&quot;, pop:217 },
{ name:&quot;Sydney&quot;, country:&quot;Australia&quot;, region:&quot;Oceania&quot;, lat:-33.86, lon:151.20, tz:&quot;Australia/Sydney&quot;, pop:218 },
{ name:&quot;Melbourne&quot;, country:&quot;Australia&quot;, region:&quot;Oceania&quot;, lat:-37.81, lon:144.96, tz:&quot;Australia/Melbourne&quot;, pop:219 },
{ name:&quot;Wellington&quot;, country:&quot;New Zealand&quot;, region:&quot;Oceania&quot;, lat:-41.28, lon:174.77, tz:&quot;Pacific/Auckland&quot;, pop:220 },
{ name:&quot;Auckland&quot;, country:&quot;New Zealand&quot;, region:&quot;Oceania&quot;, lat:-36.84, lon:174.76, tz:&quot;Pacific/Auckland&quot;, pop:221 },
{ name:&quot;Port Moresby&quot;, country:&quot;Papua New Guinea&quot;, region:&quot;Oceania&quot;, lat:-9.44, lon:147.18, tz:&quot;Pacific/Port_Moresby&quot;, pop:222 },
{ name:&quot;Suva&quot;, country:&quot;Fiji&quot;, region:&quot;Oceania&quot;, lat:-18.14, lon:178.44, tz:&quot;Pacific/Fiji&quot;, pop:223 },
{ name:&quot;Apia&quot;, country:&quot;Samoa&quot;, region:&quot;Oceania&quot;, lat:-13.83, lon:-171.77, tz:&quot;Pacific/Apia&quot;, pop:224 },
{ name:&quot;Nuku&#39;alofa&quot;, country:&quot;Tonga&quot;, region:&quot;Oceania&quot;, lat:-21.14, lon:-175.20, tz:&quot;Pacific/Tongatapu&quot;, pop:225 },
{ name:&quot;Honiara&quot;, country:&quot;Solomon Islands&quot;, region:&quot;Oceania&quot;, lat:-9.43, lon:159.95, tz:&quot;Pacific/Guadalcanal&quot;, pop:226 },
{ name:&quot;Port Vila&quot;, country:&quot;Vanuatu&quot;, region:&quot;Oceania&quot;, lat:-17.74, lon:168.32, tz:&quot;Pacific/Efate&quot;, pop:227 },
{ name:&quot;Tarawa&quot;, country:&quot;Kiribati&quot;, region:&quot;Oceania&quot;, lat:1.33, lon:172.98, tz:&quot;Pacific/Tarawa&quot;, pop:228 },
{ name:&quot;Majuro&quot;, country:&quot;Marshall Islands&quot;, region:&quot;Oceania&quot;, lat:7.12, lon:171.38, tz:&quot;Pacific/Majuro&quot;, pop:229 },
{ name:&quot;Palikir&quot;, country:&quot;Micronesia&quot;, region:&quot;Oceania&quot;, lat:6.92, lon:158.16, tz:&quot;Pacific/Pohnpei&quot;, pop:230 },
{ name:&quot;Yaren&quot;, country:&quot;Nauru&quot;, region:&quot;Oceania&quot;, lat:-0.55, lon:166.92, tz:&quot;Pacific/Nauru&quot;, pop:231 },
{ name:&quot;Funafuti&quot;, country:&quot;Tuvalu&quot;, region:&quot;Oceania&quot;, lat:-8.52, lon:179.20, tz:&quot;Pacific/Funafuti&quot;, pop:232 },

];

let activeData = [];

async function handleRegionChange() {
    const region = document.getElementById(&#39;regionFilter&#39;).value;
    const regionCities = citiesDB.filter(c =&gt; c.region === region);
    
    const grid = document.getElementById(&#39;grid&#39;);
    grid.innerHTML = `&lt;div style=&quot;text-align: center; padding: 40px; color: var(--primary);&quot;&gt;Fetching Weather for ${region}...&lt;/div&gt;`;

    const weatherResults = await Promise.all(regionCities.map(async (city) =&gt; {
        try {
            const res = await fetch(`https://api.open-meteo.com/v1/forecast?latitude=${city.lat}&amp;longitude=${city.lon}&amp;current=temperature_2m,is_day,weather_code,wind_speed_10m,relative_humidity_2m&amp;timezone=auto`);
            const data = await res.json();
            return { ...city, ...data.current, temp: data.current.temperature_2m };
        } catch {
            return { ...city, temp: &#39;--&#39;, is_day: 1, wind_speed_10m: &#39;--&#39;, relative_humidity_2m: &#39;--&#39; };
        }
    }));

    activeData = weatherResults;
    // CRITICAL FIX: Sort right after fetching data
    sortCities(); 
}

function renderGrid(data) {
    const grid = document.getElementById(&#39;grid&#39;);
    grid.innerHTML = &#39;&#39;;
    
    // If no specific data passed, use activeData
    const dataToRender = data || activeData;

    dataToRender.forEach(city =&gt; {
        const row = document.createElement(&#39;div&#39;);
        row.className = `city-row ${city.is_day ? &#39;theme-day&#39; : &#39;theme-night&#39;}`;
        row.innerHTML = `
            &lt;div class=&quot;col-name&quot;&gt;
                &lt;div class=&quot;city-name&quot;&gt;${city.name}&lt;/div&gt;
                &lt;div class=&quot;country-name&quot;&gt;${city.country}&lt;/div&gt;
            &lt;/div&gt;
            &lt;div&gt;&lt;img src=&quot;https://openweathermap.org/img/wn/0${city.is_day ? &#39;1d&#39; : &#39;1n&#39;}@2x.png&quot; class=&quot;weather-icon-img&quot;&gt;&lt;/div&gt;
            &lt;div class=&quot;col-temp&quot;&gt;${Math.round(city.temp) || &#39;--&#39;}°C&lt;/div&gt;
            &lt;div class=&quot;col-meta&quot;&gt;💨 ${city.wind_speed_10m}k/h | 💧 ${city.relative_humidity_2m}%&lt;/div&gt;
            &lt;div class=&quot;col-time&quot;&gt;
                &lt;div class=&quot;local-time&quot; data-tz=&quot;${city.tz}&quot;&gt;${luxon.DateTime.now().setZone(city.tz).toFormat(&#39;HH:mm&#39;)}&lt;/div&gt;
                &lt;div class=&quot;time-tz&quot;&gt;${luxon.DateTime.now().setZone(city.tz).toFormat(&#39;ZZZZ&#39;)}&lt;/div&gt;
            &lt;/div&gt;
        `;
        grid.appendChild(row);
    });
}

function updateClocks() {
    document.querySelectorAll(&#39;.local-time&#39;).forEach(el =&gt; {
        el.textContent = luxon.DateTime.now().setZone(el.dataset.tz).toFormat(&#39;HH:mm&#39;);
    });
}

// RESTORED SORT FUNCTION
window.sortCities = () =&gt; {
    const mode = document.getElementById(&#39;sort&#39;).value;
    
    // Always sort the global activeData array so filters apply to sorted data
    if(mode === &#39;name&#39;) activeData.sort((a,b) =&gt; a.name.localeCompare(b.name));
    if(mode === &#39;pop&#39;) activeData.sort((a,b) =&gt; a.pop - b.pop);
    
    // For temperature, handle missing data safely
    if(mode === &#39;temp_high&#39;) activeData.sort((a,b) =&gt; (b.temp === &#39;--&#39; ? -999 : b.temp) - (a.temp === &#39;--&#39; ? -999 : a.temp));
    
    // Re-render
    renderGrid(activeData);
};

window.filterCities = async () =&gt; {
    const q = document.getElementById(&#39;search&#39;).value.toLowerCase().trim();
    if (q === &quot;&quot;) {
        handleRegionChange(); // Go back to Region View
        return;
    }

    // 1. Search Logic
    const globalMatches = citiesDB.filter(c =&gt; 
        c.name.toLowerCase().includes(q) || 
        c.country.toLowerCase().includes(q)
    );

    if (globalMatches.length &gt; 0) {
        const grid = document.getElementById(&#39;grid&#39;);
        grid.innerHTML = `&lt;div style=&quot;text-align: center; padding: 20px; font-size: 13px; opacity: 0.6;&quot;&gt;Searching globally...&lt;/div&gt;`;

        const weatherResults = await Promise.all(globalMatches.map(async (city) =&gt; {
            try {
                const res = await fetch(`https://api.open-meteo.com/v1/forecast?latitude=${city.lat}&amp;longitude=${city.lon}&amp;current=temperature_2m,is_day,weather_code,wind_speed_10m,relative_humidity_2m&amp;timezone=auto`);
                const data = await res.json();
                return { ...city, ...data.current, temp: data.current.temperature_2m };
            } catch {
                return { ...city, temp: &#39;--&#39;, is_day: 1, wind_speed_10m: &#39;--&#39;, relative_humidity_2m: &#39;--&#39; };
            }
        }));

        activeData = weatherResults;
        sortCities(); // Apply sort to search results too
    } else {
        document.getElementById(&#39;grid&#39;).innerHTML = `&lt;div style=&quot;text-align: center; padding: 40px; opacity: 0.5;&quot;&gt;No results found for &quot;${q}&quot;&lt;/div&gt;`;
    }
};

// Start
handleRegionChange();
setInterval(updateClocks, 1000);
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/1349756561215473232'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9022839565483764368/posts/default/1349756561215473232'/><link rel='alternate' type='text/html' href='https://www.otechy.com/2026/02/world-weather-studio-online.html' title='World Weather Studio Online'/><author><name>Gyan Mainali</name><uri>http://www.blogger.com/profile/18241384659702317569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCcEfrfBf955vnm9oGY2UbbK78HlpdJ3o37XN4ENMw0OWGMq_9zgctmp5w0w0pdSqSg5IdKEtHQo2nK9WFl1RfTDMM_e3D62NchZaZwVGo4e01AP4M4IxdreOAkMl7Ue2Vw3dHTYKTuVP9o05DYj_P4EFkJJJczOwexwO5cgQmwF1OzQ/s1600/Gyan_Border.jpg'/></author></entry></feed>