/* ΙΦΙ CMS — additions on top of the original template stylesheet (same design tokens). */

/* Accessibility helpers */
.skip-link { position: absolute; left: 1rem; top: -4rem; z-index: 100; padding: .7rem 1rem; background: var(--deep); color: var(--ivory); font-size: .7rem; transition: top .2s; }
.skip-link:focus { top: 1rem; }
.cms-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.cms-form-error { color: #9b2c1f; font-size: .72rem; line-height: 1.5; }
.site-footer .cms-form-error { color: #f0b3a6; padding-top: .5rem; }
.search-results a[hidden] { display: none; }

/* Admin bar (only for logged-in editors) */
.cms-adminbar { position: fixed; z-index: 80; right: 1rem; bottom: 1rem; display: flex; gap: 1rem; align-items: center; padding: .55rem .9rem; background: var(--deep); color: var(--ivory); font-size: .66rem; letter-spacing: .04em; box-shadow: 0 6px 24px rgb(0 0 0 / .18); }
.cms-adminbar a { text-decoration: underline; text-underline-offset: 3px; }

/* Links added around existing elements keep the original look */
.cms-media { display: block; }
.rs-rows li.rs-flip > a.cms-media { order: 2; }
.cms-title-link { transition: color .3s; }
.cms-title-link:hover, .cms-media:hover + * .cms-title-link { color: var(--ip-accent); }
.cms-media img { transition: opacity .4s, filter .4s; }
.cms-media:hover img { opacity: .88; }
.cms-more { display: inline-flex; align-items: center; gap: .55rem; margin-top: 1.3rem; font-size: .66rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
.cms-more svg { width: .85rem; height: .85rem; transition: transform .3s; }
.cms-more:hover svg { transform: translate(2px, -2px); }
.ip-dissem-features .cms-media { display: block; }
.cms-index-link h2 a { transition: color .3s; }
.cms-nw-link { display: block; }
.cms-nw-link:hover span { text-decoration: underline; text-underline-offset: 3px; }
.cms-person-aff { margin-top: .2rem !important; font-size: .75rem; line-height: 1.6; opacity: .75; }
.rs-partner[href] { cursor: pointer; }
.rs-logo { display: block; height: 3.2rem; width: auto; max-width: 11rem; object-fit: contain; filter: grayscale(1); opacity: .65; transition: filter .35s, opacity .35s; }
.rs-partner:hover .rs-logo, .rs-partner:focus-visible .rs-logo { filter: none; opacity: 1; }
.cms-subsection { margin-top: 5rem; }
.ip .cms-subsection .rs-head { margin-bottom: 2.5rem; }
.cms-section-body { max-width: 46rem; margin: 0 0 4rem; }
.cms-mb-body > p { margin: 0; font: 400 clamp(1.1rem, 1.5vw, 1.35rem)/1.45 var(--font-display); color: var(--deep); }
.cms-mb-body > p + p { margin-top: 1rem; }
.cms-mb-note { margin-top: 1.4rem; font-size: .8rem; }
.news-entry > time { color: var(--sage); }
.footer-details > :first-child { margin-top: 0; }
.footer-details > :last-child { margin-bottom: 0; }
.footer-details a { text-decoration: none; }
.footer-details a:hover { text-decoration: underline; text-underline-offset: 3px; }

/* Rich text */
.cms-prose { font-size: .92rem; line-height: 1.8; color: var(--deep); overflow-wrap: anywhere; }
.cms-prose > :first-child { margin-top: 0; }
.cms-prose p { margin: 0 0 1.3em; }
.cms-prose h2, .cms-prose h3, .cms-prose h4 { margin: 2.2em 0 .7em; font-family: var(--font-display); font-weight: 400; line-height: 1.1; color: var(--deep); }
.cms-prose h2 { font-size: clamp(1.7rem, 2.4vw, 2.3rem); }
.cms-prose h3 { font-size: clamp(1.35rem, 1.8vw, 1.7rem); }
.cms-prose h4 { font-size: 1.15rem; }
.cms-prose ul, .cms-prose ol { margin: 0 0 1.4em; padding-left: 1.3em; }
.cms-prose li { margin: .35em 0; }
.cms-prose li::marker { color: var(--ip-accent, var(--taupe)); }
.cms-prose blockquote { margin: 2em 0; padding: .2em 0 .2em 1.6rem; border-left: 1px solid var(--deep); font: italic 400 clamp(1.3rem, 1.8vw, 1.6rem)/1.4 var(--font-display); }
.cms-prose a { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.cms-prose a:hover { color: var(--ip-accent, var(--sage)); }
.cms-prose hr { margin: 2.5em 0; border: 0; border-top: 1px solid var(--border); }
.person-biography h2, .person-biography h3 { font-family: var(--font-display); font-weight: 400; }
.person-biography ul { font-size: .9rem; line-height: 1.8; }

/* Article page */
.cms-article { max-width: 72rem; }
.cms-article-head { margin: 4rem 0 3rem; max-width: 56rem; }
.cms-article-kicker { display: flex; align-items: center; gap: .7rem; margin: 0 0 1.6rem !important; font-size: .66rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
.cms-article-kicker time { font-weight: 500; }
.ip .cms-article-head h1 { margin: 0 0 1.4rem; font: 400 clamp(2.6rem, 5vw, 4.6rem)/1 var(--font-display); color: var(--deep); }
.cms-article-subtitle { margin: 0 0 1rem !important; font: italic 400 clamp(1.2rem, 1.6vw, 1.5rem)/1.3 var(--font-display); }
.cms-article-lead { max-width: 46rem; font: 400 clamp(1.1rem, 1.4vw, 1.35rem)/1.5 var(--font-display); opacity: .85; }
.cms-cover { margin: 0 0 3.5rem; }
.cms-cover img { width: 100%; max-height: 78vh; object-fit: cover; }
.cms-article-body { max-width: 46rem; margin-left: clamp(0rem, 12vw, 12rem); }
.cms-block { margin: 5rem 0 0; padding-top: 2rem; border-top: 1px solid var(--border); }
.cms-block-title { display: flex; align-items: center; gap: .7rem; margin: 0 0 2rem !important; font: 600 .7rem/1 var(--font-sans) !important; letter-spacing: .08em; text-transform: uppercase; }
.cms-info-article .cms-info-body { margin-left: 25%; max-width: 46rem; }
.cms-info-article .cms-block { margin-top: 3.5rem; }

/* Gallery + lightbox */
.cms-gallery { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin: 0; padding: 0; list-style: none; }
.cms-gallery a { display: block; overflow: hidden; background: var(--stone); }
.cms-gallery img { width: 100%; aspect-ratio: 1; object-fit: cover; transition: transform .6s, opacity .3s; }
.cms-gallery a:hover img { transform: scale(1.04); }
.cms-lightbox { position: fixed; inset: 0; z-index: 120; display: none; grid-template-columns: 4rem 1fr 4rem; align-items: center; background: color-mix(in srgb, var(--deep) 94%, transparent); color: var(--ivory); }
.cms-lightbox.is-open { display: grid; }
.cms-lightbox figure { margin: 0; display: grid; justify-items: center; gap: 1rem; max-height: 100svh; padding: 3rem 0; }
.cms-lightbox img { max-width: 100%; max-height: calc(100svh - 8rem); object-fit: contain; }
.cms-lightbox figcaption { font-size: .75rem; opacity: .8; text-align: center; }
.cms-lightbox button { background: none; border: 0; color: inherit; font-size: 1.8rem; line-height: 1; cursor: pointer; padding: 1rem; }
.cms-lightbox button:hover { opacity: .7; }
.cms-lb-close { position: absolute; top: .5rem; right: .8rem; font-size: 2.4rem !important; }

/* Videos */
.cms-videos { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2rem; }
.cms-video-item { margin: 0; }
.cms-video { position: relative; aspect-ratio: 16/9; background: var(--deep); }
.cms-video.is-audio { aspect-ratio: auto; height: 166px; background: transparent; }
.cms-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.cms-video.is-audio iframe { position: static; height: 166px; }
.cms-video-item figcaption { margin-top: .8rem; font-size: .75rem; opacity: .8; }

/* Documents */
.cms-files { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--border); max-width: 52rem; }
.cms-files a { display: grid; grid-template-columns: 1.2rem minmax(0, 1fr) auto auto; gap: 1rem; align-items: center; padding: 1.1rem 0; border-bottom: 1px solid var(--border); font-size: .8rem; transition: padding-left .3s; }
.cms-files a:hover { padding-left: .5rem; }
.cms-files svg { width: 1.1rem; height: 1.1rem; }
.cms-file-name { font: 400 1.15rem/1.2 var(--font-display); }
.cms-file-meta { font-size: .64rem; letter-spacing: .06em; opacity: .65; white-space: nowrap; }
.cms-file-dl { display: inline-flex; align-items: center; gap: .4rem; font-size: .64rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
.cms-file-dl svg { width: .85rem; height: .85rem; }

/* Generic cards */
.cms-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 3rem 2rem; margin: 0; padding: 0; list-style: none; }
.cms-card > a, .cms-card { display: flex; flex-direction: column; }
.cms-card-media img { width: 100%; aspect-ratio: 16/10; object-fit: cover; margin-bottom: 1.4rem; transition: opacity .4s; }
.cms-card.is-link:hover .cms-card-media img { opacity: .88; }
.cms-card-copy { display: grid; gap: .7rem; }
.cms-card-date { font-size: .64rem; letter-spacing: .06em; text-transform: uppercase; color: var(--sage); }
.cms-card-title { display: flex; align-items: baseline; gap: .7rem; font: 400 clamp(1.5rem, 2vw, 2rem)/1.08 var(--font-display); }
.cms-card-title .ip-dot { flex: none; transform: translateY(-.15em); }
.cms-card.is-link:hover .cms-card-title { color: var(--ip-accent); }
.cms-card-intro { font-size: .84rem; line-height: 1.7; }
.cms-card-more { display: inline-flex; align-items: center; gap: .5rem; margin-top: .4rem; font-size: .64rem; font-weight: 600; text-transform: uppercase; }
.cms-card-more svg { width: .85rem; height: .85rem; }
.cms-home-list .cms-cards { margin-top: var(--space-heading); }
.cms-home-list-intro { max-width: 36rem; margin: 2rem 0 0; font-size: .85rem; line-height: 1.7; }
.cms-home-list > .section-label { padding-bottom: var(--space-label); border-bottom: 1px solid var(--border); }

/* Search: overlay results + page */
.search-results .cms-sr-line { display: grid; gap: .3rem; text-align: left; }
.search-results .cms-sr-line small { font-size: .56rem; letter-spacing: .08em; opacity: .6; }
.search-results .cms-search-all { font-weight: 600; }
.cms-search-none { grid-column: 1 / -1; margin: 0; padding: 1rem 0; font-size: .75rem; }
.cms-search-form { margin-left: 25%; max-width: 46rem; display: grid; grid-template-columns: 1fr auto; border-bottom: 1px solid var(--deep); }
.cms-search-form input { min-width: 0; border: 0; outline: 0; background: transparent; padding: .5rem 0 .8rem; font: 400 clamp(1.8rem, 3vw, 2.6rem)/1.1 var(--font-display); color: var(--deep); }
.cms-search-form input::-webkit-search-cancel-button { display: none; }
.cms-search-form button { border: 0; background: none; cursor: pointer; padding: 0 .3rem; color: var(--deep); }
.cms-search-form svg { width: 1.3rem; height: 1.3rem; }
.cms-search-results { margin-left: 25%; max-width: 52rem; }
.cms-search-summary, .cms-search-empty { margin: 0 0 1.5rem; font-size: .75rem; color: var(--sage); }
.cms-search-page .cms-search-results ol { margin: 0; border-top: 1px solid var(--border); }
.cms-search-page .cms-search-results li { display: block; padding: 0; }
.cms-search-results li a { display: grid; gap: .4rem; padding: 1.4rem 0; transition: padding-left .3s; }
.cms-search-results li a:hover { padding-left: .6rem; }
.cms-sr-section { font-size: .6rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--sage); }
.cms-sr-title { font: 400 clamp(1.4rem, 2vw, 1.9rem)/1.1 var(--font-display); }
.cms-sr-excerpt { font-size: .8rem; line-height: 1.6; max-width: 40rem; }

@media (max-width: 900px) {
  .cms-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cms-gallery { grid-template-columns: repeat(3, 1fr); }
  .cms-videos { grid-template-columns: 1fr; }
  .cms-article-body { margin-left: 0; }
}
@media (max-width: 700px) {
  .cms-cards { grid-template-columns: 1fr; }
  .cms-gallery { grid-template-columns: repeat(2, 1fr); gap: .6rem; }
  .cms-info-article .cms-info-body, .cms-search-form, .cms-search-results { margin-left: 0; }
  .cms-files a { grid-template-columns: 1.2rem minmax(0, 1fr) auto; }
  .cms-file-meta { display: none; }
  .cms-lightbox { grid-template-columns: 2.5rem 1fr 2.5rem; }
  .cms-adminbar { left: 1rem; right: auto; }
}
@media print {
  .site-header, .menu-overlay, .search-overlay, .site-footer, .cms-adminbar, .section-page-back { display: none !important; }
  .ip, .section-page { padding-top: 1rem; }
}
