diff --git a/css/style.css b/css/style.css index 7b7af51..7ca1386 100644 --- a/css/style.css +++ b/css/style.css @@ -32,7 +32,11 @@ /* --- Reset --- */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } -html { scroll-behavior: smooth; } +html { + scroll-behavior: smooth; + background: #251D70; /* matches dark sections so the reserved gutter blends */ + scrollbar-gutter: stable; /* reserve scrollbar space so locking scroll doesn't shift the page */ +} body { font-family: var(--font-body); color: var(--text); @@ -40,6 +44,23 @@ body { line-height: 1.6; overflow-x: hidden; } + +/* --- Custom scrollbars (themed) --- */ +html { scrollbar-width: thin; scrollbar-color: rgba(251,191,36,0.55) rgba(255,255,255,0.06); } +.pkg-modal, .nav-links { scrollbar-width: thin; scrollbar-color: rgba(251,191,36,0.55) rgba(255,255,255,0.06); } +::-webkit-scrollbar { width: 12px; height: 12px; } +::-webkit-scrollbar-track { background: rgba(255,255,255,0.05); } +::-webkit-scrollbar-thumb { + background: linear-gradient(180deg, var(--gold), var(--orange)); + background-clip: padding-box; + border: 3px solid transparent; /* slims the thumb and leaves breathing room in the track */ + border-radius: 10px; +} +::-webkit-scrollbar-thumb:hover { + background: linear-gradient(180deg, var(--orange), var(--gold)); + background-clip: padding-box; +} +::-webkit-scrollbar-corner { background: transparent; } img { max-width: 100%; display: block; } a { text-decoration: none; color: inherit; } ul { list-style: none; } @@ -397,6 +418,8 @@ ul { list-style: none; } display: block; filter: drop-shadow(0 8px 24px rgba(0,0,0,0.35)); } +/* Hidden until the JS "transporter" effect materialises it (see main.js) */ +.mascot-teleport { opacity: 0; } /* Wave */ .hero-wave { @@ -672,6 +695,13 @@ ul { list-style: none; } transform: translateX(4px); } +/* ================================================ + PRICING TEASER + ================================================ */ +.pricing-teaser { background: #3B2DA8; } +.pricing-teaser .section-header { margin-bottom: 0; } +.pricing-teaser-btn { margin-top: 32px; } + /* ================================================ CONTACT ================================================ */ diff --git a/estimates.php b/estimates.php index a20de2c..2b0d41e 100644 --- a/estimates.php +++ b/estimates.php @@ -324,6 +324,175 @@ color: rgba(255,255,255,0.4); } + /* Enquire button on each package */ + .pricing-enquire { + margin-top: 18px; + width: 100%; + justify-content: center; + font-size: 0.85rem; + padding: 12px 18px; + } + .bench-enquire { margin-top: 22px; } + .ward-enquire { margin-top: 20px; } + + /* "See full details" trigger */ + .pkg-details-btn { + background: none; + border: none; + cursor: pointer; + color: var(--gold); + font-family: var(--font-head); + font-size: 0.78rem; + font-weight: 700; + letter-spacing: 0.03em; + display: inline-flex; + align-items: center; + gap: 7px; + margin-top: 16px; + padding: 6px 0; + transition: gap var(--transition), color var(--transition); + } + .pkg-details-btn:hover { gap: 11px; color: var(--white); } + .pricing-card, .ward-card, .bench-card { cursor: pointer; } + + /* Package detail modal */ + .pkg-modal-overlay { + position: fixed; + inset: 0; + background: rgba(10,6,30,0.78); + -webkit-backdrop-filter: blur(4px); + backdrop-filter: blur(4px); + display: flex; + align-items: center; + justify-content: center; + padding: 24px; + z-index: 1000; + opacity: 0; + visibility: hidden; + transition: opacity 0.25s ease, visibility 0.25s ease; + } + .pkg-modal-overlay.open { opacity: 1; visibility: visible; } + .pkg-modal { + background: linear-gradient(160deg, #2D1F6E 0%, #1E1550 100%); + border: 1px solid rgba(251,191,36,0.25); + border-radius: var(--radius); + max-width: 560px; + width: 100%; + max-height: 88vh; + overflow-y: auto; + padding: 40px; + position: relative; + box-shadow: 0 24px 70px rgba(0,0,0,0.5); + transform-origin: 50% 50%; + will-change: transform; + } + /* The spiral open animation is driven in JS (see below). For users who + prefer reduced motion, fall back to a gentle fade/scale instead. */ + @media (prefers-reduced-motion: reduce) { + .pkg-modal { transform: none !important; transition: none !important; } + } + .pkg-sparkle { + position: fixed; + z-index: 1100; + pointer-events: none; + line-height: 1; + transform: translate(-50%, -50%); + text-shadow: 0 0 6px rgba(255,255,255,0.4); + will-change: transform, opacity; + } + .pkg-modal-close { + position: absolute; + top: 18px; right: 18px; + width: 38px; height: 38px; + border-radius: 50%; + border: 1px solid rgba(255,255,255,0.18); + background: rgba(255,255,255,0.06); + color: rgba(255,255,255,0.8); + font-size: 1.3rem; + line-height: 1; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + transition: background 0.2s, color 0.2s; + } + .pkg-modal-close:hover { background: rgba(255,255,255,0.14); color: var(--white); } + .pkg-modal-emoji { font-size: 2.4rem; line-height: 1; margin-bottom: 10px; } + .pkg-modal-name { + font-family: var(--font-head); + font-size: 1.6rem; + font-weight: 800; + color: var(--white); + margin-bottom: 4px; + padding-right: 36px; + } + .pkg-modal-price { + font-family: var(--font-head); + font-size: 1.3rem; + font-weight: 800; + color: var(--gold); + margin-bottom: 12px; + } + .pkg-modal-price span { font-size: 0.85rem; font-weight: 500; color: rgba(255,255,255,0.45); } + .pkg-modal-lead { + color: rgba(255,255,255,0.62); + font-size: 0.93rem; + line-height: 1.65; + margin-bottom: 4px; + } + .pkg-modal-divider { + border: none; + border-top: 1px solid rgba(255,255,255,0.12); + margin: 22px 0; + } + .pkg-range { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 16px; + } + .pkg-range-col { + background: rgba(255,255,255,0.05); + border: 1px solid rgba(255,255,255,0.1); + border-radius: 14px; + padding: 16px 18px; + } + .pkg-range-col h4 { + font-family: var(--font-head); + font-size: 0.68rem; + font-weight: 700; + letter-spacing: 0.14em; + text-transform: uppercase; + color: var(--gold); + margin-bottom: 6px; + } + .pkg-range-col .amt { + font-family: var(--font-head); + font-size: 1.15rem; + font-weight: 800; + color: var(--white); + margin-bottom: 10px; + } + .pkg-range-col p { font-size: 0.84rem; color: rgba(255,255,255,0.72); line-height: 1.5; } + .pkg-specs { display: flex; flex-direction: column; } + .pkg-spec { + display: flex; + justify-content: space-between; + gap: 16px; + font-size: 0.9rem; + padding: 11px 0; + border-bottom: 1px solid rgba(255,255,255,0.08); + } + .pkg-spec:last-child { border-bottom: none; } + .pkg-spec .k { color: rgba(255,255,255,0.5); display: flex; align-items: center; gap: 9px; } + .pkg-spec .k i { color: var(--gold); width: 16px; text-align: center; } + .pkg-spec .v { color: var(--white); font-weight: 600; text-align: right; } + .pkg-modal-enquire { margin-top: 26px; } + html.modal-open { overflow: hidden; } + @media (max-width: 520px) { + .pkg-range { grid-template-columns: 1fr; } + .pkg-modal { padding: 30px 22px; } + } + /* CTA strip */ .pricing-cta { background: linear-gradient(145deg, var(--purple-deep) 0%, #2D1860 100%); @@ -430,6 +599,9 @@
Perfect for businesses taking their first steps into the digital realm.
+ + Enquire about this + @@ -448,6 +620,9 @@For businesses ready to expand their reach and establish a stronger online presence.
+ + Enquire about this + @@ -466,6 +641,9 @@When a standard website simply won't contain your ambitions.
+ + Enquire about this + @@ -486,6 +664,9 @@Everything needed to open your digital marketplace.
+ + Enquire about this + @@ -505,6 +686,9 @@For businesses seeking a digital flagship rather than a simple online shop.
+ + Enquire about this + @@ -524,6 +708,9 @@Technical support billed by the hour. Minimum one hour applies. Remote support available - no call-out charge for remote sessions.
+ + Book some support + @@ -574,6 +764,9 @@