
:root { --lexi-blue: #2879b4; }
body { font-family: Montserrat, Arial, sans-serif; }
a:focus-visible, button:focus-visible { outline: 2px solid var(--lexi-blue); outline-offset: 4px; }
.clean-navbar .container { gap: 1rem; }
.language-switch { display:flex; gap:.35rem; align-items:center; margin-left:auto; order:2; font-size:.8rem; font-weight:600; }
.language-switch a,.language-switch span { padding:.45rem .6rem; border-radius:.35rem; }
.language-switch span { background:#eaf3fa; color:#175c8d; }
.language-switch a { color:#334553; text-decoration:none; }
.language-switch a:hover { background:#f1f5f8; }
.navbar-toggler { order:3; }
.navbar-collapse { order:4; }
.clean-block .block-heading { padding-top:65px; margin-bottom:30px; }
.clean-block .block-heading p { max-width:620px; }
.clean-block > .container > p.text-center,.section-intro { max-width:800px; margin-left:auto; margin-right:auto; line-height:1.8; }
.clean-block.clean-hero .text { max-width:840px; padding:70px 24px; }
.clean-block.clean-hero h1 { font-size:clamp(2rem,4.5vw,3.3rem); line-height:1.2; margin-bottom:1.5rem; }
.clean-hero p { max-width:680px; margin:0 auto 1.5rem; line-height:1.8; }
.clean-hero .hero-tagline { font-size:1.2rem; }
.clean-info .row { margin-top:2.5rem; row-gap:2rem; }
.features .row { row-gap:1.5rem; }
.features .feature-box { display:grid; grid-template-columns:44px minmax(0,1fr); column-gap:1.2rem; padding:1.5rem; margin:0; }
.service-icon { width:36px; height:36px; grid-row:1 / 3; color:var(--lexi-blue); margin-top:2px; }
.feature-box h4 { margin:0 0 .65rem; font-size:1.1rem; line-height:1.4; }
.feature-box p { margin:0; line-height:1.75; font-size:.95rem; color:#455460; opacity:1; }
.page-footer .footer-copyright p { padding:1.2rem; margin:0; }
.page-footer a { color:#235d87; text-decoration:none; }
@media(min-width:992px) { .navbar-collapse { order:1; } .language-switch { margin-left:1rem; } }
@media(max-width:767px) {
 .clean-block { padding-bottom:45px; }
 .clean-block .block-heading { padding-top:40px; }
 .clean-block.clean-hero { min-height:560px; }
 .features .row { row-gap:.25rem; }
 .features .feature-box { padding:1.15rem .75rem; column-gap:1rem; grid-template-columns:36px minmax(0,1fr); }
 .feature-box h4 { font-size:1.05rem; }
 .service-icon { width:30px; height:30px; }
 .clean-info .row p,.clean-info .row h3 { text-align:left!important; }
 .clean-navbar .container { gap:.5rem; }
}

.project-gallery { max-width:1000px; margin:0 auto; }
.gallery-slide { overflow:hidden; border-radius:.8rem; background:white; box-shadow:0 .4rem 1.5rem rgba(24,42,49,.09); }
.gallery-slide[hidden] { display:none!important; }
.gallery-slide > a { display:block; }
.gallery-slide img { width:100%; height:auto; display:block; aspect-ratio:1200 / 838; object-fit:contain; background:#eef2f5; }
.gallery-slide .card-body { padding:1.5rem 2rem; }
.gallery-slide .card-title { margin-bottom:.65rem; }
.gallery-slide .card-text { margin-bottom:1rem; }
.gallery-stage { touch-action:pan-y; }
.gallery-controls { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin:1rem 0; }
.gallery-controls button { width:44px; height:44px; border:1px solid #bdd4e5; border-radius:50%; background:white; color:#175c8d; font-size:1.4rem; }
.gallery-controls button:hover { background:#eaf3fa; }
.gallery-status { font-size:.9rem; text-align:center; color:#455460; }





@media(max-width:767px) { .gallery-slide .card-body { padding:1.2rem; }   }

/* Gallery v4: controls overlay the image; no thumbnail strip. */
.gallery-stage { position:relative; }
.gallery-controls { position:absolute; inset:0 0 auto; width:100%; aspect-ratio:1200 / 838; margin:0; padding:0 1rem; pointer-events:none; }
.gallery-controls button { pointer-events:auto; flex-shrink:0; border:1px solid rgba(255,255,255,.9); background:rgba(255,255,255,.95); color:#175c8d; box-shadow:0 2px 12px rgba(0,0,0,.25); }
.gallery-controls button:hover { background:#eaf3fa; }
.gallery-status { display:block; margin-top:1rem; }
@media(max-width:767px) { .gallery-controls { padding:0 .6rem; } .gallery-controls button { width:40px; height:40px; } }

/* Gallery v6: text overlay and automatic rotation. */
.gallery-slide { position:relative; }
.gallery-slide .card-body { position:absolute; inset:auto 0 0; padding:2.5rem 2rem 1.5rem; color:#fff; background:linear-gradient(transparent,rgba(8,22,34,.92) 30%); text-shadow:0 1px 2px rgba(0,0,0,.3); }
.gallery-slide .card-title { color:#fff; }
.gallery-slide .card-text { max-width:700px; }
.gallery-slide .project-link { color:#fff; text-decoration:underline; text-underline-offset:.2em; }
.gallery-slide .project-link:hover { color:#d5ecff; }
.gallery-pause { display:block; margin:1rem auto .5rem; padding:.45rem .8rem; border:1px solid #bdd4e5; border-radius:.4rem; background:#fff; color:#175c8d; font:inherit; font-size:.85rem; }
.gallery-controls { z-index:2; }
@media(max-width:767px) {
 .gallery-slide img { min-height:380px; object-fit:cover; object-position:top; }
 .gallery-slide .card-body { padding:2.5rem 1rem 1rem; }
 .gallery-slide .card-title { font-size:1.25rem; }
 .gallery-slide .card-text { font-size:.85rem; line-height:1.5; margin-bottom:.6rem; }
 .gallery-controls { aspect-ratio:auto; height:190px; }
}

/* Gallery v7: bottom controls, smaller caption, hidden slide counter. */
.gallery-controls { inset:auto 0 0; height:auto; aspect-ratio:auto; padding:0 1rem 1rem; justify-content:flex-start; gap:.6rem; }
.gallery-controls .gallery-prev { margin-right:auto; }
.gallery-controls .gallery-pause { pointer-events:auto; display:block; width:auto; height:36px; margin:0; padding:.4rem .7rem; border-radius:.4rem; font-size:.75rem; box-shadow:none; }
.gallery-slide .card-body { padding:2rem 2rem 4.75rem; }
.gallery-slide .card-title { font-size:1.2rem; margin-bottom:.4rem; }
.gallery-slide .card-text { font-size:.85rem; line-height:1.5; margin-bottom:.5rem; }
.gallery-slide .project-link { font-size:.8rem; }
@media(max-width:767px) {
 .gallery-controls { inset:auto 0 0; height:auto; padding:0 .75rem .75rem; gap:.45rem; }
 .gallery-slide .card-body { padding:2rem 1rem 4.5rem; }
 .gallery-slide .card-title { font-size:1.05rem; }
 .gallery-slide .card-text { font-size:.78rem; }
 .gallery-controls .gallery-pause { font-size:.65rem; padding:.35rem .5rem; height:34px; }
}

/* Gallery v8: compact caption between the lower controls. */
.gallery-slide .card-body { padding:1.35rem 13.5rem .85rem 4.5rem; background:linear-gradient(transparent,rgba(8,22,34,.83) 35%); min-height:95px; }
.gallery-slide .card-title { font-size:1.05rem; margin-bottom:.25rem; }
.gallery-slide .card-text { font-size:.78rem; line-height:1.4; margin-bottom:.3rem; }
.gallery-slide .project-link { font-size:.74rem; }
.gallery-controls { padding:0 .85rem .85rem; }
.gallery-controls button { width:34px; height:34px; border-radius:8px; border:1px solid rgba(255,255,255,.7); background:rgba(255,255,255,.16); color:#fff; font-size:1.1rem; box-shadow:none; backdrop-filter:blur(6px); }
.gallery-controls button:hover { background:rgba(255,255,255,.32); color:#fff; }
.gallery-controls button:focus-visible { outline-color:#fff; }
.gallery-controls .gallery-pause { height:34px; font-size:.7rem; border-radius:8px; padding:.35rem .6rem; }
@media(max-width:767px) {
 .gallery-slide .card-body { padding:1.3rem 3.5rem 3.25rem; min-height:0; }
 .gallery-slide .card-title { font-size:.95rem; }
 .gallery-slide .card-text { font-size:.72rem; }
 .gallery-slide .project-link { font-size:.7rem; }
 .gallery-controls { padding:0 .65rem .65rem; }
 .gallery-controls button { width:32px; height:32px; }
 .gallery-controls .gallery-pause { height:32px; font-size:.62rem; padding:.3rem .45rem; }
}

/* Gallery v9: light blue-grey caption with clearer type hierarchy. */
.gallery-slide .card-body { background:linear-gradient(rgba(232,241,248,0),rgba(232,241,248,.96) 25%); color:#193b54; text-shadow:none; padding-top:1.1rem; min-height:85px; }
.gallery-slide .card-title { font-size:.95rem; color:#193b54; font-weight:600; margin-bottom:.2rem; }
.gallery-slide .card-text { font-size:.68rem; line-height:1.45; color:#36556b; margin-bottom:.25rem; }
.gallery-slide .project-link { font-size:.68rem; color:#165d8c; }
.gallery-slide .project-link:hover { color:#103e60; }
.gallery-controls button { color:#235a7e; border-color:rgba(35,90,126,.45); background:rgba(255,255,255,.65); }
.gallery-controls button:hover { color:#174362; background:rgba(255,255,255,.95); }
.gallery-controls button:focus-visible { outline-color:#235a7e; }
.gallery-controls .gallery-pause { font-size:.65rem; }
@media(max-width:767px) {
 .gallery-slide .card-body { min-height:0; }
 .gallery-slide .card-title { font-size:.88rem; }
 .gallery-slide .card-text { font-size:.66rem; }
 .gallery-slide .project-link { font-size:.66rem; }
 .gallery-controls .gallery-pause { font-size:.6rem; }
}

/* Gallery v10: align domain and description to the same left edge. */
.gallery-slide .card-body { text-align:left; align-items:flex-start; }
.gallery-slide .card-title,.gallery-slide .card-text { width:100%; text-align:left; margin-left:0; margin-right:0; }
.gallery-slide .project-link { align-self:flex-start; }

/* Gallery v11: right description, left pause control, sage palette. */
.gallery-slide .card-body { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.6fr); gap:.2rem 2rem; padding:1.15rem 4.5rem 3.5rem; background:linear-gradient(rgba(231,239,228,0),rgba(231,239,228,.97) 25%); color:#294c3b; }
.gallery-slide .card-title { grid-column:1; grid-row:1; color:#294c3b; }
.gallery-slide .card-text { grid-column:2; grid-row:1 / 3; align-self:center; justify-self:end; text-align:right; max-width:550px; color:#3d5949; }
.gallery-slide .project-link { grid-column:1; grid-row:2; color:#2c6348; }
.gallery-slide .project-link:hover { color:#173f2c; }
.gallery-controls .gallery-prev { margin-right:0; }
.gallery-controls .gallery-pause { margin-right:auto; }
.gallery-controls button { color:#2c6348; border-color:rgba(44,99,72,.45); background:rgba(255,255,255,.65); }
.gallery-controls button:hover { color:#173f2c; background:rgba(255,255,255,.95); }
.gallery-controls button:focus-visible { outline-color:#2c6348; }
@media(max-width:767px) {
 .gallery-slide .card-body { grid-template-columns:minmax(0,1fr) minmax(0,1.5fr); padding:1.4rem 1rem 3.5rem; gap:.25rem .8rem; }
 .gallery-slide .card-title { font-size:.8rem; }
 .gallery-slide .card-text { font-size:.66rem; }
}

/* Gallery v12: pause on the right, between description and next arrow. */
.gallery-controls .gallery-prev { margin-right:auto; }
.gallery-controls .gallery-pause { margin-right:0; }
.gallery-slide .card-body { padding-right:13.5rem; }
@media(max-width:767px) { .gallery-slide .card-body { padding-right:1rem; } }

/* Gallery v13: one aligned footer row with reserved space for controls. */
.gallery-slide .card-body { height:100px; min-height:0; padding:1rem 13.5rem 1rem 4.5rem; grid-template-columns:minmax(130px,.65fr) minmax(0,1.7fr); gap:.3rem 1.5rem; align-content:center; background:linear-gradient(rgba(231,239,228,0),rgba(231,239,228,.97) 22%); }
.gallery-slide .card-title { margin:0; line-height:1.35; align-self:end; }
.gallery-slide .project-link { margin:0; line-height:1.4; align-self:start; justify-self:start; }
.gallery-slide .card-text { margin:0; max-width:100%; line-height:1.55; align-self:center; justify-self:end; }
.gallery-controls { inset:auto 0 33px; height:34px; padding:0 .85rem; }
@media(max-width:767px) {
 .gallery-slide .card-body { height:auto; min-height:150px; padding:1.4rem 1rem 3.5rem; grid-template-columns:minmax(95px,.8fr) minmax(0,1.6fr); gap:.35rem 1rem; align-content:center; }
 .gallery-slide .card-text { text-align:right; }
 .gallery-controls { inset:auto 0 .65rem; height:32px; padding:0 .65rem; }
}

/* Gallery v14: inset floating panel, photograph visible around all edges. */
.gallery-slide .card-body { inset:auto 1.25rem 1.25rem; height:100px; padding:1rem 12.5rem 1rem 4rem; border-radius:12px; background:rgba(231,239,228,.94); box-shadow:0 4px 20px rgba(30,55,42,.12); backdrop-filter:blur(5px); }
.gallery-controls { inset:auto 1.25rem 3.3125rem; width:auto; height:34px; padding:0 .85rem; }
@media(max-width:767px) {
 .gallery-slide .card-body { inset:auto .75rem .75rem; height:auto; min-height:145px; padding:1rem 1rem 3.4rem; border-radius:10px; }
 .gallery-controls { inset:auto .75rem 1.4rem; width:auto; height:32px; padding:0 .65rem; }
}

/* Gallery v15: narrower caption panel; controls stay in their v14 positions. */
.gallery-slide .card-body { left:5rem; right:14rem; padding:1rem 1.2rem; grid-template-columns:minmax(110px,.7fr) minmax(0,1.6fr); gap:.3rem 1.2rem; }
@media(max-width:767px) {
 .gallery-slide .card-body { left:3.75rem; right:3.75rem; bottom:4.25rem; min-height:0; padding:.8rem; grid-template-columns:1fr; gap:.35rem; }
 .gallery-slide .card-title { grid-column:1; grid-row:1; }
 .gallery-slide .card-text { grid-column:1; grid-row:2; text-align:left; justify-self:start; }
 .gallery-slide .project-link { grid-column:1; grid-row:3; }
}

/* Gallery v16: lower caption height, centred alongside the unchanged controls. */
.gallery-slide .card-body { height:68px; bottom:2.25rem; padding:.55rem 1.2rem; }
@media(max-width:767px) { .gallery-slide .card-body { height:auto; min-height:0; bottom:4.25rem; padding:.55rem .8rem; gap:.2rem; } }

/* v18: larger gallery text; previous page reveal effects removed. */
.gallery-slide .card-title { font-size:18px; }
.gallery-slide .card-text,.gallery-slide .project-link { font-size:14px; }
.gallery-slide .card-body { height:auto; min-height:68px; }
@media(max-width:767px) { .gallery-slide .card-body { min-height:0; } }

/* v19: reveal motion adapted from the supplied Veebikoduke source. */
html { scroll-behavior:smooth; }
.lexi-reveal { opacity:0; transform:translateY(24px); transition:opacity .7s ease,transform .7s ease; }
.lexi-reveal.is-visible { opacity:1; transform:none; }
.clean-navbar { transition:box-shadow .25s ease; }
.clean-navbar.lexi-scrolled { box-shadow:0 8px 30px rgba(32,38,40,.08); }
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } .lexi-reveal { opacity:1; transform:none; transition:none; } .clean-navbar { transition:none; } }

/* Gallery v20: translucent white panel with darker text. */
.gallery-slide .card-body { background:rgba(255,255,255,.72); border:1px solid rgba(255,255,255,.55); color:#202b30; backdrop-filter:blur(4px); }
.gallery-slide .card-title { color:#202b30; }
.gallery-slide .card-text { color:#303b40; }
.gallery-slide .project-link { color:#253c46; }
.gallery-slide .project-link:hover { color:#101e25; }

/* v21: larger language selector and slideshow pause label. */
.navbar-toggler { border:0; border-radius:0; background:transparent; }
.gallery-controls .gallery-pause { font-size:13px; height:36px; padding:.4rem .6rem; }
.gallery-slide .card-body { right:16rem; }
@media(max-width:767px) {
 .gallery-controls .gallery-pause { font-size:12px; height:34px; }
 .gallery-slide .card-body { right:3.75rem; }
}

/* v22: no Bootstrap focus box after clicking the mobile menu. */
.navbar-toggler:focus { box-shadow:none; }
.navbar-toggler:focus:not(:focus-visible) { outline:none; }
.navbar-toggler:focus-visible { outline:2px solid #2879b4; outline-offset:4px; box-shadow:none; }

/* v23: narrower translucent white panel centred in the gap between controls. */
.gallery-slide .card-body { left:5.5rem; right:16.5rem; background:rgba(255,255,255,.58); border-color:rgba(255,255,255,.4); padding:.65rem 1rem; grid-template-columns:minmax(105px,.8fr) minmax(0,1.6fr); gap:.3rem 1rem; }
.gallery-slide .project-link { white-space:nowrap; }
@media(max-width:767px) {
 .gallery-slide .card-body { left:4rem; right:4rem; bottom:4.25rem; grid-template-columns:1fr; padding:.55rem .75rem; gap:.2rem; }
}

/* v25: borderless hamburger transforms into a close icon. */
.navbar-toggler { display:inline-flex; align-items:center; justify-content:center; min-width:44px; min-height:44px; }
.menu-lines { display:block; position:relative; width:26px; height:22px; }
.menu-lines > span { position:absolute; left:0; width:26px; height:2px; background:#45535c; border-radius:2px; transition:transform .25s ease,opacity .2s ease,top .25s ease; }
.menu-lines > span:nth-child(1) { top:2px; }
.menu-lines > span:nth-child(2) { top:10px; }
.menu-lines > span:nth-child(3) { top:18px; }
.navbar-toggler[aria-expanded="true"] .menu-lines > span:nth-child(1) { top:10px; transform:rotate(45deg); }
.navbar-toggler[aria-expanded="true"] .menu-lines > span:nth-child(2) { opacity:0; }
.navbar-toggler[aria-expanded="true"] .menu-lines > span:nth-child(3) { top:10px; transform:rotate(-45deg); }
@media(min-width:992px) { .navbar-expand-lg .navbar-toggler { display:none; } }
@media(prefers-reduced-motion:reduce) { .menu-lines > span { transition:none; } }

/* v26: white caption background at 25% opacity. */
.gallery-slide .card-body { background:rgba(255,255,255,.25); border-color:rgba(255,255,255,.25); }

/* v27: translucent arrow and pause button backgrounds. */
.gallery-controls button { background:rgba(255,255,255,.20); }
.gallery-controls button:hover { background:rgba(255,255,255,.35); }

/* v28: neutral borders and control text matching the caption. */
.gallery-controls button { border-color:rgba(48,59,64,.35); color:#303b40; }
.gallery-controls button:hover { border-color:rgba(48,59,64,.55); color:#202b30; }
.gallery-controls button:focus-visible { outline-color:#303b40; }

/* v29: consistent controls, more spacing and gentle transitions. */
.gallery-slide .card-body { background:rgba(255,255,255,.38); border:1px solid rgba(48,59,64,.25); border-radius:10px; }
.gallery-controls button,.gallery-controls .gallery-pause { border-radius:10px; border:1px solid rgba(48,59,64,.25); box-shadow:0 2px 8px rgba(30,45,52,.06); }
.gallery-controls button:hover { border-color:rgba(48,59,64,.4); }
