.ly-hero{position:relative;overflow:hidden;background:var(--ink-anchor, #0B0D1F);padding:132px 24px 64px}.ly-hero:before{content:"";position:absolute;inset:0;background:url(/assets/brand/assurance-field-dark.svg) center / cover no-repeat;opacity:.45;pointer-events:none}.ly-hero__inner{position:relative;z-index:1;max-width:760px;margin:0 auto}.ly-hero__eyebrow{display:inline-flex;align-items:center;gap:9px;font:500 11px var(--font-mono);letter-spacing:.17em;text-transform:uppercase;color:#ffffff9e}.ly-hero__eyebrow svg{width:15px;height:15px;color:var(--brand-lime)}.ly-hero h1{font:600 clamp(30px,4.2vw,46px)/1.1 var(--font-display);letter-spacing:-.025em;color:#fff;margin:14px 0 12px;text-wrap:balance}.ly-hero__lede{font:400 18px/1.6 var(--font-sans);color:#ffffffc2;margin:0;max-width:54ch}.ly-body{background:#fff;padding:0 24px 88px}.ly-body__inner{max-width:var(--max);margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:64px;align-items:start;padding-top:64px}.ly-main{min-width:0;max-width:66ch}.ly-block+.ly-block{margin-top:44px}.ly-block h2{font:600 22px/1.25 var(--font-display);letter-spacing:-.012em;color:var(--ink-900);margin:0 0 14px}.ly-block p{font:400 16.5px/1.72 var(--font-sans);color:var(--ink-600);margin:0 0 14px}.ly-block p:last-child{margin-bottom:0}.ly-risk{display:flex;gap:13px;align-items:flex-start;margin-top:18px;padding:16px 18px;background:#fdf6f5;border:1px solid #EFD9D5;border-left:3px solid #C0392B;border-radius:12px}.ly-risk svg{width:19px;height:19px;color:#c0392b;flex-shrink:0;margin-top:2px}.ly-risk strong{display:block;font:600 13.5px var(--font-sans);color:#8e2c21;margin-bottom:3px}.ly-risk p{font:400 15px/1.6 var(--font-sans);color:#7a3b33;margin:0}.ly-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.ly-list li{display:flex;gap:11px;align-items:flex-start;font:400 16px/1.6 var(--font-sans);color:var(--ink-700)}.ly-list svg{width:18px;height:18px;color:var(--brand-indigo);flex-shrink:0;margin-top:3px}.ly-jargon{margin:0}.ly-jargon__row{padding:13px 0;border-top:1px solid var(--border-subtle)}.ly-jargon__row:first-child{border-top:0;padding-top:0}.ly-jargon dt{font:500 12.5px var(--font-mono);letter-spacing:.06em;color:var(--brand-indigo);margin-bottom:4px}.ly-jargon dd{font:400 15.5px/1.6 var(--font-sans);color:var(--ink-600);margin:0}.ly-aside{position:sticky;top:96px;display:flex;flex-direction:column;gap:16px}.ly-card{background:var(--bg);border:1px solid var(--border-subtle);border-radius:16px;padding:22px 20px}.ly-card__lbl{display:block;font:500 10.5px var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-500);margin-bottom:12px}.ly-nav{list-style:none;padding:0;margin:0 0 14px;display:flex;flex-direction:column}.ly-nav li{border-top:1px solid var(--border-subtle)}.ly-nav li:first-child{border-top:0}.ly-nav a,.ly-nav span{display:flex;gap:10px;align-items:baseline;padding:10px 2px;font:500 14.5px var(--font-sans);text-decoration:none;color:var(--ink-700);transition:color .16s}.ly-nav a:hover{color:var(--brand-indigo)}.ly-nav b{font:500 11.5px var(--font-mono);color:var(--ink-400);min-width:20px}.ly-nav .is-current span{color:var(--brand-indigo);font-weight:700}.ly-nav .is-current b{color:var(--brand-indigo)}.ly-card__back{display:inline-flex;align-items:center;gap:7px;font:500 13.5px var(--font-sans);color:var(--ink-500);text-decoration:none;padding-top:12px;border-top:1px solid var(--border-subtle);width:100%}.ly-card__back:hover{color:var(--brand-indigo)}.ly-card__back svg{width:15px;height:15px}.ly-help{background:var(--ink-anchor, #0B0D1F);border-radius:16px;padding:24px 22px}.ly-help h3{font:600 17px/1.3 var(--font-display);color:#fff;margin:0 0 8px}.ly-help p{font:400 14px/1.6 var(--font-sans);color:#ffffffb3;margin:0 0 16px}.ly-help .btn{width:100%;justify-content:center}.ly-help__call{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:12px;font:600 14px var(--font-sans);color:#ffffffd9;text-decoration:none;min-height:44px}.ly-help__call svg{width:15px;height:15px}.ly-help__call:hover{color:#fff}@media(max-width:1000px){.ly-body__inner{grid-template-columns:1fr;gap:40px}.ly-aside{position:static}}@media(max-width:620px){.ly-hero{padding:104px 20px 48px}.ly-body{padding:0 20px 64px}.ly-body__inner{padding-top:44px}.ly-block h2{font-size:20px}.ly-block p,.ly-list li{font-size:16px}}.mit-inc,.cs-layers,.sd-features,.ab-story,.ab-team,.ct-grid,.sv-grid{background:#dcdfe9!important}.ab-values,.cs-faq{background:#d3d7e2!important}.mit-comp,.cs-process{background:var(--ink-anchor, #0B0D1F)!important}.sv-card,.sv-q,.mit-panel,.mit-card,.mit-factor,.cs-step,.cs-q,.cs-diff-card,.cs-stack__layer,.ab-val,.ab-mem,.ab-partner,.ct-form,.ct-strip__card,.as-feature,.as-feat,.as-service,.as-spec{background:#ffffff9e!important;border:1px solid rgba(11,13,31,.14)!important;box-shadow:inset 0 1.5px #fffffff2,0 1px 2px #0b0d1f1a,0 8px 20px -12px #0b0d1f2e,0 30px 60px -28px #0b0d1f4d!important}.sv-card,.mit-panel,.mit-card,.cs-step,.cs-diff-card,.ab-mem,.ct-form,.as-feature,.as-service{border-radius:18px!important}.mit-comp .mit-panel:not(.mit-panel--us){background:#ffffff0d!important;border:1px solid rgba(255,255,255,.14)!important;box-shadow:none!important}main .eyebrow,.sv-card__tag,.as-svcindex__tag{font-family:var(--font-mono)!important;letter-spacing:.16em!important;text-transform:uppercase!important}main h2{letter-spacing:-.02em}.ly-hero__wrap{max-width:var(--max);margin:0 auto;width:100%;display:grid;grid-template-columns:1.25fr .75fr;gap:56px;align-items:center}.ly-hero__art{position:relative;z-index:1;display:flex;align-items:center;justify-content:center}.ly-hero__art{min-height:210px}.ly-hero__art:before{content:"";position:absolute;inset:-40% -30%;background:url(/assets/brand/art-cyber.svg) center/cover no-repeat;opacity:.5;pointer-events:none;-webkit-mask-image:radial-gradient(ellipse at 65% 50%,#000 35%,transparent 72%);mask-image:radial-gradient(ellipse at 65% 50%,#000 35%,transparent 72%)}.ly-hero__artico{position:absolute;width:74px;height:74px;border-radius:20px;display:flex;align-items:center;justify-content:center;background:#ffffff0f;box-shadow:inset 0 0 0 1px #fff3,0 0 34px -6px #8dc63f73}.ly-hero__artico svg{width:34px;height:34px;color:var(--brand-lime);stroke-width:1.6}@media(max-width:900px){.ly-hero__art{display:none}}


/* ==========================================================================
   31 Aug 2026 — Luke: "the white on the layer pages is too bright next to
   the rest of the site." Appended as readable source; the sheet above is
   minified build output.

   The six layer pages were the last place still painting a full-width #fff
   plane (.ly-body). Every other light band on the site — /services (.sv-grid),
   /cyber-security (.cs-layers, .cs-faq), /about (.ab-story, .ab-team) — sits
   on the site field #DCDFE9 and floats CARD MATERIAL on top of it:
   rgba(255,255,255,.62) with a 14%-ink hairline and the two-layer ink shadow.
   That is exactly what is adopted here, so a layer page now reads as the same
   material as the page that links to it.

   Contrast, measured against the composited card face (#F2F2F6 over the
   field): body copy --ink-600 #454A66 = 8.1:1, --ink-700 #2A2E4A = 11.9:1,
   the mono labels at --ink-500 #5F6478 = 6.4:1, and the indigo jargon terms
   #2E3192 = 9.4:1. All well past AA, and the card/field separation is carried
   by the hairline and the shadow rather than by brightness alone.
   ========================================================================== */

.ly-body { background: #DCDFE9; }

/* The reading column becomes a card on the field instead of raw text on a
   white plane. The measure is preserved: the 66ch is now measured inside the
   padding rather than across it. */
.ly-main {
  max-width: calc(66ch + 80px);
  background: rgba(255,255,255,.62);
  border: 1px solid rgba(11,13,31,.14);
  border-radius: 18px;
  box-shadow: inset 0 1.5px rgba(255,255,255,.95),
              0 1px 2px rgba(11,13,31,.10),
              0 8px 20px -12px rgba(11,13,31,.18),
              0 30px 60px -28px rgba(11,13,31,.30);
  padding: 36px 40px 40px;
}

/* The aside was var(--bg) #F3F5F9 — a near-white that only read as a card
   because the plane behind it was pure white. On the field it needs the same
   material as everything else. */
.ly-card {
  background: rgba(255,255,255,.62);
  border: 1px solid rgba(11,13,31,.14);
  border-radius: 18px;
  box-shadow: inset 0 1.5px rgba(255,255,255,.95),
              0 1px 2px rgba(11,13,31,.10),
              0 8px 20px -12px rgba(11,13,31,.18),
              0 30px 60px -28px rgba(11,13,31,.30);
}

/* .ly-help stays ink and .ly-risk stays the warm alert wash — both are
   semantic, not chrome, and both still sit inside the card so they keep
   their separation. The risk callout only needs its edge firmed up now that
   it is one step further from white. */
.ly-risk { border-color: #E7CDC8; }

@media (max-width: 1000px) {
  .ly-main { max-width: 100%; }
}
@media (max-width: 620px) {
  .ly-main { padding: 26px 22px 30px; border-radius: 14px; }
}
