/* Shared mobile-first shell. Keep Page and pattern styling in their own files. */
.km15-site-header { position: relative; z-index: 50; }
.km15-header-inner { display: flex; flex-wrap: wrap; align-items: center; gap: 0 20px; min-height: 0; padding-block: 10px 0; }
.km15-brand { display: flex; flex: 1 1 auto; min-width: 0; align-items: center; gap: 12px; padding-bottom: 10px; font-size: clamp(1.35rem, 2vw, 1.85rem); }
.km15-brand .custom-logo-link { flex: 0 0 auto; }
.km15-brand img.custom-logo { max-width: 90px; max-height: 54px; object-fit: contain; }
.km15-brand-name { min-width: 0; color: var(--km15-brand); font-weight: 800; text-decoration: none; overflow-wrap: anywhere; white-space: normal; }
.km15-header-actions { display: flex; align-items: center; gap: 14px; padding-bottom: 10px; }
.km15-header-search { position: relative; }
.km15-header-search summary { display: flex; min-height: 44px; align-items: center; padding: 7px 10px; border: 1px solid var(--km15-border); border-radius: 4px; color: var(--km15-text); cursor: pointer; white-space: nowrap; }
.km15-header-search-panel { position: absolute; z-index: 10; top: calc(100% + 8px); right: 0; width: min(360px, calc(100vw - 32px)); padding: 14px; border: 1px solid var(--km15-border); background: var(--km15-surface); box-shadow: 0 10px 25px #2428241c; }
.km15-header-search-panel form, .km15-menu-search form { display: flex; gap: 6px; }
.km15-header-search-panel input, .km15-menu-search input { min-width: 0; width: 100%; min-height: 44px; padding: 8px; border: 1px solid var(--km15-border); }
.km15-header-search-panel button, .km15-menu-search button { min-height: 44px; padding: 8px 12px; border: 0; background: var(--km15-phone); color: #fff; cursor: pointer; }
.km15-primary-nav { order: 3; flex: 0 0 100%; width: 100%; min-width: 0; border-top: 1px solid var(--km15-border); }
.km15-primary-nav .km15-menu { display: flex; flex-wrap: nowrap; align-items: stretch; justify-content: space-between; gap: 0 8px; width: max-content; max-width: none; margin: 0; padding: 0; list-style: none; }
.km15-primary-nav .km15-menu > li { position: relative; display: flex; align-items: center; flex: 0 0 auto; }
.km15-primary-nav .km15-menu > li > a { display: flex; min-height: 50px; align-items: center; padding: 10px 4px; color: var(--km15-text); line-height: 1.35; text-decoration: none; white-space: nowrap; }
.km15-primary-nav .km15-menu a:hover, .km15-primary-nav .km15-menu .current-menu-item > a { color: var(--km15-phone); text-decoration: underline; }
.km15-submenu-toggle { display: inline-flex; width: 44px; min-height: 44px; align-items: center; justify-content: center; border: 0; background: transparent; color: var(--km15-text); cursor: pointer; }
.km15-submenu-toggle[aria-expanded="true"] span { transform: rotate(180deg); }
.km15-primary-nav .sub-menu { display: none; position: absolute; z-index: 20; top: 100%; left: 0; width: max-content; min-width: 220px; max-width: min(350px, calc(100vw - 32px)); margin: 0; padding: 6px; border: 1px solid var(--km15-border); background: var(--km15-surface); box-shadow: 0 12px 24px #2428241c; list-style: none; }
.km15-primary-nav .km15-menu > li:nth-last-child(-n+2) > .sub-menu { left: auto; right: 0; }
body:not(.km15-menu-enhanced) .km15-primary-nav .km15-menu { width: 100%; flex-wrap: wrap; justify-content: flex-start; }
.km15-primary-nav .sub-menu a { display: flex; min-height: 44px; align-items: center; padding: 8px 10px; color: var(--km15-text); line-height: 1.35; text-decoration: none; white-space: normal; overflow-wrap: anywhere; }
.km15-primary-nav .is-submenu-open > .sub-menu, body:not(.km15-menu-enhanced) .km15-primary-nav .menu-item-has-children:hover > .sub-menu, body:not(.km15-menu-enhanced) .km15-primary-nav .menu-item-has-children:focus-within > .sub-menu { display: block; }
.km15-menu-toggle:not([hidden]) { display: inline-flex; min-width: 64px; min-height: 48px; align-items: center; justify-content: center; flex-direction: column; gap: 2px; padding: 4px; border: 0; background: transparent; color: var(--km15-text); font-weight: 700; cursor: pointer; }
.km15-menu-toggle[hidden] { display: none !important; }
.km15-menu-toggle-icon { display: grid; gap: 4px; }
.km15-menu-toggle-icon span { display: block; width: 26px; height: 3px; background: currentColor; }
.km15-menu-search, .km15-menu-contact { display: none; }
.km15-primary-nav.km15-menu-measuring { display: block !important; position: absolute !important; inset: auto 0 auto; width: 100%; visibility: hidden; pointer-events: none; }
.km15-primary-nav.km15-menu-measuring .km15-menu { display: flex !important; flex-wrap: nowrap !important; width: max-content !important; }
body.km15-menu-compact .km15-header-actions { display: none; }
body.km15-menu-compact.km15-menu-enhanced .km15-primary-nav:not(.is-open):not(.km15-menu-measuring) { display: none; }
body.km15-menu-compact .km15-primary-nav, body.km15-menu-compact .km15-menu-search, body.km15-menu-compact .km15-menu-contact { display: block; }
body.km15-menu-compact .km15-primary-nav .km15-menu { display: grid; width: 100%; gap: 0; }
body.km15-menu-compact .km15-primary-nav .km15-menu > li { flex-wrap: wrap; border-bottom: 1px solid var(--km15-border); }
body.km15-menu-compact .km15-primary-nav .km15-menu > li > a { flex: 1 1 auto; min-width: 0; min-height: 48px; white-space: normal; overflow-wrap: anywhere; }
body.km15-menu-compact .km15-primary-nav .sub-menu { position: static; flex: 0 0 100%; width: 100%; min-width: 0; max-width: none; padding: 0 0 5px 12px; border: 0; box-shadow: none; }
body.km15-menu-compact .km15-menu-search, body.km15-menu-compact .km15-menu-contact { padding-block: 12px; }
body.km15-menu-compact .km15-menu-contact .km15-contact-actions { gap: 8px; }
body.km15-menu-compact .km15-menu-contact .km15-button { min-height: 44px; }
.km15-content { width: min(100% - 2 * var(--km15-gutter), 760px); padding-block: 32px 56px; }
.km15-entry-content, .km15-front-content { min-width: 0; overflow-wrap: anywhere; }
.km15-entry-content img, .km15-front-content img { max-width: 100%; height: auto; }
.km15-entry-content table, .km15-front-content table, .km15-entry-content pre, .km15-front-content pre { display: block; max-width: 100%; overflow-x: auto; }
.km15-entry-content iframe, .km15-front-content iframe { max-width: 100%; }
.km15-content .alignwide { max-width: min(1200px, calc(100vw - 2 * var(--km15-gutter))); }
.km15-content .alignfull { width: calc(100vw - 2px); max-width: none; margin-left: calc(50% - 50vw + 1px); }
.km15-footer-inner { grid-template-columns: minmax(0, 1fr); }
@media (max-width: 1023px) {
	.km15-primary-nav .km15-menu { display: grid; width: 100%; gap: 0; }
	.km15-primary-nav .km15-menu > li { flex-wrap: wrap; border-bottom: 1px solid var(--km15-border); }
	.km15-primary-nav .km15-menu > li > a { flex: 1 1 auto; min-width: 0; min-height: 48px; white-space: normal; overflow-wrap: anywhere; }
	.km15-primary-nav .sub-menu { position: static; flex: 0 0 100%; width: 100%; min-width: 0; max-width: none; padding: 0 0 5px 12px; border: 0; box-shadow: none; }
	.km15-menu-search, .km15-menu-contact { display: block; padding-block: 12px; }
	.km15-header-actions { display: none; }
	/* With JavaScript off all destinations remain visible. */
	body:not(.km15-menu-enhanced) .km15-primary-nav .sub-menu { display: block; }
}
@media (max-width: 767px) {
	.km15-header-inner { gap: 0 8px; }
	.km15-brand { font-size: clamp(1.2rem, 5.2vw, 1.55rem); }
	.km15-brand img.custom-logo { max-width: 58px; max-height: 44px; }
	.km15-menu-contact { display: none !important; }
	.km15-footer-inner { padding-bottom: 28px; }
}
@media (min-width: 768px) { .km15-footer-inner { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .km15-footer-inner { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
/* Standalone navigation targets; inline article text retains its reading flow. */
.km15-brand-name { display: inline-flex; min-height: 44px; align-items: center; }
.km15-site-footer a:not(.km15-button) { display: inline-flex; min-width: 44px; min-height: 44px; align-items: center; }
.km15-main .km15-pagination a, .km15-main .km15-pagination .page-numbers { display: inline-flex; min-width: 44px; min-height: 44px; align-items: center; justify-content: center; }
.km15-reading .post-navigation a { display: inline-flex; min-width: 44px; min-height: 44px; align-items: center; }

