/* ============================================================
   GANIARIS LAW — Shared Design System CSS  v1.1
   Single source of truth for the testdrive + all page mockups.
   Companion: docs/DESIGN-SYSTEM.md  ·  Tokens: :root below.
   ============================================================ */

:root{
  --ground:#FFFBFB;
  --ink:#151419;
  --navy:#12253F;
  --navy-deep:#0C1B30;
  --bronze:#8F6B3D;
  --bronze-soft:#C9A96E;
  --rule:rgba(21,20,25,.10);
  --muted:#5A554F;
  --card:#FFFFFF;
  --radius:18px;
  --gap:clamp(72px,10vh,120px);
}

*{margin:0;padding:0;box-sizing:border-box}

html{scroll-behavior:smooth}
body{
  background:var(--ground);
  color:var(--ink);
  font-family:'Manrope',system-ui,sans-serif;
  font-size:16px;
  line-height:1.65;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
}
.serif{font-family:'Libertinus Serif',Georgia,serif}

/* Wrap + container */
.wrap{max-width:1240px;margin:0 auto;padding:0 6vw}

/* ===== Header (shared by all pages) ===== */
.site-head{
  position:sticky;top:0;z-index:50;
  background:rgba(255,251,251,.85);
  backdrop-filter:saturate(140%) blur(10px);
  -webkit-backdrop-filter:saturate(140%) blur(10px);
  border-bottom:1px solid var(--rule);
}
.site-head .bar{
  display:flex;align-items:center;justify-content:space-between;
  padding:18px 6vw;max-width:1240px;margin:0 auto;
}
.brand{
  display:flex;flex-direction:column;line-height:1;text-decoration:none;
}
.brand b{
  font-family:'Libertinus Serif',serif;font-weight:400;
  font-size:22px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink);
}
.brand i{
  font-style:normal;font-size:9.5px;letter-spacing:.28em;
  text-transform:uppercase;color:var(--bronze);font-weight:600;margin-top:4px;
}
.nav{display:flex;gap:34px;align-items:center}
.nav a{
  color:var(--ink);text-decoration:none;font-size:13.5px;
  letter-spacing:.04em;font-weight:500;
  padding:6px 0;border-bottom:1.5px solid transparent;
}
.nav a:hover{border-bottom-color:var(--bronze);color:var(--navy)}
.nav a.on{color:var(--navy);border-bottom-color:var(--bronze)}
.lang-switch{
  display:inline-flex;border:1px solid var(--rule);border-radius:999px;
  overflow:hidden;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;
  font-weight:600;margin-left:14px;
}
.lang-switch a{
  padding:7px 13px;color:var(--muted);text-decoration:none;
  border-bottom:none !important;
}
.lang-switch a.on{background:var(--navy);color:var(--ground)}
.head-cta{
  display:inline-block;background:var(--navy);color:var(--ground);
  padding:11px 22px;border-radius:999px;font-size:12px;
  letter-spacing:.12em;text-transform:uppercase;font-weight:600;
  text-decoration:none;margin-left:10px;
}
.head-cta:hover{background:var(--navy-deep)}

/* ===== Typography ===== */
.t-h1{font-family:'Libertinus Serif',serif;font-weight:400;
  font-size:clamp(38px,5.2vw,54px);line-height:1.08;letter-spacing:-.01em;
  color:var(--ink);
}
.t-h2{font-family:'Libertinus Serif',serif;font-weight:400;
  font-size:clamp(28px,3.6vw,36px);line-height:1.15;letter-spacing:-.01em;
}
.t-h3{font-family:'Libertinus Serif',serif;font-weight:500;
  font-size:clamp(22px,2.2vw,26px);line-height:1.25;color:var(--navy);
}
.t-body{font-size:16px;max-width:62ch;color:var(--ink);line-height:1.7}
.t-small{font-size:13.5px;color:var(--muted);max-width:62ch;line-height:1.65}
.t-kicker{
  font-size:11.5px;letter-spacing:.26em;text-transform:uppercase;
  color:var(--bronze);font-weight:600;margin-bottom:18px;
}
.t-quote{
  font-family:'Libertinus Serif',serif;font-style:italic;font-weight:300;
  font-size:clamp(22px,2.4vw,28px);line-height:1.45;color:var(--navy);
  max-width:38ch;
}
.eyebrow{
  font-size:11.5px;letter-spacing:.26em;text-transform:uppercase;
  color:var(--bronze);font-weight:600;
}
.section-title{
  font-family:'Libertinus Serif',serif;font-weight:400;
  font-size:clamp(28px,3.6vw,38px);line-height:1.15;color:var(--ink);
  letter-spacing:-.01em;
  margin:14px 0 18px;
}
.section-title em{color:var(--navy);font-style:italic}
.section-lead{color:var(--muted);font-size:16px;max-width:62ch;line-height:1.7}

section{margin-top:var(--gap)}

/* ===== Buttons & links ===== */
.btn{
  display:inline-block;text-decoration:none;font-size:13px;
  letter-spacing:.12em;text-transform:uppercase;font-weight:600;
  padding:16px 32px;border-radius:999px;
  transition:background .15s ease, color .15s ease, border-color .15s ease;
}
.btn-primary{background:var(--navy);color:var(--ground)}
.btn-primary:hover{background:var(--navy-deep)}
.btn-outline{border:1.5px solid var(--navy);color:var(--navy);background:transparent}
.btn-outline:hover{background:var(--navy);color:var(--ground)}
.btn-bronze{background:var(--bronze);color:var(--ground)}
.btn-bronze:hover{background:var(--ink)}
.btn-ghost{border:1.5px solid var(--rule);color:var(--ink);background:transparent}
.btn-ghost:hover{border-color:var(--navy);color:var(--navy)}
.link-arrow{
  color:var(--navy);text-decoration:none;font-size:12.5px;
  letter-spacing:.14em;text-transform:uppercase;font-weight:600;
  border-bottom:1.5px solid var(--bronze);padding-bottom:5px;
  display:inline-block;
}
.link-arrow:hover{color:var(--bronze)}

/* ===== Chips (v1.1: pill, bronze-active, not flat form-pill) ===== */
.chips{display:flex;gap:10px;flex-wrap:wrap}
.chip{
  font-size:13px;padding:9px 20px;border:1px solid var(--rule);
  color:var(--muted);border-radius:999px;
  background:var(--card);font-weight:500;
  transition:all .15s ease;cursor:pointer;
}
.chip:hover{border-color:var(--navy);color:var(--navy)}
.chip.on{
  background:var(--navy);color:var(--ground);border-color:var(--navy);
}
.chip.bronze-on{
  background:transparent;color:var(--bronze);border-color:var(--bronze);
}

/* ===== Numbered editorial list ===== */
.ed-num{
  display:grid;grid-template-columns:96px 1fr auto;gap:32px;
  padding:36px 0;border-bottom:1px solid var(--rule);
  align-items:baseline;transition:padding .15s ease;
}
.ed-num:hover{padding-left:6px}
.ed-num .n{
  font-family:'Libertinus Serif',serif;font-style:italic;
  font-size:20px;color:var(--bronze);font-weight:400;
}
.ed-num h3{
  font-family:'Libertinus Serif',serif;font-weight:500;font-size:24px;
  color:var(--navy);margin-bottom:6px;
}
.ed-num p{font-size:15px;color:var(--muted);max-width:60ch;line-height:1.65}
.ed-num a{
  color:var(--bronze);text-decoration:none;font-size:22px;
  font-weight:300;transition:transform .15s ease;
}
.ed-num:hover a{transform:translateX(4px)}

/* ===== Text + geometric alternates ===== */
.alt{display:grid;gap:6vw;margin:10px 0 22px;align-items:center}
.alt.r{grid-template-columns:1.15fr 1fr}
.alt.l{grid-template-columns:1fr 1.15fr}
.alt h3{
  font-family:'Libertinus Serif',serif;font-weight:500;font-size:29px;
  color:var(--navy);margin-bottom:14px;
}
.alt p{color:var(--muted);font-size:15.5px;max-width:54ch;line-height:1.7}

/* ===== SVG geometric patterns (v1.1) =====
   These replace the generic CSS gradients. Pattern family decided:
   Arcs (primary), Wedge (bold accent), Grid (subtle structural).
   All scale to any aspect-ratio; no raster, no JS, dark or light base. */
.geo{
  aspect-ratio:4/3;position:relative;overflow:hidden;
  border-radius:var(--radius);
}
.geo svg{width:100%;height:100%;display:block}
.geo .cap{
  position:absolute;left:20px;bottom:16px;font-size:10.5px;
  letter-spacing:.22em;text-transform:uppercase;font-weight:600;
  z-index:2;
}
.geo.dark .cap{color:var(--ground)}
.geo.light .cap{color:var(--ink)}

@media(max-width:900px){
  .alt.r,.alt.l,.two,.team,.offices{grid-template-columns:1fr}
  .cards,.steps,.team-row{grid-template-columns:1fr}
  .nav{display:none}
}

/* ===== Cards ===== */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
.card{
  background:var(--card);border:1px solid var(--rule);border-radius:var(--radius);
  padding:34px 30px;position:relative;
  box-shadow:0 1px 2px rgba(21,20,25,.04);
  transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.card::before{
  content:"";position:absolute;top:26px;left:30px;width:38px;height:3px;
  border-radius:2px;background:var(--bronze);
}
.card:hover{
  transform:translateY(-2px);
  box-shadow:0 8px 24px rgba(21,20,25,.06);
  border-color:rgba(21,20,25,.18);
}
.card h4{
  font-family:'Libertinus Serif',serif;font-weight:500;font-size:21px;
  color:var(--navy);margin:18px 0 10px;
}
.card p{font-size:14.5px;color:var(--muted);line-height:1.65}
.card a{
  display:inline-block;margin-top:18px;color:var(--navy);font-size:12px;
  letter-spacing:.14em;text-transform:uppercase;font-weight:600;
  text-decoration:none;
}
.card a:hover{color:var(--bronze)}

/* ===== Publication rows ===== */
.pub{
  display:grid;grid-template-columns:96px 1fr auto;gap:26px;
  padding:28px 0;border-top:1px solid var(--rule);align-items:baseline;
  transition:padding .15s ease;
}
.pub:hover{padding-left:6px}
.pub .d{
  font-size:12px;color:var(--bronze);letter-spacing:.08em;font-weight:600;
}
.pub h4{
  font-family:'Libertinus Serif',serif;font-weight:500;font-size:19.5px;
  color:var(--ink);line-height:1.35;
}
.pub .j{
  font-size:13.5px;color:var(--muted);font-style:italic;margin-top:4px;
  font-family:'Libertinus Serif',serif;font-weight:300;
}
.pub a{
  font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--navy);text-decoration:none;font-weight:600;white-space:nowrap;
}
.pub-tag{
  display:inline-block;font-size:10.5px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--bronze);
  border:1px solid var(--bronze);padding:3px 10px;border-radius:999px;
  margin-left:10px;vertical-align:2px;font-weight:600;
}

/* ===== Quote block ===== */
.quote{
  background:var(--card);border:1px solid var(--rule);
  border-radius:var(--radius);padding:46px 50px;
  box-shadow:0 1px 2px rgba(21,20,25,.04);
}
.quote::before{
  content:"\201C";font-family:'Libertinus Serif',serif;font-size:64px;
  line-height:1;color:var(--bronze-soft);display:block;margin-bottom:6px;
}
.quote p{
  font-family:'Libertinus Serif',serif;font-style:italic;font-weight:300;
  font-size:24px;line-height:1.45;color:var(--navy);max-width:42ch;
}
.quote footer{
  margin-top:20px;font-size:12px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted);font-weight:600;
}

/* ===== Stats band (floating, dark anchor) ===== */
.stats{
  background:var(--navy-deep);color:var(--ground);
  border-radius:calc(var(--radius) + 6px);padding:64px 8%;
  margin:0 6vw;
}
.stats .grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:3vw;
  max-width:1240px;margin:0 auto;
}
.stat b{
  display:block;font-family:'Libertinus Serif',serif;font-weight:400;
  font-size:clamp(38px,4vw,46px);color:var(--bronze-soft);
  line-height:1.1;margin-bottom:10px;
}
.stat span{
  font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  opacity:.78;font-weight:500;
}
@media(max-width:900px){
  .stats{margin:0;padding:48px 6vw;border-radius:18px}
  .stats .grid{grid-template-columns:repeat(2,1fr);gap:32px}
}

/* ===== Team ===== */
.team{display:grid;grid-template-columns:repeat(2,1fr);gap:26px}
.person{
  display:grid;grid-template-columns:100px 1fr;gap:24px;
  background:var(--card);border:1px solid var(--rule);
  border-radius:var(--radius);padding:28px;
  box-shadow:0 1px 2px rgba(21,20,25,.04);
}
.mono-avatar{
  width:100px;height:100px;display:grid;place-items:center;
  font-family:'Libertinus Serif',serif;font-size:32px;color:var(--ground);
  border-radius:14px;flex-shrink:0;
}
.mono-avatar.a{background:var(--navy)}
.mono-avatar.b{background:var(--bronze)}
.mono-avatar.c{background:var(--ink)}
.person h4{
  font-family:'Libertinus Serif',serif;font-weight:500;font-size:22px;
  color:var(--navy);
}
.person .role{
  font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--bronze);margin:6px 0 10px;font-weight:600;
}
.person p{font-size:13.5px;color:var(--muted);line-height:1.6}
.person-meta{
  margin-top:14px;display:flex;gap:18px;flex-wrap:wrap;font-size:12px;
  color:var(--muted);border-top:1px solid var(--rule);padding-top:12px;
}
.person-meta span b{
  display:block;font-size:10.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--bronze);font-weight:600;margin-bottom:2px;
}

/* ===== Offices ===== */
.offices{display:grid;grid-template-columns:1fr 1fr;gap:26px}
.office{
  background:var(--card);border:1px solid var(--rule);border-radius:var(--radius);
  padding:40px 42px;
  box-shadow:0 1px 2px rgba(21,20,25,.04);
}
.office h3{
  font-family:'Libertinus Serif',serif;font-weight:500;font-size:26px;
  color:var(--navy);margin-bottom:14px;
}
.office address{
  font-style:normal;color:var(--muted);font-size:15px;line-height:1.9;
}
.office .tel{
  color:var(--navy);text-decoration:none;font-weight:600;font-size:14.5px;
  display:inline-block;margin-top:14px;
  border-bottom:1.5px solid var(--bronze);padding-bottom:3px;
}
.office .map-link{
  display:inline-block;margin-top:18px;margin-left:18px;
  font-size:12px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--bronze);text-decoration:none;font-weight:600;
}

/* ===== Process steps ===== */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.step{
  background:var(--card);border:1px solid var(--rule);border-radius:var(--radius);
  padding:30px 28px;
  box-shadow:0 1px 2px rgba(21,20,25,.04);
}
.step .n{
  font-family:'Libertinus Serif',serif;font-style:italic;color:var(--bronze);
  font-size:16px;font-weight:600;
}
.step h4{
  font-family:'Libertinus Serif',serif;font-weight:500;font-size:19px;
  color:var(--navy);margin:10px 0 8px;
}
.step p{font-size:13.5px;color:var(--muted);line-height:1.6}

/* ===== FAQ ===== */
.faq{border-top:1px solid var(--rule)}
details{
  border-bottom:1px solid var(--rule);
}
summary{
  cursor:pointer;padding:26px 0;
  font-family:'Libertinus Serif',serif;font-size:20px;color:var(--navy);
  list-style:none;display:flex;justify-content:space-between;
  align-items:baseline;transition:padding .15s ease;
}
summary:hover{padding-left:6px}
summary::-webkit-details-marker{display:none}
summary::after{
  content:"+";color:var(--bronze);font-size:24px;font-weight:300;
  transition:transform .2s ease;
}
details[open] summary::after{content:"\2013"}
details p{
  padding:0 0 26px;color:var(--muted);font-size:15px;max-width:64ch;
  line-height:1.7;
}

/* ===== Form ===== */
.form{
  background:var(--card);border:1px solid var(--rule);
  border-radius:calc(var(--radius) + 6px);padding:48px;max-width:660px;
  box-shadow:0 1px 2px rgba(21,20,25,.04);
}
.form h3{
  font-family:'Libertinus Serif',serif;font-weight:500;font-size:28px;
  color:var(--navy);margin-bottom:8px;
}
.form .sub{font-size:14px;color:var(--muted);margin-bottom:30px}
.field{margin-bottom:22px}
label{
  display:block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink);margin-bottom:8px;font-weight:600;
}
input,textarea,select{
  width:100%;padding:15px 16px;border:1px solid var(--rule);
  border-radius:12px;background:var(--ground);
  font-family:inherit;font-size:15.5px;color:var(--ink);
  transition:border-color .15s ease, outline-color .15s ease;
}
input:focus,textarea:focus,select:focus{
  outline:2px solid var(--navy);outline-offset:-1px;border-color:transparent;
}
textarea{resize:vertical;min-height:120px;font-family:inherit}
.two{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.form .note{font-size:12px;color:var(--muted);margin-top:18px;line-height:1.6}

/* ===== Data table ===== */
.table-card{
  background:var(--card);border:1px solid var(--rule);
  border-radius:var(--radius);overflow:hidden;
}
table{width:100%;border-collapse:collapse;font-size:14.5px}
th{
  font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--bronze);text-align:left;padding:16px 20px;
  border-bottom:2px solid var(--navy);font-weight:600;
}
td{
  padding:15px 20px;border-bottom:1px solid var(--rule);
  color:var(--muted);
}
tr:last-child td{border-bottom:none}
td:first-child{color:var(--ink);font-weight:500}

/* ===== Alert ===== */
.alert{
  border:1px solid var(--rule);border-left:4px solid var(--bronze);
  border-radius:12px;background:var(--card);padding:20px 24px;
  font-size:14px;color:var(--ink);display:flex;gap:14px;
  align-items:baseline;line-height:1.6;
}
.alert b{
  color:var(--bronze);font-size:11px;letter-spacing:.16em;
  text-transform:uppercase;white-space:nowrap;font-weight:600;
}

/* ===== Footer (dark anchor) ===== */
footer.site{
  background:var(--navy-deep);color:var(--ground);
  padding:80px 0 44px;margin-top:var(--gap);
  border-radius:calc(var(--radius) + 6px) calc(var(--radius) + 6px) 0 0;
}
footer.site .cols{
  display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:4vw;
}
footer.site .mark{
  font-family:'Libertinus Serif',serif;font-size:26px;
  letter-spacing:.04em;text-transform:uppercase;line-height:1;
}
footer.site .mark-sub{
  display:block;font-size:10px;letter-spacing:.28em;text-transform:uppercase;
  color:var(--bronze-soft);font-weight:600;margin-top:6px;
}
footer.site .tag{
  font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--bronze-soft);margin-top:14px;font-weight:600;
}
footer.site p{
  font-size:13.5px;opacity:.78;max-width:34ch;margin-top:14px;
  line-height:1.7;
}
footer.site h5{
  font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--bronze-soft);margin-bottom:14px;font-weight:600;
}
footer.site a{
  display:block;color:var(--ground);opacity:.85;text-decoration:none;
  font-size:14px;padding:5px 0;
}
footer.site a:hover{opacity:1;color:var(--bronze-soft)}
footer.site .legal{
  border-top:1px solid rgba(255,255,255,.12);margin-top:44px;
  padding-top:24px;display:flex;justify-content:space-between;
  font-size:12.5px;opacity:.65;
}
footer.site .legal a{display:inline;padding:0 0 0 14px;color:inherit;text-decoration:none}

/* ===== Page hero (sub-pages) ===== */
.page-hero{padding:88px 0 40px}
.page-hero .t-h1{max-width:18ch}
.page-hero .section-lead{margin-top:18px}

/* ===== Misc utility ===== */
.center{text-align:center}
.divider-soft{height:1px;background:var(--rule);margin:var(--gap) 0}
.row-split{display:grid;grid-template-columns:1fr 1fr;gap:6vw;align-items:end}

/* Focus-visible (v1.1 a11y) */
:focus-visible{
  outline:2px solid var(--navy);outline-offset:3px;border-radius:4px;
}
a:focus-visible,button:focus-visible{outline-offset:4px}

/* Mobile header */
@media(max-width:900px){
  .site-head .bar{padding:14px 6vw}
  .lang-switch{margin-left:0}
  .head-cta{padding:9px 16px;font-size:11px}
  footer.site .cols{grid-template-columns:1fr 1fr;gap:32px}
  footer.site{border-radius:18px 18px 0 0;padding:60px 0 32px}
  footer.site .legal{flex-direction:column;gap:8px}
}
@media(max-width:560px){
  .ed-num{grid-template-columns:48px 1fr auto;gap:18px}
  .pub{grid-template-columns:60px 1fr;gap:16px}
  .pub a{grid-column:1/-1;text-align:right;padding-top:4px}
  .two{grid-template-columns:1fr}
  .form{padding:32px 24px}
}
