/* RATP case study: native CMS header, content blocks, PhotoSwipe and CTA library. */
.sdx-iot{--iot-accent:#087f6a;--iot-mint:#b5eadb;--iot-surface:#f0f7f5;--iot-border:#bdd6d0}
.sdx-iot__header{grid-template-columns:minmax(0,.9fr) minmax(0,1.35fr);gap:clamp(2rem,4vw,4rem)}
.page-header.page-header--simple:has(.sdx-iot__header) .page-header__copy{max-width:none}
.page-header.page-header--simple:has(.sdx-iot__header) h1{font-size:clamp(2.25rem,3.3vw,3.5rem);line-height:1.08}
.page-header.page-header--simple:has(.sdx-iot__header) .page-header__inner{max-width:90rem;width:100%}
.sdx-iot__header .page-header__intro{font-size:1.02rem;line-height:1.7}
.sdx-iot__tags{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;padding:0;margin:1.4rem 0 0}
.sdx-iot__tags li{font-size:.7rem;line-height:1.4;padding:.4rem .65rem;border:1px solid #a4d7cd60;border-radius:2rem;color:#d2f2e9;background:#b5eadb0a}
.sdx-iot__header .sdx-portfolio__back{margin-top:1.3rem}
.sdx-iot__body{display:grid;gap:clamp(3rem,6vw,5.5rem);padding-top:0}
.sdx-iot p{line-height:1.8}
.sdx-iot h3{font-size:clamp(1.1rem,1.6vw,1.4rem);line-height:1.35;margin:0}
.sdx-iot__context{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:clamp(2rem,4vw,4rem);align-items:start}
.sdx-iot__context h2{margin-bottom:1.4rem}
.sdx-iot__context p+p{margin-top:1rem}
.sdx-iot__role{padding:clamp(1.5rem,3vw,2.5rem);background:linear-gradient(145deg,#e5f3ed,#f6fbfa);border:1px solid var(--iot-border);border-radius:1.2rem}
.sdx-iot__role>i{display:grid;place-items:center;width:2.8rem;height:2.8rem;background:#d0e9df;border-radius:.7rem;margin-bottom:1.3rem;font-size:1.5rem;color:var(--iot-accent)}
.sdx-iot__role h3{margin-bottom:1rem}
.sdx-iot__role p{font-size:.95rem;color:var(--portfolio-muted)}
.sdx-iot__heading{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(1.5rem,4vw,4rem);align-items:start;margin-bottom:2rem}
.sdx-iot__heading>p{color:var(--portfolio-muted)}
.sdx-iot__flow{padding:clamp(1.5rem,3.5vw,3.5rem);color:#eaf8f3;border:1px solid #245548;border-radius:1.5rem;background:radial-gradient(ellipse at 100% 0,#297e6560,transparent 60%),#092c2c;box-shadow:0 1.5rem 3rem #07362e10}
.sdx-iot__flow .sdx-iot__heading p{color:#bfdbd4}
.sdx-iot__lane{display:grid;grid-template-columns:10rem minmax(0,1fr);gap:1.5rem;align-items:center;margin-block:1.25rem}
.sdx-iot__lane h3{font-size:.85rem;color:var(--iot-mint);letter-spacing:.025em}
.sdx-iot__lane ol{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;list-style:none;margin:0;padding:0}
.sdx-iot__lane li{position:relative;display:flex;flex-direction:column;gap:.6rem;padding:1.1rem .85rem;border:1px solid #88c5b946;border-radius:.65rem;background:#bbf8d807;font-size:.82rem;line-height:1.5;font-weight:600}
.sdx-iot__lane li>span{font-size:.65rem;color:#83c6b6;font-variant-numeric:tabular-nums}
.sdx-iot__lane li:not(:last-child):after{content:'→';position:absolute;right:-.85rem;top:42%;color:#80bbac;font-size:.9rem}
.sdx-iot__return{display:flex;gap:1.2rem;padding-top:1.8rem;margin-top:2rem;border-top:1px solid #acd6c936}
.sdx-iot__return>i{font-size:1.8rem;color:var(--iot-mint)}
.sdx-iot__return h3{font-size:1rem;margin-bottom:.5rem}
.sdx-iot__return p{color:#bfdbd4;font-size:.9rem}
.sdx-iot__chapter{display:grid;grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr);align-items:center;gap:clamp(2rem,4vw,4rem)}
.sdx-iot__chapter-copy{display:grid;gap:1.2rem}
.sdx-iot__number{font-size:.8rem;letter-spacing:.1em;font-weight:800;color:var(--iot-accent);display:inline-block}
.sdx-iot__chapter h2{font-size:clamp(1.7rem,2.4vw,2.45rem)}
.sdx-iot__chapter-copy>p{color:var(--portfolio-muted)}
.sdx-iot .sdx-iot__detail{border-left:2px solid var(--iot-accent);padding-left:1rem;font-size:.87rem;line-height:1.7}
.sdx-iot__chapter--correlation{display:block;padding:clamp(1.5rem,3vw,3rem);border-radius:1.5rem;border:1px solid var(--iot-border);background:var(--iot-surface)}
.sdx-iot__chapter--correlation .sdx-iot__chapter-copy{grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:3rem;margin-bottom:2rem}
.sdx-iot__chapter--correlation .sdx-iot__number{grid-column:1;grid-row:1}
.sdx-iot__chapter--correlation h2{grid-column:1;grid-row:2/4;align-self:start}
.sdx-iot__chapter--correlation .sdx-iot__chapter-copy>p{grid-column:2;grid-row:2}
.sdx-iot__chapter--correlation .sdx-iot__chapter-copy>.sdx-iot__detail{grid-row:3}
.sdx-iot__chapter--operations{grid-template-columns:minmax(0,1.28fr) minmax(0,.72fr)}
.sdx-iot__chapter--operations .sdx-iot__chapter-copy{grid-column:2;grid-row:1}
.sdx-iot__chapter--operations .sdx-iot__figure{grid-column:1;grid-row:1}
.sdx-iot__figure{margin:0;min-width:0}
.sdx-iot__zoom{position:relative;display:block;overflow:hidden;border:1px solid #689d8e70;border-radius:.8rem;background:#edf3f1;box-shadow:0 1rem 2.5rem #123a321a;cursor:zoom-in;isolation:isolate}
.sdx-iot__zoom img{display:block;width:100%;height:auto;object-fit:contain;transition:filter .2s}
.sdx-iot__zoom-label{position:absolute;right:.75rem;bottom:.75rem;display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border:1px solid #7dc2ae66;border-radius:.5rem;background:#062e2bf2;color:#fff;font-size:.7rem;font-weight:600;box-shadow:0 .2rem .8rem #0002}
.sdx-iot__zoom:hover .sdx-iot__zoom-label{background:#087f6a}
.sdx-iot__figure figcaption{font-size:.75rem;line-height:1.65;color:var(--portfolio-muted);padding-top:.9rem}
.sdx-iot__header .sdx-iot__figure figcaption{color:#b7d8d2}
.sdx-iot__header .sdx-iot__zoom{border-color:#619d8f;box-shadow:0 1.5rem 3.5rem #0004}
.sdx-iot__analytics-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem}
.sdx-iot__analytics-grid>article{min-width:0;display:flex;flex-direction:column;border:1px solid var(--iot-border);border-radius:1.2rem;overflow:hidden;background:#f4f9f7}
.sdx-iot__analytics-copy{display:grid;gap:1rem;padding:clamp(1.4rem,2.5vw,2.4rem)}
.sdx-iot__analytics-copy p{color:var(--portfolio-muted);font-size:.94rem}
.sdx-iot__analytics-grid .sdx-iot__figure{margin-top:auto;padding:0 1rem 1.25rem}
.sdx-iot__challenges{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.1rem}
.sdx-iot__challenges article{padding:clamp(1.3rem,2.4vw,2rem);border:1px solid var(--iot-border);border-radius:1rem;background:linear-gradient(135deg,#fff,#f1f8f5)}
.sdx-iot__challenges i{display:inline-block;color:var(--iot-accent);font-size:1.45rem;margin-bottom:1.1rem}
.sdx-iot__challenges h3{font-size:1.12rem;margin-bottom:.8rem}
.sdx-iot__challenges p{font-size:.9rem;color:var(--portfolio-muted)}
.sdx-iot__gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem}
.sdx-iot__gallery article{min-width:0}
.sdx-iot__gallery h3{font-size:1rem;margin-bottom:1rem}
.sdx-iot__gallery img{aspect-ratio:2/1;object-fit:contain}
.sdx-iot__gallery .sdx-iot__zoom-label{font-size:0;padding:.45rem}
.sdx-iot__gallery .sdx-iot__zoom-label i{font-size:.9rem}
.sdx-iot__result{padding:clamp(1.7rem,4vw,4rem);border-radius:1.4rem;background:radial-gradient(ellipse at 100% 0,#29886980,transparent 65%),#08332f;color:#eefbf6}
.sdx-iot__result>p{margin-top:1.5rem;color:#c6e6dc;font-size:1.1rem}
.sdx-iot__result-points{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem;margin-top:2.5rem;padding-top:2rem;border-top:1px solid #9ecab840}
.sdx-iot__result-points h3{font-size:1.12rem;margin-bottom:.6rem;color:var(--iot-mint)}
.sdx-iot__result-points p{font-size:.9rem;color:#c6e6dc}
@media(min-width:1600px){.sdx-iot__header{grid-template-columns:minmax(0,.85fr) minmax(0,1.4fr)}}
@media(max-width:1100px){.sdx-iot__header{grid-template-columns:minmax(0,1fr)}.sdx-iot__lane{grid-template-columns:1fr;gap:.8rem}.sdx-iot__chapter,.sdx-iot__chapter--operations{grid-template-columns:1fr}.sdx-iot__chapter--operations .sdx-iot__chapter-copy,.sdx-iot__chapter--operations .sdx-iot__figure{grid-column:auto;grid-row:auto}.sdx-iot__challenges{grid-template-columns:repeat(2,minmax(0,1fr))}.sdx-iot__header .sdx-iot__zoom{max-width:none}}
@media(max-width:767px){.sdx-iot__context,.sdx-iot__heading,.sdx-iot__analytics-grid{grid-template-columns:1fr;gap:1.5rem}.sdx-iot__chapter--correlation .sdx-iot__chapter-copy{display:grid;grid-template-columns:1fr}.sdx-iot__chapter--correlation .sdx-iot__chapter-copy>*{grid-column:auto!important;grid-row:auto!important}.sdx-iot__gallery{grid-template-columns:1fr;gap:1.8rem}.sdx-iot__gallery img{aspect-ratio:auto}.sdx-iot__gallery .sdx-iot__zoom-label{font-size:.7rem}.sdx-iot__result-points{grid-template-columns:1fr;gap:1.4rem}.sdx-iot__lane ol{grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.sdx-iot__lane li:nth-child(2):after{content:none}.sdx-iot__header .page-header__intro{font-size:1rem}.sdx-iot__zoom-label{right:.5rem;bottom:.5rem}.sdx-iot__return{gap:.8rem}}
@media(max-width:479px){.sdx-iot__challenges{grid-template-columns:1fr}.sdx-iot__flow{padding:1.25rem}.sdx-iot__lane li{padding:.85rem .65rem;font-size:.76rem}.sdx-iot__chapter--correlation{padding:1.1rem}.sdx-iot__tags li{font-size:.65rem}.sdx-iot__zoom-label{font-size:.62rem;padding:.4rem .55rem}}
@media(prefers-reduced-motion:reduce){.sdx-iot__zoom img{transition:none}}

@media(max-width:767px){.page-header.page-header--simple:has(.sdx-iot__header) h1{font-size:clamp(1.85rem,8vw,2.35rem)}}
