/* =========================================================
   Self-hosted webfonts (woff2, latin + latin-ext subsets)
   Archivo Variable — display    IBM Plex Sans — body
   IBM Plex Mono — labels, data
   ========================================================= */

@font-face{
  font-family:"Archivo Variable";
  font-style:normal;
  font-display:swap;
  font-weight:100 900;
  font-stretch:62% 125%;
  src:url(../fonts/archivo-var-latin-ext.woff2) format("woff2-variations");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"Archivo Variable";
  font-style:normal;
  font-display:swap;
  font-weight:100 900;
  font-stretch:62% 125%;
  src:url(../fonts/archivo-var-latin.woff2) format("woff2-variations");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

@font-face{
  font-family:"IBM Plex Sans";
  font-style:normal;
  font-display:swap;
  font-weight:400;
  src:url(../fonts/plex-sans-400-latin-ext.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"IBM Plex Sans";
  font-style:normal;
  font-display:swap;
  font-weight:400;
  src:url(../fonts/plex-sans-400-latin.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"IBM Plex Sans";
  font-style:normal;
  font-display:swap;
  font-weight:600;
  src:url(../fonts/plex-sans-600-latin.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

@font-face{
  font-family:"IBM Plex Mono";
  font-style:normal;
  font-display:swap;
  font-weight:500;
  src:url(../fonts/plex-mono-500-latin.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"IBM Plex Mono";
  font-style:normal;
  font-display:swap;
  font-weight:600;
  src:url(../fonts/plex-mono-600-latin.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

/* =========================================================
   GanttWorks — ganttworks.com
   Palette taken directly from the logo: #C00000 / #002060
   ========================================================= */

:root{
  --navy:#002060;
  --navy-deep:#001642;
  --navy-soft:#12336f;
  --red:#C00000;
  --red-bright:#d81717;

  --paper:#f1f4f9;
  --white:#ffffff;
  --ink:#0c1730;
  --muted:#56668a;
  --rule:#ccd5e4;
  --rule-soft:#e2e8f2;

  --display:"Archivo Variable","Archivo","Helvetica Neue",Arial,sans-serif;
  --body:"IBM Plex Sans","Segoe UI",Arial,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Consolas,monospace;

  --wrap:1140px;
  --gutter:clamp(1.25rem,4vw,3rem);
  --pad-y:clamp(4rem,9vw,7.5rem);
}

*,*::before,*::after{box-sizing:border-box}

html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:84px}

body{
  margin:0;
  background:var(--white);
  color:var(--ink);
  font-family:var(--body);
  font-size:1.0625rem;
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
}

img{max-width:100%;height:auto;display:block}
a{color:inherit}
ul,ol{margin:0;padding:0;list-style:none}
h1,h2,h3{margin:0;font-family:var(--display);font-weight:700;line-height:1.02;letter-spacing:-.02em}

:focus-visible{outline:3px solid var(--red);outline-offset:3px}

.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gutter)}

.skip{
  position:absolute;left:-9999px;top:0;z-index:100;
  background:var(--navy);color:#fff;padding:.75rem 1.25rem;font-family:var(--mono);font-size:.8rem;
}
.skip:focus{left:0}

.ink-red{color:var(--red)}

/* ---------------- eyebrow ---------------- */
.eyebrow{
  margin:0 0 1.1rem;
  font-family:var(--mono);
  font-size:.72rem;
  font-weight:600;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--red);
}
.eyebrow--light{color:#ff8f8f}

/* ---------------- top bar ---------------- */
.topbar{
  position:sticky;top:0;z-index:50;
  background:rgba(255,255,255,.92);
  backdrop-filter:saturate(160%) blur(10px);
  border-bottom:1px solid var(--rule-soft);
}
.topbar__inner{display:flex;align-items:center;gap:1.5rem;min-height:68px}
.topbar__logo{display:block;flex:0 0 auto}
.topbar__logo img{width:158px}
.topbar__nav{margin-left:auto;display:flex;gap:1.75rem}
.topbar__nav a{
  font-family:var(--mono);font-size:.78rem;font-weight:500;letter-spacing:.04em;
  text-decoration:none;color:var(--navy);padding-block:.4rem;
  border-bottom:2px solid transparent;transition:border-color .18s ease,color .18s ease;
}
.topbar__nav a:hover{color:var(--red);border-bottom-color:var(--red)}

/* ---------------- buttons ---------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  padding:.95rem 1.6rem;
  font-family:var(--display);font-weight:600;font-size:.98rem;letter-spacing:.005em;
  text-decoration:none;border:2px solid transparent;border-radius:2px;
  transition:transform .15s ease,background-color .18s ease,color .18s ease,border-color .18s ease;
}
.btn:hover{transform:translateY(-2px)}
.btn--navy{background:var(--navy);color:#fff;border-color:var(--navy)}
.btn--navy:hover{background:var(--navy-soft);border-color:var(--navy-soft)}
.btn--red{background:var(--red);color:#fff;border-color:var(--red)}
.btn--red:hover{background:var(--red-bright);border-color:var(--red-bright)}
.btn--ghost{background:transparent;color:var(--navy);border-color:var(--rule)}
.btn--ghost:hover{border-color:var(--navy)}
.btn--sm{padding:.55rem 1rem;font-size:.85rem}
.btn--lg{padding:1.1rem 2.1rem;font-size:1.05rem}
.btn__mono{font-family:var(--mono);font-weight:600;font-size:.82rem}

/* ---------------- hero ---------------- */
.hero{padding-top:clamp(3.5rem,8vw,6rem);padding-bottom:clamp(3rem,7vw,5.5rem)}
.hero__title{
  max-width:16ch;text-wrap:balance;
  font-size:clamp(2.5rem,6.4vw,4.7rem);
  font-variation-settings:"wdth" 112;
  color:var(--navy);
}
.hero__body{display:grid;gap:clamp(2.5rem,5vw,4rem);margin-top:1.8rem}
.hero__lead{
  max-width:50ch;margin:0;
  font-size:clamp(1.05rem,1.5vw,1.2rem);color:var(--muted);
}
.hero__actions{display:flex;flex-wrap:wrap;gap:.85rem;margin-top:2.2rem}

.hero__index{border-top:1px solid var(--rule)}
.hero__index a{
  display:flex;align-items:baseline;gap:1rem;
  padding:.95rem .2rem;border-bottom:1px solid var(--rule);
  text-decoration:none;color:var(--navy);
  font-family:var(--display);font-weight:600;font-size:1.02rem;
  font-variation-settings:"wdth" 104;
  transition:color .18s ease,padding-left .18s ease;
}
.hero__index a:hover{color:var(--red);padding-left:.6rem}
.hero__index .n{
  flex:0 0 auto;font-family:var(--mono);font-size:.72rem;font-weight:600;
  letter-spacing:.1em;color:var(--red);
}

/* ---------------- signature: the gantt ---------------- */
.gantt{
  margin-top:clamp(3rem,6vw,4.5rem);
  background:var(--paper);
  border:1px solid var(--rule);
  border-top:4px solid var(--navy);
  border-radius:3px;
  padding:clamp(1.5rem,3.5vw,2.6rem);
}
.gantt__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem 1.25rem}
.gantt__title{font-size:clamp(1.25rem,2.4vw,1.6rem);font-variation-settings:"wdth" 108;color:var(--navy)}
.gantt__note{margin:0;font-size:.9rem;color:var(--muted)}

.gantt__scale{margin:1.9rem 0 .55rem}
.gantt__scale > span:empty{display:none}
.gantt__ticks{
  grid-area:track;
  display:grid;grid-template-columns:repeat(3,1fr);
  font-family:var(--mono);font-size:.68rem;font-weight:500;letter-spacing:.09em;
  text-transform:uppercase;color:var(--muted);
}
.gantt__lanes{display:grid;gap:1.15rem}

.lane{
  display:grid;
  grid-template-columns:1fr auto;
  grid-template-areas:"name weeks" "track track";
  gap:.4rem .9rem;
  align-items:center;
}
.lane__name{grid-area:name;
  font-family:var(--display);font-weight:600;font-size:.98rem;
  font-variation-settings:"wdth" 104;color:var(--navy);
}
.lane__weeks{
  grid-area:weeks;justify-self:end;
  font-family:var(--mono);font-size:.72rem;font-weight:500;color:var(--muted);
}
.lane__track{
  grid-area:track;
  position:relative;height:30px;
  background-image:linear-gradient(90deg,var(--rule) 1px,transparent 1px);
  background-size:33.3333% 100%;
  border-right:1px solid var(--rule);
}
.lane__bar{
  position:absolute;top:5px;bottom:5px;
  left:calc(var(--s) * 1%);
  width:calc(var(--w) * 1%);
  border-radius:2px;
  transform:scaleX(0);transform-origin:left center;
  transition:transform .62s cubic-bezier(.22,.7,.28,1);
}
.lane__bar--red{background:var(--red)}
.lane__bar--navy{background:var(--navy)}
.lane__bar--split{background:linear-gradient(90deg,var(--red) 0 52%,var(--navy) 52% 100%)}

.lane__diamond{
  position:absolute;top:50%;
  left:calc((var(--s) + var(--w)) * 1%);
  width:0;height:0;
  opacity:0;transition:opacity .3s ease .45s;
}
.lane__diamond::before{
  content:"";position:absolute;left:-8px;top:-8px;width:16px;height:16px;
  background:var(--navy);border:3px solid var(--paper);transform:rotate(45deg);
}
.lane__flag{
  position:absolute;left:16px;top:-.72em;
  font-family:var(--mono);font-style:normal;font-size:.68rem;font-weight:600;
  letter-spacing:.04em;color:var(--navy);white-space:nowrap;
}
.lane__diamond--end .lane__flag{left:auto;right:18px;color:#fff}

.gantt.is-drawn .lane__bar{transform:scaleX(1)}
.gantt.is-drawn .lane__diamond{opacity:1}
.gantt.is-drawn .lane:nth-child(1) .lane__bar{transition-delay:.05s}
.gantt.is-drawn .lane:nth-child(2) .lane__bar{transition-delay:.17s}
.gantt.is-drawn .lane:nth-child(3) .lane__bar{transition-delay:.29s}
.gantt.is-drawn .lane:nth-child(4) .lane__bar{transition-delay:.41s}
.gantt.is-drawn .lane:nth-child(5) .lane__bar{transition-delay:.53s}
.gantt.is-drawn .lane:nth-child(2) .lane__diamond{transition-delay:.72s}
.gantt.is-drawn .lane:nth-child(5) .lane__diamond{transition-delay:1.08s}

.gantt__legend{
  display:flex;align-items:center;gap:.7rem;
  margin:1.9rem 0 0;padding-top:1.35rem;border-top:1px solid var(--rule);
  font-size:.86rem;color:var(--muted);
}
.legend__diamond{
  flex:0 0 auto;width:11px;height:11px;background:var(--navy);transform:rotate(45deg);
}

/* ---------------- generic sections ---------------- */
.section{padding-block:var(--pad-y)}
.section--paper{background:var(--paper);border-block:1px solid var(--rule-soft)}
.section__title{
  max-width:30ch;text-wrap:balance;
  font-size:clamp(1.9rem,4.2vw,3rem);
  font-variation-settings:"wdth" 110;
  color:var(--navy);
}

/* ---------------- areas of practice ---------------- */
.areas{display:grid;gap:clamp(2.5rem,4vw,3rem);margin-top:clamp(2.5rem,5vw,3.75rem)}
.area{display:flex;flex-direction:column;padding-top:.25rem}
.area__bar{display:block;height:9px;border-radius:2px;margin-bottom:1.4rem}
.area__bar--red{background:var(--red)}
.area__bar--split{background:linear-gradient(90deg,var(--red) 0 46%,var(--navy) 46% 100%)}
.area__bar--navy{background:var(--navy)}
.area__index{
  margin:0 0 .5rem;font-family:var(--mono);font-size:.72rem;font-weight:600;
  letter-spacing:.14em;color:var(--muted);
}
.area__title{font-size:clamp(1.35rem,2.3vw,1.7rem);font-variation-settings:"wdth" 106;color:var(--navy)}
.area__lead{margin:.85rem 0 1.6rem;color:var(--muted)}

.ticks{display:grid;gap:.6rem;font-size:.95rem}
.ticks li{position:relative;padding-left:1.4rem}
.ticks li::before{
  content:"";position:absolute;left:0;top:.62em;
  width:8px;height:8px;background:var(--red);transform:rotate(45deg);
}

/* ---------------- approach ---------------- */
.rules{display:grid;gap:2.25rem;margin-top:clamp(2.5rem,5vw,3.5rem)}
.rule{padding-left:1.5rem;border-left:3px solid var(--red)}
.rule__title{font-size:1.15rem;font-variation-settings:"wdth" 104;color:var(--navy);margin-bottom:.55rem}
.rule p{margin:0;color:var(--muted)}

/* ---------------- contact ---------------- */
.contact{background:var(--navy);color:#fff;padding-block:var(--pad-y)}
.contact__title{
  max-width:20ch;text-wrap:balance;font-size:clamp(1.9rem,4.4vw,3.1rem);
  font-variation-settings:"wdth" 110;color:#fff;
}
.contact__lead{max-width:48ch;margin:1.3rem 0 0;color:#b9c6e0}

.contact__head{display:grid;gap:2.25rem}
.channels{
  display:grid;gap:1.6rem;margin:clamp(2.5rem,5vw,3.5rem) 0 0;
  border-top:1px solid rgba(255,255,255,.22);padding-top:2rem;
}
.channels__label{
  display:block;font-family:var(--mono);font-size:.7rem;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;color:#8fa4cc;margin-bottom:.4rem;
}
.channels__value{
  font-family:var(--display);font-weight:600;
  font-size:clamp(1.1rem,2.2vw,1.5rem);font-variation-settings:"wdth" 104;
  color:#fff;text-decoration:none;
  border-bottom:2px solid rgba(255,255,255,.28);padding-bottom:.15rem;
  transition:border-color .18s ease,color .18s ease;
  overflow-wrap:anywhere;
}
.channels__value:hover{color:#ffd0d0;border-bottom-color:var(--red-bright)}

/* ---------------- footer ---------------- */
.foot{background:var(--navy-deep);color:#8fa4cc;padding-block:2.75rem}
.foot__inner{display:grid;gap:.9rem}
.foot__mark{width:74px;opacity:.95}
.foot__legal{margin:0;font-family:var(--mono);font-size:.72rem;letter-spacing:.04em}

/* ---------------- responsive ---------------- */
@media (max-width:760px){
  .topbar__nav{display:none}
  .topbar__inner{gap:1rem}
  .topbar__inner .btn{margin-left:auto}
  .topbar__logo img{width:132px}
  .btn{width:auto}
  .hero__actions .btn{flex:1 1 auto}
}

@media (min-width:900px){
  .contact__head{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:3.5rem}
  .hero__body{grid-template-columns:minmax(0,1.05fr) minmax(0,.7fr);align-items:start;gap:clamp(2.5rem,6vw,5rem)}
}

@media (min-width:761px){
  .gantt__lanes{gap:.55rem}
  .lane{
    grid-template-columns:minmax(9rem,13rem) 1fr 4rem;
    grid-template-areas:"name track weeks";
    gap:1.25rem;
  }
  .rules{grid-template-columns:repeat(3,1fr);gap:2.5rem}
}

@media (min-width:940px){
  .areas{grid-template-columns:repeat(3,1fr)}
  .area__title{min-height:2.1em}
  .channels{grid-template-columns:repeat(3,1fr);gap:2rem}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;transition-delay:0ms!important;
  }
  .lane__bar{transform:scaleX(1)}
  .lane__diamond{opacity:1}
}
