:root {
  color-scheme: light;
  --surface: rgba(255, 255, 255, 0.7);
  --surface-hover: rgba(255, 255, 255, 0.9);
  --surface-2: rgba(240, 237, 248, 0.84);
  --paper: rgba(247, 246, 251, 0.62);
  --hero-glass: rgba(255, 255, 255, 0.11);
  --glass-sheen: rgba(255, 255, 255, 0.5);
  --dialog-surface: rgba(255, 255, 255, 0.95);
  --ambient-opacity: 0.85;
}

.page-loader {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  margin: 0;
  padding: 24px;
  border: 0;
  background: transparent;
  color: #fff;
}
.page-loader::backdrop {
  background: rgba(25, 21, 38, 0.72);
  backdrop-filter: blur(7px);
  -webkit-backdrop-filter: blur(7px);
}
.page-loader-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 28px;
  min-height: 100%;
  text-align: center;
  font: 500 20px/1.5 "Manrope", sans-serif;
}
.page-loader-content img { display: block; width: 108px; height: 108px; object-fit: contain; }
.page-loader-content p { margin: 0; max-width: 28ch; }
.page-loader-spinner {
  width: 56px;
  height: 56px;
  box-sizing: border-box;
  border: 5px solid rgba(255, 255, 255, 0.3);
  border-top-color: #fff;
  border-radius: 50%;
  animation: loadingSpin 0.85s linear infinite;
}
.page-loader-dismiss {
  padding: 9px 18px;
  border: 1px solid rgba(255, 255, 255, 0.5);
  border-radius: 24px;
  background: transparent;
  color: #fff;
  font: inherit;
  font-size: 14px;
  cursor: pointer;
}
.page-loader-dismiss[hidden] { display: none; }
.page-loader-dismiss:focus-visible { outline: 3px solid #fff; outline-offset: 4px; }
.request-pending { overflow: hidden; }
.loading-request-note { margin-top: 16px; font-size: 14px; line-height: 1.6; color: var(--text-body, inherit); }
@keyframes loadingSpin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .page-loader-spinner { animation: none; }
}
@media (prefers-reduced-transparency: reduce) {
  .page-loader::backdrop { background: #211b36; backdrop-filter: none; -webkit-backdrop-filter: none; }
}

:root[data-theme="dark"] {
  color-scheme: dark;
  --deep-bg: #0d0e1c;
  --mid-bg: #151526;
  --paper: rgba(18, 19, 35, 0.68);
  --surface: rgba(29, 27, 49, 0.64);
  --surface-2: rgba(39, 35, 62, 0.85);
  --surface-hover: #2b2545;
  --heading: #f5f2ff;
  --off-white: #eeeaff;
  --text-body: #d0ccdf;
  --muted: #b9b3cd;
  --violet-blue-crayola: #bca8ff;
  --violet-2: #d1c3ff;
  --accent-purple: #c3a0eb;
  --border-glass: rgba(203, 188, 255, 0.18);
  --border-glow: rgba(203, 188, 255, 0.45);
  --text-gradient: linear-gradient(115deg, #d3c4ff, #b9dbe9);
  --focus-ring: #c6b5ff;
  --shadow-glass: 0 16px 40px rgba(0, 0, 0, 0.2);
  --shadow-glow: 0 20px 50px rgba(0, 0, 0, 0.3);
  --hero-glass: rgba(15, 10, 37, 0.36);
  --glass-sheen: rgba(220, 207, 255, 0.08);
  --dialog-surface: rgba(29, 27, 49, 0.95);
  --ambient-opacity: 0.5;
}

.public-site { isolation: isolate; }
.site-ambient { position: fixed; inset: 0; overflow: hidden; pointer-events: none; z-index: -1; }
.site-ambient span {
  position: absolute;
  width: min(85vw, 1100px);
  min-width: 520px;
  aspect-ratio: 1;
  top: -25%;
  left: -20%;
  background: radial-gradient(circle, #a594ee80, #b9a2f14d 30%, transparent 68%);
  opacity: var(--ambient-opacity);
  animation: ambientGlide 28s ease-in-out infinite alternate;
  animation-play-state: var(--ambient-play-state, paused);
}
.site-ambient span:last-child {
  top: auto;
  left: auto;
  bottom: -30%;
  right: -15%;
  background: radial-gradient(circle, #87cbd680, #aaa4ed40 32%, transparent 68%);
  animation-name: ambientSweep;
  animation-duration: 34s;
  animation-delay: -12s;
}
@keyframes ambientGlide {
  from { transform: translate3d(-4%, -6%, 0) scale(0.92); }
  to { transform: translate3d(22%, 18%, 0) scale(1.16); }
}
@keyframes ambientSweep {
  from { transform: translate3d(8%, 12%, 0) scale(0.94); }
  to { transform: translate3d(-20%, -16%, 0) scale(1.18); }
}
.public-site :is(.service-card, .svc-card, .project-card, .team-card, .testimonial-card:not(.testimonial-card-featured), .compliance-card, .compliance-badge, .accordion-card) {
  background-image: linear-gradient(135deg, var(--glass-sheen), transparent 60%);
  backdrop-filter: blur(28px) saturate(160%);
  -webkit-backdrop-filter: blur(28px) saturate(160%);
  box-shadow: var(--shadow-glass), inset 0 1px 0 var(--glass-sheen);
}
.public-site :is(.modal-container, .modal-content), .public-site .greg-dialog {
  background: var(--dialog-surface);
  backdrop-filter: blur(40px) saturate(165%);
  -webkit-backdrop-filter: blur(40px) saturate(165%);
}
.public-site .header { background: rgba(58, 46, 116, 0.82); }
.public-site .header.scrolled { background: rgba(58, 46, 116, 0.94); }
.public-site .footer {
  background: #343f52 url("../images/hero-waves.png") center / cover no-repeat;
  background-blend-mode: luminosity;
}
.public-site:is(.page-hidden, :has(dialog[open])) { --ambient-play-state: paused; }

.theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 44px;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid rgba(195, 183, 243, 0.35);
  border-radius: 50%;
  background: rgba(180, 161, 230, 0.1);
  color: inherit;
  cursor: pointer;
  transition: background 0.2s, border-color 0.2s;
}
.theme-toggle[hidden] { display: none; }
.theme-toggle:hover { background: rgba(180, 161, 230, 0.22); border-color: #bca8ff; }
.theme-toggle:focus-visible { outline: 3px solid currentColor; outline-offset: 4px; }
.theme-toggle [data-theme-icon="light"],
[data-theme="dark"] .theme-toggle [data-theme-icon="dark"] { display: none; }
[data-theme="dark"] .theme-toggle [data-theme-icon="light"] { display: block; }
.header .container { gap: 12px; }
.header .theme-toggle { color: #ffffff; }

.public-site .hero-shell,
.public-site .page-hero > .container {
  background: linear-gradient(135deg, rgba(255, 255, 255, 0.09), transparent 65%), var(--hero-glass);
  border: 1px solid rgba(232, 224, 255, 0.42);
  border-radius: 32px;
  box-shadow: 0 24px 70px rgba(20, 10, 48, 0.24), inset 0 1px 0 rgba(255, 255, 255, 0.35), inset 0 -1px 0 rgba(255, 255, 255, 0.08);
  backdrop-filter: blur(40px) saturate(165%);
  -webkit-backdrop-filter: blur(40px) saturate(165%);
}
.public-site :is(.gabs-hero, .page-hero)::after {
  background:
    radial-gradient(ellipse at 75% 30%, #8370dc55, transparent 40%),
    radial-gradient(ellipse at 25% 65%, #5368df48, transparent 42%),
    radial-gradient(ellipse at 65% 85%, #77c8bc28, transparent 35%);
}
[data-theme="dark"] .public-site :is(.gabs-hero, .page-hero) {
  background: transparent;
  border-bottom-color: transparent;
}
[data-theme="dark"] .public-site :is(.bg-white-section, .compliance-section) {
  background: transparent !important;
}
[data-theme="dark"] .public-site :is(.gabs-hero, .page-hero)::before {
  background: var(--brand-purple) url("../images/hero-waves.png") center / cover no-repeat;
}
[data-theme="dark"] .public-site :is(.gabs-hero, .page-hero)::before,
[data-theme="dark"] .public-site :is(.gabs-hero, .page-hero)::after {
  mask-image: linear-gradient(to bottom, #000000 55%, transparent 100%);
  -webkit-mask-image: linear-gradient(to bottom, #000000 55%, transparent 100%);
}
[data-theme="dark"] .public-site :is(.gabs-hero, .page-hero)::after {
  inset: 0;
  mask-image: linear-gradient(to bottom, #000000 40%, transparent 80%);
  -webkit-mask-image: linear-gradient(to bottom, #000000 40%, transparent 80%);
}
.public-site .hero-shell { padding: 40px; gap: 48px; }
.public-site .page-hero { padding-block: 145px 72px; }
.public-site .page-hero > .container { width: calc(100% - 80px); max-width: 1120px; padding: 48px 56px; }

[data-theme="dark"] .public-site .header { background: rgba(23, 18, 45, 0.82); }
[data-theme="dark"] .public-site .header.scrolled { background: rgba(23, 18, 45, 0.94); }
[data-theme="dark"] .public-site .footer { border-top: 1px solid var(--border-glass); }
[data-theme="dark"] .public-site .btn-primary,
[data-theme="dark"] .public-site .submit-btn { background: linear-gradient(120deg, #6952b1, #574192); color: #ffffff; }
[data-theme="dark"] .public-site :is(.gabs-hero, .header, .cta) .btn-primary { background: #ffffff; color: #3a2e74; }
[data-theme="dark"] .public-site .stats-card li {
  background: #ffffff !important;
  border-radius: 16px;
  padding: 16px;
}

.owner-actions { display: flex; align-items: center; gap: 16px; }
[data-theme="light"] .owner-site {
  --background: #f7f6fb;
  --panel: #ffffff;
  --text: #34384c;
  --muted: #62687d;
  --violet: #6254a4;
  --mint: #237b69;
  --border: rgba(89, 70, 139, 0.18);
  background: radial-gradient(ellipse at 70% 0, #e8e1f8, transparent 55%), var(--background);
}
[data-theme="light"] .owner-site .login-panel { background: linear-gradient(140deg, #f1ecfa, #ffffff); }
[data-theme="light"] .owner-site .metrics article { background: linear-gradient(140deg, #f4f0fc, #ffffff); }
[data-theme="light"] .owner-site :is(.metrics small, .private-badge, .data-note, thead th, .chart-dates, .dashboard-footer) { color: var(--muted); }
[data-theme="light"] .owner-site .metrics article > span { color: var(--text); }
[data-theme="light"] .owner-site .metrics article:nth-child(3) strong { color: #9f3551; }
[data-theme="light"] .owner-site :is(input, select) { background: #ffffff; border-color: var(--border); }
[data-theme="light"] .owner-site label { color: var(--text); }
[data-theme="light"] .owner-site .periods a[aria-current] { color: var(--violet); background: #6254a412; }
[data-theme="light"] .owner-site .error { background: #fff0f2; color: #8e2945; border-color: #e7adbd; }
[data-theme="light"] .owner-site .grid-line { stroke: #6254a425; }

@media (min-width: 993px) and (max-width: 1200px) {
  .public-site .header .top-contact-btn { display: none; }
}
@media (max-width: 992px) {
  .public-site .hero-shell { padding: 28px; gap: 32px; }
}
@media (max-width: 640px) {
  .site-ambient span { min-width: 360px; animation-duration: 38s; }
  .site-ambient span:last-child { display: none; }
  .public-site :is(.hero-shell, .page-hero > .container, .service-card, .svc-card, .project-card, .team-card, .compliance-card) {
    backdrop-filter: blur(24px) saturate(155%);
    -webkit-backdrop-filter: blur(24px) saturate(155%);
  }
  .public-site .header .container { padding-inline: 16px; gap: 8px; }
  .public-site .hero-shell { padding: 22px 18px; gap: 36px; border-radius: 24px; }
  .public-site .hero-title { font-size: clamp(2.8rem, 8.5vw, 4.8rem); }
  .public-site .hero-copy .btn { padding-inline: 16px; }
  .public-site .page-hero { padding-block: 120px 48px; }
  .public-site .page-hero > .container { width: calc(100% - 44px); padding: 30px 20px; border-radius: 24px; }
}
@media (max-width: 480px) {
  .owner-actions .private-badge { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .theme-toggle { transition: none; }
}
