:root {
  --blue: #148bc4;
  --blue-deep: #0a6698;
  --ink: #12334a;
  --muted: #547184;
  --line: #d9e9f1;
  --paper: #fdfefe;
  --soft: #eff8fc;
  --cloud: rgba(46, 169, 225, .20);
  --max: 1120px;
  --shadow: 0 18px 50px rgba(19, 94, 132, .10);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 6rem; }
body { margin: 0; color: var(--ink); background-color: #fbfdff; background-image: radial-gradient(circle at 76% -10%, rgba(174,229,250,.36), transparent 33rem), radial-gradient(circle at -10% 70%, rgba(209,243,255,.32), transparent 30rem); font-family: "DM Sans", sans-serif; font-size: 16px; line-height: 1.6; }
body::before { content: ""; position: fixed; z-index: -2; inset: 0; background-image: radial-gradient(circle, rgba(28,139,192,.28) 1px, transparent 1.2px); background-size: 28px 28px; opacity: .50; pointer-events: none; }
body::after { content: ""; position: fixed; z-index: -1; width: 52rem; height: 52rem; left: -25rem; top: 18rem; background: radial-gradient(circle, rgba(93,193,234,.18), transparent 66%); filter: blur(17px); pointer-events: none; }
a { color: inherit; }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }

.site-header { height: 76px; display: flex; align-items: center; justify-content: space-between; padding: 0 clamp(1.4rem, 5vw, 5rem); background: rgba(255,255,255,.82); border-bottom: 1px solid rgba(15,115,167,.08); backdrop-filter: blur(14px); position: sticky; top: 0; z-index: 10; }
.brand { display: inline-flex; align-items: center; gap: .5rem; color: var(--blue); text-decoration: none; font: 800 1.32rem/1 "Manrope", sans-serif; letter-spacing: -.05em; }
.brand img { display: block; width: 51px; height: 51px; object-fit: contain; }
.header-login { color: var(--blue-deep); text-decoration: none; font-weight: 700; }
.header-login span { display: inline-block; margin-left: .25rem; transition: transform .2s ease; }.header-login:hover span { transform: translate(2px,-2px); }

.section-shell { width: min(calc(100% - 3rem), var(--max)); margin: 0 auto; }
.hero { min-height: 670px; display: grid; grid-template-columns: minmax(0, .93fr) minmax(380px, 1.07fr); align-items: center; gap: clamp(2rem, 6vw, 6rem); padding: 5rem 0 2rem; }
.hero-copy { padding-block: 1.5rem; }.eyebrow { margin: 0 0 .8rem; text-transform: uppercase; font-size: .73rem; letter-spacing: .14em; color: var(--blue); font-weight: 800; }
h1,h2,h3 { font-family: "Manrope", sans-serif; color: var(--ink); line-height: 1.07; letter-spacing: -.045em; margin-top: 0; } h1 { font-size: clamp(3rem, 5vw, 5.2rem); font-weight: 600; margin-bottom: 1.75rem; } h1 strong, h2 em, h3 strong { color: var(--blue); font-style: normal; font-weight: 800; }
h2 { font-size: clamp(2.35rem, 4vw, 4rem); font-weight: 600; margin-bottom: 1rem; } h3 { font-size: 1.22rem; margin-bottom: .65rem; }
.lead { color: var(--muted); max-width: 37rem; font-size: 1.08rem; margin: 0; }.lead strong { color: var(--blue-deep); }
.button-stack { display: flex; flex-wrap: wrap; align-items: center; gap: .8rem; margin-top: 2.25rem; }.button { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; gap: .55rem; border-radius: 100vmax; padding: .8rem 1.22rem; text-decoration: none; text-transform: uppercase; font-size: .76rem; letter-spacing: .035em; font-weight: 800; border: 1px solid transparent; transition: transform .2s ease, box-shadow .2s ease, background .2s ease; }.button:hover { transform: translateY(-2px); box-shadow: 0 8px 22px rgba(4,105,161,.18); }.button-primary { background: var(--blue); color: #fff; }.button-primary:hover { background: var(--blue-deep); }.button-outline { color: var(--blue-deep); border-color: #8ccae5; background: rgba(255,255,255,.55); }.text-link { color: var(--blue-deep); font-weight: 800; text-underline-offset: 5px; text-decoration-thickness: 1px; }.text-link span { display: inline-block; transition: transform .2s ease; }.text-link:hover span { transform: translateX(4px); }
.hero-art { position: relative; border-radius: 42% 58% 55% 45% / 42% 42% 58% 58%; background: radial-gradient(circle at 50% 52%, #d4f3ff, #f8fdff 62%); overflow: hidden; isolation: isolate; box-shadow: 0 24px 60px rgba(21,133,182,.08); }.hero-art::before { content: ""; position: absolute; z-index: -1; inset: 10%; border-radius: 50%; border: 1px solid rgba(20,139,196,.18); }.hero-art img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; mix-blend-mode: multiply; }.hero-divider { grid-column: 1 / -1; margin-top: -3.25rem; padding: 0; pointer-events: none; }.hero-divider img { display: block; width: 100%; height: 210px; max-height: none; object-fit: fill; opacity: .9; filter: saturate(1.35) contrast(1.12); }

.split-section { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem 5rem; padding: 7rem 0; }.section-copy { color: var(--muted); font-size: 1.05rem; align-self: end; }.section-copy p { margin-top: 0; }.section-copy strong { color: var(--blue-deep); }.deliverables-grid { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-top: 1rem; }.deliverable-card { position: relative; min-height: 245px; padding: 1.7rem; background: rgba(255,255,255,.8); border: 1px solid var(--line); border-radius: 1.25rem; box-shadow: 0 8px 26px rgba(12,102,147,.04); transition: transform .25s ease, box-shadow .25s ease; }.deliverable-card:hover { transform: translateY(-5px); box-shadow: var(--shadow); }.deliverable-card .card-number { font: 700 .78rem "Manrope", sans-serif; color: var(--blue); letter-spacing: .09em; }.deliverable-icon { position: absolute; top: 1.35rem; right: 1.35rem; display: block; width: 72px; height: 72px; border-radius: .8rem; background-image: url("../images/deliverables-icons.png"); background-repeat: no-repeat; background-size: 247.7px 117.2px; box-shadow: 0 4px 12px rgba(8,105,152,.12); }.icon-clean { background-position: -12.8px -6.8px; }.icon-cad { background-position: -90px -6.8px; }.icon-ifc { background-position: -167px -6.8px; }.deliverable-card h3 { margin-top: 2.3rem; }.deliverable-card p { color: var(--muted); margin: 0; font-size: .94rem; }

.pricing-section, .plans-section, .recognition-section, .team-section { position: relative; background: rgba(237,248,253,.77); border-top: 1px solid rgba(20,139,196,.09); border-bottom: 1px solid rgba(20,139,196,.09); }.pricing-section::before, .plans-section::before, .recognition-section::before, .team-section::before { content: ""; position: absolute; width: 38rem; height: 38rem; right: -15rem; top: -16rem; border-radius: 50%; background: radial-gradient(circle, rgba(70,186,234,.17), transparent 70%); pointer-events: none; }.pricing-layout { padding: 6.6rem 0 3.3rem; display: grid; grid-template-columns: 1fr minmax(320px, .8fr); gap: clamp(3rem,9vw,9rem); align-items: center; }.pricing-copy p { color: var(--muted); max-width: 33rem; }.calculator { position: relative; z-index: 1; padding: 1.8rem; background: rgba(255,255,255,.88); border: 1px solid #cfe8f3; border-radius: 1.2rem; box-shadow: var(--shadow); }.calculator-head, .calculator-total { display: flex; justify-content: space-between; align-items: baseline; }.calculator-head span, .currency-label { color: var(--muted); text-transform: uppercase; font-size: .72rem; letter-spacing: .1em; font-weight: 800; }.calculator-head output { color: var(--blue); font: 800 2.4rem/1 "Manrope",sans-serif; }.calculator input[type="range"] { width: 100%; accent-color: var(--blue); margin: 1.3rem 0 2rem; }.calculator-total { padding-top: 1.25rem; border-top: 1px solid var(--line); text-transform: uppercase; font: 800 .74rem "Manrope",sans-serif; letter-spacing: .08em; }.calculator-total small { font-size: .64rem; }.calculator-total strong { font-size: 2rem; color: var(--blue-deep); letter-spacing: -.06em; }.currency-label { display: grid; gap: .35rem; margin: 1.4rem 0; }.currency-label select { color: var(--ink); border: 1px solid var(--line); background: #fff; border-radius: .5rem; padding: .65rem .8rem; }.button-wide { width: 100%; }.price-notes { padding: 0 0 5.5rem; display: grid; grid-template-columns: repeat(4,1fr); gap: 1rem; }.price-notes article { min-height: 220px; padding: 1.15rem; border: 1px solid #9ed5eb; border-radius: 1rem; background: rgba(255,255,255,.82); box-shadow: 0 7px 20px rgba(12,102,147,.04); }.price-notes .note-label { color: var(--blue); font-size: .71rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 800; }.price-notes h3 { font-size: 1rem; margin: .35rem 0 1rem; }.note-body { display: grid; grid-template-columns: minmax(70px, .8fr) minmax(0, 1.6fr); gap: .75rem; align-items: center; }.note-image { display: block; width: 80px; max-width: 100%; aspect-ratio: 1; border-radius: .75rem; background-image: url("../images/pricing-notes.png"); background-repeat: no-repeat; background-size: 454px 199.7px; box-shadow: 0 3px 9px rgba(8,105,152,.09); }.image-room { background-position: -26.2px -48.6px; }.image-credit { background-position: -135.8px -48.6px; }.image-standard { background-position: -245px -48.6px; }.image-fairness { background-position: -354px -48.6px; }.price-notes p { color: var(--muted); font-size: .78rem; line-height: 1.52; margin: 0; }

.engines { padding: 7rem 0; }.centered-heading { max-width: 48rem; margin: 0 auto 3rem; text-align: center; }.centered-heading p:last-child { color: var(--muted); margin: 0; }.engine-list { display: grid; grid-template-columns: repeat(3, 1fr); align-items: stretch; gap: 1rem; }.engine-card { position: relative; display: flex; flex-direction: column; min-height: 610px; padding: 1.75rem; overflow: hidden; background: rgba(255,255,255,.9); border: 1px solid #c9e3ee; border-radius: 1.35rem; box-shadow: 0 7px 20px rgba(12,102,147,.04); transition: transform .25s ease, box-shadow .25s ease; }.engine-card:nth-child(2) { background: rgba(237,248,253,.9); border-color: var(--blue); }.engine-card:hover { transform: translateY(-5px); box-shadow: var(--shadow); }.engine-index { color: var(--blue); font: 800 .78rem "Manrope",sans-serif; letter-spacing: .11em; padding-bottom: 1rem; }.engine-card h3 { margin-bottom: .8rem; font-size: 1.42rem; }.engine-summary p { color: var(--muted); margin: 0; font-size: .92rem; line-height: 1.58; }.engine-price { display: block; margin: 1.3rem 0; color: var(--blue-deep); font-size: .75rem; letter-spacing: .05em; text-align: center; }.accordion-set { display: grid; gap: .5rem; }.accordion-set details { border: 1px solid #d8e9f1; border-radius: .55rem; padding: 0 .85rem; background: rgba(238,248,253,.78); }.accordion-set summary { display: flex; justify-content: space-between; min-height: 3.1rem; align-items: center; list-style: none; cursor: pointer; text-transform: uppercase; color: var(--blue-deep); font: 800 .7rem "Manrope",sans-serif; letter-spacing: .08em; }.accordion-set summary::-webkit-details-marker { display: none; }.accordion-set details[open] summary span { transform: rotate(45deg); }.accordion-set details p { color: var(--muted); font-size: .82rem; margin: 0 0 .8rem; }.engine-visual { position: relative; margin: auto 0 0; padding-top: 1.15rem; }.engine-visual::before { content: ""; position: absolute; inset: 1.1rem 7% 0; border-radius: 1.25rem; background: radial-gradient(circle at 50% 30%, #effbff, #f7fbfd); }.engine-visual img { position: relative; display: block; width: 100%; aspect-ratio: 1 / .88; border-radius: 1.1rem; object-fit: cover; mix-blend-mode: multiply; }

.plans-section { padding: 6.5rem 0; }.plans-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 1rem; }.plan-card { position: relative; background: rgba(255,255,255,.86); border: 1px solid #d4eaf3; border-radius: 1.1rem; padding: 1.35rem; overflow: hidden; }.plan-card:first-child { background: var(--blue-deep); border-color: var(--blue-deep); color: #fff; }.plan-card:first-child h3, .plan-card:first-child .plan-name, .plan-card:first-child .plan-action { color: #fff; }.plan-card:first-child .plan-action { border-color: rgba(255,255,255,.3); }.plan-name { color: var(--blue); font: 800 .7rem "Manrope",sans-serif; letter-spacing: .11em; }.plan-card h3 { font-size: 1.15rem; min-height: 3.8rem; }.plan-action { display: flex; justify-content: space-between; align-items: center; border-block: 1px solid var(--line); padding: .7rem 0; text-decoration: none; color: var(--blue-deep); font-size: .73rem; font-weight: 800; letter-spacing: .035em; }.plan-card ul { padding: .8rem 0 0; margin: 0; list-style: none; color: var(--muted); font-size: .82rem; }.plan-card:first-child ul { color: #d8f2fe; }.plan-card li { padding: .22rem 0 .22rem 1.1rem; position: relative; }.plan-card li::before { content: "✓"; position: absolute; left: 0; color: var(--blue); font-weight: 800; }.plan-card:first-child li::before { color: #b0e9ff; }

.upload-section { padding: 7rem 0; }.upload-layout { display: grid; grid-template-columns: .85fr 1.15fr; gap: clamp(2rem,8vw,8rem); align-items: start; }.upload-layout > div > p:last-child { color: var(--muted); }.demo-form { padding: 1.65rem; border-radius: 1.2rem; background: rgba(255,255,255,.9); border: 1px solid var(--line); box-shadow: var(--shadow); }.steps { display: flex; align-items: center; margin-bottom: 1.8rem; }.steps span { display: grid; place-items: center; width: 1.8rem; height: 1.8rem; border-radius: 50%; background: #e3f2f8; color: var(--blue-deep); font-weight: 800; font-size: .78rem; }.steps span.active { color: #fff; background: var(--blue); }.steps i { height: 1px; flex: 1; background: #c9e3ed; }.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }.form-grid label { color: var(--blue-deep); font: 800 .67rem "Manrope",sans-serif; letter-spacing: .09em; text-transform: uppercase; }.form-grid input, .form-grid textarea { width: 100%; border: 0; border-bottom: 1px solid #bedde9; padding: .7rem 0; margin-top: .25rem; outline: none; color: var(--ink); background: transparent; font: 400 .95rem "DM Sans",sans-serif; letter-spacing: normal; text-transform: none; }.form-grid input:focus, .form-grid textarea:focus { border-color: var(--blue); }.form-grid textarea { resize: vertical; min-height: 70px; }.form-grid .full { grid-column: 1/-1; }.demo-form .button { margin-top: 1.6rem; border: 0; cursor: pointer; }

.recognition-section { padding: 6rem 0; }.recognition-layout { display: grid; grid-template-columns: .85fr 1.15fr; align-items: center; gap: clamp(2rem,7vw,7rem); }.recognition-layout > div > p:last-child { color: var(--muted); }.video-frame { position: relative; border-radius: 1.2rem; overflow: hidden; box-shadow: var(--shadow); aspect-ratio: 16/9; background: #14364b; }.video-frame img { width: 100%; height: 100%; object-fit: cover; display: block; opacity: .77; }.video-frame button { position: absolute; inset: 50% auto auto 50%; transform: translate(-50%,-50%); display: grid; place-items: center; width: 4rem; height: 4rem; border-radius: 50%; padding-left: .3rem; border: 1px solid rgba(255,255,255,.7); color: #fff; background: rgba(11,108,155,.75); cursor: pointer; font-size: 1rem; }.integration-section { padding: 7rem 0; }.partner-grid { display: grid; grid-template-columns: repeat(4,1fr); border: 1px solid var(--line); border-radius: 1.1rem; overflow: hidden; background: rgba(255,255,255,.75); }.partner-grid article { padding: 1.45rem; border-right: 1px solid var(--line); }.partner-grid article:last-child { border-right: 0; }.partner-grid h3 { font-size: 1.05rem; }.partner-grid p { color: var(--muted); min-height: 2rem; font-size: .88rem; }.partner-grid a { color: var(--blue-deep); font-size: .76rem; font-weight: 800; text-decoration: none; }.partner-grid a span { margin-left: .2rem; }

.team-section { padding: 6.5rem 0; }.team-grid { display: grid; grid-template-columns: repeat(5,1fr); gap: 1rem; }.team-grid article { padding: 1.3rem .85rem; text-align: center; background: rgba(255,255,255,.72); border: 1px solid rgba(158,212,234,.7); border-radius: 1rem; }.team-photo { width: 100px; height: 100px; margin: 0 auto 1rem; border-radius: 27% 27% 27% 27%; background-image: url("../images/team-portraits.png"); background-repeat: no-repeat; background-size: 572px 394px; filter: grayscale(1); box-shadow: inset 0 0 0 1px rgba(10,73,105,.05); }.portrait-1 { background-position: -15px -7px; }.portrait-2 { background-position: -125px -7px; }.portrait-3 { background-position: -234px -7px; }.portrait-4 { background-position: -344px -7px; }.portrait-5 { background-position: -454px -7px; }.portrait-6 { background-position: -15px -207px; }.portrait-7 { background-position: -125px -207px; }.portrait-8 { background-position: -234px -207px; }.portrait-9 { background-position: -344px -207px; }.portrait-10 { background-position: -454px -207px; }.team-grid h3 { font-size: .95rem; margin-bottom: .3rem; }.team-grid p { min-height: 2rem; margin: 0 0 .8rem; color: var(--muted); font-size: .68rem; letter-spacing: .06em; text-transform: uppercase; }.team-grid a { display: grid; place-items: center; margin: auto; width: 1.5rem; height: 1.5rem; border-radius: 50%; background: #e1f4fc; color: var(--blue-deep); text-decoration: none; font-size: .7rem; font-weight: 800; }

.offices { padding: 7rem 0; }.office-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 1rem; }.office-grid article { position: relative; padding: 2.1rem; border: 1px solid var(--line); border-radius: 1.1rem; background: rgba(255,255,255,.78); }.office-grid article > span:first-child { color: var(--blue); font: 800 .72rem "Manrope",sans-serif; letter-spacing: .11em; }.office-icon { position: absolute; top: 1.45rem; right: 1.45rem; display: block; width: 72px; height: 72px; border-radius: .85rem; background-image: url("../images/office-icons.png"); background-repeat: no-repeat; background-size: 160.6px 78.2px; box-shadow: 0 4px 12px rgba(8,105,152,.12); }.icon-london { background-position: -10.1px -3.5px; }.icon-lille { background-position: -85.2px -3.5px; }.office-grid h3 { margin: 1.8rem 0 .6rem; }.office-grid p { color: var(--muted); margin: 0; }.site-footer { display: grid; grid-template-columns: 1fr auto; gap: 2rem; padding: 3.5rem max(1.5rem,calc((100% - var(--max))/2)); color: #c3e9fa; background: #073953; }.site-footer .brand { color: #fff; }.footer-brand p { max-width: 17rem; margin: .8rem 0 0; font-size: .84rem; }.footer-links { display: flex; flex-wrap: wrap; justify-content: flex-end; align-content: start; gap: .5rem 1.5rem; }.footer-links a { font-size: .82rem; color: #d6f2ff; text-decoration: none; }.copyright { grid-column: 1/-1; margin: 1.5rem 0 0; padding-top: 1.3rem; border-top: 1px solid rgba(255,255,255,.16); font-size: .75rem; }.back-to-top { position: fixed; z-index: 4; right: 1.25rem; bottom: 1.25rem; display: grid; place-items: center; width: 2.6rem; height: 2.6rem; border: 1px solid #b8dfed; border-radius: 50%; background: rgba(255,255,255,.85); color: var(--blue-deep); text-decoration: none; box-shadow: 0 5px 14px rgba(7,57,83,.11); }

@media (max-width: 900px) { .hero { grid-template-columns: 1fr 1fr; gap: 2.5rem; min-height: 560px; }.deliverables-grid, .plans-grid { grid-template-columns: repeat(2,1fr); }.price-notes { grid-template-columns: repeat(2,1fr); }.team-grid { grid-template-columns: repeat(3,1fr); }.partner-grid { grid-template-columns: repeat(2,1fr); }.partner-grid article:nth-child(2) { border-right: 0; }.partner-grid article:nth-child(-n+2) { border-bottom: 1px solid var(--line); }.engine-list { grid-template-columns: 1fr; max-width: 34rem; margin: auto; }.engine-card { min-height: 0; }.recognition-layout { gap: 3rem; } }
@media (max-width: 640px) { body { font-size: 15px; }.site-header { height: 66px; }.site-header .brand img { width: 43px; height: 43px; }.hero, .split-section, .pricing-layout, .upload-layout, .recognition-layout { grid-template-columns: 1fr; }.hero { min-height: auto; padding: 3.5rem 0; gap: 1.5rem; }.hero-art { max-width: 28rem; margin: auto; width: 100%; order: -1; }.button-stack { align-items: stretch; }.button-stack .text-link { width: 100%; text-align: center; padding-top: .4rem; }.split-section { padding: 4.5rem 0; gap: 1.5rem; }.deliverables-grid, .plans-grid, .price-notes, .office-grid { grid-template-columns: 1fr; }.pricing-layout, .plans-section, .team-section, .recognition-section, .upload-section, .integration-section, .engines, .offices { padding: 4.5rem 0; }.price-notes { padding-bottom: 4.5rem; }.engine-card { padding: 1.3rem; grid-template-columns: 1.7rem 1fr; gap: .55rem .9rem; }.engine-card h3 { font-size: 1rem; }.accordion-set { grid-template-columns: 1fr; }.form-grid { grid-template-columns: 1fr; }.form-grid .full { grid-column: auto; }.partner-grid, .team-grid { grid-template-columns: repeat(2,1fr); }.partner-grid article { border-right: 0; border-bottom: 1px solid var(--line); }.partner-grid article:last-child { border-bottom: 0; }.team-grid { gap: .6rem; }.team-grid article { padding: 1rem .5rem; }.team-grid h3 { font-size: .8rem; }.site-footer { grid-template-columns: 1fr; }.footer-links { justify-content: flex-start; }.section-shell { width: min(calc(100% - 2rem), var(--max)); } }
