[object Object]

← back to Linenwallpaper

sort-skill UI: add Light→Dark / Dark→Light / Color Wheel options

a483e2a7f7fa94d8e0538f54f3f3e0c42b3dead9 · 2026-05-10 12:43:42 -0700 · Steve

Files touched

Diff

commit a483e2a7f7fa94d8e0538f54f3f3e0c42b3dead9
Author: Steve <steve@designerwallcoverings.com>
Date:   Sun May 10 12:43:42 2026 -0700

    sort-skill UI: add Light→Dark / Dark→Light / Color Wheel options
---
 public/index.html | 180 +++++++++---------------------------------------------
 1 file changed, 28 insertions(+), 152 deletions(-)

diff --git a/public/index.html b/public/index.html
index e71902c..f2360af 100644
--- a/public/index.html
+++ b/public/index.html
@@ -191,163 +191,36 @@ textarea:focus-visible,
 <style id="ns-header-modal-styles">
         .ns-header { position: sticky; top: 0; z-index: 100; display: flex; align-items: center; justify-content: space-between; padding: 18px 36px; background: rgba(10,10,10,0.92) !important; backdrop-filter: blur(8px); border-bottom: 1px solid rgba(245,241,232,0.06); }
         .ns-brand { display: inline-flex; align-items: center; gap: 14px; text-decoration: none; }
-        .ns-dot { width: 28px; height: 28px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #a98b5b 0%, #5d4c32 60%, #332a1b 100%); box-shadow: 0 0 0 1px rgba(245,241,232,0.10), 0 2px 12px rgba(180,90,60,0.30); flex-shrink: 0; }
+        .ns-dot { width: 28px; height: 28px; border-radius: 50%; background: var(--ns-dot-bg, radial-gradient(circle at 35% 35%, #b66a4d 0%, #8a4a30 60%, #5a2d1c 100%)); box-shadow: 0 0 0 1px rgba(245,241,232,0.10), 0 2px 12px rgba(180,90,60,0.30); flex-shrink: 0; }
         .ns-name { font-family: -apple-system, "SF Pro Display", "Helvetica Neue", system-ui, sans-serif; font-size: 18px !important; font-weight: 300 !important; letter-spacing: 0.02em !important; color: #f5f1e8 !important; text-transform: none !important; margin: 0 !important; }
         .ns-name sup { font-size: 0.55em; font-weight: 300; margin-left: 1px; }
-        .ns-nav { display: flex; gap: 32px; align-items: center; list-style: none; padding: 0; margin: 0; }
-        .ns-nav a, .ns-nav button { font-family: -apple-system, "SF Pro Text", system-ui, sans-serif; font-size: 15px !important; font-weight: 400 !important; color: #f5f1e8 !important; text-decoration: none !important; background: none !important; border: 0 !important; cursor: pointer; padding: 0 !important; transition: color 200ms; letter-spacing: 0 !important; text-transform: none !important; }
+        .ns-nav a, .ns-nav button { font-family: -apple-system, "SF Pro Text", system-ui, sans-serif; font-size: 15px !important; font-weight: 400 !important; color: #f5f1e8 !important; text-decoration: none !important; background: none !important; border: 0 !important; cursor: pointer; transition: color 200ms; letter-spacing: 0 !important; text-transform: none !important; }
         .ns-nav a:hover, .ns-nav button:hover { color: #ffffff !important; }
-        @media (max-width: 820px) { .ns-header { padding: 14px 18px; } .ns-nav { gap: 16px; } .ns-nav a, .ns-nav button { font-size: 13px !important; } }
-        @media (max-width: 760px) {
-          .ns-header { flex-wrap: wrap; }
-          .ns-nav { display: none !important; flex-basis: 100%; flex-direction: column; align-items: flex-start; gap: 6px; padding: 14px 0 4px; }
-          .ns-nav.open { display: flex !important; }
-          .ns-nav a, .ns-nav button { padding: 10px 0 !important; border-bottom: 1px solid rgba(245,241,232,0.08); width: 100%; text-align: left; }
-          .ns-nav a:nth-child(n+5), .ns-nav button:nth-child(n+5) { display: block !important; }
-          .ns-header .mobile-toggle { display: flex !important; }
+        /* All widths: hide nav by default, hamburger always visible on right, nav opens as right-anchored dropdown panel */
+        .ns-nav {
+            display: none !important;
+            position: absolute; top: 100%; right: 18px;
+            flex-direction: column; align-items: stretch; gap: 0;
+            background: rgba(10,10,10,0.96); backdrop-filter: blur(10px);
+            border: 1px solid rgba(245,241,232,0.10); border-top: 0;
+            min-width: 220px; padding: 10px 0; margin: 0;
+            box-shadow: 0 16px 40px rgba(0,0,0,0.55);
+            z-index: 150;
         }
-        @media (min-width: 761px) {
-          .ns-header .mobile-toggle { display: none !important; }
+        .ns-nav.open { display: flex !important; }
+        .ns-nav a, .ns-nav button {
+            padding: 12px 22px !important;
+            border-bottom: 1px solid rgba(245,241,232,0.06);
+            width: 100%; text-align: left;
         }
-        .ns-modal { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.78); z-index: 200; align-items: center; justify-content: center; padding: 24px; backdrop-filter: blur(6px); }
-        .ns-modal.show { display: flex; }
-        .ns-modal-card { max-width: 460px; width: 100%; background: #141414 !important; border: 1px solid rgba(245,241,232,0.14); border-radius: 6px; padding: 28px 30px 30px; position: relative; }
-        .ns-modal-card .close-x { position: absolute; top: 12px; right: 14px; width: 30px; height: 30px; background: none; border: 1px solid rgba(245,241,232,0.18); color: rgba(245,241,232,0.6) !important; border-radius: 50%; cursor: pointer; font-size: 14px; display: flex; align-items: center; justify-content: center; }
-        .ns-modal-card .close-x:hover { color: #ffffff !important; border-color: #ffffff; }
-        .ns-modal-card h3 { font-family: -apple-system, "SF Pro Display", system-ui; font-weight: 300 !important; font-size: 22px !important; margin: 0 0 6px !important; color: #f5f1e8 !important; }
-        .ns-modal-card .sub { color: rgba(245,241,232,0.65) !important; font-size: 13px; margin: 0 0 22px; }
-        .ns-actions { display: flex; flex-direction: column; gap: 10px; }
-        .ns-action { display: flex; align-items: center; gap: 14px; padding: 14px 16px; background: rgba(245,241,232,0.04) !important; border: 1px solid rgba(245,241,232,0.12) !important; color: #f5f1e8 !important; text-decoration: none !important; cursor: pointer; transition: all 200ms; font: inherit; text-align: left; }
-        .ns-action:hover { background: rgba(245,241,232,0.08) !important; border-color: #d4b683 !important; }
-        .ns-action .ico { width: 32px; height: 32px; border-radius: 50%; background: rgba(212,182,131,0.12); display: flex; align-items: center; justify-content: center; font-size: 15px; flex-shrink: 0; }
-        .ns-action .txt { flex: 1; }
-        .ns-action .txt b { display: block; font-weight: 500; font-size: 14px; color: #f5f1e8 !important; }
-        .ns-action .txt span { font-size: 12px; color: rgba(245,241,232,0.55) !important; }
-
-        /* ─── FINAL CONTRAST PASS — kill remaining gold-solid + white-island defects ─── */
-        /* Replace all gold-fill accents with off-white (Gucci-aesthetic, no DW gold solids) */
-        .new-badge, .new-arrivals-pill,
-        .color-filter-btn.active,
-        .drapery-btn, .sample-btn-chip, .cb-cta {
-          background: #f5f1e8 !important;
-          color: #0a0a0a !important;
-          border-color: #f5f1e8 !important;
-        }
-        .new-badge:hover, .new-arrivals-pill:hover,
-        .color-filter-btn.active:hover,
-        .drapery-btn:hover, .sample-btn-chip:hover, .cb-cta:hover {
-          background: #fff !important;
-          color: #0a0a0a !important;
-        }
-        /* Gold accents stay only as edge color (links, glyphs) — not fills */
-        a { color: #d4b683; }
-        a:hover { color: #f5d97a; }
-        /* Authorized-dealer footer line — small caps tracked, muted ink, no gold pill */
-        .authorized, .authorized-dealer p {
-          background: transparent !important;
-          color: rgba(245,241,232,0.5) !important;
-          font-size: 10px !important;
-          letter-spacing: 0.22em !important;
-          text-transform: uppercase !important;
-          padding: 0 !important;
-          border: none !important;
-          margin-top: 14px !important;
-        }
-        /* Kill any straggler white bg in info-card / sample-related cards */
-        .info-card, .info-card-link, .care-highlight, .feature-card, .spec-item {
-          background-color: rgba(245,241,232,0.04) !important;
-          border-color: rgba(245,241,232,0.12) !important;
-        }
-        /* Ensure modal content stays readable — Steve's earlier sweep made it #141414 with white text */
-        .modal-content { background: #141414 !important; color: #f5f1e8 !important; }
-        .modal-content * { color: #f5f1e8 !important; }
-        .modal-content input, .modal-content textarea, .modal-content select {
-          background: rgba(245,241,232,0.05) !important;
-          color: #f5f1e8 !important;
-          border-color: rgba(245,241,232,0.2) !important;
-        }
-        .modal-content label { color: rgba(245,241,232,0.6) !important; }
-        /* Force the wide-tracked NOVASUEDE wordmark to stay white */
-        .ns-wordmark, .ns-wordmark sup { color: #f5f1e8 !important; }
-
-        /* ─── Modal-internal contrast (post-QA defects) ─── */
-        /* Backdrop covers full viewport */
-        .modal { width: 100vw !important; height: 100vh !important; left: 0 !important; top: 0 !important; background: rgba(0, 0, 0, 0.78) !important; backdrop-filter: blur(6px); }
-        /* Chip — flip from white-on-white island to dark card */
-        .request-chip {
-          background: rgba(245, 241, 232, 0.06) !important;
-          color: #f5f1e8 !important;
-          border: 1px solid rgba(245, 241, 232, 0.18) !important;
-          border-radius: 4px !important;
-        }
-        .request-chip * { color: #f5f1e8 !important; }
-        .request-chip .chip-swatch {
-          /* swatch dot ALWAYS displays the inline-style hex from JS — fight any sweep */
-          border: 1px solid rgba(0, 0, 0, 0.4) !important;
-        }
-        /* + Add to request — hairline white-border on transparent (no gold) */
-        .add-to-request-btn {
-          background: transparent !important;
-          color: #f5f1e8 !important;
-          border: 1px solid rgba(245, 241, 232, 0.6) !important;
-          border-radius: 0 !important;
-          padding: 12px 22px !important;
-          font-size: 11px !important;
-          letter-spacing: 0.32em !important;
-          text-transform: uppercase !important;
-          font-weight: 400 !important;
-        }
-        .add-to-request-btn:hover {
-          background: #f5f1e8 !important;
-          color: #0a0a0a !important;
-          border-color: #f5f1e8 !important;
-        }
-        /* Hex caption visible */
-        .preview-hex, #colorPreviewHex {
-          display: block !important;
-          color: rgba(245, 241, 232, 0.55) !important;
-          font-family: ui-monospace, "SF Mono", Menlo, monospace !important;
-          font-size: 11px !important;
-          margin-top: 4px !important;
-          letter-spacing: 0.04em !important;
-          text-transform: lowercase !important;
-        }
-        /* Color preview name — stays single, prominent */
-        #colorPreviewName {
-          color: #f5f1e8 !important;
-          font-size: 11px !important;
-          letter-spacing: 0.32em !important;
-          text-transform: uppercase !important;
-          font-weight: 500 !important;
-          display: block !important;
-          margin-top: 12px !important;
-        }
-
-        /* ─── Mobile hamburger nav (replaces the overflow at <760px) ─── */
-        @media (max-width: 760px) {
-          header .nav-container { flex-wrap: wrap; }
-          header nav { display: none; flex-basis: 100%; flex-direction: column; gap: 6px; padding: 16px 0 6px; }
-          header nav.open { display: flex; }
-          header nav a { padding: 10px 0; border-bottom: 1px solid rgba(245,241,232,0.1); }
-          header .mobile-toggle {
-            display: flex !important;
-            flex-direction: column;
-            gap: 5px;
-            background: transparent;
-            border: 0;
-            cursor: pointer;
-            padding: 8px;
-          }
-          header .mobile-toggle span {
-            width: 22px; height: 1.5px;
-            background: #f5f1e8;
-            display: block;
-          }
-        }
-        @media (min-width: 761px) {
-          header .mobile-toggle { display: none !important; }
-        }
-
+        .ns-nav a:last-child, .ns-nav button:last-child { border-bottom: 0; }
+        .ns-nav a:hover, .ns-nav button:hover { background: rgba(245,241,232,0.06) !important; color: #ffffff !important; }
+        @media (max-width: 480px) { .ns-nav { right: 12px; min-width: 200px; } }
+        .ns-header .mobile-toggle { display: flex !important; align-items: center; justify-content: center; width: 36px; height: 36px; background: transparent; border: 0; cursor: pointer; padding: 0; gap: 4px; flex-direction: column; }
+        .ns-header .mobile-toggle span { display: block; width: 22px; height: 1.5px; background: #f5f1e8; transition: transform 200ms, opacity 200ms; }
+        .ns-header .mobile-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(5px) rotate(45deg); }
+        .ns-header .mobile-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
+        .ns-header .mobile-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-5px) rotate(-45deg); }
     </style>
 <style id="ns-gold-kill">
     /* novasuede: kill gold-solid fills, off-white instead. Edge color stays gold. */
@@ -464,6 +337,9 @@ textarea:focus-visible,
     <label>Sort</label>
     <select id="sortSelect" aria-label="Sort products" style="background:transparent;color:inherit;border:1px solid var(--line,rgba(255,255,255,.2));font:inherit;font-size:11px;letter-spacing:.10em;text-transform:uppercase;padding:4px 8px;cursor:pointer;outline:none;margin-right:14px">
       <option value="newest">Newest</option>
+      <option value="light-dark">Light → Dark</option>
+      <option value="dark-light">Dark → Light</option>
+      <option value="wheel">Color Wheel</option>
       <option value="color">Color</option>
       <option value="style">Style</option>
       <option value="sku">SKU A→Z</option>

← f16a1d4 sort-skill canonical: add light-dark/dark-light/wheel + help  ·  back to Linenwallpaper  ·  snapshot before fleet-grid refine 5d525ef →