Cohesive redesign: remove Company Gallery, add varied layouts/media/video, refresh palette, and update PROJECT.md
This commit is contained in:
parent
3914f0f446
commit
a6debb8ef4
11 changed files with 414 additions and 415 deletions
165
PROJECT.md
165
PROJECT.md
|
|
@ -1,126 +1,63 @@
|
|||
# PROJECT.md — autotq-modern-ejs
|
||||
|
||||
## 1) Site overview
|
||||
- Stack: Node/Express + EJS templates + single global CSS/JS.
|
||||
- Stack: Node/Express + EJS templates + global CSS/JS.
|
||||
- Brand/entity: **AutoTQ** / Golden Hour Medical, Inc.
|
||||
- Content model: all factual content (team, literature, testimonials, news, video links, image URLs) is sourced from `site.config.js` and rendered by views.
|
||||
- Goal of this refresh: unified premium feel, less visual noise, stronger but accessible red brand surfaces, consistent logo/header/hero treatment.
|
||||
- Content source remains `site.config.js` for factual data (team, literature, testimonials, news, contact).
|
||||
- This update focused on a stronger visual hierarchy, mixed section layouts, and reduced repetitive card patterns.
|
||||
|
||||
## 2) File structure (repo map + one-liners)
|
||||
## 2) Updated file structure notes (files changed)
|
||||
- `views/partials/header.ejs`
|
||||
- `views/partials/footer.ejs`
|
||||
- `views/index.ejs`
|
||||
- `views/company.ejs`
|
||||
- `views/research.ejs`
|
||||
- `views/literature.ejs`
|
||||
- `views/testimonials.ejs`
|
||||
- `views/news.ejs`
|
||||
- `views/contact.ejs`
|
||||
- `public/css/style.css`
|
||||
|
||||
### Root
|
||||
| File | Purpose |
|
||||
|---|---|
|
||||
| `README.md` | Short project description. |
|
||||
| `PROJECT.md` | This project/source-of-truth document. |
|
||||
| `site.config.js` | Central site data: brand, contact, assets, nav, team, literature, videos, testimonials/news. |
|
||||
## 3) Navigation/routes
|
||||
- Primary nav: `/`, `/about-autotq`, `/company`, `/research`, `/literature`, `/news`, `/testimonials`, `/contact`.
|
||||
- **Removed Company Gallery references** from page structure and nav rendering behavior.
|
||||
|
||||
### Public assets
|
||||
| File | Purpose |
|
||||
|---|---|
|
||||
| `public/css/style.css` | Global design system + all component/page styling. |
|
||||
| `public/js/main.js` | Mobile nav, sticky header state, reveal animations, contact form submit. |
|
||||
## 4) Design system (refresh)
|
||||
- Updated primary red toward requested tone: `--brand-red: #d12020`.
|
||||
- Complementary palette introduced with dark neutrals for contrast bands:
|
||||
- `--dark: #111315`
|
||||
- `--dark-soft: #1e2124`
|
||||
- white/light-gray surfaces for cleaner reading sections.
|
||||
- Larger red/dark surface usage in hero, strip bands, and CTA moments while keeping body sections clean.
|
||||
|
||||
### Views (pages)
|
||||
| File | Purpose |
|
||||
|---|---|
|
||||
| `views/layout.ejs` | Global HTML shell; injects header/footer and page body. |
|
||||
| `views/index.ejs` | Home page (hero, proof points, video, updates, testimonials, CTA). |
|
||||
| `views/about.ejs` | Redirect-style About page pointing to `/about-autotq`. |
|
||||
| `views/about-autotq.ejs` | Main product/about narrative with stats. |
|
||||
| `views/company.ejs` | Team grid and company gallery. |
|
||||
| `views/contact.ejs` | Contact details + inquiry form. |
|
||||
| `views/literature.ejs` | Download/open literature docs from config. |
|
||||
| `views/news.ejs` | News timeline from config links. |
|
||||
| `views/articles.ejs` | External source article links list. |
|
||||
| `views/research.ejs` | Research summary links (occlusion + first-time user). |
|
||||
| `views/firsttimeusers.ejs` | Source-linked summary page. |
|
||||
| `views/occlusion.ejs` | Source-linked summary page. |
|
||||
| `views/testimonials.ejs` | Testimonials grid from config data. |
|
||||
| `views/training.ejs` | Training summary/source link page. |
|
||||
| `views/shop.ejs` | External shop source link page. |
|
||||
| `views/hannah.ejs` | Team profile page. |
|
||||
| `views/laresa.ejs` | Team profile page. |
|
||||
| `views/jamie.ejs` | Team profile page. |
|
||||
| `views/gabriella.ejs` | Team profile page. |
|
||||
| `views/devin.ejs` | Team profile page. |
|
||||
| `views/nandini.ejs` | Team profile page. |
|
||||
| `views/max.ejs` | Team profile page. |
|
||||
| `views/nick.ejs` | Team profile page. |
|
||||
| `views/carisse.ejs` | Team profile page. |
|
||||
## 5) Component patterns now used
|
||||
- Alternating split sections (`.split`, `.split-reverse`) for left/right rhythm.
|
||||
- Media-first blocks (`.media-band`, `.media-stack`, `.video-grid`).
|
||||
- Quote strip and quote row formats (`.quote-strip`, `.quote-row`) replacing repetitive equal cards.
|
||||
- Context list and research/doc rows (`.context-list`, `.research-item`, `.doc-row`).
|
||||
- News rows with left accent instead of repeated large cards.
|
||||
|
||||
### Views partials
|
||||
| File | Purpose |
|
||||
|---|---|
|
||||
| `views/partials/header.ejs` | Unified top nav + brand/logo + contact CTA. |
|
||||
| `views/partials/footer.ejs` | Footer with logo, nav list, contact details. |
|
||||
## 6) Content/layout updates by page
|
||||
- **Home (`index.ejs`)**: rebuilt with hero split, mission strip, challenge/context sections, use-case list, media band with video embeds, evidence orientation block, and mixed news/testimonial layout.
|
||||
- **Company (`company.ejs`)**: removed Company Gallery block; replaced with mission/operations split + team presentation.
|
||||
- **Research (`research.ejs`)**: added media-first section with video embed and clearer evidence reference rows.
|
||||
- **News (`news.ejs`)**: added featured video band plus press row list.
|
||||
- **Literature (`literature.ejs`)**: converted to structured document rows with stronger hierarchy.
|
||||
- **Testimonials (`testimonials.ejs`)**: switched from uniform cards to quote rows.
|
||||
- **Contact (`contact.ejs`)**: added media-supported hero and refined readiness-oriented intro.
|
||||
|
||||
## 3) Navigation structure
|
||||
- **Primary header nav (refresh):**
|
||||
- `/` Home
|
||||
- `/about-autotq` About
|
||||
- `/company` Company
|
||||
- `/research` Research
|
||||
- `/literature` Literature
|
||||
- `/news` News
|
||||
- `/testimonials` Testimonials
|
||||
- `/contact` Contact CTA
|
||||
- **Additional pages (accessible via content/footer/config):** `/articles`, `/training`, `/shop`, `/firsttimeusers`, `/occlusion`, team profile slugs.
|
||||
## 7) Media inventory used in redesign
|
||||
Reused existing configured assets (from `config.assets.images`) across pages:
|
||||
- `hero`, `product`
|
||||
- `company1`–`company7`
|
||||
- team headshots (company page team cards)
|
||||
|
||||
## 4) Design system
|
||||
- **Colors (CSS vars):**
|
||||
- Brand red: `--brand-red #c81919`
|
||||
- Strong red: `--brand-red-strong #a90f0f`
|
||||
- Red surfaces: `--bg-alt #ffe4e4`, `--brand-red-soft #ffe0e0`
|
||||
- Text: `--text #1d1111`, muted `--muted #5a4040`
|
||||
- **Typography:** Inter/system sans stack, large editorial headings, readable paragraph rhythm.
|
||||
- **Spacing:** container max 1160px; section vertical rhythm `~4rem–5rem` desktop.
|
||||
- **Core components:** sticky header, pill nav links, strong red CTA buttons, card panels (`.glass-card`), page hero band, timeline cards, team/gallery grids.
|
||||
Added provided YouTube embeds:
|
||||
- `z7VjjfdjIhU`
|
||||
- `l2ocd5el0Yc`
|
||||
- `4PnhBm5WIg0`
|
||||
- `rI2n9TlMYIU`
|
||||
|
||||
## 5) CSS architecture
|
||||
- Single stylesheet (`public/css/style.css`) with:
|
||||
1. Tokens/variables (`:root`)
|
||||
2. Global/reset/layout utilities
|
||||
3. Header/nav system
|
||||
4. Hero/page-hero/section systems
|
||||
5. Component styles (cards, buttons, forms, timeline, grids)
|
||||
6. Footer system
|
||||
7. Motion/accessibility states
|
||||
8. Responsive breakpoint block (`max-width: 980px`)
|
||||
|
||||
## 6) JS functionality
|
||||
- Mobile nav open/close + ESC/outside click close.
|
||||
- Sticky header “scrolled” class toggle.
|
||||
- IntersectionObserver reveal-on-scroll.
|
||||
- Contact form async POST to configured endpoint with status states.
|
||||
|
||||
## 7) Content map per page
|
||||
- `index`: hero value prop, proof stats, deployment video embed, updates, testimonials, CTA.
|
||||
- `about-autotq`: product overview + feature cards + stats.
|
||||
- `company`: team cards (from config) + gallery images.
|
||||
- `research`: links to occlusion and first-time-user source summaries.
|
||||
- `literature`: downloadable docs.
|
||||
- `news/articles`: external source links.
|
||||
- `contact`: business contact + inquiry submission form.
|
||||
- profile pages (`/hannah`, etc.): image/name/role/bio from config.
|
||||
|
||||
## 8) Image/media inventory (current usage)
|
||||
- **Logo:** `config.assets.logo` (header/footer/home hero badge).
|
||||
- **Core images:** `hero`, `product`, `videoThumb`.
|
||||
- **Team headshots:** `hannah`, `laresa`, `jamie`, `gabriella`, `devin`, `nandini`, `max`, `nick`, `carisse`.
|
||||
- **Company gallery:** `company1`..`company7`.
|
||||
- **Video embeds:** `config.videos[*].embedUrl` (YouTube embed on home).
|
||||
- **Literature docs:** `config.literature[*].url` (external document URLs).
|
||||
|
||||
## 9) Known issues / TODOs
|
||||
- Confirm all configured nav items in `site.config.js` align with intended IA; header currently uses a curated primary set to reduce clutter.
|
||||
- Team profile templates are duplicated per person; could be consolidated into a single dynamic profile route/template.
|
||||
- Add automated visual regression checks for responsive nav and hero spacing.
|
||||
- Consider moving external media URLs to local managed asset pipeline if required by deployment policy.
|
||||
|
||||
## 10) Refresh changes implemented in this update
|
||||
- Unified header/nav treatment with larger, consistently visible logo and simplified primary navigation.
|
||||
- Removed noisy motion/parallax behavior from JS and home hero for cleaner experience.
|
||||
- Increased brand red usage via hero/page bands, CTA/button gradients, and section accents while preserving contrast.
|
||||
- Standardized component styling (cards, sections, buttons, form controls, timeline, grid spacing) for cross-page consistency.
|
||||
- Added home hero logo badge for stronger brand presence above fold.
|
||||
## 8) Known TODOs
|
||||
- If any legacy `config.nav` entries still include old/unused links, optionally clean that array in `site.config.js` for full parity with curated header/footer nav.
|
||||
- Consider per-page metadata and richer alt text pass for SEO/accessibility polishing.
|
||||
|
|
|
|||
|
|
@ -1,24 +1,25 @@
|
|||
:root {
|
||||
--bg: #fff8f8;
|
||||
--bg-alt: #ffe4e4;
|
||||
--bg: #ffffff;
|
||||
--bg-alt: #f8f8f8;
|
||||
--surface: #ffffff;
|
||||
--surface-soft: #fff3f3;
|
||||
--text: #1d1111;
|
||||
--muted: #5a4040;
|
||||
--brand-red: #c81919;
|
||||
--brand-red-strong: #a90f0f;
|
||||
--brand-red-soft: #ffe0e0;
|
||||
--border: #efcaca;
|
||||
--shadow: 0 14px 30px rgba(102, 18, 18, 0.12);
|
||||
--surface-soft: #f4f4f4;
|
||||
--text: #151515;
|
||||
--muted: #4d4d4d;
|
||||
--brand-red: #d12020;
|
||||
--brand-red-strong: #ab1515;
|
||||
--brand-red-soft: #fde9e9;
|
||||
--dark: #111315;
|
||||
--dark-soft: #1e2124;
|
||||
--border: #e5e5e5;
|
||||
--shadow: 0 12px 28px rgba(16, 16, 16, 0.08);
|
||||
}
|
||||
|
||||
* { box-sizing: border-box; }
|
||||
html, body { margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
color: var(--text);
|
||||
background: linear-gradient(180deg, #fff9f9 0%, #fff3f3 100%);
|
||||
background: var(--bg);
|
||||
line-height: 1.7;
|
||||
font-size: 18px;
|
||||
overflow-x: hidden;
|
||||
|
|
@ -26,203 +27,216 @@ body {
|
|||
|
||||
a { text-decoration: none; color: inherit; }
|
||||
img { max-width: 100%; display: block; }
|
||||
|
||||
.container { width: min(1160px, calc(100% - 2rem)); margin-inline: auto; }
|
||||
.section { padding: 5rem 0; }
|
||||
.section-alt {
|
||||
background: linear-gradient(180deg, #ffe3e3 0%, #ffd8d8 100%);
|
||||
border-top: 1px solid var(--border);
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
.section-alt { background: var(--brand-red-soft); }
|
||||
.section-band { background: linear-gradient(90deg, #171a1d 0%, #202327 100%); color: #fff; }
|
||||
.section-band p, .section-band h2, .section-band strong, .section-band span { color: #fff; }
|
||||
|
||||
h1, h2, h3, h4 { line-height: 1.18; letter-spacing: -0.015em; margin-top: 0; }
|
||||
h1 { font-size: clamp(2.2rem, 5vw, 3.8rem); margin-bottom: 1rem; }
|
||||
h2 { font-size: clamp(1.8rem, 3.6vw, 2.7rem); margin-bottom: .9rem; }
|
||||
h3 { font-size: clamp(1.2rem, 2.2vw, 1.65rem); margin-bottom: .6rem; }
|
||||
h3 { font-size: clamp(1.15rem, 2.2vw, 1.5rem); margin-bottom: .55rem; }
|
||||
p { margin: 0 0 1rem; color: var(--text); }
|
||||
.lead { color: var(--muted); font-size: 1.15rem; max-width: 70ch; }
|
||||
.lead { color: var(--muted); font-size: 1.12rem; max-width: 72ch; }
|
||||
|
||||
.site-header {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 1000;
|
||||
background: rgba(255, 247, 247, 0.95);
|
||||
background: rgba(255, 255, 255, 0.95);
|
||||
backdrop-filter: blur(10px);
|
||||
border-bottom: 1px solid rgba(200, 25, 25, 0.2);
|
||||
border-bottom: 1px solid var(--border);
|
||||
transition: box-shadow .2s ease, background-color .2s ease;
|
||||
}
|
||||
.site-header.is-scrolled {
|
||||
background: rgba(255, 244, 244, 0.98);
|
||||
box-shadow: 0 12px 24px rgba(94, 14, 14, 0.16);
|
||||
}
|
||||
|
||||
.nav-wrap { display: flex; align-items: center; justify-content: space-between; min-height: 86px; gap: 1rem; }
|
||||
|
||||
.brand {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: .7rem;
|
||||
font-weight: 800;
|
||||
color: #7f1111;
|
||||
}
|
||||
.site-header.is-scrolled { box-shadow: 0 8px 22px rgba(0,0,0,.08); }
|
||||
.nav-wrap { display: flex; align-items: center; justify-content: space-between; min-height: 84px; gap: 1rem; }
|
||||
.brand { display: inline-flex; align-items: center; gap: .7rem; font-weight: 800; color: var(--dark); }
|
||||
.brand img {
|
||||
width: 56px;
|
||||
height: 56px;
|
||||
width: 52px;
|
||||
height: 52px;
|
||||
object-fit: contain;
|
||||
border-radius: 12px;
|
||||
background: #fff;
|
||||
border: 1px solid var(--border);
|
||||
padding: .25rem;
|
||||
padding: .24rem;
|
||||
}
|
||||
.brand span { font-size: 1.08rem; }
|
||||
.brand span { font-size: 1.06rem; }
|
||||
|
||||
.site-nav { display: block; }
|
||||
.nav-links { display: flex; align-items: center; gap: .45rem; flex-wrap: wrap; justify-content: flex-end; }
|
||||
.nav-links a {
|
||||
color: #5d3f3f;
|
||||
color: #3a3d40;
|
||||
font-weight: 700;
|
||||
font-size: .95rem;
|
||||
padding: .58rem .82rem;
|
||||
padding: .56rem .82rem;
|
||||
border-radius: 999px;
|
||||
border: 1px solid transparent;
|
||||
transition: .2s ease;
|
||||
}
|
||||
.nav-links a:hover,
|
||||
.nav-links a.active {
|
||||
color: var(--brand-red);
|
||||
border-color: rgba(200, 25, 25, .3);
|
||||
background: #ffecec;
|
||||
}
|
||||
|
||||
.nav-links a.active { color: var(--brand-red); border-color: #f1cdcd; background: #fff5f5; }
|
||||
.nav-cta,
|
||||
.nav-links a.nav-cta-link {
|
||||
background: linear-gradient(180deg, #dc2b2b 0%, #b81414 100%);
|
||||
border: 1px solid #a81010;
|
||||
background: linear-gradient(180deg, #e13232 0%, #c41d1d 100%);
|
||||
border: 1px solid #b31a1a;
|
||||
color: #fff;
|
||||
font-weight: 800;
|
||||
box-shadow: 0 8px 18px rgba(148, 15, 15, 0.25);
|
||||
}
|
||||
.nav-cta:hover,
|
||||
.nav-links a.nav-cta-link:hover,
|
||||
.nav-links a.nav-cta-link.active {
|
||||
color: #fff;
|
||||
border-color: #930d0d;
|
||||
background: linear-gradient(180deg, #e43535 0%, #ab0f0f 100%);
|
||||
}
|
||||
.nav-links a.nav-cta-link.active { color: #fff; background: linear-gradient(180deg, #ea4242 0%, #b01717 100%); }
|
||||
|
||||
.mobile-toggle { display: none; border: 1px solid transparent; border-radius: 10px; background: transparent; padding: .3rem .35rem; }
|
||||
.mobile-toggle span { display: block; width: 22px; height: 2px; background: #5a1a1a; margin: 5px 0; border-radius: 2px; }
|
||||
.mobile-toggle span { display: block; width: 22px; height: 2px; background: #24272a; margin: 5px 0; border-radius: 2px; }
|
||||
|
||||
.hero {
|
||||
position: relative;
|
||||
padding: 5.5rem 0 4.5rem;
|
||||
background: linear-gradient(180deg, #ffe6e6 0%, #fff4f4 55%, #fff8f8 100%);
|
||||
border-bottom: 1px solid var(--border);
|
||||
padding: 5.4rem 0 4.5rem;
|
||||
background: linear-gradient(115deg, #121417 0%, #21262c 58%, #d12020 58%, #cc1d1d 100%);
|
||||
color: #fff;
|
||||
}
|
||||
.hero p, .hero h1 { color: #fff; }
|
||||
.hero-bg {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background: radial-gradient(650px 280px at 80% -20%, rgba(200, 25, 25, 0.2), transparent 70%);
|
||||
background: radial-gradient(680px 300px at 72% 8%, rgba(255,255,255,.22), transparent 70%);
|
||||
pointer-events: none;
|
||||
}
|
||||
.hero-grid { position: relative; display: grid; grid-template-columns: 1.1fr .9fr; gap: 2rem; align-items: center; }
|
||||
.hero-brand {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: .55rem;
|
||||
margin-bottom: .85rem;
|
||||
padding: .35rem .7rem;
|
||||
border-radius: 999px;
|
||||
background: #fff;
|
||||
border: 1px solid var(--border);
|
||||
color: #851313;
|
||||
font-weight: 700;
|
||||
.hero-grid { position: relative; display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; align-items: center; }
|
||||
.eyebrow { color: #ffd6d6; font-weight: 800; text-transform: uppercase; font-size: .83rem; letter-spacing: .07em; }
|
||||
.hero-actions { display: flex; gap: .8rem; margin-top: 1.2rem; flex-wrap: wrap; }
|
||||
|
||||
.media-stack { display: grid; gap: .8rem; }
|
||||
.media-stack img {
|
||||
border-radius: 14px;
|
||||
border: 1px solid rgba(255,255,255,.22);
|
||||
box-shadow: 0 18px 36px rgba(0,0,0,.22);
|
||||
object-fit: cover;
|
||||
max-height: 300px;
|
||||
width: 100%;
|
||||
}
|
||||
.hero-brand img { width: 28px; height: 28px; object-fit: contain; }
|
||||
.eyebrow { color: var(--brand-red); font-weight: 800; text-transform: uppercase; font-size: .86rem; letter-spacing: .06em; }
|
||||
.hero-actions { display: flex; gap: .8rem; margin-top: 1.3rem; flex-wrap: wrap; }
|
||||
|
||||
.page-hero {
|
||||
padding: 4.8rem 0 2.2rem;
|
||||
background: linear-gradient(180deg, #ffe3e3 0%, #fff6f6 100%);
|
||||
padding: 4.5rem 0 2.4rem;
|
||||
background: linear-gradient(180deg, #fafafa 0%, #ffffff 100%);
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
.quote-strip { background: var(--dark); color: #fff; padding: 1.1rem 0; }
|
||||
.quote-strip p { margin: 0; color: #fff; font-weight: 600; text-align: center; }
|
||||
|
||||
.story-band {
|
||||
padding: 4rem 0;
|
||||
background: linear-gradient(180deg, rgba(200,25,25,.11), rgba(200,25,25,.03));
|
||||
border-top: 1px solid #efc3c3;
|
||||
border-bottom: 1px solid #efc3c3;
|
||||
.split { display: grid; grid-template-columns: 1fr 1fr; gap: 1.6rem; align-items: center; }
|
||||
.split-reverse .split-copy { order: 1; }
|
||||
.split-reverse .split-media { order: 2; }
|
||||
.split-media img {
|
||||
border-radius: 14px;
|
||||
border: 1px solid var(--border);
|
||||
box-shadow: var(--shadow);
|
||||
min-height: 250px;
|
||||
object-fit: cover;
|
||||
width: 100%;
|
||||
}
|
||||
.story-steps { display: grid; gap: 1rem; }
|
||||
.story-step {
|
||||
padding: 1rem 1.1rem;
|
||||
.split-copy { padding: .4rem 0; }
|
||||
|
||||
.bullet-list { margin: .5rem 0 0; padding-left: 1.1rem; }
|
||||
.bullet-list li { margin-bottom: .35rem; }
|
||||
.context-list { display: grid; gap: .75rem; }
|
||||
.context-list div { background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.2); padding: .75rem .85rem; border-radius: 10px; }
|
||||
.context-list strong { display: block; margin-bottom: .2rem; }
|
||||
|
||||
.media-band { background: #f6f6f7; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
|
||||
.band-head { margin-bottom: 1.1rem; }
|
||||
.video-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
|
||||
.video-frame {
|
||||
border-radius: 14px;
|
||||
border: 1px solid var(--border);
|
||||
box-shadow: var(--shadow);
|
||||
overflow: hidden;
|
||||
background: #fff;
|
||||
}
|
||||
.video-frame iframe { width: 100%; aspect-ratio: 16/9; border: 0; display: block; }
|
||||
|
||||
.news-testimonials { display: grid; grid-template-columns: 1.2fr .8fr; gap: 1rem; align-items: start; }
|
||||
.timeline { display: grid; gap: .8rem; }
|
||||
.news-row {
|
||||
background: #fff;
|
||||
border: 1px solid var(--border);
|
||||
border-left: 4px solid var(--brand-red);
|
||||
border-radius: 10px;
|
||||
background: rgba(255, 255, 255, .75);
|
||||
border-radius: 12px;
|
||||
padding: .95rem 1rem;
|
||||
}
|
||||
.story-kicker { color: var(--brand-red-strong); font-weight: 800; font-size: .8rem; text-transform: uppercase; letter-spacing: .05em; margin-bottom: .3rem; }
|
||||
.date { color: var(--brand-red); font-weight: 800; font-size: .88rem; }
|
||||
.stacked-quotes { display: grid; gap: .8rem; }
|
||||
.quote-panel {
|
||||
margin: 0;
|
||||
background: #fff;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 12px;
|
||||
padding: 1rem;
|
||||
}
|
||||
.quote-panel p { font-size: 1.02rem; }
|
||||
.quote-panel cite { font-style: normal; color: var(--muted); font-weight: 600; }
|
||||
|
||||
.split { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; align-items: start; }
|
||||
.grid-2 { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.2rem; }
|
||||
.grid-3 { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1.2rem; }
|
||||
.team-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1.1rem; }
|
||||
.gallery-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: .8rem; }
|
||||
.stats-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem; }
|
||||
.research-list, .docs-list, .testimonials-stack { display: grid; gap: 1rem; }
|
||||
.research-item, .doc-row {
|
||||
background: #fff;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 12px;
|
||||
padding: 1rem;
|
||||
box-shadow: var(--shadow);
|
||||
}
|
||||
.item-links { display: flex; gap: 1rem; flex-wrap: wrap; }
|
||||
.doc-row { display: flex; justify-content: space-between; align-items: center; gap: 1rem; }
|
||||
|
||||
.team-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 1rem; }
|
||||
.team-card {
|
||||
display: grid;
|
||||
grid-template-columns: 170px 1fr;
|
||||
gap: .9rem;
|
||||
background: #fff;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 12px;
|
||||
padding: .8rem;
|
||||
box-shadow: var(--shadow);
|
||||
}
|
||||
.team-card img { border-radius: 10px; height: 170px; width: 100%; object-fit: cover; }
|
||||
|
||||
.quote-row {
|
||||
display: grid;
|
||||
grid-template-columns: 60px 1fr;
|
||||
gap: .8rem;
|
||||
background: #fff;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 12px;
|
||||
padding: 1rem;
|
||||
}
|
||||
.quote-row .quote-mark { font-size: 3rem; line-height: .9; color: var(--brand-red); font-weight: 800; }
|
||||
.quote-row span { color: var(--muted); font-weight: 600; }
|
||||
|
||||
.glass-card {
|
||||
background: var(--surface);
|
||||
background: #fff;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 16px;
|
||||
border-radius: 14px;
|
||||
box-shadow: var(--shadow);
|
||||
padding: 1.1rem;
|
||||
padding: 1rem;
|
||||
}
|
||||
.media-card { padding: .7rem; }
|
||||
.media-card img { border-radius: 12px; width: 100%; object-fit: cover; }
|
||||
.video-frame { padding: .5rem; }
|
||||
.video-frame iframe { width: 100%; aspect-ratio: 16/9; border: 0; border-radius: 12px; }
|
||||
.stat-card h3 { color: var(--brand-red); font-size: 2.2rem; margin-bottom: .35rem; }
|
||||
.cta-card {
|
||||
background: linear-gradient(145deg, #be1a1a, #980f0f);
|
||||
border-color: #8e0f0f;
|
||||
color: #fff;
|
||||
}
|
||||
.cta-card p, .cta-card h2 { color: #fff; }
|
||||
.quote-card p { font-size: 1.08rem; }
|
||||
|
||||
.btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: .82rem 1.18rem;
|
||||
padding: .82rem 1.15rem;
|
||||
border-radius: 999px;
|
||||
border: 1px solid transparent;
|
||||
font-weight: 700;
|
||||
transition: .2s ease;
|
||||
}
|
||||
.btn-primary {
|
||||
background: linear-gradient(180deg, #dd2f2f 0%, #b81212 100%);
|
||||
color: #fff;
|
||||
border-color: #a71212;
|
||||
}
|
||||
.btn-primary:hover { transform: translateY(-1px); box-shadow: 0 8px 18px rgba(138, 16, 16, .3); }
|
||||
.btn-ghost {
|
||||
border-color: #e4bbbb;
|
||||
background: #fff;
|
||||
color: #7f1f1f;
|
||||
}
|
||||
.btn-ghost:hover { border-color: var(--brand-red); color: var(--brand-red); background: #fff3f3; }
|
||||
|
||||
.btn-primary { background: linear-gradient(180deg, #e13232 0%, #c41d1d 100%); color: #fff; border-color: #b31a1a; }
|
||||
.btn-primary:hover { transform: translateY(-1px); box-shadow: 0 8px 18px rgba(156, 24, 24, .24); }
|
||||
.btn-ghost { border-color: rgba(255,255,255,.5); color: #fff; }
|
||||
.btn-ghost:hover { background: rgba(255,255,255,.12); }
|
||||
.text-link { color: var(--brand-red); font-weight: 700; }
|
||||
.text-link:hover { text-decoration: underline; }
|
||||
|
||||
.timeline { display: grid; gap: 1rem; }
|
||||
.news-card .date, .date { color: var(--brand-red-strong); font-weight: 800; font-size: .92rem; }
|
||||
.team-card img { border-radius: 12px; margin-bottom: .75rem; height: 260px; width: 100%; object-fit: cover; }
|
||||
.gallery-grid img { border-radius: 12px; min-height: 170px; object-fit: cover; border: 1px solid var(--border); }
|
||||
.profile-card { max-width: 860px; }
|
||||
.profile-card img { width: 220px; height: 220px; border-radius: 18px; object-fit: cover; margin-bottom: .9rem; }
|
||||
|
||||
.inquiry-form label { display: block; font-weight: 600; margin-bottom: .9rem; }
|
||||
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .9rem; }
|
||||
.inquiry-form input,
|
||||
|
|
@ -232,11 +246,11 @@ p { margin: 0 0 1rem; color: var(--text); }
|
|||
margin-top: .35rem;
|
||||
padding: .75rem .85rem;
|
||||
border-radius: 12px;
|
||||
border: 1px solid #d9b7b7;
|
||||
border: 1px solid #d9d9d9;
|
||||
background: #fff;
|
||||
font-size: 1rem;
|
||||
}
|
||||
.alert { margin-top: .9rem; padding: .8rem .9rem; border: 1px solid #edb5b5; background: #fff1f1; color: #aa2020; border-radius: 12px; }
|
||||
.alert { margin-top: .9rem; padding: .8rem .9rem; border: 1px solid #f0c9c9; background: #fff3f3; color: #8a2020; border-radius: 12px; }
|
||||
.form-status { margin-top: .75rem; font-weight: 700; }
|
||||
.form-status.success { color: #146c2f; }
|
||||
.form-status.error { color: #b42323; }
|
||||
|
|
@ -245,17 +259,17 @@ p { margin: 0 0 1rem; color: var(--text); }
|
|||
.site-footer {
|
||||
margin-top: 3rem;
|
||||
padding-top: 2.6rem;
|
||||
border-top: 1px solid #4f1616;
|
||||
background: linear-gradient(180deg, #2f1010, #180808);
|
||||
color: #f8eded;
|
||||
border-top: 1px solid #282b2f;
|
||||
background: linear-gradient(180deg, #16181b, #0f1113);
|
||||
color: #f0f0f0;
|
||||
}
|
||||
.footer-grid { display: grid; grid-template-columns: 1.2fr .8fr 1fr; gap: 1.3rem; }
|
||||
.brand-footer img { width: 50px; height: 50px; }
|
||||
.footer-links { list-style: none; padding: 0; margin: 0; }
|
||||
.footer-links li { margin: .5rem 0; color: #dfbcbc; }
|
||||
.footer-links li { margin: .45rem 0; color: #c8cbcf; }
|
||||
.footer-links a:hover { color: #fff; }
|
||||
.footer-bottom { padding: 1.2rem 0 1.8rem; color: #ddb7b7; }
|
||||
.legal { color: #ddb7b7; }
|
||||
.footer-bottom { padding: 1.2rem 0 1.8rem; color: #afb3b8; }
|
||||
.legal { color: #afb3b8; }
|
||||
|
||||
.reveal { opacity: 0; transform: translateY(16px); transition: opacity .55s ease, transform .55s ease; }
|
||||
.reveal.is-visible { opacity: 1; transform: translateY(0); }
|
||||
|
|
@ -267,23 +281,24 @@ button:focus-visible,
|
|||
input:focus-visible,
|
||||
textarea:focus-visible,
|
||||
select:focus-visible {
|
||||
outline: 3px solid rgba(200, 25, 25, .25);
|
||||
outline: 3px solid rgba(209, 32, 32, .25);
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
@media (max-width: 980px) {
|
||||
.hero-grid, .split, .grid-3, .grid-2, .team-grid, .gallery-grid, .stats-grid, .footer-grid, .form-grid { grid-template-columns: 1fr; }
|
||||
.hero-grid, .split, .video-grid, .news-testimonials, .footer-grid, .form-grid, .team-grid, .team-card, .quote-row { grid-template-columns: 1fr; }
|
||||
.split-reverse .split-copy,
|
||||
.split-reverse .split-media { order: initial; }
|
||||
|
||||
.mobile-toggle { display: inline-block; }
|
||||
|
||||
.site-nav {
|
||||
position: absolute;
|
||||
top: 82px;
|
||||
right: 1rem;
|
||||
left: 1rem;
|
||||
background: rgba(255, 244, 244, .99);
|
||||
border: 1px solid #f0cccc;
|
||||
box-shadow: 0 14px 35px rgba(87, 13, 13, .2);
|
||||
background: rgba(255, 255, 255, .99);
|
||||
border: 1px solid var(--border);
|
||||
box-shadow: 0 14px 30px rgba(0,0,0,.15);
|
||||
border-radius: 14px;
|
||||
padding: .85rem;
|
||||
transform: translateY(-8px) scale(.98);
|
||||
|
|
@ -292,23 +307,10 @@ select:focus-visible {
|
|||
visibility: hidden;
|
||||
transition: transform .22s ease, opacity .22s ease;
|
||||
}
|
||||
.site-nav.open {
|
||||
transform: translateY(0) scale(1);
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
visibility: visible;
|
||||
}
|
||||
.site-nav.open { transform: translateY(0) scale(1); opacity: 1; pointer-events: auto; visibility: visible; }
|
||||
.nav-links { width: 100%; flex-direction: column; align-items: stretch; gap: .25rem; }
|
||||
.nav-links a {
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
border-radius: 10px;
|
||||
background: #fff;
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
.nav-links a:hover,
|
||||
.nav-links a.active { border-left-color: var(--brand-red); }
|
||||
.nav-cta { width: 100%; text-align: center; justify-content: center; }
|
||||
.nav-links a { width: 100%; text-align: left; border-radius: 10px; background: #fff; border-left: 3px solid transparent; }
|
||||
.nav-links a:hover, .nav-links a.active { border-left-color: var(--brand-red); }
|
||||
|
||||
.section { padding: 4rem 0; }
|
||||
body { font-size: 17px; }
|
||||
|
|
|
|||
|
|
@ -1,8 +1,26 @@
|
|||
<main>
|
||||
<section class="page-hero">
|
||||
<div class="container">
|
||||
<h1>Company</h1>
|
||||
<p class="lead"><%= config.brand.legalName %> is focused on improving emergency bleeding response through intuitive automation and practical deployment models.</p>
|
||||
<div class="container split split-visual">
|
||||
<div>
|
||||
<h1>Company</h1>
|
||||
<p class="lead"><%= config.brand.legalName %> is focused on improving emergency bleeding response through intuitive automation and practical readiness programs.</p>
|
||||
</div>
|
||||
<div class="split-media reveal" data-reveal>
|
||||
<img src="<%= config.assets.images.company4 %>" alt="AutoTQ team collaboration" loading="lazy" />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container split split-reverse">
|
||||
<article class="split-copy reveal" data-reveal>
|
||||
<h2>Operating mission</h2>
|
||||
<p>The team’s work centers on a clear goal: improve readiness for severe bleeding incidents by making intervention more practical for people who may be under pressure and short on time.</p>
|
||||
<p>This includes product development, quality systems, operational planning, and education-oriented resources for real-world deployment settings.</p>
|
||||
</article>
|
||||
<div class="split-media reveal" data-reveal>
|
||||
<img src="<%= config.assets.images.company5 %>" alt="AutoTQ operations and planning" loading="lazy" />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
|
@ -11,25 +29,16 @@
|
|||
<h2>Team</h2>
|
||||
<div class="team-grid">
|
||||
<% (config.team || []).forEach(member => { %>
|
||||
<article class="glass-card team-card reveal" data-reveal>
|
||||
<article class="team-card reveal" data-reveal>
|
||||
<img src="<%= config.assets.images[member.image] %>" alt="<%= member.name %>" loading="lazy" />
|
||||
<h3><%= member.name %></h3>
|
||||
<p><%= member.role %></p>
|
||||
<a class="text-link" href="/<%= member.slug %>">View profile →</a>
|
||||
<div>
|
||||
<h3><%= member.name %></h3>
|
||||
<p><%= member.role %></p>
|
||||
<a class="text-link" href="/<%= member.slug %>">View profile →</a>
|
||||
</div>
|
||||
</article>
|
||||
<% }) %>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2>Company Gallery</h2>
|
||||
<div class="gallery-grid">
|
||||
<% for (let i = 1; i <= 7; i++) { %>
|
||||
<img class="reveal" data-reveal src="<%= config.assets.images[`company${i}`] %>" alt="AutoTQ company image <%= i %>" loading="lazy" />
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,13 @@
|
|||
<main>
|
||||
<section class="page-hero">
|
||||
<div class="container">
|
||||
<h1>Contact</h1>
|
||||
<p class="lead">Connect with the AutoTQ team.</p>
|
||||
<div class="container split split-visual">
|
||||
<div>
|
||||
<h1>Contact</h1>
|
||||
<p class="lead">Connect with the AutoTQ team about emergency readiness planning, literature, and deployment pathways.</p>
|
||||
</div>
|
||||
<div class="split-media reveal" data-reveal>
|
||||
<img src="<%= config.assets.images.product %>" alt="AutoTQ product for readiness planning discussions" loading="lazy" />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
|
|
|||
174
views/index.ejs
174
views/index.ejs
|
|
@ -3,110 +3,114 @@
|
|||
<div class="hero-bg"></div>
|
||||
<div class="container hero-grid">
|
||||
<div class="reveal" data-reveal>
|
||||
<div class="hero-brand">
|
||||
<img src="<%= config.assets.logo %>" alt="<%= config.brand.name %> logo" loading="eager" />
|
||||
<span><%= config.brand.name %></span>
|
||||
</div>
|
||||
<p class="eyebrow">FDA-Registered • Patented • Trusted Nationwide</p>
|
||||
<h1>A bleeding emergency becomes a race against time.</h1>
|
||||
<p class="lead">AutoTQ was built so the first person on scene can move from panic to action in seconds, with guided operation and one-button activation.</p>
|
||||
<p class="eyebrow">Mission-Driven Emergency Readiness</p>
|
||||
<h1>When hemorrhage risk is measured in minutes, response clarity matters.</h1>
|
||||
<p class="lead">AutoTQ focuses on helping people act under pressure through one-button activation and guided steps designed for high-stress moments.</p>
|
||||
<div class="hero-actions">
|
||||
<a href="/contact" class="btn btn-primary">Start a Deployment Conversation</a>
|
||||
<a href="/about-autotq" class="btn btn-ghost">See How AutoTQ Works</a>
|
||||
<a href="/contact" class="btn btn-primary">Plan a Deployment</a>
|
||||
<a href="/research" class="btn btn-ghost">Review Research Links</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="glass-card media-card reveal" data-reveal>
|
||||
<img src="<%= config.assets.images.hero %>" alt="AutoTQ demonstration" loading="eager" />
|
||||
<div class="media-stack reveal" data-reveal>
|
||||
<img src="<%= config.assets.images.hero %>" alt="AutoTQ in emergency readiness context" loading="eager" />
|
||||
<img src="<%= config.assets.images.product %>" alt="AutoTQ product detail" loading="lazy" />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="story-band">
|
||||
<div class="container story-steps">
|
||||
<article class="story-step reveal" data-reveal>
|
||||
<p class="story-kicker">Chapter 1</p>
|
||||
<h3>The gap</h3>
|
||||
<p>In severe extremity bleeding events, bystanders and teams need a response that is fast, repeatable, and simple under stress.</p>
|
||||
</article>
|
||||
<article class="story-step reveal" data-reveal>
|
||||
<p class="story-kicker">Chapter 2</p>
|
||||
<h3>The response</h3>
|
||||
<p>AutoTQ simplifies intervention through a two-step process and onboard guidance so users can focus on the patient, not guesswork.</p>
|
||||
</article>
|
||||
<article class="story-step reveal" data-reveal>
|
||||
<p class="story-kicker">Chapter 3</p>
|
||||
<h3>The outcome</h3>
|
||||
<p>Public research and deployment content highlight strong first-time usability and arterial occlusion performance in context.</p>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container split">
|
||||
<div class="reveal" data-reveal>
|
||||
<h2>Proof points in context</h2>
|
||||
<p>These figures come from source research/deployment pages referenced throughout the site.</p>
|
||||
</div>
|
||||
<div class="stats-grid reveal" data-reveal>
|
||||
<article class="glass-card stat-card"><h3>92%</h3><p>First-time user success from source research pages.</p></article>
|
||||
<article class="glass-card stat-card"><h3>100%</h3><p>Arterial occlusion from source research pages.</p></article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section section-alt">
|
||||
<div class="container split">
|
||||
<div class="reveal" data-reveal>
|
||||
<h2>See deployment footage</h2>
|
||||
<p class="lead">Video source: Cape Coral Police deployment page.</p>
|
||||
<p><a class="text-link" href="<%= config.videos[0].pageUrl %>" target="_blank" rel="noopener noreferrer">Open source page →</a></p>
|
||||
</div>
|
||||
<div class="glass-card video-frame reveal" data-reveal>
|
||||
<iframe
|
||||
src="<%= config.videos[0].embedUrl %>"
|
||||
title="<%= config.videos[0].title %>"
|
||||
loading="lazy"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
allowfullscreen
|
||||
></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<section class="quote-strip">
|
||||
<div class="container">
|
||||
<h2 class="reveal" data-reveal>The story continues: updates</h2>
|
||||
<div class="timeline">
|
||||
<% (config.news || []).forEach(item => { %>
|
||||
<article class="glass-card news-card reveal" data-reveal>
|
||||
<p class="date"><%= item.date %></p>
|
||||
<h3><%= item.title %></h3>
|
||||
<a class="text-link" href="<%= item.url %>" target="_blank" rel="noopener noreferrer">View source →</a>
|
||||
</article>
|
||||
<% }) %>
|
||||
<p>"Empowering anyone to stop the bleed with audio instructions and one-button activation."</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section feature-row">
|
||||
<div class="container split split-visual">
|
||||
<div class="split-media reveal" data-reveal>
|
||||
<img src="<%= config.assets.images.company1 %>" alt="Team development and readiness planning" loading="lazy" />
|
||||
</div>
|
||||
<article class="split-copy reveal" data-reveal>
|
||||
<h2>The challenge is not urgency alone — it is correct action under stress.</h2>
|
||||
<p>Emergency scenes often involve first-time responders, noise, and confusion. AutoTQ’s design focus is practical usability so application steps are easier to execute when seconds count.</p>
|
||||
<ul class="bullet-list">
|
||||
<li>Addresses hemorrhage response where immediate intervention can be critical.</li>
|
||||
<li>Supports first-on-scene users with guided operation rather than complex setup.</li>
|
||||
<li>Built around broad emergency readiness use cases in public and professional settings.</li>
|
||||
</ul>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section section-band">
|
||||
<div class="container split split-reverse">
|
||||
<article class="split-copy reveal" data-reveal>
|
||||
<h2>Use-context readiness</h2>
|
||||
<p>AutoTQ is positioned for organizations that need dependable bleeding-control preparedness across diverse environments.</p>
|
||||
<div class="context-list">
|
||||
<div><strong>Schools</strong><span>Emergency planning support for campuses and student activity areas.</span></div>
|
||||
<div><strong>Construction</strong><span>High-risk jobsite preparedness where rapid intervention capability is essential.</span></div>
|
||||
<div><strong>Public venues</strong><span>Scalable readiness for spaces with large and changing foot traffic.</span></div>
|
||||
<div><strong>First response teams</strong><span>Operational integration conversations for trained public safety personnel.</span></div>
|
||||
</div>
|
||||
</article>
|
||||
<div class="split-media reveal" data-reveal>
|
||||
<img src="<%= config.assets.images.company2 %>" alt="AutoTQ deployment readiness across industries" loading="lazy" />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section section-alt">
|
||||
<section class="section media-band">
|
||||
<div class="container">
|
||||
<h2 class="reveal" data-reveal>Voices from the field</h2>
|
||||
<div class="grid-2">
|
||||
<% (config.testimonials || []).forEach(t => { %>
|
||||
<article class="glass-card quote-card reveal" data-reveal>
|
||||
<p>“<%= t.quote %>”</p>
|
||||
<span>— <%= t.name %>, <%= t.title %></span>
|
||||
<div class="band-head reveal" data-reveal>
|
||||
<h2>Video highlights</h2>
|
||||
<p>Reference videos and deployment content.</p>
|
||||
</div>
|
||||
<div class="video-grid">
|
||||
<article class="video-frame reveal" data-reveal>
|
||||
<iframe src="https://www.youtube.com/embed/z7VjjfdjIhU" title="AutoTQ video highlight 1" loading="lazy" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
</article>
|
||||
<article class="video-frame reveal" data-reveal>
|
||||
<iframe src="https://www.youtube.com/embed/l2ocd5el0Yc" title="AutoTQ video highlight 2" loading="lazy" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
</article>
|
||||
<% }) %>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container cta-card glass-card reveal" data-reveal>
|
||||
<h2>Write the next chapter with your team</h2>
|
||||
<p>Contact AutoTQ for deployment planning, training, literature, and partnership details.</p>
|
||||
<a href="/contact" class="btn btn-primary">Contact AutoTQ</a>
|
||||
<div class="container split split-visual">
|
||||
<article class="split-copy reveal" data-reveal>
|
||||
<h2>Evidence orientation and cautious claims</h2>
|
||||
<p>AutoTQ pages reference first-time user and occlusion findings, with source links available on the Research page. This site keeps statements aligned with those referenced source materials.</p>
|
||||
<a href="/research" class="text-link">Go to Research sources →</a>
|
||||
</article>
|
||||
<div class="split-media reveal" data-reveal>
|
||||
<img src="<%= config.assets.images.company3 %>" alt="Clinical and technical review context" loading="lazy" />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section section-alt">
|
||||
<div class="container">
|
||||
<h2 class="reveal" data-reveal>News and testimonials</h2>
|
||||
<div class="news-testimonials">
|
||||
<div class="timeline">
|
||||
<% (config.news || []).slice(0, 3).forEach(item => { %>
|
||||
<article class="news-row reveal" data-reveal>
|
||||
<p class="date"><%= item.date %></p>
|
||||
<h3><%= item.title %></h3>
|
||||
<a class="text-link" href="<%= item.url %>" target="_blank" rel="noopener noreferrer">View source →</a>
|
||||
</article>
|
||||
<% }) %>
|
||||
</div>
|
||||
<div class="stacked-quotes">
|
||||
<% (config.testimonials || []).slice(0, 2).forEach(t => { %>
|
||||
<blockquote class="quote-panel reveal" data-reveal>
|
||||
<p>“<%= t.quote %>”</p>
|
||||
<cite>— <%= t.name %>, <%= t.title %></cite>
|
||||
</blockquote>
|
||||
<% }) %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
|
|
|||
|
|
@ -1,16 +1,24 @@
|
|||
<main>
|
||||
<section class="page-hero">
|
||||
<div class="container">
|
||||
<h1>Literature</h1>
|
||||
<p class="lead">Official AutoTQ literature and reference files.</p>
|
||||
<div class="container split split-visual">
|
||||
<div>
|
||||
<h1>Literature</h1>
|
||||
<p class="lead">Official AutoTQ literature and reference files for deployment planning, product details, and safety context.</p>
|
||||
</div>
|
||||
<div class="split-media reveal" data-reveal>
|
||||
<img src="<%= config.assets.images.company6 %>" alt="AutoTQ literature and training material context" loading="lazy" />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container grid-2">
|
||||
<div class="container docs-list">
|
||||
<% (config.literature || []).forEach((doc) => { %>
|
||||
<article class="glass-card literature-card reveal" data-reveal>
|
||||
<h3><%= doc.title %></h3>
|
||||
<p>PDF document</p>
|
||||
<article class="doc-row reveal" data-reveal>
|
||||
<div>
|
||||
<h3><%= doc.title %></h3>
|
||||
<p>Reference document</p>
|
||||
</div>
|
||||
<a href="<%= doc.url %>" target="_blank" rel="noopener noreferrer" class="btn btn-primary">Open PDF</a>
|
||||
</article>
|
||||
<% }) %>
|
||||
|
|
|
|||
|
|
@ -1,15 +1,20 @@
|
|||
<main>
|
||||
<section class="page-hero">
|
||||
<div class="container">
|
||||
<h1>News</h1>
|
||||
<p class="lead">Recent AutoTQ news and press links.</p>
|
||||
<div class="container split split-visual">
|
||||
<div>
|
||||
<h1>News</h1>
|
||||
<p class="lead">Recent AutoTQ news and press links.</p>
|
||||
</div>
|
||||
<article class="video-frame reveal" data-reveal>
|
||||
<iframe src="https://www.youtube.com/embed/rI2n9TlMYIU" title="AutoTQ press and awareness video" loading="lazy" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container timeline">
|
||||
<% (config.news || []).forEach(item => { %>
|
||||
<article class="glass-card news-card reveal" data-reveal>
|
||||
<article class="news-row reveal" data-reveal>
|
||||
<p class="date"><%= item.date %></p>
|
||||
<h3><%= item.title %></h3>
|
||||
<a class="text-link" href="<%= item.url %>" target="_blank" rel="noopener noreferrer">View source →</a>
|
||||
|
|
|
|||
|
|
@ -12,9 +12,14 @@
|
|||
<div>
|
||||
<h4>Explore</h4>
|
||||
<ul class="footer-links">
|
||||
<% (config?.nav || []).forEach(item => { %>
|
||||
<li><a href="<%= item.href %>"><%= item.label %></a></li>
|
||||
<% }) %>
|
||||
<li><a href="/">Home</a></li>
|
||||
<li><a href="/about-autotq">About</a></li>
|
||||
<li><a href="/company">Company</a></li>
|
||||
<li><a href="/research">Research</a></li>
|
||||
<li><a href="/literature">Literature</a></li>
|
||||
<li><a href="/news">News</a></li>
|
||||
<li><a href="/testimonials">Testimonials</a></li>
|
||||
<li><a href="/contact">Contact</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@
|
|||
%>
|
||||
<a href="<%= item.href %>" class="<%= active ? 'active' : '' %>" <%= active ? 'aria-current="page"' : '' %>><%= item.label %></a>
|
||||
<% }) %>
|
||||
|
||||
<a href="/contact" class="nav-cta nav-cta-link <%= pageName === 'contact' ? 'active' : '' %>" aria-label="Contact AutoTQ" <%= pageName === 'contact' ? 'aria-current="page"' : '' %>>Contact</a>
|
||||
</div>
|
||||
</nav>
|
||||
|
|
|
|||
|
|
@ -2,23 +2,40 @@
|
|||
<section class="page-hero">
|
||||
<div class="container">
|
||||
<h1>Research</h1>
|
||||
<p class="lead">AutoTQ source materials reference first-time-user success and arterial occlusion findings.</p>
|
||||
<p class="lead">AutoTQ source materials reference first-time-user success and arterial occlusion findings. Review linked summaries and source URLs.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section media-band">
|
||||
<div class="container split split-visual">
|
||||
<article class="split-copy reveal" data-reveal>
|
||||
<h2>Media overview</h2>
|
||||
<p>Video content can help illustrate use and context alongside written research references.</p>
|
||||
</article>
|
||||
<article class="video-frame reveal" data-reveal>
|
||||
<iframe src="https://www.youtube.com/embed/4PnhBm5WIg0" title="AutoTQ research and deployment overview" loading="lazy" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container grid-2">
|
||||
<article class="glass-card reveal" data-reveal>
|
||||
<h3>Occlusion Finding</h3>
|
||||
<div class="container research-list">
|
||||
<article class="research-item reveal" data-reveal>
|
||||
<h3>Occlusion finding reference</h3>
|
||||
<p>Source pages reference a 100% arterial occlusion finding.</p>
|
||||
<p><a class="text-link" href="/occlusion">Read summary page →</a></p>
|
||||
<p><a class="text-link" href="https://theautotq.com/occlusion" target="_blank" rel="noopener noreferrer">View source URL →</a></p>
|
||||
<div class="item-links">
|
||||
<a class="text-link" href="/occlusion">Read summary page →</a>
|
||||
<a class="text-link" href="https://theautotq.com/occlusion" target="_blank" rel="noopener noreferrer">View source URL →</a>
|
||||
</div>
|
||||
</article>
|
||||
<article class="glass-card reveal" data-reveal>
|
||||
<h3>First-Time User Finding</h3>
|
||||
|
||||
<article class="research-item reveal" data-reveal>
|
||||
<h3>First-time user finding reference</h3>
|
||||
<p>Source pages reference 92% first-time-user success.</p>
|
||||
<p><a class="text-link" href="/firsttimeusers">Read summary page →</a></p>
|
||||
<p><a class="text-link" href="https://theautotq.com/firsttimeusers" target="_blank" rel="noopener noreferrer">View source URL →</a></p>
|
||||
<div class="item-links">
|
||||
<a class="text-link" href="/firsttimeusers">Read summary page →</a>
|
||||
<a class="text-link" href="https://theautotq.com/firsttimeusers" target="_blank" rel="noopener noreferrer">View source URL →</a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -1,17 +1,25 @@
|
|||
<main>
|
||||
<section class="page-hero">
|
||||
<div class="container">
|
||||
<h1>Testimonials</h1>
|
||||
<p class="lead">Feedback from public safety and medical professionals.</p>
|
||||
<div class="container split split-visual">
|
||||
<div>
|
||||
<h1>Testimonials</h1>
|
||||
<p class="lead">Feedback from public safety and medical professionals.</p>
|
||||
</div>
|
||||
<div class="split-media reveal" data-reveal>
|
||||
<img src="<%= config.assets.images.company7 %>" alt="Public safety and medical stakeholder engagement" loading="lazy" />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section section-alt">
|
||||
<div class="container grid-2">
|
||||
<% (config.testimonials || []).forEach(t => { %>
|
||||
<article class="glass-card quote-card reveal" data-reveal>
|
||||
<p>“<%= t.quote %>”</p>
|
||||
<span>— <%= t.name %>, <%= t.title %></span>
|
||||
<div class="container testimonials-stack">
|
||||
<% (config.testimonials || []).forEach((t, i) => { %>
|
||||
<article class="quote-row <%= i % 2 === 1 ? 'reverse' : '' %> reveal" data-reveal>
|
||||
<div class="quote-mark">“</div>
|
||||
<div>
|
||||
<p><%= t.quote %></p>
|
||||
<span>— <%= t.name %>, <%= t.title %></span>
|
||||
</div>
|
||||
</article>
|
||||
<% }) %>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in a new issue