/* cam.css — GENERATED by build_css.py. DO NOT EDIT THIS FILE.
 * Edit a part in /root/cam-scripts/css/ and re-run the script.
 * Parts, in cascade order:
 *   00-mockup-utils.css
 *   00-mockup.css
 *   05-responsive.css
 *   06-grounds.css
 *   10-bridge.css
 *   20-nav.css
 *   30-form.css
 *   40-newbands.css
 *   45-fixes.css
 *   50-elementor.css
 *   60-elementor-map.css
 *   65-elementor-widgets.css
 *   67-fixes-map.css
 *   68-reviews-carousel.css
 *   69-markup-r1.css
 *   70-markup-r2.css
 */


/* ==================== 00-mockup-utils.css ==================== */
/* the four mockups' own <style> blocks, merged and deduped, verbatim */
body { margin: 0; background: #F9F9F9; }
a { text-decoration: none; }
.cx-nav-link:hover { color: #FFFFFF; }
.cx-btn:hover { filter: brightness(1.06); }
.cx-card:hover { transform: translateY(-4px); box-shadow: 0 18px 40px rgba(15,23,42,0.12); }
.cx-footer-link:hover { color: #FFFFFF; }
.cx-scroll { scrollbar-width: thin; scrollbar-color: #E0742A #E4E8F0; -webkit-overflow-scrolling: touch; }
.cx-scroll::-webkit-scrollbar { height: 6px; }
.cx-scroll::-webkit-scrollbar-track { background: #E4E8F0; border-radius: 999px; }
.cx-scroll::-webkit-scrollbar-thumb { background: #E0742A; border-radius: 999px; }
.cx-step-link:hover { color: #E0742A; }
.cx-chip:hover { background: #EFF2F7; }
.cx-tier:hover { transform: translateY(-4px); box-shadow: 0 18px 40px rgba(15,23,42,0.12); }

/* ==================== 00-mockup.css ==================== */
/* GENERATED by extract_inline.py. Do not edit.
   One class per distinct inline style across the four CamTech mockups.
   274 classes. Re-run the extractor instead of editing. */
.cam-x001{width: 100%; min-height: 100vh; background: #F9F9F9; font-family: 'Work Sans', sans-serif; color: #0F172A}
.cam-x002{width: 100%; background: #E0742A}
.cam-x003{max-width: 1240px; margin: 0 auto; padding: 8px var(--gut); display: flex; align-items: center; justify-content: space-between}
.cam-x004{display: flex; align-items: center; gap: 8px; color: #FFFFFF; font-size: 14.5px; font-weight: 600}
.cam-x005{display: flex; align-items: center; gap: 10px}
.cam-x006{width: 22px; height: 22px; border-radius: 50%; background: rgba(255,255,255,0.22); display: flex; align-items: center; justify-content: center}
.cam-x007{width: 100%; background: #092634}
.cam-x008{max-width: 1240px; margin: 0 auto; padding: 16px var(--gut); display: flex; align-items: center; justify-content: space-between; gap: 24px}
.cam-x009{display: inline-flex; align-items: center}
.cam-x010{height: 44px; width: auto; display: block}
.cam-x011{display: flex; align-items: center; gap: 34px}
.cam-x012{color: #B9C3D9; font-size: 16px; font-weight: 500; transition: color .15s}
.cam-x013{display: flex; align-items: center; gap: 5px}
.cam-x014{position: relative; width: 100%; background: #092634; overflow: hidden; padding: 96px var(--gut) 130px}
.cam-x015{position: relative; max-width: 780px; margin: 0 auto; display: flex; flex-direction: column; align-items: center; text-align: center}
.cam-x016{position: absolute; top: -34px; left: 50%; transform: translateX(-50%); font-family: 'Space Grotesk', sans-serif; font-size: 92px; font-weight: 700; color: rgba(255,255,255,0.06); white-space: nowrap; letter-spacing: 0.04em; user-select: none}
.cam-x017{position: relative; margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 56px; line-height: 1.1; font-weight: 700; color: #FFFFFF}
.cam-x018{position: relative; margin: 18px 0 0; max-width: 600px; font-size: 19.5px; line-height: 1.7; color: #C7D2E6}
.cam-x019{position: relative; display: flex; align-items: center; gap: 16px; margin-top: 30px; flex-wrap: wrap; justify-content: center}
.cam-x020{display: inline-flex; align-items: center; gap: 10px; background: #E0742A; color: #FFFFFF; padding: 5px 24px 5px 5px; border-radius: 999px; font-size: 16px; font-weight: 700; transition: filter .15s}
.cam-x021{width: 30px; height: 30px; border-radius: 50%; background: rgba(255,255,255,0.28); display: flex; align-items: center; justify-content: center; flex-shrink: 0}
.cam-x022{display: inline-flex; align-items: center; gap: 10px; background: #FFFFFF; color: #092634; padding: 5px 24px 5px 5px; border-radius: 999px; font-size: 16px; font-weight: 700; transition: filter .15s}
.cam-x023{width: 30px; height: 30px; border-radius: 50%; background: rgba(9,38,52,0.10); display: flex; align-items: center; justify-content: center; flex-shrink: 0}
.cam-x024{position: relative; height: 0}
.cam-x025{position: absolute; left: 0; top: -90px; width: 100%; height: 90px; display: block}
.cam-x026{width: 100%; background: #F9F9F9; padding: 24px var(--gut) 90px}
.cam-x027{max-width: 1200px; margin: 0 auto; display: flex; flex-direction: column; gap: 44px}
.cam-x028{max-width: 640px; margin: 0 auto; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 16px}
.cam-x029{margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 35px; font-weight: 700; color: #092634}
.cam-x030{margin: 0; font-size: 18px; line-height: 1.75; color: #3D4A61}
.cam-x031{display: flex; align-items: center; gap: 14px; margin-top: 6px}
.cam-x032{display: inline-flex; align-items: center; gap: 10px; background: #E0742A; color: #FFFFFF; padding: 5px 22px 5px 5px; border-radius: 999px; font-size: 15.5px; font-weight: 700}
.cam-x033{width: 28px; height: 28px; border-radius: 50%; background: rgba(255,255,255,0.28); display: flex; align-items: center; justify-content: center; flex-shrink: 0}
.cam-x034{display: inline-flex; align-items: center; gap: 10px; background: transparent; border: 1.5px solid #D8DEE6; color: #092634; padding: 5px 22px 5px 5px; border-radius: 999px; font-size: 15.5px; font-weight: 700}
.cam-x035{width: 28px; height: 28px; border-radius: 50%; background: rgba(9,38,52,0.08); display: flex; align-items: center; justify-content: center; flex-shrink: 0}
.cam-x036{display: grid; grid-template-columns: repeat(12, minmax(0,1fr)); grid-auto-rows: 210px; gap: 20px}
.cam-x037{grid-column: span 7; position: relative; border-radius: 18px; overflow: hidden}
.cam-x038{position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 20%}
.cam-x039{position: absolute; inset: 0; background: linear-gradient(0deg, rgba(0,78,114,0.88) 0%, rgba(0,78,114,0.18) 60%)}
.cam-x040{position: absolute; left: 24px; bottom: 22px; right: 24px; display: flex; flex-direction: column; gap: 6px}
.cam-x041{font-family: 'Space Grotesk', sans-serif; font-size: 21px; font-weight: 700; color: #FFFFFF}
.cam-x042{font-size: 16.5px; line-height: 1.6; color: #DCEAF5; max-width: 360px}
.cam-x043{margin-top: 6px; display: inline-flex; align-items: center; gap: 8px; font-size: 14.5px; font-weight: 700; color: #FFFFFF}
.cam-x044{width: 20px; height: 20px; border-radius: 50%; background: #E0742A; display: flex; align-items: center; justify-content: center}
.cam-x045{grid-column: span 5; position: relative; border-radius: 18px; overflow: hidden; padding: 26px; display: flex; flex-direction: column; justify-content: flex-end; gap: 8px}
.cam-x046{position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover}
.cam-x047{position: absolute; inset: 0; background: linear-gradient(0deg, rgba(224,116,42,0.92) 0%, rgba(224,116,42,0.45) 60%)}
.cam-x048{position: relative; font-family: 'Space Grotesk', sans-serif; font-size: 21px; font-weight: 700; color: #FFFFFF}
.cam-x049{position: relative; font-size: 16.5px; line-height: 1.6; color: rgba(255,255,255,0.9)}
.cam-x050{position: relative; margin-top: 6px; display: inline-flex; align-items: center; gap: 8px; font-size: 14.5px; font-weight: 700; color: #FFFFFF}
.cam-x051{width: 20px; height: 20px; border-radius: 50%; background: rgba(255,255,255,0.28); display: flex; align-items: center; justify-content: center}
.cam-x052{grid-column: span 5; position: relative; border-radius: 18px; overflow: hidden}
.cam-x053{position: absolute; inset: 0; background: linear-gradient(0deg, rgba(0,78,114,0.88) 0%, rgba(0,78,114,0.25) 60%)}
.cam-x054{position: absolute; left: 22px; bottom: 20px; right: 22px; display: flex; flex-direction: column; gap: 6px}
.cam-x055{font-family: 'Space Grotesk', sans-serif; font-size: 19px; font-weight: 700; color: #FFFFFF}
.cam-x056{font-size: 16px; line-height: 1.6; color: #DCEAF5}
.cam-x057{margin-top: 4px; display: inline-flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 700; color: #FFFFFF}
.cam-x058{width: 18px; height: 18px; border-radius: 50%; background: #E0742A; display: flex; align-items: center; justify-content: center}
.cam-x059{position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 70%}
.cam-x060{font-size: 16.5px; line-height: 1.6; color: #DCEAF5; max-width: 380px}
.cam-x061{width: 100%; background: radial-gradient(circle at 12% 105%, rgba(42,180,242,0.38) 0%, rgba(42,180,242,0) 52%), linear-gradient(165deg, #050C13 0%, #092634 60%, #0B3B54 100%); padding: 60px var(--gut)}
.cam-x062{max-width: 1100px; margin: 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 32px; flex-wrap: wrap}
.cam-x063{margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 31px; line-height: 1.25; font-weight: 700; color: #FFFFFF; max-width: 340px}
.cam-x064{display: flex; align-items: center; gap: 28px; flex-wrap: wrap}
.cam-x065{margin: 0; max-width: 320px; font-size: 17px; line-height: 1.7; color: rgba(255,255,255,0.85)}
.cam-x066{display: inline-flex; align-items: center; gap: 10px; background: #E0742A; color: #FFFFFF; padding: 5px 22px 5px 5px; border-radius: 999px; font-size: 15.5px; font-weight: 700; flex-shrink: 0}
.cam-x067{width: 100%; background: #FFFFFF; padding: 100px var(--gut) 160px}
.cam-x068{max-width: 1160px; margin: 0 auto; display: flex; flex-direction: column; gap: 56px}
.cam-x069{max-width: 560px; margin: 0 auto; text-align: center; display: flex; flex-direction: column; gap: 14px}
.cam-x070{margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 33px; font-weight: 700; color: #092634}
.cam-x071{margin: 0; font-size: 17.5px; line-height: 1.7; color: #3D4A61}
.cam-x072{display: flex; align-items: flex-start; justify-content: center; gap: 6px}
.cam-x073{display: flex; flex-direction: column; align-items: center; gap: 14px; width: 190px}
.cam-x074{width: 62px; height: 62px; border-radius: 16px; background: #E0742A; display: flex; align-items: center; justify-content: center}
.cam-x075{font-family: 'Space Grotesk', sans-serif; font-size: 17px; font-weight: 700; color: #092634; text-align: center}
.cam-x076{font-size: 16px; line-height: 1.6; color: #3D4A61; text-align: center}
.cam-x077{font-size: 14px; font-weight: 700; color: #3D4A61; transition: color .15s}
.cam-x078{margin-top: 24px; flex-shrink: 0}
.cam-x079{width: 62px; height: 62px; border-radius: 16px; background: #092634; display: flex; align-items: center; justify-content: center}
.cam-x080{position: relative; width: 100%; background: #092634; overflow: hidden; padding: 24px var(--gut) 160px}
.cam-x081{max-width: 1200px; margin: 0 auto; display: flex; flex-direction: column; gap: 56px}
.cam-x082{max-width: 620px; margin: 0 auto; text-align: center; display: flex; flex-direction: column; gap: 14px}
.cam-x083{font-size: 15px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: #2AB4F2}
.cam-x084{margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 35px; font-weight: 700; color: #FFFFFF}
.cam-x085{margin: 0; font-size: 18px; line-height: 1.7; color: #C7D2E6}
.cam-x086{display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px}
.cam-x087{background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.14); border-radius: 16px; padding: 28px 24px; display: flex; flex-direction: column; gap: 14px; transition: transform .18s, box-shadow .18s}
.cam-x088{width: 48px; height: 48px; border-radius: 13px; background: #E0742A; display: flex; align-items: center; justify-content: center}
.cam-x089{font-family: 'Space Grotesk', sans-serif; font-size: 18px; font-weight: 700; color: #FFFFFF}
.cam-x090{font-size: 17px; line-height: 1.6; color: #C7D2E6; flex-grow: 1}
.cam-x091{font-size: 15px; font-weight: 700; color: #2AB4F2}
.cam-x092{width: 48px; height: 48px; border-radius: 13px; background: #2AB4F2; display: flex; align-items: center; justify-content: center}
.cam-x093{display: flex; justify-content: center; gap: 24px; flex-wrap: wrap}
.cam-x094{width: 282px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.14); border-radius: 16px; padding: 28px 24px; display: flex; flex-direction: column; gap: 14px; transition: transform .18s, box-shadow .18s}
.cam-x095{width: 100%; background: #FFFFFF; padding: 72px var(--gut); border-top: 1px solid #E4E8F0; border-bottom: 1px solid #E4E8F0}
.cam-x096{max-width: 1100px; margin: 0 auto; display: flex; flex-direction: column; align-items: center; gap: 28px}
.cam-x097{font-size: 14.5px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: #64748F}
.cam-x098{display: flex; align-items: center; justify-content: center; gap: 48px; flex-wrap: wrap}
.cam-x099{font-family: 'Space Grotesk', sans-serif; font-size: 22px; font-weight: 700; color: #33415A; letter-spacing: 0.02em}
.cam-x100{font-family: 'Space Grotesk', sans-serif; font-size: 17px; font-weight: 700; color: #33415A; letter-spacing: 0.04em}
.cam-x101{font-family: 'Space Grotesk', sans-serif; font-size: 20px; font-weight: 700; color: #33415A; letter-spacing: 0.02em}
.cam-x102{display: flex; align-items: center; gap: 8px; padding: 8px 16px; border-radius: 999px; background: #F9F9F9; font-size: 14.5px; font-weight: 600; color: #3D4A61}
.cam-x103{width: 100%; background: radial-gradient(circle at 88% 0%, rgba(42,180,242,0.25) 0%, rgba(42,180,242,0) 50%), linear-gradient(180deg, #071019 0%, #092634 100%); padding: 100px var(--gut)}
.cam-x104{display: flex; gap: 24px; overflow-x: auto; scroll-snap-type: x mandatory; padding: 4px 4px 16px; margin: 0 -4px}
.cam-x105{scroll-snap-align: start; flex: 0 0 340px; background: #FFFFFF; border: 1px solid #E4E8F0; border-radius: 16px; padding: 30px 26px; display: flex; flex-direction: column; gap: 16px}
.cam-x106{display: flex; gap: 3px}
.cam-x107{font-size: 18px; line-height: 1.65; color: #33415A}
.cam-x108{display: flex; align-items: center; gap: 12px; margin-top: 6px}
.cam-x109{width: 40px; height: 40px; border-radius: 50%; background: #E4E8F0}
.cam-x110{font-size: 15.5px; font-weight: 700; color: #092634}
.cam-x111{font-size: 14.5px; color: #64748F}
.cam-x112{display: flex; align-items: center; justify-content: center; gap: 8px}
.cam-x113{width: 22px; height: 6px; border-radius: 999px; background: #E0742A}
.cam-x114{width: 6px; height: 6px; border-radius: 999px; background: #D8DEE6}
.cam-x115{width: 100%; background: #FFFFFF; padding: 100px var(--gut)}
.cam-x116{max-width: 700px; margin: 0 auto; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 26px}
.cam-x117{margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 37px; line-height: 1.2; font-weight: 700; color: #092634}
.cam-x118{font-style: italic; color: #E0742A; font-weight: 500}
.cam-x119{margin: 0; max-width: 480px; font-size: 17px; color: #3D4A61}
.cam-x120{display: inline-flex; align-items: center; gap: 10px; background: #E0742A; color: #FFFFFF; padding: 6px 26px 6px 6px; border-radius: 999px; font-size: 16.5px; font-weight: 700}
.cam-x121{width: 34px; height: 34px; border-radius: 50%; background: rgba(255,255,255,0.25); display: flex; align-items: center; justify-content: center; flex-shrink: 0}
.cam-x122{width: 100%; background: #092634; padding: 56px var(--gut) 28px}
.cam-x123{max-width: 1240px; margin: 0 auto; display: flex; flex-direction: column; gap: 40px}
.cam-x124{display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 32px; padding-bottom: 40px; border-bottom: 1px solid rgba(255,255,255,0.08)}
.cam-x125{display: flex; flex-direction: column; gap: 18px}
.cam-x126{display: inline-flex; align-items: center; width: fit-content}
.cam-x127{height: 56px; width: auto; display: block}
.cam-x128{display: flex; flex-direction: column; gap: 4px}
.cam-x129{font-size: 18px; font-weight: 700; color: #FFFFFF}
.cam-x130{font-size: 15.5px; color: #A9B8D6; margin-top: 4px}
.cam-x131{font-size: 15.5px; color: #A9B8D6}
.cam-x132{display: flex; flex-direction: column; gap: 14px}
.cam-x133{font-size: 14.5px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: #FFFFFF}
.cam-x134{font-size: 15.5px; color: #A9B8D6; transition: color .15s}
.cam-x135{padding-top: 20px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px}
.cam-x136{font-size: 14.5px; color: #5C6A85}
.cam-x137{font-size: 14.5px; color: #5C6A85; display: flex; align-items: center; gap: 8px}
.cam-x138{font-size: 14.5px; color: #5C6A85; transition: color .15s}
.cam-x139{color: #FFFFFF; font-size: 16px; font-weight: 600; transition: color .15s}
.cam-x140{position: relative; width: 100%; background: #092634; overflow: hidden; padding: 90px var(--gut) 110px}
.cam-x141{position: absolute; top: -24px; left: 50%; transform: translateX(-50%); font-family: 'Space Grotesk', sans-serif; font-size: 92px; font-weight: 700; color: rgba(255,255,255,0.06); white-space: nowrap; letter-spacing: 0.04em; user-select: none}
.cam-x142{position: relative; display: flex; align-items: center; gap: 8px; padding: 6px 16px; border-radius: 999px; background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.18); font-size: 13.5px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: #2AB4F2}
.cam-x143{position: relative; margin: 18px 0 0; font-family: 'Space Grotesk', sans-serif; font-size: 46px; line-height: 1.15; font-weight: 700; color: #FFFFFF}
.cam-x144{position: relative; margin: 18px 0 0; max-width: 600px; font-size: 18px; line-height: 1.7; color: #C7D2E6}
.cam-x145{width: 100%; background: #FFFFFF; padding: 30px var(--gut) 110px}
.cam-x146{max-width: 1160px; margin: 0 auto; display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 64px; align-items: center}
.cam-x147{display: flex; flex-direction: column; gap: 20px}
.cam-x148{font-size: 14.5px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: #E0742A}
.cam-x149{margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 35px; line-height: 1.2; font-weight: 700; color: #092634}
.cam-x150{margin: 0; font-size: 16.5px; line-height: 1.75; color: #3D4A61}
.cam-x151{position: relative; border-radius: 20px; overflow: hidden; aspect-ratio: 4 / 3.4}
.cam-x152{position: absolute; inset: 0; background: linear-gradient(0deg, rgba(9,38,52,0.55) 0%, rgba(9,38,52,0) 45%)}
.cam-x153{position: absolute; left: 22px; bottom: 20px; right: 22px; display: flex; align-items: center; gap: 10px; background: rgba(9,38,52,0.85); backdrop-filter: blur(4px); border-radius: 12px; padding: 12px 16px}
.cam-x154{flex-shrink: 0}
.cam-x155{font-size: 14px; font-weight: 600; color: #FFFFFF}
.cam-x156{width: 100%; background: radial-gradient(circle at 12% 105%, rgba(42,180,242,0.38) 0%, rgba(42,180,242,0) 52%), linear-gradient(165deg, #050C13 0%, #092634 60%, #0B3B54 100%); padding: 64px var(--gut)}
.cam-x157{max-width: 1160px; margin: 0 auto; display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 32px}
.cam-x158{display: flex; flex-direction: column; gap: 6px; text-align: center}
.cam-x159{font-family: 'Space Grotesk', sans-serif; font-size: 40px; font-weight: 700; color: #FFFFFF}
.cam-x160{font-size: 14.5px; line-height: 1.5; color: #A9B8D6}
.cam-x161{display: flex; flex-direction: column; gap: 6px; text-align: center; border-left: 1px solid rgba(255,255,255,0.12); border-right: 1px solid rgba(255,255,255,0.12)}
.cam-x162{display: flex; flex-direction: column; gap: 6px; text-align: center; border-right: 1px solid rgba(255,255,255,0.12)}
.cam-x163{position: absolute; left: 0; top: -1px; width: 100%; height: 90px; display: block}
.cam-x164{width: 100%; background: #FFFFFF; padding: 90px var(--gut) 100px; position: relative; overflow: hidden}
.cam-x165{position: absolute; top: 30px; right: -20px; font-family: 'Space Grotesk', sans-serif; font-size: 130px; font-weight: 700; color: rgba(9,38,52,0.035); white-space: nowrap; letter-spacing: 0.02em; user-select: none}
.cam-x166{position: relative; max-width: 1160px; margin: 0 auto; display: flex; flex-direction: column; gap: 44px}
.cam-x167{max-width: 620px; display: flex; flex-direction: column; gap: 14px}
.cam-x168{display: grid; grid-template-columns: 1.3fr 1fr; gap: 24px; align-items: stretch}
.cam-x169{position: relative; border-radius: 20px; overflow: hidden; aspect-ratio: 16 / 10}
.cam-x170{position: absolute; inset: 0; background: linear-gradient(0deg, rgba(9,38,52,0.6) 0%, rgba(9,38,52,0) 40%)}
.cam-x171{position: absolute; left: 22px; bottom: 20px; right: 22px; font-size: 15px; font-weight: 600; color: #FFFFFF}
.cam-x172{position: relative; border-radius: 20px; overflow: hidden; aspect-ratio: 4 / 3.6}
.cam-x173{position: absolute; inset: 0; background: linear-gradient(160deg, rgba(9,38,52,0.55) 0%, rgba(224,116,42,0.28) 100%)}
.cam-x174{width: 100%; background: #F9F9F9; padding: 100px var(--gut) 90px}
.cam-x175{background: #FFFFFF; border: 1px solid #E4E8F0; border-radius: 16px; padding: 28px 24px; display: flex; flex-direction: column; gap: 14px; transition: transform .18s, box-shadow .18s}
.cam-x176{font-family: 'Space Grotesk', sans-serif; font-size: 18px; font-weight: 700; color: #092634}
.cam-x177{font-size: 15.5px; line-height: 1.6; color: #3D4A61; flex-grow: 1}
.cam-x178{width: 100%; background: #FFFFFF; padding: 90px var(--gut)}
.cam-x179{max-width: 1000px; margin: 0 auto; display: flex; flex-direction: column; align-items: center; gap: 28px; text-align: center}
.cam-x180{margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 30px; font-weight: 700; color: #092634}
.cam-x181{margin: 0; max-width: 560px; font-size: 16.5px; line-height: 1.7; color: #3D4A61}
.cam-x182{display: flex; align-items: center; justify-content: center; gap: 12px; flex-wrap: wrap}
.cam-x183{padding: 10px 20px; border-radius: 999px; background: #F9F9F9; border: 1px solid #E4E8F0; font-size: 14.5px; font-weight: 600; color: #092634; transition: background .15s}
.cam-x184{width: 100%; background: #FFFFFF; padding: 56px var(--gut) 72px; border-top: 1px solid #E4E8F0}
.cam-x185{font-family: 'Space Grotesk', sans-serif; font-size: 15px; font-weight: 700; color: #33415A; letter-spacing: 0.04em}
.cam-x186{font-family: 'Space Grotesk', sans-serif; font-size: 18px; font-weight: 700; color: #33415A; letter-spacing: 0.02em}
.cam-x187{width: 100%; background: #F9F9F9; padding: 100px var(--gut); border-top: 1px solid #E4E8F0}
.cam-x188{margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 34px; line-height: 1.2; font-weight: 700; color: #092634}
.cam-x189{display: inline-flex; align-items: center; gap: 10px; background: #E0742A; color: #FFFFFF; padding: 6px 26px 6px 6px; border-radius: 999px; font-size: 14.5px; font-weight: 700}
.cam-x190{font-size: 16px; font-weight: 700; color: #FFFFFF}
.cam-x191{font-size: 13.5px; color: #A9B8D6; margin-top: 4px}
.cam-x192{font-size: 13.5px; color: #A9B8D6}
.cam-x193{font-size: 15.5px; color: #FFFFFF; transition: color .15s}
.cam-x194{position: relative; width: 100%; background: #092634; overflow: hidden; padding: 96px var(--gut) 120px}
.cam-x195{position: relative; max-width: 760px; margin: 0 auto; display: flex; flex-direction: column; align-items: center; text-align: center}
.cam-x196{position: absolute; top: -30px; left: 50%; transform: translateX(-50%); font-family: 'Space Grotesk', sans-serif; font-size: 92px; font-weight: 700; color: rgba(255,255,255,0.05); white-space: nowrap; letter-spacing: 0.04em; user-select: none}
.cam-x197{width: 100%; background: #F9F9F9; padding: 30px var(--gut) 70px}
.cam-x198{max-width: 1100px; margin: 0 auto; display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 24px}
.cam-x199{display: flex; align-items: center; gap: 14px; background: #FFFFFF; border: 1px solid #E4E8F0; border-radius: 14px; padding: 20px 22px}
.cam-x200{width: 44px; height: 44px; border-radius: 12px; background: #E0742A; display: flex; align-items: center; justify-content: center; flex-shrink: 0}
.cam-x201{font-family: 'Space Grotesk', sans-serif; font-size: 20px; font-weight: 700; color: #092634}
.cam-x202{font-size: 13.5px; color: #3D4A61}
.cam-x203{width: 44px; height: 44px; border-radius: 12px; background: #2AB4F2; display: flex; align-items: center; justify-content: center; flex-shrink: 0}
.cam-x204{width: 100%; padding: 20px var(--gut) 100px}
.cam-x205{max-width: 1160px; margin: 0 auto; display: flex; flex-direction: column; gap: 40px}
.cam-x206{margin: 0; text-align: center; font-family: 'Space Grotesk', sans-serif; font-size: 30px; font-weight: 700; color: #092634}
.cam-x207{display: flex; flex-direction: column; background: #FFFFFF; border: 1px solid #E4E8F0; border-radius: 18px; overflow: hidden; transition: transform .18s, box-shadow .18s}
.cam-x208{position: relative; width: 100%; aspect-ratio: 16/10; overflow: hidden}
.cam-x209{position: absolute; inset: 0; background: linear-gradient(0deg, rgba(9,38,52,0.6) 0%, rgba(9,38,52,0.05) 60%)}
.cam-x210{position: absolute; left: 14px; bottom: -20px; width: 44px; height: 44px; border-radius: 12px; background: #E0742A; display: flex; align-items: center; justify-content: center; box-shadow: 0 6px 16px rgba(9,38,52,0.28)}
.cam-x211{padding: 30px 18px 22px; display: flex; flex-direction: column; gap: 8px; flex-grow: 1}
.cam-x212{margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 17px; font-weight: 700; color: #092634}
.cam-x213{margin: 0; font-size: 13.5px; line-height: 1.6; color: #3D4A61; flex-grow: 1}
.cam-x214{display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px}
.cam-x215{padding: 5px 10px; border-radius: 999px; background: #F9F9F9; border: 1px solid #E4E8F0; font-size: 11.5px; font-weight: 600; color: #092634}
.cam-x216{position: absolute; inset: 0; background: linear-gradient(0deg, rgba(224,116,42,0.6) 0%, rgba(224,116,42,0.05) 60%)}
.cam-x217{position: absolute; left: 14px; bottom: -20px; width: 44px; height: 44px; border-radius: 12px; background: #2AB4F2; display: flex; align-items: center; justify-content: center; box-shadow: 0 6px 16px rgba(9,38,52,0.28)}
.cam-x218{position: absolute; inset: 0; background: linear-gradient(0deg, rgba(42,180,242,0.55) 0%, rgba(9,38,52,0.05) 60%)}
.cam-x219{position: absolute; inset: 0; background: linear-gradient(0deg, rgba(9,38,52,0.6) 0%, rgba(9,38,52,0.05) 55%)}
.cam-x220{position: absolute; inset: 0; background: linear-gradient(0deg, rgba(224,116,42,0.55) 0%, rgba(9,38,52,0.05) 60%)}
.cam-x221{position: relative; width: 100%; aspect-ratio: 16/10; overflow: hidden; background: linear-gradient(155deg, #092634 0%, #0B3B54 100%)}
.cam-x222{position: absolute; top: -10px; right: -10px; font-family: 'Space Grotesk', sans-serif; font-size: 78px; font-weight: 700; color: rgba(255,255,255,0.05); user-select: none}
.cam-x223{position: absolute; bottom: -14px; left: -6px; font-family: 'Space Grotesk', sans-serif; font-size: 72px; font-weight: 700; color: rgba(255,255,255,0.05); user-select: none}
.cam-x224{width: 100%; background: #092634; padding: 24px var(--gut) 100px}
.cam-x225{max-width: 1100px; margin: 0 auto; display: flex; flex-direction: column; gap: 44px}
.cam-x226{margin: 0; text-align: center; font-family: 'Space Grotesk', sans-serif; font-size: 30px; font-weight: 700; color: #FFFFFF}
.cam-x227{display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 24px}
.cam-x228{display: flex; flex-direction: column; gap: 12px; text-align: center; align-items: center}
.cam-x229{font-family: 'Space Grotesk', sans-serif; font-size: 17px; font-weight: 700; color: #FFFFFF}
.cam-x230{font-size: 14px; line-height: 1.6; color: #C7D2E6}
.cam-x231{margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 28px; line-height: 1.25; font-weight: 700; color: #FFFFFF; max-width: 380px}
.cam-x232{margin: 0; max-width: 320px; font-size: 15.5px; line-height: 1.7; color: #C7D2E6}
.cam-x233{position: relative; width: 100%; background: #092634; overflow: hidden; padding: 70px var(--gut) 110px}
.cam-x234{position: absolute; top: -22px; left: 50%; transform: translateX(-50%); font-family: 'Space Grotesk', sans-serif; font-size: 86px; font-weight: 700; color: rgba(255,255,255,0.05); white-space: nowrap; letter-spacing: 0.04em; user-select: none}
.cam-x235{position: relative; display: flex; align-items: center; gap: 8px; font-size: 13.5px; color: #A9B8D6}
.cam-x236{color: #A9B8D6}
.cam-x237{color: #FFFFFF; font-weight: 600}
.cam-x238{position: relative; width: 52px; height: 52px; border-radius: 14px; background: #E0742A; display: flex; align-items: center; justify-content: center; margin-top: 20px}
.cam-x239{position: relative; margin: 18px 0 0; font-family: 'Space Grotesk', sans-serif; font-size: 44px; line-height: 1.15; font-weight: 700; color: #FFFFFF}
.cam-x240{position: relative; display: flex; align-items: center; gap: 14px; margin-top: 28px; flex-wrap: wrap; justify-content: center}
.cam-x241{display: inline-flex; align-items: center; gap: 8px; background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.24); color: #FFFFFF; padding: 11px 22px; border-radius: 999px; font-size: 15.5px; font-weight: 700}
.cam-x242{font-family: 'Space Grotesk', sans-serif; font-size: 16px; font-weight: 700; color: #092634}
.cam-x243{width: 100%; background: #FFFFFF; padding: 20px var(--gut) 90px; border-top: 1px solid #E4E8F0}
.cam-x244{max-width: 640px; display: flex; flex-direction: column; gap: 14px}
.cam-x245{margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 32px; line-height: 1.2; font-weight: 700; color: #092634}
.cam-x246{display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px}
.cam-x247{display: flex; align-items: flex-start; gap: 14px; background: #F9F9F9; border: 1px solid #E4E8F0; border-radius: 14px; padding: 20px}
.cam-x248{flex-shrink: 0; margin-top: 2px}
.cam-x249{font-family: 'Space Grotesk', sans-serif; font-size: 15.5px; font-weight: 700; color: #092634}
.cam-x250{font-size: 13.5px; line-height: 1.55; color: #3D4A61; margin-top: 4px}
.cam-x251{width: 100%; background: radial-gradient(circle at 88% 0%, rgba(42,180,242,0.3) 0%, rgba(42,180,242,0) 50%), linear-gradient(165deg, #050C13 0%, #092634 60%, #0B3B54 100%); padding: 130px var(--gut) 100px}
.cam-x252{max-width: 1160px; margin: 0 auto; display: flex; flex-direction: column; gap: 44px}
.cam-x253{font-size: 14.5px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: #2AB4F2}
.cam-x254{margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 32px; font-weight: 700; color: #FFFFFF}
.cam-x255{display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px}
.cam-x256{background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.14); border-radius: 18px; padding: 30px 26px; display: flex; flex-direction: column; gap: 14px; transition: transform .18s, box-shadow .18s}
.cam-x257{width: 44px; height: 44px; border-radius: 12px; background: #E0742A; display: flex; align-items: center; justify-content: center}
.cam-x258{font-size: 14.5px; line-height: 1.65; color: #C7D2E6; flex-grow: 1}
.cam-x259{background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.2); border-radius: 18px; padding: 30px 26px; display: flex; flex-direction: column; gap: 14px; transition: transform .18s, box-shadow .18s}
.cam-x260{width: 44px; height: 44px; border-radius: 12px; background: #2AB4F2; display: flex; align-items: center; justify-content: center}
.cam-x261{width: 100%; background: #FFFFFF; padding: 90px var(--gut) 100px}
.cam-x262{background: #F9F9F9; border: 1px solid #E4E8F0; border-radius: 18px; padding: 28px 24px; display: flex; flex-direction: column; gap: 18px}
.cam-x263{margin: 0; font-size: 15px; line-height: 1.65; color: #3D4A61; flex-grow: 1}
.cam-x264{font-family: 'Space Grotesk', sans-serif; font-size: 15px; font-weight: 700; color: #092634}
.cam-x265{font-size: 13px; color: #64748F}
.cam-x266{width: 100%; background: #F9F9F9; padding: 56px var(--gut); border-top: 1px solid #E4E8F0}
.cam-x267{max-width: 1100px; margin: 0 auto; display: flex; flex-direction: column; align-items: center; gap: 24px}
.cam-x268{font-size: 13.5px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: #64748F}
.cam-x269{display: flex; align-items: center; justify-content: center; gap: 40px; flex-wrap: wrap}
.cam-x270{font-family: 'Space Grotesk', sans-serif; font-size: 18px; font-weight: 700; color: #33415A}
.cam-x271{font-family: 'Space Grotesk', sans-serif; font-size: 14px; font-weight: 700; letter-spacing: 0.04em; color: #33415A}
.cam-x272{font-family: 'Space Grotesk', sans-serif; font-size: 16px; font-weight: 700; color: #33415A}
.cam-x273{width: 100%; background: #FFFFFF; padding: 100px var(--gut); border-top: 1px solid #E4E8F0}
.cam-x274{margin: 0; max-width: 480px; font-size: 16px; color: #3D4A61}

/* ==================== 05-responsive.css ==================== */
/* GENERATED by responsive.py from 00-mockup.css + dom-facts.json. Do not edit.
   The mockups carry no media queries at all; this is the whole responsive layer. */

:root{ --gut: 32px; }
@media (max-width: 1303px){ :root{ --gut: 24px; } }
@media (max-width: 1022px){ :root{ --gut: 16px; } }

@media (max-width: 1023px){
  .cam-x086,.cam-x157,.cam-x198,.cam-x227,.cam-x246,.cam-x255{ grid-template-columns: repeat(2, minmax(0,1fr)); }
  .cam-x036{ grid-template-columns: repeat(2, minmax(0,1fr)); grid-auto-rows: 230px; }
  .cam-x037,.cam-x045,.cam-x052{ grid-column: auto; }
}
@media (max-width: 767px){
  .cam-x198,.cam-x227,.cam-x246,.cam-x255{ grid-template-columns: repeat(1, minmax(0,1fr)); }
  .cam-x086,.cam-x157{ grid-template-columns: repeat(2, minmax(0,1fr)); }
  .cam-x036{ grid-template-columns: minmax(0,1fr); grid-auto-rows: 240px; }
}

@media (max-width: 1023px){
}

/* Headline type: clamp() rather than a breakpoint step. */
.cam-x165{ font-size: clamp(78px, 9.03vw, 130px); }
.cam-x016,.cam-x141,.cam-x196{ font-size: clamp(55px, 6.39vw, 92px); }
.cam-x234{ font-size: clamp(52px, 5.97vw, 86px); }
.cam-x222{ font-size: clamp(47px, 5.42vw, 78px); }
.cam-x223{ font-size: clamp(43px, 5.0vw, 72px); }
.cam-x017{ font-size: clamp(34px, 3.89vw, 56px); }
.cam-x143{ font-size: clamp(28px, 3.19vw, 46px); }
.cam-x239{ font-size: clamp(26px, 3.06vw, 44px); }
.cam-x159{ font-size: clamp(24px, 2.78vw, 40px); }
.cam-x117{ font-size: clamp(22px, 2.57vw, 37px); }
.cam-x029,.cam-x084,.cam-x149{ font-size: clamp(22px, 2.43vw, 35px); }
.cam-x188{ font-size: clamp(22px, 2.36vw, 34px); }

img, svg, video { max-width: 100%; }
img { height: auto; }

/* Elementor's `.elementor img{height:auto}` is (0,1,1) and outranks every single-class
   rule. Restated at (0,2,1) so the photographs fill the boxes they were drawn to fill. */
.elementor img.cam-x010, .cam-page img.cam-x010{ height: 44px; width: auto; max-width: none; }
.elementor img.cam-x038, .cam-page img.cam-x038{ position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 20%; max-width: none; }
.elementor img.cam-x046, .cam-page img.cam-x046{ position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; max-width: none; }
.elementor img.cam-x059, .cam-page img.cam-x059{ position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 70%; max-width: none; }
.elementor img.cam-x127, .cam-page img.cam-x127{ height: 56px; width: auto; max-width: none; }


/* ==================== 06-grounds.css ==================== */
/* GENERATED by grounds.py from grounds.json. Do not edit. */
.cam-x014 > .cam-ground, .cam-sec.cam-x014 .elementor-widget.cam-ground > img { object-position: center 32%; }
.cam-x014 .cam-scrim { background: linear-gradient(180deg, rgba(9,38,52,0.62) 0%, rgba(9,38,52,0.84) 55%, rgba(9,38,52,0.95) 100%); }
.cam-x080 > .cam-ground, .cam-sec.cam-x080 .elementor-widget.cam-ground > img { object-position: center; }
.cam-x080 .cam-scrim { background: linear-gradient(180deg, rgba(9,38,52,0.93), rgba(9,38,52,0.97)); }
.cam-x140 > .cam-ground, .cam-sec.cam-x140 .elementor-widget.cam-ground > img { object-position: center; }
.cam-x140 .cam-scrim { background: linear-gradient(180deg, rgba(9,38,52,0.72) 0%, rgba(9,38,52,0.88) 55%, rgba(9,38,52,0.96) 100%); }
.cam-x194 > .cam-ground, .cam-sec.cam-x194 .elementor-widget.cam-ground > img { object-position: center; }
.cam-x194 .cam-scrim { background: linear-gradient(180deg, rgba(9,38,52,0.82) 0%, rgba(9,38,52,0.9) 55%, rgba(9,38,52,0.97) 100%); }
.cam-x233 > .cam-ground, .cam-sec.cam-x233 .elementor-widget.cam-ground > img { object-position: center; }
.cam-x233 .cam-scrim { background: linear-gradient(180deg, rgba(9,38,52,0.8) 0%, rgba(9,38,52,0.9) 55%, rgba(9,38,52,0.97) 100%); }

/* ==================== 10-bridge.css ==================== */
/* ============================================================================
   10-bridge.css — mockup <-> WordPress + Elementor reconciliation, and the
   measured colour corrections.

   Measured (not eyeballed) against the mockup's own palette:
     white text on the brand orange #E0742A     3.13:1  fails 4.5 for 14-16px text
     orange eyebrow text on #F9F9F9             3.1:1   fails
     footer small text #5C6A85 on navy #092634  2.88:1  fails
     ghost-button border #D8DEE6 on white       1.35:1  fails 3:1 for a UI boundary
   So the brand orange stays wherever it is a graphic (icon tiles with a white glyph
   measure 3.13, which passes the 3:1 graphical bar; chevrons, dots, scrims, the
   italic 37px heading tail) and an ink variant carries any small text:
     --cam-orange-ink #B5591A  4.52 on #F9F9F9, 4.76 on white
     footer small text #7C8AA4 4.50 on navy
     border #8396B0            3.02 on white
   ========================================================================== */
:root {
  --cam-navy: #092634; --cam-orange: #E0742A; --cam-orange-ink: #B5591A;
  --cam-sky: #2AB4F2; --cam-sky-ink: #0B7EB2; --cam-deep: #004E72;
  --cam-ink: #0F172A; --cam-body: #3D4A61; --cam-muted: #64748F;
  --cam-light: #F9F9F9; --cam-line: #E4E8F0;
}

/* -- 1. the mockup's global resets vs WordPress prose ------------------------ */
.elementor-widget-text-editor p, .cam-prose p { margin: 0 0 1.15em; }
.elementor-widget-text-editor p:last-child, .cam-prose p:last-child { margin-bottom: 0; }
.elementor-widget-text-editor ul, .elementor-widget-text-editor ol, .cam-prose ul, .cam-prose ol { margin: 0 0 1.15em; padding-left: 1.25em; }
.elementor-widget-text-editor li, .cam-prose li { margin: 0 0 .45em; }
.elementor-widget-heading h1, .elementor-widget-heading h2, .elementor-widget-heading h3, .elementor-widget-heading h4 { margin: 0; }

/* -- 2. WordPress body classes: whatever else happens, the body scrolls ------- */
body { overflow: visible !important; width: auto !important; background: #F9F9F9; }
body.cam-page { font-family: 'Work Sans', sans-serif; color: #0F172A; }

/* -- 3. the page wrapper ----------------------------------------------------- */
.cam-page.cam-x001 { min-height: 100vh; display: flex; flex-direction: column; }
#main { flex: 1 0 auto; }
.admin-bar .cam-page.cam-x001 { min-height: calc(100vh - 32px); }

/* -- 4. Elementor's containers ------------------------------------------------ */
.cam-el-band > .elementor-container, .cam-el-band > .e-con-inner { max-width: none; width: 100%; }
.cam-el-band.elementor-section { padding: 0; }
.cam-el-band > .elementor-container > .elementor-column { padding: 0; }
.elementor-widget:not(:last-child) { margin-bottom: 0; }

/* -- 5. images inside Elementor widgets --------------------------------------- */
.elementor-widget-image { line-height: 0; }
.elementor-widget-image img { display: block; width: 100%; height: auto; }

/* -- 6. theme and editor button markup ---------------------------------------- */
.cam-page .wp-block-button__link, .cam-page .wp-element-button { all: unset; }

/* -- 7. link colour ------------------------------------------------------------
   The mockups set no link colour at all (every link is inline-styled). Prose links
   take the orange ink; links on dark bands are white. */
.cam-page a { color: inherit; }
.cam-prose a:not(.cam-btn), .elementor-widget-text-editor a:not(.cam-btn), .cam-faq-a a, .cam-post-body a { color: var(--cam-orange-ink); text-decoration: underline; text-underline-offset: 2px; }
.cam-prose a:not(.cam-btn):hover, .elementor-widget-text-editor a:not(.cam-btn):hover { color: var(--cam-navy); }
a.cam-plain { text-decoration: none; color: inherit; }

/* -- 8. measured colour corrections ------------------------------------------ */
.cam-x002 { background: var(--cam-orange-ink); }                 /* top bar, white 14.5px text */
.cam-x020, .cam-x032, .cam-x066, .cam-x120, .cam-x189 { background: var(--cam-orange-ink); } /* orange pills, white text */
.cam-x148 { color: var(--cam-orange-ink); }                      /* eyebrows on light grounds */
.cam-x136, .cam-x137, .cam-x138 { color: #7C8AA4; }              /* footer small text on navy */
.cam-x034 { border-color: #8396B0; }                             /* ghost pill boundary */
.cam-x077 { color: var(--cam-body); }
.cam-x083, .cam-x253 { color: var(--cam-sky); }                  /* sky eyebrows on navy: 6.66 */
.cam-x118 { color: var(--cam-orange); }                          /* 37px italic: large text, 3.13 passes 3:1 */

/* -- 9. focus ------------------------------------------------------------------ */
.cam-page a:focus-visible, .cam-page button:focus-visible, .cam-page input:focus-visible,
.cam-page select:focus-visible, .cam-page textarea:focus-visible, .cam-page summary:focus-visible {
  outline: 3px solid var(--cam-sky); outline-offset: 2px; border-radius: 4px;
}

/* -- 10. print ------------------------------------------------------------------ */
@media print {
  .cam-topbar, .cam-nav, .cam-nav-toggle, .cam-foot, .cam-chevron { display: none; }
  .cam-page { min-height: 0; }
}

/* ==================== 20-nav.css ==================== */
/* ============================================================================
   20-nav.css — header, navigation, dropdown and the mobile drawer.
   The mockups draw the nav as a flat row with a chevron on "Services" and no
   mobile state; everything below is what a real site needs and a mockup does not.
   ========================================================================== */
.cam-skip { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
.cam-skip:focus { position: fixed; top: 8px; left: 8px; z-index: 1000; width: auto; height: auto; margin: 0; padding: 12px 20px; clip: auto; clip-path: none; background: var(--cam-orange-ink); color: #fff; border-radius: 999px; font-weight: 700; }

/* top bar: phone, address and hours on the left (NAP), social on the right */
.cam-topbar .cam-nap-bar { display: flex; align-items: center; gap: 22px; row-gap: 4px; flex-wrap: wrap; min-width: 0; }
.cam-topbar .cam-nap-bar .cam-x004 { font-weight: 500; white-space: nowrap; }
.cam-topbar .cam-nap-bar .cam-x004:first-child { font-weight: 600; }
.cam-topbar .cam-nap-bar .cam-x004 svg { flex-shrink: 0; }
.cam-topbar .cam-nap-bar a.cam-x004:hover { text-decoration: underline; }
@media (max-width: 1100px) { .cam-topbar .cam-nap-hours { display: none; } }
@media (max-width: 767px)  { .cam-topbar .cam-nap-addr  { display: none; } }
.cam-topbar a { color: #fff; }
.cam-topbar .cam-x004:hover { text-decoration: underline; }
.cam-topbar .cam-x006 svg { display: block; }
.cam-topbar .cam-x006:hover { background: rgba(255,255,255,.4); }

/* nav bar */
.cam-nav { position: relative; z-index: 60; }
.cam-nav .cam-x008 { position: relative; }
.cam-logo { flex-shrink: 0; }
.cam-logo img { height: 44px; width: auto; display: block; }
.cam-logo-txt { font-family: 'Space Grotesk', sans-serif; font-weight: 700; font-size: 24px; color: #fff; }
.cam-menu-list { display: flex; align-items: center; gap: 34px; margin: 0; padding: 0; list-style: none; }
.cam-menu-list li { position: relative; margin: 0; display: flex; align-items: center; gap: 5px; }
.cam-menu-list a { white-space: nowrap; }
.cam-menu-list > li > a { color: #B9C3D9; font-size: 16px; font-weight: 500; transition: color .15s; }
.cam-menu-list > li > a:hover, .cam-menu-list > li.current-menu-item > a, .cam-menu-list > li.current-menu-parent > a, .cam-menu-list > li.current-page-ancestor > a { color: #fff; font-weight: 600; }

/* dropdown: the real Services item has seven children. Links stay in the DOM. */
.cam-menu-list .sub-menu { position: absolute; top: calc(100% + 14px); left: -16px; z-index: 70; display: block; min-width: 260px; margin: 0; padding: 10px 0; list-style: none; background: #fff; border: 1px solid var(--cam-line); border-top: 3px solid var(--cam-orange); border-radius: 0 0 12px 12px; box-shadow: 0 18px 40px rgba(15,23,42,.14); opacity: 0; visibility: hidden; transform: translateY(6px); transition: opacity .14s ease, transform .14s ease, visibility .14s; }
.cam-menu-list .sub-menu::before { content: ""; position: absolute; left: 0; right: 0; top: -17px; height: 17px; }
.cam-menu-list li:hover > .sub-menu, .cam-menu-list li:focus-within > .sub-menu, .cam-menu-list li.is-open > .sub-menu { opacity: 1; visibility: visible; transform: none; }
.cam-menu-list .sub-menu li { display: block; }
.cam-menu-list .sub-menu a { display: block; padding: 9px 20px; white-space: normal; font-size: 15px; font-weight: 500; color: var(--cam-navy); }
.cam-menu-list .sub-menu a:hover, .cam-menu-list .sub-menu a:focus-visible, .cam-menu-list .sub-menu .current-menu-item > a { background: var(--cam-light); color: var(--cam-orange-ink); }
.cam-menu-list .sub-toggle { display: inline-flex; align-items: center; background: none; border: 0; cursor: pointer; padding: 6px 4px; color: #7E8CA6; }
.cam-menu-list .sub-toggle svg { display: block; transition: transform .15s; }
.cam-menu-list li.is-open > .sub-toggle svg { transform: rotate(180deg); }

/* the toggle and the drawer */
.cam-nav-toggle { display: none; flex-direction: column; justify-content: center; gap: 5px; width: 46px; height: 42px; padding: 0 10px; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.18); border-radius: 10px; cursor: pointer; }
.cam-nav-toggle span { display: block; height: 2px; background: #fff; border-radius: 2px; transition: transform .18s ease, opacity .18s ease; }
.cam-nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.cam-nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.cam-nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Five items plus the logo stop fitting a little under 860px. */
@media (max-width: 860px) {
  .cam-nav-toggle { display: flex; }
  .cam-menu { position: absolute; top: 100%; left: 0; right: 0; z-index: 65; flex-direction: column; align-items: stretch; gap: 0; padding: 8px var(--gut) 20px; background: var(--cam-navy); border-top: 1px solid rgba(255,255,255,.1); box-shadow: 0 20px 40px rgba(15,23,42,.3); display: none; }
  .cam-nav.is-open .cam-menu { display: flex; }
  .cam-menu-list { flex-direction: column; align-items: stretch; gap: 0; width: 100%; }
  .cam-menu-list li { border-bottom: 1px solid rgba(255,255,255,.08); flex-wrap: wrap; }
  .cam-menu-list > li > a { display: block; padding: 14px 0; flex: 1 1 auto; }
  .cam-menu-list .sub-menu { position: static; opacity: 1; visibility: visible; transform: none; min-width: 0; width: 100%; margin: 0 0 10px; padding: 0 0 0 14px; border: 0; border-left: 3px solid var(--cam-orange); border-radius: 0; box-shadow: none; background: transparent; display: none; }
  .cam-menu-list li.is-open > .sub-menu { display: block; }
  .cam-menu-list .sub-menu a { color: #B9C3D9; padding: 10px 0; }
  .cam-menu-list .sub-menu a:hover { background: none; color: #fff; }
  .cam-menu-list .sub-toggle { padding: 12px 10px; color: #B9C3D9; }
}
@media (hover: none) {
  .cam-menu-list li:hover > .sub-menu { opacity: 0; visibility: hidden; }
  .cam-menu-list li.is-open > .sub-menu { opacity: 1; visibility: visible; }
}
html:not(.cam-js) .cam-nav-toggle { display: none; }
@media (max-width: 860px) { html:not(.cam-js) .cam-menu { position: static; display: flex; box-shadow: none; } }
@media (max-width: 560px) { .cam-topbar .cam-x004 { font-size: 13px; } }

/* ==================== 30-form.css ==================== */
/* ============================================================================
   30-form.css — the contact form, in the mockup's card language.
   Field boundaries use #8396B0 (3.02:1 on white) rather than the mockup's
   #E4E8F0 rule colour, which measures 1.2:1 and fails WCAG 1.4.11.
   ========================================================================== */
.formcard { background: #fff; border: 1px solid var(--cam-line); border-radius: 18px; padding: 36px; box-shadow: 0 18px 40px rgba(15,23,42,.06); }
.formcard > h2 { font-family: 'Space Grotesk', sans-serif; font-size: 26px; font-weight: 700; color: var(--cam-navy); margin: 0 0 6px; }
.formcard .sub { font-size: 15px; color: var(--cam-body); line-height: 1.6; margin: 0 0 22px; }
.form-req { font-size: 13px; color: var(--cam-body); margin: 0 0 14px; }
.cam-form { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 18px 20px; }
.cam-form .frow { display: contents; }
.cam-form .field { display: flex; flex-direction: column; gap: 6px; margin: 0; }
.cam-form .field-full, .cam-form .form-consent, .cam-form .form-privacy, .cam-form .form-notice, .cam-form .form-req, .cam-form > button, .cam-form .hint-foot { grid-column: 1 / -1; }
.cam-form label { font-size: 13.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--cam-body); }
.cam-form input[type="text"], .cam-form input[type="tel"], .cam-form input[type="email"], .cam-form select, .cam-form textarea {
  width: 100%; box-sizing: border-box; border: 1px solid #8396B0; background: #fff; border-radius: 10px; padding: 13px 15px; font-size: 16px; font-family: inherit; color: var(--cam-ink);
}
.cam-form textarea { min-height: 140px; resize: vertical; }
.cam-form select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, #3D4A61 50%), linear-gradient(135deg, #3D4A61 50%, transparent 50%); background-position: calc(100% - 20px) calc(50% + 2px), calc(100% - 14px) calc(50% + 2px); background-size: 6px 6px, 6px 6px; background-repeat: no-repeat; padding-right: 42px; }
.cam-form ::placeholder { color: #5D6B78; opacity: 1; }
.cam-form input:focus, .cam-form select:focus, .cam-form textarea:focus { border-color: var(--cam-sky-ink); outline: 2px solid var(--cam-sky-ink); outline-offset: 0; }
.cam-form .hint { font-size: 13px; color: var(--cam-body); line-height: 1.5; }
.cam-form .form-consent { font-size: 14px; color: var(--cam-ink); margin: 2px 0 0; }
.cam-form .form-consent label { display: flex; gap: 10px; align-items: flex-start; font-weight: 400; font-size: 14px; letter-spacing: 0; text-transform: none; color: var(--cam-ink); line-height: 1.5; }
.cam-form .form-consent input { margin-top: 3px; width: 17px; height: 17px; flex-shrink: 0; accent-color: var(--cam-orange-ink); }
.cam-form .form-privacy { font-size: 13px; color: var(--cam-body); margin: 0; }
.cam-form button[type="submit"] { justify-self: start; cursor: pointer; border: 0; font-family: inherit; }
.form-notice { display: flex; flex-direction: column; gap: 4px; border-left: 4px solid #2F7A4F; background: #EEF6F1; padding: 16px 18px; border-radius: 10px; font-size: 15px; color: #123D27; }
.form-notice-err { border-left-color: #B5591A; background: #FBEDEE; color: #6B0A12; }
.form-notice strong { font-weight: 600; }
.hint-foot { font-size: 14px; color: var(--cam-body); margin: 4px 0 0; }
@media (max-width: 767px) { .formcard { padding: 22px 18px; } .cam-form { grid-template-columns: 1fr; } .cam-form .field { grid-column: 1 / -1; } .cam-form button[type="submit"] { justify-self: stretch; justify-content: center; } }

/* ==================== 40-newbands.css ==================== */
/* ============================================================================
   40-newbands.css — the bands the mockups never drew: prose, FAQ, link cards,
   contact, map, blog grid, single posts and the sitemap. Built from the mockups'
   own vocabulary: the 16-18px radius card, the #E4E8F0 rule, Space Grotesk heads.
   ========================================================================== */
.cam-prose { max-width: 780px; margin: 0 auto; display: flex; flex-direction: column; gap: 18px; }
.cam-band-prose > .cam-prose { margin: 0 auto; }
.cam-prose p { font-size: 17px; line-height: 1.75; color: var(--cam-body); margin: 0; }
.cam-prose h3 { font-family: 'Space Grotesk', sans-serif; font-size: 22px; font-weight: 700; color: var(--cam-navy); margin: 14px 0 0; line-height: 1.2; }
.cam-list { margin: 0; padding-left: 1.3em; color: var(--cam-body); font-size: 17px; line-height: 1.7; display: flex; flex-direction: column; gap: 6px; }
.cam-list li::marker { color: var(--cam-orange); }
.cam-nomedia .cam-x146.cam-one { grid-template-columns: minmax(0, 820px); justify-content: center; }

/* FAQ: <details>, every answer in the HTML whether open or shut */
.cam-faq-list { display: flex; flex-direction: column; gap: 12px; max-width: 900px; }
.cam-faq { background: #fff; border: 1px solid var(--cam-line); border-radius: 14px; padding: 0 22px; }
.cam-band-faq.cam-x145 .cam-faq { background: var(--cam-light); }
.cam-faq-q { list-style: none; cursor: pointer; padding: 18px 44px 18px 0; position: relative; }
.cam-faq-q::-webkit-details-marker { display: none; }
.cam-faq-q h3 { font-family: 'Space Grotesk', sans-serif; font-size: 18px; font-weight: 700; line-height: 1.3; color: var(--cam-navy); margin: 0; }
.cam-faq-q:hover h3 { color: var(--cam-orange-ink); }
.cam-faq-q::after { content: ""; position: absolute; right: 2px; top: 50%; width: 28px; height: 28px; margin-top: -14px; border-radius: 50%; background: var(--cam-orange) linear-gradient(#fff,#fff) center/12px 2px no-repeat; }
.cam-faq-q::before { content: ""; position: absolute; right: 2px; top: 50%; width: 28px; height: 28px; margin-top: -14px; border-radius: 50%; background: linear-gradient(#fff,#fff) center/2px 12px no-repeat; z-index: 1; transition: transform .18s; }
.cam-faq[open] .cam-faq-q::before { transform: rotate(90deg); opacity: 0; }
.cam-faq-a { padding: 0 44px 20px 0; }
.cam-faq-a p { font-size: 16px; line-height: 1.7; color: var(--cam-body); margin: 0 0 .8em; }
.cam-faq-a p:last-child { margin-bottom: 0; }

/* crumbs inside the hero */
.cam-crumbs { position: relative; display: flex; align-items: center; gap: 8px; font-size: 13.5px; color: #A9B8D6; flex-wrap: wrap; justify-content: center; }
.cam-crumbs a:hover { color: #fff; }

/* hub link cards (the values card, linked) */
.cam-linkcard { position: relative; }
.cam-linkcard h3 a:hover { color: var(--cam-orange-ink); }

/* contact */
.cam-contact-grid { align-items: start; }
.cam-nap-list { display: flex; flex-direction: column; gap: 12px; margin-top: 8px; }
.cam-nap-list .cam-info { background: var(--cam-light); }
.cam-nap-list .cam-x201 { font-size: 17px; }
.cam-formcol { min-width: 0; }
.cam-map-frame { display: block; width: 100%; border: 0; border-radius: 18px; }

/* blog grid, in the services-grid card language */
.cam-posts { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 24px; }
.cam-post-card { display: flex; flex-direction: column; color: inherit; }
.cam-post-card:hover h3 { color: var(--cam-orange-ink); }
.cam-post-media { background: var(--cam-navy); }
.cam-post-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cam-post-card .cam-x211 { gap: 10px; }
.cam-post-card .cam-x212 { font-size: 18px; line-height: 1.3; }
.cam-post-card .cam-x213 { font-size: 14.5px; }
@media (max-width: 1023px) { .cam-posts { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 767px)  { .cam-posts { grid-template-columns: 1fr; } }

/* single posts: the theme's header styled like a page hero, content in the prose measure */
body.single-post .site-main { padding: 0 0 80px; }
body.single-post .site-main > .page-header { background: var(--cam-navy); padding: 72px var(--gut) 64px; text-align: center; }
body.single-post .site-main > .page-header .entry-title { font-family: 'Space Grotesk', sans-serif; font-size: clamp(30px, 3.2vw, 44px); line-height: 1.15; font-weight: 700; color: #fff; margin: 0 auto; max-width: 860px; }
body.single-post .site-main > .page-header .entry-meta, body.single-post .post-tags, body.single-post .post-navigation { max-width: 780px; margin: 10px auto 0; padding: 0 var(--gut); font-size: 14px; color: #A9B8D6; }
body.single-post .site-main > .page-header .entry-meta a { color: #fff; }
body.single-post .site-main > .page-content, body.single-post .entry-content { padding: 48px var(--gut) 0; }
.cam-post-body { gap: 16px; }
.cam-post-body h2, .cam-post-body h3, .cam-post-body h4 { font-family: 'Space Grotesk', sans-serif; color: var(--cam-navy); line-height: 1.25; margin: 18px 0 0; }
.cam-post-body h2 { font-size: 28px; } .cam-post-body h3 { font-size: 22px; } .cam-post-body h4 { font-size: 18px; }
.cam-post-body ul, .cam-post-body ol { margin: 0; padding-left: 1.3em; color: var(--cam-body); font-size: 17px; line-height: 1.7; }
.cam-post-body img { max-width: 100%; height: auto; border-radius: 14px; }
.cam-post-body figure { margin: 0; }
.cam-post-cta { margin-top: 24px; padding: 24px 26px; background: var(--cam-light); border: 1px solid var(--cam-line); border-radius: 16px; display: flex; flex-direction: column; gap: 8px; }
.cam-post-back { margin-top: 8px; }
body.single-post .post-navigation, body.single-post .post-tags { margin-top: 24px; color: var(--cam-body); }
body.single-post .comments-area { display: none; }

/* sitemap */
.cam-sitemap { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 36px 40px; }
.cam-sitemap h2 { color: var(--cam-navy); margin: 0 0 12px; }
.cam-sitemap ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.cam-sitemap a { color: var(--cam-body); font-size: 15.5px; }
.cam-sitemap a:hover { color: var(--cam-orange-ink); }
@media (max-width: 1023px) { .cam-sitemap { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 767px)  { .cam-sitemap { grid-template-columns: 1fr; } }

/* review context (the owner's explanation, once Tier 3 arrives) */
.cam-review-context { border-top: 1px solid var(--cam-line); padding-top: 12px; font-size: 14.5px; color: var(--cam-body); }


/* ---- footer NAP block ---------------------------------------------------- */
.cam-f-nap { font-style: normal; }
.cam-f-nap .cam-f-name { font-family: 'Space Grotesk', sans-serif; font-size: 18px; }
.cam-f-nap .cam-f-phone { font-size: 17px; }
.cam-f-nap .cam-x131 { display: block; }

/* ---- reviews band: a photo under the navy overlay, rating line, gold stars ---- */
.cam-x103 { position: relative; overflow: hidden; }
.cam-x103 .cam-scrim { background: radial-gradient(circle at 88% 0%, rgba(42,180,242,0.22) 0%, rgba(42,180,242,0) 50%), linear-gradient(180deg, rgba(7,16,25,0.80) 0%, rgba(9,38,52,0.86) 100%); }
.cam-x103 > .cam-ground, .cam-sec.cam-x103 .elementor-widget.cam-ground > img { object-position: center 40%; }
.cam-review-sub, .cam-sec .elementor-widget.cam-review-sub { margin: 0 auto; text-align: center; max-width: 680px; }
.cam-sec .elementor-widget.cam-review-sub > * { margin: 0; }
.cam-review-sub a { color: #2AB4F2; text-decoration: underline; text-underline-offset: 3px; }
.cam-review-sub a:hover { color: #fff; }
.cam-band-reviews-light .cam-review-sub a { color: var(--cam-sky-ink, #0B7EB2); }
.cam-band-reviews-light .cam-review-sub a:hover { color: #092634; }
.cam-band-reviews-google .cam-review .elementor-testimonial-job, .cam-band-reviews-google figure.cam-review figcaption span { color: #B45309; letter-spacing: 0.04em; }

/* ---- peak bands: the chevron is cut out of the band itself, so a gradient or a
   photo runs straight through the seam instead of meeting a flat-coloured polygon ---- */
.cam-peak { position: relative; z-index: 6; margin-top: -90px; clip-path: polygon(0 90px, 50% 0, 100% 90px, 100% 100%, 0 100%); }
.cam-peak.cam-x080 { padding-top: calc(24px + 90px); }
.cam-peak.cam-x251 { padding-top: calc(130px + 90px); }
.cam-peak.cam-x156 { padding-top: calc(64px + 90px); }

/* ---- services grid: a navy ghost panel in an HTML widget. The widget is width:auto in a
   stretched flex column, so the panel's aspect-ratio resolves against an indefinite width
   and the widget collapses to 0 (same quirk as the Image widget). Size the widget instead. ---- */
.cam-sec .cam-col.cam-svc-card > .elementor-widget-wrap > .elementor-widget-html:has(> .cam-panel) { width: 100%; flex: 0 0 auto; aspect-ratio: 16 / 10; position: relative; }
.cam-sec .cam-col.cam-svc-card > .elementor-widget-wrap > .elementor-widget-html > .cam-panel { position: absolute; inset: 0; height: 100%; aspect-ratio: auto; }

/* ---- the "included" band sits right under the hero chevron: no top rule there ---- */
.cam-x243, .cam-sec.cam-x243 { border-top: 0; }

/* ---- photo band captions sit above their scrim widget ---- */
.cam-sec > .elementor-container > .elementor-column.cam-col-x169 > .elementor-widget-wrap > .elementor-widget:not(.elementor-widget-image):not(.elementor-widget-html),
.cam-sec > .elementor-container > .elementor-column.cam-col-x172 > .elementor-widget-wrap > .elementor-widget:not(.elementor-widget-image):not(.elementor-widget-html) { position: relative; z-index: 2; }

/* ---- home hero: the client's own photo (van outside the office), lighter overlay so it reads ---- */
.cam-x014 .cam-scrim { background: linear-gradient(180deg, rgba(9,38,52,0.58) 0%, rgba(9,38,52,0.74) 55%, rgba(9,38,52,0.92) 100%); }
.cam-x014 > .cam-ground, .cam-sec.cam-x014 .elementor-widget.cam-ground > img { object-position: center 58%; }
/* taller hero on desktop so far less of the 3:2 photo is cropped away (it read as zoomed in) */
@media (min-width: 1024px) { .cam-x014, .cam-sec.cam-x014 { padding-top: 150px; padding-bottom: 190px; } }

/* ---- footer text: ".cam-page a { color: inherit }" (0,1,1) beats the bare .cam-x129/.cam-x139 colour
   classes (0,1,0), so the address-block links inherited the page ink and went near-black on navy.
   Explicit, higher-specificity colours for every footer text node. ---- */
.cam-foot .cam-f-nap { color: #C9D3E6; }
.cam-foot .cam-f-nap .cam-f-name, .cam-foot .cam-f-nap a.cam-f-phone { color: #FFFFFF; }
.cam-foot .cam-f-nap a.cam-x131 { color: #C9D3E6; }
.cam-foot .cam-f-nap a:hover, .cam-foot .cam-f-nap a:focus-visible { color: #FFFFFF; text-decoration: underline; }
.cam-foot .cam-f-menu a { color: #C9D3E6; }
.cam-foot .cam-f-menu a:hover, .cam-foot .cam-f-menu .current-menu-item > a { color: #FFFFFF; }
.cam-foot .cam-x136, .cam-foot .cam-x137, .cam-foot .cam-x138, .cam-foot .cam-x137 a { color: #A9B8D6; }
.cam-foot .cam-x138:hover { color: #FFFFFF; }

/* ---- service-areas band: a subtle sky tint so it reads as its own section between two white bands;
   the city pills go white on it ---- */
.cam-x178, .cam-sec.cam-x178 { background: linear-gradient(180deg, #F2F7FB 0%, #EAF2F8 100%); border-top: 1px solid #E1EAF2; border-bottom: 1px solid #E1EAF2; }
.cam-x178 .cam-x183, .cam-sec.cam-x178 .elementor-widget.cam-w-x183 > *, .cam-sec.cam-x178 .cam-x183 { background: #FFFFFF; border-color: #D5E1EC; }
.cam-x178 .cam-x183:hover, .cam-sec.cam-x178 .elementor-widget.cam-w-x183 > *:hover { background: #092634; color: #FFFFFF; border-color: #092634; }

/* ---- FAQ bands: heading and accordion centred on the page (they sat flush left in a 1160px column) ---- */
.cam-sec.cam-band-faq > .elementor-container > .cam-col > .elementor-widget-wrap { align-items: center; }
.cam-sec.cam-band-faq .elementor-widget.cam-w-x245, .cam-sec.cam-band-faq .elementor-widget.cam-w-x150 { margin-left: auto; margin-right: auto; text-align: center; width: 100%; }
.cam-sec.cam-band-faq .elementor-widget.cam-w-x245 > *, .cam-sec.cam-band-faq .elementor-widget.cam-w-x150 > * { text-align: center; }
.cam-sec.cam-band-faq > .elementor-container > .cam-col > .elementor-widget-wrap > .cam-faq-acc { margin-left: auto; margin-right: auto; }
.cam-band-faq > .cam-x244, .cam-band-faq .cam-faq-list { margin-left: auto; margin-right: auto; }
.cam-band-faq > .cam-x244 { text-align: center; }

/* ---- partner strips: no hairline rule above them (the mockup drew one between two white bands) ---- */
.cam-x095, .cam-sec.cam-x095, .cam-x184, .cam-sec.cam-x184, .cam-x266, .cam-sec.cam-x266 { border-top: 0; border-bottom: 0; }

/* ---- services grid: room under the last row of cards before the chevron of the next band ---- */
.cam-x204, .cam-sec.cam-x204 { padding-bottom: 180px; }
@media (max-width: 767px) { .cam-x204, .cam-sec.cam-x204 { padding-bottom: 140px; } }

/* ---- any content band that is followed by a chevron (zero-height band) or a peak band keeps
   180px under its last element, so the next band's point never sits on the cards. Heroes keep
   their own measure. The services grid rule above is the same idea for its own band. ---- */
.cam-sec:not(.cam-band-hero):not(.cam-band-pagehero):has(+ .elementor-section .cam-chevron),
.cam-sec:not(.cam-band-hero):not(.cam-band-pagehero):has(+ .cam-sec.cam-peak) { padding-bottom: 180px; }
@media (max-width: 767px) {
  .cam-sec:not(.cam-band-hero):not(.cam-band-pagehero):has(+ .elementor-section .cam-chevron),
  .cam-sec:not(.cam-band-hero):not(.cam-band-pagehero):has(+ .cam-sec.cam-peak) { padding-bottom: 140px; }
}

/* ---- navy prose band ("What to expect"): tiers-band gradient, peak top, centred copy ---- */
.cam-sec.cam-band-prose-navy > .elementor-container > .cam-col.cam-prose, .cam-band-prose-navy > .cam-prose { max-width: 860px; margin-left: auto; margin-right: auto; text-align: center; }
.cam-sec.cam-band-prose-navy .elementor-widget, .cam-sec.cam-band-prose-navy .elementor-widget > *, .cam-band-prose-navy .cam-prose > * { text-align: center; }
.cam-sec.cam-band-prose-navy .elementor-widget.cam-w-x148 > *, .cam-band-prose-navy .cam-x148 { color: #2AB4F2; }
.cam-sec.cam-band-prose-navy .elementor-widget.cam-w-x149 > *, .cam-band-prose-navy .cam-x149,
.cam-sec.cam-band-prose-navy .elementor-widget-heading > * { color: #FFFFFF; }
.cam-sec.cam-band-prose-navy .elementor-widget.cam-w-x150 > *, .cam-band-prose-navy .cam-x150,
.cam-sec.cam-band-prose-navy .elementor-widget-text-editor, .cam-sec.cam-band-prose-navy .elementor-widget-text-editor p, .cam-sec.cam-band-prose-navy .elementor-widget-text-editor li { color: #C7D2E6; }
.cam-sec.cam-band-prose-navy a:not(.elementor-button) { color: #FFFFFF; text-decoration-color: rgba(255,255,255,0.5); }
.cam-sec.cam-band-prose-navy .elementor-widget.cam-btn > .elementor-button { margin-left: auto; margin-right: auto; }
.cam-sec.cam-band-prose-navy .cam-list { display: inline-block; text-align: left; }

/* ---- "Pick your city" link cards: a drawn street-map ground (cam-assets/map-bg.svg) under a soft sky wash ---- */
.cam-band-linkcards, .cam-sec.cam-band-linkcards { background-color: #F2F7FB; background-image: linear-gradient(180deg, rgba(242,247,251,0.55) 0%, rgba(242,247,251,0.15) 50%, rgba(242,247,251,0.6) 100%), url("map-bg.svg"); background-size: auto, 1600px 900px; background-position: center, center; background-repeat: no-repeat, repeat; }
.cam-band-linkcards .cx-card, .cam-sec.cam-band-linkcards .cam-col.cx-card, .cam-sec.cam-band-linkcards .elementor-column.cam-col-x175 { background: #FFFFFF; box-shadow: 0 8px 24px rgba(9,38,52,0.06); }

/* ---- navy FAQ band (city pages): tiers-band gradient, peak top, accordion drawn for a dark ground ---- */
.cam-sec.cam-band-faq-navy .elementor-widget.cam-w-x245 > *, .cam-band-faq-navy .cam-x245, .cam-sec.cam-band-faq-navy .elementor-widget-heading > * { color: #FFFFFF; }
.cam-sec.cam-band-faq-navy .elementor-widget.cam-w-x150 > *, .cam-band-faq-navy .cam-x150 { color: #C7D2E6; }
.cam-sec.cam-band-faq-navy .cam-faq-acc .elementor-accordion-item, .cam-band-faq-navy .cam-faq { background: rgba(255,255,255,0.06); border-color: rgba(255,255,255,0.16); }
.cam-sec.cam-band-faq-navy .cam-faq-acc .elementor-tab-title, .cam-sec.cam-band-faq-navy .cam-faq-acc .elementor-tab-title h3, .cam-sec.cam-band-faq-navy .cam-faq-acc .elementor-tab-title a, .cam-band-faq-navy .cam-faq-q h3 { color: #FFFFFF; }
.cam-sec.cam-band-faq-navy .cam-faq-acc .elementor-tab-title:hover, .cam-sec.cam-band-faq-navy .cam-faq-acc .elementor-tab-title.elementor-active,
.cam-sec.cam-band-faq-navy .cam-faq-acc .elementor-tab-title:hover h3, .cam-sec.cam-band-faq-navy .cam-faq-acc .elementor-tab-title.elementor-active h3,
.cam-sec.cam-band-faq-navy .cam-faq-acc .elementor-tab-title:hover a, .cam-sec.cam-band-faq-navy .cam-faq-acc .elementor-tab-title.elementor-active a, .cam-band-faq-navy .cam-faq-q:hover h3 { color: #F2A15A; }
.cam-sec.cam-band-faq-navy .cam-faq-acc .elementor-tab-content, .cam-sec.cam-band-faq-navy .cam-faq-acc .elementor-tab-content p, .cam-band-faq-navy .cam-faq-a p { color: #C7D2E6; }
.cam-sec.cam-band-faq-navy .cam-faq-acc .elementor-tab-content a { color: #FFFFFF; }

/* ---- navy FAQ band: equal room above the heading and below the last question (measured from the
   peak base), and the block centred at every width ---- */
.cam-peak.cam-band-faq-navy, .cam-sec.cam-peak.cam-band-faq-navy { padding-top: calc(96px + 90px); padding-bottom: 96px; }
.cam-sec.cam-band-faq-navy > .elementor-container { justify-content: center; }
.cam-sec.cam-band-faq-navy > .elementor-container > .cam-col > .elementor-widget-wrap { align-items: center; justify-content: center; }
.cam-sec.cam-band-faq-navy > .elementor-container > .cam-col > .elementor-widget-wrap > .cam-faq-acc { margin-left: auto; margin-right: auto; width: 100%; max-width: 900px; }

/* ---- map band: rounded frame with an "Open in Maps" pill ---- */
.cam-band-map .cam-x206 { margin-bottom: 10px; }
.cam-map-lead { margin: 0 auto 24px; max-width: 640px; text-align: center; }
.cam-map-wrap { position: relative; width: 100%; max-width: 1100px; margin: 24px auto 0; border-radius: 18px; overflow: hidden; box-shadow: 0 10px 30px rgba(9,38,52,0.10); }
.cam-map-wrap .cam-map-frame { border-radius: 0; height: 420px; }
.cam-map-open { position: absolute; top: 14px; right: 14px; z-index: 2; display: inline-flex; align-items: center; gap: 7px; background: #FFFFFF; color: #092634; font-size: 14px; font-weight: 600; padding: 8px 14px; border-radius: 999px; box-shadow: 0 2px 8px rgba(9,38,52,0.18); text-decoration: none; }
.cam-map-open:hover { background: #092634; color: #FFFFFF; }
.cam-map-open:hover svg { stroke: #FFFFFF; }
@media (max-width: 767px) { .cam-map-wrap .cam-map-frame { height: 300px; } }

/* ==================== 45-fixes.css ==================== */
/* ============================================================================
   45-fixes.css — hand-written helpers the band library relies on: the chevron
   seams, the photo grounds under heroes, the CSS-drawn button icon discs, the
   step arrows, card layouts restructured for native widgets, and the mobile
   rules the generated layer cannot derive.
   ========================================================================== */
.cam-rel { position: relative; }

/* chevron seams: a zero-height band whose polygon overlaps the band above */
.cam-chevron { position: relative; height: 0; z-index: 5; pointer-events: none; }
.cam-chevron svg { position: absolute; left: 0; top: -90px; width: 100%; height: 90px; display: block; }
.elementor-section.cam-whole-x024, .elementor-section.cam-el-band:has(> .elementor-container .cam-chevron) { height: 0; position: relative; z-index: 5; overflow: visible; }

/* photo grounds under heroes and the services band */
.cam-ground, .elementor-widget.cam-ground > img, .cam-sec .elementor-widget.cam-ground > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; max-width: none; z-index: 0; }
.cam-scrim { position: absolute; inset: 0; z-index: 1; pointer-events: none; }
.cam-band-hero > .cam-x015, .cam-pagehero > .cam-x015, .cam-band-services > .cam-x081 { position: relative; z-index: 2; }
.cam-sec > .elementor-container > .cam-col:not(.cam-ground) { z-index: 2; }
.cam-sec .elementor-widget.cam-ground { position: static; }

/* ghost words and overlays never catch the pointer */
.cam-x016, .cam-x141, .cam-x165, .cam-x196, .cam-x234, .cam-x222, .cam-x223 { pointer-events: none; }

/* the icon disc inside a pill button, drawn by CSS so the button can be a text-only
   anchor (and therefore a native Button widget). The Button widget renders the <a>
   as the widget's DIRECT child (no wrapper div, verified in the DOM), and the widget
   div itself also carries cam-btn, so the pseudo-elements are suppressed there. */
.cam-btn { text-decoration: none; cursor: pointer; }
.elementor-widget.cam-btn::before, .elementor-widget.cam-btn::after { content: none !important; }
.cam-btn.cam-ic-arrow::before, .cam-btn.cam-ic-arrow-navy::before, .cam-btn.cam-ic-phone::before, .cam-btn.cam-ic-dot::before,
.elementor-widget.cam-ic-arrow > .elementor-button::before, .elementor-widget.cam-ic-arrow-navy > .elementor-button::before,
.elementor-widget.cam-ic-phone > .elementor-button::before, .elementor-widget.cam-ic-dot > .elementor-button::before {
  content: ""; display: inline-block; width: 30px; height: 30px; border-radius: 50%; flex-shrink: 0;
  background-color: rgba(255,255,255,.28); background-repeat: no-repeat; background-position: center; background-size: 14px 14px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23FFFFFF' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12h14'/><path d='M13 6l6 6-6 6'/></svg>");
}
.cam-btn.cam-ic-arrow-navy::before, .elementor-widget.cam-ic-arrow-navy > .elementor-button::before { background-color: rgba(9,38,52,.08); background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23092634' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12h14'/><path d='M13 6l6 6-6 6'/></svg>"); }
.cam-btn.cam-ic-phone::before, .elementor-widget.cam-ic-phone > .elementor-button::before { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23FFFFFF' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.12.9.33 1.78.63 2.63a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.45-1.2a2 2 0 0 1 2.11-.45c.85.3 1.73.51 2.63.63A2 2 0 0 1 22 16.92z'/></svg>"); }
.cam-x022.cam-ic-phone::before, .elementor-widget.cam-w-x022.cam-ic-phone > .elementor-button::before { background-color: rgba(9,38,52,.10); background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23092634' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.12.9.33 1.78.63 2.63a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.45-1.2a2 2 0 0 1 2.11-.45c.85.3 1.73.51 2.63.63A2 2 0 0 1 22 16.92z'/></svg>"); }
.cam-x032.cam-ic-arrow::before, .cam-x034.cam-ic-arrow-navy::before, .cam-x066.cam-ic-arrow::before,
.elementor-widget.cam-w-x032 > .elementor-button::before, .elementor-widget.cam-w-x034 > .elementor-button::before, .elementor-widget.cam-w-x066 > .elementor-button::before { width: 28px; height: 28px; background-size: 13px 13px; }
.cam-x120.cam-ic-arrow::before, .cam-x189.cam-ic-arrow::before, .elementor-widget.cam-w-x120 > .elementor-button::before, .elementor-widget.cam-w-x189 > .elementor-button::before { width: 34px; height: 34px; background-size: 15px 15px; background-color: rgba(255,255,255,.25); }
.cam-btn.cam-ic-dot::before, .elementor-widget.cam-ic-dot > .elementor-button::before { width: 20px; height: 20px; background-color: var(--cam-orange); background-size: 10px 10px; }
.cam-x045 .cam-btn.cam-ic-dot::before { background-color: rgba(255,255,255,.28); }
.cam-x032.cam-ic-phone::before, .elementor-widget.cam-w-x032.cam-ic-phone > .elementor-button::before { background-size: 13px 13px; }
/* the "Learn More →" text link */
.cam-btn.cam-ic-arrow-text::after, .elementor-widget.cam-ic-arrow-text > .elementor-button::after { content: " \2192"; }
.cam-sec .elementor-widget.cam-btn > .elementor-button { display: inline-flex; align-items: center; gap: 10px; }

/* home solutions grid: cards restructured as flex columns so every leaf is a widget */
.cam-card-flex { padding: 26px; display: flex; flex-direction: column; justify-content: flex-end; gap: 8px; }
.cam-card-flex > .cam-x048, .cam-card-flex > .cam-x049, .cam-card-flex > .cam-btn { position: relative; z-index: 2; }
.cam-card-flex > .cam-x048 { margin: 0; }
.cam-card-flex > .cam-x049 { margin: 0; max-width: 380px; }
.cam-card-flex > .cam-btn { align-self: flex-start; }
.cam-x037.cam-card-flex, .cam-x052.cam-card-flex { padding: 24px; }
.cam-x037 img, .cam-x045 img, .cam-x052 img { z-index: 0; }
.cam-x039, .cam-x047, .cam-x053 { z-index: 1; pointer-events: none; }

/* the icon tiles */
.cam-tile { flex-shrink: 0; }
.cam-tile svg { display: block; }

/* steps: the arrows between the four columns, drawn instead of inline */
.cam-steps { flex-wrap: wrap; row-gap: 32px; }
.cam-step { position: relative; }
.cam-step + .cam-step::before { content: ""; position: absolute; left: -22px; top: 24px; width: 34px; height: 14px; background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 34 14' fill='none'><path d='M1 7h30M25 1l6 6-6 6' stroke='%23D8DEE6' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/></svg>") center/contain no-repeat; }
.cam-x072 { gap: 36px; }
.cam-step h3, .cam-step p { margin: 0; }
@media (max-width: 1023px) { .cam-step + .cam-step::before { display: none; } .cam-x072 { gap: 28px; } }
@media (max-width: 767px) { .cam-x073 { width: calc(50% - 14px); } }
@media (max-width: 479px) { .cam-x073 { width: 100%; } }

/* services band (navy, grounded) */
.cam-x081 { position: relative; }
.cam-x087 p, .cam-x094 p, .cam-x087 h3, .cam-x094 h3, .cam-x175 h3, .cam-x175 p, .cam-x256 h3, .cam-x259 h3, .cam-x256 p, .cam-x259 p, .cam-x228 h3, .cam-x228 p, .cam-x247 h3, .cam-x247 p { margin: 0; }
.cam-x094 { flex: 0 0 282px; }
@media (max-width: 767px) { .cam-x094 { flex: 1 1 100%; width: auto; } }

/* partners strip: wordmarks are spans */
.cam-x098 span, .cam-x269 span { display: inline-block; }
.cam-chip svg { display: inline-block; vertical-align: -2px; }

/* story / split band */
.cam-x146 h2, .cam-x146 p { margin: 0; }
.cam-media { position: relative; }
.cam-media::after, .cam-col-x151::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(9,38,52,0.55) 0%, rgba(9,38,52,0) 45%); pointer-events: none; z-index: 1; border-radius: inherit; }
.cam-chip-dark { z-index: 2; }
.cam-chip-dark svg { flex-shrink: 0; }
.cam-flip .cam-x146 > .cam-x151 { order: -1; }
@media (max-width: 1023px) { .cam-x146 { grid-template-columns: 1fr; gap: 32px; } .cam-flip .cam-x146 > .cam-x151 { order: 0; } .cam-x151 { max-width: 640px; } }

/* photo band captions are spans */
.cam-x169 span, .cam-x172 span { z-index: 2; }
.cam-x170, .cam-x173 { z-index: 1; pointer-events: none; }
@media (max-width: 767px) { .cam-x168 { grid-template-columns: 1fr; } }

/* info strip cards: tile + two lines, laid out as a grid so each line is a widget */
.cam-info { display: grid; grid-template-columns: 44px minmax(0,1fr); column-gap: 14px; row-gap: 0; align-items: center; }
.cam-info > .cam-tile { grid-row: 1 / 3; }
.cam-info > .cam-x201, .cam-info > .cam-x202 { margin: 0; }
.cam-info > a.cam-x201:hover { color: var(--cam-orange-ink); }
@media (max-width: 767px) { .cam-x198 { grid-template-columns: 1fr; } }

/* what's-included tiles: icon + title + text, same trick */
.cam-inc { display: grid; grid-template-columns: 20px minmax(0,1fr); column-gap: 14px; row-gap: 4px; align-items: start; }
.cam-inc > svg { grid-row: 1 / 3; margin-top: 2px; }

/* services grid cards: media box as an image, tile floating onto the body.
   The Image widget carrying the media box is a stretched flex item with width:auto,
   which gave aspect-ratio nothing to resolve against (height 0, measured). */
.cam-sec .cam-col > .elementor-widget-wrap > .cam-w.cam-wrap-x208 { width: 100%; flex: 0 0 auto; aspect-ratio: 16 / 10; height: auto; min-height: 0; }
.cam-sec .elementor-widget.cam-wrap-x208 > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cam-sec .elementor-widget.cam-wrap-x208::after { content: ""; position: absolute; inset: 0; pointer-events: none; }
.cam-svc-card > .cam-x208, .cam-svc-card > .cam-x221 { position: relative; }
.cam-svc-card > .cam-x208 > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cam-svc-card > .cam-x208::after { content: ""; position: absolute; inset: 0; pointer-events: none; }
.cam-ov-navy::after   { background: linear-gradient(0deg, rgba(9,38,52,0.6) 0%, rgba(9,38,52,0.05) 60%); }
.cam-ov-orange::after { background: linear-gradient(0deg, rgba(224,116,42,0.6) 0%, rgba(224,116,42,0.05) 60%); }
.cam-ov-sky::after    { background: linear-gradient(0deg, rgba(42,180,242,0.55) 0%, rgba(9,38,52,0.05) 60%); }
.cam-svc-tile { position: relative; left: auto; bottom: auto; margin: -22px 0 0 14px; z-index: 2; }
.cam-svc-card > h3, .cam-svc-card > p, .cam-svc-card > .cam-x214, .cam-svc-card > .cam-btn { margin-left: 18px; margin-right: 18px; }
.cam-svc-card > h3 { margin-top: 10px; }
.cam-svc-card > p { margin-top: 8px; margin-bottom: 0; }
.cam-svc-card > .cam-x214 { margin-top: 12px; }
.cam-svc-card > .cam-btn { margin-top: auto; padding-top: 14px; padding-bottom: 22px; }
.cam-svc-card h3 a:hover { color: var(--cam-orange-ink); }
.cam-x222, .cam-x223 { line-height: 1; }

/* paragraphs bundled into one Text Editor widget keep their spacing */
.cam-sec .elementor-widget-text-editor p + p { margin-top: 1em; }
.cam-sec .elementor-widget-text-editor ul, .cam-sec .elementor-widget-text-editor ol { margin: 0; padding-left: 1.3em; display: flex; flex-direction: column; gap: 6px; }
.cam-sec .elementor-widget-text-editor li::marker { color: var(--cam-orange); }

/* partner wordmarks are typed in title case and shown in capitals */
.cam-x099, .cam-x100, .cam-x101, .cam-x185, .cam-x186, .cam-x270, .cam-x271, .cam-x272 { text-transform: uppercase; }
.cam-sec .elementor-widget.cam-w-x099 > *, .cam-sec .elementor-widget.cam-w-x100 > *, .cam-sec .elementor-widget.cam-w-x101 > *,
.cam-sec .elementor-widget.cam-w-x185 > *, .cam-sec .elementor-widget.cam-w-x186 > *, .cam-sec .elementor-widget.cam-w-x270 > *,
.cam-sec .elementor-widget.cam-w-x271 > *, .cam-sec .elementor-widget.cam-w-x272 > * { text-transform: uppercase; }

/* why band columns */
.cam-x228 svg { display: block; }

/* hero: ghost word sizes and phone padding */
@media (max-width: 767px) {
  .cam-x014 { padding-top: 64px; padding-bottom: 96px; }
  .cam-x140, .cam-x194, .cam-x233 { padding-top: 56px; padding-bottom: 88px; }
  .cam-x016, .cam-x141, .cam-x196, .cam-x234 { font-size: 48px; top: -14px; }
  .cam-x165 { font-size: 64px; }
  .cam-x019 .cam-btn, .cam-x240 .cam-btn { width: 100%; justify-content: center; }
  .cam-x062 { flex-direction: column; align-items: flex-start; }
  .cam-x063, .cam-x231 { max-width: none; }
}

/* footer grid */
.cam-f-grid { align-items: start; }
.cam-f-menu { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.cam-f-menu a { font-size: 15.5px; color: #A9B8D6; transition: color .15s; }
.cam-f-menu a:hover, .cam-f-menu .current-menu-item > a { color: #fff; }
.cam-x133 { margin: 0; }
.cam-x131 { display: block; }
@media (max-width: 1023px) { .cam-x124 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px)  { .cam-x124 { grid-template-columns: 1fr; } .cam-x135 { flex-direction: column; align-items: flex-start; } }

/* chips row and values cards on phones */
@media (max-width: 767px) { .cam-x183 { font-size: 13.5px; padding: 8px 14px; } }

/* 3 boxes always sit in one row, 4 in one row, on desktop (standing rule) */
@media (min-width: 1024px) {
  .cam-cards:has(> :nth-child(3):last-child) { grid-template-columns: repeat(3, minmax(0,1fr)); }
  .cam-cards:has(> :nth-child(4):last-child) { grid-template-columns: repeat(4, minmax(0,1fr)); }
}

/* ==================== 50-elementor.css ==================== */
/* ============================================================================
   50-elementor.css — the native-widget layer.
   Elementor's frontend stylesheet sits at (0,1,1) and the kit's per-post CSS
   loads after cam.css, so everything here is at least (0,2,0).
   ========================================================================== */
.cam-el-band > .elementor-container, .cam-el-band > .e-con-inner { max-width: none; width: 100%; }
.cam-el-band > .elementor-container > .elementor-column { padding: 0; }
.cam-el-band .elementor-widget-html { line-height: normal; }
.cam-sec .elementor-widget-html { line-height: normal; }

/* headings: the kit supplies family and weight; colour comes from the mapped class,
   so Elementor's default heading colour must not win over inherited band colour */
.cam-sec .elementor-widget-heading .elementor-heading-title { color: inherit; font-family: 'Space Grotesk', sans-serif; }
.cam-sec .elementor-widget-text-editor { font-family: 'Work Sans', sans-serif; color: inherit; }
.cam-sec .elementor-widget-text-editor p { margin: 0; }

/* buttons: the mapped class rule draws the pill; the Elementor wrapper must not add
   a second box, centre it, or paint the kit colours */
.cam-sec .elementor-widget-button.cam-w { text-align: inherit; width: auto; }
.cam-sec .elementor-widget-button.cam-w .elementor-button-wrapper { display: inline-block; }
.cam-sec .elementor-widget-button.cam-w .elementor-button { box-shadow: none; text-decoration: none; }
.cam-sec .elementor-widget-button.cam-w .elementor-button-content-wrapper { display: inline; }
.cam-sec .elementor-widget-button.cam-w .elementor-button-text { display: inline; }
.cam-sec .elementor-widget-button.cam-w .elementor-button:hover { filter: brightness(1.06); }
.cam-sec .elementor-widget-button.cam-w > .elementor-button::before { vertical-align: middle; }

/* Elementor's `.elementor img{height:auto}` and the ground images */
.cam-sec .elementor-widget-image.cam-ground { line-height: 0; }

/* the [VERIFY] notice on a draft page */
.cam-verify-note { background: #FBEDEE; border-top: 4px solid #B5591A; padding: 24px var(--gut); }
.cam-verify-note p { max-width: 900px; margin: 0 auto; font-size: 16px; line-height: 1.6; color: #6B0A12; }

/* widgetized prose bands: the column carries .cam-prose, the widgets sit inside its
   widget-wrap, so the vertical rhythm goes on the wrap and on the h3 widgets */
.cam-sec .cam-col.cam-prose > .elementor-widget-wrap { gap: 18px; }
.cam-sec .cam-col.cam-prose > .elementor-widget-wrap > .elementor-widget-heading.cam-w-x176 { margin-top: 10px; }
.cam-sec .cam-col.cam-prose > .elementor-widget-wrap > .elementor-widget-text-editor ul { margin: 0; }
/* story / split copy columns: same rhythm */
.cam-sec .elementor-column.cam-col-x147 > .elementor-widget-wrap { gap: 20px; }

/* ==================== 60-elementor-map.css ==================== */
/* gen_map.py — re-point every generated mockup class at the Elementor node that
   actually carries its content, and write css/60-elementor-map.css.
   
   The structural widgetizer keeps every wrapper's class, but on an Elementor node:
     band wrapper   -> .elementor-section.C          (the class's own rules already match)
     carried wrapper-> .elementor-section.C > .elementor-container
     grid           -> .elementor-section.cam-grid.C > .elementor-container
     column wrapper -> self-sizing props on .elementor-column.C,
                       child-layout props on .elementor-column.C > .elementor-widget-wrap
     leaf           -> .cam-sec .elementor-widget.C > *   (Elementor 4.3.3 has no
                       .elementor-widget-container; the h2/p/img/a is the direct child)
   
   Generated from the same class table as everything else. Do not hand-edit.
   
   The .cam-sec prefix on widget targets is deliberate: the kit's own button rules are
   `.elementor-kit-4 .elementor-button` at (0,2,0) and load after cam.css, so a (0,2,0)
   selector here would lose the tie. (0,3,0) wins it. */

/* ---- generic structure ---------------------------------------------------- */
/* Elementor forces every widget to width:100%. In the mockup a leaf in a flex column
   is stretch by default and shrinks under align-items:center, so width:auto
   reproduces both. NO max-width:100% here: a percentage max-width on a flex item whose
   parent column is itself sizing to content is a cyclic percentage, which the browser
   resolves as min-content, and the CTA band's heading collapsed to its longest word. */
.cam-sec .cam-col > .elementor-widget-wrap > .cam-w { width: auto; margin-block-end: 0; }
/* Absolutely positioned grounds (hero photo, overlays, ghost word) resolve against
   the SECTION, which carries the band's position:relative. Elementor makes the
   container relative TWICE (`.elementor-container` and `.elementor-section
   .elementor-container`, the second at (0,2,0) and loaded after cam.css), so the
   override has to be (0,3,0) or it loses the tie and every ground is inset by the
   container padding. */
.elementor-section.cam-sec > .elementor-container { position: static; flex-wrap: nowrap; max-width: none; width: 100%; }
.cam-sec .cam-col > .elementor-widget-wrap, .cam-sec .cam-w { position: static; }
.cam-sec > .elementor-container > .cam-col > .elementor-widget-wrap { padding: 0; display: flex; flex-direction: column; align-content: normal; align-items: stretch; }
/* Copy columns are positioned so they paint ABOVE the absolute grounds (a static box
   paints under any positioned sibling regardless of DOM order). */
.cam-sec > .elementor-container > .cam-col:not(.cam-ground) { position: relative; }
/* Sibling columns behave like the mockup's flex siblings: flex:0 1 auto is the
   browser default those children had. A column with a fixed width keeps it, because
   its class rule is (0,2,0). */
.cam-sec > .elementor-container > .cam-col { width: auto; flex: 0 1 auto; min-height: 0; }
/* The ground column and its widget wrappers take no space at all: display:contents
   lifts the grounds to the container, and being absolute they add no gap. */
.cam-sec > .elementor-container > .cam-col.cam-ground,
.cam-sec > .elementor-container > .cam-col.cam-ground > .elementor-widget-wrap,
.cam-sec > .elementor-container > .cam-col.cam-ground .cam-w { display: contents; }
/* A card grid is an inner section whose columns are grid items. */
.cam-sec.cam-grid > .elementor-container > .cam-col { width: auto; flex: none; }
.cam-sec.elementor-inner-section > .elementor-container { max-width: none; }
.cam-sec .elementor-widget-image { text-align: inherit; }
/* A photo whose mockup rule says height:100% measured that against its media box,
   which is now the COLUMN. The Image widget's own div sits between them with auto
   height, so 100% collapsed to the photo's natural aspect (640x268 in a 640x520 box).
   Letting the widget grow to fill the column restores the box; a widget that carries
   its own media-box class (cam-wrap-*) has an explicit height and is left alone. */
.cam-sec .cam-col > .elementor-widget-wrap > .elementor-widget-image.cam-w:not([class*="cam-wrap-"]) { flex: 1 1 auto; min-height: 0; }
.cam-sec .cam-w > .elementor-button { display: inline-flex; line-height: normal; background: none; border: 0; border-radius: 0; padding: 0; color: inherit; font: inherit; letter-spacing: inherit; text-transform: inherit; }
.cam-sec .cam-w > .elementor-button .elementor-button-content-wrapper { display: inline; }
.cam-sec .elementor-widget.cam-w > * { box-sizing: border-box; }
/* 10-bridge gives every Text Editor paragraph a 1.15em bottom margin for prose. In a
   mockup band the paragraphs are spaced by the wrapper's flex gap, so that margin
   inflated every band (the hero eyebrow pushed the H1 down 10px). */
.cam-sec .cam-w > p { margin: 0; }
.cam-sec .cam-w > h1, .cam-sec .cam-w > h2, .cam-sec .cam-w > h3, .cam-sec .cam-w > h4 { line-height: normal; margin: 0; }

/* ---- per-class re-targeting -------------------------------------------- */
.cam-sec > .elementor-container > .elementor-column.cam-col-x015 { position: relative; max-width: 780px; margin: 0 auto; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x015 > .elementor-widget-wrap { display: flex; flex-direction: column; align-items: center; text-align: center; }
.cam-sec .elementor-widget.cam-w-x017 > * { position: relative; margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 56px; line-height: 1.1; font-weight: 700; color: #FFFFFF; }
.cam-sec .elementor-widget.cam-w-x018 > * { position: relative; margin: 18px 0 0; max-width: 600px; font-size: 19.5px; line-height: 1.7; color: #C7D2E6; }
.elementor-section.cam-sec.cam-carry-x019 > .elementor-container, .elementor-section.cam-sec.cam-grid-x019 > .elementor-container { display: flex; align-items: center; gap: 16px; margin-top: 30px; flex-wrap: wrap; justify-content: center; }
.cam-sec .elementor-widget.cam-w-x020 > * { display: inline-flex; align-items: center; gap: 10px; background: #E0742A; color: #FFFFFF; padding: 5px 24px 5px 5px; border-radius: 999px; font-size: 16px; font-weight: 700; transition: filter .15s; }
.cam-sec .elementor-widget.cam-w-x022 > * { display: inline-flex; align-items: center; gap: 10px; background: #FFFFFF; color: #092634; padding: 5px 24px 5px 5px; border-radius: 999px; font-size: 16px; font-weight: 700; transition: filter .15s; }
.elementor-section.cam-sec.cam-carry-x027 > .elementor-container, .elementor-section.cam-sec.cam-grid-x027 > .elementor-container { max-width: 1200px; margin: 0 auto; display: flex; flex-direction: column; gap: 44px; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x028 { max-width: 640px; margin: 0 auto; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x028 > .elementor-widget-wrap { text-align: center; display: flex; flex-direction: column; align-items: center; gap: 16px; }
.cam-sec .elementor-widget.cam-w-x029 > * { margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 35px; font-weight: 700; color: #092634; }
.cam-sec .elementor-widget.cam-w-x030 > * { margin: 0; font-size: 18px; line-height: 1.75; color: #3D4A61; }
.elementor-section.cam-sec.cam-carry-x031 > .elementor-container, .elementor-section.cam-sec.cam-grid-x031 > .elementor-container { display: flex; align-items: center; gap: 14px; margin-top: 6px; }
.cam-sec .elementor-widget.cam-w-x032 > * { display: inline-flex; align-items: center; gap: 10px; background: #E0742A; color: #FFFFFF; padding: 5px 22px 5px 5px; border-radius: 999px; font-size: 15.5px; font-weight: 700; }
.cam-sec .elementor-widget.cam-w-x034 > * { display: inline-flex; align-items: center; gap: 10px; background: transparent; border: 1.5px solid #D8DEE6; color: #092634; padding: 5px 22px 5px 5px; border-radius: 999px; font-size: 15.5px; font-weight: 700; }
.elementor-section.cam-sec.cam-carry-x036 > .elementor-container, .elementor-section.cam-sec.cam-grid-x036 > .elementor-container { display: grid; grid-template-columns: repeat(12, minmax(0,1fr)); grid-auto-rows: 210px; gap: 20px; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x037 { grid-column: span 7; position: relative; border-radius: 18px; overflow: hidden; }
.cam-sec .elementor-widget.cam-w-x038 > * { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 20%; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x045 { grid-column: span 5; position: relative; border-radius: 18px; overflow: hidden; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x045 > .elementor-widget-wrap { padding: 26px; display: flex; flex-direction: column; justify-content: flex-end; gap: 8px; }
.cam-sec .elementor-widget.cam-w-x046 > * { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cam-sec .elementor-widget.cam-w-x048 > * { position: relative; font-family: 'Space Grotesk', sans-serif; font-size: 21px; font-weight: 700; color: #FFFFFF; }
.cam-sec .elementor-widget.cam-w-x049 > * { position: relative; font-size: 16.5px; line-height: 1.6; color: rgba(255,255,255,0.9); }
.cam-sec .elementor-widget.cam-w-x050 > * { position: relative; margin-top: 6px; display: inline-flex; align-items: center; gap: 8px; font-size: 14.5px; font-weight: 700; color: #FFFFFF; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x052 { grid-column: span 5; position: relative; border-radius: 18px; overflow: hidden; }
.cam-sec .elementor-widget.cam-w-x055 > * { font-family: 'Space Grotesk', sans-serif; font-size: 19px; font-weight: 700; color: #FFFFFF; }
.cam-sec .elementor-widget.cam-w-x059 > * { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 70%; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x062 { max-width: 1100px; margin: 0 auto; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x062 > .elementor-widget-wrap { display: flex; align-items: center; justify-content: space-between; gap: 32px; flex-wrap: wrap; flex-direction: row; }
.cam-sec .elementor-widget.cam-w-x063 > * { margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 31px; line-height: 1.25; font-weight: 700; color: #FFFFFF; max-width: 340px; }
.elementor-section.cam-sec.cam-carry-x064 > .elementor-container, .elementor-section.cam-sec.cam-grid-x064 > .elementor-container { display: flex; align-items: center; gap: 28px; flex-wrap: wrap; }
.cam-sec .elementor-widget.cam-w-x065 > * { margin: 0; max-width: 320px; font-size: 17px; line-height: 1.7; color: rgba(255,255,255,0.85); }
.cam-sec .elementor-widget.cam-w-x066 > * { display: inline-flex; align-items: center; gap: 10px; background: #E0742A; color: #FFFFFF; padding: 5px 22px 5px 5px; border-radius: 999px; font-size: 15.5px; font-weight: 700; flex-shrink: 0; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x068 { max-width: 1160px; margin: 0 auto; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x068 > .elementor-widget-wrap { display: flex; flex-direction: column; gap: 56px; }
.elementor-section.cam-sec.cam-carry-x069 > .elementor-container, .elementor-section.cam-sec.cam-grid-x069 > .elementor-container { max-width: 560px; margin: 0 auto; text-align: center; display: flex; flex-direction: column; gap: 14px; }
.cam-sec .elementor-widget.cam-w-x070 > * { margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 33px; font-weight: 700; color: #092634; }
.cam-sec .elementor-widget.cam-w-x071 > * { margin: 0; font-size: 17.5px; line-height: 1.7; color: #3D4A61; }
.elementor-section.cam-sec.cam-carry-x072 > .elementor-container, .elementor-section.cam-sec.cam-grid-x072 > .elementor-container { display: flex; align-items: flex-start; justify-content: center; gap: 6px; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x073 { width: 190px; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x073 > .elementor-widget-wrap { display: flex; flex-direction: column; align-items: center; gap: 14px; }
.cam-sec .elementor-widget.cam-w-x075 > * { font-family: 'Space Grotesk', sans-serif; font-size: 17px; font-weight: 700; color: #092634; text-align: center; }
.cam-sec .elementor-widget.cam-w-x076 > * { font-size: 16px; line-height: 1.6; color: #3D4A61; text-align: center; }
.cam-sec .elementor-widget.cam-w-x077 > * { font-size: 14px; font-weight: 700; color: #3D4A61; transition: color .15s; }
.elementor-section.cam-sec.cam-carry-x081 > .elementor-container, .elementor-section.cam-sec.cam-grid-x081 > .elementor-container { max-width: 1200px; margin: 0 auto; display: flex; flex-direction: column; gap: 56px; }
.elementor-section.cam-sec.cam-carry-x082 > .elementor-container, .elementor-section.cam-sec.cam-grid-x082 > .elementor-container { max-width: 620px; margin: 0 auto; text-align: center; display: flex; flex-direction: column; gap: 14px; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x082 { max-width: 620px; margin: 0 auto; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x082 > .elementor-widget-wrap { text-align: center; display: flex; flex-direction: column; gap: 14px; }
.cam-sec .elementor-widget.cam-w-x083 > * { font-size: 15px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: #2AB4F2; }
.cam-sec .elementor-widget.cam-w-x084 > * { margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 35px; font-weight: 700; color: #FFFFFF; }
.cam-sec .elementor-widget.cam-w-x085 > * { margin: 0; font-size: 18px; line-height: 1.7; color: #C7D2E6; }
.elementor-section.cam-sec.cam-carry-x086 > .elementor-container, .elementor-section.cam-sec.cam-grid-x086 > .elementor-container { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x087 { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.14); border-radius: 16px; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x087 > .elementor-widget-wrap { padding: 28px 24px; display: flex; flex-direction: column; gap: 14px; transition: transform .18s, box-shadow .18s; }
.cam-sec .elementor-widget.cam-w-x089 > * { font-family: 'Space Grotesk', sans-serif; font-size: 18px; font-weight: 700; color: #FFFFFF; }
.cam-sec .elementor-widget.cam-w-x090 > * { font-size: 17px; line-height: 1.6; color: #C7D2E6; flex-grow: 1; }
.cam-sec .elementor-widget.cam-w-x091 > * { font-size: 15px; font-weight: 700; color: #2AB4F2; }
.elementor-section.cam-sec.cam-carry-x093 > .elementor-container, .elementor-section.cam-sec.cam-grid-x093 > .elementor-container { display: flex; justify-content: center; gap: 24px; flex-wrap: wrap; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x094 { width: 282px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.14); border-radius: 16px; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x094 > .elementor-widget-wrap { padding: 28px 24px; display: flex; flex-direction: column; gap: 14px; transition: transform .18s, box-shadow .18s; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x096 { max-width: 1100px; margin: 0 auto; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x096 > .elementor-widget-wrap { display: flex; flex-direction: column; align-items: center; gap: 28px; }
.cam-sec .elementor-widget.cam-w-x097 > * { font-size: 14.5px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: #64748F; }
.elementor-section.cam-sec.cam-carry-x098 > .elementor-container, .elementor-section.cam-sec.cam-grid-x098 > .elementor-container { display: flex; align-items: center; justify-content: center; gap: 48px; flex-wrap: wrap; }
.cam-sec .elementor-widget.cam-w-x099 > * { font-family: 'Space Grotesk', sans-serif; font-size: 22px; font-weight: 700; color: #33415A; letter-spacing: 0.02em; }
.cam-sec .elementor-widget.cam-w-x100 > * { font-family: 'Space Grotesk', sans-serif; font-size: 17px; font-weight: 700; color: #33415A; letter-spacing: 0.04em; }
.cam-sec .elementor-widget.cam-w-x101 > * { font-family: 'Space Grotesk', sans-serif; font-size: 20px; font-weight: 700; color: #33415A; letter-spacing: 0.02em; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x116 { max-width: 700px; margin: 0 auto; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x116 > .elementor-widget-wrap { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 26px; }
.cam-sec .elementor-widget.cam-w-x117 > * { margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 37px; line-height: 1.2; font-weight: 700; color: #092634; }
.cam-sec .elementor-widget.cam-w-x119 > * { margin: 0; max-width: 480px; font-size: 17px; color: #3D4A61; }
.cam-sec .elementor-widget.cam-w-x120 > * { display: inline-flex; align-items: center; gap: 10px; background: #E0742A; color: #FFFFFF; padding: 6px 26px 6px 6px; border-radius: 999px; font-size: 16.5px; font-weight: 700; }
.cam-sec .elementor-widget.cam-w-x142 > * { position: relative; display: flex; align-items: center; gap: 8px; padding: 6px 16px; border-radius: 999px; background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.18); font-size: 13.5px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: #2AB4F2; }
.cam-sec .elementor-widget.cam-w-x143 > * { position: relative; margin: 18px 0 0; font-family: 'Space Grotesk', sans-serif; font-size: 46px; line-height: 1.15; font-weight: 700; color: #FFFFFF; }
.cam-sec .elementor-widget.cam-w-x144 > * { position: relative; margin: 18px 0 0; max-width: 600px; font-size: 18px; line-height: 1.7; color: #C7D2E6; }
.elementor-section.cam-sec.cam-carry-x146 > .elementor-container, .elementor-section.cam-sec.cam-grid-x146 > .elementor-container { max-width: 1160px; margin: 0 auto; display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 64px; align-items: center; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x147 > .elementor-widget-wrap { display: flex; flex-direction: column; gap: 20px; }
.cam-sec .elementor-widget.cam-w-x148 > * { font-size: 14.5px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: #E0742A; }
.cam-sec .elementor-widget.cam-w-x149 > * { margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 35px; line-height: 1.2; font-weight: 700; color: #092634; }
.cam-sec .elementor-widget.cam-w-x150 > * { margin: 0; font-size: 16.5px; line-height: 1.75; color: #3D4A61; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x151 { position: relative; border-radius: 20px; overflow: hidden; aspect-ratio: 4 / 3.4; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x157 { max-width: 1160px; margin: 0 auto; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x157 > .elementor-widget-wrap { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 32px; }
.elementor-section.cam-sec.cam-carry-x158 > .elementor-container, .elementor-section.cam-sec.cam-grid-x158 > .elementor-container { display: flex; flex-direction: column; gap: 6px; text-align: center; }
.cam-sec .elementor-widget.cam-w-x159 > * { font-family: 'Space Grotesk', sans-serif; font-size: 40px; font-weight: 700; color: #FFFFFF; }
.cam-sec .elementor-widget.cam-w-x160 > * { font-size: 14.5px; line-height: 1.5; color: #A9B8D6; }
.elementor-section.cam-sec.cam-carry-x161 > .elementor-container, .elementor-section.cam-sec.cam-grid-x161 > .elementor-container { display: flex; flex-direction: column; gap: 6px; text-align: center; border-left: 1px solid rgba(255,255,255,0.12); border-right: 1px solid rgba(255,255,255,0.12); }
.elementor-section.cam-sec.cam-carry-x162 > .elementor-container, .elementor-section.cam-sec.cam-grid-x162 > .elementor-container { display: flex; flex-direction: column; gap: 6px; text-align: center; border-right: 1px solid rgba(255,255,255,0.12); }
.cam-sec > .elementor-container > .elementor-column.cam-col-x166 { position: relative; max-width: 1160px; margin: 0 auto; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x166 > .elementor-widget-wrap { display: flex; flex-direction: column; gap: 44px; }
.elementor-section.cam-sec.cam-carry-x167 > .elementor-container, .elementor-section.cam-sec.cam-grid-x167 > .elementor-container { max-width: 620px; display: flex; flex-direction: column; gap: 14px; }
.elementor-section.cam-sec.cam-carry-x168 > .elementor-container, .elementor-section.cam-sec.cam-grid-x168 > .elementor-container { display: grid; grid-template-columns: 1.3fr 1fr; gap: 24px; align-items: stretch; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x169 { position: relative; border-radius: 20px; overflow: hidden; aspect-ratio: 16 / 10; }
.cam-sec .elementor-widget.cam-w-x171 > * { position: absolute; left: 22px; bottom: 20px; right: 22px; font-size: 15px; font-weight: 600; color: #FFFFFF; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x172 { position: relative; border-radius: 20px; overflow: hidden; aspect-ratio: 4 / 3.6; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x175 { background: #FFFFFF; border: 1px solid #E4E8F0; border-radius: 16px; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x175 > .elementor-widget-wrap { padding: 28px 24px; display: flex; flex-direction: column; gap: 14px; transition: transform .18s, box-shadow .18s; }
.cam-sec .elementor-widget.cam-w-x176 > * { font-family: 'Space Grotesk', sans-serif; font-size: 18px; font-weight: 700; color: #092634; }
.cam-sec .elementor-widget.cam-w-x177 > * { font-size: 15.5px; line-height: 1.6; color: #3D4A61; flex-grow: 1; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x179 { max-width: 1000px; margin: 0 auto; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x179 > .elementor-widget-wrap { display: flex; flex-direction: column; align-items: center; gap: 28px; text-align: center; }
.cam-sec .elementor-widget.cam-w-x180 > * { margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 30px; font-weight: 700; color: #092634; }
.cam-sec .elementor-widget.cam-w-x181 > * { margin: 0; max-width: 560px; font-size: 16.5px; line-height: 1.7; color: #3D4A61; }
.elementor-section.cam-sec.cam-carry-x182 > .elementor-container, .elementor-section.cam-sec.cam-grid-x182 > .elementor-container { display: flex; align-items: center; justify-content: center; gap: 12px; flex-wrap: wrap; }
.cam-sec .elementor-widget.cam-w-x183 > * { padding: 10px 20px; border-radius: 999px; background: #F9F9F9; border: 1px solid #E4E8F0; font-size: 14.5px; font-weight: 600; color: #092634; transition: background .15s; }
.cam-sec .elementor-widget.cam-w-x185 > * { font-family: 'Space Grotesk', sans-serif; font-size: 15px; font-weight: 700; color: #33415A; letter-spacing: 0.04em; }
.cam-sec .elementor-widget.cam-w-x186 > * { font-family: 'Space Grotesk', sans-serif; font-size: 18px; font-weight: 700; color: #33415A; letter-spacing: 0.02em; }
.cam-sec .elementor-widget.cam-w-x188 > * { margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 34px; line-height: 1.2; font-weight: 700; color: #092634; }
.elementor-section.cam-sec.cam-carry-x198 > .elementor-container, .elementor-section.cam-sec.cam-grid-x198 > .elementor-container { max-width: 1100px; margin: 0 auto; display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 24px; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x199 { background: #FFFFFF; border: 1px solid #E4E8F0; border-radius: 14px; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x199 > .elementor-widget-wrap { display: flex; align-items: center; gap: 14px; padding: 20px 22px; flex-direction: row; }
.cam-sec .elementor-widget.cam-w-x201 > * { font-family: 'Space Grotesk', sans-serif; font-size: 20px; font-weight: 700; color: #092634; }
.cam-sec .elementor-widget.cam-w-x202 > * { font-size: 13.5px; color: #3D4A61; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x205 { max-width: 1160px; margin: 0 auto; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x205 > .elementor-widget-wrap { display: flex; flex-direction: column; gap: 40px; }
.cam-sec .elementor-widget.cam-w-x206 > * { margin: 0; text-align: center; font-family: 'Space Grotesk', sans-serif; font-size: 30px; font-weight: 700; color: #092634; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x207 { background: #FFFFFF; border: 1px solid #E4E8F0; border-radius: 18px; overflow: hidden; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x207 > .elementor-widget-wrap { display: flex; flex-direction: column; transition: transform .18s, box-shadow .18s; }
.cam-sec .elementor-widget.cam-wrap-x208 { position: relative; width: 100%; aspect-ratio: 16/10; overflow: hidden; }
.cam-sec .elementor-widget.cam-w-x212 > * { margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 17px; font-weight: 700; color: #092634; }
.cam-sec .elementor-widget.cam-w-x213 > * { margin: 0; font-size: 13.5px; line-height: 1.6; color: #3D4A61; flex-grow: 1; }
.elementor-section.cam-sec.cam-carry-x214 > .elementor-container, .elementor-section.cam-sec.cam-grid-x214 > .elementor-container { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.cam-sec .elementor-widget.cam-w-x215 > * { padding: 5px 10px; border-radius: 999px; background: #F9F9F9; border: 1px solid #E4E8F0; font-size: 11.5px; font-weight: 600; color: #092634; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x225 { max-width: 1100px; margin: 0 auto; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x225 > .elementor-widget-wrap { display: flex; flex-direction: column; gap: 44px; }
.cam-sec .elementor-widget.cam-w-x226 > * { margin: 0; text-align: center; font-family: 'Space Grotesk', sans-serif; font-size: 30px; font-weight: 700; color: #FFFFFF; }
.elementor-section.cam-sec.cam-carry-x227 > .elementor-container, .elementor-section.cam-sec.cam-grid-x227 > .elementor-container { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 24px; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x228 > .elementor-widget-wrap { display: flex; flex-direction: column; gap: 12px; text-align: center; align-items: center; }
.cam-sec .elementor-widget.cam-w-x229 > * { font-family: 'Space Grotesk', sans-serif; font-size: 17px; font-weight: 700; color: #FFFFFF; }
.cam-sec .elementor-widget.cam-w-x230 > * { font-size: 14px; line-height: 1.6; color: #C7D2E6; }
.cam-sec .elementor-widget.cam-w-x231 > * { margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 28px; line-height: 1.25; font-weight: 700; color: #FFFFFF; max-width: 380px; }
.cam-sec .elementor-widget.cam-w-x232 > * { margin: 0; max-width: 320px; font-size: 15.5px; line-height: 1.7; color: #C7D2E6; }
.elementor-section.cam-sec.cam-carry-x240 > .elementor-container, .elementor-section.cam-sec.cam-grid-x240 > .elementor-container { display: flex; align-items: center; gap: 14px; margin-top: 28px; flex-wrap: wrap; justify-content: center; }
.cam-sec .elementor-widget.cam-w-x241 > * { display: inline-flex; align-items: center; gap: 8px; background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.24); color: #FFFFFF; padding: 11px 22px; border-radius: 999px; font-size: 15.5px; font-weight: 700; }
.elementor-section.cam-sec.cam-carry-x244 > .elementor-container, .elementor-section.cam-sec.cam-grid-x244 > .elementor-container { max-width: 640px; display: flex; flex-direction: column; gap: 14px; }
.cam-sec .elementor-widget.cam-w-x245 > * { margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 32px; line-height: 1.2; font-weight: 700; color: #092634; }
.elementor-section.cam-sec.cam-carry-x246 > .elementor-container, .elementor-section.cam-sec.cam-grid-x246 > .elementor-container { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x247 { background: #F9F9F9; border: 1px solid #E4E8F0; border-radius: 14px; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x247 > .elementor-widget-wrap { display: flex; align-items: flex-start; gap: 14px; padding: 20px; flex-direction: row; }
.cam-sec .elementor-widget.cam-w-x249 > * { font-family: 'Space Grotesk', sans-serif; font-size: 15.5px; font-weight: 700; color: #092634; }
.cam-sec .elementor-widget.cam-w-x250 > * { font-size: 13.5px; line-height: 1.55; color: #3D4A61; margin-top: 4px; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x252 { max-width: 1160px; margin: 0 auto; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x252 > .elementor-widget-wrap { display: flex; flex-direction: column; gap: 44px; }
.cam-sec .elementor-widget.cam-w-x253 > * { font-size: 14.5px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: #2AB4F2; }
.cam-sec .elementor-widget.cam-w-x254 > * { margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 32px; font-weight: 700; color: #FFFFFF; }
.elementor-section.cam-sec.cam-carry-x255 > .elementor-container, .elementor-section.cam-sec.cam-grid-x255 > .elementor-container { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x256 { background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.14); border-radius: 18px; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x256 > .elementor-widget-wrap { padding: 30px 26px; display: flex; flex-direction: column; gap: 14px; transition: transform .18s, box-shadow .18s; }
.cam-sec .elementor-widget.cam-w-x258 > * { font-size: 14.5px; line-height: 1.65; color: #C7D2E6; flex-grow: 1; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x259 { background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.2); border-radius: 18px; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x259 > .elementor-widget-wrap { padding: 30px 26px; display: flex; flex-direction: column; gap: 14px; transition: transform .18s, box-shadow .18s; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x267 { max-width: 1100px; margin: 0 auto; }
.cam-sec > .elementor-container > .elementor-column.cam-col-x267 > .elementor-widget-wrap { display: flex; flex-direction: column; align-items: center; gap: 24px; }
.cam-sec .elementor-widget.cam-w-x268 > * { font-size: 13.5px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: #64748F; }
.elementor-section.cam-sec.cam-carry-x269 > .elementor-container, .elementor-section.cam-sec.cam-grid-x269 > .elementor-container { display: flex; align-items: center; justify-content: center; gap: 40px; flex-wrap: wrap; }
.cam-sec .elementor-widget.cam-w-x270 > * { font-family: 'Space Grotesk', sans-serif; font-size: 18px; font-weight: 700; color: #33415A; }
.cam-sec .elementor-widget.cam-w-x271 > * { font-family: 'Space Grotesk', sans-serif; font-size: 14px; font-weight: 700; letter-spacing: 0.04em; color: #33415A; }
.cam-sec .elementor-widget.cam-w-x272 > * { font-family: 'Space Grotesk', sans-serif; font-size: 16px; font-weight: 700; color: #33415A; }

/* ---- responsive mirror ------------------------------------------------- */
/* 05-responsive.css overrides these classes on the element that carries them.
   On an Elementor node the content is one level down, so the same overrides are
   repeated here for the re-targeted nodes. Same breakpoints, same values. */
@media (max-width: 1023px){
  .elementor-section.cam-sec.cam-carry-x086 > .elementor-container,
  .elementor-section.cam-sec.cam-grid-x086 > .elementor-container,
  .cam-sec > .elementor-container > .elementor-column.cam-col-x157,
  .cam-sec > .elementor-container > .elementor-column.cam-col-x157 > .elementor-widget-wrap,
  .elementor-section.cam-sec.cam-carry-x198 > .elementor-container,
  .elementor-section.cam-sec.cam-grid-x198 > .elementor-container,
  .elementor-section.cam-sec.cam-carry-x227 > .elementor-container,
  .elementor-section.cam-sec.cam-grid-x227 > .elementor-container,
  .elementor-section.cam-sec.cam-carry-x246 > .elementor-container,
  .elementor-section.cam-sec.cam-grid-x246 > .elementor-container,
  .elementor-section.cam-sec.cam-carry-x255 > .elementor-container,
  .elementor-section.cam-sec.cam-grid-x255 > .elementor-container{ grid-template-columns: repeat(2, minmax(0,1fr)); }
  .elementor-section.cam-sec.cam-carry-x036 > .elementor-container,
  .elementor-section.cam-sec.cam-grid-x036 > .elementor-container{ grid-template-columns: repeat(2, minmax(0,1fr)); grid-auto-rows: 230px; }
  .cam-sec > .elementor-container > .elementor-column.cam-col-x037,
  .cam-sec > .elementor-container > .elementor-column.cam-col-x037 > .elementor-widget-wrap,
  .cam-sec > .elementor-container > .elementor-column.cam-col-x045,
  .cam-sec > .elementor-container > .elementor-column.cam-col-x045 > .elementor-widget-wrap,
  .cam-sec > .elementor-container > .elementor-column.cam-col-x052,
  .cam-sec > .elementor-container > .elementor-column.cam-col-x052 > .elementor-widget-wrap{ grid-column: auto; }
}
@media (max-width: 767px){
  .elementor-section.cam-sec.cam-carry-x198 > .elementor-container,
  .elementor-section.cam-sec.cam-grid-x198 > .elementor-container,
  .elementor-section.cam-sec.cam-carry-x227 > .elementor-container,
  .elementor-section.cam-sec.cam-grid-x227 > .elementor-container,
  .elementor-section.cam-sec.cam-carry-x246 > .elementor-container,
  .elementor-section.cam-sec.cam-grid-x246 > .elementor-container,
  .elementor-section.cam-sec.cam-carry-x255 > .elementor-container,
  .elementor-section.cam-sec.cam-grid-x255 > .elementor-container{ grid-template-columns: repeat(1, minmax(0,1fr)); }
  .elementor-section.cam-sec.cam-carry-x086 > .elementor-container,
  .elementor-section.cam-sec.cam-grid-x086 > .elementor-container,
  .cam-sec > .elementor-container > .elementor-column.cam-col-x157,
  .cam-sec > .elementor-container > .elementor-column.cam-col-x157 > .elementor-widget-wrap{ grid-template-columns: repeat(2, minmax(0,1fr)); }
  .elementor-section.cam-sec.cam-carry-x036 > .elementor-container,
  .elementor-section.cam-sec.cam-grid-x036 > .elementor-container{ grid-template-columns: minmax(0,1fr); grid-auto-rows: 240px; }
}
.cam-sec .elementor-widget.cam-w-x017 > * { font-size: clamp(34px, 3.89vw, 56px); }
.cam-sec .elementor-widget.cam-w-x143 > * { font-size: clamp(28px, 3.19vw, 46px); }
.cam-sec .elementor-widget.cam-w-x159 > * { font-size: clamp(24px, 2.78vw, 40px); }
.cam-sec .elementor-widget.cam-w-x117 > * { font-size: clamp(22px, 2.57vw, 37px); }
.cam-sec .elementor-widget.cam-w-x029 > * { font-size: clamp(22px, 2.43vw, 35px); }
.cam-sec .elementor-widget.cam-w-x084 > * { font-size: clamp(22px, 2.43vw, 35px); }
.cam-sec .elementor-widget.cam-w-x149 > * { font-size: clamp(22px, 2.43vw, 35px); }
.cam-sec .elementor-widget.cam-w-x188 > * { font-size: clamp(22px, 2.36vw, 34px); }

/* ==================== 65-elementor-widgets.css ==================== */
/* ============================================================================
   65-elementor-widgets.css — native Testimonial and Accordion widgets, in the
   mockup's own language, so the switch from hand-built markup is invisible.
   ========================================================================== */
/* testimonial grid: the inner section is a block; its container is the grid */
.cam-sec.cam-review-grid { display: block; }
.cam-sec.cam-review-grid > .elementor-container { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 24px; }
.cam-sec.cam-review-grid:has(> .elementor-container > .cam-col:nth-child(2):last-child) > .elementor-container { grid-template-columns: repeat(2, minmax(0,1fr)); }
.cam-sec.cam-review-grid:has(> .elementor-container > .cam-col:nth-child(1):last-child) > .elementor-container { grid-template-columns: minmax(0, 720px); }
.cam-sec.cam-review-grid > .elementor-container > .cam-col { width: auto; }
.cam-sec .cam-col.cam-review-col > .elementor-widget-wrap { height: 100%; }
.cam-review-grid:not(.cam-sec) { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 24px; }
@media (max-width: 1023px) { .cam-sec.cam-review-grid > .elementor-container, .cam-review-grid:not(.cam-sec) { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 767px)  { .cam-sec.cam-review-grid > .elementor-container, .cam-review-grid:not(.cam-sec) { grid-template-columns: 1fr; } }

/* the card, both bands */
.cam-sec .cam-review .elementor-testimonial-wrapper, figure.cam-review { display: flex; flex-direction: column; gap: 16px; height: 100%; text-align: left; margin: 0; padding: 30px 26px; background: #fff; border: 1px solid #E4E8F0; border-radius: 16px; }
.cam-band-reviews-light .cam-review .elementor-testimonial-wrapper, .cam-band-reviews-light figure.cam-review { background: #F9F9F9; border-radius: 18px; padding: 28px 24px; gap: 18px; }
.cam-sec .cam-review .elementor-testimonial-content, figure.cam-review blockquote { font-family: 'Work Sans', sans-serif; font-size: 17px; line-height: 1.65; color: #33415A; margin: 0; flex-grow: 1; }
.cam-band-reviews-light .cam-review .elementor-testimonial-content, .cam-band-reviews-light figure.cam-review blockquote { font-size: 15px; color: #3D4A61; }
.cam-sec .cam-review .elementor-testimonial-content::before, figure.cam-review blockquote::before { content: ""; display: block; width: 26px; height: 20px; margin-bottom: 14px; background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 24' fill='%23E0742A'><path d='M0 24V13.7C0 6 4.9 1 12.3 0l1.5 4C9.2 5.4 6.6 8 6.4 12h6v12H0zm18 0V13.7C18 6 22.9 1 30.3 0l1.5 4C27.2 5.4 24.6 8 24.4 12h6v12H18z'/></svg>") no-repeat; }
.cam-sec .cam-review .elementor-testimonial-meta, figure.cam-review figcaption { margin-top: auto; }
.cam-sec .cam-review .elementor-testimonial-meta-inner { display: flex; flex-direction: column; gap: 2px; text-align: left; }
.cam-sec .cam-review .elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image { display: none; }
.cam-sec .cam-review .elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-details { display: block; text-align: left; }
.cam-sec .cam-review .elementor-testimonial-name, figure.cam-review figcaption { font-family: 'Space Grotesk', sans-serif; font-weight: 700; font-size: 15.5px; color: #092634; line-height: 1.3; display: flex; flex-direction: column; gap: 2px; }
.cam-sec .cam-review .elementor-testimonial-job, figure.cam-review figcaption span { font-family: 'Work Sans', sans-serif; font-weight: 400; font-size: 14px; color: #64748F; line-height: 1.3; }

/* accordion (the FAQ band widgetized) */
.cam-sec .cam-faq-acc { max-width: 900px; width: 100%; }
.cam-sec .cam-faq-acc .elementor-accordion { border: 0; display: flex; flex-direction: column; gap: 12px; }
.cam-sec .cam-faq-acc .elementor-accordion-item { border: 1px solid #E4E8F0; border-radius: 14px; background: #fff; padding: 0 22px; }
.cam-band-faq.cam-x145 .cam-faq-acc .elementor-accordion-item { background: #F9F9F9; }
.cam-sec .cam-faq-acc .elementor-tab-title { padding: 18px 44px 18px 0; position: relative; cursor: pointer; font-family: 'Space Grotesk', sans-serif; font-size: 18px; font-weight: 700; line-height: 1.3; color: #092634; border: 0; background: none; }
.cam-sec .cam-faq-acc .elementor-tab-title:hover, .cam-sec .cam-faq-acc .elementor-tab-title.elementor-active { color: #B5591A; }
.cam-sec .cam-faq-acc .elementor-tab-title h3, .cam-sec .cam-faq-acc .elementor-tab-title a { font: inherit; color: inherit; margin: 0; text-decoration: none; }
.cam-sec .cam-faq-acc .elementor-accordion-icon { display: none; }
.cam-sec .cam-faq-acc .elementor-tab-title::after { content: ""; position: absolute; right: 2px; top: 50%; width: 28px; height: 28px; margin-top: -14px; border-radius: 50%; background: #E0742A linear-gradient(#fff,#fff) center/12px 2px no-repeat; }
.cam-sec .cam-faq-acc .elementor-tab-title::before { content: ""; position: absolute; right: 2px; top: 50%; width: 28px; height: 28px; margin-top: -14px; border-radius: 50%; background: linear-gradient(#fff,#fff) center/2px 12px no-repeat; z-index: 1; transition: transform .18s, opacity .18s; }
.cam-sec .cam-faq-acc .elementor-tab-title.elementor-active::before { transform: rotate(90deg); opacity: 0; }
.cam-sec .cam-faq-acc .elementor-tab-content { padding: 0 44px 20px 0; border: 0; font-family: 'Work Sans', sans-serif; font-size: 16px; line-height: 1.7; color: #3D4A61; }
.cam-sec .cam-faq-acc .elementor-tab-content p { margin: 0 0 .8em; }
.cam-sec .cam-faq-acc .elementor-tab-content p:last-child { margin-bottom: 0; }

/* reviews and FAQ bands: head and grid are direct children (no centering wrapper), so
   the measure and the vertical gap come from here, raw and widgetized */
.cam-band-reviews > *, .cam-band-faq > * { max-width: 1200px; margin-left: auto; margin-right: auto; }
.cam-band-faq > * { max-width: 1160px; }
.cam-band-reviews > .cam-x069 { margin-bottom: 56px; }
.cam-band-faq > .cam-x244 { margin-bottom: 40px; }
.elementor-section.cam-sec.cam-band-reviews > .elementor-container > .cam-col > .elementor-widget-wrap { max-width: 1200px; margin: 0 auto; width: 100%; gap: 56px; }
.elementor-section.cam-sec.cam-band-faq > .elementor-container > .cam-col > .elementor-widget-wrap { max-width: 1160px; margin: 0 auto; width: 100%; gap: 40px; }
.cam-sec.cam-band-reviews .cam-col-x069 { max-width: 560px; margin: 0 auto; }

/* The reviews/FAQ branches put the head's widgets straight into the single column
   (the head wrapper's own class is dropped), and a cam-sec column sizes to content.
   Make that column full width and centre the head widgets the way x069 did. */
.elementor-section.cam-sec.cam-band-reviews > .elementor-container > .cam-col,
.elementor-section.cam-sec.cam-band-faq > .elementor-container > .cam-col { width: 100%; flex: 1 1 100%; }
.elementor-section.cam-sec.cam-band-reviews > .elementor-container > .cam-col > .elementor-widget-wrap { gap: 14px; }
.cam-sec.cam-band-reviews .elementor-widget.cam-w-x083 > *, .cam-sec.cam-band-reviews .elementor-widget.cam-w-x084 > *,
.cam-sec.cam-band-reviews .elementor-widget.cam-w-x206 > * { text-align: center; }
.cam-sec.cam-band-reviews .elementor-widget.cam-w-x083, .cam-sec.cam-band-reviews .elementor-widget.cam-w-x084,
.cam-sec.cam-band-reviews .elementor-widget.cam-w-x206 { align-self: center; max-width: 560px; width: 100%; }
.cam-sec.cam-band-reviews > .elementor-container > .cam-col > .elementor-widget-wrap > .cam-review-grid { margin-top: 42px; }
.elementor-section.cam-sec.cam-band-faq > .elementor-container > .cam-col > .elementor-widget-wrap { gap: 14px; }
.cam-sec.cam-band-faq .elementor-widget.cam-w-x245, .cam-sec.cam-band-faq .elementor-widget.cam-w-x150 { max-width: 640px; }
.cam-sec.cam-band-faq > .elementor-container > .cam-col > .elementor-widget-wrap > .cam-faq-acc { margin-top: 26px; }

/* ==================== 67-fixes-map.css ==================== */
/* ---- 67-fixes-map: Elementor-node equivalents of the bare-class rules in 45-fixes.css ----
   A mockup class that landed on an Elementor node is prefixed there (cam-col-x073, cam-w-x099,
   cam-grid-x072 / cam-carry-x146), so the bare selectors in 45-fixes.css never match those nodes.
   Every rule below re-targets one of them with enough specificity to beat 60-elementor-map.css. */

/* any top-level column may shrink to the band; never widen the page */
.cam-sec > .elementor-container > .cam-col { max-width: 100%; }

/* steps row: four 190px columns wrap instead of forcing an 800px row */
.elementor-section.cam-sec.cam-grid-x072 > .elementor-container,
.elementor-section.cam-sec.cam-carry-x072 > .elementor-container { flex-wrap: wrap; gap: 36px; row-gap: 32px; }
@media (max-width: 1023px) {
  .elementor-section.cam-sec.cam-grid-x072 > .elementor-container,
  .elementor-section.cam-sec.cam-carry-x072 > .elementor-container { gap: 28px; row-gap: 32px; }
}
@media (max-width: 767px) {
  .cam-sec.cam-grid > .elementor-container > .elementor-column.cam-col-x073 { width: calc(50% - 14px); }
}
@media (max-width: 479px) {
  .cam-sec.cam-grid > .elementor-container > .elementor-column.cam-col-x073 { width: 100%; }
}

/* story / split band: one column on tablets and phones */
.elementor-section.cam-sec.cam-carry-x146 h2, .elementor-section.cam-sec.cam-carry-x146 p,
.elementor-section.cam-sec.cam-grid-x146 h2, .elementor-section.cam-sec.cam-grid-x146 p { margin: 0; }
.cam-flip .elementor-section.cam-sec.cam-carry-x146 > .elementor-container > .elementor-column.cam-col-x151,
.cam-flip .elementor-section.cam-sec.cam-grid-x146 > .elementor-container > .elementor-column.cam-col-x151 { order: -1; }
@media (max-width: 1023px) {
  .elementor-section.cam-sec.cam-carry-x146 > .elementor-container,
  .elementor-section.cam-sec.cam-grid-x146 > .elementor-container { grid-template-columns: minmax(0,1fr); gap: 32px; }
  .cam-flip .elementor-section.cam-sec.cam-carry-x146 > .elementor-container > .elementor-column.cam-col-x151,
  .cam-flip .elementor-section.cam-sec.cam-grid-x146 > .elementor-container > .elementor-column.cam-col-x151 { order: 0; }
  .cam-sec > .elementor-container > .elementor-column.cam-col-x151 { max-width: 640px; width: 100%; }
}

/* photo band grid: stack on phones */
@media (max-width: 767px) {
  .elementor-section.cam-sec.cam-carry-x168 > .elementor-container,
  .elementor-section.cam-sec.cam-grid-x168 > .elementor-container { grid-template-columns: minmax(0,1fr); }
}

/* tier cards: fixed 282px on desktop, full width on phones */
@media (max-width: 767px) {
  .cam-sec.cam-grid > .elementor-container > .elementor-column.cam-col-x094,
  .cam-sec > .elementor-container > .elementor-column.cam-col-x094 { flex: 1 1 100%; width: auto; }
}

/* partner wordmarks: typed in title case, shown upper case */
.cam-sec .elementor-widget.cam-w-x099 > *, .cam-sec .elementor-widget.cam-w-x100 > *, .cam-sec .elementor-widget.cam-w-x101 > *,
.cam-sec .elementor-widget.cam-w-x185 > *, .cam-sec .elementor-widget.cam-w-x186 > *,
.cam-sec .elementor-widget.cam-w-x270 > *, .cam-sec .elementor-widget.cam-w-x271 > *, .cam-sec .elementor-widget.cam-w-x272 > * { text-transform: uppercase; }

/* info strip lines */
.cam-info .elementor-widget.cam-w-x201 > *, .cam-info .elementor-widget.cam-w-x202 > * { margin: 0; }
.cam-info .elementor-widget.cam-w-x201 > a:hover { color: var(--cam-orange-ink); }

/* why band tiles */
.cam-sec > .elementor-container > .elementor-column.cam-col-x228 svg { display: block; }

/* phones: CTA rows go full width, help banner stacks, chips shrink */
@media (max-width: 767px) {
  .elementor-section.cam-sec.cam-carry-x019 > .elementor-container > .cam-col,
  .elementor-section.cam-sec.cam-grid-x019 > .elementor-container > .cam-col,
  .elementor-section.cam-sec.cam-carry-x240 > .elementor-container > .cam-col,
  .elementor-section.cam-sec.cam-grid-x240 > .elementor-container > .cam-col { width: 100%; flex: 1 1 100%; }
  .elementor-section.cam-sec.cam-carry-x019 .elementor-widget.cam-btn > .elementor-button,
  .elementor-section.cam-sec.cam-grid-x019 .elementor-widget.cam-btn > .elementor-button,
  .elementor-section.cam-sec.cam-carry-x240 .elementor-widget.cam-btn > .elementor-button,
  .elementor-section.cam-sec.cam-grid-x240 .elementor-widget.cam-btn > .elementor-button { width: 100%; justify-content: center; }
  .cam-sec > .elementor-container > .elementor-column.cam-col-x062 > .elementor-widget-wrap { flex-direction: column; align-items: flex-start; }
  .cam-sec .elementor-widget.cam-w-x063 > *, .cam-sec .elementor-widget.cam-w-x231 > * { max-width: none; }
  .cam-sec .elementor-widget.cam-w-x183 > * { font-size: 13.5px; padding: 8px 14px; }
}

/* hero photo cards: the scrim is an absolute z-index:1 HTML widget, so the heading, copy and
   button widgets after it must be lifted or they render under the gradient */
.cam-sec > .elementor-container > .elementor-column.cam-card-flex > .elementor-widget-wrap > .elementor-widget.cam-w-x048,
.cam-sec > .elementor-container > .elementor-column.cam-card-flex > .elementor-widget-wrap > .elementor-widget.cam-w-x049,
.cam-sec > .elementor-container > .elementor-column.cam-card-flex > .elementor-widget-wrap > .elementor-widget.cam-btn { position: relative; z-index: 2; margin: 0; }
.cam-sec > .elementor-container > .elementor-column.cam-card-flex > .elementor-widget-wrap > .elementor-widget.cam-w-x049 > * { max-width: 380px; }
.cam-sec > .elementor-container > .elementor-column.cam-card-flex > .elementor-widget-wrap > .elementor-widget-image img { z-index: 0; }

/* ---- card grids on Elementor nodes: no orphan card (standing rule). 3, 6 and 9 cards sit in rows
   of three; 4 and 8 in rows of four; 7 stays 4+3; 5 stays 3+2. Matched on child COUNT. ---- */
@media (min-width: 1024px) {
  .cam-sec.cam-cards:has(> .elementor-container > .cam-col:nth-child(3):last-child) > .elementor-container,
  .cam-sec.cam-cards:has(> .elementor-container > .cam-col:nth-child(6):last-child) > .elementor-container,
  .cam-sec.cam-cards:has(> .elementor-container > .cam-col:nth-child(9):last-child) > .elementor-container,
  .cam-cards:not(.cam-sec):has(> :nth-child(6):last-child), .cam-cards:not(.cam-sec):has(> :nth-child(9):last-child) { grid-template-columns: repeat(3, minmax(0,1fr)); }
}
@media (min-width: 768px) and (max-width: 1023px) {
  .cam-sec.cam-cards:has(> .elementor-container > .cam-col:nth-child(9):last-child) > .elementor-container,
  .cam-cards:not(.cam-sec):has(> :nth-child(9):last-child) { grid-template-columns: repeat(3, minmax(0,1fr)); }
}

/* ==================== 68-reviews-carousel.css ==================== */
/* ---- 68-reviews-carousel: the reviews grid becomes a one-at-a-time, scroll-snap track.
   Works on the widgetized band (inner section > container > review columns) and on the
   plain figure grid. Arrows, dots and autoplay are added by cam.js; without JS the track
   still scrolls by touch or trackpad. ---- */
.cam-sec.cam-review-grid > .elementor-container, .cam-review-grid:not(.cam-sec) {
  display: flex !important; grid-template-columns: none; gap: 0;
  overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch; scrollbar-width: none; max-width: 820px; margin: 0 auto;
  border-radius: 18px;
}
.cam-sec.cam-review-grid > .elementor-container::-webkit-scrollbar, .cam-review-grid:not(.cam-sec)::-webkit-scrollbar { display: none; }
.cam-sec.cam-review-grid > .elementor-container > .cam-col, .cam-review-grid:not(.cam-sec) > .cam-review {
  flex: 0 0 100%; width: 100%; max-width: none; scroll-snap-align: center; scroll-snap-stop: always;
}
.cam-sec.cam-review-grid > .elementor-container > .cam-col > .elementor-widget-wrap { height: 100%; }
.cam-sec .cam-review .elementor-testimonial-wrapper, figure.cam-review { padding: 36px 40px; }
.cam-sec .cam-review .elementor-testimonial-content, figure.cam-review blockquote { font-size: 19px; line-height: 1.7; text-align: center; }
.cam-band-reviews-light .cam-review .elementor-testimonial-content, .cam-band-reviews-light figure.cam-review blockquote { font-size: 17px; }
.cam-sec .cam-review .elementor-testimonial-content::before, figure.cam-review blockquote::before { margin-left: auto; margin-right: auto; }
.cam-sec .cam-review .elementor-testimonial-meta-inner, .cam-sec .cam-review .elementor-testimonial-details, figure.cam-review figcaption { text-align: center; }
@media (max-width: 767px) { .cam-sec .cam-review .elementor-testimonial-wrapper, figure.cam-review { padding: 28px 22px; } }

/* controls */
.cam-review-nav { display: flex; align-items: center; justify-content: center; gap: 18px; margin: 22px auto 0; max-width: 820px; }
.cam-review-btn { width: 44px; height: 44px; border-radius: 50%; border: 1px solid rgba(9,38,52,0.18); background: #fff; color: #092634; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; font: 700 26px/1 'Space Grotesk', sans-serif; padding: 0 0 3px; transition: background .15s, color .15s, border-color .15s; }
.cam-review-btn:hover, .cam-review-btn:focus-visible { background: var(--cam-orange-ink, #B5591A); border-color: var(--cam-orange-ink, #B5591A); color: #fff; outline: none; }
.cam-review-dots { display: flex; gap: 8px; align-items: center; }
.cam-review-dots button { width: 10px; height: 10px; padding: 0; border-radius: 50%; border: 0; background: rgba(9,38,52,0.22); cursor: pointer; transition: transform .15s, background .15s; }
.cam-review-dots button[aria-current="true"] { background: var(--cam-orange-ink, #B5591A); transform: scale(1.25); }
.cam-review-dots button:focus-visible { outline: 2px solid var(--cam-orange-ink, #B5591A); outline-offset: 2px; }
.cam-band-reviews-dark .cam-review-btn { background: rgba(255,255,255,0.10); border-color: rgba(255,255,255,0.28); color: #fff; }
.cam-band-reviews-dark .cam-review-btn:hover, .cam-band-reviews-dark .cam-review-btn:focus-visible { background: #E0742A; border-color: #E0742A; color: #fff; }
.cam-band-reviews-dark .cam-review-dots button { background: rgba(255,255,255,0.32); }
.cam-band-reviews-dark .cam-review-dots button[aria-current="true"] { background: #E0742A; }
/* the nav is inserted after the inner section: it lives in the band's single column, above the band ground */
.cam-sec.cam-band-reviews > .elementor-container > .cam-col > .elementor-widget-wrap > .cam-review-nav { position: relative; z-index: 2; }

/* every slide fills the track height so the band does not jump between short and long reviews */
.cam-sec.cam-review-grid > .elementor-container { align-items: stretch; }
.cam-sec.cam-review-grid > .elementor-container > .cam-col { align-self: stretch; display: flex; }
.cam-sec.cam-review-grid > .elementor-container > .cam-col > .elementor-widget-wrap { display: flex; flex-direction: column; height: auto; flex: 1 1 auto; }
.cam-sec.cam-review-grid > .elementor-container > .cam-col > .elementor-widget-wrap > .elementor-widget-testimonial { flex: 1 1 auto; display: flex; flex-direction: column; }
.cam-sec.cam-review-grid > .elementor-container > .cam-col > .elementor-widget-wrap > .elementor-widget-testimonial > * { flex: 1 1 auto; }
/* short reviews: quote and name sit together in the middle of the card instead of pinning the name to the bottom */
.cam-sec.cam-review-grid .cam-review .elementor-testimonial-wrapper, .cam-review-grid:not(.cam-sec) figure.cam-review { justify-content: center; }
.cam-sec.cam-review-grid .cam-review .elementor-testimonial-meta, .cam-review-grid:not(.cam-sec) figure.cam-review figcaption { margin-top: 10px; }

/* ==================== 69-markup-r1.css ==================== */
/* Markup round 1 (2026-10-19, Jimmie Cameron). */

/* Top bar: Sales line + Support line, same format (pins 1, 6, 13). */
.cam-topbar .cam-nap-bar .cam-x004.cam-nap-support { font-weight: 600; }
@media (max-width: 1100px) { .cam-topbar .cam-nap-bar { gap: 18px; } }
@media (max-width: 600px) {
  .cam-topbar .cam-x005 { display: none; }
  .cam-topbar .cam-x003 { justify-content: center; }
  .cam-topbar .cam-nap-bar { gap: 14px; justify-content: center; width: 100%; }
  .cam-topbar .cam-nap-bar .cam-x004 { font-size: 12px; gap: 5px; }
}
@media (max-width: 380px) { .cam-topbar .cam-nap-bar .cam-x004 svg { display: none; } }

/* Footer: both phone lines identical. */
.cam-foot .cam-f-nap a.cam-f-line { color: #FFFFFF; font-size: 16px; font-weight: 600; }
.cam-foot .cam-f-nap a.cam-f-line:hover { color: #F0A46B; }

/* About photo band captions stay on one line (pin 11). */
.cam-w-x171 p, .cam-x171 { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }

/* Contact form: sales-only notice + current-client gate (pin 18). */
.cam-support-notice { display: flex; flex-direction: column; gap: 4px; border-left: 4px solid #B5591A; background: #FDF1E8; color: #4A2309; padding: 14px 16px; border-radius: 10px; font-size: 14.5px; line-height: 1.55; margin: 0 0 20px; }
.cam-support-notice strong { font-weight: 700; color: #4A2309; }
.cam-support-notice a { color: #8A3F0E; font-weight: 700; text-decoration: underline; white-space: nowrap; }
.cam-form .cam-client-q { grid-column: 1 / -1; border: 0; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; }
.cam-form .cam-client-q legend { font-size: 13px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--cam-ink); margin-bottom: 8px; padding: 0; }
.cam-form .cam-client-q label { display: flex; gap: 10px; align-items: center; font-size: 15px; font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--cam-ink); cursor: pointer; }
.cam-form .cam-client-q input { width: 18px; height: 18px; margin: 0; accent-color: var(--cam-orange-ink); flex-shrink: 0; }
.cam-form .cam-form-rest { display: contents; }
.cam-form .cam-client-stop { grid-column: 1 / -1; display: none; flex-direction: column; gap: 8px; border-left: 4px solid #B5591A; background: #FBEDEE; color: #6B0A12; padding: 16px 18px; border-radius: 10px; font-size: 15px; }
.cam-form .cam-client-stop strong { font-weight: 700; }
.cam-form .cam-stop-btns { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 4px; }
.cam-form:has(input[name="client_status"][value="current"]:checked) .cam-client-stop { display: flex; }
.cam-form:has(input[name="client_status"][value="current"]:checked) .cam-form-rest { display: none; }
.cam-form .cam-stop-btns a.cam-btn, .cam-form .cam-stop-btns a.cam-btn:hover { color: #FFFFFF; }
@media (max-width: 600px) { .cam-topbar .cam-nap-bar { flex-direction: column; gap: 2px; } .cam-topbar .cam-x003 { padding-top: 6px; padding-bottom: 6px; } }

/* ==================== 70-markup-r2.css ==================== */
/* Markup round 2 (2026-10-27, Jimmie Cameron, pins 19-21): service cards.
 * "Learn More" sat 1px off the card bottom and the Data Storage button rode
 * higher than its neighbours. The widgetizer flattened the mockup card body
 * (.cam-x211: padding 30px 18px 22px, gap 8px, description flex-grow 1), so
 * restore it on the widget children of every .cam-svc-card (services hub, home). */
.cam-sec .cam-svc-card > .elementor-widget-wrap > .cam-w-x213 { margin-top: 8px; flex: 1 1 auto; }
.cam-sec .cam-svc-card > .elementor-widget-wrap > .cam-grid-x214 { margin-top: 12px; }
.cam-sec .cam-svc-card > .elementor-widget-wrap > .cam-btn { margin-top: 14px; margin-bottom: 22px; }

/* Same audit on the home page: the services grid (x087/x094), the hero cards
 * (x045) and the steps row (x073) all keep their padding but a shorter
 * description left the Learn More link riding higher than its neighbours. */
.cam-sec .cam-col-x087 > .elementor-widget-wrap > .cam-btn,
.cam-sec .cam-col-x094 > .elementor-widget-wrap > .cam-btn,
.cam-sec .cam-col-x045 > .elementor-widget-wrap > .cam-btn,
.cam-sec .cam-col-x073 > .elementor-widget-wrap > .cam-btn { margin-top: auto; }

/* Home hero card x045 ("Proactive Cybersecurity"): 60-elementor-map puts the
 * mockup padding 26px + gap 8px on the widget wrap, and .cam-card-flex puts
 * them on the column too, so the wrap (229px) overflowed a 210px card and the
 * copy sat above the top edge. Keep the column-level copy only, like x037/x052. */
.cam-sec > .elementor-container > .elementor-column.cam-col-x045 > .elementor-widget-wrap { padding: 0; gap: 0; }
