horse-tips-site/ index.html signup.html results.html faq.html terms.html assets/ style.css app.js :root{ --bg:#0b0f14; --panel:#101823; --card:#0f1722; --text:#eaf2ff; --muted:#9fb0c6; --line:rgba(255,255,255,.10); --accent:#19c37d; --accent2:#58a6ff; --warn:#ffcc66; --danger:#ff6b6b; --shadow: 0 14px 40px rgba(0,0,0,.45); --radius:18px; --radius2:14px; --max:1100px; --font: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial; } *{ box-sizing:border-box; } html,body{ margin:0; padding:0; background:radial-gradient(1200px 800px at 15% 10%, rgba(88,166,255,.15), transparent 60%), radial-gradient(1000px 700px at 70% 0%, rgba(25,195,125,.12), transparent 55%), var(--bg); color:var(--text); font-family:var(--font); } a{ color:inherit; text-decoration:none; } p{ color:var(--muted); line-height:1.65; margin:0.3rem 0 0; } small{ color:var(--muted); } .container{ max-width:var(--max); margin:0 auto; padding: 26px 18px 60px; } .topbar{ position:sticky; top:0; z-index:20; background: rgba(11,15,20,.70); backdrop-filter: blur(10px); border-bottom:1px solid var(--line); } .topbar-inner{ max-width:var(--max); margin:0 auto; display:flex; align-items:center; justify-content:space-between; padding: 14px 18px; } .brand{ display:flex; align-items:center; gap:10px; font-weight:800; letter-spacing:.2px; } .badge{ font-size:.75rem; padding:4px 10px; border:1px solid var(--line); border-radius:999px; background: rgba(255,255,255,.04); color: var(--muted); } .icon-btn{ width:42px; height:42px; display:inline-grid; place-items:center; border-radius:12px; border:1px solid var(--line); background: rgba(255,255,255,.04); cursor:pointer; } .icon-btn:hover{ background: rgba(255,255,255,.07); } .hamburger{ width:18px; height:12px; position:relative; } .hamburger span{ position:absolute; left:0; right:0; height:2px; border-radius:2px; background: var(--text); opacity:.9; } .hamburger span:nth-child(1){ top:0; } .hamburger span:nth-child(2){ top:5px; opacity:.75; } .hamburger span:nth-child(3){ top:10px; opacity:.6; } .hero{ margin-top:18px; padding: 26px; border:1px solid var(--line); background: linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.02)); border-radius: var(--radius); box-shadow: var(--shadow); overflow:hidden; } .hero h1{ margin:0; font-size: clamp(1.8rem, 3vw, 2.7rem); letter-spacing:-.4px; } .hero .sub{ margin-top:10px; max-width: 70ch; } .hero-actions{ margin-top:18px; display:flex; gap:10px; flex-wrap:wrap; } .btn{ display:inline-flex; align-items:center; justify-content:center; gap:10px; border-radius: 14px; padding: 12px 16px; border:1px solid var(--line); background: rgba(255,255,255,.04); cursor:pointer; font-weight:700; } .btn:hover{ background: rgba(255,255,255,.07); } .btn.primary{ border-color: rgba(25,195,125,.35); background: rgba(25,195,125,.12); } .btn.primary:hover{ background: rgba(25,195,125,.18); } .btn.link{ background: transparent; border-color: rgba(88,166,255,.35); } .btn.link:hover{ background: rgba(88,166,255,.10); } .grid{ margin-top:18px; display:grid; grid-template-columns: repeat(12, 1fr); gap: 14px; } .card{ border:1px solid var(--line); background: rgba(255,255,255,.03); border-radius: var(--radius2); padding: 18px; } .card h3{ margin:0; font-size:1.05rem; } .card p{ margin-top:8px; } .col-12{ grid-column: span 12; } .col-7{ grid-column: span 7; } .col-5{ grid-column: span 5; } .col-6{ grid-column: span 6; } .col-4{ grid-column: span 4; } .col-3{ grid-column: span 3; } @media (max-width: 900px){ .col-7,.col-5,.col-6,.col-4,.col-3{ grid-column: span 12; } } .hr{ height:1px; background: var(--line); margin: 14px 0; } .kpis{ display:grid; grid-template-columns: repeat(12, 1fr); gap: 12px; } .kpi{ grid-column: span 3; border:1px solid var(--line); background: rgba(255,255,255,.03); border-radius: 16px; padding: 14px; } .kpi .label{ color:var(--muted); font-size:.85rem; } .kpi .value{ font-size:1.35rem; font-weight:900; margin-top:6px; } @media (max-width: 900px){ .kpi{ grid-column: span 6; } } @media (max-width: 520px){ .kpi{ grid-column: span 12; } } .table{ width:100%; border-collapse: collapse; overflow:hidden; border-radius: 14px; border:1px solid var(--line); } .table th, .table td{ padding: 12px 12px; border-bottom: 1px solid var(--line); text-align:left; font-size:.95rem; } .table th{ color: var(--muted); font-weight:800; background: rgba(255,255,255,.03); } .table tr:last-child td{ border-bottom:none; } .pill{ display:inline-flex; align-items:center; padding: 6px 10px; border-radius: 999px; font-size:.8rem; border:1px solid var(--line); background: rgba(255,255,255,.04); color: var(--muted); } .pill.good{ border-color: rgba(25,195,125,.35); background: rgba(25,195,125,.12); color:#baf3d9; } .pill.mid{ border-color: rgba(255,204,102,.35); background: rgba(255,204,102,.10); color:#ffe1a6; } .pill.bad{ border-color: rgba(255,107,107,.35); background: rgba(255,107,107,.10); color:#ffc2c2; } .form{ display:grid; gap: 10px; } .input{ width:100%; padding: 12px 12px; border-radius: 14px; border:1px solid var(--line); background: rgba(0,0,0,.20); color: var(--text); outline:none; } .input::placeholder{ color: rgba(159,176,198,.7); } label{ font-size:.9rem; color: var(--muted); } .notice{ padding: 12px 12px; border-radius: 14px; border:1px solid rgba(88,166,255,.30); background: rgba(88,166,255,.08); color: #cfe6ff; } .footer{ margin-top: 26px; color: var(--muted); font-size:.9rem; display:flex; flex-wrap:wrap; gap:10px; justify-content: space-between; border-top: 1px solid var(--line); padding-top: 16px; } /* Drawer / Side Panel */ .drawer-overlay{ position:fixed; inset:0; background: rgba(0,0,0,.55); backdrop-filter: blur(4px); display:none; z-index: 40; } .drawer{ position:fixed; top:0; bottom:0; left:0; width:min(360px, 88vw); background: linear-gradient(180deg, rgba(16,24,35,.98), rgba(8,12,18,.98)); border-right:1px solid var(--line); box-shadow: var(--shadow); transform: translateX(-102%); transition: transform .22s ease; z-index: 50; padding: 16px; } .drawer.open{ transform: translateX(0); } .drawer-overlay.open{ display:block; } .drawer .head{ display:flex; align-items:center; justify-content:space-between; margin-bottom: 12px; } .drawer .nav{ display:grid; gap: 8px; } .drawer a{ padding: 12px 12px; border-radius: 14px; border:1px solid var(--line); background: rgba(255,255,255,.03); color: var(--text); font-weight:750; } .drawer a:hover{ background: rgba(255,255,255,.06); } .drawer .mini{ margin-top: 12px; color: var(--muted); font-size:.9rem; } /* Simple chart */ .chart{ width:100%; height:220px; border:1px solid var(--line); background: rgba(255,255,255,.02); border-radius: 16px; display:flex; align-items:flex-end; padding: 14px; gap: 10px; } .bar{ flex:1; border-radius: 14px; background: rgba(25,195,125,.14); border:1px solid rgba(25,195,125,.30); position:relative; min-height: 12px; } .bar span{ position:absolute; top:-22px; left:50%; transform: translateX(-50%); font-size:.8rem; color: var(--muted); white-space:nowrap; } .bar i{ position:absolute; bottom:-22px; left:50%; transform: translateX(-50%); font-style:normal; font-size:.8rem; color: var(--muted); white-space:nowrap; } // Drawer (hamburger side panel) function openDrawer(){ document.getElementById('drawer').classList.add('open'); document.getElementById('drawerOverlay').classList.add('open'); document.body.style.overflow = 'hidden'; } function closeDrawer(){ document.getElementById('drawer').classList.remove('open'); document.getElementById('drawerOverlay').classList.remove('open'); document.body.style.overflow = ''; } window.addEventListener('keydown', (e) => { if(e.key === 'Escape') closeDrawer(); }); // Highlight active page link inside drawer function markActiveNav(){ const path = (location.pathname.split('/').pop() || 'index.html').toLowerCase(); document.querySelectorAll('.drawer .nav a').forEach(a=>{ const href = (a.getAttribute('href') || '').toLowerCase(); if(href === path) a.style.borderColor = 'rgba(25,195,125,.45)'; }); } // Results data (you can edit these numbers any time) const resultsData = { periodLabel: "Last 8 weeks", totals: { bets: 96, won: 41, lost: 47, void: 8 }, weeks: [ { label:"Wk 1", acc: 46 }, { label:"Wk 2", acc: 52 }, { label:"Wk 3", acc: 39 }, { label:"Wk 4", acc: 58 }, { label:"Wk 5", acc: 44 }, { label:"Wk 6", acc: 61 }, { label:"Wk 7", acc: 49 }, { label:"Wk 8", acc: 55 }, ], notes: [ "Accuracy shown is Win % excluding Void bets.", "Past performance is not a guarantee of future results." ] }; function pct(num, den){ if(!den) return 0; return Math.round((num/den)*100); } function renderResultsPage(){ const el = (id)=>document.getElementById(id); if(!el('kpiBets')) return; // not on results page const { bets, won, lost, void: v } = resultsData.totals; const settled = won + lost; const accuracy = pct(won, settled); el('periodLabel').textContent = resultsData.periodLabel; el('kpiBets').textContent = bets; el('kpiWon').textContent = won; el('kpiLost').textContent = lost; el('kpiVoid').textContent = v; el('kpiAcc').textContent = accuracy + "%"; // status pill const pill = el('accPill'); pill.textContent = accuracy >= 55 ? "Strong" : accuracy >= 45 ? "Fair" : "Volatile"; pill.className = "pill " + (accuracy >= 55 ? "good" : accuracy >= 45 ? "mid" : "bad"); // table const tbody = el('weeksBody'); tbody.innerHTML = ""; resultsData.weeks.forEach(w=>{ const tr = document.createElement('tr'); tr.innerHTML = `