/* ==========================================================================
   Ultra Demark — the experience layer
   --------------------------------------------------------------------------
   New components only: the compact header for the transactional pages, the
   live projects index, the sliders, and the studio (front-end publishing).
   Loaded after styles.css and the page stylesheets, so it refines them rather
   than fighting them.
   ========================================================================== */

:root{
  --ud-green:#00a956;
  --ud-green-deep:#008a46;
  --ud-navy:#062a45;
  --ud-line:#dfe7ee;
}

/* ------------------------------------------------------------ the site header
   A 4px green rule under the header, on every page. Requested for the
   transactional pages and then clarified: it belongs to the site header. */
.site-header{
  border-bottom:4px solid var(--ud-green);
}
.site-header .header-inner{position:relative}

/* Compact chrome for the quote, sign-in, create-account and lost-password
   pages: the same branding and the same working menus, with the top bar gone
   and the bar itself half the height. */
body.ud-compact .site-header .top-bar{display:none}
body.ud-compact .site-header .header-inner{
  height:62px;
  min-height:62px;
  padding-top:0;
  padding-bottom:0;
  gap:18px;
}
body.ud-compact .site-header .logo img,
body.ud-compact .site-header .logo svg{width:auto;height:30px;max-width:104px;object-fit:contain}
body.ud-compact .site-header .logo>span{font-size:12px;letter-spacing:.12em}
body.ud-compact .site-header .nav{gap:2px}
body.ud-compact .site-header .nav>a,
body.ud-compact .site-header .nav .nav-item-label>a{
  font-size:12.5px;
  padding:6px 9px;
}
/* Only Projects, Insights and Contact — the links a person needs while they
   are in the middle of something. Home stays left of them; the rest fold away.
   (About, Our approach, Solutions, Services and Industries are children 2–6.) */
body.ud-compact .site-header .nav>.nav-item:nth-child(-n+6){display:none}
body.ud-compact .site-header .quote-badge{transform:scale(.88)}
body.ud-compact .site-header .account-toggle{padding:7px 12px;font-size:12.5px}
body.ud-compact .ud-compact-context{
  display:flex;
  align-items:center;
  gap:8px;
  margin-left:2px;
  font-size:11.5px;
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--ap-muted,#5a7386);
  white-space:nowrap;
}
body.ud-compact .ud-compact-context::before{
  content:"";
  width:7px;height:7px;border-radius:50%;
  background:var(--ud-green);
}
@media (max-width:980px){
  body.ud-compact .ud-compact-context{display:none}
  body.ud-compact .site-header .nav{top:62px;height:calc(100dvh - 62px);max-height:calc(100dvh - 62px)}
}

/* ------------------------------------------------------------ projects index */
.ud-projects-section{padding-top:46px}
.ud-pj-intro{
  display:grid;
  grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);
  gap:38px;
  align-items:end;
  padding-bottom:26px;
  border-bottom:1px solid var(--ud-line);
}
.ud-pj-intro h1{
  margin:10px 0 0;
  font-size:clamp(30px,3.4vw,46px);
  line-height:1.08;
  letter-spacing:-.02em;
  color:var(--ap-ink,#0a2233);
  max-width:19ch;
}
.ud-pj-intro .cat-lede{
  margin-top:14px;
  max-width:52ch;
  font-size:15px;
  line-height:1.72;
  color:#49606f;               /* readable on white, not the hero's pale ink */
}
.ud-pj-facts{
  margin:0;
  display:grid;
  gap:0;
  border:1px solid var(--ud-line);
  border-radius:14px;
  overflow:hidden;
  background:#fbfdfe;
}
.ud-pj-facts>div{
  display:flex;
  justify-content:space-between;
  gap:16px;
  padding:11px 15px;
  border-bottom:1px solid var(--ud-line);
}
.ud-pj-facts>div:last-child{border-bottom:0}
.ud-pj-facts dt{font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:#68808f;font-weight:700}
.ud-pj-facts dd{margin:0;font-size:13px;font-weight:600;color:var(--ap-ink,#0a2233);text-align:right}

.ud-projects .cat-filters{margin-top:24px}
.cat-filter-n{
  display:inline-block;
  min-width:18px;
  margin-left:6px;
  padding:1px 5px;
  border-radius:20px;
  background:rgba(6,42,69,.08);
  font-size:11px;
  font-weight:700;
  line-height:1.5;
}
.cat-filter-btn.is-on .cat-filter-n{background:rgba(255,255,255,.22)}
.ud-projects .cat-projects{margin-top:26px}
.ud-projects .cat-projects[data-columns="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}
.ud-projects .cat-projects[data-columns="1"]{grid-template-columns:1fr}
.cat-project-media-fallback{
  display:block;
  aspect-ratio:16/10;
  background:linear-gradient(135deg,#e8f1f7,#d7e6ef);
}
.cat-project-flag{
  position:absolute;
  top:12px;right:12px;
  padding:4px 9px;
  border-radius:20px;
  background:var(--ud-green);
  color:#fff;
  font-size:10.5px;
  letter-spacing:.1em;
  text-transform:uppercase;
  font-weight:700;
}
.cat-project-foot{
  margin-top:auto;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding-top:14px;
}
.cat-project-foot time{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:#7b909e;white-space:nowrap}
.ud-pj-pages{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  justify-content:center;
  margin-top:34px;
}
.ud-pj-pages a,
.ud-pj-pages span{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:40px;
  height:40px;
  padding:0 14px;
  border:1px solid var(--ud-line);
  border-radius:10px;
  font-size:13px;
  font-weight:600;
  color:var(--ap-ink,#0a2233);
  text-decoration:none;
  background:#fff;
}
.ud-pj-pages .current{background:var(--ud-navy);border-color:var(--ud-navy);color:#fff}
.ud-pj-pages a:hover{border-color:var(--ud-green);color:var(--ud-green-deep)}
.ud-projects[aria-busy="true"] .cat-projects{opacity:.45;transition:opacity .18s}

@media (max-width:860px){
  .ud-pj-intro{grid-template-columns:1fr;align-items:start;gap:22px}
  .ud-pj-intro h1{max-width:32ch}
  .ud-projects .cat-projects[data-columns="3"]{grid-template-columns:1fr}
}

/* ------------------------------------------------------------------ sliders */
.ud-slider{position:relative}
/* The homepage bands arrive as .featured-grid / .article-grid, which the page
   stylesheet lays out as a grid. The slider takes those two back to a row. */
.ud-slider.featured-grid,
.ud-slider.article-grid{display:block!important;grid-template-columns:none!important;gap:0!important}
.ud-slider-viewport{overflow:hidden}
.ud-slider .ud-slider-track{
  display:flex;
  flex-wrap:nowrap;
  gap:22px;
  transition:transform .45s cubic-bezier(.22,.61,.36,1);
  will-change:transform;
}
.ud-slider .ud-slider-track > *{
  flex:0 0 calc((100% - 44px)/3);
  min-width:0;
  max-width:calc((100% - 44px)/3);
}
.ud-slider[data-per="2"] .ud-slider-track > *{flex-basis:calc((100% - 22px)/2);max-width:calc((100% - 22px)/2)}
.ud-slider[data-per="4"] .ud-slider-track > *{flex-basis:calc((100% - 66px)/4);max-width:calc((100% - 66px)/4)}
.ud-slider-foot{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:18px}
.ud-slider-foot .ud-slider-dots{margin-top:0}
.ud-slider-hint{font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:#8ba0ad;font-weight:700}
.ud-slider-head{
  display:flex;
  align-items:end;
  justify-content:space-between;
  gap:20px;
  margin-bottom:22px;
}
.ud-slider-nav{display:flex;gap:8px}
.ud-slider-btn{
  width:42px;height:42px;
  display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--ud-line);
  border-radius:50%;
  background:#fff;
  color:var(--ud-navy);
  cursor:pointer;
}
.ud-slider-btn:hover:not(:disabled){border-color:var(--ud-green);color:var(--ud-green-deep)}
.ud-slider-btn:disabled{opacity:.35;cursor:default}
.ud-slider-dots{display:flex;gap:7px;justify-content:center;margin-top:20px}
.ud-slider-dots button{
  width:8px;height:8px;padding:0;border:0;border-radius:50%;
  background:#cfdde7;cursor:pointer;
}
.ud-slider-dots button[aria-current="true"]{background:var(--ud-green);width:22px;border-radius:20px}
@media (max-width:900px){
  .ud-slider .ud-slider-track>*,
  .ud-slider[data-per="3"] .ud-slider-track>*,
  .ud-slider[data-per="4"] .ud-slider-track>*{flex-basis:calc((100% - 22px)/2);max-width:calc((100% - 22px)/2)}
}
@media (max-width:620px){
  .ud-slider .ud-slider-track>*,
  .ud-slider[data-per="2"] .ud-slider-track>*,
  .ud-slider[data-per="3"] .ud-slider-track>*,
  .ud-slider[data-per="4"] .ud-slider-track>*{flex-basis:84%;max-width:84%}
}

/* ----------------------------------------------------- cards used by sliders */
.ud-card{
  display:flex;
  flex-direction:column;
  background:#fff;
  border:1px solid var(--ud-line);
  border-radius:16px;
  overflow:hidden;
  text-decoration:none;
  color:inherit;
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
}
.ud-card:hover{transform:translateY(-3px);border-color:#c3d7e4;box-shadow:0 26px 46px -34px rgba(6,42,69,.55)}
.ud-card-media{display:block;aspect-ratio:16/10;background:#eaf1f6;position:relative;overflow:hidden}
.ud-card-media img{width:100%;height:100%;object-fit:cover;display:block}
.ud-card-body{display:flex;flex-direction:column;gap:8px;padding:18px 20px 20px;flex:1}
.ud-card-kicker{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--ud-green-deep)}
.ud-card-body h3{font-size:17.5px;line-height:1.3;margin:0;color:var(--ap-ink,#0a2233)}
.ud-card-body p{margin:0;font-size:13.4px;line-height:1.62;color:#5a7386}
.ud-card-meta{margin-top:auto;padding-top:10px;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:#7b909e}

/* The transactional pages keep a hero, but a short one: the task starts on the
   first screen instead of below a full-height banner. */
body.ud-compact .page-hero{min-height:0;padding:30px 0 30px}
body.ud-compact .page-hero-copy{padding-top:0;max-width:900px}
body.ud-compact .page-hero h1{font-size:clamp(26px,3vw,36px);line-height:1.12;margin:0}
body.ud-compact .page-hero .eyebrow{margin-bottom:10px;font-size:10.5px}
body.ud-compact .page-hero-copy > p{font-size:14.5px;line-height:1.62;margin-top:10px;max-width:70ch;color:#c9dae7}
body.ud-compact .page-hero .breadcrumb{margin-bottom:8px}
body.ud-compact .account-section{padding-top:34px}
@media (max-width:700px){
  body.ud-compact .page-hero{padding:26px 0 24px}
}

/* Cards in a slider keep one height: the picture is fixed, the summary clamps,
   and the footer sits on the floor of the card however long the copy runs. */
.ud-slider .ud-slide{display:flex}
.ud-slider .ud-slide > *{flex:1 1 auto;display:flex;flex-direction:column;min-height:100%}
.ud-slider .cat-project-media,
.ud-slider .article-image{flex:0 0 auto}
.ud-slider .cat-project-media img,
.ud-slider .article-image img{width:100%;height:186px;object-fit:cover;display:block}
.ud-slider .cat-project-body{display:flex;flex-direction:column;flex:1 1 auto}
.ud-slider .cat-project-body > p{
  flex:1 1 auto;
  display:-webkit-box;
  -webkit-line-clamp:3;
  -webkit-box-orient:vertical;
  overflow:hidden;
  margin-bottom:14px;
}
.ud-slider .cat-project-foot{margin-top:auto}
/* article cards are a link wrapping image, meta, title, summary */
.ud-slider .article-card{display:flex;flex-direction:column;height:100%}
.ud-slider .article-meta{flex:0 0 auto}
.ud-slider .article-card h3{
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;
}
.ud-slider .article-card > p{
  flex:1 1 auto;
  display:-webkit-box;
  -webkit-line-clamp:3;
  -webkit-box-orient:vertical;
  overflow:hidden;
  margin-bottom:0;
}
@media (max-width:620px){
  .ud-slider .cat-project-media img,
  .ud-slider .article-image img{height:170px}
}

/* ---------------------------------------------------------------- insights */
/* The lead article: picture beside the argument, one screen tall. */
.ud-lead-band{background:#fff;padding:44px 0 8px}
.ud-lead{display:block}
.ud-lead-media{
  position:relative;display:block;overflow:hidden;border-radius:18px;
  aspect-ratio:16/9;background:#0a2233;
}
.ud-lead-media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s ease}
.ud-lead-media:hover img{transform:scale(1.03)}
.ud-lead-flag{
  position:absolute;left:16px;top:16px;background:#00a956;color:#03231a;
  font-size:10.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  padding:7px 11px;border-radius:999px;
}
.ud-lead-copy{padding-top:22px}
.ud-lead-copy .eyebrow{display:block;color:#5c7686;margin-bottom:12px}
.ud-lead-copy .ud-dot{color:#b9c9d2;margin:0 6px}
.ud-lead-copy h2{font-size:clamp(26px,3.4vw,40px);line-height:1.12;margin:0 0 14px;letter-spacing:-.01em}
.ud-lead-copy h2 a{color:var(--ud-green);text-decoration:none}
.ud-lead-copy h2 a:hover{text-decoration:underline;text-underline-offset:4px}
.ud-lead-copy p{font-size:16.5px;line-height:1.7;color:#4a6472;margin:0 0 18px;max-width:60ch}
.ud-lead-meta{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:12.5px;color:#7a919e;margin-bottom:20px}
.ud-lead-meta span::before{content:"·";margin-right:10px;color:#c3d2da}
.ud-lead-cta{margin-top:2px}
@media (min-width:960px){
  .ud-lead{display:grid;grid-template-columns:1.05fr .95fr;gap:44px;align-items:center}
  .ud-lead-copy{padding-top:0}
}

/* --------------------------------------------------------- a single project */
.ud-ps{background:#fff}
.ud-ps-hero{background:var(--ud-ink,#0a2233);color:#fff;padding:34px 0 44px}
.ud-ps-hero .ud-crumbs{display:flex;gap:8px;align-items:center;font-size:12.5px;color:#8fb0c4;margin-bottom:18px}
.ud-ps-hero .ud-crumbs a{color:#cfe2ee;text-decoration:none}
.ud-ps-hero .ud-crumbs a:hover{text-decoration:underline}
.ud-ps-tag{
  display:inline-block;background:rgba(0,169,86,.16);color:#57e2a3;border:1px solid rgba(87,226,163,.35);
  font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;padding:6px 11px;border-radius:999px;margin-bottom:16px;
}
.ud-ps-hero h1{font-size:clamp(30px,4vw,50px);line-height:1.06;letter-spacing:-.02em;margin:0;max-width:22ch}
.ud-ps-summary{font-size:17px;line-height:1.65;color:#c4d6e4;max-width:64ch;margin:16px 0 0}
.ud-ps-chips{display:flex;flex-wrap:wrap;gap:10px 34px;margin:26px 0 0;padding:0}
.ud-ps-chips div{min-width:0}
.ud-ps-chips dt{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:#7c9cb0;margin-bottom:3px}
.ud-ps-chips dd{margin:0;font-size:14px;color:#eaf3f9;font-weight:600}
.ud-ps-cover{margin:0;background:#eef2f5}
.ud-ps-cover img{display:block;width:100%;max-height:520px;object-fit:cover}
.ud-ps-body{padding-block:44px 56px}
.ud-ps-main{min-width:0}
.ud-ps-main > p,
.ud-ps-main > ul,
.ud-ps-main > ol,
.ud-ps-main > h2,
.ud-ps-main > h3,
.ud-ps-main > blockquote{max-width:70ch}
.ud-ps-main h2{font-size:26px;margin:34px 0 12px}
.ud-ps-main p{font-size:16.5px;line-height:1.75;color:#33505f;margin:0 0 16px}
.ud-ps-main ul,.ud-ps-main ol{margin:0 0 18px 20px;padding:0}
.ud-ps-main li{font-size:16.5px;line-height:1.7;color:#33505f;margin-bottom:8px}
.ud-ps-main figure,.ud-ps-main img{max-width:100%}
.ud-ps-main img{border-radius:14px}
.ud-ps-rail{display:grid;gap:16px;margin-top:36px}
.ud-ps-box{border:1px solid #e3ecf0;border-radius:16px;padding:20px 22px;background:#fbfdfe}
.ud-ps-box-title{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#6c8794;margin:0 0 14px}
.ud-ps-box .ud-facts{margin:0;display:grid;gap:12px}
.ud-ps-box .ud-facts dt{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:#8ba0ad;margin-bottom:2px}
.ud-ps-box .ud-facts dd{margin:0;font-size:14.5px;font-weight:600;color:#12303f}
.ud-ps-box-cta .button{width:100%;justify-content:center}
.ud-ps-cat{color:var(--ud-green);font-weight:700;text-decoration:none}
.ud-ps-cat:hover{text-decoration:underline}
@media (min-width:960px){
  .ud-ps-hero{padding:44px 0 58px}
  .ud-ps-body{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:52px;align-items:start;padding-block:50px 56px}
  .ud-ps-rail{margin-top:0;position:sticky;top:96px}
}
.ud-ps-related{background:#f4f8fa;padding-block:52px 60px;border-top:1px solid #e6eef2}
.ud-ps-related-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:24px}
.ud-ps-related-head h2{font-size:clamp(22px,2.4vw,30px);margin:0;letter-spacing:-.01em}
.ud-ps-related-head a{color:var(--ud-green);font-weight:700;text-decoration:none}
.ud-ps-related-grid{display:grid;grid-template-columns:1fr;gap:22px}
@media (min-width:640px){.ud-ps-related-grid{grid-template-columns:1fr 1fr}}
@media (min-width:960px){.ud-ps-related-grid{grid-template-columns:repeat(3,1fr)}}
.ud-ps-foot{padding-block:24px 44px}
.ud-ps-cta{background:var(--ud-ink,#0a2233);color:#fff;padding-block:40px}
.ud-ps-cta-in{display:flex;flex-wrap:wrap;gap:20px;align-items:center;justify-content:space-between}
.ud-ps-cta .eyebrow{color:#57e2a3;display:block;margin-bottom:10px}
.ud-ps-cta h2{color:#fff;font-size:clamp(22px,2.6vw,32px);margin:0 0 6px;letter-spacing:-.01em}
.ud-ps-cta p{color:#b9cfdd;margin:0;font-size:15px;max-width:56ch}
.ud-ps-cta .button{background:var(--ud-green,#00a956);border-color:var(--ud-green,#00a956);color:#03231a;font-weight:700}
@media (min-width:960px){.ud-ps-cta{padding-block:52px}}
