/* Presentation slides: a fixed 1920 x 1080 canvas, scaled to fit the screen by deck.js */
.slidebox { position: relative; flex: none; box-shadow: 0 18px 50px rgba(20,20,25,.18), 0 1px 3px rgba(20,20,25,.08); background: #fff; overflow: hidden; }
.sl { position: absolute; left: 0; top: 0; width: 1920px; height: 1080px; transform-origin: 0 0; background: #fff; color: #1C1C1E;
  font-family: "Segoe UI", "Helvetica Neue", Arial, sans-serif; overflow: hidden; }
.sl * { box-sizing: border-box; }
.sl img { display: block; }
.sl .serif { font-family: Georgia, "Times New Roman", serif; font-weight: 400; }
.sl .eb { font-size: 22px; letter-spacing: .22em; text-transform: uppercase; color: #E31E24; font-weight: 600; }
.sl .hd { position: absolute; left: 120px; right: 120px; top: 92px; }
.sl .hd h2 { margin: 14px 0 0; font-family: Georgia, "Times New Roman", serif; font-weight: 400; font-size: 66px; line-height: 1.06; letter-spacing: -.01em; }
.sl .hd .lede { margin: 22px 0 0; max-width: 1180px; font-size: 28px; line-height: 1.45; color: #4A4A50; }
.sl .bd { position: absolute; left: 120px; right: 120px; top: 330px; bottom: 150px; }
.sl .ft { position: absolute; left: 120px; right: 120px; bottom: 44px; height: 58px; display: flex; align-items: center; gap: 22px; border-top: 1px solid #E4E4E0; padding-top: 16px;
  font-size: 19px; letter-spacing: .16em; text-transform: uppercase; color: #85858C; }
.sl .ft .pl { height: 40px; width: auto; }
.sl .ft .sp { flex: 1; }
.sl .ft .rcg { height: 44px; width: auto; }
.sl .ph { background: #F1F2F4; overflow: hidden; }
.sl .ph img { width: 100%; height: 100%; object-fit: cover; }
.sl .ph.fit img { object-fit: contain; }
.sl .cap { font-size: 20px; color: #4A4A50; margin-top: 14px; line-height: 1.35; }
.sl .rule { width: 72px; height: 4px; background: #E31E24; }

/* cover */
.sl.cover .art { position: absolute; right: 0; top: 0; bottom: 0; width: 1120px; background: #C9CACC; }
.sl.cover .art img { width: 100%; height: 100%; object-fit: cover; }
.sl.cover .art::before { content: ""; position: absolute; left: -1px; top: 0; bottom: 0; width: 6px; background: #E31E24; z-index: 1; }
.sl.cover .txt { position: absolute; left: 120px; top: 0; bottom: 0; width: 700px; display: flex; flex-direction: column; justify-content: center; gap: 34px; }
.sl.cover .plogo { height: 120px; width: auto; align-self: flex-start; }
.sl.cover h1 { margin: 0; font-family: Georgia, "Times New Roman", serif; font-weight: 400; font-size: 108px; line-height: 1; letter-spacing: -.015em; }
.sl.cover .sub { font-size: 32px; line-height: 1.4; color: #4A4A50; }
.sl.cover .tags { display: flex; flex-direction: column; gap: 12px; }
.sl.cover .tags span { font-size: 24px; padding-left: 22px; border-left: 4px solid #E31E24; color: #1C1C1E; }
.sl.cover .by { display: flex; align-items: center; gap: 22px; margin-top: 20px; padding-top: 26px; border-top: 1px solid #E4E4E0; font-size: 19px; letter-spacing: .18em; text-transform: uppercase; color: #85858C; }
.sl.cover .by img { height: 62px; }

/* section opener */
.sl.section .art { position: absolute; right: 0; top: 0; bottom: 0; width: 1000px; }
.sl.section .art img { width: 100%; height: 100%; object-fit: cover; }
.sl.section .art.fit { background: radial-gradient(ellipse at 50% 55%, #FFFFFF 0%, #EEF0F3 60%, #E3E6EA 100%); }
.sl.section .art.fit img { object-fit: contain; padding: 110px 70px; filter: drop-shadow(0 34px 34px rgba(20,25,35,.16)); }
.sl.section .txt { position: absolute; left: 120px; top: 0; bottom: 0; width: 700px; display: flex; flex-direction: column; justify-content: center; gap: 30px; }
.sl.section h2 { margin: 0; font-family: Georgia, "Times New Roman", serif; font-weight: 400; font-size: 76px; line-height: 1.04; letter-spacing: -.01em; }
.sl.section .lede { font-size: 28px; line-height: 1.45; color: #4A4A50; }
.sl.section .kv { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid #CFCFCA; margin-top: 10px; }
.sl.section .kv div { padding: 26px 20px 22px 0; border-bottom: 1px solid #E4E4E0; }
.sl.section .kv b { display: block; font-family: Georgia, "Times New Roman", serif; font-weight: 400; font-size: 50px; line-height: 1; white-space: nowrap; }
.sl.section .kv span { display: block; margin-top: 10px; font-size: 20px; color: #85858C; letter-spacing: .06em; }

/* key figures */
.sl.stats .grid { position: absolute; left: 0; top: 0; bottom: 0; width: 980px; display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(2, 1fr); border-top: 1px solid #CFCFCA; }
.sl.stats .grid div { padding: 36px 30px 0 0; border-bottom: 1px solid #E4E4E0; }
.sl.stats .grid b { display: block; font-family: Georgia, "Times New Roman", serif; font-weight: 400; font-size: 96px; line-height: 1; color: #1C1C1E; }
.sl.stats .grid b em { font-style: normal; color: #E31E24; }
.sl.stats .grid span { display: block; margin-top: 16px; font-size: 23px; line-height: 1.35; color: #4A4A50; max-width: 260px; }
.sl.stats .side { position: absolute; right: 0; top: -40px; bottom: 0; width: 600px; }

/* features */
.sl.features .grid { position: absolute; top: 0; bottom: 0; right: 0; display: grid; grid-template-columns: repeat(3, 1fr); grid-auto-rows: 1fr; gap: 34px 40px; }
.sl.features.wimg .grid { left: 640px; grid-template-columns: repeat(2, 1fr); }
.sl.features:not(.wimg) .grid { left: 0; }
.sl.features .f { border-top: 4px solid #E31E24; padding-top: 22px; }
.sl.features .f h3 { margin: 0; font-size: 30px; font-weight: 600; line-height: 1.2; }
.sl.features .f p { margin: 12px 0 0; font-size: 23px; line-height: 1.45; color: #4A4A50; }
.sl.features .side { position: absolute; left: 0; top: 0; bottom: 0; width: 580px; }

/* gallery */
.sl.gallery .grid { position: absolute; inset: 0; display: grid; gap: 30px; }
.sl.gallery .it { display: flex; flex-direction: column; min-height: 0; }
.sl.gallery .it .ph { flex: 1; min-height: 0; }
.sl.gallery .pts { position: absolute; left: 0; right: 0; bottom: 0; display: flex; gap: 40px; }
.sl.gallery .pts div { flex: 1; border-top: 4px solid #E31E24; padding-top: 18px; font-size: 24px; line-height: 1.35; }

/* product range */
.sl.range .cards { position: absolute; left: 0; right: 0; top: 0; display: grid; gap: 34px; }
.sl.range .card { border: 1px solid #E4E4E0; background: #fff; }
.sl.range .card .ph { height: 330px; background: #F1F2F4; }
.sl.range .card .tx { padding: 24px 28px 28px; border-top: 4px solid #E31E24; }
.sl.range .card h3 { margin: 0; font-size: 30px; font-weight: 600; line-height: 1.2; }
.sl.range .card .k { font-size: 19px; letter-spacing: .16em; text-transform: uppercase; color: #85858C; margin-bottom: 8px; }
.sl.range .card p { margin: 12px 0 0; font-size: 22px; line-height: 1.45; color: #4A4A50; }
.sl.range .more { position: absolute; left: 0; right: 0; bottom: 0; display: flex; align-items: baseline; gap: 26px; flex-wrap: wrap; border-top: 1px solid #CFCFCA; padding-top: 26px; }
.sl.range .more .eb { color: #85858C; }
.sl.range .more span { font-size: 24px; color: #1C1C1E; }
.sl.range .more span + span::before { content: "\00B7"; color: #E31E24; margin-right: 26px; font-weight: 700; }

/* chips */
.sl.chips .cols { position: absolute; inset: 0; display: grid; gap: 70px; }
.sl.chips .col h3 { margin: 0 0 24px; font-size: 22px; letter-spacing: .2em; text-transform: uppercase; color: #85858C; font-weight: 600; padding-bottom: 16px; border-bottom: 1px solid #CFCFCA; }
.sl.chips .col .list { display: flex; flex-wrap: wrap; gap: 14px; }
.sl.chips .col .list span { font-size: 24px; padding: 12px 22px; border: 1px solid #D9D9D4; background: #F6F6F4; }

/* table */
.sl.table .tw { position: absolute; left: 0; top: 0; bottom: 0; }
.sl.table.wimg .tw { right: 660px; }
.sl.table:not(.wimg) .tw { right: 0; }
.sl.table table { width: 100%; border-collapse: collapse; font-size: 25px; }
.sl.table th { text-align: left; font-size: 19px; letter-spacing: .14em; text-transform: uppercase; color: #85858C; font-weight: 600; padding: 0 22px 18px 0; border-bottom: 2px solid #1C1C1E; }
.sl.table td { padding: 22px 22px 22px 0; border-bottom: 1px solid #E4E4E0; line-height: 1.35; vertical-align: top; }
.sl.table td:first-child { font-weight: 600; }
.sl.table td.hl, .sl.table th.hl { background: #FDF1F1; padding-left: 22px; }
.sl.table th.hl { color: #E31E24; }
.sl.table .note { margin-top: 28px; font-size: 21px; line-height: 1.5; color: #4A4A50; padding-left: 22px; border-left: 4px solid #E31E24; }
.sl.table .side { position: absolute; right: 0; top: -40px; bottom: 0; width: 600px; }

/* case studies */
.sl.cases .grid { position: absolute; inset: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; }
.sl.cases .c { display: flex; flex-direction: column; border: 1px solid #E4E4E0; }
.sl.cases .c .ph { height: 300px; flex: none; }
.sl.cases .c .tx { padding: 26px 28px; border-top: 4px solid #E31E24; }
.sl.cases .c .k { font-size: 19px; letter-spacing: .16em; text-transform: uppercase; color: #E31E24; font-weight: 600; }
.sl.cases .c h3 { margin: 10px 0 0; font-family: Georgia, "Times New Roman", serif; font-weight: 400; font-size: 34px; line-height: 1.15; }
.sl.cases .c p { margin: 14px 0 0; font-size: 22px; line-height: 1.45; color: #4A4A50; }

/* closing */
.sl.closing { background: linear-gradient(120deg, #FFFFFF 0%, #F4F5F7 60%, #ECEEF1 100%); }
.sl.closing .txt { position: absolute; left: 120px; top: 0; bottom: 0; width: 1080px; display: flex; flex-direction: column; justify-content: center; gap: 34px; }
.sl.closing h2 { margin: 0; font-family: Georgia, "Times New Roman", serif; font-weight: 400; font-size: 84px; line-height: 1.05; }
.sl.closing p { margin: 0; font-size: 30px; line-height: 1.45; color: #4A4A50; max-width: 980px; }
.sl.closing .contact { display: flex; gap: 60px; font-size: 30px; padding-top: 30px; border-top: 1px solid #CFCFCA; }
.sl.closing .contact b { display: block; font-size: 19px; letter-spacing: .18em; text-transform: uppercase; color: #85858C; font-weight: 600; margin-bottom: 8px; }
.sl.closing .logos { position: absolute; right: 140px; top: 0; bottom: 0; display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 46px; }
.sl.closing .logos img { width: 420px; height: auto; }
.sl.closing .logos i { width: 2px; height: 90px; background: #E31E24; }

/* entrance motion for the slide on screen */
.sl .anim { opacity: 0; transform: translateY(18px); animation: slIn .7s cubic-bezier(.25,.8,.25,1) forwards; }
@keyframes slIn { to { opacity: 1; transform: none; } }
.thumbs .slidebox { box-shadow: none; }
.thumbs .slidebox .anim { animation: none; opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .sl .anim { animation: none; opacity: 1; transform: none; } }

/* ---- layout refinements ---- */
.sl.cover .txt { width: 600px; }
.sl.section .ft { right: 1060px; }
.sl.section .ft > span:nth-of-type(2), .sl.section .ft > span:nth-of-type(3) { display: none; }
.sl.range .card .ph { height: 250px; }
.sl.range .card p { font-size: 21px; }
.sl.features:not(.wimg) .grid { grid-auto-rows: auto; align-content: center; gap: 70px 60px; }
.sl.features:not(.wimg) .f h3 { font-size: 34px; }
.sl.features:not(.wimg) .f p { font-size: 26px; }
.sl.chips .col .list { gap: 16px; }
.sl.chips .col .list span { font-size: 27px; padding: 14px 26px; }
.sl.chips .cols { gap: 90px; align-content: center; }
.sl.has-lede .bd { top: 370px; }
.sl.closing .logos img { background: #fff; padding: 26px 34px; box-shadow: 0 10px 30px rgba(20,20,25,.08); box-sizing: content-box; width: 360px; }

/* ================= Photo-first slide types ================= */
/* hero: full-bleed photo, one short message */
.sl.hero .bgimg { position: absolute; inset: 0; }
.sl.hero .bgimg img { width: 100%; height: 100%; object-fit: cover; }
.sl.hero .msg { position: absolute; left: 110px; bottom: 110px; max-width: 860px; background: rgba(255,255,255,.94); padding: 46px 54px 44px; border-top: 6px solid #E31E24; box-shadow: 0 30px 80px rgba(0,0,0,.25); }
.sl.hero .msg h2 { margin: 14px 0 0; font-family: Georgia, "Times New Roman", serif; font-weight: 400; font-size: 64px; line-height: 1.06; }
.sl.hero .msg p { margin: 18px 0 0; font-size: 27px; line-height: 1.4; color: #4A4A50; }
.sl.hero .badge { position: absolute; right: 70px; top: 60px; background: #fff; padding: 18px 26px; box-shadow: 0 10px 30px rgba(0,0,0,.2); }
.sl.hero .badge img { height: 70px; width: auto; }

/* showcase: one big product photo + a few big numbers */
.sl.showcase .art { position: absolute; left: 0; top: 0; bottom: 0; width: 1180px; background: radial-gradient(ellipse at 50% 50%, #FFFFFF 0%, #EEF0F3 60%, #E2E5E9 100%); }
.sl.showcase .art img { width: 100%; height: 100%; object-fit: contain; padding: 70px; filter: drop-shadow(0 36px 36px rgba(20,25,35,.18)); }
.sl.showcase .art.cover img { object-fit: cover; padding: 0; filter: none; }
.sl.showcase .txt { position: absolute; left: 1250px; right: 100px; top: 0; bottom: 140px; display: flex; flex-direction: column; justify-content: center; gap: 26px; }
.sl.showcase h2 { margin: 0; font-family: Georgia, "Times New Roman", serif; font-weight: 400; font-size: 60px; line-height: 1.06; }
.sl.showcase .line { font-size: 25px; line-height: 1.4; color: #4A4A50; }
.sl.showcase .nums { display: flex; flex-direction: column; border-top: 1px solid #CFCFCA; }
.sl.showcase .nums div { padding: 20px 0 18px; border-bottom: 1px solid #E4E4E0; display: flex; align-items: baseline; gap: 22px; }
.sl.showcase .nums b { font-family: Georgia, "Times New Roman", serif; font-weight: 400; font-size: 52px; line-height: 1; color: #1C1C1E; min-width: 0; white-space: nowrap; }
.sl.showcase .nums span { font-size: 20px; color: #85858C; letter-spacing: .04em; }
.sl.showcase .ft { left: 1250px; }
.sl.showcase .ft > span:nth-of-type(1), .sl.showcase .ft > span:nth-of-type(2), .sl.showcase .ft > span:nth-of-type(3) { display: none; }

/* photos: bento mosaic with caption chips on the pictures */
.sl.photos .mz { position: absolute; left: 120px; right: 120px; top: 250px; bottom: 150px; display: grid; gap: 18px; }
.sl.photos .mz.n2 { grid-template-columns: 1fr 1fr; }
.sl.photos .mz.n3 { grid-template-columns: 1.6fr 1fr; grid-template-rows: 1fr 1fr; }
.sl.photos .mz.n3 .p:first-child { grid-row: span 2; }
.sl.photos .mz.n4 { grid-template-columns: 1.5fr 1fr 1fr; grid-template-rows: 1fr 1fr; }
.sl.photos .mz.n4 .p:first-child { grid-row: span 2; }
.sl.photos .mz.n4 .p:last-child { grid-column: span 2; }
.sl.photos .mz.n5 { grid-template-columns: 1.4fr 1fr 1fr; grid-template-rows: 1fr 1fr; }
.sl.photos .mz.n5 .p:first-child { grid-row: span 2; }
.sl.photos .mz.n6 { grid-template-columns: repeat(3, 1fr); grid-template-rows: 1fr 1fr; }
.sl.photos .p { position: relative; overflow: hidden; background: #E9EBEE; }
.sl.photos .p img { width: 100%; height: 100%; object-fit: cover; }
.sl.photos .p.fit img { object-fit: contain; padding: 24px; background: #fff; }
.sl.photos .p span { position: absolute; left: 0; bottom: 0; max-width: 92%; background: rgba(255,255,255,.95); padding: 12px 20px; font-size: 21px; font-weight: 600; border-left: 5px solid #E31E24; }
.sl.photos .hd .lede { display: none; }

/* logos: client / partner logo wall */
.sl.logos .wall { position: absolute; left: 120px; right: 120px; top: 280px; bottom: 160px; display: grid; gap: 22px; align-content: center; }
.sl.logos .lg { background: #fff; border: 1px solid #E4E4E0; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 22px 26px 16px; height: 170px; }
.sl.logos .lg img { max-width: 100%; max-height: 96px; object-fit: contain; }
.sl.logos .lg span { margin-top: 12px; font-size: 17px; color: #85858C; letter-spacing: .06em; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.sl.logos .lg.txt b { font-size: 30px; font-weight: 700; color: #1C1C1E; text-align: center; line-height: 1.15; }
.sl.logos .note { position: absolute; left: 120px; right: 120px; bottom: 150px; font-size: 20px; color: #85858C; }

.sl.photos .mz.n1 { grid-template-columns: 1fr; }

/* video slide: full-bleed clip with a small caption */
.sl.video { background: #0B0C0E; }
.sl.video video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; background: #0B0C0E; }
.sl.video .vcap { position: absolute; left: 70px; top: 60px; z-index: 2; background: rgba(255,255,255,.94); padding: 22px 30px; border-left: 6px solid #E31E24; }
.sl.video .vcap .eb { font-size: 20px; }
.sl.video .vcap h2 { margin: 8px 0 0; font-family: Georgia, "Times New Roman", serif; font-weight: 400; font-size: 44px; }
.sl.video .vtile { position: absolute; inset: 0; display: grid; place-items: center; color: #fff; font-size: 90px; }
.thumbs .sl.video video { display: none; }
.sl.stats .grid b { white-space: nowrap; font-size: 80px; }

/* equal 2 x 2 grid that shows each photo whole */
.sl.photos .mz.quad { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; }
.sl.photos .mz.quad .p { grid-row: auto !important; grid-column: auto !important; background: #fff; }
.sl.photos .mz.quad .p img { object-fit: contain; background: #F4F5F7; }
