diff --git a/models/model_view_base.py b/models/model_view_base.py index a45357b..ade4c7c 100644 --- a/models/model_view_base.py +++ b/models/model_view_base.py @@ -207,6 +207,7 @@ class Model_View_Base(BaseModel, ABC): FLAG_OBEDIENCE_LEVEL: ClassVar[str] = Obedience_Level.FLAG_OBEDIENCE_LEVEL FLAG_OVERLAY: ClassVar[str] = 'overlay' FLAG_PAGE_BODY: ClassVar[str] = 'page-body' + FLAG_PRICING: ClassVar[str] = 'pricing' FLAG_QUANTITY: ClassVar[str] = 'quantity' FLAG_RESPONSE_QUALITY_METRIC: ClassVar[str] = Response_Quality_Metric.FLAG_RESPONSE_QUALITY_METRIC FLAG_RIGHT_HAND_SIDE: ClassVar[str] = 'rhs' @@ -223,6 +224,7 @@ class Model_View_Base(BaseModel, ABC): FLAG_TABLE_MAIN: ClassVar[str] = 'table-main' FLAG_TEMPORARY_ELEMENT: ClassVar[str] = 'temporary-element' FLAG_USER: ClassVar[str] = User.FLAG_USER + # FLAG_VALUE_PROPOSITION: ClassVar[str] = 'value-proposition' FLAG_WEATHER: ClassVar[str] = Weather.FLAG_WEATHER FLAG_WEBSITE: ClassVar[str] = Base.FLAG_WEBSITE HASH_GET_ALTCHA_CHALLENGE: ClassVar[str] = '/altcha/create-challenge' diff --git a/static/css/pages/core/home.css b/static/css/pages/core/home.css index 7023492..37e792d 100644 --- a/static/css/pages/core/home.css +++ b/static/css/pages/core/home.css @@ -14,17 +14,13 @@ ul li { font-size: 16px; } -section.problem, section.benefits, -section.features, -section.faq { - padding: 6rem 0; +section.solution { + padding: 4rem 0; background: var(--colour-text-background); } -section.problem .card.problem, section.benefits .card.benefits, -section.features .card.features, -section.faq .card.faq { +section.solution .card.solution { padding: 2rem; background: var(--colour-page-background); border-radius: 8px; @@ -32,13 +28,13 @@ section.faq .card.faq { display: block; } -section.solution, -section.social-proof { - padding: 6rem 0; +section.problem, +section.early-access { + padding: 4rem 0; background: var(--colour-page-background-1); } -section.solution .card.solution, -section.social-proof .card.social-proof { +section.problem .card.problem, +section.early-access .card.early-access { background: var(--colour-text-background); padding: 2rem; border-radius: 8px; @@ -47,6 +43,13 @@ section.social-proof .card.social-proof { box-shadow: 0 4px 6px rgba(0,0,0,0.1); } + +section.benefits ul li, +section.solution ul li, +section.early-access ul li { + list-style: none; +} + /* Hero Section */ .hero { padding: 8rem 0 4rem; @@ -80,14 +83,19 @@ section.problem .problem.card:hover { transform: translateY(-5px); } */ +section.problem .section-subtitle { + /* font-size: 18px; */ + font-weight: bold; +} /* Solution Section */ -/* Benefits Section */ +/* Benefits Section * / section.benefits .section-subtitle { font-size: 18px; font-weight: bold; } +*/ /* Social Proof Section * / section.social-proof { diff --git a/static/css/sections/core.css b/static/css/sections/core.css index e4caaa4..4e9c32a 100644 --- a/static/css/sections/core.css +++ b/static/css/sections/core.css @@ -28,7 +28,7 @@ header { gap: 2rem; display: flex; flex-wrap: wrap; - max-width: 70vw; + max-width: 58vw; } .nav-links a { @@ -44,9 +44,9 @@ header { } .container { - max-width: 1200px; + max-width: min(2000px, 90vw); margin: 0 auto; - padding: 0 1.5rem; + padding: 0 5vw; } /* Header */ @@ -67,9 +67,9 @@ header { } .logo { - font-size: 1.5rem; + font-size: 2rem; font-weight: bold; - color: var(--primary); + color: var(--colour-secondary); } .nav-links { @@ -105,6 +105,7 @@ header { color: #fff; margin-bottom: 1rem; font-size: 1.2rem; + text-align: center; } .footer-section ul { @@ -138,6 +139,16 @@ header { color: aquamarine; } +.footer-section.contact { + width: 100%; +} +.footer-section .container { + padding: 0; +} +.footer-section .container.row .container.column { + padding: 1vh 2vw; +} + @media (max-width: 768px) { .footer-content { grid-template-columns: 1fr; @@ -145,7 +156,7 @@ header { } } -@media (max-width: 515px) { +@media (max-width: 450px) { .nav-links { display: none; } diff --git a/static/dist/css/core_admin_home.bundle.css b/static/dist/css/core_admin_home.bundle.css index d74422d..af4ab90 100644 --- a/static/dist/css/core_admin_home.bundle.css +++ b/static/dist/css/core_admin_home.bundle.css @@ -28,7 +28,7 @@ header { gap: 2rem; display: flex; flex-wrap: wrap; - max-width: 70vw; + max-width: 58vw; } .nav-links a { @@ -44,9 +44,9 @@ header { } .container { - max-width: 1200px; + max-width: min(2000px, 90vw); margin: 0 auto; - padding: 0 1.5rem; + padding: 0 5vw; } /* Header */ @@ -67,9 +67,9 @@ header { } .logo { - font-size: 1.5rem; + font-size: 2rem; font-weight: bold; - color: var(--primary); + color: var(--colour-secondary); } .nav-links { @@ -105,6 +105,7 @@ header { color: #fff; margin-bottom: 1rem; font-size: 1.2rem; + text-align: center; } .footer-section ul { @@ -138,6 +139,16 @@ header { color: aquamarine; } +.footer-section.contact { + width: 100%; +} +.footer-section .container { + padding: 0; +} +.footer-section .container.row .container.column { + padding: 1vh 2vw; +} + @media (max-width: 768px) { .footer-content { grid-template-columns: 1fr; diff --git a/static/dist/css/core_admin_home.bundle.css.map b/static/dist/css/core_admin_home.bundle.css.map index defaa95..c5e2d7f 100644 --- a/static/dist/css/core_admin_home.bundle.css.map +++ b/static/dist/css/core_admin_home.bundle.css.map @@ -1 +1 @@ -{"version":3,"file":"css/core_admin_home.bundle.css","mappings":";AACA;CACC;AACD;IACI,iBAAiB;IACjB,qCAAqC;IACrC;aACS;IACT,WAAW;IACX,aAAa;AACjB;;AAEA;IACI,aAAa;IACb,8BAA8B;IAC9B,mBAAmB;IACnB,eAAe;AACnB;;AAEA;IACI,iBAAiB;IACjB,iBAAiB;IACjB,qBAAqB;AACzB;;AAEA;IACI,aAAa;IACb,SAAS;IACT,aAAa;IACb,eAAe;IACf,eAAe;AACnB;;AAEA;IACI,qBAAqB;IACrB,kBAAkB;IAClB,gBAAgB;IAChB,qBAAqB;IACrB,eAAe;AACnB;AACA;IACI,YAAY;IACZ,cAAc;AAClB;;AAEA;IACI,iBAAiB;IACjB,cAAc;IACd,iBAAiB;AACrB;;AAEA,WAAW;AACX;IACI,iBAAiB;IACjB,qCAAqC;IACrC;aACS;IACT,WAAW;IACX,aAAa;AACjB;;AAEA;IACI,aAAa;IACb,8BAA8B;IAC9B,mBAAmB;IACnB,eAAe;AACnB;;AAEA;IACI,iBAAiB;IACjB,iBAAiB;IACjB,qBAAqB;AACzB;;AAEA;IACI,aAAa;IACb,SAAS;AACb;;AAEA;IACI,qBAAqB;IACrB,kBAAkB;IAClB,gBAAgB;IAChB,qBAAqB;AACzB;AACA;IACI,YAAY;AAChB;;AAEA,WAAW;AACX;IACI,mBAAmB;IACnB,cAAc;IACd,oBAAoB;AACxB;;AAEA;IACI,aAAa;IACb,2DAA2D;IAC3D,SAAS;IACT,mBAAmB;AACvB;;AAEA;IACI,WAAW;IACX,mBAAmB;IACnB,iBAAiB;AACrB;;AAEA;IACI,gBAAgB;IAChB,UAAU;AACd;;AAEA;IACI,qBAAqB;AACzB;;AAEA;IACI,cAAc;IACd,qBAAqB;IACrB,2BAA2B;AAC/B;;AAEA;IACI,WAAW;IACX,0BAA0B;AAC9B;;AAEA;IACI,6BAA6B;IAC7B,iBAAiB;IACjB,kBAAkB;IAClB,iBAAiB;AACrB;;AAEA;IACI,iBAAiB;AACrB;;AAEA;IACI;QACI,0BAA0B;QAC1B,kBAAkB;IACtB;AACJ;;AAEA;IACI;QACI,aAAa;IACjB;AACJ,C;ACvJA;IACI,uBAAuB;AAC3B;;AAEA;IACI,WAAW;AACf,C","sources":["webpack://app/./static/css/sections/core.css","webpack://app/./static/css/pages/core/admin_home.css"],"sourcesContent":["\n/* Home page\n*/\nheader {\n background: white;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n /* position: fixed;\n top: 0; */\n width: 100%;\n z-index: 1000;\n}\n\n.navbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem 0;\n}\n\n.logo {\n font-size: 1.5rem;\n font-weight: bold;\n color: var(--primary);\n}\n\n.nav-links {\n display: flex;\n gap: 2rem;\n display: flex;\n flex-wrap: wrap;\n max-width: 70vw;\n}\n\n.nav-links a {\n text-decoration: none;\n color: var(--text);\n font-weight: 500;\n align-content: center;\n font-size: 1rem;\n}\n.nav-links a.button {\n color: white;\n margin: 0 auto;\n}\n\n.container {\n max-width: 1200px;\n margin: 0 auto;\n padding: 0 1.5rem;\n}\n\n/* Header */\nheader {\n background: white;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n /* position: fixed;\n top: 0; */\n width: 100%;\n z-index: 1000;\n}\n\n.navbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem 0;\n}\n\n.logo {\n font-size: 1.5rem;\n font-weight: bold;\n color: var(--primary);\n}\n\n.nav-links {\n display: flex;\n gap: 2rem;\n}\n\n.nav-links a {\n text-decoration: none;\n color: var(--text);\n font-weight: 500;\n align-content: center;\n}\n.nav-links a.button {\n color: white;\n}\n\n/* Footer */\n.footer {\n background: #1f2937;\n color: #f3f4f6;\n padding: 4rem 0 2rem;\n}\n\n.footer-content {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 2rem;\n margin-bottom: 2rem;\n}\n\n.footer-section h3 {\n color: #fff;\n margin-bottom: 1rem;\n font-size: 1.2rem;\n}\n\n.footer-section ul {\n list-style: none;\n padding: 0;\n}\n\n.footer-section ul li {\n margin-bottom: 0.5rem;\n}\n\n.footer-section a {\n color: #f3f4f6;\n text-decoration: none;\n transition: color 0.3s ease;\n}\n\n.footer-section a:hover {\n color: #fff;\n text-decoration: underline;\n}\n\n.footer-bottom {\n border-top: 1px solid #374151;\n padding-top: 2rem;\n text-align: center;\n font-size: 0.9rem;\n}\n\n.footer-bottom a {\n color: aquamarine;\n}\n\n@media (max-width: 768px) {\n .footer-content {\n grid-template-columns: 1fr;\n text-align: center;\n }\n}\n\n@media (max-width: 450px) {\n .nav-links {\n display: none;\n }\n}","#pageBody > .card:first-of-type {\n width: min(80vw, 500px);\n}\n\n.container.row {\n width: auto;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"css/core_admin_home.bundle.css","mappings":";AACA;CACC;AACD;IACI,iBAAiB;IACjB,qCAAqC;IACrC;aACS;IACT,WAAW;IACX,aAAa;AACjB;;AAEA;IACI,aAAa;IACb,8BAA8B;IAC9B,mBAAmB;IACnB,eAAe;AACnB;;AAEA;IACI,iBAAiB;IACjB,iBAAiB;IACjB,qBAAqB;AACzB;;AAEA;IACI,aAAa;IACb,SAAS;IACT,aAAa;IACb,eAAe;IACf,eAAe;AACnB;;AAEA;IACI,qBAAqB;IACrB,kBAAkB;IAClB,gBAAgB;IAChB,qBAAqB;IACrB,eAAe;AACnB;AACA;IACI,YAAY;IACZ,cAAc;AAClB;;AAEA;IACI,4BAA4B;IAC5B,cAAc;IACd,cAAc;AAClB;;AAEA,WAAW;AACX;IACI,iBAAiB;IACjB,qCAAqC;IACrC;aACS;IACT,WAAW;IACX,aAAa;AACjB;;AAEA;IACI,aAAa;IACb,8BAA8B;IAC9B,mBAAmB;IACnB,eAAe;AACnB;;AAEA;IACI,eAAe;IACf,iBAAiB;IACjB,8BAA8B;AAClC;;AAEA;IACI,aAAa;IACb,SAAS;AACb;;AAEA;IACI,qBAAqB;IACrB,kBAAkB;IAClB,gBAAgB;IAChB,qBAAqB;AACzB;AACA;IACI,YAAY;AAChB;;AAEA,WAAW;AACX;IACI,mBAAmB;IACnB,cAAc;IACd,oBAAoB;AACxB;;AAEA;IACI,aAAa;IACb,2DAA2D;IAC3D,SAAS;IACT,mBAAmB;AACvB;;AAEA;IACI,WAAW;IACX,mBAAmB;IACnB,iBAAiB;IACjB,kBAAkB;AACtB;;AAEA;IACI,gBAAgB;IAChB,UAAU;AACd;;AAEA;IACI,qBAAqB;AACzB;;AAEA;IACI,cAAc;IACd,qBAAqB;IACrB,2BAA2B;AAC/B;;AAEA;IACI,WAAW;IACX,0BAA0B;AAC9B;;AAEA;IACI,6BAA6B;IAC7B,iBAAiB;IACjB,kBAAkB;IAClB,iBAAiB;AACrB;;AAEA;IACI,iBAAiB;AACrB;;AAEA;IACI,WAAW;AACf;AACA;IACI,UAAU;AACd;AACA;IACI,gBAAgB;AACpB;;AAEA;IACI;QACI,0BAA0B;QAC1B,kBAAkB;IACtB;AACJ;;AAEA;IACI;QACI,aAAa;IACjB;AACJ,C;AClKA;IACI,uBAAuB;AAC3B;;AAEA;IACI,WAAW;AACf,C","sources":["webpack://app/./static/css/sections/core.css","webpack://app/./static/css/pages/core/admin_home.css"],"sourcesContent":["\n/* Home page\n*/\nheader {\n background: white;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n /* position: fixed;\n top: 0; */\n width: 100%;\n z-index: 1000;\n}\n\n.navbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem 0;\n}\n\n.logo {\n font-size: 1.5rem;\n font-weight: bold;\n color: var(--primary);\n}\n\n.nav-links {\n display: flex;\n gap: 2rem;\n display: flex;\n flex-wrap: wrap;\n max-width: 58vw;\n}\n\n.nav-links a {\n text-decoration: none;\n color: var(--text);\n font-weight: 500;\n align-content: center;\n font-size: 1rem;\n}\n.nav-links a.button {\n color: white;\n margin: 0 auto;\n}\n\n.container {\n max-width: min(2000px, 90vw);\n margin: 0 auto;\n padding: 0 5vw;\n}\n\n/* Header */\nheader {\n background: white;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n /* position: fixed;\n top: 0; */\n width: 100%;\n z-index: 1000;\n}\n\n.navbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem 0;\n}\n\n.logo {\n font-size: 2rem;\n font-weight: bold;\n color: var(--colour-secondary);\n}\n\n.nav-links {\n display: flex;\n gap: 2rem;\n}\n\n.nav-links a {\n text-decoration: none;\n color: var(--text);\n font-weight: 500;\n align-content: center;\n}\n.nav-links a.button {\n color: white;\n}\n\n/* Footer */\n.footer {\n background: #1f2937;\n color: #f3f4f6;\n padding: 4rem 0 2rem;\n}\n\n.footer-content {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 2rem;\n margin-bottom: 2rem;\n}\n\n.footer-section h3 {\n color: #fff;\n margin-bottom: 1rem;\n font-size: 1.2rem;\n text-align: center;\n}\n\n.footer-section ul {\n list-style: none;\n padding: 0;\n}\n\n.footer-section ul li {\n margin-bottom: 0.5rem;\n}\n\n.footer-section a {\n color: #f3f4f6;\n text-decoration: none;\n transition: color 0.3s ease;\n}\n\n.footer-section a:hover {\n color: #fff;\n text-decoration: underline;\n}\n\n.footer-bottom {\n border-top: 1px solid #374151;\n padding-top: 2rem;\n text-align: center;\n font-size: 0.9rem;\n}\n\n.footer-bottom a {\n color: aquamarine;\n}\n\n.footer-section.contact {\n width: 100%;\n}\n.footer-section .container {\n padding: 0;\n}\n.footer-section .container.row .container.column {\n padding: 1vh 2vw;\n}\n\n@media (max-width: 768px) {\n .footer-content {\n grid-template-columns: 1fr;\n text-align: center;\n }\n}\n\n@media (max-width: 450px) {\n .nav-links {\n display: none;\n }\n}","#pageBody > .card:first-of-type {\n width: min(80vw, 500px);\n}\n\n.container.row {\n width: auto;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/static/dist/css/core_contact.bundle.css b/static/dist/css/core_contact.bundle.css index d53a7c7..efa0e4c 100644 --- a/static/dist/css/core_contact.bundle.css +++ b/static/dist/css/core_contact.bundle.css @@ -28,7 +28,7 @@ header { gap: 2rem; display: flex; flex-wrap: wrap; - max-width: 70vw; + max-width: 58vw; } .nav-links a { @@ -44,9 +44,9 @@ header { } .container { - max-width: 1200px; + max-width: min(2000px, 90vw); margin: 0 auto; - padding: 0 1.5rem; + padding: 0 5vw; } /* Header */ @@ -67,9 +67,9 @@ header { } .logo { - font-size: 1.5rem; + font-size: 2rem; font-weight: bold; - color: var(--primary); + color: var(--colour-secondary); } .nav-links { @@ -105,6 +105,7 @@ header { color: #fff; margin-bottom: 1rem; font-size: 1.2rem; + text-align: center; } .footer-section ul { @@ -138,6 +139,16 @@ header { color: aquamarine; } +.footer-section.contact { + width: 100%; +} +.footer-section .container { + padding: 0; +} +.footer-section .container.row .container.column { + padding: 1vh 2vw; +} + @media (max-width: 768px) { .footer-content { grid-template-columns: 1fr; diff --git a/static/dist/css/core_contact.bundle.css.map b/static/dist/css/core_contact.bundle.css.map index 380e074..cdbe338 100644 --- a/static/dist/css/core_contact.bundle.css.map +++ b/static/dist/css/core_contact.bundle.css.map @@ -1 +1 @@ -{"version":3,"file":"css/core_contact.bundle.css","mappings":"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","sources":["webpack://app/./static/css/sections/core.css","webpack://app/./static/css/pages/core/contact.css"],"sourcesContent":["\n/* Home page\n*/\nheader {\n background: white;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n /* position: fixed;\n top: 0; */\n width: 100%;\n z-index: 1000;\n}\n\n.navbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem 0;\n}\n\n.logo {\n font-size: 1.5rem;\n font-weight: bold;\n color: var(--primary);\n}\n\n.nav-links {\n display: flex;\n gap: 2rem;\n display: flex;\n flex-wrap: wrap;\n max-width: 70vw;\n}\n\n.nav-links a {\n text-decoration: none;\n color: var(--text);\n font-weight: 500;\n align-content: center;\n font-size: 1rem;\n}\n.nav-links a.button {\n color: white;\n margin: 0 auto;\n}\n\n.container {\n max-width: 1200px;\n margin: 0 auto;\n padding: 0 1.5rem;\n}\n\n/* Header */\nheader {\n background: white;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n /* position: fixed;\n top: 0; */\n width: 100%;\n z-index: 1000;\n}\n\n.navbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem 0;\n}\n\n.logo {\n font-size: 1.5rem;\n font-weight: bold;\n color: var(--primary);\n}\n\n.nav-links {\n display: flex;\n gap: 2rem;\n}\n\n.nav-links a {\n text-decoration: none;\n color: var(--text);\n font-weight: 500;\n align-content: center;\n}\n.nav-links a.button {\n color: white;\n}\n\n/* Footer */\n.footer {\n background: #1f2937;\n color: #f3f4f6;\n padding: 4rem 0 2rem;\n}\n\n.footer-content {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 2rem;\n margin-bottom: 2rem;\n}\n\n.footer-section h3 {\n color: #fff;\n margin-bottom: 1rem;\n font-size: 1.2rem;\n}\n\n.footer-section ul {\n list-style: none;\n padding: 0;\n}\n\n.footer-section ul li {\n margin-bottom: 0.5rem;\n}\n\n.footer-section a {\n color: #f3f4f6;\n text-decoration: none;\n transition: color 0.3s ease;\n}\n\n.footer-section a:hover {\n color: #fff;\n text-decoration: underline;\n}\n\n.footer-bottom {\n border-top: 1px solid #374151;\n padding-top: 2rem;\n text-align: center;\n font-size: 0.9rem;\n}\n\n.footer-bottom a {\n color: aquamarine;\n}\n\n@media (max-width: 768px) {\n .footer-content {\n grid-template-columns: 1fr;\n text-align: center;\n }\n}\n\n@media (max-width: 450px) {\n .nav-links {\n display: none;\n }\n}","\n.contact-section {\n padding: 2rem 2rem 4rem;\n}\n.contact-section h1 {\n margin: 1rem auto;\n}\n.contact-section p {\n margin: 0.5rem auto;\n}\n\n.contact-form {\n max-width: 60vw;\n width: fit-content;\n margin: 0 auto;\n background: #fff;\n padding: 2rem;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n.contact-form textarea {\n max-width: 40vw;\n}\n\n.form-grid {\n display: grid;\n grid-template-columns: 200px 1fr;\n gap: 1.5rem;\n margin-bottom: 1rem;\n}\n.form-label {\n padding-top: 0.5rem;\n font-weight: 500;\n}\n.form-input {\n width: 100%;\n padding: 0.5rem;\n border: 1px solid #d1d5db;\n border-radius: 4px;\n font-size: 1rem;\n}\ntextarea.form-input {\n min-height: 120px;\n}\n\n.marketing-consent input {\n display: inline-block;\n margin-left: 20%;\n margin-bottom: 1.25rem;\n}\n\n.container.captcha > div:first-child > label:first-child {\n display: flex;\n justify-content: center;\n width: fit-content;\n text-align: center;\n margin: 0 auto;\n}\n.container.captcha > p:last-child{\n font-size: 0.9rem;\n margin: 1vh 0;\n}\n.container.captcha .altcha-main {\n padding-left: 1rem;\n padding-top: 0.75rem;\n padding-bottom: 0;\n}\n.container.captcha .altcha-main > :last-child {\n display: none;\n}\n.container.captcha .altcha,\naltcha-widget > div:first-child,\n.container.captcha > div > .altcha-widget > div {\n width: fit-content;\n display: flex;\n margin-left: auto;\n margin-right: auto;\n}\n\ninput[type=\"submit\"] {\n margin-left: 40%;\n padding: 0.75rem 1.5rem;\n background: #2563eb;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 1rem;\n}\n\ninput[type=\"submit\"]:hover {\n background: #1d4ed8;\n}\n\n.data-notice {\n margin-top: 3rem;\n padding: 1.5rem;\n background: #f3f4f6;\n border-radius: 4px;\n font-size: 0.95rem;\n}\n\n.data-notice h3 {\n margin-bottom: 1rem;\n font-size: 1.1rem;\n}\n\n.data-notice ul li {\n list-style-position: inside;\n}\n\n@media (max-width: 768px) {\n .contact-form {\n max-width: 80vw;\n }\n .contact-form textarea {\n max-width: 60vw;\n }\n .form-grid {\n grid-template-columns: 1fr;\n gap: 0.5rem;\n }\n\n .form-label {\n padding-top: 0;\n }\n\n .submit-button {\n margin-left: 0;\n width: 100%;\n }\n}\n\n@media (max-width: 400px) {\n}"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"css/core_contact.bundle.css","mappings":"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","sources":["webpack://app/./static/css/sections/core.css","webpack://app/./static/css/pages/core/contact.css"],"sourcesContent":["\n/* Home page\n*/\nheader {\n background: white;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n /* position: fixed;\n top: 0; */\n width: 100%;\n z-index: 1000;\n}\n\n.navbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem 0;\n}\n\n.logo {\n font-size: 1.5rem;\n font-weight: bold;\n color: var(--primary);\n}\n\n.nav-links {\n display: flex;\n gap: 2rem;\n display: flex;\n flex-wrap: wrap;\n max-width: 58vw;\n}\n\n.nav-links a {\n text-decoration: none;\n color: var(--text);\n font-weight: 500;\n align-content: center;\n font-size: 1rem;\n}\n.nav-links a.button {\n color: white;\n margin: 0 auto;\n}\n\n.container {\n max-width: min(2000px, 90vw);\n margin: 0 auto;\n padding: 0 5vw;\n}\n\n/* Header */\nheader {\n background: white;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n /* position: fixed;\n top: 0; */\n width: 100%;\n z-index: 1000;\n}\n\n.navbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem 0;\n}\n\n.logo {\n font-size: 2rem;\n font-weight: bold;\n color: var(--colour-secondary);\n}\n\n.nav-links {\n display: flex;\n gap: 2rem;\n}\n\n.nav-links a {\n text-decoration: none;\n color: var(--text);\n font-weight: 500;\n align-content: center;\n}\n.nav-links a.button {\n color: white;\n}\n\n/* Footer */\n.footer {\n background: #1f2937;\n color: #f3f4f6;\n padding: 4rem 0 2rem;\n}\n\n.footer-content {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 2rem;\n margin-bottom: 2rem;\n}\n\n.footer-section h3 {\n color: #fff;\n margin-bottom: 1rem;\n font-size: 1.2rem;\n text-align: center;\n}\n\n.footer-section ul {\n list-style: none;\n padding: 0;\n}\n\n.footer-section ul li {\n margin-bottom: 0.5rem;\n}\n\n.footer-section a {\n color: #f3f4f6;\n text-decoration: none;\n transition: color 0.3s ease;\n}\n\n.footer-section a:hover {\n color: #fff;\n text-decoration: underline;\n}\n\n.footer-bottom {\n border-top: 1px solid #374151;\n padding-top: 2rem;\n text-align: center;\n font-size: 0.9rem;\n}\n\n.footer-bottom a {\n color: aquamarine;\n}\n\n.footer-section.contact {\n width: 100%;\n}\n.footer-section .container {\n padding: 0;\n}\n.footer-section .container.row .container.column {\n padding: 1vh 2vw;\n}\n\n@media (max-width: 768px) {\n .footer-content {\n grid-template-columns: 1fr;\n text-align: center;\n }\n}\n\n@media (max-width: 450px) {\n .nav-links {\n display: none;\n }\n}","\n.contact-section {\n padding: 2rem 2rem 4rem;\n}\n.contact-section h1 {\n margin: 1rem auto;\n}\n.contact-section p {\n margin: 0.5rem auto;\n}\n\n.contact-form {\n max-width: 60vw;\n width: fit-content;\n margin: 0 auto;\n background: #fff;\n padding: 2rem;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n.contact-form textarea {\n max-width: 40vw;\n}\n\n.form-grid {\n display: grid;\n grid-template-columns: 200px 1fr;\n gap: 1.5rem;\n margin-bottom: 1rem;\n}\n.form-label {\n padding-top: 0.5rem;\n font-weight: 500;\n}\n.form-input {\n width: 100%;\n padding: 0.5rem;\n border: 1px solid #d1d5db;\n border-radius: 4px;\n font-size: 1rem;\n}\ntextarea.form-input {\n min-height: 120px;\n}\n\n.marketing-consent input {\n display: inline-block;\n margin-left: 20%;\n margin-bottom: 1.25rem;\n}\n\n.container.captcha > div:first-child > label:first-child {\n display: flex;\n justify-content: center;\n width: fit-content;\n text-align: center;\n margin: 0 auto;\n}\n.container.captcha > p:last-child{\n font-size: 0.9rem;\n margin: 1vh 0;\n}\n.container.captcha .altcha-main {\n padding-left: 1rem;\n padding-top: 0.75rem;\n padding-bottom: 0;\n}\n.container.captcha .altcha-main > :last-child {\n display: none;\n}\n.container.captcha .altcha,\naltcha-widget > div:first-child,\n.container.captcha > div > .altcha-widget > div {\n width: fit-content;\n display: flex;\n margin-left: auto;\n margin-right: auto;\n}\n\ninput[type=\"submit\"] {\n margin-left: 40%;\n padding: 0.75rem 1.5rem;\n background: #2563eb;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 1rem;\n}\n\ninput[type=\"submit\"]:hover {\n background: #1d4ed8;\n}\n\n.data-notice {\n margin-top: 3rem;\n padding: 1.5rem;\n background: #f3f4f6;\n border-radius: 4px;\n font-size: 0.95rem;\n}\n\n.data-notice h3 {\n margin-bottom: 1rem;\n font-size: 1.1rem;\n}\n\n.data-notice ul li {\n list-style-position: inside;\n}\n\n@media (max-width: 768px) {\n .contact-form {\n max-width: 80vw;\n }\n .contact-form textarea {\n max-width: 60vw;\n }\n .form-grid {\n grid-template-columns: 1fr;\n gap: 0.5rem;\n }\n\n .form-label {\n padding-top: 0;\n }\n\n .submit-button {\n margin-left: 0;\n width: 100%;\n }\n}\n\n@media (max-width: 400px) {\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/static/dist/css/core_home.bundle.css b/static/dist/css/core_home.bundle.css index 6462bca..be77f36 100644 --- a/static/dist/css/core_home.bundle.css +++ b/static/dist/css/core_home.bundle.css @@ -28,7 +28,7 @@ header { gap: 2rem; display: flex; flex-wrap: wrap; - max-width: 70vw; + max-width: 58vw; } .nav-links a { @@ -44,9 +44,9 @@ header { } .container { - max-width: 1200px; + max-width: min(2000px, 90vw); margin: 0 auto; - padding: 0 1.5rem; + padding: 0 5vw; } /* Header */ @@ -67,9 +67,9 @@ header { } .logo { - font-size: 1.5rem; + font-size: 2rem; font-weight: bold; - color: var(--primary); + color: var(--colour-secondary); } .nav-links { @@ -105,6 +105,7 @@ header { color: #fff; margin-bottom: 1rem; font-size: 1.2rem; + text-align: center; } .footer-section ul { @@ -138,6 +139,16 @@ header { color: aquamarine; } +.footer-section.contact { + width: 100%; +} +.footer-section .container { + padding: 0; +} +.footer-section .container.row .container.column { + padding: 1vh 2vw; +} + @media (max-width: 768px) { .footer-content { grid-template-columns: 1fr; @@ -166,17 +177,13 @@ ul li { font-size: 16px; } -section.problem, section.benefits, -section.features, -section.faq { - padding: 6rem 0; +section.solution { + padding: 4rem 0; background: var(--colour-text-background); } -section.problem .card.problem, section.benefits .card.benefits, -section.features .card.features, -section.faq .card.faq { +section.solution .card.solution { padding: 2rem; background: var(--colour-page-background); border-radius: 8px; @@ -184,13 +191,13 @@ section.faq .card.faq { display: block; } -section.solution, -section.social-proof { - padding: 6rem 0; +section.problem, +section.early-access { + padding: 4rem 0; background: var(--colour-page-background-1); } -section.solution .card.solution, -section.social-proof .card.social-proof { +section.problem .card.problem, +section.early-access .card.early-access { background: var(--colour-text-background); padding: 2rem; border-radius: 8px; @@ -199,6 +206,13 @@ section.social-proof .card.social-proof { box-shadow: 0 4px 6px rgba(0,0,0,0.1); } + +section.benefits ul li, +section.solution ul li, +section.early-access ul li { + list-style: none; +} + /* Hero Section */ .hero { padding: 8rem 0 4rem; @@ -232,14 +246,19 @@ section.problem .problem.card:hover { transform: translateY(-5px); } */ +section.problem .section-subtitle { + /* font-size: 18px; */ + font-weight: bold; +} /* Solution Section */ -/* Benefits Section */ +/* Benefits Section * / section.benefits .section-subtitle { font-size: 18px; font-weight: bold; } +*/ /* Social Proof Section * / section.social-proof { diff --git a/static/dist/css/core_home.bundle.css.map b/static/dist/css/core_home.bundle.css.map index d79aa12..3151f76 100644 --- a/static/dist/css/core_home.bundle.css.map +++ b/static/dist/css/core_home.bundle.css.map @@ -1 +1 @@ -{"version":3,"file":"css/core_home.bundle.css","mappings":"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","sources":["webpack://app/./static/css/sections/core.css","webpack://app/./static/css/pages/core/home.css"],"sourcesContent":["\n/* Home page\n*/\nheader {\n background: white;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n /* position: fixed;\n top: 0; */\n width: 100%;\n z-index: 1000;\n}\n\n.navbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem 0;\n}\n\n.logo {\n font-size: 1.5rem;\n font-weight: bold;\n color: var(--primary);\n}\n\n.nav-links {\n display: flex;\n gap: 2rem;\n display: flex;\n flex-wrap: wrap;\n max-width: 70vw;\n}\n\n.nav-links a {\n text-decoration: none;\n color: var(--text);\n font-weight: 500;\n align-content: center;\n font-size: 1rem;\n}\n.nav-links a.button {\n color: white;\n margin: 0 auto;\n}\n\n.container {\n max-width: 1200px;\n margin: 0 auto;\n padding: 0 1.5rem;\n}\n\n/* Header */\nheader {\n background: white;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n /* position: fixed;\n top: 0; */\n width: 100%;\n z-index: 1000;\n}\n\n.navbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem 0;\n}\n\n.logo {\n font-size: 1.5rem;\n font-weight: bold;\n color: var(--primary);\n}\n\n.nav-links {\n display: flex;\n gap: 2rem;\n}\n\n.nav-links a {\n text-decoration: none;\n color: var(--text);\n font-weight: 500;\n align-content: center;\n}\n.nav-links a.button {\n color: white;\n}\n\n/* Footer */\n.footer {\n background: #1f2937;\n color: #f3f4f6;\n padding: 4rem 0 2rem;\n}\n\n.footer-content {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 2rem;\n margin-bottom: 2rem;\n}\n\n.footer-section h3 {\n color: #fff;\n margin-bottom: 1rem;\n font-size: 1.2rem;\n}\n\n.footer-section ul {\n list-style: none;\n padding: 0;\n}\n\n.footer-section ul li {\n margin-bottom: 0.5rem;\n}\n\n.footer-section a {\n color: #f3f4f6;\n text-decoration: none;\n transition: color 0.3s ease;\n}\n\n.footer-section a:hover {\n color: #fff;\n text-decoration: underline;\n}\n\n.footer-bottom {\n border-top: 1px solid #374151;\n padding-top: 2rem;\n text-align: center;\n font-size: 0.9rem;\n}\n\n.footer-bottom a {\n color: aquamarine;\n}\n\n@media (max-width: 768px) {\n .footer-content {\n grid-template-columns: 1fr;\n text-align: center;\n }\n}\n\n@media (max-width: 450px) {\n .nav-links {\n display: none;\n }\n}","/* Common */\np {\n width: 100%;\n font-size: 16px;\n}\np.section-title,\np.section-subtitle {\n margin: 0 auto;\n}\n.section-subtitle {\n font-size: 18px;\n}\nul li {\n font-size: 16px;\n}\n\nsection.problem,\nsection.benefits,\nsection.features,\nsection.faq {\n padding: 6rem 0;\n background: var(--colour-text-background);\n}\nsection.problem .card.problem,\nsection.benefits .card.benefits,\nsection.features .card.features,\nsection.faq .card.faq {\n padding: 2rem;\n background: var(--colour-page-background);\n border-radius: 8px;\n transition: transform 0.3s ease;\n display: block;\n}\n\nsection.solution,\nsection.social-proof {\n padding: 6rem 0;\n background: var(--colour-page-background-1);\n}\nsection.solution .card.solution,\nsection.social-proof .card.social-proof {\n background: var(--colour-text-background);\n padding: 2rem;\n border-radius: 8px;\n max-width: 800px;\n margin: 3rem auto 0;\n box-shadow: 0 4px 6px rgba(0,0,0,0.1);\n}\n\n/* Hero Section */\n.hero {\n padding: 8rem 0 4rem;\n background: linear-gradient(45deg, var(--colour-page-background-1), var(--colour-page-background-2)); /* linear-gradient(45deg, #f8fafc, #eff6ff); */\n}\n\n.hero-content {\n max-width: 600px;\n}\n\n.hero h1 {\n font-size: 3rem;\n line-height: 1.2;\n margin-bottom: 1.5rem;\n color: var(--colour-text);\n}\n\n.hero p {\n font-size: 1.25rem;\n margin-bottom: 2rem;\n color: var(--colour-secondary);\n}\n\n\n\n/* Problem Section */\n\n\n/*\nsection.problem .problem.card:hover {\n transform: translateY(-5px);\n}\n*/\n\n/* Solution Section */\n\n/* Benefits Section */\nsection.benefits .section-subtitle {\n font-size: 18px;\n font-weight: bold;\n}\n\n/* Social Proof Section * /\nsection.social-proof {\n padding: 6rem 0;\n background: white;\n}\n\nsection.social-proof .card.social-proof {\n background: var(--colour-page-background);\n padding: 2rem;\n border-radius: 8px;\n text-align: center;\n max-width: 400px;\n margin: 3rem auto 0;\n}\n\nsection.social-proof ul {\n list-style: none;\n margin: 0;\n}\n* /\n\nsection.social-proof .section-subtitle {\n font-size: 16px;\n}\n*/\nsection.social-proof ul li {\n font-size: 14px;\n}\n\n/* Early Access Section * /\nsection.early-access {\n padding: 6rem 0;\n background: white;\n}\n\nsection.early-access .card.early-access {\n background: var(--colour-page-background);\n padding: 2rem;\n border-radius: 8px;\n text-align: center;\n max-width: 400px;\n margin: 3rem auto 0;\n}\n\nsection.early-access ul {\n list-style: none;\n margin: 0;\n}\nsection.early-access a.button {\n margin: 0.25rem;\n}\n*/\n\n/* Features section */\nsection.features .button {\n margin-top: 0;\n}\n\n/* CTA Section */\n.cta-1,\n.cta-2 {\n padding: 6rem 0;\n background: var(--colour-primary);\n color: white;\n text-align: center;\n}\n\n/* FAQs * /\nsection.faq .button {\n margin-bottom: 0.25rem;\n}\n*/\n\n/* Animations */\n/* Fallback styles to ensure content is visible without JS */\n.reveal {\n opacity: 1; /* Default visible state */\n}\n\n/* Only hide elements if browser supports Intersection Observer */\n@supports (animation-name: fade) {\n .reveal {\n opacity: 0;\n }\n\n .reveal.active {\n animation: fade-up 0.8s ease-out forwards;\n }\n}\n\n@keyframes fade-up {\n 0% {\n opacity: 0;\n transform: translateY(30px);\n }\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.delay-1 { animation-delay: 0.1s; }\n.delay-2 { animation-delay: 0.2s; }\n.delay-3 { animation-delay: 0.3s; }\n.delay-4 { animation-delay: 0.4s; }\n\n/* Buttons */\n.button {\n display: inline-block;\n padding: 0.75rem 1.5rem;\n border-radius: 6px;\n text-decoration: none;\n font-weight: 500;\n transition: all 0.3s ease;\n width: fit-content;\n margin: 0.75rem;\n font-size: 18px;\n}\n\n.button-primary {\n background: var(--colour-primary);\n color: white;\n}\n\n.button-primary:hover {\n background: var(--colour-secondary);\n}\n\n.button-light {\n background: white;\n color: var(--colour-primary);\n}\n\n.button-light:hover {\n background: var(--colour-page-background);\n}\n\n.logo:hover{\n cursor: pointer;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"css/core_home.bundle.css","mappings":"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","sources":["webpack://app/./static/css/sections/core.css","webpack://app/./static/css/pages/core/home.css"],"sourcesContent":["\n/* Home page\n*/\nheader {\n background: white;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n /* position: fixed;\n top: 0; */\n width: 100%;\n z-index: 1000;\n}\n\n.navbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem 0;\n}\n\n.logo {\n font-size: 1.5rem;\n font-weight: bold;\n color: var(--primary);\n}\n\n.nav-links {\n display: flex;\n gap: 2rem;\n display: flex;\n flex-wrap: wrap;\n max-width: 58vw;\n}\n\n.nav-links a {\n text-decoration: none;\n color: var(--text);\n font-weight: 500;\n align-content: center;\n font-size: 1rem;\n}\n.nav-links a.button {\n color: white;\n margin: 0 auto;\n}\n\n.container {\n max-width: min(2000px, 90vw);\n margin: 0 auto;\n padding: 0 5vw;\n}\n\n/* Header */\nheader {\n background: white;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n /* position: fixed;\n top: 0; */\n width: 100%;\n z-index: 1000;\n}\n\n.navbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem 0;\n}\n\n.logo {\n font-size: 2rem;\n font-weight: bold;\n color: var(--colour-secondary);\n}\n\n.nav-links {\n display: flex;\n gap: 2rem;\n}\n\n.nav-links a {\n text-decoration: none;\n color: var(--text);\n font-weight: 500;\n align-content: center;\n}\n.nav-links a.button {\n color: white;\n}\n\n/* Footer */\n.footer {\n background: #1f2937;\n color: #f3f4f6;\n padding: 4rem 0 2rem;\n}\n\n.footer-content {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 2rem;\n margin-bottom: 2rem;\n}\n\n.footer-section h3 {\n color: #fff;\n margin-bottom: 1rem;\n font-size: 1.2rem;\n text-align: center;\n}\n\n.footer-section ul {\n list-style: none;\n padding: 0;\n}\n\n.footer-section ul li {\n margin-bottom: 0.5rem;\n}\n\n.footer-section a {\n color: #f3f4f6;\n text-decoration: none;\n transition: color 0.3s ease;\n}\n\n.footer-section a:hover {\n color: #fff;\n text-decoration: underline;\n}\n\n.footer-bottom {\n border-top: 1px solid #374151;\n padding-top: 2rem;\n text-align: center;\n font-size: 0.9rem;\n}\n\n.footer-bottom a {\n color: aquamarine;\n}\n\n.footer-section.contact {\n width: 100%;\n}\n.footer-section .container {\n padding: 0;\n}\n.footer-section .container.row .container.column {\n padding: 1vh 2vw;\n}\n\n@media (max-width: 768px) {\n .footer-content {\n grid-template-columns: 1fr;\n text-align: center;\n }\n}\n\n@media (max-width: 450px) {\n .nav-links {\n display: none;\n }\n}","/* Common */\np {\n width: 100%;\n font-size: 16px;\n}\np.section-title,\np.section-subtitle {\n margin: 0 auto;\n}\n.section-subtitle {\n font-size: 18px;\n}\nul li {\n font-size: 16px;\n}\n\nsection.benefits,\nsection.solution {\n padding: 4rem 0;\n background: var(--colour-text-background);\n}\nsection.benefits .card.benefits,\nsection.solution .card.solution {\n padding: 2rem;\n background: var(--colour-page-background);\n border-radius: 8px;\n transition: transform 0.3s ease;\n display: block;\n}\n\nsection.problem,\nsection.early-access {\n padding: 4rem 0;\n background: var(--colour-page-background-1);\n}\nsection.problem .card.problem,\nsection.early-access .card.early-access {\n background: var(--colour-text-background);\n padding: 2rem;\n border-radius: 8px;\n max-width: 800px;\n margin: 3rem auto 0;\n box-shadow: 0 4px 6px rgba(0,0,0,0.1);\n}\n\n\nsection.benefits ul li,\nsection.solution ul li,\nsection.early-access ul li {\n list-style: none;\n}\n\n/* Hero Section */\n.hero {\n padding: 8rem 0 4rem;\n background: linear-gradient(45deg, var(--colour-page-background-1), var(--colour-page-background-2)); /* linear-gradient(45deg, #f8fafc, #eff6ff); */\n}\n\n.hero-content {\n max-width: 600px;\n}\n\n.hero h1 {\n font-size: 3rem;\n line-height: 1.2;\n margin-bottom: 1.5rem;\n color: var(--colour-text);\n}\n\n.hero p {\n font-size: 1.25rem;\n margin-bottom: 2rem;\n color: var(--colour-secondary);\n}\n\n\n\n/* Problem Section */\n\n\n/*\nsection.problem .problem.card:hover {\n transform: translateY(-5px);\n}\n*/\nsection.problem .section-subtitle {\n /* font-size: 18px; */\n font-weight: bold;\n}\n\n/* Solution Section */\n\n/* Benefits Section * /\nsection.benefits .section-subtitle {\n font-size: 18px;\n font-weight: bold;\n}\n*/\n\n/* Social Proof Section * /\nsection.social-proof {\n padding: 6rem 0;\n background: white;\n}\n\nsection.social-proof .card.social-proof {\n background: var(--colour-page-background);\n padding: 2rem;\n border-radius: 8px;\n text-align: center;\n max-width: 400px;\n margin: 3rem auto 0;\n}\n\nsection.social-proof ul {\n list-style: none;\n margin: 0;\n}\n* /\n\nsection.social-proof .section-subtitle {\n font-size: 16px;\n}\n*/\nsection.social-proof ul li {\n font-size: 14px;\n}\n\n/* Early Access Section * /\nsection.early-access {\n padding: 6rem 0;\n background: white;\n}\n\nsection.early-access .card.early-access {\n background: var(--colour-page-background);\n padding: 2rem;\n border-radius: 8px;\n text-align: center;\n max-width: 400px;\n margin: 3rem auto 0;\n}\n\nsection.early-access ul {\n list-style: none;\n margin: 0;\n}\nsection.early-access a.button {\n margin: 0.25rem;\n}\n*/\n\n/* Features section */\nsection.features .button {\n margin-top: 0;\n}\n\n/* CTA Section */\n.cta-1,\n.cta-2 {\n padding: 6rem 0;\n background: var(--colour-primary);\n color: white;\n text-align: center;\n}\n\n/* FAQs * /\nsection.faq .button {\n margin-bottom: 0.25rem;\n}\n*/\n\n/* Animations */\n/* Fallback styles to ensure content is visible without JS */\n.reveal {\n opacity: 1; /* Default visible state */\n}\n\n/* Only hide elements if browser supports Intersection Observer */\n@supports (animation-name: fade) {\n .reveal {\n opacity: 0;\n }\n\n .reveal.active {\n animation: fade-up 0.8s ease-out forwards;\n }\n}\n\n@keyframes fade-up {\n 0% {\n opacity: 0;\n transform: translateY(30px);\n }\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.delay-1 { animation-delay: 0.1s; }\n.delay-2 { animation-delay: 0.2s; }\n.delay-3 { animation-delay: 0.3s; }\n.delay-4 { animation-delay: 0.4s; }\n\n/* Buttons */\n.button {\n display: inline-block;\n padding: 0.75rem 1.5rem;\n border-radius: 6px;\n text-decoration: none;\n font-weight: 500;\n transition: all 0.3s ease;\n width: fit-content;\n margin: 0.75rem;\n font-size: 18px;\n}\n\n.button-primary {\n background: var(--colour-primary);\n color: white;\n}\n\n.button-primary:hover {\n background: var(--colour-secondary);\n}\n\n.button-light {\n background: white;\n color: var(--colour-primary);\n}\n\n.button-light:hover {\n background: var(--colour-page-background);\n}\n\n.logo:hover{\n cursor: pointer;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/templates/layouts/layout.html b/templates/layouts/layout.html index 2e1ce91..c948b92 100644 --- a/templates/layouts/layout.html +++ b/templates/layouts/layout.html @@ -426,34 +426,50 @@
The UK's first professional dog training management platform that transforms how you document, measure, and showcase training success!
- Get Early Access +The first UK-built platform designed specifically for professional dog trainers. Track progress, measure success, and keep clients engaged like never before.
+ + Join the WaitlistRunning a successful dog training business shouldn't mean drowning in paperwork or losing track of client progress. Fetch Metrics brings clarity to every session, ensuring both you and your clients stay perfectly synchronized.
-Key features:
-Key benefits:
+You're not alone. Most UK dog trainers spend hours each week juggling multiple systems, trying to remember which dog knows which commands, and struggling to show clients real progress.
-What if you could track every command, every session, and every breakthrough in one simple system?
+ +Fetch Metrics solves these challenges with purpose-built tools that streamline your workflow and enhance client results. Spend less time on paperwork and more time doing what you love.
Finally, a system built specifically for how dog trainers actually work. Document command mastery, track skill progression, and generate professional progress reports that wow your clients.
-We're putting the finishing touches on something special. Join our early access list to:
+30-day money-back guarantee • Cancel anytime • No setup fees
-Your expertise deserves professional tools. Join innovative UK trainers who are already transforming how they track, measure, and showcase training success.
- Join the Waitlist -Enter your email for updates and exclusive early access
+Fetch Metrics isn't another generic business tool trying to fit your needs. We're building this specifically for the unique requirements of professional dog training in the UK.
+ Questions?