/* E3 — styles for the dynamic features (Master's pop-up, blog, news, forms).
   Uses the design tokens defined in the main stylesheet. */

/* Elements toggled with the hidden attribute */
.mp[hidden], .mp__form[hidden], .mp__done[hidden], .news-filters[hidden], .news-grid[hidden], .news-state[hidden], .news-card[hidden] { display: none !important; }

/* ---------- Form notices ---------- */
.form-notice { padding: 1rem 1.25rem; border-radius: var(--radius); font-size: var(--text-small); line-height: 1.5; margin-bottom: var(--space-lg); }
.form-notice--ok { background: #EEF7F0; color: #1F5E33; border: 1px solid #CDE6D4; }
.form-notice--error { background: #FBEFEF; color: #8A2626; border: 1px solid #F0CFCF; }
.consult-consent { display: flex; gap: 0.6rem; align-items: flex-start; font-size: var(--text-xs); color: var(--text-secondary); line-height: 1.5; }
.consult-consent input { margin-top: 0.2rem; accent-color: var(--navy); }
.consult-consent a { text-decoration: underline; }
.hp-field { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

/* ---------- Master's pop-up ---------- */
html.mp-open { overflow: hidden; }
.mp { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; padding: 1rem; }
.mp[hidden] { display: none; }
.mp__backdrop { position: absolute; inset: 0; background: rgba(27, 33, 50, 0.55); backdrop-filter: blur(4px); opacity: 0; transition: opacity 250ms var(--ease-out); }
.mp__panel { position: relative; display: grid; grid-template-columns: 1fr; width: 100%; max-width: 920px; max-height: calc(100vh - 2rem); overflow: auto; background: var(--white); border-radius: var(--radius-lg); box-shadow: var(--shadow-xl); opacity: 0; transform: translateY(16px) scale(0.98); transition: opacity 300ms var(--ease), transform 400ms var(--ease); }
.mp.is-open .mp__backdrop { opacity: 1; }
.mp.is-open .mp__panel { opacity: 1; transform: none; }
.mp__close { position: absolute; top: 0.75rem; right: 0.75rem; z-index: 2; width: 2.25rem; height: 2.25rem; border-radius: 50%; border: 0; background: var(--cool-gray); color: var(--navy); cursor: pointer; display: flex; align-items: center; justify-content: center; }
.mp__close:hover { background: var(--gold-muted); }
.mp__aside { display: none; background: var(--navy); color: var(--white); padding: 2.5rem 2rem; border-radius: var(--radius-lg) 0 0 var(--radius-lg); position: relative; overflow: hidden; }
.mp__aside::after { content: ""; position: absolute; right: -60px; bottom: -60px; width: 220px; height: 220px; border-radius: 50%; border: 1px solid rgba(231,193,120,0.25); }
.mp__logo { width: 64px; height: auto; margin-bottom: 2rem; }
.mp__eyebrow { font-family: var(--font-mono); font-size: var(--text-label); letter-spacing: var(--ls-label); text-transform: uppercase; color: var(--gold); }
.mp__aside-title { font-family: var(--font-display); font-size: 1.625rem; line-height: 1.2; font-weight: 500; margin: 0.75rem 0 1.5rem; color: var(--white); }
.mp__points { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.75rem; font-size: var(--text-small); color: var(--blue-gray); }
.mp__points li { padding-left: 1.25rem; position: relative; }
.mp__points li::before { content: ""; position: absolute; left: 0; top: 0.55em; width: 0.5rem; height: 1px; background: var(--gold); }
.mp__body { padding: 2.25rem 1.5rem 1.75rem; }
.mp__title { font-size: clamp(1.375rem, 2vw + 0.75rem, 1.875rem); line-height: 1.15; padding-right: 2rem; }
.mp__lead { color: var(--text-secondary); font-size: var(--text-small); margin: 0.5rem 0 1.5rem; }
.mp__form { display: grid; gap: 1.1rem; }
.mp__row { display: grid; grid-template-columns: 1fr; gap: 1.1rem; }
.mp__hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.mp__consent { display: flex; gap: 0.6rem; align-items: flex-start; font-size: var(--text-xs); color: var(--text-secondary); line-height: 1.5; }
.mp__consent input { margin-top: 0.2rem; accent-color: var(--navy); }
.mp__consent a { text-decoration: underline; }
.mp__status { font-size: var(--text-xs); min-height: 0; }
.mp__status.is-error { color: #8A2626; }
.mp__submit { justify-self: start; }

.mp.is-done #mp-title, .mp.is-done .mp__body > .mp__lead { display: none; }
.mp__done { text-align: center; padding: 2rem 0; }
.mp__done .mp__title { padding: 0; }
.mp__done-icon { width: 3.5rem; height: 3.5rem; margin: 0 auto 1rem; border-radius: 50%; background: var(--gold-muted); color: var(--navy); display: flex; align-items: center; justify-content: center; }
@media (min-width: 640px) { .mp__row { grid-template-columns: 1fr 1fr; } .mp__body { padding: 2.5rem 2.25rem 2rem; } }
@media (min-width: 860px) { .mp__panel { grid-template-columns: 0.8fr 1.2fr; } .mp__aside { display: block; } }

.mp-tab { position: fixed; left: 1rem; bottom: 1rem; z-index: 900; display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.7rem 1.1rem; border: 1px solid rgba(231,193,120,0.4); border-radius: 999px; background: var(--navy); color: var(--white); font-family: var(--font-body); font-size: var(--text-xs); font-weight: 500; cursor: pointer; box-shadow: var(--shadow-lg); transition: transform var(--duration) var(--ease); }
.mp-tab:hover { transform: translateY(-2px); }
.mp-tab__dot { width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--gold); box-shadow: 0 0 0 4px rgba(231,193,120,0.25); }

/* ---------- Blog ---------- */
.blog-grid { display: grid; grid-template-columns: 1fr; gap: var(--space-xl); }
@media (min-width: 720px) { .blog-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1100px) { .blog-grid { grid-template-columns: 1fr 1fr 1fr; } }
.blog-card { display: flex; flex-direction: column; background: var(--white); border: 1px solid var(--cool-gray); border-radius: var(--radius-lg); overflow: hidden; transition: transform var(--duration) var(--ease), box-shadow var(--duration) var(--ease); }
.blog-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.blog-card__media { aspect-ratio: 16 / 9; background: linear-gradient(135deg, var(--navy) 0%, var(--navy-light) 100%); position: relative; overflow: hidden; }
.blog-card__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.blog-card__placeholder { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; }
.blog-card__placeholder img { width: 72px; height: auto; object-fit: contain; opacity: 0.9; }
.blog-card__body { padding: 1.5rem; display: flex; flex-direction: column; gap: 0.75rem; flex: 1; }
.blog-meta { font-family: var(--font-mono); font-size: var(--text-label); letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-tertiary); }
.blog-card__title { font-size: var(--text-h3); line-height: 1.25; }
.blog-card__title a:hover { color: var(--navy-light); }
.blog-card__excerpt { font-size: var(--text-small); color: var(--text-secondary); line-height: 1.6; flex: 1; }
.blog-card__more { font-size: var(--text-xs); font-weight: 600; color: var(--navy); display: inline-flex; align-items: center; gap: 0.375rem; }
.blog-card__more:hover { color: var(--gold); }
.blog-empty { text-align: center; padding: var(--space-3xl) 0; color: var(--text-secondary); }
.pager { display: flex; justify-content: center; gap: 0.5rem; margin-top: var(--space-2xl); }
.pager a, .pager span { min-width: 2.5rem; height: 2.5rem; padding: 0 0.75rem; display: inline-flex; align-items: center; justify-content: center; border-radius: var(--radius); border: 1px solid var(--cool-gray); font-size: var(--text-small); }
.pager .is-current { background: var(--navy); color: var(--white); border-color: var(--navy); }

.post-hero__meta { margin-top: var(--space-lg); font-family: var(--font-mono); font-size: var(--text-label); letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-secondary); }
.post-cover { max-width: var(--container-tight); margin: calc(-1 * var(--space-2xl)) auto 0; padding: 0 var(--space-md); position: relative; }
.post-cover img { width: 100%; border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); display: block; }
.post-body { max-width: var(--container-text); margin: 0 auto; font-size: var(--text-body-lg); line-height: 1.75; color: var(--text-secondary); }
.post-body > * + * { margin-top: 1.25em; }
.post-body h2 { font-size: var(--text-h2); color: var(--navy); margin-top: 1.75em; }
.post-body h3 { font-size: var(--text-h3); color: var(--navy); margin-top: 1.5em; }
.post-body a { color: var(--navy); text-decoration: underline; text-decoration-color: var(--gold); text-underline-offset: 3px; }
.post-body ul, .post-body ol { padding-left: 1.25em; }
.post-body ul { list-style: disc; } .post-body ol { list-style: decimal; }
.post-body li + li { margin-top: 0.4em; }
.post-body blockquote { border-left: 2px solid var(--gold); padding-left: 1.25em; font-family: var(--font-accent); font-style: italic; color: var(--navy); }
.post-body img { max-width: 100%; height: auto; border-radius: var(--radius); }
.post-back { display: inline-flex; align-items: center; gap: 0.4rem; font-size: var(--text-xs); font-weight: 600; color: var(--navy); margin-bottom: var(--space-xl); }
.post-back:hover { color: var(--gold); }

/* ---------- News ---------- */
.news-filters { display: flex; gap: 0.5rem; flex-wrap: wrap; margin-bottom: var(--space-xl); }
.news-filter { padding: 0.5rem 1rem; border-radius: 999px; border: 1px solid var(--cool-gray); background: var(--white); font-size: var(--text-xs); font-weight: 500; color: var(--text-secondary); cursor: pointer; }
.news-filter.is-active { background: var(--navy); border-color: var(--navy); color: var(--white); }
.news-grid { display: grid; grid-template-columns: 1fr; gap: var(--space-xl); }
@media (min-width: 720px) { .news-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1100px) { .news-grid { grid-template-columns: 1fr 1fr 1fr; } }
.news-card { display: flex; flex-direction: column; background: var(--white); border: 1px solid var(--cool-gray); border-radius: var(--radius-lg); overflow: hidden; transition: transform var(--duration) var(--ease), box-shadow var(--duration) var(--ease); }
.news-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.news-card__media { aspect-ratio: 1 / 1; background: var(--ivory); overflow: hidden; }
.news-card__media img, .news-card__media video { width: 100%; height: 100%; object-fit: cover; display: block; }
.news-card__body { padding: 1.25rem 1.5rem 1.5rem; display: flex; flex-direction: column; gap: 0.75rem; flex: 1; }
.news-card__source { display: inline-flex; align-items: center; gap: 0.4rem; font-size: var(--text-label); font-family: var(--font-mono); letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-secondary); }
.news-card__source svg { color: var(--gold); }
.news-card__text { font-size: var(--text-small); color: var(--text-secondary); line-height: 1.6; white-space: pre-line; display: -webkit-box; -webkit-line-clamp: 6; -webkit-box-orient: vertical; overflow: hidden; flex: 1; }
.news-card__link { font-size: var(--text-xs); font-weight: 600; color: var(--navy); }
.news-card__link:hover { color: var(--gold); }
.news-state { text-align: center; padding: var(--space-2xl) 0; color: var(--text-secondary); }
.news-follow { display: grid; grid-template-columns: 1fr; gap: var(--space-lg); max-width: 720px; margin: var(--space-xl) auto 0; }
@media (min-width: 640px) { .news-follow { grid-template-columns: 1fr 1fr; } }
.news-follow a { display: flex; align-items: center; gap: 1rem; padding: 1.25rem 1.5rem; border-radius: var(--radius-lg); background: var(--ivory); color: var(--navy); font-weight: 500; text-align: left; }
.news-follow a:hover { background: var(--ivory-warm); }
.news-skeleton { height: 420px; border-radius: var(--radius-lg); background: linear-gradient(90deg, var(--cool-gray) 0%, var(--off-white) 50%, var(--cool-gray) 100%); background-size: 200% 100%; animation: news-shimmer 1.4s infinite; }
@keyframes news-shimmer { to { background-position: -200% 0; } }

/* ---------- Header: room for the longer menu ---------- */
.header .header__link, .header .header__phone { white-space: nowrap !important; }
@media (min-width: 1024px) and (max-width: 1299px) {
  .header .header__nav { gap: 1.25rem !important; }
  .header .header__phone, .header .header__divider { display: none !important; }
}
@media (min-width: 1024px) and (max-width: 1119px) {
  .header .header__nav { gap: 0.9rem !important; }
  .header .header__cta { padding-left: 0.9rem !important; padding-right: 0.9rem !important; }
}
