:root {
  --bg: #0b1220;
  --surface: #111a2c;
  --surface-2: #16233b;
  --text: #e8eefc;
  --muted: #a9b4cf;
  --line: #263551;
  --accent: #6ea8ff;
  --accent-2: #7ef0c2;
  --danger: #ff7b7b;
  --success: #77e59b;
  --shadow: 0 14px 35px rgba(0,0,0,.28);
  --radius: 16px;
  --radius-sm: 12px;
  --max: 1200px;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: Inter, "Segoe UI", Roboto, Arial, sans-serif;
  background: linear-gradient(180deg, #08101d 0%, #0b1220 40%, #0e1729 100%);
  color: var(--text);
  line-height: 1.55;
}

a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }

.container {
  width: min(calc(100% - 2rem), var(--max));
  margin-inline: auto;
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 40;
  backdrop-filter: blur(10px);
  background: rgba(9, 14, 25, 0.82);
  border-bottom: 1px solid rgba(255,255,255,.06);
}

.nav-wrap {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  min-height: 72px;
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: .75rem;
  color: var(--text);
  font-weight: 700;
  letter-spacing: .2px;
}
.brand:hover { text-decoration: none; }

.brand-badge {
  width: 36px;
  height: 36px;
  border-radius: 12px;
  background: linear-gradient(135deg, var(--accent), var(--accent-2));
  box-shadow: 0 8px 22px rgba(110,168,255,.35);
}

.nav {
  display: flex;
  gap: .4rem;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.nav a {
  color: var(--muted);
  padding: .55rem .8rem;
  border-radius: 999px;
  border: 1px solid transparent;
  font-size: .94rem;
}
.nav a:hover {
  color: var(--text);
  background: rgba(255,255,255,.03);
  border-color: rgba(255,255,255,.06);
  text-decoration: none;
}
.nav a.active {
  color: var(--text);
  background: rgba(110,168,255,.12);
  border-color: rgba(110,168,255,.25);
}

.hero {
  padding: 3rem 0 1.5rem;
}
.hero-grid {
  display: grid;
  grid-template-columns: 1.2fr .8fr;
  gap: 1.25rem;
}
.panel {
  background: linear-gradient(180deg, rgba(255,255,255,.02), rgba(255,255,255,.01));
  border: 1px solid rgba(255,255,255,.06);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}
.hero-card {
  padding: 1.3rem 1.3rem 1.2rem;
}
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  color: var(--accent-2);
  font-size: .85rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
}
.eyebrow::before {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 999px;
  background: var(--accent-2);
  box-shadow: 0 0 0 4px rgba(126,240,194,.15);
}
h1, h2, h3, h4 {
  margin: .25rem 0 .75rem;
  line-height: 1.15;
}
h1 { font-size: clamp(1.8rem, 4vw, 2.8rem); }
h2 { font-size: clamp(1.35rem, 2.6vw, 2rem); }
h3 { font-size: 1.1rem; }
p { margin: 0 0 .8rem; color: var(--muted); }

.hero-actions {
  display: flex;
  gap: .75rem;
  flex-wrap: wrap;
  margin-top: .8rem;
}
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .45rem;
  padding: .75rem 1rem;
  border-radius: 12px;
  border: 1px solid transparent;
  cursor: pointer;
  font-weight: 600;
  text-decoration: none;
}
.btn:hover { text-decoration: none; }
.btn-primary {
  color: #08101d;
  background: linear-gradient(135deg, var(--accent), #99c0ff);
  box-shadow: 0 10px 28px rgba(110,168,255,.28);
}
.btn-secondary {
  color: var(--text);
  background: rgba(255,255,255,.03);
  border-color: rgba(255,255,255,.08);
}
.btn-ghost {
  color: var(--muted);
  background: transparent;
  border-color: rgba(255,255,255,.08);
}

.hero-metrics {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: .8rem;
}
.metric {
  padding: 1rem;
  border-radius: 14px;
  background: rgba(255,255,255,.02);
  border: 1px solid rgba(255,255,255,.05);
}
.metric strong {
  display: block;
  font-size: 1.2rem;
  color: var(--text);
}
.metric span {
  color: var(--muted);
  font-size: .9rem;
}

.section {
  padding: 1rem 0 1.3rem;
}
.section-head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: .9rem;
}
.section-head p { margin: 0; }

.grid {
  display: grid;
  gap: 1rem;
}
.grid-2 { grid-template-columns: repeat(2, minmax(0,1fr)); }
.grid-3 { grid-template-columns: repeat(3, minmax(0,1fr)); }
.grid-4 { grid-template-columns: repeat(4, minmax(0,1fr)); }

.card {
  background: rgba(255,255,255,.02);
  border: 1px solid rgba(255,255,255,.06);
  border-radius: var(--radius);
  padding: 1rem;
  box-shadow: var(--shadow);
}
.card h3, .card h4 { margin-top: 0; }

.service-card .icon,
.category-pill,
.badge {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.02);
  color: var(--muted);
  font-size: .8rem;
  padding: .3rem .55rem;
}

.icon {
  width: fit-content;
  margin-bottom: .7rem;
}

.list-clean {
  list-style: none;
  margin: .6rem 0 0;
  padding: 0;
}
.list-clean li {
  margin: .35rem 0;
  color: var(--muted);
  position: relative;
  padding-left: 1rem;
}
.list-clean li::before {
  content: "•";
  position: absolute;
  left: 0;
  color: var(--accent-2);
}

.page-header {
  padding: 1.35rem 0 .8rem;
}
.page-header .panel {
  padding: 1.1rem 1.1rem;
}
.breadcrumbs {
  font-size: .88rem;
  color: var(--muted);
}
.breadcrumbs a { color: var(--muted); }

.cards-list .card {
  display: flex;
  flex-direction: column;
  gap: .55rem;
}

.portfolio-toolbar {
  display: flex;
  gap: .5rem;
  flex-wrap: wrap;
  margin-bottom: .8rem;
}
.filter-btn {
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.02);
  color: var(--muted);
  padding: .5rem .75rem;
  border-radius: 999px;
  cursor: pointer;
}
.filter-btn.active {
  color: var(--text);
  background: rgba(110,168,255,.12);
  border-color: rgba(110,168,255,.25);
}
.portfolio-card {
  position: relative;
  overflow: hidden;
}
.portfolio-card::after {
  content: "";
  position: absolute;
  inset: auto -30% -40% -30%;
  height: 100px;
  background: radial-gradient(ellipse at center, rgba(110,168,255,.14), transparent 70%);
  pointer-events: none;
}
.project-top {
  display: flex;
  justify-content: space-between;
  gap: .75rem;
  align-items: center;
}
.project-title {
  margin: .15rem 0 .25rem;
}
.meta-row {
  display: flex;
  gap: .45rem;
  flex-wrap: wrap;
}
.chip {
  font-size: .8rem;
  color: var(--muted);
  border: 1px solid rgba(255,255,255,.07);
  background: rgba(255,255,255,.02);
  padding: .22rem .5rem;
  border-radius: 999px;
}
.project-links {
  margin-top: .45rem;
  display: flex;
  gap: .6rem;
  flex-wrap: wrap;
}

.pricing-grid .card {
  display: flex;
  flex-direction: column;
}
.price {
  font-size: 1.55rem;
  font-weight: 700;
  color: var(--text);
  margin: .1rem 0 .35rem;
}
.price small {
  font-size: .85rem;
  color: var(--muted);
  font-weight: 500;
}
.featured {
  border-color: rgba(126,240,194,.25);
  background:
    linear-gradient(180deg, rgba(126,240,194,.03), rgba(255,255,255,.01));
  position: relative;
}
.featured::before {
  content: "Featured";
  position: absolute;
  top: .8rem;
  right: .8rem;
  font-size: .72rem;
  color: #0a1d16;
  background: var(--accent-2);
  border-radius: 999px;
  padding: .22rem .55rem;
  font-weight: 700;
}

.process-steps {
  display: grid;
  gap: .9rem;
}
.step {
  display: grid;
  grid-template-columns: 56px 1fr;
  gap: .85rem;
  align-items: start;
}
.step-number {
  width: 56px;
  height: 56px;
  border-radius: 16px;
  background: rgba(110,168,255,.1);
  border: 1px solid rgba(110,168,255,.22);
  display: grid;
  place-items: center;
  font-weight: 700;
  color: var(--text);
}

.two-col {
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  gap: 1rem;
}
.stack { display: grid; gap: .85rem; }

.form-grid {
  display: grid;
  gap: .85rem;
}
.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .85rem;
}
label {
  display: grid;
  gap: .35rem;
  font-weight: 600;
  color: var(--text);
  font-size: .92rem;
}
input, textarea, select {
  width: 100%;
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,.1);
  background: rgba(255,255,255,.02);
  color: var(--text);
  padding: .78rem .85rem;
  /* outline: none; (removed for a11y focus) */
  font: inherit;
}
textarea { min-height: 140px; resize: vertical; }
input:focus, textarea:focus, select:focus {
  border-color: rgba(110,168,255,.45);
  box-shadow: 0 0 0 4px rgba(110,168,255,.12);
}

.alert {
  border-radius: 12px;
  padding: .8rem .95rem;
  margin-bottom: .8rem;
  border: 1px solid;
}
.alert-success {
  color: #d7ffe6;
  background: rgba(119,229,155,.08);
  border-color: rgba(119,229,155,.28);
}
.alert-error {
  color: #ffd8d8;
  background: rgba(255,123,123,.08);
  border-color: rgba(255,123,123,.28);
}

.small-muted {
  color: var(--muted);
  font-size: .9rem;
}
.kv {
  display: grid;
  gap: .6rem;
}
.kv .row {
  display: grid;
  grid-template-columns: 140px 1fr;
  gap: .8rem;
  padding: .55rem 0;
  border-bottom: 1px solid rgba(255,255,255,.05);
}
.kv .row strong {
  color: var(--text);
}

.content {
  color: var(--muted);
}
.content p { color: var(--muted); }
.content h2, .content h3, .content h4 { color: var(--text); margin-top: 1rem; }
.content ul, .content ol { padding-left: 1.2rem; }

details.faq {
  border: 1px solid rgba(255,255,255,.07);
  border-radius: 14px;
  background: rgba(255,255,255,.02);
  padding: .75rem .85rem;
}
details.faq + details.faq { margin-top: .65rem; }
details.faq summary {
  cursor: pointer;
  font-weight: 600;
  color: var(--text);
}
details.faq p { margin-top: .65rem; }

.cta-banner {
  display: grid;
  gap: .65rem;
  align-items: center;
  grid-template-columns: 1.2fr auto;
  padding: 1rem 1.1rem;
  border-radius: var(--radius);
  border: 1px solid rgba(110,168,255,.22);
  background:
    radial-gradient(circle at 10% 10%, rgba(110,168,255,.16), transparent 60%),
    rgba(255,255,255,.02);
}

.site-footer {
  margin-top: 1.4rem;
  border-top: 1px solid rgba(255,255,255,.06);
  background: rgba(0,0,0,.15);
}
.footer-grid {
  display: grid;
  grid-template-columns: 1.2fr .8fr .8fr;
  gap: 1rem;
  padding: 1.2rem 0;
}
.footer-links {
  display: grid;
  gap: .35rem;
}
.footer-links a {
  color: var(--muted);
}
.footer-bottom {
  border-top: 1px solid rgba(255,255,255,.05);
  padding: .85rem 0 1.2rem;
  color: var(--muted);
  font-size: .9rem;
}

.hide {
  display: none !important;
}

@media (max-width: 980px) {
  .hero-grid,
  .two-col,
  .footer-grid {
    grid-template-columns: 1fr;
  }
  .grid-4 { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .grid-3 { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .cta-banner {
    grid-template-columns: 1fr;
    align-items: start;
  }
}
@media (max-width: 720px) {
  .nav { display: none; } /* keep simple for starter */
  .form-row,
  .grid-2,
  .grid-3,
  .grid-4 {
    grid-template-columns: 1fr;
  }
  .kv .row {
    grid-template-columns: 1fr;
    gap: .35rem;
  }
  .hero { padding-top: 1.5rem; }
}

/* Reviews */
.review-card {
  display: flex;
  flex-direction: column;
  gap: .75rem;
}

.review-stars {
  font-size: 1rem;
  letter-spacing: .08em;
}

.review-text {
  margin: 0;
  line-height: 1.6;
}

.review-author {
  margin-top: auto;
  padding-top: .4rem;
  border-top: 1px solid rgba(255,255,255,.08);
}


/* CSW SELECT READABILITY PATCH */
select,
.form-grid select,
.form-row select {
  color: #eaf0ff !important;
  background: #0f1727 !important;
  border-color: #2c365f !important;
}

select:focus,
.form-grid select:focus,
.form-row select:focus {
  color: #ffffff !important;
  background: #0f1727 !important;
  border-color: #5f79ff !important;
  box-shadow: 0 0 0 3px rgba(95,121,255,.18) !important;
  /* outline: none !important; (removed for a11y focus) */
}

/* Dropdown list items (Chrome/Edge/Windows) */
select option {
  color: #eaf0ff !important;
  background-color: #11172f !important;
}

/* First "Select..." item readable but slightly muted */
select option[value=""] {
  color: #c7d2fe !important;
  background-color: #11172f !important;
}

/* Selected row in dropdown */
select option:checked {
  color: #ffffff !important;
  background-color: #3f63d8 !important;
}


/* Accessibility: visually hidden headings for section labelling */
.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

/* === CSW Social Row (Phase 7) — validator-safe === */
.csw-social-row{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-top:.25rem}
.csw-social-row__label{font-weight:650;font-size:.95rem;letter-spacing:.01em;opacity:.95}
.csw-social-row__icons{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.csw-social-row__icon{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:12px;
  border:1px solid rgba(255,255,255,.14); background:rgba(255,255,255,.05);
  transition:transform .12s ease, background .12s ease, border-color .12s ease, opacity .12s ease;
  color:rgba(255,255,255,.92); text-decoration:none}
.csw-social-row__icon svg{width:18px;height:18px;fill:currentColor}
.csw-social-row__icon:hover{background:rgba(255,255,255,.09);border-color:rgba(255,255,255,.22);transform:translateY(-1px)}
.csw-social-row__icon:focus{outline:2px solid rgba(99,179,237,.55);outline-offset:2px}
.csw-social-row__icon--disabled{opacity:.35;pointer-events:none}
.csw-social-row__review{margin-left:.2rem;font-size:.95rem;opacity:.95}

/* === CSW Accessibility: Focus indicators (AAArdvark) v2 ===
   Goal: Always show a strong keyboard focus ring on links/buttons.
   Uses :focus-visible with a fallback for browsers that don't support it.
*/

:root{
  --csw-focus: rgba(99,179,237,.98);      /* soft electric blue */
  --csw-focus-shadow: rgba(99,179,237,.32);
}

/* Utility: make sure outlines are not suppressed */
a, button, input, select, textarea, summary, [role="button"], .btn, .chip{
  outline-color: var(--csw-focus);
}

/* Main focus ring (keyboard users) */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[role="button"]:focus-visible,
.btn:focus-visible,
.chip:focus-visible{
  outline: 3px solid var(--csw-focus) !important;
  outline-offset: 3px !important;
  border-radius: 12px;
}

/* Fallback for browsers without :focus-visible */
@supports not selector(:focus-visible){
  a:focus,
  button:focus,
  input:focus,
  select:focus,
  textarea:focus,
  summary:focus,
  [role="button"]:focus,
  .btn:focus,
  .chip:focus{
    outline: 3px solid var(--csw-focus) !important;
    outline-offset: 3px !important;
    border-radius: 12px;
  }
}

/* Extra clarity on dark nav backgrounds */
.nav a:focus-visible,
header a:focus-visible,
.navbar a:focus-visible,
.main-nav a:focus-visible{
  box-shadow: 0 0 0 4px var(--csw-focus-shadow) !important;
  border-color: var(--csw-focus) !important;
  background: rgba(255,255,255,.06) !important;
}

/* Buttons: add a subtle shadow ring */
.btn:focus-visible,
.btn-primary:focus-visible,
.btn-secondary:focus-visible,
.btn-ghost:focus-visible{
  box-shadow: 0 0 0 4px var(--csw-focus-shadow) !important;
}

/* Social icon buttons (Phase 7) */
.csw-social-row__icon:focus-visible{
  outline: 3px solid var(--csw-focus) !important;
  outline-offset: 3px !important;
  box-shadow: 0 0 0 4px var(--csw-focus-shadow) !important;
}

/* sr-only helper (used in social icons) */
.sr-only{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  margin:-1px!important;
  overflow:hidden!important;
  clip:rect(0,0,0,0)!important;
  white-space:nowrap!important;
  border:0!important;
}

/* CSW_FOOTER_LEGAL_RIGHT_V1
   Bottom-right legal links in footer (desktop), responsive fallback (mobile).
*/
.csw-footer-has-legal{
  position: relative;
  padding-bottom: 3.25rem; /* space for bottom-right legal links */
}
.csw-footer-has-legal .csw-footer-legal{
  position: absolute;
  right: 0;
  bottom: 0;
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  padding: 10px 0;
  font-size: 0.98rem;
}
.csw-footer-has-legal .csw-footer-legal a{
  color: var(--csw-text-soft, #d6e2f0);
  text-decoration: none;
  border-bottom: 1px solid transparent;
}
.csw-footer-has-legal .csw-footer-legal a:hover{
  color: var(--csw-link-hover, #fff);
  border-bottom-color: rgba(255,255,255,.35);
}
.csw-footer-has-legal .csw-footer-legal a:focus-visible{
  outline: 3px solid var(--csw-focus, #63b3ed);
  outline-offset: 3px;
  border-radius: 10px;
}
/* Mobile: stack/centre naturally */
@media (max-width: 720px){
  .csw-footer-has-legal{
    padding-bottom: 0;
  }
  .csw-footer-has-legal .csw-footer-legal{
    position: static;
    margin-top: 12px;
    justify-content: center;
  }
}

/* CSW_FOOTER_BOTTOM_LEGAL_INLINE_V2
   Make copyright + legal links share the same line (desktop),
   and wrap nicely on small screens.
*/
.footer-bottom{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 16px;
  flex-wrap: wrap;
}
.footer-bottom__right .footer-legal{
  display:flex;
  gap:14px;
  flex-wrap: wrap;
  align-items:center;
  justify-content:flex-end;
}
.footer-bottom__right .footer-legal a{
  color: var(--csw-text-soft, #d6e2f0);
  text-decoration: none;
  border-bottom: 1px solid transparent;
}
.footer-bottom__right .footer-legal a:hover{
  color: var(--csw-link-hover, #fff);
  border-bottom-color: rgba(255,255,255,.35);
}
.footer-bottom__right .footer-legal a:focus-visible{
  outline: 3px solid var(--csw-focus, #63b3ed);
  outline-offset: 3px;
  border-radius: 10px;
}
@media (max-width: 720px){
  .footer-bottom{
    justify-content:center;
    text-align:center;
  }
  .footer-bottom__right .footer-legal{
    justify-content:center;
  }
}
