/* ==========================================================================
   Pearl IMS — single & archive templates for the custom post types
   (single-case_study, single-pim_news, single-pim_event,
    single-product_update, single-pim_video, single-pim_gallery,
    archive-*.php)

   Loaded conditionally via pim_conditional_stylesheets() in inc/setup.php.
   ========================================================================== */

/* ---- Reading-width containers ------------------------------------------- */
.pim-container--760{ max-width:760px; }
.pim-container--900{ max-width:900px; }
.pim-container--980{ max-width:980px; }

/* ---- Back link ----------------------------------------------------------- */
.pim-back-link{ display:inline-flex; align-items:center; gap:8px; font-weight:600; font-size:13px; color:var(--pim-text-muted-2); text-decoration:none; transition:gap .18s ease, color .15s ease; }
.pim-back-link:hover{ gap:12px; color:var(--pim-blue); }
.pim-back-link--on-dark{ color:var(--pim-blue-soft-2); }
.pim-back-link--on-dark:hover{ color:#fff; }
.pim-back-link__icon{ display:inline-flex; }

/* ==========================================================================
   CASE STUDY
   ========================================================================== */

/* Hero (dark) */
.pim-cs-hero{ position:relative; overflow:hidden; background:var(--pim-navy-2); color:#fff; }
.pim-cs-hero__inner{ position:relative; padding:48px 0 64px; }
.pim-cs-hero__brand{ margin-top:26px; display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.pim-cs-hero__logo{ width:48px; height:48px; border-radius:12px; background:#fff; flex:none; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.pim-cs-hero__logo img{ width:100%; height:100%; object-fit:contain; padding:4px; }
.pim-cs-hero__logo--fallback{ background:rgba(255,255,255,.9); }
.pim-cs-hero__school{ font-weight:700; font-size:16px; color:#fff; }
.pim-cs-hero__badge{ margin-left:auto; color:var(--pim-blue-soft-2); background:rgba(127,160,255,.14); padding:7px 13px; border-radius:999px; letter-spacing:.06em; }
.pim-cs-hero__title{ margin:24px 0 0; font-weight:800; font-size:clamp(30px,4.4vw,48px); line-height:1.08; letter-spacing:-.03em; color:#fff; text-wrap:balance; }
.pim-cs-hero__stats{ margin-top:36px; display:flex; flex-wrap:wrap; gap:40px; }
.pim-cs-hero__stat{ min-width:96px; }
.pim-cs-hero__stat-num{ font-weight:800; font-size:32px; line-height:1.1; letter-spacing:-.02em; color:#fff; }
.pim-cs-hero__stat-label{ margin-top:5px; font-size:13.5px; color:var(--pim-on-dark-muted); }

/* Overlapping hero photo */
.pim-cs-hero-photo{ background:#fff; }
.pim-cs-hero-photo__card{ position:relative; margin-top:-44px; border-radius:16px; overflow:hidden; border:1px solid var(--pim-border); box-shadow:0 24px 50px -28px rgba(12,19,49,.4); aspect-ratio:16/8; }
.pim-cs-hero-photo__card img{ width:100%; height:100%; object-fit:cover; display:block; }

/* Body shell */
.pim-cs-body{ padding:56px 0; }
.pim-cs-subsection{ padding-bottom:40px; margin-bottom:40px; border-bottom:1px solid var(--pim-border-4); }
.pim-cs-subsection:last-child{ border-bottom:none; margin-bottom:0; padding-bottom:0; }
.pim-cs-h3{ margin:14px 0 0; font-weight:800; font-size:clamp(22px,3vw,30px); line-height:1.15; letter-spacing:-.02em; color:var(--pim-text); }

/* About the school */
.pim-cs-about{ display:flex; flex-wrap:wrap; gap:40px; }
.pim-cs-about__copy{ flex:1 1 280px; min-width:min(260px,100%); }
.pim-cs-about__copy p{ margin-top:14px; font-size:16.5px; line-height:1.7; color:#2A3147; }
.pim-cs-facts{ flex:1 1 200px; min-width:min(200px,100%); margin:0; align-self:start; }
.pim-cs-facts__row{ display:flex; align-items:baseline; justify-content:space-between; gap:16px; padding:12px 0; border-bottom:1px dashed var(--pim-border-2); }
.pim-cs-facts__row:last-child{ border-bottom:none; }
.pim-cs-facts dt{ font-size:13.5px; color:var(--pim-text-faint); }
.pim-cs-facts dd{ margin:0; font-weight:700; font-size:15px; color:var(--pim-text); }

/* Challenge bullet list */
.pim-cs-challenge-list{ margin:22px 0 0; display:flex; flex-direction:column; gap:14px; }
.pim-cs-challenge-list li{ display:flex; align-items:flex-start; gap:12px; font-size:15.5px; line-height:1.6; color:#3A415A; }
.pim-cs-challenge-list__icon{ flex:none; margin-top:1px; color:var(--pim-orange); display:inline-flex; }

/* Modules implemented */
.pim-module-grid{ margin-top:22px; display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:12px; }
.pim-module-tile{ display:flex; align-items:center; gap:10px; padding:14px 16px; border:1px solid var(--pim-border); border-radius:12px; background:#fff; }
.pim-module-tile__icon{ flex:none; display:inline-flex; color:var(--pim-text-faint-2); }
.pim-module-tile__label{ font-weight:700; font-size:14.5px; color:var(--pim-text-faint); }
.pim-module-tile.is-checked{ border-color:#CFDAFB; background:var(--pim-blue-light); }
.pim-module-tile.is-checked .pim-module-tile__icon{ color:var(--pim-blue); }
.pim-module-tile.is-checked .pim-module-tile__label{ color:var(--pim-text); }

/* Implementation timeline */
.pim-cs-timeline{ margin-top:24px; }
.pim-cs-timeline__item{ display:flex; gap:18px; }
.pim-cs-timeline__rail{ flex:none; width:14px; display:flex; flex-direction:column; align-items:center; }
.pim-cs-timeline__dot{ width:14px; height:14px; border-radius:50%; background:var(--pim-blue); box-shadow:0 0 0 4px rgba(27,63,224,.12); flex:none; margin-top:4px; }
.pim-cs-timeline__line{ flex:1; width:2px; background:var(--pim-border-2); margin:6px 0 0; }
.pim-cs-timeline__item.is-final .pim-cs-timeline__dot{ background:var(--pim-green); box-shadow:0 0 0 4px rgba(27,138,90,.14); }
.pim-cs-timeline__body{ flex:1; padding-bottom:28px; }
.pim-cs-timeline__item.is-last .pim-cs-timeline__body{ padding-bottom:0; }
.pim-cs-timeline__phase{ display:block; font:600 11px/1 var(--pim-font-mono); letter-spacing:.08em; color:var(--pim-blue); }
.pim-cs-timeline__item.is-final .pim-cs-timeline__phase{ color:var(--pim-green); }
.pim-cs-timeline__title{ margin:8px 0 0; font-weight:700; font-size:17px; color:var(--pim-text); }
.pim-cs-timeline__desc{ margin:6px 0 0; font-size:15px; line-height:1.6; color:var(--pim-text-muted-2); }

/* Results */
.pim-cs-results-grid{ margin-top:22px; display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:16px; }
.pim-cs-result-tile{ background:var(--pim-surface-tint-2); border:1px solid var(--pim-border-4); border-radius:14px; padding:24px; }
.pim-cs-result-tile__num{ font-weight:800; font-size:34px; line-height:1.1; letter-spacing:-.02em; color:var(--pim-blue); }
.pim-cs-result-tile__label{ margin-top:6px; font-size:13.5px; color:var(--pim-text-muted-2); }

/* Principal testimonial */
.pim-cs-testimonial{ margin:40px 0; background:var(--pim-navy-2); color:#fff; border-radius:var(--pim-radius-xl); padding:44px; }
.pim-cs-testimonial__quote-mark{ display:block; font:800 46px/1 Georgia,serif; color:var(--pim-blue-soft); }
.pim-cs-testimonial__quote{ margin:10px 0 0; font-weight:700; font-size:22px; line-height:1.45; letter-spacing:-.01em; color:#fff; }
.pim-cs-testimonial__figure{ margin:28px 0 0; display:flex; align-items:center; gap:14px; }
.pim-cs-testimonial__avatar{ width:48px; height:48px; border-radius:50%; background:rgba(255,255,255,.12); flex:none; overflow:hidden; }
.pim-cs-testimonial__avatar img{ width:100%; height:100%; object-fit:cover; }
.pim-cs-testimonial__figure figcaption,
.pim-cs-testimonial__figure > div{ font-size:14.5px; color:var(--pim-on-dark-muted); }
.pim-cs-testimonial__figure strong{ display:block; color:#fff; font-size:15px; }

/* Screenshots & gallery */
.pim-cs-gallery-grid{ margin-top:22px; display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:12px; }
.pim-cs-gallery-grid__item{ border-radius:12px; overflow:hidden; border:1px solid var(--pim-border); aspect-ratio:4/3; display:block; }
.pim-cs-gallery-grid__item img{ width:100%; height:100%; object-fit:cover; display:block; }
.pim-cs-gallery-grid__item figcaption{ font-size:12.5px; color:var(--pim-text-faint); padding:8px 10px; }

/* Related stories */
.pim-cs-related{ margin-top:8px; }
.pim-cs-related__title{ margin:0 0 18px; font-weight:800; font-size:22px; letter-spacing:-.02em; color:var(--pim-text); }

/* ==========================================================================
   NEWS ARTICLE
   ========================================================================== */
.pim-article-header{ background:#fff; border-bottom:1px solid #F0F2F8; padding:48px 0 0; }
.pim-article-header__eyebrow-row{ margin-top:22px; display:flex; align-items:center; gap:10px; flex-wrap:wrap; font:600 11px/1 var(--pim-font-mono); letter-spacing:.06em; color:var(--pim-text-faint); }
.pim-article-header__eyebrow-row .pim-tag-mono{ color:var(--pim-blue); background:var(--pim-blue-light); padding:6px 11px; border-radius:999px; }
.pim-article-header__sep{ color:var(--pim-text-faint-2); }
.pim-article-header__readtime{ color:var(--pim-text-faint); }
.pim-article-header__title{ margin:18px 0 0; font-weight:800; font-size:clamp(30px,4.2vw,48px); line-height:1.1; letter-spacing:-.03em; color:var(--pim-text); text-wrap:balance; }
.pim-article-header__dek{ margin:18px 0 0; font-size:19px; line-height:1.6; color:var(--pim-text-muted); }
.pim-article-header__byline{ margin:28px 0 0; padding-bottom:28px; display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap; }
.pim-article-header__byline-left{ display:flex; align-items:center; gap:12px; font-size:14px; color:var(--pim-text-muted-2); }
.pim-article-header__avatar{ width:42px; height:42px; border-radius:50%; background:#E2E6F2; flex:none; overflow:hidden; }
.pim-article-header__avatar img{ width:100%; height:100%; object-fit:cover; }
.pim-article-header__byline-left strong{ color:var(--pim-text); }
.pim-article-header__date{ color:var(--pim-text-faint); }
.pim-article-header__share{ display:flex; gap:10px; }
.pim-share-icon{ width:38px; height:38px; border-radius:10px; border:1px solid var(--pim-border); display:flex; align-items:center; justify-content:center; color:var(--pim-text-muted-2); text-decoration:none; transition:border-color .15s ease, color .15s ease; }
.pim-share-icon:hover{ border-color:var(--pim-blue); color:var(--pim-blue); }
.pim-article-header__hero{ margin-top:0; border-radius:16px; overflow:hidden; border:1px solid var(--pim-border); aspect-ratio:16/7; }
.pim-article-header__hero img{ width:100%; height:100%; object-fit:cover; display:block; }

.pim-article-body-section{ background:#fff; padding:48px 0 64px; }
.pim-article-body-wrap{ display:flex; gap:48px; align-items:flex-start; }
.pim-article-toc{ flex:1 1 200px; min-width:min(180px,100%); position:sticky; top:90px; }
.pim-article-toc__label{ display:block; text-transform:uppercase; letter-spacing:.1em; color:var(--pim-text-faint-2); margin-bottom:14px; }
.pim-article-toc__nav{ display:flex; flex-direction:column; gap:12px; border-left:2px solid var(--pim-border-3); }
.pim-article-toc__link{ padding-left:16px; font-size:14px; line-height:1.4; color:var(--pim-text-muted-2); text-decoration:none; border-left:2px solid transparent; margin-left:-2px; transition:color .15s ease, border-color .15s ease; }
.pim-article-toc__link:hover{ color:var(--pim-blue); }
.pim-article-toc__link.is-active{ color:var(--pim-blue); font-weight:700; border-left-color:var(--pim-blue); }
.pim-article-body{ flex:3 1 460px; min-width:0; }
.pim-article-related{ background:var(--pim-surface-tint-2); border-top:1px solid var(--pim-border-4); padding:64px 0; }
.pim-article-related h2{ margin:0 0 24px; font-weight:800; font-size:26px; letter-spacing:-.02em; color:var(--pim-text); }

@media (max-width: 860px){
	.pim-article-body-wrap{ flex-direction:column; gap:32px; }
	.pim-article-toc{ position:static; width:100%; }
	.pim-article-toc__nav{ gap:10px; }
}

/* ==========================================================================
   EVENT
   ========================================================================== */
.pim-event-banner{ position:relative; overflow:hidden; background:var(--pim-navy-2); color:#fff; }
.pim-event-banner__inner{ position:relative; padding:48px 0 56px; }
.pim-event-banner__pill{ display:inline-block; margin-top:22px; font:600 11px/1 var(--pim-font-mono); letter-spacing:.08em; color:var(--pim-blue-soft-2); background:rgba(127,160,255,.14); padding:8px 14px; border-radius:999px; }
.pim-event-banner h1{ margin:20px 0 0; font-weight:800; font-size:clamp(32px,4.6vw,52px); line-height:1.08; letter-spacing:-.03em; color:#fff; text-wrap:balance; }
.pim-event-banner__meta{ margin-top:26px; display:flex; flex-wrap:wrap; gap:28px; }
.pim-event-banner__meta-item{ display:flex; align-items:center; gap:9px; font-size:15px; color:var(--pim-on-dark-muted); }
.pim-event-banner__meta-item svg{ color:var(--pim-blue-soft); flex:none; }

.pim-event-main-section{ background:#fff; padding:48px 0; }
.pim-event-main-wrap{ display:flex; gap:48px; align-items:flex-start; flex-wrap:wrap; }
.pim-event-main{ flex:3 1 460px; min-width:min(280px,100%); }
.pim-event-main__banner{ border-radius:16px; overflow:hidden; border:1px solid var(--pim-border); aspect-ratio:16/7; margin-bottom:36px; }
.pim-event-main__banner img{ width:100%; height:100%; object-fit:cover; display:block; }
.pim-event-main__subsection{ margin-bottom:40px; }
.pim-event-main__subsection h2{ margin:0 0 16px; font-weight:800; font-size:24px; letter-spacing:-.02em; color:var(--pim-text); }
.pim-event-main__subsection p{ font-size:17px; line-height:1.7; color:#2A3147; }

.pim-event-schedule{ display:flex; flex-direction:column; }
.pim-event-schedule__row{ display:flex; gap:20px; align-items:flex-start; }
.pim-event-schedule__time{ flex:none; width:78px; font:700 14px/1.5 var(--pim-font-mono); color:var(--pim-blue); }
.pim-event-schedule__line{ flex:none; width:2px; align-self:stretch; background:var(--pim-border-3); }
.pim-event-schedule__title{ flex:1; padding-bottom:22px; font-weight:700; font-size:16px; line-height:1.5; color:var(--pim-text); }
.pim-event-schedule__row:last-child .pim-event-schedule__title{ padding-bottom:0; }

.pim-event-speakers-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:16px; }
.pim-event-speaker{ text-align:center; }
.pim-event-speaker__avatar{ border-radius:14px; overflow:hidden; border:1px solid var(--pim-border); aspect-ratio:1/1; margin-bottom:12px; }
.pim-event-speaker__avatar img{ width:100%; height:100%; object-fit:cover; display:block; }
.pim-event-speaker__name{ font-weight:700; font-size:15px; color:var(--pim-text); }
.pim-event-speaker__affiliation{ margin-top:3px; font-size:13px; color:var(--pim-text-faint); }

.pim-event-sidebar{ flex:1 1 260px; min-width:min(250px,100%); position:sticky; top:90px; }
.pim-event-reg-card{ border:1px solid var(--pim-border); border-radius:var(--pim-radius-lg); padding:28px; background:#fff; box-shadow:var(--pim-shadow-md); }
.pim-event-reg-card__heading{ margin:0; font-weight:800; font-size:20px; letter-spacing:-.02em; color:var(--pim-text); }
.pim-event-reg-card__subtext{ margin:8px 0 20px; font-size:14px; line-height:1.55; color:var(--pim-text-muted-2); }
.pim-event-reg-card form{ display:flex; flex-direction:column; gap:12px; }
.pim-event-reg-card__details{ margin-top:22px; padding-top:18px; border-top:1px solid var(--pim-border-4); display:flex; flex-direction:column; gap:12px; }
.pim-event-reg-card__detail-row{ display:flex; align-items:baseline; justify-content:space-between; gap:14px; font-size:13.5px; }
.pim-event-reg-card__detail-row span:first-child{ color:var(--pim-text-faint); }
.pim-event-reg-card__detail-row span:last-child{ font-weight:700; color:var(--pim-text); text-align:right; }

@media (max-width: 860px){
	.pim-event-sidebar{ position:static; width:100%; }
}

.pim-event-related{ background:var(--pim-surface-tint-2); border-top:1px solid var(--pim-border-4); padding:64px 0; }
.pim-event-related h2{ margin:0 0 22px; font-weight:800; font-size:26px; letter-spacing:-.02em; color:var(--pim-text); }
.pim-event-related-list{ display:flex; flex-direction:column; gap:14px; }
.pim-event-related-row{ display:flex; align-items:center; gap:20px; padding:18px 22px; border:1px solid var(--pim-border); border-radius:14px; background:#fff; text-decoration:none; transition:border-color .18s ease, box-shadow .18s ease; }
.pim-event-related-row:hover{ border-color:var(--pim-blue); box-shadow:var(--pim-shadow-sm); }
.pim-event-related-row__date{ flex:none; width:64px; height:64px; border-radius:12px; background:var(--pim-blue-light); display:flex; flex-direction:column; align-items:center; justify-content:center; }
.pim-event-related-row__month{ font:700 11px/1 var(--pim-font-mono); letter-spacing:.06em; color:var(--pim-blue); }
.pim-event-related-row__day{ margin-top:4px; font-weight:800; font-size:22px; line-height:1; color:var(--pim-blue); }
.pim-event-related-row__body{ flex:1; min-width:0; }
.pim-event-related-row__title{ display:block; font-weight:700; font-size:16.5px; color:var(--pim-text); }
.pim-event-related-row__meta{ display:block; margin-top:4px; font-size:13.5px; color:var(--pim-text-muted-2); }
.pim-event-related-row__cta{ flex:none; display:inline-flex; align-items:center; padding:9px 18px; border-radius:999px; background:var(--pim-blue-light); color:var(--pim-blue); font-size:13.5px; font-weight:700; }

@media (max-width: 560px){
	.pim-event-related-row{ flex-wrap:wrap; }
	.pim-event-related-row__cta{ margin-left:84px; }
}

/* ==========================================================================
   PRODUCT UPDATE
   ========================================================================== */
.pim-update-pill{ display:inline-block; font:600 11px/1 var(--pim-font-mono); letter-spacing:.08em; padding:7px 13px; border-radius:999px; background:var(--pim-blue-light); color:var(--pim-blue); }
.pim-update-pill--new{ background:var(--pim-blue-light); color:var(--pim-blue); }
.pim-update-pill--improved{ background:var(--pim-green-bg); color:var(--pim-green); }
.pim-update-pill--fixed{ background:var(--pim-orange-bg); color:var(--pim-orange); }

/* ==========================================================================
   VIDEO (single)
   ========================================================================== */
.pim-video-single__title-row{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.pim-video-single__duration{ font:600 12px/1 var(--pim-font-mono); color:#fff; background:rgba(12,19,49,.8); padding:7px 11px; border-radius:999px; }
.pim-video-embed{ margin-top:28px; }
.pim-video-embed__frame{ position:relative; width:100%; aspect-ratio:16/9; border-radius:16px; overflow:hidden; border:1px solid var(--pim-border); background:var(--pim-navy-2); }
.pim-video-embed__frame iframe,
.pim-video-embed__frame video{ position:absolute; inset:0; width:100%; height:100%; border:0; display:block; }
.pim-video-embed__frame img{ width:100%; height:100%; object-fit:cover; display:block; }

/* ==========================================================================
   GALLERY (single)
   ========================================================================== */
.pim-gallery-single__hero{ border-radius:16px; overflow:hidden; border:1px solid var(--pim-border); margin-top:24px; }
.pim-gallery-single__hero img{ width:100%; height:auto; display:block; }
.pim-gallery-single__grid{ margin-top:24px; display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:16px; }
.pim-gallery-single__item{ border-radius:12px; overflow:hidden; border:1px solid var(--pim-border); display:block; }
.pim-gallery-single__item img{ width:100%; height:100%; object-fit:cover; display:block; aspect-ratio:4/3; }
.pim-gallery-single__item figcaption{ font-size:12.5px; color:var(--pim-text-faint); padding:9px 11px; }

/* ==========================================================================
   Small-screen tuning shared across singles
   ========================================================================== */
@media (max-width: 640px){
	.pim-cs-hero__inner{ padding:32px 0 48px; }
	.pim-cs-hero__stats{ gap:24px; }
	.pim-cs-testimonial{ padding:28px; }
	.pim-cs-testimonial__quote{ font-size:19px; }
	.pim-cs-body{ padding:40px 0; }
	.pim-event-banner__inner{ padding:32px 0 44px; }
	.pim-event-main-section{ padding:32px 0; }
	.pim-article-body-section{ padding:32px 0 48px; }
}
