diff --git a/_includes/components/addons-section.html b/_includes/components/addons-section.html index c889c3ba..b46804ab 100644 --- a/_includes/components/addons-section.html +++ b/_includes/components/addons-section.html @@ -3,7 +3,7 @@
-

Enhance Your Order

+

Enhance Your Order{% include components/heading-anchor.html id="enhance-your-order" %}

Get your chips packaged and ready to test, or take home an entire wafer

@@ -11,6 +11,8 @@

Get your chips packaged and ready to test, or take home an
{% for addon in site.data.slots.addons %} + {% assign addon_id = addon.name | slugify %} + {% assign addon_learn_more_id = addon_id | prepend: 'learn-more-' %}
{% if addon.image %} @@ -19,14 +21,14 @@

Get your chips packaged and ready to test, or take home an {{ addon.name }}
-
Learn More
+
Learn More{% include components/heading-anchor.html id=addon_learn_more_id %}
{% endif %} Add-on -

{{ addon.name }}
+
{{ addon.name }}{% include components/heading-anchor.html id=addon_id %}
${{ addon.price | divided_by: 1000 }},{{ addon.price | modulo: 1000 | prepend: '000' | slice: -3, 3 }} diff --git a/_includes/components/countdown.html b/_includes/components/countdown.html index 03760cd3..2145ef25 100644 --- a/_includes/components/countdown.html +++ b/_includes/components/countdown.html @@ -10,7 +10,9 @@
-

Deadlines

+ {% comment %} The "Deadlines" heading links to the wrapper div's + id (its scroll target) rather than duplicating it. {% endcomment %} +

Deadlines{% include components/heading-anchor.html id="deadlines" %}

wafer.space {{ run.name }}

@@ -23,7 +25,8 @@

{% assign deadline = run.early_bird_deadline %}
-

{{ deadline.title | default: "Early Bird Deadline" }}

+ {% assign eb_deadline_id = deadline.title | default: "Early Bird Deadline" | slugify | prepend: "early-bird-" %} +

{{ deadline.title | default: "Early Bird Deadline" }}{% include components/heading-anchor.html id=eb_deadline_id %}

{% if deadline.subtitle %}

{{ deadline.subtitle }}

{% endif %}
@@ -96,7 +99,8 @@

{{ deadl {% assign deadline = run.campaign_deadline %}
-

{{ deadline.title | default: "Campaign Deadline" }}

+ {% assign campaign_deadline_id = deadline.title | default: "Campaign Deadline" | slugify | prepend: "campaign-" %} +

{{ deadline.title | default: "Campaign Deadline" }}{% include components/heading-anchor.html id=campaign_deadline_id %}

{% if deadline.subtitle %}

{{ deadline.subtitle }}

{% endif %}
@@ -176,7 +180,8 @@

{{ deadline.expi {% assign deadline = run.submission_deadline %}
-

{{ deadline.title | default: "Submission Deadline" }}

+ {% assign submission_deadline_id = deadline.title | default: "Submission Deadline" | slugify | prepend: "submission-" %} +

{{ deadline.title | default: "Submission Deadline" }}{% include components/heading-anchor.html id=submission_deadline_id %}

{% if deadline.subtitle %}

{{ deadline.subtitle }}

{% endif %}
@@ -251,7 +256,7 @@

{{ deadline.expired_message | default: 'Deadline p
-

Complete Timeline

+

Complete Timeline{% include components/heading-anchor.html id="complete-timeline" %}

diff --git a/_includes/components/cta-design-help.html b/_includes/components/cta-design-help.html index 49e1a13f..2df963ac 100644 --- a/_includes/components/cta-design-help.html +++ b/_includes/components/cta-design-help.html @@ -3,7 +3,7 @@
-

Ready to design your chip?

+

Ready to design your chip?{% include components/heading-anchor.html id="ready-to-design-your-chip" %}

Your design. Your silicon. From $4 per die.

@@ -12,7 +12,7 @@

Your design. Your silicon. From $4 per
-

Get Started

+

Get Started{% include components/heading-anchor.html id="cta-get-started" %}

  • @@ -47,7 +47,7 @@

    Get Started

    -

    Need Help?

    +

    Need Help?{% include components/heading-anchor.html id="need-help" %}

    Professional design services are available from independent consultants experienced with the GF180MCU process. Whether you need a full custom design, help with verification, or guidance on your first tapeout, experts are ready to assist. diff --git a/_includes/components/half-slot-banner.html b/_includes/components/half-slot-banner.html index b14083a2..4253edae 100644 --- a/_includes/components/half-slot-banner.html +++ b/_includes/components/half-slot-banner.html @@ -3,7 +3,7 @@

    -

    Half Slots Are Here!

    +

    Half Slots Are Here!{% include components/heading-anchor.html id="half-slots-are-here" %}

    Get 1,000 custom silicon dies from just $4 per die

    New half-width (0.5×1 slot) and half-height (1×0.5 slot) options — 1,000 dies for $4,000 with Early Bird pricing.

    See Half Slot Pricing diff --git a/_includes/components/heading-anchor.html b/_includes/components/heading-anchor.html new file mode 100644 index 00000000..3643a492 --- /dev/null +++ b/_includes/components/heading-anchor.html @@ -0,0 +1,20 @@ +{%- comment -%} + Renders a hover-revealed "#" permalink for a heading so it can be linked + directly via a URL fragment. + + Place it immediately before the heading's closing tag and pass the heading's + id: + +

    How it works{% include components/heading-anchor.html id="how-it-works" %}

    + + For dynamic / templated headings, slugify the text once and reuse it for both + the id and this include: + + {% assign hid = page.faq_area.sub_title | slugify %} +

    {{ page.faq_area.sub_title }}{% include components/heading-anchor.html id=hid %}

    + + Renders nothing when the supplied id is blank, so it is safe to use behind a + slugify that may produce an empty string. +{%- endcomment -%} +{%- assign anchor_id = include.id | strip -%} +{%- if anchor_id != "" -%}#{%- endif -%} diff --git a/_includes/components/run1-showcase.html b/_includes/components/run1-showcase.html index 12828c8f..6e2ed10b 100644 --- a/_includes/components/run1-showcase.html +++ b/_includes/components/run1-showcase.html @@ -5,7 +5,7 @@
    -

    Run 1: Many Designs on a Single Reticle

    +

    Run 1: Many Designs on a Single Reticle{% include components/heading-anchor.html id="run-1-many-designs" %}

    {{ run1.open_source_designs }} open-source designs from universities, startups, and hobbyists worldwide

    Silicon currently in fabrication — expected delivery late April 2026

    @@ -15,6 +15,9 @@

    {{ run1.open_source_designs }} open-source designs from un

@@ -151,7 +152,7 @@

Achieved Logic Density by Design

-

What fits in each slot?

+

What fits in each slot?{% include components/heading-anchor.html id="what-fits-in-each-slot" %}

Logic and memory capacity by slot type

@@ -160,7 +161,7 @@

Logic and memory capacity by slot type

-

Theoretical Logic Capacity (with default pad ring)

+

Theoretical Logic Capacity (with default pad ring){% include components/heading-anchor.html id="theoretical-logic-capacity" %}

@@ -198,7 +199,7 @@

Theoretical Logic Capacity (with default pa
-

SRAM Capacity

+

SRAM Capacity{% include components/heading-anchor.html id="sram-capacity" %}

diff --git a/_includes/components/slot-comparison-table.html b/_includes/components/slot-comparison-table.html index ca230a60..89911672 100644 --- a/_includes/components/slot-comparison-table.html +++ b/_includes/components/slot-comparison-table.html @@ -3,7 +3,7 @@
-

Slot Comparison

+

Slot Comparison{% include components/heading-anchor.html id="slot-comparison" %}

Choose the size that fits your design

diff --git a/_includes/design_help/provider.html b/_includes/design_help/provider.html index 09d157b2..3d8a2614 100644 --- a/_includes/design_help/provider.html +++ b/_includes/design_help/provider.html @@ -1,4 +1,4 @@ -
+
{% if include.provider.avatar %}
@@ -15,12 +15,16 @@ {% endif %}
+ {% comment %} Use the document's filename-based slug as the canonical + provider anchor (it previously lived on the wrapping box). {% endcomment %} + {% assign prov_id = include.provider.slug %} + {% assign prov_sub_id = include.provider.sub_title | strip_html | slugify %} {% if include.provider.website %} -

{{include.provider.title}}

+

{{include.provider.title}}{% include components/heading-anchor.html id=prov_id %}

{% else %} -

{{include.provider.title}}

+

{{include.provider.title}}{% include components/heading-anchor.html id=prov_id %}

{% endif %} -

{{include.provider.sub_title}}

+

{{include.provider.sub_title}}{% include components/heading-anchor.html id=prov_sub_id %}

{% if include.provider.content %}

{{include.provider.content | markdownify }}

{% endif %} diff --git a/_includes/layouts/header/page-title.html b/_includes/layouts/header/page-title.html new file mode 100644 index 00000000..a842f853 --- /dev/null +++ b/_includes/layouts/header/page-title.html @@ -0,0 +1,20 @@ +{% comment %} + Site-level override of the theme's layouts/header/page-title.html. + + Identical to the theme partial except that the page-title

carries an id + and a hover-revealed "#" permalink (via components/heading-anchor.html) so the + primary page heading can be linked directly. Keep this in sync with the theme + partial if the theme's markup changes. +{% endcomment %} +{%- if page.title -%}{%- assign page_title_text = page.title -%}{%- else -%}{%- assign page_title_text = page.page_header.title -%}{%- endif -%} +{%- assign page_title_id = page_title_text | strip_html | slugify -%} + +
+
+
+

{% if page.title %} {{page.title}} {% else %}{{page.page_header.title}} {% endif %}{% include components/heading-anchor.html id=page_title_id %}

+

{% if page.sub_title %} {{page.sub_title}} {% else %}{{page.page_header.sub_title}} {% endif %}

+
+ +
+ diff --git a/_includes/pricing-2col-slot.html b/_includes/pricing-2col-slot.html index 61d8a306..a049786e 100644 --- a/_includes/pricing-2col-slot.html +++ b/_includes/pricing-2col-slot.html @@ -4,6 +4,11 @@ {% if include.wrapper_class contains 'dark-wrapper' %}{% assign is_dark = true %}{% endif %} {% assign eb_deadline = site.data.runs.runs.gf180mcu_run_2.early_bird_deadline %} {% assign campaign_deadline = site.data.runs.runs.gf180mcu_run_2.campaign_deadline %} +{% comment %} This partial is included once per slot, so every heading id is + namespaced by the slot id to stay unique across the three slots. {% endcomment %} +{% assign slot_name_id = slot.name | slugify %} +{% assign slot_eb_id = slot.id | prepend: 'early-bird-slot-' %} +{% assign slot_std_id = slot.id | prepend: 'standard-slot-' %}
@@ -27,7 +32,7 @@ ${{ slot.per_die_early_bird }} / die

USD ${{ slot.early_bird_price | divided_by: 1000 }},{{ slot.early_bird_price | modulo: 1000 | prepend: '000' | slice: -3, 3 }}

-

Early Bird

+

Early Bird{% include components/heading-anchor.html id=slot_eb_id %}

{% if eb_deadline %}

@@ -55,7 +60,7 @@

Early Bird

${{ slot.per_die_normal }} / die

USD ${{ slot.normal_price | divided_by: 1000 }},{{ slot.normal_price | modulo: 1000 | prepend: '000' | slice: -3, 3 }}

-

Standard

+

Standard{% include components/heading-anchor.html id=slot_std_id %}

{% if campaign_deadline %}

@@ -82,11 +87,11 @@

Standard

-

+

{{ slot.name }} {% if slot.badge != "" %} {{ slot.badge }} - {% endif %} + {% endif %}{% include components/heading-anchor.html id=slot_name_id %}

{{ slot.short_name }} — {{ slot.quantity }} dies per slot

diff --git a/_includes/pricing.html b/_includes/pricing.html new file mode 100644 index 00000000..ad866f63 --- /dev/null +++ b/_includes/pricing.html @@ -0,0 +1,57 @@ +{% comment %} + Site-level override of the theme's _includes/pricing.html. + + Identical to the theme partial except that every heading carries an id and a + hover-revealed "#" permalink (via components/heading-anchor.html) so the + referral-program headings on free.html can be linked directly. Keep this in + sync with the theme partial if the theme's markup changes. +{% endcomment %} +
+
+ {% assign pricing_data = page.pricing_table %} + {% assign pricing_title_id = pricing_data.title | strip_html | slugify %} +
+
+

{{pricing_data.title}}{% include components/heading-anchor.html id=pricing_title_id %}

+

{{pricing_data.sub_title}}

+ +

{{pricing_data.description}}

+
+ {% if pricing_data.pricing_url %} + See All Prices + {% endif %} +
+ +
+
+
+
+
+ {% for pricing in pricing_data.plans %} + {% assign plan_id = pricing.title | slugify | prepend: 'plan-' %} +
+
+
+
+
${{pricing.monthly_price}} {{pricing.monthly_currency}}
+
+

{{pricing.title}}{% include components/heading-anchor.html id=plan_id %}

+
+
+
+ {% for features in pricing.features %} + + + + {% endfor %} +
{{features}}
+
+ +
+
+ {% endfor %} +

+
+
+
+

diff --git a/about.html b/about.html index 32d7213a..e861509a 100644 --- a/about.html +++ b/about.html @@ -75,7 +75,8 @@
{% if page.about_area.projects_number %} -

{{page.about_area.projects_number}}+

+ {% assign about_stat_id = page.about_area.project_tag | slugify %} +

{{page.about_area.projects_number}}+{% include components/heading-anchor.html id=about_stat_id %}

{% endif %} {% if page.about_area.project_tag %}

{{page.about_area.project_tag}}

@@ -92,7 +93,8 @@

{{page.about_area.projects_number}}+

{% if page.about_area.title %} -

{{ page.about_area.title }}

+ {% assign about_title_id = page.about_area.title | strip_html | slugify %} +

{{ page.about_area.title }}{% include components/heading-anchor.html id=about_title_id %}

{% endif %} {% if page.about_area.sub_title %}

{{page.about_area.sub_title}}

@@ -123,7 +125,8 @@

{{ page.about_area.title }}

-

{{page.video_area.title}}

+ {% assign video_title_id = page.video_area.title | strip_html | slugify %} +

{{page.video_area.title}}{% include components/heading-anchor.html id=video_title_id %}

{{page.video_area.sub_title}}