Files
justvitamin/static/css/style.css
Omair Saleh 09d837a660 v2: Live Flask app — real Gemini AI demos, Nano Banana image gen, real £19.4M data dashboard
- Flask + gunicorn backend replacing static nginx
- 3 live AI demos powered by Gemini 2.5 Flash
- Nano Banana + Nano Banana Pro for product image generation
- Real JV ecommerce dashboard (728K orders, 230K customers, 4MB data)
- AI Infrastructure Proposal + Offer pages
- Live product scraper for justvitamins.co.uk + competitor pages
- API: /api/scrape, /api/generate-pack, /api/competitor-xray, /api/pdp-surgeon, /api/generate-images
2026-03-02 20:02:25 +08:00

150 lines
13 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* JustVitamin × QuikCue — Live AI Engine */
:root{--bg:#060a0f;--card:#0d1320;--card2:#111c2e;--border:#172035;--border2:#213050;--text:#e4eaf0;--text2:#8da0be;--muted:#506480;--accent:#10b981;--accent2:#34d399;--red:#ef4444;--red2:#fca5a5;--blue:#3b82f6;--purple:#8b5cf6;--gold:#f59e0b;--cyan:#06b6d4;--glow:rgba(16,185,129,.12)}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:70px}
body{font-family:'Inter',system-ui,sans-serif;background:var(--bg);color:var(--text);line-height:1.65;-webkit-font-smoothing:antialiased}
/* Nav */
nav{position:sticky;top:0;z-index:100;background:rgba(6,10,15,.9);backdrop-filter:blur(14px);border-bottom:1px solid var(--border);padding:.7rem 1.5rem}
.nav-inner{max-width:1100px;margin:0 auto;display:flex;align-items:center;justify-content:space-between}
.logo{font-family:'JetBrains Mono',monospace;font-size:.9rem;font-weight:700;color:var(--accent);text-decoration:none}.logo .x{color:var(--muted);font-weight:400}
.nav-links{display:flex;gap:.2rem}.nav-links a{font-family:'JetBrains Mono',monospace;font-size:.75rem;color:var(--text2);text-decoration:none;padding:.35rem .6rem;border-radius:6px;transition:.15s}.nav-links a:hover{color:var(--text);background:var(--card)}
.page{max-width:1100px;margin:0 auto;padding:0 1.5rem}
/* Hero */
.hero{padding:4.5rem 0 3rem;position:relative}
.hero::before{content:'';position:absolute;top:-30%;right:-15%;width:600px;height:600px;background:radial-gradient(circle,var(--glow),transparent 70%);pointer-events:none}
.hero>*{position:relative;z-index:1}
.eyebrow{font-family:'JetBrains Mono',monospace;font-size:.78rem;font-weight:600;color:var(--accent);margin-bottom:1.25rem;display:flex;align-items:center;gap:.5rem}
.pill{font-size:.65rem;background:rgba(16,185,129,.2);color:var(--accent2);padding:.2rem .6rem;border-radius:99px;border:1px solid rgba(16,185,129,.3);animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.6}}
h1{font-size:clamp(2.2rem,5.5vw,3.5rem);font-weight:800;line-height:1.08;letter-spacing:-.03em;margin-bottom:1rem}
.gr{background:linear-gradient(135deg,var(--accent),var(--cyan));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.sub{font-size:1.1rem;color:var(--text2);line-height:1.7;max-width:620px;margin-bottom:1.5rem}.sub strong{color:var(--text)}
.sub-sm{font-size:.88rem;color:var(--muted);margin-bottom:1rem}
.stats{display:flex;gap:2.5rem;margin-top:2.5rem;flex-wrap:wrap}
.stat{display:flex;flex-direction:column;gap:.1rem}
.stat .val{font-family:'JetBrains Mono',monospace;font-size:1.5rem;font-weight:800;color:var(--accent)}
.stat .lbl{font-size:.75rem;color:var(--muted);font-weight:500}
/* Buttons */
.btn-row{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:1rem}
.btn{display:inline-flex;align-items:center;gap:.35rem;font-size:.85rem;font-weight:600;padding:.65rem 1.3rem;border-radius:9px;text-decoration:none;cursor:pointer;border:none;transition:.2s}
.btn.cta{background:var(--red);color:#fff}.btn.cta:hover{background:#f87171;transform:translateY(-2px);box-shadow:0 8px 25px rgba(239,68,68,.2)}
.btn.cta.lg{font-size:1rem;padding:.9rem 2rem;border-radius:11px}
.btn.ghost{background:transparent;color:var(--accent);border:1px solid rgba(16,185,129,.25)}.btn.ghost:hover{background:var(--glow)}
.btn.outline{background:transparent;color:var(--text2);border:1px solid var(--border2)}.btn.outline:hover{color:var(--text);border-color:var(--muted)}
.note{font-family:'JetBrains Mono',monospace;font-size:.7rem;color:var(--muted);margin-top:.5rem}.note a{color:var(--accent);text-decoration:none}
/* Demo sections */
.demo{padding:4rem 0;border-top:1px solid var(--border)}
.demo h2{font-size:clamp(1.5rem,4vw,2rem);font-weight:700;margin-bottom:.5rem}
.badge{font-family:'JetBrains Mono',monospace;font-size:.65rem;font-weight:700;padding:.25rem .65rem;border-radius:6px;display:inline-block;margin-bottom:.75rem}
.badge.red{background:rgba(239,68,68,.15);color:var(--red);border:1px solid rgba(239,68,68,.25)}
.badge.blue{background:rgba(59,130,246,.15);color:var(--blue);border:1px solid rgba(59,130,246,.25)}
.badge.purple{background:rgba(139,92,246,.15);color:var(--purple);border:1px solid rgba(139,92,246,.25)}
/* Input cards */
.input-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:1.5rem;margin:1.5rem 0}
.input-row{display:flex;gap:.75rem;align-items:flex-end}
.input-group{flex:1;display:flex;flex-direction:column;gap:.3rem}
.input-group label{font-family:'JetBrains Mono',monospace;font-size:.68rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.input-group input{background:var(--bg);border:1px solid var(--border2);border-radius:8px;padding:.65rem 1rem;color:var(--text);font-size:.88rem;outline:none;transition:.2s;width:100%}
.input-group input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--glow)}
.btn-gen{font-family:'JetBrains Mono',monospace;font-size:.82rem;font-weight:700;padding:.65rem 1.4rem;border:none;border-radius:8px;color:#fff;cursor:pointer;white-space:nowrap;transition:.2s}
.btn-gen.red{background:var(--red)}.btn-gen.blue{background:var(--blue)}.btn-gen.purple{background:var(--purple)}
.btn-gen:hover{opacity:.9;transform:translateY(-1px)}
.btn-gen:disabled{opacity:.5;cursor:not-allowed}
.btn-gen.loading{position:relative;color:rgba(255,255,255,.6)}
.btn-gen.loading::after{content:'';display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite;margin-left:.5rem}
@keyframes spin{to{transform:rotate(360deg)}}
/* Step bar */
.step-bar{display:flex;gap:.75rem;margin-top:1rem}
.step{flex:1;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:.6rem .8rem;position:relative;overflow:hidden}
.step .step-label{font-size:.7rem;color:var(--muted);font-weight:600;display:block}
.step .step-status{font-size:.75rem;font-weight:600;color:var(--text2)}
.step.active .step-status{color:var(--cyan)}
.step.done .step-status{color:var(--accent)}
.step.error .step-status{color:var(--red)}
.step::after{content:'';position:absolute;bottom:0;left:0;height:2px;width:0;transition:.3s}
.step.active::after{width:100%;background:var(--cyan);animation:pulse 1.2s infinite}
.step.done::after{width:100%;background:var(--accent)}
.step.error::after{width:100%;background:var(--red)}
/* Output */
.output{margin-top:1.5rem}.hidden{display:none}
.output-meta{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}
.chip{background:var(--card);border:1px solid var(--border);border-radius:6px;padding:.35rem .7rem;font-size:.72rem;color:var(--text2)}.chip strong{color:var(--cyan)}
/* Asset grid */
.asset-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:.75rem}
.asset-card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:1.2rem;animation:fadeUp .4s ease both}
@keyframes fadeUp{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}
.asset-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.6rem}
.asset-type{font-family:'JetBrains Mono',monospace;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:.15rem .45rem;border-radius:4px}
.asset-type.hero{background:rgba(239,68,68,.12);color:var(--red)}
.asset-type.pdp{background:rgba(16,185,129,.12);color:var(--accent)}
.asset-type.ad{background:rgba(245,158,11,.12);color:var(--gold)}
.asset-type.email{background:rgba(59,130,246,.12);color:var(--blue)}
.asset-type.video{background:rgba(139,92,246,.12);color:var(--purple)}
.asset-type.blog{background:rgba(236,72,153,.12);color:#ec4899}
.asset-type.seo{background:rgba(99,102,241,.12);color:#6366f1}
.asset-type.a11y{background:rgba(107,114,128,.12);color:#9ca3af}
.asset-num{font-family:'JetBrains Mono',monospace;font-size:.65rem;color:var(--muted)}
.asset-body{font-size:.84rem;color:var(--text2);line-height:1.65}
.asset-body strong{color:var(--text)}.asset-body ul{list-style:none;margin-top:.4rem}.asset-body li{padding-left:.9rem;position:relative;margin-bottom:.25rem}.asset-body li::before{content:'';position:absolute;left:0;color:var(--accent);font-weight:700}
/* Image section */
.img-section{margin-top:1.5rem}.img-section h3{font-size:1.1rem;font-weight:700;margin-bottom:.35rem}
.img-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:.75rem;margin-top:.75rem}
.img-card{background:var(--card);border:1px solid var(--border);border-radius:10px;overflow:hidden}
.img-card img{width:100%;aspect-ratio:1;object-fit:cover}
.img-card.wide img{aspect-ratio:16/9}
.img-card .caption{padding:.75rem 1rem;font-size:.78rem;color:var(--text2)}.img-card .caption strong{color:var(--text)}
/* Split screen */
.split{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--border);border-radius:12px;overflow:hidden;min-height:400px}
.split-left{background:#0d0a0a;padding:1.5rem;border-right:1px solid var(--border)}
.split-right{background:var(--card);padding:1.5rem}
.split-label{font-family:'JetBrains Mono',monospace;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:.2rem .5rem;border-radius:4px;display:inline-block;margin-bottom:.75rem}
.split-label.bad{background:rgba(239,68,68,.15);color:var(--red)}
.split-label.good{background:rgba(16,185,129,.15);color:var(--accent)}
.xray-item{margin-bottom:1.1rem}
.xray-label{font-family:'JetBrains Mono',monospace;font-size:.68rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.25rem}
.xray-val{font-size:.86rem;color:var(--text2);line-height:1.6}.xray-val strong{color:var(--text)}
.xray-val.gap{color:var(--red);font-weight:600}
.xray-tactics{list-style:none}.xray-tactics li{font-size:.84rem;color:var(--text2);padding-left:1.2rem;position:relative;margin-bottom:.35rem}.xray-tactics li::before{content:'';position:absolute;left:0;top:.5rem;width:6px;height:6px;border-radius:50%;background:var(--red)}
.improved-hero{background:var(--bg);border:1px solid rgba(16,185,129,.2);border-radius:10px;padding:1.25rem;margin-bottom:1rem}
.improved-hero h4{font-size:1.05rem;font-weight:700;color:var(--accent2);margin-bottom:.5rem;line-height:1.3}
.improved-hero p{font-size:.84rem;color:var(--text2);line-height:1.6}
.diff-list{list-style:none;margin-top:.75rem}.diff-list li{padding:.5rem 0;border-bottom:1px solid var(--border);font-size:.84rem;display:flex;gap:.5rem}.diff-list li:last-child{border:none}
.diff-list .icon{flex-shrink:0}.diff-list .txt{color:var(--text2)}.diff-list .txt strong{color:var(--text)}
.compliance{margin-top:1rem;padding:.75rem 1rem;background:rgba(239,68,68,.05);border:1px solid rgba(239,68,68,.15);border-radius:8px}
.compliance h5{font-family:'JetBrains Mono',monospace;font-size:.68rem;color:var(--red);text-transform:uppercase;letter-spacing:.06em;margin-bottom:.4rem}
.compliance ul{list-style:none}.compliance li{font-size:.78rem;color:#f87171;padding-left:.8rem;position:relative;margin-bottom:.2rem}.compliance li::before{content:'✕';position:absolute;left:0;font-weight:700}
/* Toggles */
.toggle-group{display:flex;gap:.4rem;margin-top:1rem;flex-wrap:wrap}
.toggle{font-family:'JetBrains Mono',monospace;font-size:.75rem;font-weight:600;padding:.45rem .9rem;border:1px solid var(--border2);border-radius:7px;background:transparent;color:var(--muted);cursor:pointer;transition:.2s}
.toggle:hover{border-color:var(--text2);color:var(--text)}
.toggle.active{background:var(--glow);border-color:var(--accent);color:var(--accent)}
/* Annotation */
.ann{font-family:'JetBrains Mono',monospace;font-size:.65rem;color:var(--accent);background:var(--glow);padding:.15rem .4rem;border-radius:4px;display:inline-block;margin:.25rem 0}
.highlight{background:var(--glow);border-left:2px solid var(--accent);padding:.25rem .5rem;margin:.3rem 0;display:block;border-radius:0 4px 4px 0;font-size:.84rem;color:var(--text2)}
/* CTA */
.cta-section{text-align:center;padding:5rem 0}
.cta-section h2{margin-bottom:.5rem}
/* Footer */
footer{padding:1.5rem 0;border-top:1px solid var(--border);display:flex;justify-content:space-between;font-family:'JetBrains Mono',monospace;font-size:.72rem;color:var(--muted)}
footer a{color:var(--accent);text-decoration:none}
/* Responsive */
@media(max-width:800px){.input-row{flex-direction:column}.btn-gen{width:100%}.split{grid-template-columns:1fr}.split-left{border-right:none;border-bottom:1px solid var(--border)}.stats{gap:1.25rem}.step-bar{flex-direction:column;gap:.4rem}footer{flex-direction:column;gap:.3rem;text-align:center}}
@media(max-width:500px){.nav-links a{font-size:.68rem;padding:.25rem .4rem}.btn-row{flex-direction:column}.btn{width:100%;justify-content:center}}