endpoints.path: /
endpoints.endpoint_type: HTTP
endpoints.scan_time: 2025-10-09T16:26:59.266296
endpoints.uri: https://sltax.undtec.com/
endpoints.protocol: HTTP/1.1
endpoints.status_reason: OK
endpoints.key: Content-Encoding
endpoints.headers: gzip
endpoints.key: Connection
endpoints.headers: keep-alive
endpoints.key: Date
endpoints.headers: <REDACTED>
endpoints.key: ETag
endpoints.headers: W/"689217a2-b8e2"
endpoints.key: Last-Modified
endpoints.headers: Tue, 05 Aug 2025 14:39:30 GMT
endpoints.key: Transfer-Encoding
endpoints.headers: chunked
endpoints.key: Server
endpoints.headers: nginx
endpoints.key: Content-Type
endpoints.headers: text/html
endpoints.key: Vary
endpoints.headers: Accept-Encoding
endpoints.html_tags: <title>Surplus Lines Insurance Tax and Calculator by State - Complete Guide</title> <meta charset="utf-8" /> <meta name="keywords" content="Surplus Lines Tax, Surplus Lines Insurance, State Insurance Tax, Nonadmitted Insurance, Surplus Lines Association, Export List, Industrial Insured Exemption, Stamping Fee, SLAS Clearinghouse"> <meta name="description" content="Comprehensive guide to surplus lines insurance tax rates, fees, associations, export lists, and industrial insured exemptions by state. Find detailed information for all U.S. states and territories including stamping fees, surcharges, and regulatory fees."> <meta content="width=device-width, initial-scale=1.0" name="viewport" />
endpoints.body: <!-- Build timestamp: 2025-01-28 14:55:00 UTC -->
  <!DOCTYPE html>
  <html lang="en">
  <head>
      <meta charset="utf-8" />
      
      <meta name="keywords" content="Surplus Lines Tax, Surplus Lines Insurance, State Insurance Tax, Nonadmitted Insurance, Surplus Lines Association, Export List, Industrial Insured Exemption, Stamping Fee, SLAS Clearinghouse">
      <meta name="description" content="Comprehensive guide to surplus lines insurance tax rates, fees, associations, export lists, and industrial insured exemptions by state. Find detailed information for all U.S. states and territories including stamping fees, surcharges, and regulatory fees.">
      <meta content="width=device-width, initial-scale=1.0" name="viewport" />
      
      <title>Surplus Lines Insurance Tax and Calculator by State - Complete Guide</title>
      
      <!-- Favicon -->
      <link rel="icon" type="image/x-icon" href="favicon.ico">
      <link rel="icon" type="image/svg+xml" href="images/undtec_logo.svg">
      
      <!-- Local Tailwind CSS -->
      <link href="css/jvmx.css" rel="stylesheet" />
      <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;900&display=swap" rel="stylesheet" />
      <link href="https://fonts.googleapis.com/icon?family=Material+Icons+Sharp" rel="stylesheet" />
      <link href="css/styles.css" rel="stylesheet" />
      
      <!-- Google Analytics -->
      <script async src="https://www.googletagmanager.com/gtag/js?id=G-RVJ5TNJ2P7"></script>
      <script>
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.push(arguments);}
          gtag('js', new Date());
          gtag('config', 'G-RVJ5TNJ2P7');
      </script>
      
      <!-- Prevent theme flash on load -->
      <script>
          // Apply saved theme immediately to prevent flash
          let theme = localStorage.getItem('theme');
          if (!theme) {
              // Check system preference
              theme = (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) ? 'dark' : 'light';
          }
          document.documentElement.setAttribute('data-theme', theme);
      </script>
      
      <style>
          /* Loading spinner styles */
          .loading-container {
              display: flex;
              flex-direction: column;
              align-items: center;
              justify-content: center;
              min-height: 300px;
              padding: 2rem;
          }
          
          .spinner-wrapper {
              position: relative;
              width: 80px;
              height: 80px;
          }
          
          .spinner {
              position: absolute;
              top: 0;
              left: 0;
              width: 100%;
              height: 100%;
              border-radius: 50%;
              animation: rotate 1.5s linear infinite;
          }
          
          .spinner-inner {
              width: 100%;
              height: 100%;
              border-radius: 50%;
              border: 4px solid transparent;
              border-top-color: #3DE2A0;
              border-right-color: #72ADBB;
              animation: pulse 2s ease-in-out infinite;
          }
          
          .spinner-outer {
              width: 100%;
              height: 100%;
              border-radius: 50%;
              border: 4px solid transparent;
              border-bottom-color: #FFB26B;
              border-left-color: #3A506B;
              animation: rotate-reverse 2s linear infinite;
          }
          
          @keyframes rotate {
              from {
                  transform: rotate(0deg);
              }
              to {
                  transform: rotate(360deg);
              }
          }
          
          @keyframes rotate-reverse {
              from {
                  transform: rotate(360deg);
              }
              to {
                  transform: rotate(0deg);
              }
          }
          
          @keyframes pulse {
              0%, 100% {
                  transform: scale(1);
                  opacity: 1;
              }
              50% {
                  transform: scale(0.9);
                  opacity: 0.8;
              }
          }
          
          .loading-text {
              margin-top: 1.5rem;
              font-size: 1.125rem;
              color: #3A506B;
              font-weight: 500;
              animation: fade-pulse 2s ease-in-out infinite;
          }
          
          @keyframes fade-pulse {
              0%, 100% {
                  opacity: 1;
              }
              50% {
                  opacity: 0.6;
              }
          }
          
          /* Error state styles */
          .error-container {
              display: flex;
              flex-direction: column;
              align-items: center;
              justify-content: center;
              min-height: 300px;
              padding: 2rem;
              text-align: center;
          }
          
          .error-icon {
              width: 64px;
              height: 64px;
              background-color: #FEE2E2;
              border-radius: 50%;
              display: flex;
              align-items: center;
              justify-content: center;
              margin-bottom: 1rem;
          }
          
          .error-icon span {
              font-size: 32px;
              color: #DC2626;
          }
          
          .error-message {
              color: #DC2626;
              font-size: 1.125rem;
              font-weight: 500;
              margin-bottom: 0.5rem;
          }
          
          .error-details {
              color: #6B7280;
              font-size: 0.875rem;
              margin-bottom: 1.5rem;
          }
          
          .retry-button {
              background-color: #3DE2A0;
              color: white;
              padding: 0.5rem 1.5rem;
              border-radius: 0.375rem;
              font-weight: 500;
              transition: all 0.2s;
              border: none;
              cursor: pointer;
          }
          
          .retry-button:hover {
              background-color: #35c98e;
              transform: translateY(-1px);
              box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
          }
      </style>
      
  
  
  </head>
  <body class="bg-gray-50 text-gray-900 font-inter">
      <!-- Header -->
      <header class="fixed top-0 left-0 right-0 z-50 backdrop-blur-md border-b border-gray-200" style="background-color: #FFB26B;">
          <div class="container mx-auto px-4">
              <nav class="flex items-center justify-between h-16">
                  <!-- Logo -->
                  <a href="/" class="flex items-center">
                      <img src="images/undtec_logo_charcoal.svg" alt="Underwriters Technologies" class="logo-underwriters" style="height: 5.5rem; width: auto; margin-right: 0.5rem;" />
                      <span style="font-size: 1.65rem; font-family: 'Magistral', 'Inter', sans-serif; font-weight: 700; color: #2E3C43;">Underwriters Technologies</span>
                  </a>
                  
                  <!-- Navigation -->
                  <div class="flex items-center space-x-6">
                      <button id="aboutBtn" class="hover:text-mint transition" style="color: #2E3C43; font-weight: 500;">About</button>
                      <button id="calculatorBtn" class="hover:text-mint transition flex items-center gap-2" style="color: #2E3C43; font-weight: 500;">
                          <span class="material-icons-sharp text-xl">calculate</span>
                          <span>Calculator</span>
                      </button>
                      <button id="apiBtn" class="hover:text-mint transition flex items-center gap-2" style="color: #2E3C43; font-weight: 500;">
                          <span class="material-icons-sharp text-xl">code</span>
                          <span>API</span>
                      </button>
                      <button id="contactBtn" class="hover:text-mint transition flex items-center gap-2" style="color: #2E3C43; font-weight: 500;">
                          <span class="material-icons-sharp text-xl">email</span>
                          <span>Contact</span>
                      </button>
                      
                      <!-- Dark Mode Toggle -->
                      <button id="themeToggle" class="theme-toggle" aria-label="Toggle dark mode" style="color: #2E3C43;">
                          <span class="material-icons-sharp theme-icon sun">light_mode</span>
                          <span class="material-icons-sharp theme-icon moon">dark_mode</span>
                      </button>
                  </div>
              </nav>
          </div>
      </header>
      
      <!-- Main Content -->
      <main class="pt-24 pb-16 px-4">
          <div class="container mx-auto max-w-7xl">
              <h1 class="text-3xl font-bold mb-8 text-center">Surplus Lines Insurance Tax and Calculator by State</h1>
              
              <!-- About Section -->
              <div id="aboutSection" class="hidden mb-8 bg-white rounded-lg p-6 max-w-4xl mx-auto border border-gray-200">
                  <h2 class="text-xl font-semibold mb-4 text-mint">About This Reference</h2>
                  <p class="text-gray-700 mb-4">
                      This comprehensive reference provides up-to-date information on surplus lines insurance regulations across all U.S. states, 
                      the District of Columbia, Puerto Rico, and the U.S. Virgin Islands. The data includes tax rates, all additional fees broken down by type, 
                      payment schedules, and legislative sources for each jurisdiction.
                  </p>
                  <p class="text-gray-700 mb-4">
                      <strong>Fee Types Tracked:</strong>
                  </p>
                  <ul class="list-disc list-inside text-gray-700 space-y-1 mb-4">
                      <li><strong>Base Tax Rate:</strong> Primary surplus lines premium tax percentage</li>
                      <li><strong>Stamping Fee:</strong> Fee for processing and filing surplus lines policies</li>
                      <li><strong>Other Fees:</strong> Including filing fees, service fees, surcharges, regulatory fees, fire marshal taxes, SLAS clearinghouse fees, and flat fees</li>
                      <li><strong>Special Notes:</strong> Effective dates, exemptions, and special conditions</li>
                  </ul>
                  <p class="text-gray-700 text-sm">
                      <em>Note: Regulations change frequently. Always verify current requirements with state insurance departments.</em>
                  </p>
              </div>
              
              <!-- Data Table Container -->
              <div id="tableContainer">
                  <!-- Loading spinner will be shown here initially -->
                  <div class="table-wrapper bg-white rounded-lg border border-gray-200">
                      <div class="loading-container">
                          <div class="spinner-wrapper">
                              <div class="spinner">
                                  <div class="spinner-inner"></div>
                              </div>
                              <div class="spinner spinner-outer"></div>
                          </div>
                          <div class="loading-text">Loading surplus lines data...</div>
                      </div>
                  </div>
              </div>
          </div>
      </main>
      
      <!-- Footer -->
      <footer class="bg-white py-8 px-4 border-t border-gray-200">
          <div class="container mx-auto max-w-6xl text-center">
              <p class="text-gray-600 mb-2">
                  &copy; <a href="https://www.undtec.com" target="_blank" class="text-mint hover:text-sky transition">Underwriters Technologies</a> 2025
              </p>
              <p class="text-gray-500 text-sm">
                  Data compiled from state insurance departments. Always verify current requirements with state insurance regulators.
              </p>
              <div class="mt-4 flex items-center justify-center gap-6 text-sm text-gray-500">
                  <span class="flex items-center gap-1">
                      <span class="material-icons-sharp text-sm" style="color: #3DE2A0;">update</span>
                      Updated June 2025
                  </span>
              </div>
              <div class="mt-4 flex items-center justify-center gap-6 text-sm text-gray-500">
                  <a href="privacy-policy/" class="hover:text-mint transition">Privacy Policy</a>
                  <span>|</span>
                  <a href="terms-of-service/" class="hover:text-mint transition">Terms of Service</a>
              </div>
          </div>
      </footer>
      
      <!-- Contact Form Modal -->
      <div id="contactModal" class="modal-overlay">
          <div class="modal-content">
              <div class="p-6">
                  <div class="flex justify-between items-center mb-4">
                      <h2 class="text-2xl font-bold text-gray-900 flex items-center gap-2">
                          <span class="material-icons-sharp" style="color: #3DE2A0;">email</span>
                          Contact Us
                      </h2>
                      <button id="closeContact" class="text-gray-400 hover:text-gray-600">
                          <span class="material-icons-sharp text-2xl" style="color: #3DE2A0;">close</span>
                      </button>
                  </div>
                  
                  <form id="contactForm" class="space-y-4">
                      <div>
                          <label for="name" class="block text-sm font-medium text-gray-700 mb-2">Name *</label>
                          <input type="text" id="name" name="name" required
                                 class="w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500 focus:border-transparent">
                      </div>
                      
                      <div>
                          <label for="email" class="block text-sm font-medium text-gray-700 mb-2">Email *</label>
                          <input type="email" id="email" name="email" required
                                 class="w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500 focus:border-transparent">
                      </div>
                      
                      <div>
                          <label for="company" class="block text-sm font-medium text-gray-700 mb-2">Company</label>
                          <input type="text" id="company" name="company"
                                 class="w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500 focus:border-transparent">
                      </div>
                      
                      <div>
                          <label for="type" class="block text-sm font-medium text-gray-700 mb-2">Inquiry Type *</label>
                          <select id="type" name="type" required
                                  class="w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500 focus:border-transparent">
                              <option value="">Select inquiry type...</option>
                              <option value="Sign up for API">Sign up for API</option>
                              <option value="Tax Rate Correction">Tax Rate Correction</option>
                              <option value="Rate Update">Rate Update</option>
                              <option value="Report">Report</option>
                              <option value="Feature Request">Feature Request</option>
                              <option value="Technical Support">Technical Support</option>
                              <option value="Other">Other</option>
                          </select>
                      </div>
                      
                      <div>
                          <label for="message" class="block text-sm font-medium text-gray-700 mb-2">Message *</label>
                          <textarea id="message" name="message" rows="6" required
                                    class="w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500 focus:border-transparent"></textarea>
                      </div>
                      
                      <!-- Hidden site field -->
                      <input type="hidden" name="site" value="surpluslines.reference">
                      
                      <button type="submit" class="btn-primary w-full">
                          Send Message
                      </button>
                  </form>
                  
  
              </div>
          </div>
      </div>
      
      <!-- Custom Notification Toast -->
      <div id="notificationToast" class="notification-toast">
          <span class="notification-icon" id="notificationIcon"></span>
          <div class="notification-content">
              <div class="notification-title" id="notificationTitle"></div>
              <div class="notification-message" id="notificationMessage"></div>
          </div>
      </div>
      
      <!-- Calculator Modal -->
      <div id="calculatorModal" class="modal-overlay">
          <div class="modal-content">
              <div class="p-6">
                  <div class="flex justify-between items-center mb-4">
                      <h2 class="text-2xl font-bold text-gray-900 flex items-center gap-2">
                          <span class="material-icons-sharp" style="color: #3DE2A0;">calculate</span>
                          Surplus Lines Tax Calculator
                      </h2>
                      <button id="closeCalculator" class="text-gray-400 hover:text-gray-600">
                          <span class="material-icons-sharp text-2xl" style="color: #3DE2A0;">close</span>
                      </button>
                  </div>
                  
                  <div class="mb-6">
                      <label class="block text-sm font-medium text-gray-700 mb-2">Select State</label>
                      <select id="calcStateSelect" class="w-full border border-gray-300 rounded-md px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-transparent">
                          <option value="">Choose a state...</option>
                          <option value="Alabama">Alabama</option>
                          <option value="Alaska">Alaska</option>
                          <option value="Arizona">Arizona</option>
                          <option value="Arkansas">Arkansas</option>
                          <option value="California">California</option>
                          <option value="Colorado">Colorado</option>
                          <option value="Connecticut">Connecticut</option>
                          <option value="Delaware">Delaware</option>
                          <option value="District of Columbia">District of Columbia</option>
                          <option value="Florida">Florida</option>
                          <option value="Georgia">Georgia</option>
                          <option value="Hawaii">Hawaii</option>
                          <option value="Idaho">Idaho</option>
                          <option value="Illinois">Illinois</option>
                          <option value="Indiana">Indiana</option>
                          <option value="Iowa">Iowa</option>
                          <option value="Kansas">Kansas</option>
                          <option value="Kentucky">Kentucky</option>
                          <option value="Louisiana">Louisiana</option>
                          <option value="Maine">Maine</option>
                          <option value="Maryland">Maryland</option>
                          <option value="Massachusetts">Massachusetts</option>
                          <option value="Michigan">Michigan</option>
                          <option value="Minnesota">Minnesota</option>
                          <option value="Mississippi">Mississippi</option>
                          <option value="Missouri">Missouri</option>
                          <option value="Montana">Montana</option>
                          <option value="Nebraska">Nebraska</option>
                          <option value="Nevada">Nevada</option>
                          <option value="New Hampshire">New Hampshire</option>
                          <option value="New Jersey">New Jersey</option>
                          <option value="New Mexico">New Mexico</option>
                          <option value="New York">New York</option>
                          <option value="North Carolina">North Carolina</option>
                          <option value="North Dakota">North Dakota</option>
                          <option value="Ohio">Ohio</option>
                          <option value="Oklahoma">Oklahoma</option>
                          <option value="Oregon">Oregon</option>
                          <option value="Pennsylvania">Pennsylvania</option>
                          <option value="Puerto Rico">Puerto Rico</option>
                          <option value="Rhode Island">Rhode Island</option>
                          <option value="South Carolina">South Carolina</option>
                          <option value="South Dakota">South Dakota</option>
                          <option value="Tennessee">Tennessee</option>
                          <option value="Texas">Texas</option>
                          <option value="U.S. Virgin Islands">U.S. Virgin Islands</option>
                          <option value="Utah">Utah</option>
                          <option value="Vermont">Vermont</option>
                          <option value="Virginia">Virginia</option>
                          <option value="Washington">Washington</option>
                          <option value="West Virginia">West Virginia</option>
                          <option value="Wisconsin">Wisconsin</option>
                          <option value="Wyoming">Wyoming</option>
                      </select>
                  </div>
                  
                  <div id="calculatorContent" class="hidden">
                      <div class="mb-6">
                          <label class="block text-sm font-medium text-gray-700 mb-2">Premium Amount</label>
                          <div class="relative">
                              <span class="absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-500">$</span>
                              <input type="number" id="premiumInput" 
                                     class="w-full pl-8 pr-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500 focus:border-transparent"
                                     placeholder="0.00" step="0.01">
                          </div>
                      </div>
                      
                      <!-- Alaska Wet Marine Option -->
                      <div id="alaskaWetMarineOption" class="hidden mb-6">
                          <label class="flex items-center space-x-3">
                              <input type="checkbox" id="wetMarineCheckbox" 
                                     class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded">
                              <span class="text-sm font-medium text-gray-700">Wet Marine Coverage (3.7% independent procurement tax)</span>
                          </label>
                          <p class="text-xs text-gray-500 mt-1 ml-7">Check this box if the coverage is for wet marine risks</p>
                      </div>
                      
                      <!-- Illinois Fire Marshal Tax Option -->
                      <div id="illinoisFireMarshalOption" class="hidden mb-6">
                          <label class="flex items-center space-x-3">
                              <input type="checkbox" id="fireMarshalCheckbox" 
                                     class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded">
                              <span class="text-sm font-medium text-gray-700">Apply Fire Marshal Tax (up to 1%)</span>
                          </label>
                          <div class="mt-2 ml-7">
                              <label class="block text-xs font-medium text-gray-600 mb-1">Fire Marshal Tax Rate (%)</label>
                              <input type="number" id="fireMarshalRate" 
                                     class="w-32 px-2 py-1 text-sm border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500 focus:border-transparent"
                                     placeholder="0.00" step="0.01" min="0" max="1" value="1" disabled>
                          </div>
                      </div>
                      
                      <!-- Montana Fire Portion Option -->
                      <div id="montanaFireOption" class="hidden mb-6">
                          <label class="flex items-center space-x-3">
                              <input type="checkbox" id="firePortionCheckbox" 
                                     class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded">
                              <span class="text-sm font-medium text-gray-700">Fire Insurance Coverage (+2.5% additional tax)</span>
                          </label>
                          <p class="text-xs text-gray-500 mt-1 ml-7">Check if this is fire insurance coverage</p>
                      </div>
                      
                      <!-- Montana Electronic Filing Option -->
                      <div id="montanaElectronicOption" class="hidden mb-6">
                          <label class="flex items-center space-x-3">
                              <input type="checkbox" id="electronicFilingCheckbox" 
                                     class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded">
                              <span class="text-sm font-medium text-gray-700">Electronic Filing (0% stamping fee)</span>
                          </label>
                          <p class="text-xs text-gray-500 mt-1 ml-7">Check if filing electronically</p>
                      </div>
                      
                      <!-- South Dakota Fire Insurance Option -->
                      <div id="southDakotaFireOption" class="hidden mb-6">
                          <label class="flex items-center space-x-3">
                              <input type="checkbox" id="sdFireCheckbox" 
                                     class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded">
                              <span class="text-sm font-medium text-gray-700">Fire Insurance (3% tax rate instead of 2.5%)</span>
                          </label>
                          <p class="text-xs text-gray-500 mt-1 ml-7">Check if this is fire insurance coverage</p>
                      </div>
                      
                      <!-- Iowa Year Selection -->
                      <div id="iowaYearOption" class="hidden mb-6">
                          <label class="block text-sm font-medium text-gray-700 mb-2">Select Tax Year</label>
                          <select id="iowaYearSelect" class="w-full border border-gray-300 rounded-md px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-transparent">
                              <option value="2024">2024 (0.975%)</option>
                              <option value="2025" selected>2025 (0.95%)</option>
                              <option value="2026">2026 (0.925%)</option>
                              <option value="2027">2027+ (0.9%)</option>
                          </select>
                          <p class="text-xs text-gray-500 mt-1">Iowa has a decreasing tax rate schedule</p>
                      </div>
                      
                      <!-- Oregon New/Renewal Option -->
                      <div id="oregonNewRenewalOption" class="hidden mb-6">
                          <label class="flex items-center space-x-3">
                              <input type="checkbox" id="oregonNewRenewalCheckbox" checked
                                     class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded">
                              <span class="text-sm font-medium text-gray-700">New or Renewal Policy ($10 flat service charge)</span>
                          </label>
                          <p class="text-xs text-gray-500 mt-1 ml-7">Uncheck if this is not a new or renewal policy</p>
                      </div>
                      
                      <!-- Puerto Rico Medical Malpractice Option -->
                      <div id="puertoRicoMedMalOption" class="hidden mb-6">
                          <label class="flex items-center space-x-3">
                              <input type="checkbox" id="prMedMalCheckbox" 
                                     class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded">
                              <span class="text-sm font-medium text-gray-700">Medical Malpractice Coverage (Tax Exempt)</span>
                          </label>
                          <p class="text-xs text-gray-500 mt-1 ml-7">Check if this is medical malpractice coverage</p>
                      </div>
                      
                      <!-- Virginia Workers' Compensation Option -->
                      <div id="virginiaWorkersCompOption" class="hidden mb-6">
                          <label class="flex items-center space-x-3">
                              <input type="checkbox" id="vaWorkersCompCheckbox" 
                                     class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded">
                              <span class="text-sm font-medium text-gray-700">Workers' Compensation Insurance (Tax Exempt)</span>
                          </label>
                          <p class="text-xs text-gray-500 mt-1 ml-7">Check if this is workers' compensation insurance</p>
                      </div>
                      
                      <button id="calculateBtn" class="btn-primary w-full mb-6">
                          Calculate Taxes & Fees
                      </button>
                      
                      <div id="calculationResults" class="hidden">
                          <div class="flex justify-between items-center mb-3">
                              <h3 class="font-semibold text-lg">Calculation Breakdown</h3>
                              <button id="printResultsBtn" class="flex items-center gap-1 text-blue-600 hover:text-blue-800 transition-colors" title="Print results">
                                  <span class="material-icons-sharp text-xl" style="color: #3DE2A0;">print</span>
                                  <span class="text-sm">Print</span>
                              </button>
                          </div>
                          <div id="resultsContainer" class="bg-gray-50 rounded-lg p-4">
                              <!-- Results will be inserted here -->
                          </div>
                      </div>
                  </div>
                  
                  <div id="stateInfoCard" class="hidden mt-4 p-4 rounded-lg">
                      <h4 class="font-semibold text-sm mb-2">State Information</h4>
                      <div id="stateInfoContent" class="text-sm">
                          <!-- State info will be inserted here -->
                      </div>
                  </div>
              </div>
          </div>
      </div>
      
      <!-- Add the data loading script before other scripts -->
      <script>
          // Global variable to store surplus lines data
          let surplusLinesData = [];
          
          // Function to map API data to the expected format
          function mapApiData(apiData) {
              return apiData.map(item => ({
                  State: item.state,
                  TaxRate: item.tax_rate,
                  StampingFee: item.stamping_fee,
                  FilingFee: item.filing_fee,
                  ServiceFee: item.service_fee,
                  Surcharge: item.surcharge,
                  RegulatoryFee: item.regulatory_fee,
                  FireMarshalTax: item.fire_marshal_tax,
                  SLASClearinghouseFee: item.slas_clearinghouse_fee,
                  FlatFee: item.flat_fee,
                  SpecialNotes: item.special_notes,
                  PaymentFrequency: item.payment_frequency,
                  RoundingRule: item.rounding_rule,
                  LegislativeSource: item.legislative_source
              }));
          }
          
          // Load data when page loads
          document.addEventListener('DOMContentLoaded', function() {
              loadSurplusLinesData();
          });
          
          // Function to load data from webhook
          async function loadSurplusLinesData() {
              try {
                  // The loading spinner is already showing from the HTML
                  
                  // Fetch data from webhook
                  const response = await fetch('https://n8n.undtec.com/webhook/sltax_list', {
                      method: 'GET',
                      headers: {
                          'Accept': 'application/json',
                      },
                      mode: 'cors'
                  });
                  
                  if (!response.ok) {
                      throw new Error(`HTTP error! status: ${response.status}`);
                  }
                  
                  const data = await response.json();
                  
                  // Map the API data to the expected format
                  surplusLinesData = mapApiData(data);
                  
                  // Render the table
                  renderDataTable();
                  
                  // Initialize the table with data (main.js will handle this)
                  if (typeof window.initializeTable === 'function') {
                      window.initializeTable();
                  }
                  
              } catch (error) {
                  console.error('Error loading surplus lines data:', error);
                  showError('Unable to load surplus lines data', 'Check your internet connection and try again');
              }
          }
          
          // Function to show error state
          function showError(message = 'Failed to load data', details = 'Please try again later') {
              const errorHTML = `
                  <div class="table-wrapper bg-white rounded-lg border border-gray-200">
                      <div class="error-container">
                          <div class="error-icon">
                              <span class="material-icons-sharp">error_outline</span>
                          </div>
                          <div class="error-message">${message}</div>
                          <div class="error-details">${details}</div>
                          <button class="retry-button" onclick="loadSurplusLinesData()">
                              Try Again
                          </button>
                      </div>
                  </div>
              `;
              
              document.getElementById('tableContainer').innerHTML = errorHTML;
          }
          
          // Function to render the data table
          function renderDataTable() {
              const tableHTML = `
                  <div class="table-wrapper bg-white rounded-lg border border-gray-200">
                      <div class="table-container">
                          <table class="w-full">
                              <thead>
                              <tr class="border-b border-gray-200" style="background-color: #3A506B;">
                                  <th class="px-6 py-4 text-left text-xs font-medium text-white uppercase tracking-wider cursor-pointer hover:text-mint sort-indicator-container" onclick="sortTable('State')">
                                      State <span class="sort-indicator"></span>
                                  </th>
                                  <th class="px-6 py-4 text-left text-xs font-medium text-white uppercase tracking-wider cursor-pointer hover:text-mint sort-indicator-container" onclick="sortTable('TaxRate')">
                                      Tax Rate <span class="sort-indicator"></span>
                                  </th>
                                  <th class="px-6 py-4 text-center text-xs font-medium text-white uppercase tracking-wider">
                                      Stamping<br/>Fee
                                  </th>
                                  <th class="px-6 py-4 text-left text-xs font-medium text-white uppercase tracking-wider">
                                      Other Fees
                                  </th>
                                  <th class="px-6 py-4 text-left text-xs font-medium text-white uppercase tracking-wider">
                                      Special Notes
                                  </th>
                                  <th class="px-6 py-4 text-left text-xs font-medium text-white uppercase tracking-wider">
                                      Payment<br/>Frequency
                                  </th>
                                  <th class="px-6 py-4 text-center text-xs font-medium text-white uppercase tracking-wider">
                                      Source
                                  </th>
                                  <th class="px-6 py-4 text-center text-xs font-medium text-white uppercase tracking-wider">
                                      Calculator
                                  </th>
                              </tr>
                          </thead>
                          <tbody id="dataTableBody" class="divide-y divide-gray-200">
                              <!-- Data rows will be inserted here -->
                          </tbody>
                      </table>
                      </div>
                  </div>
              `;
              
              document.getElementById('tableContainer').innerHTML = tableHTML;
          }
      </script>
      
      <script src="js/main.js"></script>
      <script src="js/calculator.js"></script>
      <script src="js/contact.js"></script>
      
      <!-- Signup Modal for Authentication -->
      <div id="signupModal" class="modal-overlay">
          <div class="modal-content" style="max-width: 500px;">
              <div class="p-6">
                  <div class="flex justify-between items-center mb-4">
                      <h2 class="text-2xl font-bold text-gray-900">We Think You'll Love Our Service!</h2>
                      <button id="closeSignup" class="text-gray-400 hover:text-gray-600">
                          <span class="material-icons-sharp text-2xl">close</span>
                      </button>
                  </div>
                  
                  <p class="text-gray-600 mb-6">You've used our calculator a couple of times. Sign up for a free account to continue using the calculator and unlock additional features.</p>
                  
                  <div id="signupSuccessMessage" class="hidden bg-green-100 border border-green-400 text-green-700 px-4 py-3 rounded mb-4">
                      Thank you for signing up! We'll be in touch soon.
                  </div>
                  
                  <form id="signupForm" class="space-y-4">
                      <!-- Hidden field for service name -->
                      <input type="hidden" name="service" value="surplus lines">
                      
                      <div>
                          <label for="signupName" class="block text-sm font-medium text-gray-700 mb-2">Name *</label>
                          <input type="text" id="signupName" name="name" required
                                 class="w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500 focus:border-transparent">
                          <div class="text-red-500 text-sm mt-1 hidden" id="signupNameError">Please enter your name</div>
                      </div>
                      
                      <div>
                          <label for="signupEmail" class="block text-sm font-medium text-gray-700 mb-2">Email Address *</label>
                          <input type="email" id="signupEmail" name="email" required
                                 class="w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500 focus:border-transparent">
                          <div class="text-red-500 text-sm mt-1 hidden" id="signupEmailError">Please enter a valid email address</div>
                      </div>
                      
                      <div>
                          <label for="signupCompany" class="block text-sm font-medium text-gray-700 mb-2">Company Name *</label>
                          <input type="text" id="signupCompany" name="company" required
                                 class="w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500 focus:border-transparent">
                          <div class="text-red-500 text-sm mt-1 hidden" id="signupCompanyError">Please enter your company name</div>
                      </div>
                      
                      <div>
                          <label for="signupType" class="block text-sm font-medium text-gray-700 mb-2">Type *</label>
                          <select id="signupType" name="type" required
                                  class="w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500 focus:border-transparent">
                              <option value="">Select your type...</option>
                              <option value="carrier">Carrier</option>
                              <option value="agency">Agency</option>
                              <option value="mga">MGA</option>
                              <option value="program-manager">Program Manager</option>
                              <option value="other">Other</option>
                          </select>
                          <div class="text-red-500 text-sm mt-1 hidden" id="signupTypeError">Please select a type</div>
                      </div>
                      
                      <div>
                          <label for="signupNotes" class="block text-sm font-medium text-gray-700 mb-2">Notes (Optional)</label>
                          <textarea id="signupNotes" name="notes" rows="3"
                                    class="w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500 focus:border-transparent"
                                    placeholder="Tell us more about your needs..."></textarea>
                      </div>
                      
                      <button type="submit" id="signupSubmitBtn" class="btn-primary w-full">
                          Sign Up for Free
                      </button>
                  </form>
              </div>
          </div>
      </div>
      
      <!-- Authentication Cookie Script -->
      <script>
          // Cookie functions
          function setCookie(name, value, days) {
              const expires = new Date();
              expires.setTime(expires.getTime() + (days * 24 * 60 * 60 * 1000));
              document.cookie = name + '=' + value + ';expires=' + expires.toUTCString() + ';path=/;domain=.sltax.undtec.com';
          }
  
          function getCookie(name) {
              const nameEQ = name + '=';
              const ca = document.cookie.split(';');
              for(let i = 0; i < ca.length; i++) {
                  let c = ca[i];
                  while (c.charAt(0) === ' ') c = c.substring(1, c.length);
                  if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);
              }
              return null;
          }
  
          // Track calculator usage - moved to calculator.js
  
          // Modal functions
          function showSignupModal() {
              document.getElementById('signupModal').style.display = 'flex';
              document.body.style.overflow = 'hidden';
          }
  
          function hideSignupModal() {
              document.getElementById('signupModal').style.display = 'none';
              document.body.style.overflow = 'auto';
          }
  
          // Close modal when clicking X or outside
          document.getElementById('closeSignup').onclick = hideSignupModal;
          
          document.getElementById('signupModal').onclick = function(event) {
              if (event.target === this) {
                  hideSignupModal();
              }
          }
  
          // Form validation and submission
          document.getElementById('signupForm').addEventListener('submit', async function(e) {
              e.preventDefault();
              
              // Reset error messages
              document.querySelectorAll('[id$="Error"]').forEach(el => el.classList.add('hidden'));
              
              // Validate form
              let isValid = true;
              
              const name = document.getElementById('signupName').value.trim();
              if (!name) {
                  document.getElementById('signupNameError').classList.remove('hidden');
                  isValid = false;
              }
              
              const email = document.getElementById('signupEmail').value.trim();
              const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
              if (!email || !emailRegex.test(email)) {
                  document.getElementById('signupEmailError').classList.remove('hidden');
                  isValid = false;
              }
              
              const company = document.getElementById('signupCompany').value.trim();
              if (!company) {
                  document.getElementById('signupCompanyError').classList.remove('hidden');
                  isValid = false;
              }
              
              const type = document.getElementById('signupType').value;
              if (!type) {
                  document.getElementById('signupTypeError').classList.remove('hidden');
                  isValid = false;
              }
              
              if (!isValid) return;
              
              // Disable submit button
              const submitBtn = document.getElementById('signupSubmitBtn');
              submitBtn.disabled = true;
              submitBtn.textContent = 'Signing up...';
              
              // Prepare form data
              const formData = new FormData(this);
              
              try {
                  // Submit to webhook
                  const response = await fetch('https://n8n.undtec.com/webhook/signup', {
                      method: 'POST',
                      body: formData,
                      mode: 'cors'
                  });
                  
                  // Parse the JSON response
                  const result = await response.json();
                  
                  if (result.success === true) {
                      // Set cookie to prevent showing modal again
                      setCookie('surplus_lines_touroku_zumi', 'true', 365); // 登録済み (registered)
                      
                      // Show success message
                      document.getElementById('signupSuccessMessage').classList.remove('hidden');
                      this.style.display = 'none';
                      
                      // Close modal after 3 seconds
                      setTimeout(() => {
                          hideSignupModal();
                      }, 3000);
                  } else if (result.success === false) {
                      // Show error dialog with message from API
                      alert(result.message || 'Sorry, there was an error signing you up. Please try again.');
                      submitBtn.disabled = false;
                      submitBtn.textContent = 'Sign Up for Free';
                  } else {
                      throw new Error('Invalid response format');
                  }
              } catch (error) {
                  alert('Sorry, there was an error signing you up. Please try again later.');
                  submitBtn.disabled = false;
                  submitBtn.textContent = 'Sign Up for Free';
              }
          });
  
          // Override calculator button click to track usage
          document.addEventListener('DOMContentLoaded', function() {
              // Note: Calculator usage tracking is now handled in calculator.js
              // The cookie is incremented when clicking the Calculate button, not when opening the modal
          });
      </script>
  </body>
  </html>
endpoints.name: https://sltax.undtec.com/favicon.ico
endpoints.name: https://sltax.undtec.com/images/undtec_logo.svg
endpoints.html_title: Surplus Lines Insurance Tax and Calculator by State - Complete Guide
endpoints.supported_versions: HTTP/1.1 HTTP/2
endpoints.banner: HTTP/1.1 200 OK
  Server: nginx
  Date:  <REDACTED>
  Content-Type: text/html
  Last-Modified: Tue, 05 Aug 2025 14:39:30 GMT
  Transfer-Encoding: chunked
  Connection: keep-alive
  Vary: Accept-Encoding
  ETag: W/"689217a2-b8e2"
  Content-Encoding: gzip
  
endpoints.ip: 161.35.237.203
[binary data, 8 values, 215 bytes]