A Longer Example Card Heading
This description contains a little more placeholder text than the descriptions in the other cards.
Use the OTC card component to group related information, links, contacts, or calls to action. Cards use a base class with optional grid, surface, accent, alignment, and content modifiers.
The production CSS for this component is maintained in the shared OTC Shared Component CSS component. Styles used only to present examples on this reference page are kept separate from the production component CSS.
Place one or more cards inside an otc-card-grid. Add a grid modifier when the cards should display in two or three columns on larger screens.
<div class="otc-card-grid otc-card-grid--3">
<section class="otc-card">
<h3 class="otc-card__title">Card heading</h3>
<p>Card content goes here.</p>
</section>
</div>
| Class | Purpose |
|---|---|
otc-card-grid |
Required grid wrapper for one or more cards. |
otc-card-grid--2 |
Displays cards in two columns on larger screens. |
otc-card-grid--3 |
Displays cards in three columns on larger screens. |
otc-card-grid--aligned |
Aligns corresponding title, body, and link rows across neighboring cards. Cards using this option must follow the aligned-card structure shown below. |
Two- and three-column grids automatically become one column on smaller screens.
| Class | Purpose |
|---|---|
otc-card |
Required base card class. Provides padding, a border, and rounded corners. |
otc-card--surface |
Adds the light-gray surface background. |
otc-card--top-accent |
Adds the navy accent bar across the top of the card. |
otc-card--full |
Makes the card span every column in a multi-column grid. |
Modifier classes may be combined:
<section class="otc-card otc-card--surface otc-card--top-accent">
...
</section>
| Class | Purpose |
|---|---|
otc-card__title |
Applies the shared visual treatment to the card heading. |
otc-card__icon |
Styles an optional Font Awesome icon above the heading. |
otc-card__body |
Identifies the description row when using aligned cards. |
otc-card__links |
Creates a list of full-width link rows with separators and right-facing chevrons. |
Default cards use only the base card class. They have a border, transparent background, and no top accent.
This is basic placeholder text for a default card.
Cards in the same grid may contain different amounts of text.
The grid automatically changes to one column on smaller screens.
<div class="otc-card-grid otc-card-grid--3">
<section class="otc-card">
<h3 class="otc-card__title">First Card</h3>
<p>Card content goes here.</p>
</section>
<section class="otc-card">
<h3 class="otc-card__title">Second Card</h3>
<p>Card content goes here.</p>
</section>
<section class="otc-card">
<h3 class="otc-card__title">Third Card</h3>
<p>Card content goes here.</p>
</section>
</div>
The surface and top-accent modifiers may be used independently or together.
This card uses the light-gray surface modifier.
This card uses the navy top-accent modifier.
This card uses both optional treatments.
<section class="otc-card otc-card--surface">
...
</section>
<section class="otc-card otc-card--top-accent">
...
</section>
<section class="otc-card otc-card--surface otc-card--top-accent">
...
</section>
Add otc-card__icon to a Font Awesome icon. Decorative icons should include aria-hidden="true".
This is a live example of a card with a decorative Font Awesome icon.
<section class="otc-card">
<i
class="fas fa-id-card otc-card__icon"
aria-hidden="true"
></i>
<h3 class="otc-card__title">Bring Photo Identification</h3>
<p>
Bring a valid government-issued photo ID to present during check-in.
</p>
</section>
Use an unordered list with otc-card__links when the card primarily links to related pages or resources.
<section class="otc-card otc-card--surface otc-card--top-accent">
<h3 class="otc-card__title">Reporting & Support</h3>
<ul class="otc-card__links">
<li>
<a href="/campus-safety-reporting">
Reporting a Concern
</a>
</li>
<li>
<a href="/safety-contacts">
Safety Contacts
</a>
</li>
</ul>
</section>
Use aligned cards when neighboring cards have a heading, description, and link list that should begin at matching vertical positions.
Add otc-card-grid--aligned to the grid. Each aligned card must contain these three direct children in this order:
otc-card__title.otc-card__body.otc-card__links.This description contains a little more placeholder text than the descriptions in the other cards.
This is a shorter placeholder description.
Use this area for a brief explanation of the linked resource.
<div class="otc-card-grid otc-card-grid--3 otc-card-grid--aligned">
<article class="otc-card otc-card--top-accent">
<h3 class="otc-card__title">
Mental health and referral support
</h3>
<p class="otc-card__body">
Find mental-health information, referral assistance,
and support services.
</p>
<ul class="otc-card__links">
<li>
<a href="#">Mental Health Resources</a>
</li>
</ul>
</article>
<article class="otc-card otc-card--top-accent">
<h3 class="otc-card__title">
Campus contacts
</h3>
<p class="otc-card__body">
Connect with a campus contact who can help identify
the appropriate resource.
</p>
<ul class="otc-card__links">
<li>
<a href="#">View Safety Contacts</a>
</li>
</ul>
</article>
</div>
Add otc-card--full when a card should span every column in a multi-column grid.
<div class="otc-card-grid otc-card-grid--2">
<article class="otc-card otc-card--top-accent otc-card--full">
<h3 class="otc-card__title">Not sure where to start?</h3>
<p>
These contacts can help you identify the appropriate resource.
</p>
</article>
</div>
otc-card__title class controls visual styling independently of heading level.section, article, or another appropriate container.aria-hidden="true". Do not use an icon as the only way to communicate important information.otc-card--surface when the card should retain a transparent background.otc-card--top-accent when the card should use only the standard border.otc-card-grid--aligned only when every aligned card follows the required title, body, and links structure.otc-card--full only inside a multi-column card grid.Use the OTC table component for structured data that needs clear row and column relationships. The component provides consistent borders, spacing, alternating rows, hover and focus states, captions, and accessible table markup while allowing each table to define its own column proportions and specialized behavior.
The default table uses the OTC orange header. Modifier classes may be added for dense data tables, blue headers, horizontally scrollable tables, numeric data, campus availability, and other common table needs.
The production CSS for this component is maintained in the shared OTC Shared Component CSS component. Styles used only to present examples on this reference page are kept separate from the production component CSS.
Every standard OTC table uses an otc-table-wrap wrapper and an otc-table table. Define relative column widths in a <colgroup> within each table rather than adding column-specific width rules to the shared CSS.
<div class="otc-table-wrap">
<table class="otc-table">
<caption>Example contact information</caption>
<colgroup>
<col style="width: 30%;" />
<col style="width: 40%;" />
<col style="width: 30%;" />
</colgroup>
<thead>
<tr>
<th scope="col">Campus</th>
<th scope="col">Contact</th>
<th scope="col">Phone</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Main</th>
<td>Example Contact</td>
<td>(407) 555-0123</td>
</tr>
</tbody>
</table>
</div>
| Class | Purpose |
|---|---|
otc-table-wrap |
Required outside wrapper. Provides the table border, rounded corners, and clipping. |
otc-table |
Required base table class. Provides table layout, typography, header styling, row striping, borders, and hover states. |
otc-table-wrap--scroll |
Makes an intentionally wide table horizontally scrollable. Use only when the table cannot reasonably fit within the available page width. |
otc-table--blue |
Changes the table header from the default OTC orange to the dark-blue treatment used by specialized data tables such as Tuition & Fees. |
otc-table--dense |
Reduces cell padding and font size for tables containing many columns or large amounts of data. |
| Class | Purpose |
|---|---|
otc-table__number |
Right-aligns numeric or currency data, uses tabular numerals, and prevents values from wrapping. |
otc-table__code |
Keeps short program numbers or similar codes on one line and uses tabular numerals. |
otc-table__center |
Centers the contents of a specific cell. |
otc-table__nowrap |
Prevents the contents of a specific cell from wrapping. |
otc-table__wrap |
Explicitly allows normal wrapping when another modifier would otherwise prevent it. |
otc-table__total |
Adds emphasis to a total or other important value. |
otc-table__detail |
Displays secondary information on a new line within a cell at a slightly smaller size. |
otc-table__availability |
Centers and reduces horizontal padding for narrow availability cells. |
otc-table__availability--yes |
Adds the highlighted OTC accent background used for a positive availability checkmark. The accent currently uses the OTC brand orange. |
otc-table__phone-number |
Keeps the main portion of a telephone number together. |
otc-table__phone-ext |
Keeps a phone extension together. Place a <wbr> before the extension when a line break should be allowed there. |
The default table is fluid and uses the standard OTC orange header. Column proportions belong in the table’s <colgroup>.
| Campus | Name | Title | Phone |
|---|---|---|---|
| Main | Example Contact | Resource Teacher |
(407) 555-0123, |
| South | Example Contact | Dean Example responsibility area | (407) 555-0456 |
<div class="otc-table-wrap">
<table class="otc-table">
<caption>Example campus contact information</caption>
<colgroup>
<col style="width: 20%;" />
<col style="width: 30%;" />
<col style="width: 25%;" />
<col style="width: 25%;" />
</colgroup>
<thead>
<tr>
<th scope="col">Campus</th>
<th scope="col">Name</th>
<th scope="col">Title</th>
<th scope="col">Phone</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Main</th>
<td>Example Contact</td>
<td>Resource Teacher</td>
<td>
<a href="tel:+14075550123;ext=7001234">
<span class="otc-table__phone-number">(407) 555-0123,</span><wbr><span class="otc-table__phone-ext"> ext. 700-1234</span>
</a>
</td>
</tr>
</tbody>
</table>
</div>
Tables should include a meaningful <caption>. Captions are visible by default. When a visible heading immediately before the table already provides the same context, add otc-visually-hidden to the caption rather than removing it.
<h4>Campus Deans</h4>
<div class="otc-table-wrap">
<table class="otc-table">
<caption class="otc-visually-hidden">
Campus Dean contact information by campus
</caption>
...
</table>
</div>
Keep the main phone number and extension from breaking internally. Add a <wbr> between them so the browser may wrap at the extension when space is limited.
<a href="tel:+14075550123;ext=7001234">
<span class="otc-table__phone-number">(407) 555-0123,</span><wbr><span class="otc-table__phone-ext"> ext. 700-1234</span>
</a>
Use otc-table__detail when a cell contains a primary value plus a secondary description that should begin on a new line.
| Campus | Name | Title |
|---|---|---|
| South | Example Contact | Dean Example responsibility area |
<td>
Dean
<span class="otc-table__detail">
Example responsibility area
</span>
</td>
Add otc-table--blue when a table needs the dark-blue header treatment. This is used for specialized fee and PDF-related data tables where the blue treatment should remain visually consistent with neighboring content.
| Program | Hours | Tuition | Estimated Total |
|---|---|---|---|
| Example Program | 1050 | $3,066.00 | $4,280.60 |
| Another Program | 900 | $2,628.00 | $3,400.19 |
<div class="otc-table-wrap">
<table class="otc-table otc-table--blue">
...
</table>
</div>
Add otc-table--dense for large data tables where standard table padding would make the table unnecessarily tall or wide. The modifier changes spacing and type size but does not change the table semantics.
<table class="otc-table otc-table--dense">
...
</table>
Standard OTC tables should remain fluid and should not scroll horizontally. Horizontal scrolling is reserved for tables whose data structure genuinely requires more width, such as the 17-column Tuition & Fees tables.
Add otc-table-wrap--scroll to the wrapper, make the region keyboard focusable, and assign the specialized table an appropriate minimum width. Include visually hidden instructions explaining that the table can be scrolled horizontally.
This example table may be scrolled horizontally.
| Program | Program Number | Avalon Campus | East Campus | Main Campus | Hours | Tuition | Estimated Total |
|---|---|---|---|---|---|---|---|
| Example Technical Program | A123456 | No | Yes | No | 1050 | $3,066.00 | $4,280.60 |
<p class="otc-visually-hidden" id="fee-table-scroll-help">
This fee table may be scrolled horizontally.
</p>
<div
class="otc-table-wrap otc-table-wrap--scroll"
role="region"
tabindex="0"
aria-labelledby="fee-table-heading"
aria-describedby="fee-table-scroll-help"
>
<table
class="otc-table otc-table--blue otc-table--dense"
style="min-width: 1930px;"
>
...
</table>
</div>
Availability tables may use highlighted checkmark cells. The checkmark is decorative; include visually hidden Yes or No text so the meaning is available without relying on the symbol or the OTC accent color alone.
<!-- Offered at this campus -->
<td class="otc-table__availability otc-table__availability--yes">
<span aria-hidden="true">✓</span>
<span class="otc-visually-hidden">Yes</span>
</td>
<!-- Not offered at this campus -->
<td class="otc-table__availability">
<span class="otc-visually-hidden">No</span>
</td>
Do not add shared CSS rules such as nth-child() selectors to control the widths of individual columns. Column proportions depend on the content of each table and should be defined locally with <colgroup>.
<colgroup>
<col style="width: 11%;" />
<col style="width: 19%;" />
<col style="width: 20%;" />
<col style="width: 20%;" />
<col style="width: 30%;" />
</colgroup>
The percentages should normally total 100%. Because the base table uses table-layout: fixed, these proportions remain predictable while the table itself expands or contracts with its container.
<caption> for every table. Use otc-visually-hidden when the caption would unnecessarily duplicate a nearby visible heading.<th scope="col"> for column headers.<th scope="row"> rather than a regular <td>.Yes or No text.otc-table--blue only where there is a design or content reason for the blue header; the standard OTC table header remains orange.otc-table--dense for large data sets rather than making all OTC tables smaller.overflow-wrap selectively for content such as long email addresses. Do not apply aggressive arbitrary word breaking to every table cell.<wbr> immediately before the extension.Use this temporary CSS workaround to correct a Smart Sites alignment issue affecting embedded PDF Document components on sites using the default/narrow container width.
Temporary workaround: Smart Sites has confirmed that an official fix is planned. Once the vendor fix is deployed and verified, this custom CSS should be removed to avoid conflicts with the corrected native component behavior.
At viewport widths of 1200px and above, embedded PDF Document components may become horizontally misaligned with other page components. The same Document component displays correctly below 1200px.
The Smart Sites Document component contains nested .container elements. On the current OTC site configuration, Smart Sites sets these containers to width: 100% below 1200px. At 1200px and above, that rule no longer applies, allowing the nested Document containers to use the desktop container sizing instead.
This causes the PDF embed to shift out of alignment even though the component is correctly centered at smaller viewport widths.
The following rule restores width: 100% at 1200px and above only for Smart Sites Document components that contain an embedded PDF:
@media (min-width: 1200px) {
div[id^="stack_content_"].container:has(.document_div_height .pdf-display-embed),
div[id^="stack_content_"].container:has(.document_div_height .pdf-display-embed)
.document_div_height > .ss-component-header.container,
div[id^="stack_content_"].container:has(.document_div_height .pdf-display-embed)
.document_div_height > .ss-component-content.container {
width: 100% !important;
}
}
The selector looks for a Smart Sites stack_content_* container that contains both the Document component structure and an embedded PDF. It then sets the width of the Document stack, component header, and component content containers to 100%.
The rule does not manually reposition the PDF or change the site’s overall container width. It extends the correctly functioning container behavior used below 1200px into the desktop breakpoint where the alignment problem occurs.
stack_content_* containers containing .document_div_height .pdf-display-embed.When Smart Sites confirms that the native Document component fix has been deployed:
Status: Active temporary workaround
Platform: Smart Sites / ParentSquare
Added: August 2026
Removal trigger: Official Smart Sites PDF Document alignment fix deployed and verified