/* Shared navigation, consent controls and contact states. */
[hidden] { display: none !important; }
section[id], main[id] { scroll-margin-top: 96px; }
.site-nav, .site-menu, .consent-banner, .consent-dialog { box-sizing: border-box; font-family: Inter, system-ui, sans-serif; color: #0f172a; line-height: 1.6; }
.site-nav { position: fixed; inset: 0 0 auto; height: 72px; z-index: 1001; background: rgba(250,251,253,.96); border-bottom: 1px solid #e2e8f0; backdrop-filter: blur(18px); }
.site-nav__inner { width: min(1200px, calc(100% - 48px)); height: 100%; margin: auto; display: flex; align-items: center; gap: 28px; justify-content: space-between; }
.site-nav__brand { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; font: 700 1.25rem 'Space Grotesk', sans-serif; color: #1e40af; flex-shrink: 0; }
.site-nav__links { display: flex; align-items: center; gap: 24px; margin-left: auto; }
.site-nav__link { color: #475569; font-size: .875rem; font-weight: 600; text-decoration: none; }
.site-nav__link:hover, .site-nav__link[aria-current] { color: #1e40af; }
.site-nav__cta { display: inline-flex; align-items: center; justify-content: center; border-radius: 999px; padding: 10px 18px; background: linear-gradient(135deg,#1e40af,#0891b2); color: #fff; font-size: .875rem; font-weight: 600; text-decoration: none; white-space: nowrap; }
.site-nav__toggle { display: none; border: 1px solid #cbd5e1; background: #fff; border-radius: 10px; padding: 8px 12px; font: 600 .875rem Inter, sans-serif; color: #0f172a; cursor: pointer; }
.site-menu { position: fixed; inset: 72px 0 auto; z-index: 1000; padding: 20px 24px 28px; background: #fafbfd; border-bottom: 1px solid #e2e8f0; box-shadow: 0 16px 30px #0f172a12; max-height: calc(100dvh - 72px); overflow: auto; }
.site-menu a { display: block; padding: 11px 4px; }
.site-menu .site-nav__cta { margin-top: 12px; text-align: center; }
.site-skip { position: fixed; left: 16px; top: -100px; z-index: 4000; padding: 12px 20px; background: #fff; color: #1e40af; border: 2px solid #1e40af; border-radius: 10px; }
.site-skip:focus { top: 12px; }
.site-nav a:focus-visible, .site-nav button:focus-visible, .site-menu a:focus-visible,
.consent-button:focus-visible, .consent-close:focus-visible, .cookie-settings-link:focus-visible { outline: 3px solid #0891b2; outline-offset: 4px; }
.page-portfolio { padding-top: 72px; }
.footer-utility { display: flex; flex-wrap: wrap; gap: 12px 20px; align-items: center; padding: 0 0 24px; }
.footer-utility a, .cookie-settings-link { color: #475569; font-size: .8125rem; }
.cookie-settings-link { background: transparent; border: 0; padding: 0; font: inherit; font-size: .8125rem; color: inherit; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.consent-banner { position: fixed; inset: auto 20px 20px; z-index: 3000; display: flex; align-items: center; gap: 28px; padding: 24px; border: 1px solid #cbd5e1; border-radius: 20px; background: #fff; box-shadow: 0 12px 60px #0f172a29; max-height: calc(100dvh - 40px); overflow: auto; }
.consent-banner__copy { flex: 1; }
.consent-banner h2 { font: 700 1rem 'Space Grotesk', sans-serif; margin: 0 0 6px; letter-spacing: normal; }
.consent-banner p, .consent-dialog p { font-size: .875rem; margin: 0; color: #475569; }
.consent-banner a, .consent-dialog a { color: #1e40af; text-decoration: underline; }
.consent-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.consent-button { border: 1px solid #94a3b8; border-radius: 10px; background: #fff; color: #0f172a; padding: 11px 15px; font: 600 .8125rem/1.5 Inter, sans-serif; cursor: pointer; min-height: 44px; }
.consent-button:hover { background: #f1f5f9; }
.consent-button--primary { background: #1e40af; border-color: #1e40af; color: #fff; }
.consent-button--primary:hover { background: #1e3a8a; }
.consent-dialog { position: fixed; inset: 0; margin: auto; width: min(560px, calc(100% - 32px)); max-height: calc(100dvh - 32px); padding: 28px; background: #fff; border: 1px solid #cbd5e1; border-radius: 20px; box-shadow: 0 24px 90px #0f172a40; overflow: auto; }
.consent-dialog::backdrop { background: #0f172a99; }
.consent-dialog__header { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 12px; }
.consent-dialog h2 { font: 700 1.4rem 'Space Grotesk', sans-serif; letter-spacing: normal; margin: 0; }
.consent-close { border: 0; border-radius: 8px; background: #f1f5f9; color: #0f172a; font: 24px/1 system-ui; min-width: 44px; min-height: 44px; cursor: pointer; }
.consent-option { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 18px 0; border-bottom: 1px solid #e2e8f0; cursor: pointer; }
.consent-option strong, .consent-option small { display: block; }
.consent-option small { color: #475569; font-size: .8125rem; }
.consent-option input { flex: none; width: 22px; height: 22px; accent-color: #1e40af; }
.consent-dialog .consent-actions { margin-top: 24px; }
.consent-error, .contact-form__error { color: #b91c1c !important; font-size: .875rem; padding: 12px 0; }
.contact-form__heading { font: 700 1.5rem 'Space Grotesk',sans-serif; margin-bottom: 12px; }
.contact-form__intro { color: #475569; margin-bottom: 24px; }
.contact-form__privacy { color: #475569; font-size: .8125rem; margin: 16px 0; }
.contact-form__privacy a, .contact-form__note a { color: #1e40af; text-decoration: underline; }
.contact-form__submit { width: 100%; }
.contact-form__submit:disabled { cursor: wait; opacity: .7; }
.contact-form__trap { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.contact-form__success:focus { outline: 2px solid #0891b2; outline-offset: 4px; border-radius: 20px; }
@media (max-width: 1000px) { .site-nav__links { gap: 16px; } .consent-banner { align-items: flex-start; flex-direction: column; gap: 16px; } }
@media (max-width: 900px) { .site-nav__links, .site-nav__inner > .site-nav__cta { display: none; } .site-nav__toggle { display: block; } }
@media (min-width: 901px) { .site-menu { display: none !important; } }
@media (max-width: 600px) { .site-nav__inner { width: calc(100% - 32px); } .consent-banner { inset: auto 8px 8px; padding: 18px; border-radius: 16px; max-height: calc(100dvh - 16px); } .consent-banner .consent-actions { width: 100%; } .consent-banner .consent-button { flex: 1 1 140px; } .consent-dialog { padding: 22px; } .contact-form { padding: 26px; } }
@media print { .site-nav, .site-menu, .site-skip, .consent-banner, .consent-dialog, .cookie-settings-link { display: none !important; } }
