<style>

/* 1. Global basics (body, typography, general inputs, buttons) */
/* Basic styling for layout */
body {
  font-family: sans-serif;
  margin: 20px;
}
h1 {
  text-align: center;
  font-family: Arial, sans-serif;
  font-size: 24px;
}
/* Remove spinner controls and normalize appearance on number inputs */
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button,
input[type=number] {
  -webkit-appearance: none;
  -moz-appearance: textfield;
}
input[type=number] {
  width: 90%;
  padding: 4px;
  box-sizing: border-box;
}
button {
  padding: 8px 16px;
  font-size: 16px;
  margin: 5px;
  cursor: pointer;
  background-color: #f2f2f2;
  border: 1px solid var(--color-border-pills-boxes-tableborders);
  border-radius: 4px;
}
#addToCartBtn {
  background-color: #191919;
  color: #fff;
}
#addToCartBtn:hover {
  background-color: var(--color-website-primary);
  color: #fff;
}
button:hover {
  background-color: #e0e0e0;
}


/* 2. Header bar (.tool-header, .header-left, .header-right, .ec-cart-widget) */
/* Tool header bar */
.tool-header {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  background-color: var(--color-website-primary);
  padding: 4px 20px;
  box-sizing: border-box;
  min-height: 72px;
}
.header-left {
  color: #fff;
  font-size: 24px;
  font-weight: bold;
  font-family: sans-serif;
}
/* Position the cart icon inside header */
.header-right .ec-cart-widget {
  width: auto !important;
  background: var(--color-website-primary);
  padding: 4px;
  border-radius: 0px;
}
.header-right {
  min-width: 60px;
  background-color: #fff;
}

/* 3. Main layout containers (.flex-container, .details-panel, .order-panel, media queries) */
/* Split-screen layout */
.flex-container {
display: flex;
gap: 5px; /* space between panels */
align-items: flex-start;
}
/* Maintain minimum dimensions to ensure consistent layout */
/* Consolidated details-panel and order-panel styles */
.details-panel,
.order-panel {
  margin-top: 10px;
  box-sizing: border-box;
}

.details-panel {
  flex: 1;
  max-width: 44%;
  min-width: 486px;
  min-height: 800px;
}

.order-panel {
  flex: 1.8;
  min-width: 300px;
}
@media (max-width: 768px) {
.flex-container {
flex-direction: column;
}
.details-panel,
.order-panel {
max-width: none;
min-width: auto;
}
}

/* 4. Extrusion selector and boxes (.selector-panel, .extrusion-selector, .extrusion-box, .price-per-meter, .stock-pill, .product-header, .extrusion-name) */
/* Wrapper to center the selector title above the grid */
.selector-panel {
  display: flex;
  flex-direction: column;
  align-items: center;
  align-self: stretch;
  min-height: 220px; /* Ensures alignment with #filterControls */
}

.selector-panel .selector-title {
  margin: 5px;
  text-align: center;
  font-size: 16px;
  color: var(--color-text-error-highlight);
  font-family: Helvetica, Arial, sans-serif !important;
  font-weight: bold;
}

.extrusion-selector {
  position: relative;
  display: grid;
  grid-template-columns: repeat(4, 220px);
  grid-template-rows: repeat(2, 88px);
  grid-auto-rows: 88px;
  gap: 10px;
  border: 0px solid #CCCCCC;
  padding-top: 0px;
  padding-bottom: 0px;
  padding-left: 5px;
  padding-right: 5px;
  box-sizing: border-box;
  margin-right: 10px;
  margin-top: 0px;
  margin-bottom: 0px;
  height: 220px;
  max-height: 100%;
  overflow-y: auto;
  overflow-x: hidden;
  justify-content: center;
  scroll-behavior: smooth;
}

.product-box {
  display: inline-block;
  width: 220px;
  padding: 10px;
  height: 88px;
  margin: 5px;
  background-color: var(--color-boxes-default);
  border: 1px solid var(--color-border-boxes-default);
  cursor: pointer;
  border-radius: 4px;
  box-sizing: border-box;
  font-family: sans-serif;
}
.product-box:hover {
  border-color: var(--color-border-pills-boxes-tableborders);
  box-shadow: 0 4px 8px rgba(0,96,100,0.1);
}
.product-box.selected,.product-box.selected .product-name  {
  background-color: var(--color-boxes-selected);
  color: var(--color-text-for-selected-boxes) !important;
  border-color: var(--color-boxes-border-selected);
}

/* Price per meter under each extrusion box */
.price-pill {
  display: inline-block;
  padding: 4px 8px;
  border-radius: 12px;
  font-family: sans-serif;
  font-size: 14px;
  background-color: var(--color-boxes-default);
  color: var(--color-text-default);
  border: 1px solid var(--color-border-pills-boxes-tableborders);
  margin: 4px 0 0 0;
}
/* Stock status pill next to price per m pill in each extrusion boxe */
.product-box .stock-pill {
  margin-left: 24px;
}
.stock-pill {
  display: inline-block;
  padding: 4px 8px;
  border-radius: 12px;
  font-family: sans-serif;
  font-size: 14px;
  background-color: var(--color-box-ok-instock-bg); /* soft green */
  color: var(--color-text-ok-instock);
  border: 1px solid var(--color-text-ok-instock);
}

.stock-pill.out-of-stock {
  background-color: var(--color-warning-outofstock-bg);    /* soft red */
  color: var(--color-text-error-highlight);
  border: 1px solid var(--color-text-error-highlight);
}
/* Inline header for extrusion name and price */
.product-header {
display: inline-flex;
align-items: center;
gap: 8px;
}
.product-name {
font-size: 16px;
color: #000; /* same as heading */
display: block;
}

/* 5. Tables (#orderTable, table, th, td, .totals-table, input/select styles inside table) */
/* Order table: fixed layout, full width, no overflow */
#orderTable {
  width: 100%;
  table-layout: fixed;
  border-collapse: collapse;
  margin-top: 0;
  margin-bottom: 5px;
}

/* Styling for table header information text, e.g., Tap Size and CBH Size */
.table-header-information {
  color: #3e5ae5;
  font-size: 14px;
}

table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 10px;
  margin-bottom: 10px;
  word-wrap: break-word;
}
th, td {
  border: 1px solid var(--color-border-pills-boxes-tableborders);
  padding: 3px;
  text-align: center;
  color: var(--color-text-default);
  font-size: 16px;
  font-family: sans-serif;
}
th {
  background-color: #f2f2f2;
}
/* Column headings with wrapped text */
th:nth-child(1) { width: 180px; }  /* Enter Cut Length in mm (min 100mm, max 3000mm) */
th:nth-child(2) { width: 120px; }  /* M5 Tapping */
th:nth-child(3) { width: 100px; }  /* No. of Counter Bore Holes */
th:nth-child(4) { width: 60px; }  /* No. of Pcs */
th:nth-child(5) { width: 80px; }  /* Row Total Length */
/* Last column: slim, center, ellipsis for overflow */
#orderTable th:nth-child(6),
#orderTable td:nth-child(6) {
  width: 70px;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* Common styling for row action buttons */
.row-btn {
  width: 35px;
}
.reset-row-btn,
.delete-row-btn {
  padding: 2px;
  margin: 0px;
  font-size: 14px;
  text-align: center;
}
/* Suffix for Counter Bore holes input */
.cb-holes-cell {
  text-align: center;
}
.cb-holes-cell .cb-holes {
width: 50px; /* adjust as needed */
}
.cb-holes-suffix {
margin-left: 4px;
white-space: nowrap;
font-size: 16px !important;
padding: 6px 4px !important;
vertical-align: middle;
}
/* Make table inputs and selects blend into the cell grid */
#orderTable input,
#orderTable select {
border: none !important;
background: transparent !important;
box-shadow: none !important;
font-size: 16px !important;     /* larger, matching page text */
padding: 6px 4px !important;     /* more comfortable click/tap area */
}
/* Re-enable red border for invalid inputs */
#orderTable input.error {
  border: 2px solid var(--color-text-error-highlight) !important;
  background: #ffecec !important; /* optional: light red bg for clarity */
}

/* Aggregate totals table column widths */
.totals-table {
  min-width: 600px;
  min-height: 80px;
  width: 100%;
  margin-top: 5px;
  margin-bottom: 5px;
}
.totals-table th:nth-child(1) { width: 200px; }  /* Total Length Ordered */
.totals-table th:nth-child(2) { width: 200px; }  /* Rounded Off Length */
.totals-table th:nth-child(3) { width: 160px; }  /* Cost of Rounded Off Length */
.totals-table th:nth-child(4) { width: 140px; }  /* Total No. of M5 Tapping */
.totals-table th:nth-child(5) { width: 140px; }  /* Total Cost M5 Tapping */
.totals-table th:nth-child(6) { width: 140px; }  /* Total No. of CB Holes */
.totals-table th:nth-child(7) { width: 120px; }  /* Total Cost CB Holes */
.totals-table th:nth-child(8) { width: 120px; }  /* Subtotal */
.totals-table th:nth-child(9) { width: 120px; }  /* GST */
.totals-table th:nth-child(10) { width: 140px; }  /* Total */
.totals-table th {
  background-color: #ffd099;
  color: var(--color-text-default);
  font-family: sans-serif;
  font-weight: bold;
  border-width: 1px;
  border-color: var(--color-border-pills-boxes-tableborders);
}

.totals-table td {
  background-color: #e0f2f1;
  color: var(--color-text-default);
  font-family: sans-serif;
  font-weight: bold;
  border-width: 1px;
  border-color: var(--color-border-pills-boxes-tableborders);
}

/* 6. Filter controls (#filterControls, .filter-panel, .filter-pill, #clearFiltersBtn) */
.filter-panel {
  flex: 1;
  max-width: 350px;
  min-height: 258px;
  min-width: 350px;
  border: 1px solid #CCCCCC;
  padding: 5px;
  box-sizing: border-box;
  align-self: stretch;
  margin-top: 0px;
  margin-bottom: 0px;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.panel-title {
  margin: 5px;
  text-align: center;
  font-size: 16px;
  color: var(--color-text-error-highlight);
  font-family: Helvetica, Arial, sans-serif !important;
  font-weight: bold;
}

/* Make sure the individual filter groups still align flush left under the centered title */
  .filter-panel .filter-group {
    width: 100%;
    text-align: left;
  }


.filter-group { margin-bottom: 8px; }
.filter-group strong { margin-right: 8px; color: #333; }
.filter-pill {
  display: inline-block;
  padding: 4px 8px;
  border-radius: 12px;
  font-family: sans-serif;
  font-size: 14px;
  background-color: var(--color-boxes-default);
  color: var(--color-text-default);
  border: 1px solid var(--color-border-pills-boxes-tableborders);
  margin: 5px;
  cursor: pointer;
  user-select: none;
}
.filter-pill:hover {
  background-color: #e0e0e0;
}
.filter-pill.selected {
  background-color: var(--color-boxes-selected);
  color: var(--color-text-for-selected-boxes);
  border-color: var(--color-boxes-border-selected);
}
#clearFiltersBtn {
  padding: 6px 12px;
  font-size: 14px;
  margin-left: 12px;
  cursor: pointer;
  background-color: ##f2f2f2;
  border: 1px solid var(--color-border-pills-boxes-tableborders);
  color: var(--color-text-default);
  border-radius: 4px;
}
/* Layout: filter controls alongside product boxes */
.filter-product-container {
  display: flex;
  align-items: stretch;
  gap: 10px;
  margin-bottom: 0px;
}

/* 7. Modals (.vslot-modal, #successModal, #loadingModal, #infoModal, .close) */
/* Shared modal styles for all modals */
.vslot-modal {
  display: none; /* Ensure all modals are hidden initially */
  position: fixed;
  justify-content: center;
  align-items: center;
  z-index: 9999;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  overflow: auto;
  background-color: rgba(0, 0, 0, 0.4); /* translucent backdrop */
  pointer-events: auto;
}

.vslot-modal .modal-content {
  background-color: #fff;
  margin: 0 auto;
  padding: 20px;
  border-radius: 6px;
  max-width: 600px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
  position: relative;
  text-align: center;
}

/* Style for the new close button in the success modal */
#successModal .close-button {
  margin-top: 20px;
  padding: 10px 20px;
  font-size: 16px;
  background-color: #191919;
  color: #fff;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}

#successModal .close-button:hover {
  background-color: #444;
}

/* Loading modal styles */
#loadingModal {
  position: fixed;
  top: 0;
  left: 0;
  height: 100vh;
  width: 100vw;
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: rgba(0, 0, 0, 0.5); /* if needed */
  z-index: 100001;
}

#loadingModal .modal-content {
  background-color: #fff;
  padding: 20px 40px;
  border-radius: 8px;
  text-align: center;
  font-size: 20px;
  font-weight: bold;
  color: #333;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
}

#infoModal .modal-content {
  max-width: 400px;        /* narrower box */
  padding: 16px;           /* slightly smaller padding */
  text-align: left;        /* align text to the left */
}

/* Modal styles */
.close {
  color: #aaa;
  float: right;
  font-size: 28px;
  font-weight: bold;
  cursor: pointer;
}
.close:hover,
.close:focus {
  color: black;
}

/* 8. Utility classes (.error, .field-error, .hidden, .bold-total, .info-icon, .shipping-note, .preview-list) */
/* Error highlighting for cut-length inputs */
.error-field {
  border: 1px solid var(--color-text-error-highlight) !important;
  background-color: #ffe6e6;
}

.field-error {
  color: var(--color-text-error-highlight);
  margin-bottom: 10px;
  font-weight: bold;
}

/* Utility classes for toggling visibility */
.hidden { display: none; }

/* Bold text styling for totals */
.bold-total {
  font-weight: bold;
}

/* Info icon */
.info-icon {
  display: inline-block;
  width: 16px;
  height: 16px;
  margin-left: 4px;
  vertical-align: middle;
  cursor: pointer;
  color: #006064;
}

/* Shipping note */
.shipping-note {
  margin-top: 10px;
  padding: 10px;
  background: var(--color-warning-outofstock-bg);
  border-left: 5px solid #ff9800;
}

/* Preview list */
.preview-list {
  text-align: left;
  margin: 10px 0;
}

/* 9. Any other remaining or shared components */
/* 2×2 image grid */
.image-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 10px;                   /* symmetric spacing */
  justify-content: center;
}
.image-cell {
  border: 1px solid #ccc;
  min-width: 236px;
  min-height: 236px;
  overflow: hidden;
  position: relative;
  margin: 0 auto;
}
.image-cell img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
/* Zoom icon overlay on image hover */
.image-cell .zoom-icon {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 24px;
  color: rgba(255, 255, 255, 0.8);
  display: none;
  pointer-events: none;
}
.image-cell:hover img {
  opacity: 0.6;
  transition: opacity 0.3s;
}
.image-cell:hover .zoom-icon {
  display: block;
}
/* Description area below images */
.description-container {
  border: 1px solid #ccc;      /* match image-cell border */
  padding: 8px;
  margin-top: 10px;
  box-sizing: border-box;
  width: 100%;                 /* full width of details-panel */
}

/* Shared panel styling */
.panel {
border: 1px solid #ccc;
padding: 5px;
box-sizing: border-box;
}

/* Extrusion selector wrapper */
.extrusion-selector-wrapper {
  display: flex;
  align-items: center;       /* vertical centering of the grid */
  justify-content: center;   /* horizontal centering */
  width: 950px;              /* fill the parent so centering works */
  height: 220px;             /* exactly two rows × 88px + gaps */
  margin: 0 auto;            /* center the wrapper in its container */
  border: 1px solid #CCCCCC;
  box-sizing: border-box;
}

/* Ensure lightbox overlay and close button are on top and clickable */
.sl-overlay {
  z-index: 99999 !important;
  pointer-events: auto !important;
}
.sl-wrapper {
  z-index: 100000 !important;
}
.sl-close {
  z-index: 100001 !important;
  pointer-events: auto !important;
}

/* Unblock clicks by disabling Ecwid popup overlays */
.ec-popup__overlay,
.ec-popup,
.ec-popup--m {
  pointer-events: none !important;
}
/*Font setting for review widget*/
.hc-widget {
  font-family: Helvetica, Arial, sans-serif !important;
  font-size: 14px;
  color: #555;
}
/* Font settings for waste policy section */
#wastePolicyDesktop,
#wastePolicyMobile,
.waste-policy-content,
.waste-policy-content p,
.waste-policy-content .read-more-link {
  font-family: Helvetica, Arial, sans-serif;
  font-size: 14px;
  color: var(--color-text-default);
}
</style>
</style>

/* Extra: Responsive order table scrolling */
.order-table-wrapper {
  overflow-x: auto;
  max-width: 100%;
}

#orderTable {
  width: 100%;
  table-layout: fixed;
  border-collapse: collapse;
}
/* Center add-to-cart button wrapper */
.add-to-cart-wrapper {
  text-align: left; /* Aligns button with totals table left border */
  margin-top: 8px;  /* Optional: slight spacing from totals table */
}

/* --- Robust active tab styling (prod-safe) --- */
.tab-buttons button.is-active,
.tab-buttons a.is-active,
.tab-buttons [role="tab"].is-active,
.tab-buttons button[aria-selected="true"],
.tab-buttons a[aria-selected="true"],
.tab-buttons [role="tab"][aria-selected="true"] {
  background-color: var(--color-boxes-selected) !important;
  color: var(--color-text-for-selected-boxes) !important;
  border-color: var(--color-boxes-border-selected) !important;
}

/* Maintain same look on hover/focus for active tab */
.tab-buttons button.is-active:hover,
.tab-buttons a.is-active:hover,
.tab-buttons [role="tab"].is-active:hover,
.tab-buttons button[aria-selected="true"]:hover,
.tab-buttons a[aria-selected="true"]:hover,
.tab-buttons [role="tab"][aria-selected="true"]:hover,
.tab-buttons button.is-active:focus,
.tab-buttons a.is-active:focus,
.tab-buttons [role="tab"].is-active:focus,
.tab-buttons button[aria-selected="true"]:focus,
.tab-buttons a[aria-selected="true"]:focus,
.tab-buttons [role="tab"][aria-selected="true"]:focus {
  background-color: var(--color-boxes-selected) !important;
  color: var(--color-text-for-selected-boxes) !important;
  border-color: var(--color-boxes-border-selected) !important;
}
/* Desktop: make details panel scroll independently */
@media (min-width: 769px) {
  .details-panel {
    /* cap panel height to viewport, allow internal scroll */
    max-height: calc(100vh - 140px); /* header + margins buffer; tweak if needed */
    min-height: 0;                   /* override earlier 800px so cap can apply */
    overflow-y: auto;
    overscroll-behavior: contain;    /* prevent page scroll chaining */
    padding-right: 4px;              /* small gutter next to scrollbar */
  }
}