/* Every selector is scoped to the project archive. */
.ipa { --ipa-ink:#17191c; --ipa-muted:#666b70; --ipa-bg:#f1f1ef; --ipa-line:#d9dbd9; background:var(--ipa-bg); color:var(--ipa-ink); font-family:Aptos,Arial,sans-serif; padding:26px 0 0; }
.ipa *, .ipa *::before, .ipa *::after { box-sizing:border-box; }
.ipa [hidden] { display:none !important; }
.ipa a { color:inherit; text-decoration:none; }
.ipa button, .ipa input, .ipa summary { font:inherit; color:inherit; }
.ipa button { cursor:pointer; }
.ipa svg { display:block; width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; flex-shrink:0; }
.ipa__inner { width:100%; max-width:1660px; margin:0 auto; padding:0 30px; }
.ipa .ipa__breadcrumbs { display:flex; gap:10px; font-size:12px; line-height:1.4; color:var(--ipa-muted); margin-bottom:33px; }
.ipa .ipa__breadcrumbs a:hover { color:var(--ipa-ink); }
.ipa .ipa__heading { display:flex; align-items:flex-start; gap:35px; justify-content:space-between; margin-bottom:35px; }
.ipa .ipa__heading h1 { font-size:clamp(32px,3.4vw,54px); line-height:1.04; font-weight:600; letter-spacing:-.035em; margin:0; max-width:940px; color:var(--ipa-ink); }
.ipa .ipa__heading p { margin:3px 0 0; flex-shrink:0; font-size:15px; line-height:1.45; color:var(--ipa-muted); max-width:320px; }
.ipa .ipa__filters { display:flex; align-items:center; flex-wrap:wrap; gap:10px; position:relative; margin-bottom:26px; scroll-margin-top:20px; }
.ipa .ipa__types { display:flex; gap:8px; flex-wrap:wrap; }
.ipa .ipa__chip { display:inline-flex; align-items:center; justify-content:center; gap:9px; padding:12px 16px; min-height:44px; border:1px solid transparent; background:#fff; border-radius:14px; font-size:14px; line-height:1.1; font-weight:400; white-space:nowrap; transition:background .18s,color .18s,border-color .18s; }
.ipa .ipa__chip:hover { background:#e3e5e2; }
.ipa .ipa__chip.is-active, .ipa .ipa__saved[aria-pressed="true"] { background:var(--ipa-ink); color:#fff; }
.ipa .ipa__chip.is-selected { border-color:var(--ipa-ink); }
.ipa .ipa__industry { position:relative; }
.ipa .ipa__industry summary { list-style:none; cursor:pointer; }
.ipa .ipa__industry summary::-webkit-details-marker { display:none; }
.ipa .ipa__industry[open] summary { background:#e3e5e2; }
.ipa .ipa__industry[open] summary svg { transform:rotate(180deg); }
.ipa .ipa__industry-menu { position:absolute; top:calc(100% + 10px); left:0; z-index:30; width:440px; max-width:calc(100vw - 60px); max-height:380px; overflow:auto; display:grid; grid-template-columns:1fr 1fr; gap:3px; padding:12px; background:#fff; border:1px solid var(--ipa-line); border-radius:16px; box-shadow:0 12px 35px #17231a18; }
.ipa .ipa__industry-menu a { padding:11px 10px; border-radius:8px; font-size:14px; line-height:1.25; }
.ipa .ipa__industry-menu a:hover, .ipa .ipa__industry-menu a[aria-current] { background:var(--ipa-bg); }
.ipa .ipa__industry-menu a[aria-current] { font-weight:600; }
.ipa .ipa__saved { background:transparent; }
.ipa .ipa__saved span { font-size:11px; opacity:.7; }
.ipa .ipa__search { display:flex; align-items:center; min-width:170px; max-width:240px; margin-left:auto; border:1px solid var(--ipa-line); border-radius:14px; background:transparent; overflow:hidden; height:44px; }
.ipa .ipa__search input[type="search"] { width:100%; min-width:0; padding:10px 0 10px 14px; margin:0; border:0; height:42px; background:transparent; font-size:14px; outline:none; box-shadow:none; }
.ipa .ipa__search:focus-within { border-color:var(--ipa-ink); }
.ipa .ipa__search button { padding:10px 13px 10px 8px; border:0; background:transparent; display:flex; align-items:center; height:42px; }
.ipa .ipa__result-bar { display:flex; align-items:center; justify-content:space-between; gap:15px; color:var(--ipa-muted); font-size:12px; margin-bottom:19px; min-height:18px; scroll-margin-top:20px; }
.ipa .ipa__result-bar strong { font-weight:400; color:var(--ipa-ink); }
.ipa .ipa__reset { font-size:13px; display:flex; gap:8px; align-items:center; }
.ipa .ipa__reset:hover { text-decoration:underline; }
.ipa .ipa__reset span { font-size:22px; line-height:1; }
.ipa .ipa__grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:58px 20px; align-items:start; }
.ipa .ipa__card { position:relative; min-width:0; margin:0; padding:0; background:transparent; border:0; }
.ipa .ipa__cover { position:relative; aspect-ratio:1.29; overflow:hidden; border-radius:22px; background:#dedfda; isolation:isolate; }
.ipa .ipa__cover-link { display:block; width:100%; height:100%; }
.ipa .ipa__image { display:block; width:100%; height:100%; max-width:none; object-fit:cover; object-position:top center; transition:transform .45s cubic-bezier(.2,.65,.35,1); }
.ipa .ipa__card:hover .ipa__image, .ipa .ipa__card:focus-within .ipa__image { transform:scale(1.025); }
.ipa .ipa__cover-action { position:absolute; display:flex; align-items:center; justify-content:space-between; gap:10px; bottom:0; left:0; width:100%; padding:44px 20px 19px; color:#fff; background:linear-gradient(transparent,#0008); font-size:14px; opacity:0; transform:translateY(7px); transition:opacity .22s,transform .22s; }
.ipa .ipa__cover-action span { font-size:24px; line-height:1; }
.ipa .ipa__card:hover .ipa__cover-action, .ipa .ipa__card:focus-within .ipa__cover-action { opacity:1; transform:none; }
.ipa .ipa__favorite { position:absolute; top:12px; right:12px; width:38px; height:38px; border:0; border-radius:50%; display:flex; align-items:center; justify-content:center; background:#fff; color:var(--ipa-ink); opacity:0; transition:opacity .18s,background .18s; }
.ipa .ipa__favorite svg { width:18px; height:18px; }
.ipa .ipa__card:hover .ipa__favorite, .ipa .ipa__card:focus-within .ipa__favorite, .ipa .ipa__favorite[aria-pressed="true"] { opacity:1; }
.ipa .ipa__favorite[aria-pressed="true"] { background:#ffdd2d; }
.ipa .ipa__favorite[aria-pressed="true"] svg { fill:currentColor; }
.ipa .ipa__placeholder { display:flex; flex-direction:column; justify-content:space-between; gap:20px; padding:25px; height:100%; background:linear-gradient(140deg,#d7dfd1,#a9b8af); color:#243f37; font-size:25px; line-height:1.05; }
.ipa .ipa__placeholder span:first-child { font-size:15px; font-weight:700; letter-spacing:.12em; }
.ipa .ipa__card-body { padding:21px 0 0; }
.ipa .ipa__client { margin:0 0 8px; font-size:12px; line-height:1.2; color:var(--ipa-muted); }
.ipa .ipa__card h2 { margin:0; font-size:22px; line-height:1.12; font-weight:600; letter-spacing:-.025em; color:var(--ipa-ink); }
.ipa .ipa__card h2 a:hover { text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:4px; }
.ipa .ipa__description { margin:10px 0 0; font-size:14px; line-height:1.4; color:var(--ipa-muted); }
.ipa .ipa__tags { display:flex; gap:6px; flex-wrap:wrap; margin:14px 0 0; padding:0; list-style:none; }
.ipa .ipa__tags li { margin:0; padding:5px 10px; border:1px solid var(--ipa-line); border-radius:20px; font-size:11px; line-height:1.2; color:#575b5e; }
.ipa .ipa__navigation { margin-top:56px; text-align:center; }
.ipa .ipa__more { display:flex; width:100%; align-items:center; justify-content:center; gap:14px; min-height:64px; padding:16px; border:1px solid #bcbfbc; border-radius:18px; font-size:18px; transition:background .18s,border-color .18s; }
.ipa .ipa__more:hover { background:#fff; border-color:var(--ipa-ink); }
.ipa .ipa__more span { font-size:28px; font-weight:300; line-height:1; }
.ipa .ipa__pages { display:flex; justify-content:center; gap:8px; flex-wrap:wrap; margin-top:24px; }
.ipa .ipa__pages a, .ipa .ipa__pages>span { display:flex; align-items:center; justify-content:center; min-width:40px; min-height:40px; padding:7px; border-radius:10px; font-size:15px; }
.ipa .ipa__pages a:hover { background:#fff; }
.ipa .ipa__pages a[aria-current="page"] { background:var(--ipa-ink); color:#fff; }
.ipa .ipa__range { margin:17px 0 0; font-size:12px; color:var(--ipa-muted); }
.ipa .ipa__empty { text-align:center; padding:65px 20px 30px; }
.ipa .ipa__empty h2 { font-size:clamp(25px,3vw,36px); line-height:1.15; margin:0 0 15px; }
.ipa .ipa__empty p { color:var(--ipa-muted); font-size:16px; line-height:1.5; margin:0 0 20px; }
.ipa .ipa__empty a { display:inline-block; padding:12px 18px; border:1px solid var(--ipa-ink); border-radius:12px; }
.ipa .ipa__cta { padding:50px 0 60px; margin-top:65px; border-top:1px solid var(--ipa-line); }
.ipa .ipa__cta>p { font-size:13px; color:var(--ipa-muted); margin:0 0 15px; }
.ipa .ipa__cta>div { display:flex; justify-content:space-between; align-items:center; gap:30px; }
.ipa .ipa__cta h2 { margin:0; font-size:clamp(30px,3.4vw,52px); line-height:1.05; font-weight:500; letter-spacing:-.035em; }
.ipa .ipa__cta a { display:flex; align-items:center; justify-content:space-between; gap:40px; min-height:58px; padding:16px 20px; border-radius:14px; background:var(--ipa-ink); color:#fff; font-size:17px; }
.ipa .ipa__cta a:hover { background:#34383b; }
.ipa .ipa__cta a span { font-size:24px; }
.ipa .ipa__sr { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.ipa[aria-busy="true"] .ipa__grid, .ipa[aria-busy="true"] .ipa__empty { opacity:.45; }
.ipa[aria-busy="true"] .ipa__more { pointer-events:none; }
.ipa :is(a,button,summary):focus-visible { outline:2px solid #295b6c; outline-offset:4px; }
/* Keep the contact button, but give project covers an unobstructed view. */
.ipa ~ footer.main-footer .face-wrapper .face-block { display:none; }
.ipa ~ footer.main-footer .face-wrapper { height:auto; }
@media(min-width:1600px) { .ipa .ipa__grid { gap:64px 26px; } }
@media(max-width:1150px) { .ipa .ipa__heading { flex-direction:column; gap:15px; } .ipa .ipa__heading p { max-width:none; } .ipa .ipa__heading p br { display:none; } .ipa .ipa__search { max-width:200px; } }
@media(max-width:1099px) { .ipa .ipa__grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:44px 22px; } .ipa .ipa__cover { aspect-ratio:1.4; } .ipa .ipa__industry-menu { left:auto; right:0; } }
@media(max-width:759px) { .ipa__inner { padding:0 20px; } .ipa .ipa__breadcrumbs { margin-bottom:26px; } .ipa .ipa__heading { margin-bottom:27px; } .ipa .ipa__heading p { font-size:14px; } .ipa .ipa__chip { font-size:13px; padding:11px 13px; border-radius:12px; } .ipa .ipa__search { margin-left:0; flex:1; max-width:none; } .ipa .ipa__industry-menu { left:0; right:auto; width:340px; max-width:calc(100vw - 40px); } .ipa .ipa__card h2 { font-size:21px; } .ipa .ipa__cta>div { flex-direction:column; align-items:flex-start; gap:25px; } .ipa .ipa__cta { padding:36px 0 45px; margin-top:45px; } }
@media(max-width:599px) { .ipa { padding-top:22px; } .ipa .ipa__grid { grid-template-columns:1fr; gap:36px; } .ipa .ipa__heading h1 { font-size:35px; max-width:350px; } .ipa .ipa__filters { gap:9px; margin-bottom:20px; } .ipa .ipa__types { gap:7px; width:100%; } .ipa .ipa__cover { border-radius:18px; aspect-ratio:1.29; } .ipa .ipa__card-body { padding-top:18px; } .ipa .ipa__card h2 { font-size:24px; } .ipa .ipa__favorite { opacity:1; } .ipa .ipa__search { flex-basis:100%; max-width:none; margin-top:2px; } .ipa .ipa__industry-menu { width:calc(100vw - 40px); } .ipa .ipa__navigation { margin-top:38px; } .ipa .ipa__more { font-size:16px; min-height:58px; } .ipa .ipa__cta a { width:100%; } }
@media(pointer:coarse) { .ipa .ipa__favorite { opacity:1; } }
@media(prefers-reduced-motion:reduce) { .ipa *, .ipa *::before, .ipa *::after { transition:none !important; } .ipa .ipa__image { transform:none !important; } }
