This commit is contained in:
2026-02-14 22:48:34 +01:00
parent 613f56e21b
commit 28b5061650
7 changed files with 523 additions and 10 deletions

View File

@@ -2,7 +2,7 @@
/**
* Plugin Name: JuConnect Patterns
* Description: Gutenberg Block Patterns fuer JuConnect (Styleguide-Klassen).
* Version: 0.1
* Version: 0.2
*/
if (!defined('ABSPATH')) exit;
@@ -294,6 +294,317 @@ HTML
<!-- /wp:group --></div>
<!-- /wp:group --></div>
<!-- /wp:group -->
HTML
]);
register_block_pattern('juconnect/single-card-with-graphic-right', [
'title' => __('Info Card + Grafik rechts', 'juconnect'),
'categories' => ['juconnect'],
'description' => __('Zweispaltig: links eine einzelne Inhaltskarte, rechts Bild/Grafik.', 'juconnect'),
'content' => <<<HTML
<!-- wp:group {"className":"section"} -->
<div class="wp-block-group section"><!-- wp:group {"className":"section__head"} -->
<div class="wp-block-group section__head"><!-- wp:heading {"level":2,"className":"h2"} -->
<h2 class="h2">Leistung im Ueberblick</h2>
<!-- /wp:heading -->
<!-- wp:paragraph {"className":"muted"} -->
<p class="muted">Kerninformationen klar und ruhig dargestellt.</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group -->
<!-- wp:group {"className":"grid grid--2"} -->
<div class="wp-block-group grid grid--2"><!-- wp:group {"className":"card card--pad"} -->
<div class="wp-block-group card card--pad"><!-- wp:heading {"level":3,"className":"h3"} -->
<h3 class="h3">Wann ist dieses Angebot passend?</h3>
<!-- /wp:heading -->
<!-- wp:paragraph {"className":"muted"} -->
<p class="muted">Fuer Traeger mit klaren Zielen, transparenten Ablaeufen und verbindlicher Kommunikation.</p>
<!-- /wp:paragraph -->
<!-- wp:list {"className":"list"} -->
<ul class="list"><li>klare Zustaendigkeiten</li><li>regelmaessige Rueckmeldungen</li><li>dokumentierte Entwicklung</li></ul>
<!-- /wp:list -->
<!-- wp:buttons {"className":"row wrap"} -->
<div class="wp-block-buttons row wrap"><!-- wp:button {"className":"btn--primary"} -->
<div class="wp-block-button btn--primary"><a class="wp-block-button__link wp-element-button" href="#kontakt">Kontakt aufnehmen</a></div>
<!-- /wp:button -->
<!-- wp:button {"className":"btn--secondary"} -->
<div class="wp-block-button btn--secondary"><a class="wp-block-button__link wp-element-button" href="#details">Mehr Details</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons --></div>
<!-- /wp:group -->
<!-- wp:group {"className":"card card--pad"} -->
<div class="wp-block-group card card--pad"><!-- wp:image {"sizeSlug":"large","linkDestination":"none","className":"img img--rounded"} -->
<figure class="wp-block-image size-large img img--rounded"><img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='900' height='560'%3E%3Crect width='100%25' height='100%25' fill='%23eef1f3'/%3E%3Ctext x='50%25' y='50%25' dominant-baseline='middle' text-anchor='middle' fill='%23607384' font-family='Arial' font-size='28'%3EGrafik ersetzen%3C/text%3E%3C/svg%3E" alt=""/></figure>
<!-- /wp:image -->
<!-- wp:paragraph {"className":"muted"} -->
<p class="muted">Rechts: Illustration oder Projektfoto.</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group --></div>
<!-- /wp:group --></div>
<!-- /wp:group -->
HTML
]);
register_block_pattern('juconnect/single-card-with-graphic-left', [
'title' => __('Grafik links + Info Card', 'juconnect'),
'categories' => ['juconnect'],
'description' => __('Zweispaltig: links Bild/Grafik, rechts eine einzelne Inhaltskarte.', 'juconnect'),
'content' => <<<HTML
<!-- wp:group {"className":"section"} -->
<div class="wp-block-group section"><!-- wp:group {"className":"section__head"} -->
<div class="wp-block-group section__head"><!-- wp:heading {"level":2,"className":"h2"} -->
<h2 class="h2">Leistung im Ueberblick</h2>
<!-- /wp:heading -->
<!-- wp:paragraph {"className":"muted"} -->
<p class="muted">Kerninformationen klar und ruhig dargestellt.</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group -->
<!-- wp:group {"className":"grid grid--2"} -->
<div class="wp-block-group grid grid--2"><!-- wp:group {"className":"card card--pad"} -->
<div class="wp-block-group card card--pad"><!-- wp:image {"sizeSlug":"large","linkDestination":"none","className":"img img--rounded"} -->
<figure class="wp-block-image size-large img img--rounded"><img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='900' height='560'%3E%3Crect width='100%25' height='100%25' fill='%23eef1f3'/%3E%3Ctext x='50%25' y='50%25' dominant-baseline='middle' text-anchor='middle' fill='%23607384' font-family='Arial' font-size='28'%3EGrafik ersetzen%3C/text%3E%3C/svg%3E" alt=""/></figure>
<!-- /wp:image -->
<!-- wp:paragraph {"className":"muted"} -->
<p class="muted">Links: Illustration oder Projektfoto.</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group -->
<!-- wp:group {"className":"card card--pad"} -->
<div class="wp-block-group card card--pad"><!-- wp:heading {"level":3,"className":"h3"} -->
<h3 class="h3">Wann ist dieses Angebot passend?</h3>
<!-- /wp:heading -->
<!-- wp:paragraph {"className":"muted"} -->
<p class="muted">Fuer Traeger mit klaren Zielen, transparenten Ablaeufen und verbindlicher Kommunikation.</p>
<!-- /wp:paragraph -->
<!-- wp:list {"className":"list"} -->
<ul class="list"><li>klare Zustaendigkeiten</li><li>regelmaessige Rueckmeldungen</li><li>dokumentierte Entwicklung</li></ul>
<!-- /wp:list -->
<!-- wp:buttons {"className":"row wrap"} -->
<div class="wp-block-buttons row wrap"><!-- wp:button {"className":"btn--primary"} -->
<div class="wp-block-button btn--primary"><a class="wp-block-button__link wp-element-button" href="#kontakt">Kontakt aufnehmen</a></div>
<!-- /wp:button -->
<!-- wp:button {"className":"btn--secondary"} -->
<div class="wp-block-button btn--secondary"><a class="wp-block-button__link wp-element-button" href="#details">Mehr Details</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons --></div>
<!-- /wp:group --></div>
<!-- /wp:group --></div>
<!-- /wp:group -->
HTML
]);
register_block_pattern('juconnect/section-grid-2', [
'title' => __('Section + 2 Cards', 'juconnect'),
'categories' => ['juconnect'],
'description' => __('Standard-Zweispalter fuer Inhalte oder Angebotskarten.', 'juconnect'),
'content' => <<<HTML
<!-- wp:group {"className":"section"} -->
<div class="wp-block-group section"><!-- wp:group {"className":"section__head"} -->
<div class="wp-block-group section__head"><!-- wp:heading {"level":2,"className":"h2"} -->
<h2 class="h2">Schwerpunkte</h2>
<!-- /wp:heading -->
<!-- wp:paragraph {"className":"muted"} -->
<p class="muted">Zwei zentrale Themen kompakt nebeneinander.</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group -->
<!-- wp:group {"className":"grid grid--2"} -->
<div class="wp-block-group grid grid--2"><!-- wp:group {"className":"card card--pad"} -->
<div class="wp-block-group card card--pad"><!-- wp:heading {"level":3,"className":"h3"} -->
<h3 class="h3">Begleitung</h3>
<!-- /wp:heading -->
<!-- wp:paragraph {"className":"muted"} -->
<p class="muted">Verlaessliche Begleitung mit klarer Struktur fuer alle Beteiligten.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p><a class="link" href="#!">Mehr erfahren</a></p>
<!-- /wp:paragraph --></div>
<!-- /wp:group -->
<!-- wp:group {"className":"card card--pad"} -->
<div class="wp-block-group card card--pad"><!-- wp:heading {"level":3,"className":"h3"} -->
<h3 class="h3">Koordination</h3>
<!-- /wp:heading -->
<!-- wp:paragraph {"className":"muted"} -->
<p class="muted">Abgestimmte Kommunikation zwischen Traegern, Familien und Fachkraeften.</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p><a class="link" href="#!">Mehr erfahren</a></p>
<!-- /wp:paragraph --></div>
<!-- /wp:group --></div>
<!-- /wp:group --></div>
<!-- /wp:group -->
HTML
]);
register_block_pattern('juconnect/kpi-overview-3', [
'title' => __('KPI Ueberblick (3 Karten)', 'juconnect'),
'categories' => ['juconnect'],
'description' => __('Drei Kennzahlenkarten fuer Verlaesslichkeit, Bearbeitungszeit und Reichweite.', 'juconnect'),
'content' => <<<HTML
<!-- wp:group {"className":"section"} -->
<div class="wp-block-group section"><!-- wp:group {"className":"section__head"} -->
<div class="wp-block-group section__head"><!-- wp:heading {"level":2,"className":"h2"} -->
<h2 class="h2">Fakten im Ueberblick</h2>
<!-- /wp:heading -->
<!-- wp:paragraph {"className":"muted"} -->
<p class="muted">Beispielwerte fuer eine transparente Darstellung.</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group -->
<!-- wp:group {"className":"grid grid--3"} -->
<div class="wp-block-group grid grid--3"><!-- wp:group {"className":"card card--tight"} -->
<div class="wp-block-group card card--tight"><!-- wp:group {"className":"kpi"} -->
<div class="wp-block-group kpi"><!-- wp:paragraph {"className":"kpi__label"} -->
<p class="kpi__label">Antwortzeit</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph {"className":"kpi__value"} -->
<p class="kpi__value">&lt; 48h</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group --></div>
<!-- /wp:group -->
<!-- wp:group {"className":"card card--tight"} -->
<div class="wp-block-group card card--tight"><!-- wp:group {"className":"kpi"} -->
<div class="wp-block-group kpi"><!-- wp:paragraph {"className":"kpi__label"} -->
<p class="kpi__label">Abgestimmte Plaene</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph {"className":"kpi__value"} -->
<p class="kpi__value">95%</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group --></div>
<!-- /wp:group -->
<!-- wp:group {"className":"card card--tight"} -->
<div class="wp-block-group card card--tight"><!-- wp:group {"className":"kpi"} -->
<div class="wp-block-group kpi"><!-- wp:paragraph {"className":"kpi__label"} -->
<p class="kpi__label">Kooperationspartner</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph {"className":"kpi__value"} -->
<p class="kpi__value">24</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group --></div>
<!-- /wp:group --></div>
<!-- /wp:group --></div>
<!-- /wp:group -->
HTML
]);
register_block_pattern('juconnect/contact-cta-split', [
'title' => __('Kontakt CTA (Split)', 'juconnect'),
'categories' => ['juconnect'],
'description' => __('Linke Infokarte mit Aktionen, rechte Karte mit Kontaktfakten.', 'juconnect'),
'content' => <<<HTML
<!-- wp:group {"className":"section"} -->
<div class="wp-block-group section"><!-- wp:group {"className":"grid grid--2"} -->
<div class="wp-block-group grid grid--2"><!-- wp:group {"className":"card card--pad"} -->
<div class="wp-block-group card card--pad"><!-- wp:paragraph {"className":"badge badge--info"} -->
<p class="badge badge--info">Naechster Schritt</p>
<!-- /wp:paragraph -->
<!-- wp:heading {"level":2,"className":"h2"} -->
<h2 class="h2">Unverbindlich Kontakt aufnehmen</h2>
<!-- /wp:heading -->
<!-- wp:paragraph {"className":"muted"} -->
<p class="muted">Wir melden uns zeitnah und klaeren den passenden Rahmen fuer Ihr Anliegen.</p>
<!-- /wp:paragraph -->
<!-- wp:buttons {"className":"row wrap"} -->
<div class="wp-block-buttons row wrap"><!-- wp:button {"className":"btn--primary"} -->
<div class="wp-block-button btn--primary"><a class="wp-block-button__link wp-element-button" href="#kontakt">Anfrage senden</a></div>
<!-- /wp:button -->
<!-- wp:button {"className":"btn--ghost"} -->
<div class="wp-block-button btn--ghost"><a class="wp-block-button__link wp-element-button" href="#telefon">Telefonisch sprechen</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons --></div>
<!-- /wp:group -->
<!-- wp:group {"className":"card card--pad"} -->
<div class="wp-block-group card card--pad"><!-- wp:heading {"level":3,"className":"h3"} -->
<h3 class="h3">Kontaktzeiten</h3>
<!-- /wp:heading -->
<!-- wp:group {"className":"kpi"} -->
<div class="wp-block-group kpi"><!-- wp:paragraph {"className":"kpi__label"} -->
<p class="kpi__label">Mo - Fr</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph {"className":"kpi__value"} -->
<p class="kpi__value">08:00 - 17:00</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group -->
<!-- wp:group {"className":"kpi"} -->
<div class="wp-block-group kpi"><!-- wp:paragraph {"className":"kpi__label"} -->
<p class="kpi__label">E-Mail</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph {"className":"kpi__value"} -->
<p class="kpi__value">kontakt@juconnect.de</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group -->
<!-- wp:group {"className":"callout callout--info"} -->
<div class="wp-block-group callout callout--info"><!-- wp:paragraph {"className":"callout__title"} -->
<p class="callout__title">Hinweis</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph {"className":"callout__text"} -->
<p class="callout__text">Bitte Anlass und Rueckrufzeit kurz angeben.</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group --></div>
<!-- /wp:group --></div>
<!-- /wp:group --></div>
<!-- /wp:group -->
HTML
]);
register_block_pattern('juconnect/downloads-table', [
'title' => __('Downloads (Tabelle)', 'juconnect'),
'categories' => ['juconnect'],
'description' => __('Downloadbereich mit Tabelle im Styleguide-Look.', 'juconnect'),
'content' => <<<HTML
<!-- wp:group {"className":"section"} -->
<div class="wp-block-group section"><!-- wp:group {"className":"section__head"} -->
<div class="wp-block-group section__head"><!-- wp:heading {"level":2,"className":"h2"} -->
<h2 class="h2">Downloads</h2>
<!-- /wp:heading -->
<!-- wp:paragraph {"className":"muted"} -->
<p class="muted">Dokumente, Vorlagen und Nachweise auf einen Blick.</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group -->
<!-- wp:group {"className":"card card--pad layout__table"} -->
<div class="wp-block-group card card--pad layout__table"><!-- wp:html -->
<div class="tablewrap">
<table class="table">
<thead>
<tr><th>Dokument</th><th>Status</th><th>Aktion</th></tr>
</thead>
<tbody>
<tr><td>Leistungsbeschreibung</td><td><span class="badge badge--info">Entwurf</span></td><td><a class="link" href="#!">Oeffnen</a></td></tr>
<tr><td>Datenschutz</td><td><span class="badge badge--success">Final</span></td><td><a class="link" href="#!">Oeffnen</a></td></tr>
<tr><td>Ansprechpartner</td><td><span class="badge badge--warn">Update</span></td><td><a class="link" href="#!">Oeffnen</a></td></tr>
</tbody>
</table>
</div>
<!-- /wp:html --></div>
<!-- /wp:group --></div>
<!-- /wp:group -->
HTML
]);
});

View File

@@ -69,6 +69,48 @@ const Toast = (() => {
return { show };
})();
/* Equalize steps+image pattern column heights */
(() => {
const collectColumns = (layout) => {
const inner = layout.querySelector(":scope > .wp-block-group__inner-container");
if (inner) return Array.from(inner.children);
return Array.from(layout.children);
};
const hasTiles = (el) => !!el.querySelector(".grid.grid--4, .wp-block-group.grid.grid--4");
const hasImage = (el) => !!el.querySelector(".wp-block-image img, img");
const equalize = () => {
const layouts = $$(".section .grid.grid--2, .wp-block-group.section .wp-block-group.grid.grid--2");
layouts.forEach((layout) => {
const columns = collectColumns(layout).filter((el) => el.nodeType === 1);
if (columns.length < 2) return;
const tilesCol = columns.find(hasTiles);
const imageCol = columns.find((el) => el !== tilesCol && hasImage(el));
if (!tilesCol || !imageCol) return;
tilesCol.style.minHeight = "";
imageCol.style.minHeight = "";
const h = Math.max(tilesCol.offsetHeight, imageCol.offsetHeight);
if (!h) return;
tilesCol.style.minHeight = `${h}px`;
imageCol.style.minHeight = `${h}px`;
});
};
let raf = 0;
const schedule = () => {
if (raf) cancelAnimationFrame(raf);
raf = requestAnimationFrame(equalize);
};
window.addEventListener("load", schedule);
window.addEventListener("resize", schedule);
schedule();
})();
/* Clipboard copy helper */
async function copyText(text, label="Kopiert.") {
try {

View File

@@ -1,7 +1,23 @@
<?php if (!defined('ABSPATH')) exit; ?>
<footer class="footer">
<span class="muted"><?php echo esc_html(get_bloginfo('name')); ?> · Theme v<?php echo esc_html(wp_get_theme()->get('Version')); ?></span>
<div class="footer__inner">
<nav class="footer__nav" aria-label="<?php esc_attr_e('Footer Navigation', 'juconnect'); ?>">
<?php if (has_nav_menu('footer')): ?>
<div class="navgroup__title"><?php esc_html_e('Quick Links', 'juconnect'); ?></div>
<?php endif; ?>
<?php
wp_nav_menu([
'theme_location' => 'footer',
'container' => false,
'menu_class' => 'footer__menu',
'fallback_cb' => false,
'depth' => 1,
]);
?>
</nav>
<span class="muted"><?php echo esc_html(get_bloginfo('name')); ?> - Theme v<?php echo esc_html(wp_get_theme()->get('Version')); ?></span>
</div>
</footer>
</main>
</div>

View File

@@ -19,9 +19,17 @@ function juconnect_setup() {
add_action('after_setup_theme', 'juconnect_setup');
function juconnect_assets() {
$ver = wp_get_theme()->get('Version');
wp_enqueue_style('juconnect-style', get_stylesheet_uri(), [], $ver);
wp_enqueue_script('juconnect-app', get_template_directory_uri().'/assets/js/app.js', [], $ver, true);
$theme_ver = wp_get_theme()->get('Version');
$style_ver = filemtime(get_stylesheet_directory() . '/style.css');
$script_ver = filemtime(get_template_directory() . '/assets/js/app.js');
if (!$style_ver) {
$style_ver = $theme_ver;
}
if (!$script_ver) {
$script_ver = $theme_ver;
}
wp_enqueue_style('juconnect-style', get_stylesheet_uri(), [], $style_ver);
wp_enqueue_script('juconnect-app', get_template_directory_uri().'/assets/js/app.js', [], $script_ver, true);
}
add_action('wp_enqueue_scripts', 'juconnect_assets');
@@ -68,7 +76,7 @@ function juconnect_render_sidenav_nav() {
// Add styleguide classes to WP menus
function juconnect_nav_link_attributes($atts, $item, $args, $depth){
if (!empty($args->theme_location) && $args->theme_location === 'primary'){
if (!empty($args->theme_location) && in_array($args->theme_location, ['primary', 'footer'], true)){
$existing = isset($atts['class']) ? $atts['class'].' ' : '';
$atts['class'] = $existing . 'navlink';
}

View File

@@ -339,7 +339,14 @@ a{ color: inherit; }
}
/* Sections */
.section{ margin: 0 0 var(--s6) 0; }
.section{
margin: 0 0 var(--s6) 0;
padding-bottom: var(--s4);
}
.wp-block-group.section{
padding-bottom: var(--s4);
margin-bottom: var(--s4) !important;
}
.section__head{ margin-bottom: var(--s4); }
.main .wp-block-group.section{
width: 100%;
@@ -355,6 +362,45 @@ a{ color: inherit; }
padding-top: var(--s4);
border-top: 1px solid var(--line);
}
.footer__inner{
display: flex;
align-items: flex-end;
justify-content: space-between;
gap: var(--s3);
flex-wrap: wrap;
}
.footer__nav{
min-width: 0;
}
.footer__menu{
list-style: none;
display: flex;
align-items: flex-start;
flex-wrap: wrap;
gap: 6px;
margin: 0;
padding: 0;
}
.footer__menu > li{
margin: 0;
}
.footer__menu a.navlink{
padding: 8px 10px;
border-radius: 10px;
}
.footer__menu .current-menu-item > a.navlink,
.footer__menu .current-page-ancestor > a.navlink{
background: rgba(29,53,79,.10);
border-color: rgba(29,53,79,.18);
color: var(--text);
}
@media (max-width: 760px){
.footer__inner{
flex-direction: column;
align-items: flex-start;
}
}
/* Typography helpers */
.h1{ font-size: var(--fs-1); line-height: var(--lh-tight); margin: 0 0 var(--s2) 0; }
@@ -381,6 +427,77 @@ a{ color: inherit; }
.wp-block-group.grid.grid--2 > .wp-block-group__inner-container{ grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
.wp-block-group.grid.grid--3 > .wp-block-group__inner-container{ grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
.wp-block-group.grid.grid--4 > .wp-block-group__inner-container{ grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
.wp-block-group.grid.grid--2 > .wp-block-group__inner-container{
align-items: stretch !important;
}
.grid.grid--2{
align-items: stretch !important;
}
.grid.grid--2 > .wp-block-group,
.grid.grid--2 > .card{
height: 100% !important;
align-self: stretch !important;
}
.grid.grid--2 > .wp-block-group{
display: flex;
flex-direction: column;
}
.grid.grid--2 > .wp-block-group > .grid{
flex: 1;
}
.grid.grid--4 > .card{
height: 100%;
display: flex;
flex-direction: column;
}
.wp-block-group.grid.grid--2 > .wp-block-group__inner-container > .wp-block-group{
display: flex;
flex-direction: column;
height: 100% !important;
align-self: stretch !important;
}
.wp-block-group.grid.grid--2 > .wp-block-group__inner-container > .wp-block-group > .wp-block-group__inner-container{
display: flex;
flex-direction: column;
height: 100% !important;
}
.wp-block-group.grid.grid--2 > .wp-block-group__inner-container > .wp-block-group > .wp-block-group.grid{
flex: 1;
}
.wp-block-group.grid.grid--2 > .wp-block-group__inner-container > .wp-block-group > .wp-block-group__inner-container > .wp-block-group.grid{
flex: 1;
}
.wp-block-group.grid.grid--2 > .wp-block-group__inner-container > .wp-block-group > .wp-block-group__inner-container > .wp-block-group.grid > .wp-block-group__inner-container{
height: 100%;
}
.wp-block-group.grid.grid--4 > .wp-block-group__inner-container > .card{
height: 100%;
display: flex;
flex-direction: column;
}
.wp-block-group.grid.grid--2 > .wp-block-group__inner-container > .card{
height: 100% !important;
align-self: stretch !important;
}
.main .wp-block-group.section + .wp-block-group.section{
margin-top: var(--s4);
}
.main .wp-block-group.section + .section{
margin-top: var(--s4);
}
/* Fallback for pages built with core Columns instead of grid classes */
.section .wp-block-columns{
align-items: stretch !important;
}
.section .wp-block-column{
display: flex;
flex-direction: column;
}
.section .wp-block-column > .wp-block-group,
.section .wp-block-column > .card{
height: 100% !important;
}
.section > .grid + .grid{ margin-top: var(--s4); }
.section > .grid + .card,
.section > .card + .grid{ margin-top: var(--s4); }
@@ -919,7 +1036,7 @@ a{ color: inherit; }
.topnav__submenu{
list-style:none;
position:absolute;
top: calc(100% + 8px);
top: 100%;
right: 0;
min-width: 240px;
margin: 0;
@@ -930,7 +1047,8 @@ a{ color: inherit; }
box-shadow: var(--shadow);
display:none;
}
.topnav__list li:hover > .topnav__submenu{ display:block; }
.topnav__list li:hover > .topnav__submenu,
.topnav__list li:focus-within > .topnav__submenu{ display:block; }
.topnav__submenu a.navlink{
display:flex;
width: 100%;
@@ -938,6 +1056,24 @@ a{ color: inherit; }
border-radius: 12px;
}
/* Touch devices don't have hover; expose submenus inline for reliable access */
@media (hover: none){
.topnav__list > li{ width: 100%; }
.topnav__list a.navlink{ width: 100%; }
.topnav__submenu{
position: static;
display: block;
min-width: 0;
margin-top: 4px;
padding: 4px 0 0 12px;
border: 0;
border-left: 1px solid var(--line);
border-radius: 0;
background: transparent;
box-shadow: none;
}
}
/* Hide original sidenav if any page still contains it */
.sidenav{ display:none !important; }
@@ -989,7 +1125,7 @@ a{ color: inherit; }
.wp-block-buttons .wp-block-button{ margin: 0; }
/* Groups: don't add unexpected margins that break cards/grids */
.wp-block-group{ margin: 0; }
.wp-block-group:not(.section){ margin: 0; }
/* Images: prevent WP default inline styles from breaking rounded cards */
.wp-block-image img{ max-width: 100%; height: auto; }