Compare commits
9
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bf3d39a643
|
||
|
|
664d749439
|
||
|
|
b73e92a8a4
|
||
|
|
a3f7f90fdc
|
||
|
|
a39caf1a34
|
||
|
|
38c1f78d4f
|
||
|
|
5cbe055c34
|
||
|
|
2f208aa6e4
|
||
|
|
c6202d2ac6
|
@@ -13,42 +13,20 @@ content only after verifying it against the live public site.
|
|||||||
|
|
||||||
## Project
|
## Project
|
||||||
|
|
||||||
This repository contains a mirrored copy of the Arizona Institute for Autism website.
|
|
||||||
|
|
||||||
Raw mirror source:
|
|
||||||
|
|
||||||
```txt
|
|
||||||
./www.azinstitute4autism.com
|
|
||||||
```
|
|
||||||
|
|
||||||
New Astro site target:
|
New Astro site target:
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
./www
|
./www
|
||||||
```
|
```
|
||||||
|
|
||||||
The mirror was created with:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
wget --mirror --page-requisites --adjust-extension --convert-links --no-parent https://www.azinstitute4autism.com
|
|
||||||
```
|
|
||||||
|
|
||||||
Do not modify, move, rename, or delete `./www.azinstitute4autism.com`.
|
|
||||||
|
|
||||||
Treat the mirror as read-only raw source material.
|
|
||||||
|
|
||||||
The live public website is the single source of truth:
|
The live public website is the single source of truth:
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
https://www.azinstitute4autism.com
|
https://www.azinstitute4autism.com
|
||||||
```
|
```
|
||||||
|
|
||||||
Use the mirror as a convenient local extraction and inspection aid only. The
|
Verify content, design, URLs, metadata, assets, and responsive behavior against
|
||||||
mirror may contain stale, missing, rewritten, or incorrectly downloaded
|
the live public site before treating them as authoritative.
|
||||||
content and assets. Verify content, design, URLs, metadata, assets, and
|
|
||||||
responsive behavior against the live public site before treating them as
|
|
||||||
authoritative. When the live site and mirror disagree, follow the live site and
|
|
||||||
document material discrepancies.
|
|
||||||
|
|
||||||
## Primary goal
|
## Primary goal
|
||||||
|
|
||||||
@@ -221,10 +199,9 @@ Favor:
|
|||||||
Before implementing a page family or shared component:
|
Before implementing a page family or shared component:
|
||||||
|
|
||||||
1. Inspect the live page and its HTML, CSS, assets, and responsive behavior.
|
1. Inspect the live page and its HTML, CSS, assets, and responsive behavior.
|
||||||
2. Use the mirror to accelerate local extraction and inspection.
|
2. Resolve any discrepancy in favor of the live public site.
|
||||||
3. Resolve any discrepancy in favor of the live public site.
|
3. Record the source structure and important visual details.
|
||||||
4. Record the source structure and important visual details.
|
4. Identify which patterns are truly shared and which are page-specific.
|
||||||
5. Identify which patterns are truly shared and which are page-specific.
|
|
||||||
|
|
||||||
After implementation, compare the Astro output with the live public site at
|
After implementation, compare the Astro output with the live public site at
|
||||||
representative desktop and mobile viewport widths. Check the full page, not
|
representative desktop and mobile viewport widths. Check the full page, not
|
||||||
@@ -365,10 +342,9 @@ reports/migration-summary.md
|
|||||||
Before large filesystem changes:
|
Before large filesystem changes:
|
||||||
|
|
||||||
1. Inspect the live public site.
|
1. Inspect the live public site.
|
||||||
2. Inspect the mirror and identify relevant discrepancies.
|
2. Inspect the relevant source HTML, CSS, and assets in detail.
|
||||||
3. Inspect the relevant source HTML, CSS, and assets in detail.
|
3. Summarize the implementation and visual-validation plan.
|
||||||
4. Summarize the implementation and visual-validation plan.
|
4. Proceed methodically.
|
||||||
5. Proceed methodically.
|
|
||||||
|
|
||||||
At the end of a task, summarize:
|
At the end of a task, summarize:
|
||||||
|
|
||||||
|
|||||||
+19
-54
@@ -7,21 +7,15 @@ brief provides detailed implementation guidance. If any wording here appears
|
|||||||
to conflict with `AGENTS.md`, follow `AGENTS.md` and correct this brief before
|
to conflict with `AGENTS.md`, follow `AGENTS.md` and correct this brief before
|
||||||
continuing.
|
continuing.
|
||||||
|
|
||||||
This is a fidelity-first migration, not a redesign. The raw mirror is a
|
This is a fidelity-first migration, not a redesign. The live public site is the
|
||||||
convenient local extraction and inspection aid, but the live public site is the
|
|
||||||
single content and visual source of truth. The `migration-foundation` branch
|
single content and visual source of truth. The `migration-foundation` branch
|
||||||
may be consulted for nonvisual tooling and recovered content, but it must not
|
may be consulted for nonvisual tooling and recovered content, but it must not
|
||||||
be used as the visual baseline.
|
be used as the visual baseline.
|
||||||
|
|
||||||
## Task
|
## Task
|
||||||
|
|
||||||
Migrate the public Arizona Institute for Autism website from a mirrored HubSpot-generated static copy into a clean, maintainable Astro + TypeScript site.
|
Migrate the public Arizona Institute for Autism website into a clean,
|
||||||
|
maintainable Astro + TypeScript site.
|
||||||
Raw mirrored source:
|
|
||||||
|
|
||||||
```txt
|
|
||||||
./www.azinstitute4autism.com
|
|
||||||
```
|
|
||||||
|
|
||||||
New Astro project target:
|
New Astro project target:
|
||||||
|
|
||||||
@@ -29,12 +23,6 @@ New Astro project target:
|
|||||||
./www
|
./www
|
||||||
```
|
```
|
||||||
|
|
||||||
The raw mirror was created with:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
wget --mirror --page-requisites --adjust-extension --convert-links --no-parent https://www.azinstitute4autism.com
|
|
||||||
```
|
|
||||||
|
|
||||||
There is no HubSpot export, no HubSpot CLI access, and no HubSpot API access.
|
There is no HubSpot export, no HubSpot CLI access, and no HubSpot API access.
|
||||||
|
|
||||||
Use the live public website as the single source of truth:
|
Use the live public website as the single source of truth:
|
||||||
@@ -43,15 +31,9 @@ Use the live public website as the single source of truth:
|
|||||||
https://www.azinstitute4autism.com
|
https://www.azinstitute4autism.com
|
||||||
```
|
```
|
||||||
|
|
||||||
Use the local mirror as a convenient extraction and inspection aid. It may
|
Verify content, design, URLs, metadata, assets, and responsive behavior against
|
||||||
contain stale, missing, rewritten, or incorrectly downloaded content and
|
the live site. If the live site is temporarily unavailable, work that depends
|
||||||
assets. Verify content, design, URLs, metadata, assets, and responsive behavior
|
on its authority must remain explicitly unverified.
|
||||||
against the live site. When the live site and mirror disagree, follow the live
|
|
||||||
site and document material discrepancies.
|
|
||||||
|
|
||||||
If the live site is temporarily unavailable, work that depends on its authority
|
|
||||||
must remain explicitly unverified rather than silently treating the mirror as
|
|
||||||
authoritative.
|
|
||||||
|
|
||||||
## High-level goal
|
## High-level goal
|
||||||
|
|
||||||
@@ -76,10 +58,6 @@ Create a new Astro site in `./www` that is:
|
|||||||
|
|
||||||
Do not modify or delete:
|
Do not modify or delete:
|
||||||
|
|
||||||
```txt
|
|
||||||
./www.azinstitute4autism.com
|
|
||||||
```
|
|
||||||
|
|
||||||
Do not depend on:
|
Do not depend on:
|
||||||
|
|
||||||
- HubSpot CLI
|
- HubSpot CLI
|
||||||
@@ -283,13 +261,12 @@ Do not use Tailwind.
|
|||||||
For each page family or shared component:
|
For each page family or shared component:
|
||||||
|
|
||||||
1. Inspect the live page, HTML, CSS, assets, and responsive behavior.
|
1. Inspect the live page, HTML, CSS, assets, and responsive behavior.
|
||||||
2. Use the mirror to accelerate local extraction and inspection.
|
2. Resolve discrepancies in favor of the live public site.
|
||||||
3. Resolve discrepancies in favor of the live public site.
|
3. Record important visual details and identify genuine shared patterns.
|
||||||
4. Record important visual details and identify genuine shared patterns.
|
4. Implement the page or component in maintainable Astro code.
|
||||||
5. Implement the page or component in maintainable Astro code.
|
5. Compare the complete rendered page with the live public site at representative
|
||||||
6. Compare the complete rendered page with the live public site at representative
|
|
||||||
desktop and mobile viewport widths.
|
desktop and mobile viewport widths.
|
||||||
7. Fix material visual differences before marking it complete.
|
6. Fix material visual differences before marking it complete.
|
||||||
|
|
||||||
Document intentional visual deviations and their reasons in
|
Document intentional visual deviations and their reasons in
|
||||||
`reports/migration-summary.md`.
|
`reports/migration-summary.md`.
|
||||||
@@ -412,9 +389,6 @@ www/
|
|||||||
generate-redirects.mjs
|
generate-redirects.mjs
|
||||||
generate-sitemap.mjs
|
generate-sitemap.mjs
|
||||||
|
|
||||||
original/
|
|
||||||
README.md
|
|
||||||
|
|
||||||
reports/
|
reports/
|
||||||
url-inventory.csv
|
url-inventory.csv
|
||||||
asset-inventory.csv
|
asset-inventory.csv
|
||||||
@@ -427,17 +401,10 @@ www/
|
|||||||
migration-summary.md
|
migration-summary.md
|
||||||
```
|
```
|
||||||
|
|
||||||
The `original/README.md` file should explain that the raw source mirror lives outside the Astro project at:
|
|
||||||
|
|
||||||
```txt
|
|
||||||
../www.azinstitute4autism.com
|
|
||||||
```
|
|
||||||
|
|
||||||
Do not duplicate the entire raw mirror inside `./www` unless there is a specific reason.
|
|
||||||
|
|
||||||
## Initial inspection
|
## Initial inspection
|
||||||
|
|
||||||
Before creating or modifying files, inspect the mirror.
|
Before creating or modifying files, inspect the live public site and current
|
||||||
|
project sources.
|
||||||
|
|
||||||
Look for:
|
Look for:
|
||||||
|
|
||||||
@@ -687,9 +654,8 @@ src/styles/rtl.css
|
|||||||
src/styles/global.css
|
src/styles/global.css
|
||||||
```
|
```
|
||||||
|
|
||||||
Extract the current site's visual language from the live public site, using the
|
Extract the current site's visual language from the live public site. Tokens
|
||||||
mirrored CSS and HTML as a convenient local aid after checking for discrepancies.
|
must encode source values; they must not introduce a replacement visual
|
||||||
Tokens must encode source values; they must not introduce a replacement visual
|
|
||||||
system.
|
system.
|
||||||
|
|
||||||
Use design tokens such as:
|
Use design tokens such as:
|
||||||
@@ -837,7 +803,7 @@ It should support:
|
|||||||
- hreflang links where translation relationships are known
|
- hreflang links where translation relationships are known
|
||||||
- JSON-LD/schema when extracted
|
- JSON-LD/schema when extracted
|
||||||
|
|
||||||
Preserve metadata from the mirror wherever possible.
|
Preserve metadata from the live site wherever possible.
|
||||||
|
|
||||||
Generate:
|
Generate:
|
||||||
|
|
||||||
@@ -906,7 +872,7 @@ tools/generate-sitemap.mjs
|
|||||||
|
|
||||||
This script should:
|
This script should:
|
||||||
|
|
||||||
- scan the mirror
|
- scan the available source and generated output
|
||||||
- identify HTML files
|
- identify HTML files
|
||||||
- infer URL paths
|
- infer URL paths
|
||||||
- identify page type
|
- identify page type
|
||||||
@@ -929,7 +895,7 @@ This script should:
|
|||||||
|
|
||||||
- attempt to crawl the live site if internet is available
|
- attempt to crawl the live site if internet is available
|
||||||
- discover URLs from sitemap and internal links
|
- discover URLs from sitemap and internal links
|
||||||
- compare discovered URLs against the mirror
|
- compare discovered URLs against the current site source and generated output
|
||||||
- document missing URLs/assets
|
- document missing URLs/assets
|
||||||
- avoid aggressive crawling
|
- avoid aggressive crawling
|
||||||
- respect the scope of `www.azinstitute4autism.com`
|
- respect the scope of `www.azinstitute4autism.com`
|
||||||
@@ -1165,7 +1131,6 @@ www/README.md
|
|||||||
It should explain:
|
It should explain:
|
||||||
|
|
||||||
- what the project is
|
- what the project is
|
||||||
- where the raw mirror lives
|
|
||||||
- how the migration was performed
|
- how the migration was performed
|
||||||
- how to install dependencies
|
- how to install dependencies
|
||||||
- how to run local dev
|
- how to run local dev
|
||||||
@@ -1241,7 +1206,7 @@ Proceed methodically:
|
|||||||
2. Read `CLAUDE.md`, if using Claude Code.
|
2. Read `CLAUDE.md`, if using Claude Code.
|
||||||
3. Read this `MIGRATION_BRIEF.md`.
|
3. Read this `MIGRATION_BRIEF.md`.
|
||||||
4. Inspect the live public site.
|
4. Inspect the live public site.
|
||||||
5. Inspect `./www.azinstitute4autism.com` and identify relevant discrepancies.
|
5. Inspect the relevant live public site pages and identify discrepancies.
|
||||||
6. Summarize a concise implementation plan.
|
6. Summarize a concise implementation plan.
|
||||||
7. Scaffold Astro in `./www`.
|
7. Scaffold Astro in `./www`.
|
||||||
8. Build extraction/reporting scripts.
|
8. Build extraction/reporting scripts.
|
||||||
|
|||||||
+1
-1
@@ -9,7 +9,7 @@ if [[ "${1:-}" == "exec" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
exec codex \
|
exec codex \
|
||||||
--profile-v2 azi4a2-autonomous \
|
--profile azi4a2-autonomous \
|
||||||
--strict-config \
|
--strict-config \
|
||||||
--config 'approval_policy="never"' \
|
--config 'approval_policy="never"' \
|
||||||
--config 'mcp_servers.playwright.default_tools_approval_mode="approve"' \
|
--config 'mcp_servers.playwright.default_tools_approval_mode="approve"' \
|
||||||
|
|||||||
+1
-50
@@ -1,8 +1,7 @@
|
|||||||
# Arizona Institute for Autism Astro Site
|
# Arizona Institute for Autism Astro Site
|
||||||
|
|
||||||
Static Astro + TypeScript migration of the public Arizona Institute for Autism
|
Static Astro + TypeScript migration of the public Arizona Institute for Autism
|
||||||
website. The read-only source mirror is located at
|
website.
|
||||||
`../www.azinstitute4autism.com`.
|
|
||||||
|
|
||||||
## Quick Start
|
## Quick Start
|
||||||
|
|
||||||
@@ -23,9 +22,6 @@ http://localhost:4321
|
|||||||
The development server watches source files and refreshes the browser after
|
The development server watches source files and refreshes the browser after
|
||||||
edits. Stop it with `Ctrl+C`.
|
edits. Stop it with `Ctrl+C`.
|
||||||
|
|
||||||
Do **not** run `npm run extract` during normal editing. Extraction regenerates
|
|
||||||
migrated Markdown from the raw mirror and can overwrite editorial changes.
|
|
||||||
|
|
||||||
## Environment Setup
|
## Environment Setup
|
||||||
|
|
||||||
Requirements:
|
Requirements:
|
||||||
@@ -322,51 +318,6 @@ Edit the component's `label`, `heading`, and `items` data in the post. Keep
|
|||||||
answer. Shared FAQ markup, styling, interaction, and schema generation live in
|
answer. Shared FAQ markup, styling, interaction, and schema generation live in
|
||||||
`src/components/FAQAccordion.astro`.
|
`src/components/FAQAccordion.astro`.
|
||||||
|
|
||||||
## Mirror Extraction Workflow
|
|
||||||
|
|
||||||
The mirror is read-only source material. Never modify:
|
|
||||||
|
|
||||||
```txt
|
|
||||||
../www.azinstitute4autism.com
|
|
||||||
```
|
|
||||||
|
|
||||||
Only rerun extraction when intentionally refreshing migrated content from the
|
|
||||||
mirror. Commit or back up editorial changes first.
|
|
||||||
|
|
||||||
Dependency-free extraction:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm run extract
|
|
||||||
```
|
|
||||||
|
|
||||||
Full Cheerio/Turndown extraction:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm run extract:full
|
|
||||||
```
|
|
||||||
|
|
||||||
After extraction:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm run extract:blog-footers
|
|
||||||
npm run generate:sitemap
|
|
||||||
npm run generate:redirects
|
|
||||||
npm run build
|
|
||||||
npm run audit:links
|
|
||||||
npm run audit:images
|
|
||||||
npm run audit:blog
|
|
||||||
```
|
|
||||||
|
|
||||||
Extraction regenerates content files, copied assets, and inventories. Review
|
|
||||||
the complete Git diff before accepting it. Extraction may recreate FAQ-bearing
|
|
||||||
posts and CTA-bearing pages as Markdown; restore their `FAQAccordion` and
|
|
||||||
`Button` MDX blocks before accepting the result. `npm run audit:blog` reports
|
|
||||||
plain Markdown FAQ sections.
|
|
||||||
|
|
||||||
`npm run extract:blog-footers` preserves the extracted previous/next and
|
|
||||||
similar-post relationships in `src/data/blog-footers.json`, then removes those
|
|
||||||
footer fragments from article prose so `BlogPostFooter.astro` can render them.
|
|
||||||
|
|
||||||
## Reports And Utilities
|
## Reports And Utilities
|
||||||
|
|
||||||
Migration reports are stored in `reports/`.
|
Migration reports are stored in `reports/`.
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
# Raw Source Mirror
|
|
||||||
|
|
||||||
The read-only wget mirror used for this migration lives outside this Astro
|
|
||||||
project at:
|
|
||||||
|
|
||||||
```txt
|
|
||||||
../www.azinstitute4autism.com
|
|
||||||
```
|
|
||||||
|
|
||||||
Run `npm run extract` to regenerate content and inventories from that source.
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 58 KiB |
@@ -1,10 +1,14 @@
|
|||||||
---
|
---
|
||||||
interface Props {
|
interface Props {
|
||||||
href: string;
|
href?: string;
|
||||||
variant?: 'filled' | 'outlined' | 'light';
|
variant?: 'filled' | 'outlined' | 'light';
|
||||||
size?: 'default' | 'small';
|
size?: 'default' | 'small';
|
||||||
|
center?: boolean;
|
||||||
target?: '_blank' | '_self';
|
target?: '_blank' | '_self';
|
||||||
rel?: string;
|
rel?: string;
|
||||||
|
type?: 'submit' | 'button' | 'reset';
|
||||||
|
disabled?: boolean;
|
||||||
|
'aria-describedby'?: string;
|
||||||
class?: string;
|
class?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -12,20 +16,28 @@ const {
|
|||||||
href,
|
href,
|
||||||
variant = 'filled',
|
variant = 'filled',
|
||||||
size = 'default',
|
size = 'default',
|
||||||
|
center = false,
|
||||||
target,
|
target,
|
||||||
rel = target === '_blank' ? 'noopener noreferrer' : undefined,
|
rel = target === '_blank' ? 'noopener noreferrer' : undefined,
|
||||||
|
type,
|
||||||
|
disabled,
|
||||||
|
'aria-describedby': ariaDescribedby,
|
||||||
class: className
|
class: className
|
||||||
} = Astro.props;
|
} = Astro.props;
|
||||||
|
|
||||||
|
const classes = [
|
||||||
|
'content-button',
|
||||||
|
`content-button--${variant}`,
|
||||||
|
{ 'content-button--small': size === 'small', 'content-button--center': center },
|
||||||
|
className
|
||||||
|
];
|
||||||
---
|
---
|
||||||
|
|
||||||
<a
|
{href ? (
|
||||||
class:list={['content-button', `content-button--${variant}`, { 'content-button--small': size === 'small' }, className]}
|
<a class:list={classes} href={href} target={target} rel={rel}><slot /></a>
|
||||||
href={href}
|
) : (
|
||||||
target={target}
|
<button class:list={classes} type={type} disabled={disabled} aria-describedby={ariaDescribedby}><slot /></button>
|
||||||
rel={rel}
|
)}
|
||||||
>
|
|
||||||
<slot />
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.content-button {
|
.content-button {
|
||||||
@@ -36,8 +48,9 @@ const {
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
padding: .8rem 1.2rem;
|
padding: .65rem 1.2rem;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
transition: .3s linear all;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-button:hover,
|
.content-button:hover,
|
||||||
@@ -65,6 +78,16 @@ const {
|
|||||||
|
|
||||||
.content-button--small {
|
.content-button--small {
|
||||||
font-size: .9rem;
|
font-size: .9rem;
|
||||||
padding: .5rem 1rem;
|
}
|
||||||
|
|
||||||
|
.content-button--center {
|
||||||
|
margin-block: 2.5rem;
|
||||||
|
margin-inline-start: 50%;
|
||||||
|
translate: -50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
button.content-button {
|
||||||
|
cursor: pointer;
|
||||||
|
font: inherit;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
interface Props {
|
||||||
|
email: string;
|
||||||
|
obfuscatedText?: string;
|
||||||
|
class?: string;
|
||||||
|
id?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const {
|
||||||
|
email,
|
||||||
|
obfuscatedText = email,
|
||||||
|
class: className,
|
||||||
|
id
|
||||||
|
} = Astro.props;
|
||||||
|
|
||||||
|
const spanId = id ?? `email-obfuscation-${Math.random().toString(36).slice(2, 10)}`;
|
||||||
|
---
|
||||||
|
|
||||||
|
<span id={spanId} class={className}>{obfuscatedText}</span><script type="text/javascript" define:vars={{ email, spanId }}>
|
||||||
|
(() => {
|
||||||
|
const emailSpan = document.getElementById(spanId);
|
||||||
|
|
||||||
|
if (!emailSpan) return;
|
||||||
|
|
||||||
|
const link = document.createElement('a');
|
||||||
|
link.href = `mailto:${email}`;
|
||||||
|
link.textContent = email;
|
||||||
|
|
||||||
|
emailSpan.textContent = '';
|
||||||
|
emailSpan.appendChild(link);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
---
|
---
|
||||||
|
import Button from './Button.astro';
|
||||||
const { title = 'Schedule Your Free Consultation', showBackground = false } = Astro.props;
|
const { title = 'Schedule Your Free Consultation', showBackground = false } = Astro.props;
|
||||||
---
|
---
|
||||||
<section class:list={['form-section', { 'form-section-background': showBackground }]} aria-labelledby="form-title">
|
<section class:list={['form-section', { 'form-section-background': showBackground }]} aria-labelledby="form-title">
|
||||||
@@ -12,7 +13,7 @@ const { title = 'Schedule Your Free Consultation', showBackground = false } = As
|
|||||||
<label>Phone<input type="tel" name="phone" autocomplete="tel" /></label>
|
<label>Phone<input type="tel" name="phone" autocomplete="tel" /></label>
|
||||||
<label>Service of interest<select name="service"><option>ABA Therapy</option><option>Autism Evaluation</option><option>Learner Social Club</option><option>Other</option></select></label>
|
<label>Service of interest<select name="service"><option>ABA Therapy</option><option>Autism Evaluation</option><option>Learner Social Club</option><option>Other</option></select></label>
|
||||||
<label>How can we help?<textarea name="message" rows="5"></textarea></label>
|
<label>How can we help?<textarea name="message" rows="5"></textarea></label>
|
||||||
<button class="button" type="submit" disabled aria-describedby="form-note">Submit</button>
|
<Button type="submit" disabled aria-describedby="form-note">Submit</Button>
|
||||||
<p id="form-note" class="form-note">Online submission is not yet connected. Please call (480) 687-7099.</p>
|
<p id="form-note" class="form-note">Online submission is not yet connected. Please call (480) 687-7099.</p>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
---
|
---
|
||||||
|
import Button from './Button.astro';
|
||||||
import LanguageSwitcher from './LanguageSwitcher.astro';
|
import LanguageSwitcher from './LanguageSwitcher.astro';
|
||||||
import MainNav from './MainNav.astro';
|
import MainNav from './MainNav.astro';
|
||||||
import MobileNav from './MobileNav.astro';
|
import MobileNav from './MobileNav.astro';
|
||||||
@@ -21,7 +22,7 @@ const utility = lang === 'es'
|
|||||||
<MainNav lang={lang} />
|
<MainNav lang={lang} />
|
||||||
<MobileNav lang={lang} />
|
<MobileNav lang={lang} />
|
||||||
<LanguageSwitcher />
|
<LanguageSwitcher />
|
||||||
<a class="button button-small" href="/tour">Tour AIA</a>
|
<Button href="/tour" size="small">Tour AIA</Button>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
@@ -33,7 +34,7 @@ const utility = lang === 'es'
|
|||||||
.header-inner { align-items: center; display: flex; gap: 1.4rem; min-height: 110px; }
|
.header-inner { align-items: center; display: flex; gap: 1.4rem; min-height: 110px; }
|
||||||
.brand img { width: 150px; }
|
.brand img { width: 150px; }
|
||||||
@media (max-width: 950px) {
|
@media (max-width: 950px) {
|
||||||
.header-inner > .button { display: none; }
|
.header-inner > :global(.content-button) { display: none; }
|
||||||
}
|
}
|
||||||
@media (max-width: 760px) {
|
@media (max-width: 760px) {
|
||||||
.utility-inner { justify-content: center; }
|
.utility-inner { justify-content: center; }
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
---
|
---
|
||||||
|
import Button from '../Button.astro';
|
||||||
import type { FinancialHelpSection } from '../../types/home-sections';
|
import type { FinancialHelpSection } from '../../types/home-sections';
|
||||||
interface Props { section: FinancialHelpSection }
|
interface Props { section: FinancialHelpSection }
|
||||||
const { section } = Astro.props;
|
const { section } = Astro.props;
|
||||||
@@ -7,6 +8,6 @@ const { section } = Astro.props;
|
|||||||
<div class="container">
|
<div class="container">
|
||||||
<h2>{section.heading}</h2>
|
<h2>{section.heading}</h2>
|
||||||
<p>{section.body}</p>
|
<p>{section.body}</p>
|
||||||
<a class="button" href={section.cta.href}>{section.cta.label}</a>
|
<Button href={section.cta.href}>{section.cta.label}</Button>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
---
|
---
|
||||||
|
import Button from '../Button.astro';
|
||||||
import type { HeroSection } from '../../types/home-sections';
|
import type { HeroSection } from '../../types/home-sections';
|
||||||
interface Props { section: HeroSection }
|
interface Props { section: HeroSection }
|
||||||
const { section } = Astro.props;
|
const { section } = Astro.props;
|
||||||
@@ -9,7 +10,7 @@ const { section } = Astro.props;
|
|||||||
<p class="eyebrow">{section.eyebrow}</p>
|
<p class="eyebrow">{section.eyebrow}</p>
|
||||||
<h1 set:html={section.heading} />
|
<h1 set:html={section.heading} />
|
||||||
<p>{section.body}</p>
|
<p>{section.body}</p>
|
||||||
<a class="button" href={section.cta.href}>{section.cta.label}</a>
|
<Button href={section.cta.href}>{section.cta.label}</Button>
|
||||||
</div>
|
</div>
|
||||||
<img src={`/assets/images/${section.image}`} alt={section.imageAlt} loading="eager" />
|
<img src={`/assets/images/${section.image}`} alt={section.imageAlt} loading="eager" />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
---
|
---
|
||||||
|
import Button from '../Button.astro';
|
||||||
import type { ServicesIntroSection } from '../../types/home-sections';
|
import type { ServicesIntroSection } from '../../types/home-sections';
|
||||||
interface Props { section: ServicesIntroSection }
|
interface Props { section: ServicesIntroSection }
|
||||||
const { section } = Astro.props;
|
const { section } = Astro.props;
|
||||||
@@ -31,7 +32,7 @@ const { section } = Astro.props;
|
|||||||
<div>
|
<div>
|
||||||
<h2 class="no-balance">{section.commitmentsHeading}</h2>
|
<h2 class="no-balance">{section.commitmentsHeading}</h2>
|
||||||
<ul class="source-list two-column-list">{section.commitments.map((item) => <li>{item}</li>)}</ul>
|
<ul class="source-list two-column-list">{section.commitments.map((item) => <li>{item}</li>)}</ul>
|
||||||
<a class="button" href={section.commitmentsCta.href}>{section.commitmentsCta.label}</a>
|
<Button href={section.commitmentsCta.href}>{section.commitmentsCta.label}</Button>
|
||||||
</div>
|
</div>
|
||||||
<img class="gear-photo gear-photo-right" src={`/assets/images/${section.commitmentsImage}`} alt={section.commitmentsImageAlt} />
|
<img class="gear-photo gear-photo-right" src={`/assets/images/${section.commitmentsImage}`} alt={section.commitmentsImageAlt} />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
---
|
---
|
||||||
|
import Button from '../Button.astro';
|
||||||
const indeedUrl = 'https://www.indeed.com/cmp/Arizona-Institute-For-Autism/jobs';
|
const indeedUrl = 'https://www.indeed.com/cmp/Arizona-Institute-For-Autism/jobs';
|
||||||
|
|
||||||
const benefits = [
|
const benefits = [
|
||||||
@@ -41,7 +42,7 @@ const careerCards = [
|
|||||||
<h2>Join the AIA Team</h2>
|
<h2>Join the AIA Team</h2>
|
||||||
<p>Apply to join the Arizona Institute for Autism (AIA) team today. We are on a mission to improve special education and strengthen communities throughout Arizona.</p>
|
<p>Apply to join the Arizona Institute for Autism (AIA) team today. We are on a mission to improve special education and strengthen communities throughout Arizona.</p>
|
||||||
<p>Our talented and passionate employees are a critical piece to the high-quality Autism services we provide along with our commitment to behavioral health, school solutions, and community outreach.</p>
|
<p>Our talented and passionate employees are a critical piece to the high-quality Autism services we provide along with our commitment to behavioral health, school solutions, and community outreach.</p>
|
||||||
<a class="button button-center" href={indeedUrl} target="_blank" rel="noopener noreferrer">View Open Positions</a>
|
<Button href={indeedUrl} target="_blank" center>View Open Positions</Button>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Our Benefits -->
|
<!-- Our Benefits -->
|
||||||
@@ -129,7 +130,7 @@ const careerCards = [
|
|||||||
<img src="/assets/images/logo-BACB.png" alt="BACB logo" loading="lazy" />
|
<img src="/assets/images/logo-BACB.png" alt="BACB logo" loading="lazy" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a class="button button-center" href={indeedUrl} target="_blank" rel="noopener noreferrer">View Open Positions</a>
|
<Button href={indeedUrl} target="_blank" center>View Open Positions</Button>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@@ -175,7 +176,7 @@ const careerCards = [
|
|||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
<a class="button button-center" href={indeedUrl} target="_blank" rel="noopener noreferrer">View Open Positions</a>
|
<Button href={indeedUrl} target="_blank" center>View Open Positions</Button>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
---
|
---
|
||||||
|
import Button from '../Button.astro';
|
||||||
---
|
---
|
||||||
<article class="faq-page">
|
<article class="faq-page">
|
||||||
<div class="faq-source container source-page">
|
<div class="faq-source container source-page">
|
||||||
@@ -48,7 +49,7 @@
|
|||||||
<div class="container-narrow">
|
<div class="container-narrow">
|
||||||
<h2>Need Support in Getting an Autism Diagnosis?</h2>
|
<h2>Need Support in Getting an Autism Diagnosis?</h2>
|
||||||
<p>To meet diagnostic criteria for ASD, a child must have persistent deficits in each of three areas of social communication and interaction plus at least two of four types of restricted repetitive behaviors. Consult with a Client Advocate today to receive individual and family support!</p>
|
<p>To meet diagnostic criteria for ASD, a child must have persistent deficits in each of three areas of social communication and interaction plus at least two of four types of restricted repetitive behaviors. Consult with a Client Advocate today to receive individual and family support!</p>
|
||||||
<a class="button button-center" href="/client-consultation">Request an Appointment</a>
|
<Button href="/client-consultation" center>Request an Appointment</Button>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</article>
|
</article>
|
||||||
@@ -583,7 +584,7 @@
|
|||||||
margin-bottom: .75rem;
|
margin-bottom: .75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.faq-cta-secondary .button {
|
.faq-cta-secondary :global(.content-button) {
|
||||||
margin-top: 1.5rem;
|
margin-top: 1.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
---
|
---
|
||||||
|
import Button from '../Button.astro';
|
||||||
|
import EmailObfuscation from '../EmailObfuscation.astro';
|
||||||
const groups = [
|
const groups = [
|
||||||
{
|
{
|
||||||
title: 'Board Certified Behavioral Analysts & Psychologists',
|
title: 'Board Certified Behavioral Analysts & Psychologists',
|
||||||
@@ -67,8 +69,8 @@ const groups = [
|
|||||||
<p class="eyebrow">Join the AIA Team!</p>
|
<p class="eyebrow">Join the AIA Team!</p>
|
||||||
<h2>Employment Opportunities</h2>
|
<h2>Employment Opportunities</h2>
|
||||||
<p>Apply online to join the AIA team! At the Arizona Institute for Autism (AIA) we are on a mission to improve special education and strengthen communities throughout Arizona.</p>
|
<p>Apply online to join the AIA team! At the Arizona Institute for Autism (AIA) we are on a mission to improve special education and strengthen communities throughout Arizona.</p>
|
||||||
<p>Our talented and passionate employees are a critical piece to the high-quality ABA therapy we provide along with our commitment to behavioral health, school solutions, and community outreach. For questions regarding open positions, please contact us at <a href="mailto:hr@azinstitute4autism.com">hr@azinstitute4autism.com</a>.</p>
|
<p>Our talented and passionate employees are a critical piece to the high-quality ABA therapy we provide along with our commitment to behavioral health, school solutions, and community outreach. For questions regarding open positions, please contact us at <EmailObfuscation email="hr@azinstitute4autism.com" obfuscatedText="hr [at] abaclinicaz [dot] com" class="team-email" />.</p>
|
||||||
<a class="button" href="/careers">View Open Positions</a>
|
<Button href="/careers">View Open Positions</Button>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</article>
|
</article>
|
||||||
@@ -87,7 +89,8 @@ const groups = [
|
|||||||
.team-member h3 { font-family: var(--font-body); font-size: .8rem; margin-bottom: 0; }
|
.team-member h3 { font-family: var(--font-body); font-size: .8rem; margin-bottom: 0; }
|
||||||
.team-member p { font-size: .85rem; margin: 0; }
|
.team-member p { font-size: .85rem; margin: 0; }
|
||||||
.team-careers { padding-block: 5rem; }
|
.team-careers { padding-block: 5rem; }
|
||||||
.team-careers .button { margin-left: 50%; margin-top: 4rem; translate: -50%; }
|
.team-careers :global(.content-button) { margin-left: 50%; margin-top: 4rem; translate: -50%; }
|
||||||
|
.team-email { font-weight: 700; }
|
||||||
@media (max-width: 950px) {
|
@media (max-width: 950px) {
|
||||||
.team-member { flex-basis: min(100%, 227px); }
|
.team-member { flex-basis: min(100%, 227px); }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ The Arizona Institute for Autism offers a variety of evidence-based, clinical se
|
|||||||
|
|
||||||
Our ABA Therapy programs address the comprehensive needs of each learner, equipping children with the skills necessary to become independent learners.
|
Our ABA Therapy programs address the comprehensive needs of each learner, equipping children with the skills necessary to become independent learners.
|
||||||
|
|
||||||
### Services We Offer
|
### Behavioral Services We Offer
|
||||||
|
|
||||||
Individual Learning
|
<p class="eyebrow">Individual Learning</p>
|
||||||
|
|
||||||
#### ABA Therapy 1:1 Program
|
#### ABA Therapy 1:1 Program
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ The ABA Therapy 1:1 program, designed for children aged 2 to 8 years, adopts an
|
|||||||
|
|
||||||
Our ABA therapy focuses on improving socially significant behaviors by using positive reinforcement, systematic teaching, and data-driven methods. AIA Clinicians focus on tailoring our services to accommodate the unique neurodevelopmental profiles of each learner.
|
Our ABA therapy focuses on improving socially significant behaviors by using positive reinforcement, systematic teaching, and data-driven methods. AIA Clinicians focus on tailoring our services to accommodate the unique neurodevelopmental profiles of each learner.
|
||||||
|
|
||||||
Group Learning
|
<p class="eyebrow">Group Learning</p>
|
||||||
|
|
||||||
#### ABA Therapy 1:2 Academic Readiness Program
|
#### ABA Therapy 1:2 Academic Readiness Program
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ The ABA Therapy 1:2 Academic Readiness Program is specifically designed for chil
|
|||||||
|
|
||||||
The primary developmental milestones emphasized in this program include social, communication, cognitive, social-emotional, executive functioning, and motor skills. Throughout the Academic Readiness Program, your child will engage in a variety of structured electives such as speech therapy, recreational therapy, and music therapy. These electives, including circle time, arts and crafts, music, play, and other group interactions, that are designed to support skills development in these key areas.
|
The primary developmental milestones emphasized in this program include social, communication, cognitive, social-emotional, executive functioning, and motor skills. Throughout the Academic Readiness Program, your child will engage in a variety of structured electives such as speech therapy, recreational therapy, and music therapy. These electives, including circle time, arts and crafts, music, play, and other group interactions, that are designed to support skills development in these key areas.
|
||||||
|
|
||||||
Family Education
|
<p class="eyebrow">Family Education</p>
|
||||||
|
|
||||||
#### Parent Consultation Program
|
#### Parent Consultation Program
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ Our goal is to empower families with the knowledge, tools, and support they need
|
|||||||
|
|
||||||
These consultations provide parents with personalized guidance, training, and strategies tailored to their child’s unique needs.
|
These consultations provide parents with personalized guidance, training, and strategies tailored to their child’s unique needs.
|
||||||
|
|
||||||
<Button href="https://form.jotform.com/231638510219149" target="_blank">Make an Appointment</Button>
|
<Button href="https://form.jotform.com/231638510219149" target="_blank" center>Make an Appointment</Button>
|
||||||
|
|
||||||
## About Rula Diab, Chief Clinical Director, BCBA, LBA
|
## About Rula Diab, Chief Clinical Director, BCBA, LBA
|
||||||
|
|
||||||
|
|||||||
@@ -50,4 +50,4 @@ ADOS is a structured evaluation tool used by our specialists to assess behaviors
|
|||||||
|
|
||||||
This evaluation involves observing how your child interacts with various play-based social scenarios. For younger children, this may include activities like playing with blocks or having a snack, while older children who communicate verbally may participate in conversations about daily activities, such as attending school.
|
This evaluation involves observing how your child interacts with various play-based social scenarios. For younger children, this may include activities like playing with blocks or having a snack, while older children who communicate verbally may participate in conversations about daily activities, such as attending school.
|
||||||
|
|
||||||
<Button href="https://form.jotform.com/231638510219149" target="_blank">Make an Appointment</Button>
|
<Button href="https://form.jotform.com/231638510219149" target="_blank" center>Make an Appointment</Button>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ Apply to join the Arizona Institute for Autism (AIA) team today. We are on a mis
|
|||||||
|
|
||||||
Our talented and passionate employees are a critical piece to the high-quality Autism services we provide along with our commitment to behavioral health, school solutions, and community outreach.
|
Our talented and passionate employees are a critical piece to the high-quality Autism services we provide along with our commitment to behavioral health, school solutions, and community outreach.
|
||||||
|
|
||||||
<Button href="https://www.indeed.com/cmp/Arizona-Institute-For-Autism/jobs" target="_blank">View Open Positions</Button>
|
<Button href="https://www.indeed.com/cmp/Arizona-Institute-For-Autism/jobs" target="_blank" center>View Open Positions</Button>
|
||||||
|
|
||||||
### Our Benefits
|
### Our Benefits
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ Work someone you love. Begin your journey with Arizona's leading ABA Integrated
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
<Button href="https://www.indeed.com/cmp/Arizona-Institute-For-Autism/jobs" target="_blank">View Open Positions</Button>
|
<Button href="https://www.indeed.com/cmp/Arizona-Institute-For-Autism/jobs" target="_blank" center>View Open Positions</Button>
|
||||||
|
|
||||||
## Benefits of Working at Arizona Institute for Autism
|
## Benefits of Working at Arizona Institute for Autism
|
||||||
|
|
||||||
@@ -170,4 +170,4 @@ Take a fresh and innovative approach as a member of the Corporate team. Take on
|
|||||||
|
|
||||||
Our specialty interns help shape the future of our center carefully curated clinical, operations, advocacy, people, and other departments.
|
Our specialty interns help shape the future of our center carefully curated clinical, operations, advocacy, people, and other departments.
|
||||||
|
|
||||||
<Button href="https://www.indeed.com/cmp/Arizona-Institute-For-Autism/jobs" target="_blank">View Open Positions</Button>
|
<Button href="https://www.indeed.com/cmp/Arizona-Institute-For-Autism/jobs" target="_blank" center>View Open Positions</Button>
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ draft: false
|
|||||||
---
|
---
|
||||||
|
|
||||||
import Button from '../../../components/Button.astro';
|
import Button from '../../../components/Button.astro';
|
||||||
|
import EmailObfuscation from '../../../components/EmailObfuscation.astro';
|
||||||
|
|
||||||
## Learner Social Club
|
## Learner Social Club
|
||||||
|
|
||||||
@@ -19,13 +20,9 @@ Every child needs opportunities to have fun, make friends, and build social conn
|
|||||||
Our integrative wellness enrichment services include:
|
Our integrative wellness enrichment services include:
|
||||||
|
|
||||||
- Music
|
- Music
|
||||||
|
|
||||||
- Art
|
- Art
|
||||||
|
|
||||||
- Games
|
- Games
|
||||||
|
|
||||||
- Dance
|
- Dance
|
||||||
|
|
||||||
- Recreational activities
|
- Recreational activities
|
||||||
|
|
||||||
These thoughtfully designed activities help nurture your learner’s mind and body, providing holistic wellness and saving you valuable time.
|
These thoughtfully designed activities help nurture your learner’s mind and body, providing holistic wellness and saving you valuable time.
|
||||||
@@ -35,11 +32,8 @@ These thoughtfully designed activities help nurture your learner’s mind and bo
|
|||||||
To ensure the best experience for your learner, please keep the following in mind:
|
To ensure the best experience for your learner, please keep the following in mind:
|
||||||
|
|
||||||
- Potty Training: Learners must be potty-trained before enrolling.
|
- Potty Training: Learners must be potty-trained before enrolling.
|
||||||
|
|
||||||
- Wipes: Pack wipes for your learner. These can be stored at our clinic.
|
- Wipes: Pack wipes for your learner. These can be stored at our clinic.
|
||||||
|
|
||||||
- Snack & Water: Send your learner with a snack and water. These items can also be stored on-site.
|
- Snack & Water: Send your learner with a snack and water. These items can also be stored on-site.
|
||||||
|
|
||||||
- Pause/Cancellation Notice: Please provide AIA staff with at least a 30-day notice if you plan to pause or cancel your Learner Social Club services.
|
- Pause/Cancellation Notice: Please provide AIA staff with at least a 30-day notice if you plan to pause or cancel your Learner Social Club services.
|
||||||
|
|
||||||
### Program Schedule & Ages Served
|
### Program Schedule & Ages Served
|
||||||
@@ -49,7 +43,6 @@ To ensure the best experience for your learner, please keep the following in min
|
|||||||
The Learner Social Club currently serves youth learners aged 8–17 years. Our flexible scheduling options currently include:
|
The Learner Social Club currently serves youth learners aged 8–17 years. Our flexible scheduling options currently include:
|
||||||
|
|
||||||
- 2 days/week (Monday, Wednesday): 4:00 PM – 6:00 PM
|
- 2 days/week (Monday, Wednesday): 4:00 PM – 6:00 PM
|
||||||
|
|
||||||
- 1 day/week (Wednesday only): 4:00 PM – 6:00 PM
|
- 1 day/week (Wednesday only): 4:00 PM – 6:00 PM
|
||||||
|
|
||||||
### Payment Information
|
### Payment Information
|
||||||
@@ -58,6 +51,6 @@ The Learner Social Club currently serves youth learners aged 8–17 years . Our
|
|||||||
|
|
||||||
Interested in Trying Out Our Program?
|
Interested in Trying Out Our Program?
|
||||||
|
|
||||||
Get a 1-Day Trial Pass by emailing us at info [at] azinstitute4autism [dot] com .
|
Get a 1-Day Trial Pass by emailing us at <EmailObfuscation email="info@azinstitute4autism.com" obfuscatedText="info [at] azinstitute4autism [dot] com" />.
|
||||||
|
|
||||||
<Button href="https://form.jotform.com/231638510219149" target="_blank">Enroll Now</Button>
|
<Button href="https://form.jotform.com/231638510219149" target="_blank" center>Enroll Now</Button>
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ draft: false
|
|||||||
---
|
---
|
||||||
|
|
||||||
import Button from '../../../components/Button.astro';
|
import Button from '../../../components/Button.astro';
|
||||||
|
import EmailObfuscation from '../../../components/EmailObfuscation.astro';
|
||||||
|
|
||||||
## Learner Social Club
|
## Learner Social Club
|
||||||
|
|
||||||
@@ -58,6 +59,6 @@ Learner Social Club actualmente atiende a jóvenes de 8 a 17 años . Nuestras op
|
|||||||
|
|
||||||
¿Le interesa probar nuestro programa?
|
¿Le interesa probar nuestro programa?
|
||||||
|
|
||||||
Obtenga un pase de prueba de 1 día enviándonos un correo electrónico a info [at] azinstitute4autism [dot] com .
|
Obtenga un pase de prueba de 1 día enviándonos un correo electrónico a <EmailObfuscation email="info@azinstitute4autism.com" obfuscatedText="info [at] azinstitute4autism [dot] com" />.
|
||||||
|
|
||||||
<Button href="https://form.jotform.com/231638510219149" target="_blank">Enroll Now</Button>
|
<Button href="https://form.jotform.com/231638510219149" target="_blank">Enroll Now</Button>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
.prose { padding-block: var(--space-xl); }
|
.prose { padding-block: var(--space-xl); }
|
||||||
.prose h2, .prose h3 { margin-top: 2em; }
|
.prose h2, .prose h3 { margin-top: 1.75em; }
|
||||||
.prose img { border-radius: var(--radius-md); margin-block: var(--space-lg); }
|
.prose img { border-radius: var(--radius-md); margin-block: var(--space-lg); }
|
||||||
.prose a { overflow-wrap: anywhere; text-decoration: none; }
|
.prose a { overflow-wrap: anywhere; text-decoration: none; }
|
||||||
.prose p a, .prose td a { color: var(--color-accent-strong); text-decoration: none; }
|
.prose p a, .prose td a { color: var(--color-accent-strong); text-decoration: none; }
|
||||||
|
|||||||
@@ -1,7 +1,3 @@
|
|||||||
.button { background: var(--color-accent); border: 2px solid var(--color-accent); border-radius: 4px; color: var(--color-primary); display: inline-block; padding: .65rem 1.2rem; text-decoration: none; transition: .3s linear all; }
|
|
||||||
.button:hover { background: transparent; border-color: var(--color-accent-strong); color: var(--color-primary); }
|
|
||||||
.button-small { font-size: .9rem; }
|
|
||||||
.button-light { background: white; color: var(--color-primary-dark); }
|
|
||||||
.card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); overflow: hidden; }
|
.card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); overflow: hidden; }
|
||||||
.card img { aspect-ratio: 16/10; object-fit: cover; width: 100%; }
|
.card img { aspect-ratio: 16/10; object-fit: cover; width: 100%; }
|
||||||
.card-body { padding: var(--space-lg); }
|
.card-body { padding: var(--space-lg); }
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ img { display: block; height: auto; max-width: 100%; }
|
|||||||
.section-tint, .page-header { background: var(--color-tint); }
|
.section-tint, .page-header { background: var(--color-tint); }
|
||||||
.section-heading { margin-bottom: var(--space-lg); max-width: 700px; }
|
.section-heading { margin-bottom: var(--space-lg); max-width: 700px; }
|
||||||
.split { align-items: center; display: flex; gap: var(--space-lg); justify-content: space-between; }
|
.split { align-items: center; display: flex; gap: var(--space-lg); justify-content: space-between; }
|
||||||
.button-center { margin-block: 2.5rem; margin-inline-start: 50%; translate: -50%; }
|
|
||||||
.card-grid { display: grid; gap: var(--space-lg); grid-template-columns: repeat(3, minmax(0, 1fr)); }
|
.card-grid { display: grid; gap: var(--space-lg); grid-template-columns: repeat(3, minmax(0, 1fr)); }
|
||||||
.skip-link { background: white; left: 1rem; padding: .75rem; position: fixed; top: -10rem; z-index: 100; }
|
.skip-link { background: white; left: 1rem; padding: .75rem; position: fixed; top: -10rem; z-index: 100; }
|
||||||
.skip-link:focus { top: 1rem; }
|
.skip-link:focus { top: 1rem; }
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.service-page > p > img, .service-page > img { float: right; margin: .5rem 0 1.5rem 2rem; max-height: 230px; max-width: 300px; object-fit: cover; }
|
.service-page > p > img, .service-page > img { float: right; margin: .5rem 0 0 2rem; max-height: 300px; max-width: 300px; object-fit: cover; }
|
||||||
.service-page h3 { font-size: 2rem; }
|
.service-page h3 { font-size: 2rem; }
|
||||||
@media (max-width: 700px) {
|
@media (max-width: 700px) {
|
||||||
.service-page > p > img, .service-page > img { float: none; margin: 1.5rem 0; max-width: 100%; width: 100%; }
|
.service-page > p > img, .service-page > img { float: none; margin: 1.5rem 0; max-width: 100%; width: 100%; }
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ h3 { font-size: clamp(1.8rem, 3.4vw, 2rem); }
|
|||||||
h4 { font-size: clamp(1.5rem, 3vw, 1.8rem); }
|
h4 { font-size: clamp(1.5rem, 3vw, 1.8rem); }
|
||||||
a, a:visited { color: var(--color-accent-strong); text-decoration: none; }
|
a, a:visited { color: var(--color-accent-strong); text-decoration: none; }
|
||||||
a:hover, a:active { color: var(--color-accent); }
|
a:hover, a:active { color: var(--color-accent); }
|
||||||
a.button { color: var(--color-primary) }
|
|
||||||
|
|
||||||
.eyebrow {
|
.eyebrow {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user