body{ margin:0;font-family:"Inter",sans-serif;background:#252422;color:#e1e5f2;padding:0; background-image:linear-gradient(#2b2a28 1px,transparent 1px),linear-gradient(90deg,#2b2a28 1px,transparent 1px); background-size:40px 40px; } .header{ display:flex;justify-content:space-between;align-items:center;padding:1rem 2.5rem;margin:1.5rem auto;max-width:92%; background:rgba(36,36,36,.25);backdrop-filter:blur(.7px);-webkit-backdrop-filter:blur(12px); border:1px solid rgba(255,255,255,.05);box-shadow:0 4px 20px rgba(0,0,0,.25);border-radius:16px;position:relative;z-index:1000;transition:.3s; } .logo-container{display:flex;align-items:center;gap:.75rem} .logo-img{height:48px;width:auto;filter:drop-shadow(0 0 3px #5271ff);transition:.3s} .logo-img:hover{filter:drop-shadow(0 0 6px #5271ff)} .logo-text{font-family:"Chewy",cursive;font-size:1.5rem;color:#e1e5f2;letter-spacing:.5px} .buttons{display:flex;flex-wrap:wrap;gap:.8rem} .glass-btn{ display:flex;align-items:center;gap:.6rem;padding:.55rem 1.2rem;border-radius:8px;font-weight:600;font-size:.95rem; text-decoration:none;border:1px solid rgba(255,255,255,.08);color:#e1e5f2;background:rgba(82,113,255,.1); backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:.2s; } .glass-btn:hover{background:rgba(82,113,255,.2);transform:scale(1.02)} .glassy{ background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08); backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:#e1e5f2;box-shadow:0 0 12px rgba(255,255,255,.05); } .glassy:hover{background:rgba(255,255,255,.08);box-shadow:0 0 14px rgba(255,255,255,.12);transform:scale(1.03)} .icon-img{height:22px;width:22px;object-fit:contain;vertical-align:middle;display:inline-block;transform:translateY(1px)} /* Intro */ .intro-section{text-align:center;padding:0 1rem} .intro-title-row{display:flex;align-items:center;justify-content:center;gap:1.5rem;flex-wrap:wrap;margin-top:-2rem;margin-bottom:-1rem} .side-title{font-family:"Chewy",cursive;font-size:2rem;color:#e1e5f2;opacity:.9;transform:translateY(4px)} /* Titel (Shimmer ohne Keyframes ist ok; wenn animiert gewünscht, Keyframes hinzufügen) */ .shimmer{ font-family:"Chewy",cursive;font-size:5.75rem;font-weight:200;text-align:center; background:linear-gradient(90deg,#5271ff,#c1ccff,#5271ff);background-size:400% auto; -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent; text-shadow:0 0 6px rgba(82,113,255,.4),0 0 12px rgba(82,113,255,.3),0 0 18px rgba(82,113,255,.2); } /* Section */ .database-section{ max-width:92%;margin:2rem auto;padding:1.5rem;background:rgba(36,36,36,.25); backdrop-filter:blur(.7px);-webkit-backdrop-filter:blur(12px); border:1px solid rgba(255,255,255,.05);box-shadow:0 4px 20px rgba(0,0,0,.25);border-radius:16px; } /* Grid: 8 Spalten */ .dyes-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:1rem;padding:1rem} /* Karten */ .dye-card{ background:rgba(255,255,255,.05);border-radius:12px;padding:.75rem;text-align:center; transition:transform .2s,box-shadow .2s;border:1px solid rgba(255,255,255,.1); display:flex;flex-direction:column;justify-content:flex-start;position:relative;overflow:hidden; --accent:#5271ff;--accentSoft:#5271ff33; } .dye-card:hover{box-shadow:0 0 0 1px var(--accent),0 8px 30px var(--accentSoft)} .dye-card:hover .dye-card-img{filter:drop-shadow(0 0 10px var(--accentSoft))} .dye-card::after{ content:"";position:absolute;inset:-1px;pointer-events:none;opacity:0; background:linear-gradient(120deg,transparent 20%,var(--accentSoft) 45%,var(--accent) 50%,var(--accentSoft) 55%,transparent 80%); transform:translateX(-120%); } .dye-card:hover::after{opacity:1;animation:cardShimmer .9s ease forwards} @keyframes cardShimmer{to{transform:translateX(120%)}} .dye-board{ margin: .25rem 0 0 0; padding: .25rem 0 .5rem 0; border-radius: 16px; box-shadow: none; backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); } .filters-panel{ margin: 0; padding: .6rem 1rem .25rem; background: transparent; border: 0; box-shadow: none; } .filters-panel.is-stuck{ background: rgba(36,36,36,.35); border: 1px solid rgba(255,255,255,.06); border-radius: 12px; backdrop-filter: blur(10px); } .dye-card-img{ width:100%;height:120px;object-fit:contain;object-position:center;border-radius:8px;margin:.4rem 0 .75rem; background:rgba(0,0,0,.15); } .dye-name{ font-family:"Inter",sans-serif;font-weight:700;font-size:.95rem;color:#e1e5f2;display:block;width:100%;box-sizing:border-box; margin:.35rem 0 0;padding:.35rem .5rem;background:rgba(20,22,26,.6);border:1px solid rgba(255,255,255,.08);border-radius:10px;text-align:left; white-space:normal;overflow:visible;text-overflow:clip;line-height:1.25;overflow-wrap:anywhere; } .dye-code{ display:block;width:100%;box-sizing:border-box;margin:.35rem 0 0;padding:.3rem .5rem;background:rgba(20,22,26,.6); border:1px solid rgba(255,255,255,.08);border-radius:10px;font-family:"Inter",sans-serif;font-weight:700;font-size:.9rem;text-align:left;line-height:1.2; } .dye-description{font-size:.85rem;line-height:1.35;color:#a0a4b8;flex-grow:1} /* Filter-Bar */ .filters-panel{ position: sticky; top: 12px; /* Abstand zum oberen Viewport */ z-index: 50; /* über den Cards */ margin: 0 1rem .75rem; padding: .6rem 1rem; display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; border-radius: 12px; background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.07); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); } .filters-panel.is-stuck{ background: rgba(36,36,36,.35); border-color: rgba(255,255,255,.10); box-shadow: 0 4px 20px rgba(0,0,0,.25); } .filter-toggle{display:inline-flex;align-items:center;gap:.5rem;border-radius:10px;font-weight:700} .filter-toggle.is-all{background:rgba(255,255,255,.03);border-color:rgba(255,255,255,.08);color:#e1e5f2} .filter-toggle.is-green{background:#67cc4b1a;border-color:#67cc4b55;color:#d9ffd0} .filter-toggle.is-red{background:#cc4b4b1a;border-color:#cc4b4b55;color:#ffd9d9} /* Load more */ .load-more-btn{margin:.25rem auto 0;align-items:center;gap:.5rem;font-family:"Inter",sans-serif;font-weight:700;font-size:.9rem} .btn-icon{width:18px;height:18px;display:inline-block;vertical-align:middle} /* Copy feedback */ .dye-card{cursor:pointer} .dye-card.copied{box-shadow:0 0 0 2px var(--accent),0 0 18px var(--accentSoft)} .copy-toast{ position:fixed;bottom:18px;left:50%;transform:translateX(-50%); padding:.5rem .75rem;background:rgba(20,22,26,.9);border:1px solid rgba(255,255,255,.08);border-radius:10px; color:#e1e5f2;font-weight:700;opacity:0;pointer-events:none;transition:opacity .2s; } .copy-toast.show{opacity:1} .sort-toggle{ display:inline-flex; align-items:center; gap:.5rem; border-radius:10px; font-weight:700; } .sort-toggle.on{ background:rgba(255,255,255,.05); border-color:#c1ccff66; box-shadow:0 0 0 2px #c1ccff44 inset; } .color-chips{ display:flex; /* neu */ justify-content:center; /* neu: mittig ausrichten */ align-items:center; /* neu */ column-gap:.4rem; /* neu: horizontaler Abstand */ row-gap:.35rem; /* neu: vertikaler Abstand */ flex-basis:100%; width:100%; padding:.45rem .6rem; border-radius:12px; background:rgba(255,255,255,.02); border:1px solid rgba(255,255,255,.06); } /* Falls du .chip-row Wrapper verwendest, auch diese mittig ausrichten */ .color-chips .chip-row{ display:flex; align-items:center; justify-content:center; /* neu */ gap:.4rem; flex-wrap:wrap; margin-bottom:.35rem; } .color-chips .chip-row:last-child{ margin-bottom:0; } .chip{ display:inline-flex; align-items:center; gap:.4rem; cursor:pointer; user-select:none; padding:.3rem .55rem; border-radius:999px; font-weight:700; font-size:.85rem; border:1px solid rgba(255,255,255,.08); background:rgba(255,255,255,.03); transition:transform .12s ease, box-shadow .12s ease, border-color .12s ease, background .12s ease; } .chip:hover{ transform:translateY(-1px); background:rgba(255,255,255,.06); } .chip.selected{ box-shadow:0 0 0 2px #c1ccff44 inset; border-color:#c1ccff66; background:rgba(255,255,255,.08); } .chip-swatch{ width:16px; height:16px; border-radius:50%; border:1px solid rgba(255,255,255,.35); box-shadow:0 0 0 2px rgba(0,0,0,.15) inset; } .chip-label{ opacity:.9; letter-spacing:.2px; } /* gleiche Baseline/Höhe wie alle Chips */ .chip, .chip--clear { line-height: 1; vertical-align: middle; } /* Clear-Chip wie normaler Chip */ .chip--clear{ display:inline-flex; align-items:center; gap:.4rem; cursor:pointer; user-select:none; padding:.3rem .55rem; border-radius:999px; font-weight:700; font-size:.85rem; border:1px solid rgba(255,255,255,.08); background:rgba(255, 255, 255, 0.158); transition:transform .12s ease, box-shadow .12s ease, border-color .12s ease, background .12s ease; } .chip--clear:hover{ transform:translateY(-1px); background:rgba(255,255,255,.06); } .chip--clear:active{ transform:translateY(0); } /* Swatch im Clear-Chip: gleiche Größe, Icon sauber zentriert */ .chip--clear .chip-swatch{ width:16px; height:16px; border-radius:50%; border:1px solid rgba(255,255,255,.35); box-shadow:0 0 0 2px rgba(0,0,0,.15) inset; display:flex; align-items:center; justify-content:center; background:transparent; } .chip--clear .chip-swatch svg{ width:10px; height:10px; display:block; } .chip-clear svg{ width:14px; height:14px; display:block; } .filters-panel{ display:flex; gap:.6rem; align-items:center; flex-wrap:wrap; } .shown-count{ margin-left:auto; padding:.35rem .6rem; border:1px solid rgba(255,255,255,.08); background:rgba(255,255,255,.03); border-radius:10px; font-family:"Inter",sans-serif; font-weight:700; font-size:1rem; } /* ===== Fullscreen Loader ===== */ .app-loader{ position: fixed; inset: 0; z-index: 9999; display: grid; place-items: center; background: radial-gradient(60% 60% at 50% 40%, rgba(82,113,255,.08), transparent 70%), rgba(20, 22, 26, 0.738); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); transition: opacity .25s ease, visibility .25s ease; opacity: 1; visibility: visible; } /* --- Auth Gate --- */ .auth-gate{ position: fixed; inset: 0; display: grid; place-items: center; background: rgba(0,0,0,.55); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); z-index: 2000; } .app-loader.is-hidden{ opacity: 0; visibility: hidden; pointer-events: none; } .loader-box{ display: flex; flex-direction: column; align-items: center; gap: .75rem; padding: 1rem 1.25rem; border-radius: 14px; background: rgba(255, 255, 255, 0.118); border: 1px solid rgba(255,255,255,.10); box-shadow: 0 8px 30px rgba(0,0,0,.25); } .spinner{ width: 38px; height: 38px; border-radius: 50%; border: 3px solid rgba(193,204,255,.25); border-top-color: #c1ccff; animation: spin 1s linear infinite; filter: drop-shadow(0 0 6px rgba(193,204,255,.35)); } @keyframes spin { to { transform: rotate(360deg); } } .loader-text{ font-family: "Inter", sans-serif; font-weight: 700; font-size: .95rem; letter-spacing: .2px; color: #e1e5f2; opacity: .9; } /* subtle animated gradient like your site title */ @keyframes authShimmer { 0% { background-position: 0% 0; } 100% { background-position: 200% 0; } } @media (max-width:768px){ .filters-panel{ top: calc(env(safe-area-inset-top,0px) + 8px); } } /* <=1200px */ @media (max-width:1200px){ .dyes-grid{grid-template-columns:repeat(6,minmax(0,1fr));} } /* <=992px */ @media (max-width:992px){ .dyes-grid{grid-template-columns:repeat(5,minmax(0,1fr));} .header{padding:.8rem 1.5rem;} .logo-img{height:42px;} .shimmer{font-size:4.25rem;} .side-title{font-size:1.75rem;} } /* <=840px */ @media (max-width:840px){ .dyes-grid{grid-template-columns:repeat(4,minmax(0,1fr));} .dye-card-img{height:110px;} .filters-panel{gap:.45rem;} .glass-btn{padding:.5rem 1rem;gap:.5rem;} } /* ===== Phones (<=680px) ===== */ @media (max-width:680px){ :root{ --mobile-chips-per-row: 10; /* 10 columns -> 2 rows for up to 20 chips */ --mobile-chip-dot: 18px; --mobile-chip-gap: .45rem; } /* dots-only layout */ #color-chips{ display: grid !important; grid-template-columns: repeat(var(--mobile-chips-per-row), 1fr); grid-auto-rows: auto; gap: var(--mobile-chip-gap); padding: .5rem .6rem; background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.06); border-radius: 10px; } /* hide labels, keep only the swatch */ #color-chips .chip-label{ display:none !important; } /* make each chip just a centered circle */ #color-chips .chip, #color-chips .chip--clear{ display:flex; align-items:center; justify-content:center; padding:0; background:transparent; border:0; box-shadow:none; width:100%; min-width:0; } #color-chips .chip.selected{ box-shadow:none; border:0; } #color-chips .chip-swatch, #color-chips .chip--clear .chip-swatch{ width:var(--mobile-chip-dot); height:var(--mobile-chip-dot); border-radius:50%; border:1px solid rgba(255,255,255,.35); box-shadow:0 0 0 2px rgba(0,0,0,.15) inset; display:block; } /* keep the clear "X" visible in its dot */ #color-chips .chip--clear .chip-swatch{ display:flex; align-items:center; justify-content:center; } #color-chips .chip--clear .chip-swatch svg{ width:10px; height:10px; } /* Make Total Dyes pill match button width */ .filters-panel .shown-count{ width:100%; box-sizing:border-box; margin-left:0; /* prevent it from stretching wider than others */ } } /* <=520px */ @media (max-width:520px){ .dye-card{padding:.6rem;} .dye-card-img{height:100px;} .dye-name{font-size:.9rem;padding:.32rem .45rem;} .dye-code{font-size:.85rem;padding:.28rem .45rem;} .intro-title-row{gap:1rem;margin-top:-.75rem;} .shimmer{font-size:2.6rem;text-shadow:0 0 5px rgba(82,113,255,.35),0 0 10px rgba(82,113,255,.25);} .side-title{font-size:1.25rem;transform:translateY(2px);} .buttons{gap:.5rem;} .glass-btn{padding:.45rem .85rem;font-size:.9rem;} .loader-box{padding:.85rem 1rem;gap:.6rem;} .spinner{width:32px;height:32px;} .loader-text{font-size:.9rem;} } /* <=380px */ @media (max-width:380px){ .colors-accordion .color-chips{grid-template-columns:1fr;} .dyes-grid{gap:.65rem;} .dye-card-img{height:92px;} .chip,.chip--clear{font-size:.8rem;padding:.38rem .6rem;} .chip-swatch,.chip--clear .chip-swatch{width:16px;height:16px;} } /* ===== Desktop-only guarantee ===== */ @media (min-width:681px){ /* color bar stays visible on desktop */ .colors-accordion > summary{display:none!important} .color-chips{display:flex} } /* Mobile-only color chips layout (desktop untouched) */ .color-chips.chips-mobile{ display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); /* 3 per row on most phones */ gap: .35rem .4rem; padding: .45rem .5rem; background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.06); border-radius: 10px; } .color-chips.chips-mobile .chip, .color-chips.chips-mobile .chip--clear{ width: 100%; min-width: 0; justify-content: flex-start; padding: .26rem .45rem; font-size: .82rem; border-radius: 999px; } .color-chips.chips-mobile .chip-swatch, .color-chips.chips-mobile .chip--clear .chip-swatch{ width: 14px; height: 14px; } /* ===== Mobile layout hard overrides ===== */ @media (max-width:680px){ /* 1) Stack every control full-width, one per line */ .filters-panel{ display:grid !important; grid-template-columns: 1fr !important; gap:.55rem !important; align-items:stretch !important; } .filters-panel .glass-btn, .filters-panel .sort-toggle, .filters-panel .filter-toggle, .filters-panel .shown-count{ width:100% !important; justify-content:center !important; box-sizing:border-box !important; margin:0 !important; } /* 2) “Total Dyes” pill same width as others */ .filters-panel .shown-count{ order:99; margin-left:0 !important; } /* 3) Color chips: dots only, two rows */ :root{ --mobile-chips-per-row: 10; /* 10 across -> 2 rows for ~20 chips */ --mobile-chip-dot: 18px; --mobile-chip-gap: .45rem; } #color-chips{ display:grid !important; grid-template-columns: repeat(var(--mobile-chips-per-row), 1fr) !important; gap:var(--mobile-chip-gap) !important; padding:.5rem .6rem !important; } #color-chips .chip-label{ display:none !important; } #color-chips .chip, #color-chips .chip--clear{ display:flex !important; align-items:center; justify-content:center; padding:0 !important; background:transparent !important; border:0 !important; box-shadow:none !important; min-width:0 !important; } #color-chips .chip-swatch, #color-chips .chip--clear .chip-swatch{ width:var(--mobile-chip-dot) !important; height:var(--mobile-chip-dot) !important; border-radius:50% !important; border:1px solid rgba(255,255,255,.35) !important; box-shadow:0 0 0 2px rgba(0,0,0,.15) inset !important; } #color-chips .chip--clear .chip-swatch{ display:flex; align-items:center; justify-content:center; } #color-chips .chip--clear .chip-swatch svg{ width:10px; height:10px; } /* 4) Cards: force exactly two per row */ .dyes-grid{ grid-template-columns: repeat(2, minmax(0,1fr)) !important; gap:.8rem !important; padding:.8rem !important; } } /* === Mobile: make color row full-width like the buttons === */ @media (max-width:680px){ .filters-panel{ display:grid !important; grid-template-columns: 1fr !important; } /* Full width + same “glass” frame as others */ #color-chips{ justify-self: stretch !important; align-self: stretch !important; width:100% !important; max-width:100% !important; box-sizing:border-box !important; margin:0 !important; /* match button look */ background:rgba(255,255,255,.03) !important; border:1px solid rgba(255,255,255,.07) !important; border-radius:10px !important; padding:.5rem .75rem !important; /* dots-only, two lines */ display:grid !important; grid-template-columns: repeat(10, minmax(0,1fr)) !important; /* 10 per row */ gap:.45rem !important; } #color-chips .chip-label{display:none !important;} #color-chips .chip, #color-chips .chip--clear{ padding:0 !important; border:0 !important; background:transparent !important; justify-content:center !important; min-width:0 !important; } #color-chips .chip-swatch, #color-chips .chip--clear .chip-swatch{ width:18px !important; height:18px !important; border-radius:50% !important; border:1px solid rgba(255,255,255,.35) !important; box-shadow:0 0 0 2px rgba(0,0,0,.15) inset !important; } #color-chips .chip--clear .chip-swatch svg{width:10px;height:10px;} }