/*
Theme Name: DurgaShakti
Theme URI: https://durgashakti.org/
Author: DurgaShakti
Description: Custom block theme for DurgaShakti.org.
Version: 0.5.1
Text Domain: durgashakti
*/
/* Shared by the front end and Site Editor; fonts stay local to the device. */
:root {
  --ds-radius: 0.375rem;
  --ds-border: 1px solid var(--wp--preset--color--gold);
}
html { scroll-padding-top: 2rem; }
body { -webkit-font-smoothing: antialiased; }
.ds-contact-form label { display: block; margin-bottom: var(--wp--preset--spacing--20); }
.ds-contact-form :is(input, textarea) { box-sizing: border-box; width: 100%; max-width: 100%; padding: var(--wp--preset--spacing--30); font: inherit; color: var(--wp--preset--color--ink); background: var(--wp--preset--color--cream); border: 1px solid var(--wp--preset--color--sky-deep); border-radius: var(--ds-radius); }
.ds-contact-form textarea { resize: vertical; }
.ds-contact-form button { padding: var(--wp--preset--spacing--30) var(--wp--preset--spacing--40); background: var(--wp--preset--color--sky-deep); color: var(--wp--preset--color--cream); border: 0; border-radius: var(--ds-radius); font: inherit; cursor: pointer; min-height: 44px; }
.ds-contact-trap { display: none; }
.ds-contact-notice { border-left: 3px solid var(--wp--preset--color--sky-deep); padding: var(--wp--preset--spacing--40); background: var(--wp--preset--color--sky); margin-block: var(--wp--preset--spacing--40); }
.ds-contact-error { display: block; font-weight: 600; }
.wp-block-search__inside-wrapper { max-width: 100%; }
.wp-block-search__input { min-width: 0; }
a { text-underline-offset: 0.2em; text-decoration-thickness: 0.08em; }
:where(a, button, input, textarea, select):focus-visible {
  outline: 3px solid var(--wp--preset--color--sky-deep);
  outline-offset: 5px;
}
.wp-block-button__link:hover { filter: brightness(0.92); }
.wp-block-post-content :where(p, li) { overflow-wrap: anywhere; }

.ds-header { border-bottom: var(--ds-border); }
.ds-header__inner { min-height: 6rem; gap: 2rem; padding-block: 1rem; }
.ds-brand { gap: 0.75rem; flex-shrink: 0; }
.ds-brand .wp-block-site-title { margin: 0; }
.ds-navigation { gap: 1.5rem; }
.ds-navigation .wp-block-navigation-item__content { padding-block: 0.625rem; }
.ds-navigation .current-menu-item > .wp-block-navigation-item__content {
  text-decoration: underline;
  text-decoration-color: var(--wp--preset--color--sky-deep);
}
.ds-navigation :where(.wp-block-navigation__responsive-container-open, .wp-block-navigation__responsive-container-close) {
  min-width: 44px; min-height: 44px; align-items: center; justify-content: center;
}
.ds-header .wp-block-navigation.ds-navigation .wp-block-navigation__responsive-container.is-menu-open {
  background: var(--wp--preset--color--cream);
  color: var(--wp--preset--color--ink);
  padding: 1.5rem;
}
.ds-main { margin-block-start: 0; padding-block: var(--wp--preset--spacing--60); min-height: 60vh; }
.ds-main .wp-block-post-template > li + li { margin-top: var(--wp--preset--spacing--60); }
.ds-footer { margin-block-start: 0; padding-block: var(--wp--preset--spacing--60); border-top: var(--ds-border); }
.ds-footer__note { margin-top: var(--wp--preset--spacing--50); padding-top: var(--wp--preset--spacing--40); border-top: var(--ds-border); }
.ds-footer .wp-block-navigation-item__content { padding-block: var(--wp--preset--spacing--20); }
@media (min-width: 600px) {
  .ds-header__inner { flex-wrap: wrap !important; }
}
@media (max-width: 599px) {
  .ds-header__inner { min-height: 4.75rem; gap: 1rem; }
  .ds-brand .wp-block-site-title { font-size: 1.5rem; }
}

/* Reusable editorial sections: all color, typography and rhythm use theme presets. */
.ds-section { padding-block: var(--wp--preset--spacing--section-rhythm); }
.ds-section.ds-hero { padding-block: var(--wp--preset--spacing--60); }
.ds-section + .ds-section { margin-block-start: 0; }
.ds-section > .wp-block-columns,
.ds-section > .wp-block-query { max-width: var(--wp--style--global--wide-size); }
.ds-section .wp-block-columns { gap: var(--wp--preset--spacing--40); margin-bottom: 0; }
.ds-section .wp-block-column { min-width: 0; }
.ds-hero { border-bottom: var(--ds-border); }
.ds-hero h1 { text-wrap: balance; }
.ds-hero .wp-block-buttons { margin-top: var(--wp--preset--spacing--50); }
.ds-card {
  height: 100%; box-sizing: border-box;
  padding: var(--wp--preset--spacing--40);
  background: var(--wp--preset--color--white);
  border-top: var(--ds-border);
  border-radius: var(--ds-radius);
  overflow-wrap: anywhere;
}
.ds-card > :first-child { margin-block-start: 0; }
.ds-featured .wp-block-post-template { gap: var(--wp--preset--spacing--40); }
.ds-newsletter__panel {
  padding: var(--wp--preset--spacing--50);
  background: var(--wp--preset--color--sky);
  border-top: var(--ds-border);
  border-radius: var(--ds-radius);
}
.ds-home { margin-block-start: 0; }
.ds-home .wp-block-post-template > li { margin-block-start: 0; }
@media (max-width: 781px) {
  .ds-featured .wp-block-post-template.is-layout-grid { grid-template-columns: 1fr; }
}

/* Hub and Featured layouts reuse the shared token scale. */
.ds-section > .ds-topic-grid,
.ds-section > .wp-block-durgashakti-featured-content { max-width: var(--wp--style--global--wide-size); }
.ds-topic-grid { gap: var(--wp--preset--spacing--40); }
.durgashakti-featured-list {
  list-style: none; padding: 0; margin: 0;
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--wp--preset--spacing--40);
}
.durgashakti-featured-list article {
  height: 100%; box-sizing: border-box;
  padding: var(--wp--preset--spacing--40);
  background: var(--wp--preset--color--white);
  border-top: var(--ds-border); border-radius: var(--ds-radius);
  overflow-wrap: anywhere;
}
.durgashakti-featured-list :where(h2, h3, h4) {
  margin: 0; font-size: var(--wp--preset--font-size--large);
}
.durgashakti-featured-list p { margin-block: var(--wp--preset--spacing--40) 0; }
.ds-navigation .wp-block-navigation__submenu-container {
  background: var(--wp--preset--color--cream);
  color: var(--wp--preset--color--ink);
  border: var(--ds-border);
}
@media (max-width: 781px) {
  .ds-topic-grid.is-layout-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .durgashakti-featured-list { grid-template-columns: 1fr; }
}
@media (max-width: 599px) {
  .ds-topic-grid.is-layout-grid { grid-template-columns: 1fr; }
}

/* Devi pages retain the shared editorial scale and omit empty facts. */
.ds-devi :where(h1, h2, p, li, dd) { overflow-wrap: anywhere; }
.ds-devi-names { font-size: var(--wp--preset--font-size--large); color: var(--wp--preset--color--sky-deep); }
.ds-devi-summary { font-size: var(--wp--preset--font-size--large); }
.ds-devi-review-note { font-size: var(--wp--preset--font-size--small); color: var(--wp--preset--color--muted); }
.wp-block-durgashakti-devi-details > section { margin-block-start: var(--wp--preset--spacing--60); }
.ds-devi-facts { padding: var(--wp--preset--spacing--40); background: var(--wp--preset--color--sky); border-top: var(--ds-border); border-radius: var(--ds-radius); }
.ds-devi-facts > div + div { margin-block-start: var(--wp--preset--spacing--30); }
.ds-devi-facts dt, .ds-source-kind { font-weight: 600; }
.ds-devi-facts dd { margin: 0; }
.ds-devi-directory .wp-block-post-template { gap: var(--wp--preset--spacing--40); }
.ds-main .ds-devi-directory .wp-block-post-template > li { margin-block-start: 0; }
@media (max-width: 781px) {
  .ds-devi-directory .wp-block-post-template.is-layout-grid { grid-template-columns: 1fr; }
}


/* Festival sections share the profile rhythm and directory layout. */
.wp-block-durgashakti-festival-details > section { margin-block-start: var(--wp--preset--spacing--60); }
.ds-festival-directory .wp-block-post-template { gap: var(--wp--preset--spacing--40); }
.ds-main .ds-festival-directory .wp-block-post-template > li { margin-block-start: 0; }
@media (max-width: 781px) {
  .ds-festival-directory .wp-block-post-template.is-layout-grid { grid-template-columns: 1fr; }
}

/* Full portrait preserved on profile pages; directory images use native 4:3 crops. */
.ds-main .ds-profile-image { max-width: min(100%, calc(var(--wp--style--global--content-size) * 0.66)); }
.ds-profile-image img { height: auto; }
.ds-main.ds-festival .ds-profile-image { max-width: var(--wp--style--global--content-size); }
.ds-main.ds-festival .ds-profile-image.ds-profile-portrait { max-width: min(100%, calc(var(--wp--style--global--content-size) * 0.66)); }
.ds-annual-update { background: var(--wp--preset--color--sky); border-inline-start: 3px solid var(--wp--preset--color--gold); padding: var(--wp--preset--spacing--40); }
.ds-annual-update h2 { font-size: var(--wp--preset--font-size--large); margin-block: 0 var(--wp--preset--spacing--20); }
.ds-annual-update p { margin-block: var(--wp--preset--spacing--20) 0; }
.ds-annual-dates { font-size: var(--wp--preset--font-size--small); }
.ds-annual-dates h3 { font-size: var(--wp--preset--font-size--medium); }
.ds-annual-dates .wp-block-table { margin-block: var(--wp--preset--spacing--30); }
.ds-annual-dates th, .ds-annual-dates td { text-align: start; overflow-wrap: anywhere; padding: var(--wp--preset--spacing--20); }
.ds-profile-image figcaption a { display: inline; height: auto; }
.ds-profile-image figcaption { color: var(--wp--preset--color--muted); font-size: var(--wp--preset--font-size--small); margin-block-start: var(--wp--preset--spacing--20); }

/* Sacred representations stay selectable and wrap without losing stanza spacing. */
.wp-block-durgashakti-prayer-text > section,
.wp-block-durgashakti-prayer-details > section { margin-block-start: var(--wp--preset--spacing--60); }
.ds-sacred-text { white-space: pre-wrap; overflow-wrap: anywhere; tab-size: 4; font-family: var(--wp--preset--font-family--body); font-size: var(--wp--preset--font-size--large); padding: var(--wp--preset--spacing--40); background: var(--wp--preset--color--sky); border-top: var(--ds-border); border-radius: var(--ds-radius); }
.ds-preserved-note { white-space: pre-wrap; overflow-wrap: anywhere; }
.ds-prayer-directory .wp-block-post-template { gap: var(--wp--preset--spacing--40); }

/* Approved homepage: existing section/card/panel components, using preset tokens. */
/* Cornerstones share the native editorial components, with a readable article measure. */
.ds-cornerstone { padding-block-start: 0; }
.ds-cornerstone > article, .ds-cornerstone .wp-block-post-content { margin-block-start: 0; }
.ds-cornerstone .ds-section { border-bottom: var(--ds-border); }
.ds-cornerstone :where(h1,h2,h3) { text-wrap: balance; overflow-wrap: anywhere; }
.ds-cornerstone .ds-hero { padding-inline: var(--wp--preset--spacing--40); }
.ds-cornerstone-title > h1 { max-width: var(--wp--style--global--wide-size); }
.ds-cornerstone .ds-hero .wp-block-columns { gap: var(--wp--preset--spacing--60); }
.ds-cornerstone .ds-artwork { margin-block: var(--wp--preset--spacing--50); }
.ds-cornerstone .ds-artwork img { height: auto; object-fit: contain; }
.ds-main .ds-sculpture-artwork { max-width: min(100%, calc(var(--wp--style--global--content-size) * 0.66)); }
.ds-cornerstone .ds-reading-links { background: var(--wp--preset--color--sky); padding: var(--wp--preset--spacing--50); border-radius: var(--ds-radius); }
.ds-cornerstone .ds-sources { font-size: var(--wp--preset--font-size--medium); }
.ds-home > .wp-block-post-content { margin-block-start: 0; }
.ds-home-editorial { border-bottom: var(--ds-border); }
.ds-home-editorial :where(h1, h2, h3) { text-wrap: balance; overflow-wrap: anywhere; }
.ds-home-editorial .wp-block-columns { gap: var(--wp--preset--spacing--60); }
.ds-home-editorial .ds-artwork { margin: 0; }
.ds-artwork img { display: block; width: 100%; height: auto; }
.ds-artwork figcaption, .ds-editorial-portrait figcaption {
 font-size: var(--wp--preset--font-size--small); color: var(--wp--preset--color--muted);
 margin-block-start: var(--wp--preset--spacing--30); line-height: 1.5;
}
.ds-shakti-intro, .ds-trust { background: var(--wp--preset--color--sky); }
.ds-editorial-cards {
 display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
 list-style: none; padding: 0; gap: var(--wp--preset--spacing--40);
}
.ds-editorial-cards > li { min-width: 0; }
.ds-editorial-cards h3 { font-size: var(--wp--preset--font-size--large); }
.ds-editorial-portrait { margin: 0 0 var(--wp--preset--spacing--40); }
.ds-editorial-portrait img {
 display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: contain;
 background: var(--wp--preset--color--cream);
}
.ds-festival-collection .ds-editorial-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ds-editorial-links { padding: var(--wp--preset--spacing--40); padding-inline-start: var(--wp--preset--spacing--50); border-top: var(--ds-border); background: var(--wp--preset--color--white); }
.ds-editorial-links li + li { margin-block-start: var(--wp--preset--spacing--30); }
.ds-home-featured { padding-block: var(--wp--preset--spacing--60); }
@media (max-width: 781px) {
 .ds-editorial-cards, .ds-festival-collection .ds-editorial-cards { grid-template-columns: 1fr; }
 .ds-home-editorial .ds-artwork { max-width: var(--wp--style--global--content-size); margin-inline: auto; }
}
.ds-main .ds-prayer-directory .wp-block-post-template > li { margin-block-start: 0; }
@media (max-width: 781px) {
  .ds-prayer-directory .wp-block-post-template.is-layout-grid { grid-template-columns: 1fr; }
}


/* One destination per Goddess card; independent attribution links stay usable. */
.ds-linked-card { position: relative; }
.ds-card-link::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.ds-linked-card:focus-within { outline: 3px solid var(--wp--preset--color--sky-deep); outline-offset: 3px; }
.ds-linked-card figcaption { position: relative; z-index: 1; pointer-events: none; }
.ds-linked-card figcaption a { pointer-events: auto; }
.ds-linked-card:hover h3 { text-decoration: underline; text-underline-offset: .15em; }
.ds-supporting-media { max-width: 20rem; margin-inline: auto; }
.ds-supporting-media img { max-height: 20rem; object-fit: contain; }
.ds-art-comparison { margin-block: var(--wp--preset--spacing--60); }
.ds-art-comparison .ds-artwork img { max-height: 28rem; object-fit: contain; }

/* Editorial media follows the reading measure. Native alignwide alone is not
 * an editorial exception: explicitly opt in with ds-wide-media / ds-panorama /
 * ds-map, or use an existing hero. Keep this shared across article templates. */
.ds-main:not(.ds-home) .wp-block-post-content :is(.wp-block-image, .wp-block-gallery, .wp-block-columns:has(.wp-block-image)):not(.ds-wide-media, .ds-panorama, .ds-map, .ds-hero-artwork, .ds-sculpture-artwork, .ds-supporting-media):not(.ds-hero *, .ds-wide-media *, .ds-panorama *, .ds-map *) {
 max-width: min(100%, var(--wp--style--global--content-size)); margin-inline: auto;
}
.ds-main .wp-block-post-content .ds-sculpture-artwork { max-width: min(100%, calc(var(--wp--style--global--content-size) * .66)); }
.ds-main .wp-block-post-content .ds-supporting-media { max-width: min(100%, 20rem); }
.ds-footer .wp-block-navigation__container { flex-direction: row; flex-wrap: wrap; gap: var(--wp--preset--spacing--30); }
.ds-footer .wp-block-navigation-item + .wp-block-navigation-item::before { content: '·'; margin-inline-end: var(--wp--preset--spacing--30); color: var(--wp--preset--color--muted); }

/* Logo proportions are independent of surrounding article typography. */
.ds-brand-logo { width: 260px; max-width: 100%; }
.ds-brand-logo a, .ds-brand-logo picture, .ds-brand-logo img { display: block; width: 100%; height: auto; }
@media (max-width: 599px) { .ds-brand-logo { width: 210px; } .ds-brand { min-width: 0; flex-shrink: 1; } }
@media (max-width: 359px) { .ds-brand-logo { width: 190px; } }

.ds-footer .ds-footer-logo { width: 200px; }
