/* kulou · 块主题（FSE）运行时基础样式
 * 还原 WordPress 在前台为块主题生成的 layout / 核心块基础 CSS，供 svoy、twentytwentythree 等块主题使用。
 * 主题需提供：--wp--style--global--content-size / --wide-size、--wp--style--block-gap、--wp--style--root--padding-*
 */
*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; }
img, video { max-width: 100%; height: auto; }
figure { margin: 0; }

.wp-site-blocks { padding: 0; }
.wp-site-blocks > * { margin-block-start: 0; margin-block-end: 0; }
.wp-site-blocks > * + * { margin-block-start: var(--wp--style--block-gap, 1.5rem); }
.wp-site-blocks > header.wp-block-template-part + *,
.wp-site-blocks > header + * { margin-block-start: 0; }

.has-global-padding { padding-left: var(--wp--style--root--padding-left, 0); padding-right: var(--wp--style--root--padding-right, 0); }
.has-global-padding > .alignfull { margin-left: calc(var(--wp--style--root--padding-left, 0) * -1); margin-right: calc(var(--wp--style--root--padding-right, 0) * -1); }

/* layout: flow / constrained */
.is-layout-flow > *, .is-layout-constrained > * { margin-block-start: 0; margin-block-end: 0; }
.is-layout-flow > * + *, .is-layout-constrained > * + * { margin-block-start: var(--wp--style--block-gap, 1.5rem); }
.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
    max-width: var(--wp--style--global--content-size, 650px);
    margin-left: auto !important;
    margin-right: auto !important;
}
.is-layout-constrained > .alignwide { max-width: var(--wp--style--global--wide-size, 1200px); }
.is-layout-constrained > .alignfull { max-width: none; }
.alignwide { max-width: var(--wp--style--global--wide-size, 1200px); }

/* layout: flex */
.is-layout-flex { display: flex; flex-wrap: wrap; align-items: center; gap: var(--wp--style--block-gap, 1.5rem); }
.is-layout-flex > * { margin: 0; }
.is-layout-flex.is-nowrap { flex-wrap: nowrap; }
.is-layout-flex.is-vertical { flex-direction: column; align-items: flex-start; }
.is-content-justification-space-between { justify-content: space-between; }
.is-content-justification-right { justify-content: flex-end; }
.is-content-justification-left { justify-content: flex-start; }
.is-content-justification-center { justify-content: center; }

/* layout: grid（wp-block-post-template） */
.wp-block-post-template { list-style: none; margin: 0; padding: 0; max-width: 100%; }
.wp-block-post-template.is-layout-grid { display: grid; gap: var(--wp--style--block-gap, 1.5rem); grid-template-columns: repeat(var(--kulou-cols, 3), minmax(0, 1fr)); }
.wp-block-post-template.is-layout-grid > li { margin: 0; }
@media (max-width: 781px) { .wp-block-post-template.is-layout-grid { grid-template-columns: minmax(0, 1fr); } }
.wp-block-post-template.is-flex-container { display: grid; gap: var(--wp--style--block-gap, 1.5rem); grid-template-columns: repeat(var(--kulou-cols, 3), minmax(0, 1fr)); }
@media (max-width: 781px) { .wp-block-post-template.is-flex-container { grid-template-columns: minmax(0, 1fr); } }

/* core blocks */
.wp-block-columns { display: flex; flex-wrap: wrap; gap: var(--wp--style--block-gap, 1.5rem); align-items: normal; }
@media (min-width: 782px) { .wp-block-columns { flex-wrap: nowrap; } }
.wp-block-column { flex-basis: 0; flex-grow: 1; min-width: 0; word-break: break-word; }
@media (max-width: 781px) { .wp-block-column { flex-basis: 100% !important; } }

.wp-block-buttons { display: flex; flex-wrap: wrap; gap: .5rem; }
.wp-block-button__link { display: inline-block; text-align: center; text-decoration: none; cursor: pointer; word-break: break-word; box-sizing: border-box; }

.wp-block-navigation { display: flex; flex-wrap: wrap; align-items: center; }
.wp-block-navigation__container { display: flex; flex-wrap: wrap; align-items: center; gap: var(--wp--style--block-gap, 1.5rem); list-style: none; margin: 0; padding: 0; }
.wp-block-navigation__container.is-vertical { flex-direction: column; align-items: flex-start; gap: .5rem; }
.wp-block-navigation-item { position: relative; margin: 0; }
.wp-block-navigation-item__content { text-decoration: none; }

.wp-block-separator { border: 0; border-top: 1px solid currentColor; opacity: .4; }
.wp-block-separator.is-style-wide { width: 100%; }
.wp-block-spacer { clear: both; }

.wp-block-post-featured-image { margin: 0; position: relative; overflow: hidden; }
.wp-block-post-featured-image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.wp-block-post-title a, .wp-block-site-title a { text-decoration: inherit; color: inherit; }
.wp-block-post-excerpt__excerpt { margin: 0; }
.wp-block-post-content img { max-width: 100%; height: auto; }

.wp-block-query-pagination { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; }
.screen-reader-text { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%); border: 0; white-space: nowrap; word-wrap: normal; }
.skip-link:focus { clip: auto; clip-path: none; width: auto; height: auto; }

.has-text-align-right { text-align: right; }
.has-text-align-center { text-align: center; }
