/* Visual finish shared by all pages. Layout geometry stays in the core stylesheets. */
:root {
    --surface: #f3f5fa;
    --line: #e0e5ef;
    --radius: 1.1rem;
    --ease-out: cubic-bezier(0.2, 0.7, 0.25, 1);
}
::selection { color: #10194d; background: #dce4ff; }
.site-nav {
    background: rgb(255 255 255 / 94%);
    border-bottom-color: rgb(213 221 237 / 75%);
    box-shadow: 0 1px 0 rgb(255 255 255 / 80%);
    transition: background-color 220ms ease, box-shadow 220ms ease;
}
@supports (backdrop-filter: blur(16px)) {
    .site-nav { background: rgb(255 255 255 / 86%); backdrop-filter: blur(16px) saturate(130%); }
}
.site-nav.is-scrolled { box-shadow: 0 8px 28px rgb(21 36 76 / 8%); }
.site-nav::after {
    content: '';
    position: absolute;
    inset: auto 0 -1px;
    height: 2px;
    background: linear-gradient(90deg, #000080, #7883e2);
    transform: scaleX(var(--reading-progress, 0));
    transform-origin: left;
    pointer-events: none;
}
.site-nav .menu-toggle { transition: background-color 180ms ease, color 180ms ease; }
.site-nav .dropdown {
    border-color: #e0e5ef;
    border-radius: 1rem;
    box-shadow: 0 18px 42px rgb(13 27 64 / 12%), 0 2px 6px rgb(13 27 64 / 3%);
}
.site-nav .dropdown:not([hidden]) { animation: menu-arrive 180ms var(--ease-out); }
.site-nav .dropdown a { transition: color 180ms ease, background-color 180ms ease; }
.site-nav a.nav-email,
.site-nav a.nav-email:visited {
    color: #303b4d;
    background: #f8f9fb;
    border-color: #dce1e9;
    border-radius: 0.5rem;
    box-shadow: none;
}
.site-nav a.nav-email:hover {
    color: #172235;
    background: #edf0f4;
    border-color: #b7c0ce;
}
.site-nav .nav-toggle { transition: background-color 180ms ease, border-color 180ms ease; }
.site-nav .nav-toggle[aria-expanded="true"] { background: #edf0fc; border-color: #b8c2e5; }
.home-hero .hero-shade {
    background: linear-gradient(90deg, rgb(5 17 39 / 94%), rgb(5 17 39 / 76%) 50%, rgb(5 17 39 / 35%)),
        radial-gradient(ellipse at 15% 100%, rgb(47 63 133 / 30%), transparent 70%);
}
.home-hero::after,
.thumbnail::before,
.thumbnailsmall::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    background-image: linear-gradient(rgb(255 255 255 / 6%) 1px, transparent 1px),
        linear-gradient(90deg, rgb(255 255 255 / 6%) 1px, transparent 1px);
    background-size: 72px 72px;
    mask-image: linear-gradient(90deg, transparent 45%, #000);
}
.thumbnail::before,
.thumbnailsmall::before { z-index: 0; opacity: 0.65; }
.thumbnail .textbox,
.thumbnailsmall .thumbnailtext { position: relative; z-index: 1; }
.thumbnail > img,
.thumbnailsmall > img { filter: saturate(0.8); }
.services-section {
    background: radial-gradient(ellipse at 100% 0, #e9eefb, transparent 55%), var(--surface);
}
.service-card,
.threecolumns > div,
.topic-card,
.training-method,
.contact-card,
.team-profile {
    border-color: #dde3ef;
    border-radius: var(--radius);
    box-shadow: 0 2px 3px rgb(19 36 68 / 2%), 0 8px 24px rgb(19 36 68 / 2%);
}
.service-card {
    overflow: hidden;
    background: linear-gradient(145deg, #fff 55%, #f9faff);
}
.service-card::before {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: inherit;
    opacity: 0;
    background: radial-gradient(300px circle at var(--light-x, 50%) var(--light-y, 30%), rgb(77 99 212 / 10%), transparent 72%);
    transition: opacity 250ms ease;
}
.service-card:focus-visible::before { opacity: 1; }
.threecolumns > div,
.topic-card { border-top: 2px solid #c2cbe5; }
.training-method > img { transition: transform 650ms var(--ease-out); }
.training-method { position: relative; }
.training-method > div { position: relative; z-index: 1; background: white; }
.contact-panel { background: radial-gradient(ellipse at 0 100%, #e9edf8, transparent 65%), var(--surface); }
.contact-card { border-color: #d6deed; }
.team-photo,
.contact-card > img { background: #edf0f6; }
.team-details h3,
.contact-card-copy h2,
.contact-card-copy h3 { letter-spacing: -0.035em; }
.site-footer {
    position: relative;
    background: radial-gradient(ellipse at 90% 0, rgb(66 78 153 / 23%), transparent 60%), #0d192c;
    border-top: 1px solid #283750;
}
.footer-email { transition: border-color 220ms ease, color 220ms ease; }
.footer-email span { display: inline-block; transition: transform 220ms ease; }
.site-footer a:focus-visible { outline-color: #b8c8ff; }
.legal-toc { gap: 0.75rem; }
.legal-toc a {
    padding: 0.4rem 0.7rem;
    border: 1px solid var(--line);
    border-radius: 0.4rem;
    text-decoration: none;
    background: #f8f9fc;
    transition: background-color 180ms ease, border-color 180ms ease;
}
.legal-toc a:hover { background: #edf1fc; border-color: #bcc7e5; }
a.button,
button.button { box-shadow: inset 0 1px 0 rgb(255 255 255 / 12%), 0 3px 8px rgb(0 0 90 / 8%); }
@keyframes menu-arrive {
    from { opacity: 0.6; translate: 0 6px; }
    to { opacity: 1; translate: 0 0; }
}
@media (hover: hover) and (pointer: fine) {
    .service-card:hover::before { opacity: 1; }
    .service-card:hover { box-shadow: 0 18px 36px rgb(25 44 91 / 9%), 0 2px 5px rgb(25 44 91 / 3%); }
    .training-method:hover > img { transform: scale(1.035); }
    .footer-email:hover { border-color: #d2dcff; }
    .footer-email:hover span { transform: translate(3px, -3px); }
}
@media (max-width: 1000px) {
    .site-nav .nav-links { background: #fff; }
    .site-nav .dropdown { box-shadow: none; }
}
@media (prefers-reduced-motion: reduce) {
    .site-nav .dropdown:not([hidden]) { animation: none; }
    .training-method:hover > img,
    .footer-email:hover span { transform: none; }
}
