/* V2 · Clean editorial refresh, 28 October 2026.
   Loaded after the original system so v1 remains independently recoverable. */
:root {
  --bg: #ffffff;
  --bg-2: #f7f9fb;
  --card-2: #f5f7fa;
  --line: #e7ebef;
  --line-2: #dce3e9;
  --text: #152737;
  --muted: #4b5d6c;
  --dim: #596b7a;
  --r: 14px;
  --r-sm: 8px;
  --shadow: none;
  --shadow-lg: 0 16px 48px -32px #253f5850;
  --sec: clamp(76px, 8vw, 112px);
}
.nav { background: #ffffffed; border-bottom-color: var(--line); backdrop-filter: blur(16px); }
.nav.is-scrolled { background: #ffffffed; }
.nav__in { height: 76px; }
.nav__links > a, .nav__drop > button { border-radius: 8px; }
.nav__logo img { width: 134px; }
.btn { border-radius: 8px; height: 46px; box-shadow: none; }
.btn--sm { height: 38px; }
.btn--dark { background: var(--blue-ink); box-shadow: none; }
.btn--dark:hover { background: #174f80; }
.btn--ghost { background: transparent; }
.tag { padding: 7px 12px; height: auto; min-height: 30px; max-width: 100%; border-radius: 999px; background: var(--cs, var(--blue-soft)); color: var(--c, var(--blue-ink)); font-size: 12px; line-height: 1.5; font-weight: 600; letter-spacing: .065em; text-transform: uppercase; }
.tag .ic { width: 16px; height: 16px; }
.glow { opacity: .24; }
.grid-bg { opacity: .18; }
/* Quiet entrances: long headings should arrive together, without a word cascade. */
.js .rv { transition-duration: 350ms; transition-delay: 0ms; }
.js .rvw .w { transition-duration: 400ms; transition-delay: 0ms; }
.hero { padding-top: 144px; padding-bottom: 64px; background: linear-gradient(180deg, #f8fbfe, #fff 85%); }
.hero__h { max-width: 29ch; font-weight: 500; line-height: 1.14; }
.hero__h .soft { color: var(--blue-ink); }
.hero__p { max-width: 63ch; line-height: 1.7; }
.chip { box-shadow: none; border: 1px solid var(--line-2); background: #fff; }
.chip b { border-radius: 999px; }
.stage { margin-top: 52px; }
.flow { box-shadow: none; border: 1px solid var(--line-2); border-radius: 14px; background: #fff; }
.flow__bar { background: #f8fafc; }
.node, .hub { box-shadow: none; border: 1px solid var(--line-2); }
.node { border-radius: 8px; }
.hub { border-radius: 12px; }
.flow__note { color: var(--muted); }
.logos { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: #fff; }
.logos__label { font-size: 12px; letter-spacing: .08em; text-transform: uppercase; }
.head { text-align: left; align-items: flex-start; }
.head .h2 { max-width: 25ch; }
.head .lede { max-width: 68ch; text-wrap: pretty; }
.head.head--center { align-items: center; text-align: center; }
.head.head--center .lede { text-wrap: balance; }
.h2 { font-size: clamp(30px, 3.3vw, 44px); font-weight: 500; line-height: 1.16; letter-spacing: -.035em; }
.h3 { font-weight: 500; }
.head--row { align-items: flex-end; }
.head--row > div { flex: 1; }
.head--row > .lede { flex: 1; }
.card { border: 1px solid var(--line); box-shadow: none; padding: 28px; border-radius: 12px; }
.card::before { display: none; }
.card:hover { box-shadow: none; border-color: #b8ccdc; }
a.card:hover { transform: translateY(-2px); }
.tile-ic { border-radius: 9px; background: #edf4fa; color: var(--blue-ink); }
.t-orange .tile-ic, .tile-ic.t-orange { background: var(--orange-soft); color: var(--orange-ink); }
.cap { border-radius: 10px; box-shadow: none; border: 1px solid var(--line); padding: 22px; }
.cap h3 { align-items: flex-start; line-height: 1.45; }
.cap h3 .tile-ic { margin-top: -3px; }
.cap p { margin-top: 12px; }
.stats { gap: 0; }
.stat { padding: 12px 28px; border-radius: 0; box-shadow: none; background: transparent; }
.stat + .stat { border-left: 1px solid var(--line-2); }
.stat b { font-weight: 500; color: var(--blue-ink); }
.stat__bar { height: 2px; width: 28px; background: var(--orange); }
.suite .card { background: #fff; }
.suite .fam__vis { margin-block: 28px 8px; }
.plogo { animation: none; }
.plogo__t, .logo-tile, .phs__logo { box-shadow: none; background: #edf4fa; border-radius: 10px; }
.plogo__t { width: 48px; height: 48px; }
.plogo__t .glyph { width: 29px; height: 29px; }
.plogo__n { font-size: 11px; }
.suite .card h3 { font-size: 20px; }
.pil__tab { border-radius: 10px; box-shadow: inset 0 0 0 1px var(--line); }
.pil__tab.is-on { box-shadow: inset 0 -2px var(--blue-ink), inset 0 0 0 1px var(--line); }
.pil__tab em .ic { width: 20px; height: 20px; }
.pil__panel { border-radius: 12px; box-shadow: none; border: 1px solid var(--line); }
.pil__ic { border-radius: 10px; box-shadow: none; }
.ctry { border-radius: 10px; box-shadow: none; border: 1px solid var(--line); }
.ctry:hover { box-shadow: none; border-color: #b8ccdc; }
.vmark, .vmark--sm { box-shadow: none; animation: none; }
.vt { box-shadow: none; }
.page-hero { background: linear-gradient(180deg, #f4f8fc, #fff); padding-top: 138px; }
.page-hero__h { font-size: clamp(36px, 4.3vw, 58px); font-weight: 500; line-height: 1.12; }
.page-hero--split .page-hero__h { max-width: 18ch; }
.phs__logo { width: 52px; height: 52px; margin-bottom: 22px; }
.phs__logo .glyph { width: 32px; height: 32px; }
.facts { border-radius: 10px; box-shadow: none; border: 1px solid var(--line); }
.original-art { width: 100%; max-width: 470px; margin-inline: auto; }
.original-art img { width: 100%; height: auto; aspect-ratio: 1; object-fit: contain; }
.aw, .office, .lead, .person, .cform { box-shadow: none; }
.aw__logo { background: var(--bg-2); }
.shot { box-shadow: none; border: 1px solid var(--line); border-radius: 12px; }
.final { background: #edf4fa; }
.final .glow { display: none; }
.final__h { font-size: clamp(32px, 4vw, 50px); font-weight: 500; line-height: 1.15; max-width: 24ch; }
.foot { background: #fff; }
.mega { border-radius: 12px; }
.mega__grp a:hover .glyph { transform: none; }
.news .card { padding-top: 0; }
.news__visual { height: 148px; flex: none; display: grid; place-items: center; margin: 0 -26px 24px; padding: 28px; background: var(--cs, var(--blue-soft)); border-bottom: 1px solid var(--line); }
.news__visual img { width: auto; height: auto; max-width: min(190px, 100%); max-height: 72px; object-fit: contain; }
/* All small labels use the same fully rounded pill silhouette. */
.chip, .chip b, .tag, .chips span, .chips a, .flag,
.fpill, .fpill span, .aw__win, .aw__note, .aw__prod,
.vt__soon, .flow__live, .regions > span { border-radius: 999px; }
/* V3: shared product directory. Compact rows replace the sparse orbital map. */
.map-section .head { margin-bottom: 28px; }
.map-section .head .h2, .over--map .h2 { max-width: 100%; }
.over--map { display: block; }
.over--map > .prose { margin-top: 24px; display: grid; grid-template-columns: 1fr 1fr; gap: 18px 40px; }
.over--map .prose p { margin: 0; max-width: none; }
.over--map .vmap__lead { grid-column: 1 / -1; }
.map-section .vmap-wrap { margin-top: 28px; }
.vmap { max-width: none; grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 12px; }
.vmap__wires, .vmap__ring { display: none; }
.vmap__core { grid-column: 1 / -1; grid-row: auto; order: -1; flex-direction: row; justify-content: flex-start; gap: 16px; padding: 0 0 20px; margin-bottom: 8px; border-radius: 0; border-bottom: 1px solid var(--line-2); text-align: left; }
.vmap__core .vmark { width: 48px; border-radius: 11px; }
.vmap__name { font-size: 20px; }
.vmap__hint { margin-left: auto; min-height: 40px; max-width: 260px; text-align: right; }
.vt { grid-column: span 2; grid-row: auto; aspect-ratio: auto; min-height: 128px; flex-direction: column; align-items: flex-start; justify-content: flex-start; gap: 12px; padding: 18px; border-radius: 10px; font-size: 14px; line-height: 1.4; }
.vt:nth-last-child(-n+2) { grid-column: span 4; }
.vt__ic { flex: none; width: 34px; height: 34px; margin-bottom: 0; }
.vt__t { padding-right: 0; }
.vt__soon { top: 7px; right: 8px; font-size: 9px; padding: 1px 6px; }
.vt__go { display: none; }
.vt:hover, .vt:focus-visible { --ty: -2px; }
.vmap.is-hover .vt:not(:hover):not(:focus-visible) { opacity: 1; filter: none; }
/* Landing page retains the original connected block diagram by request. */
@media (min-width: 821px) {
  body[data-page="home"] .vmap { max-width: 1040px; grid-template-columns: repeat(6, minmax(0,1fr)); gap: clamp(8px,1.3vw,14px); }
  body[data-page="home"] .vmap__wires, body[data-page="home"] .vmap__ring { display: block; }
  body[data-page="home"] .vmap__core { grid-column: 3 / 5; grid-row: 2 / 4; order: 0; flex-direction: column; justify-content: center; gap: 10px; padding: 18px; margin: 0; border: 0; border-radius: 22px; text-align: center; }
  body[data-page="home"] .vmap__core .vmark { width: 88px; border-radius: 18px; }
  body[data-page="home"] .vmap__hint { margin: 0; text-align: center; }
  body[data-page="home"] .vt { grid-column: var(--c); grid-row: var(--r); aspect-ratio: 1; min-height: 0; padding: clamp(10px,1.3vw,16px); gap: 12px; font-size: clamp(12.5px,1.25vw,14.5px); line-height: 1.3; }
  body[data-page="home"] .vt__ic { margin-bottom: auto; }
}
@media (max-width: 1100px) and (min-width: 821px) {
  .vt { gap: 10px; padding: 14px; font-size: 13px; }
}
@media (max-width: 820px) {
  .vmap { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .vt, .vt:nth-last-child(-n+2) { grid-column: auto; min-height: 112px; }
  .vmap__core { grid-column: 1 / -1; }
  .over--map > .prose { grid-template-columns: 1fr; gap: 16px; }
}
@media (max-width: 480px) {
  .vt { flex-direction: column; align-items: flex-start; gap: 10px; padding: 16px; font-size: 13px; }
  .vmap__core { flex-wrap: wrap; gap: 12px; }
  .vmap__hint { max-width: none; width: 100%; margin-left: 0; text-align: left; flex-direction: row; gap: 10px; min-height: 0; font-size: 12px; }
  .vmap__hint b { font-size: 12px; }
}
@media (max-width: 860px) {
  .head--row { align-items: flex-start; }
  .stat { padding: 20px; }
  .stat:nth-child(3) { border-left: 0; }
  .stat:nth-child(n+3) { border-top: 1px solid var(--line); }
}
@media (max-width: 600px) {
  .hero { padding-top: 120px; }
  .hero__h { font-size: 33px; max-width: 21ch; }
  .hero__p { font-size: 16px; }
  .stage { margin-top: 36px; }
  .page-hero { padding-top: 116px; }
  .page-hero__h { font-size: 38px; }
  .card { padding: 22px; }
  .stat { padding: 20px 14px; }
  .head--row > .lede { flex: auto; }
  .head--row > div { flex: auto; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; scroll-behavior: auto !important; }
}
