/* UTEK — site stylesheet
   Palette from the industrial reference: deep blue-green, soft green accent,
   light neutral sections. One committed look; the page paints every colour. */

/* ---------------------------------------------------------------- fonts */
@font-face { font-family: "Albert Sans"; font-style: normal; font-weight: 400; font-display: swap; src: url(../fonts/albert-sans-latin-400-normal.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: "Albert Sans"; font-style: normal; font-weight: 400; font-display: swap; src: url(../fonts/albert-sans-latin-ext-400-normal.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: "Albert Sans"; font-style: normal; font-weight: 500; font-display: swap; src: url(../fonts/albert-sans-latin-500-normal.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: "Albert Sans"; font-style: normal; font-weight: 500; font-display: swap; src: url(../fonts/albert-sans-latin-ext-500-normal.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: "Albert Sans"; font-style: normal; font-weight: 600; font-display: swap; src: url(../fonts/albert-sans-latin-600-normal.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: "Albert Sans"; font-style: normal; font-weight: 600; font-display: swap; src: url(../fonts/albert-sans-latin-ext-600-normal.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-weight: 400; font-display: swap; src: url(../fonts/ibm-plex-sans-latin-400-normal.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-weight: 400; font-display: swap; src: url(../fonts/ibm-plex-sans-latin-ext-400-normal.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-weight: 500; font-display: swap; src: url(../fonts/ibm-plex-sans-latin-500-normal.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-weight: 500; font-display: swap; src: url(../fonts/ibm-plex-sans-latin-ext-500-normal.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-weight: 600; font-display: swap; src: url(../fonts/ibm-plex-sans-latin-600-normal.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-weight: 600; font-display: swap; src: url(../fonts/ibm-plex-sans-latin-ext-600-normal.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; }

/* ---------------------------------------------------------------- tokens */
:root {
  color-scheme: light;
  --ink: #0F262B;          /* deep blue-green: hero overlay, dark sections, text */
  --ink-2: #0A1B1F;        /* footer */
  --ink-soft: #1B3C42;     /* hover on dark */
  --moss: #44655D;         /* secondary dark section */
  --green: #71A976;        /* accent: arrow disc, markers */
  --green-deep: #3D7446;   /* accent text on light (AA) */
  --mint: #D6ECDD;         /* hover, light accent */
  --mint-pale: #E8F3EB;
  --paper: #F3F6F4;        /* light section, green-biased neutral */
  --white: #FFFFFF;
  --text: #0F262B;
  --muted: #4B5D5B;
  --line: #D6DFDB;
  --line-strong: #B5C3BE;
  --on-dark: #FFFFFF;
  --on-dark-muted: rgba(255, 255, 255, 0.78);
  --line-dark: rgba(255, 255, 255, 0.16);
  --warn-fg: #8A5300;
  --warn-bg: #FBF0DC;
  --ok-fg: #2F7A45;
  --error: #B42318;
  --error-bg: #FDF1EF;

  --f-display: "Albert Sans", "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --f-body: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --w-display: 400;
  --w-heading: 500;
  --lh-body: 1.6;
  --ls-display: -0.012em;

  --gutter: clamp(20px, 2.8vw, 40px);
  --header-h: 82px;
  --container: 1280px;
  --radius: 10px;
  --radius-lg: 16px;
  --shadow-pop: 0 18px 40px -18px rgba(10, 27, 31, 0.35);
}
/* Chinese: CJK stack for body and headings; Latin glyphs still use the brand faces. */
.font-cjk {
  --f-display: "Albert Sans", "Noto Sans SC", "Noto Sans CJK SC", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  --f-body: "IBM Plex Sans", "Noto Sans SC", "Noto Sans CJK SC", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  --w-display: 500;
  --w-heading: 500;
  --lh-body: 1.75;
  --ls-display: 0.01em;
}

/* ---------------------------------------------------------------- base */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--header-h) + 16px); }
body {
  margin: 0; background: var(--white); color: var(--text);
  font-family: var(--f-body); font-size: 16px; line-height: var(--lh-body);
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
  overflow-x: hidden;
}
img, svg { max-width: 100%; }
img { height: auto; display: block; }
a { color: inherit; }
h1, h2, h3, h4 { margin: 0; font-family: var(--f-display); text-wrap: balance; overflow-wrap: break-word; }
p { margin: 0; }
ul, ol { margin: 0; padding: 0; }
:lang(de) h1, :lang(de) h2, :lang(de) h3, :lang(de) .hyph { hyphens: auto; -webkit-hyphens: auto; }
:lang(zh-Hans) { line-break: strict; }
/* CJK headings: break only at punctuation or at the author's hint (| → U+200B). */
.font-cjk :is(h1, h2, h3, .hero__title, .shead__title, .phead__title, .cta-band__title) { word-break: keep-all; overflow-wrap: anywhere; }
.num { font-variant-numeric: tabular-nums; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
.skip { position: absolute; left: 16px; top: -60px; z-index: 100; background: var(--white); color: var(--ink); padding: 10px 16px; border-radius: 6px; font-weight: 600; }
.skip:focus { top: 12px; }
main:focus { outline: none; }
:focus-visible { outline: 3px solid var(--green); outline-offset: 3px; }
[hidden] { display: none !important; }

.container { max-width: calc(var(--container) + 2 * var(--gutter)); margin-inline: auto; padding-inline: var(--gutter); }

/* ---------------------------------------------------------------- type helpers */
.eyebrow { font-size: 13px; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--green-deep); margin-bottom: 16px; }
.font-cjk .eyebrow { letter-spacing: 0.08em; font-size: 14px; }
.eyebrow--light, .shead--light .eyebrow, .sec--ink .eyebrow, .sec--moss .eyebrow { color: var(--mint); }
.h1 { font-size: clamp(34px, 4.4vw, 56px); font-weight: var(--w-display); line-height: 1.15; letter-spacing: var(--ls-display); }
.h2 { font-size: clamp(28px, 3vw, 40px); font-weight: var(--w-display); line-height: 1.18; letter-spacing: var(--ls-display); margin-bottom: 28px; }
.h3 { font-size: 24px; font-weight: var(--w-heading); line-height: 1.3; margin-bottom: 12px; }
.h4 { font-size: 18px; font-weight: 600; line-height: 1.35; margin-bottom: 14px; font-family: var(--f-body); }
.p-lg { font-size: 18px; line-height: 1.6; color: var(--muted); margin-bottom: 24px; max-width: 40rem; }
.label { font-size: 13px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); margin-bottom: 12px; }
.font-cjk .label { letter-spacing: 0.04em; font-size: 13.5px; }
.fine { font-size: 14px; color: var(--muted); margin-top: 20px; }
.fine--light { color: var(--on-dark-muted); }

.shead { max-width: 44rem; margin-bottom: 48px; }
.shead__title { font-size: clamp(30px, 3.3vw, 46px); font-weight: var(--w-display); line-height: 1.15; letter-spacing: var(--ls-display); }
.font-cjk .shead__title { line-height: 1.3; }
.shead__lead { margin-top: 18px; font-size: 18px; line-height: 1.6; color: var(--muted); max-width: 38rem; }
.shead--light .shead__title { color: var(--on-dark); }
.shead--light .shead__lead { color: var(--on-dark-muted); }

/* ---------------------------------------------------------------- buttons */
.actions { display: flex; flex-wrap: wrap; gap: 14px 16px; align-items: center; }
.btn {
  display: inline-flex; align-items: center; gap: 14px; min-height: 48px; border-radius: 32px;
  font: 500 16px/1.25 var(--f-body); text-decoration: none; cursor: pointer; border: 0;
  transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}
.btn--primary, .btn--dark { padding: 8px 8px 8px 20px; }
.btn--primary { background: var(--white); color: var(--ink); }
.btn--primary:hover { background: var(--mint); }
.btn--dark { background: var(--ink); color: var(--white); }
.btn--dark:hover { background: var(--ink-soft); }
.btn__disc { flex: none; width: 32px; height: 32px; border-radius: 50%; background: var(--green); color: var(--white); display: grid; place-items: center; transition: transform .2s ease; }
.btn:hover .btn__disc { transform: translateX(2px); }
.btn--ghost { padding: 12px 20px; border: 1px solid rgba(255, 255, 255, 0.72); color: var(--white); background: transparent; }
.btn--ghost:hover { background: var(--white); color: var(--ink); border-color: var(--white); }
.btn--ghost-dark { padding: 12px 20px; border: 1px solid var(--ink); color: var(--ink); background: transparent; }
.btn--ghost-dark:hover { background: var(--ink); color: var(--white); }
.btn[disabled], .btn[aria-disabled="true"] { opacity: 0.55; cursor: not-allowed; }
.btn[disabled]:hover .btn__disc { transform: none; }
.link-arrow { display: inline-flex; align-items: center; gap: 8px; font-weight: 500; text-decoration: none; color: var(--ink); border-bottom: 1px solid transparent; padding-block: 4px; }
.link-arrow svg { color: var(--green-deep); flex: none; transition: transform .2s ease; }
.link-arrow:hover { border-bottom-color: currentColor; }
.link-arrow:hover svg { transform: translateX(3px); }
.sec--ink .link-arrow, .sec--moss .link-arrow { color: var(--white); }
.sec--ink .link-arrow svg { color: var(--green); }

/* ---------------------------------------------------------------- tags & status */
.tag { display: inline-flex; align-items: center; gap: 6px; font: 500 12px/1.2 var(--f-body); padding: 4px 8px; border-radius: 4px; white-space: nowrap; }
.tag--example { border: 1px dashed #7C8C89; color: #4B5D5B; background: var(--white); }
.tag--core { background: var(--ink); color: var(--white); }
.tag--ext { background: var(--white); color: var(--ink); border: 1px solid var(--line-strong); }
.tag--current { background: var(--mint); color: #1E4F2B; }
.tag--market { background: var(--mint-pale); color: #1E4F2B; }
.status { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 500; white-space: nowrap; }
.status--ok { color: var(--ok-fg); }
.status--pending { color: var(--warn-fg); background: var(--warn-bg); padding: 3px 8px; border-radius: 4px; }

/* ---------------------------------------------------------------- header */
.site-header { position: fixed; inset: 0 0 auto 0; z-index: 50; padding-top: env(safe-area-inset-top, 0px); color: var(--white); transition: background-color .25s ease, box-shadow .25s ease; }
.site-header.is-solid, .page-sample .site-header, .page-404 .site-header { background: var(--ink); box-shadow: 0 1px 0 var(--line-dark); }
.site-header__bar { height: var(--header-h); display: flex; align-items: center; gap: 24px; padding-inline: var(--gutter); max-width: 1520px; margin-inline: auto; }
.wordmark { font-family: "Albert Sans", var(--f-display); font-weight: 600; font-size: 22px; letter-spacing: 0.24em; margin-right: -0.24em; text-decoration: none; color: inherit; line-height: 1; padding-block: 8px; flex: none; }
.wordmark--footer { font-size: 26px; }
.wordmark--inline { font-size: 18px; letter-spacing: 0.22em; padding: 0; }
.mainnav { flex: 1; display: flex; justify-content: center; }
.mainnav__list { list-style: none; display: flex; gap: 4px; align-items: center; }
.mainnav__item { position: relative; }
.mainnav__link { display: inline-flex; align-items: center; gap: 6px; padding: 10px 14px; font: 400 16px/1.2 var(--f-body); color: rgba(255,255,255,0.92); text-decoration: none; background: none; border: 0; cursor: pointer; border-radius: 6px; white-space: nowrap; }
.mainnav__link:hover, .mainnav__item.is-open > .mainnav__link { color: var(--white); background: rgba(255,255,255,0.08); }
.mainnav__link[aria-current="page"], .mainnav__item.is-active > .mainnav__link { box-shadow: inset 0 -2px 0 var(--green); border-radius: 0; }
.mainnav__link svg { transition: transform .2s ease; }
.mainnav__item.is-open > .mainnav__link svg { transform: rotate(180deg); }
.dd { position: absolute; top: calc(100% + 12px); left: 50%; width: 320px; transform: translate(-50%, 6px); background: var(--white); color: var(--ink); border-radius: 12px; box-shadow: var(--shadow-pop); padding: 20px; opacity: 0; visibility: hidden; transition: opacity .16s ease, transform .16s ease, visibility 0s .16s; }
.dd::before { content: ""; position: absolute; top: -7px; left: 50%; width: 14px; height: 14px; background: var(--white); transform: translateX(-50%) rotate(45deg); border-radius: 2px; }
.dd::after { content: ""; position: absolute; left: 0; right: 0; top: -16px; height: 16px; }
.dd--wide { width: 460px; }
.mainnav__item.is-open > .dd { opacity: 1; visibility: visible; transform: translate(-50%, 0); transition: opacity .16s ease, transform .16s ease, visibility 0s; }
.dd__intro { font-size: 13.5px; color: var(--muted); margin-bottom: 12px; padding-inline: 10px; }
.dd ul { list-style: none; display: grid; gap: 2px; }
.dd a { display: grid; gap: 2px; padding: 10px; border-radius: 8px; text-decoration: none; }
.dd a:hover, .dd a:focus-visible { background: var(--paper); }
.dd a[aria-current="page"] .dd__name { color: var(--green-deep); }
.dd__tier { font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--green-deep); }
.dd__name { font-weight: 500; font-size: 16px; }
.dd__text { font-size: 14px; color: var(--muted); line-height: 1.5; }
.dd__all a { display: flex; align-items: center; gap: 8px; font-weight: 500; border-top: 1px solid var(--line); border-radius: 0 0 8px 8px; margin-top: 6px; padding-top: 14px; }
.dd__all svg { color: var(--green-deep); }
.site-header__right { display: flex; align-items: center; gap: 12px; margin-left: auto; }
.lang { position: relative; }
.lang__btn { display: inline-flex; align-items: center; gap: 8px; padding: 10px 12px; border-radius: 6px; background: none; border: 0; color: var(--white); font: 500 15px/1 var(--f-body); cursor: pointer; }
.lang__btn:hover, .lang.is-open .lang__btn { background: rgba(255,255,255,0.08); }
.lang__menu { position: absolute; right: 0; top: calc(100% + 10px); min-width: 180px; list-style: none; background: var(--white); color: var(--ink); border-radius: 10px; box-shadow: var(--shadow-pop); padding: 6px; opacity: 0; visibility: hidden; transform: translateY(6px); transition: opacity .16s ease, transform .16s ease, visibility 0s .16s; }
.lang.is-open .lang__menu { opacity: 1; visibility: visible; transform: none; transition: opacity .16s ease, transform .16s ease, visibility 0s; }
.lang__menu a { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 6px; text-decoration: none; font-size: 15px; }
.lang__menu a:hover, .lang__menu a:focus-visible { background: var(--paper); }
.lang__menu a[aria-current="true"] { font-weight: 600; }
.lang__menu a svg { color: var(--green-deep); }
.site-header .btn--ghost { padding: 11px 18px; min-height: 44px; font-size: 15px; white-space: nowrap; }
.burger { display: none; width: 44px; height: 44px; border: 0; background: none; color: var(--white); border-radius: 6px; cursor: pointer; place-items: center; }
.burger__close { display: none; }
.burger[aria-expanded="true"] .burger__open { display: none; }
.burger[aria-expanded="true"] .burger__close { display: grid; }
.burger__open, .burger__close { place-items: center; }
.burger:hover { background: rgba(255,255,255,0.08); }

.mpanel { position: fixed; inset: calc(var(--header-h) + env(safe-area-inset-top, 0px)) 0 0 0; background: var(--ink); color: var(--white); overflow-y: auto; padding: 8px var(--gutter) calc(32px + env(safe-area-inset-bottom, 0px)); border-top: 1px solid var(--line-dark); }
.mnav { list-style: none; }
.mnav__item { border-bottom: 1px solid var(--line-dark); }
.mnav__link, .mnav__toggle { display: flex; width: 100%; justify-content: space-between; align-items: center; padding: 18px 0; font: 400 20px/1.3 var(--f-display); color: var(--white); background: none; border: 0; text-decoration: none; text-align: left; cursor: pointer; }
.mnav__toggle svg { transition: transform .2s; width: 20px; height: 20px; }
.mnav__toggle[aria-expanded="true"] svg { transform: rotate(180deg); }
.mnav__sub { list-style: none; padding: 0 0 16px; display: grid; gap: 2px; }
.mnav__sub a { display: flex; justify-content: space-between; gap: 12px; padding: 10px 0; color: var(--on-dark-muted); text-decoration: none; font-size: 16px; }
.mnav__sub a:hover { color: var(--white); }
.mnav__tier { font-size: 12px; color: var(--mint); text-transform: uppercase; letter-spacing: .06em; }
.mlang { padding: 24px 0; border-bottom: 1px solid var(--line-dark); }
.mlang__label { display: flex; gap: 8px; align-items: center; color: var(--on-dark-muted); font-size: 14px; margin-bottom: 12px; }
.mlang__list { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; }
.mlang__list a { display: inline-flex; align-items: center; gap: 6px; padding: 10px 16px; border: 1px solid var(--line-dark); border-radius: 32px; text-decoration: none; font-size: 15px; }
.mlang__list a[aria-current="true"] { background: var(--white); color: var(--ink); border-color: var(--white); }
.mpanel__cta { padding-top: 24px; }
body.menu-open { overflow: hidden; }

/* ---------------------------------------------------------------- hero */
.hero { position: relative; isolation: isolate; overflow: hidden; background: var(--ink); color: var(--white); min-height: clamp(700px, 57vw, 860px); display: flex; }
.hero__media, .hero__media picture, .hero__media img { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero__media img { object-fit: cover; object-position: 50% 32%; }
.hero__shade { position: absolute; inset: 0; z-index: 1;
  background:
    linear-gradient(90deg, rgba(15,38,43,0.84) 0%, rgba(15,38,43,0.66) 38%, rgba(15,38,43,0.34) 68%, rgba(15,38,43,0.40) 100%),
    linear-gradient(0deg, rgba(15,38,43,0.78) 0%, rgba(15,38,43,0) 34%),
    linear-gradient(180deg, rgba(15,38,43,0.55) 0%, rgba(15,38,43,0) 22%); }
.hero__inner { position: relative; z-index: 2; width: 100%; max-width: 1520px; margin-inline: auto; padding: calc(var(--header-h) + clamp(64px, 8.2vw, 124px)) var(--gutter) 0;
  display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: 1fr auto; column-gap: clamp(32px, 5vw, 96px); }
.hero__copy { grid-column: 1; grid-row: 1; max-width: 46rem; }
.hero__title { font-size: clamp(40px, 3.9vw, 58px); font-weight: var(--w-display); line-height: 1.2; letter-spacing: var(--ls-display); text-wrap: pretty; }
.font-cjk .hero__title { font-size: clamp(38px, 3.7vw, 54px); line-height: 1.32; letter-spacing: 0.02em; }
.hero__line { display: block; }
.hero__lead { text-wrap: pretty; margin-top: 24px; font-size: clamp(17px, 1.3vw, 19px); line-height: 1.6; color: rgba(255,255,255,0.88); max-width: 36rem; }
.font-cjk .hero__lead { line-height: 1.8; max-width: 23.5em; }
.hero .actions { margin-top: 36px; }

/* ---------------------------------------------------------------- phone */
.phone { margin: 0; width: var(--pw, 330px); flex: none; }
.phone__frame { position: relative; background: #0B1517; border-radius: 50px; padding: 11px; box-shadow: 0 40px 80px -30px rgba(0,0,0,0.6), inset 0 0 0 1.5px #33423F; }
.phone__island { position: absolute; top: 22px; left: 50%; transform: translateX(-50%); width: 92px; height: 26px; background: #000; border-radius: 14px; z-index: 2; }
.phone__screen { background: var(--white); color: var(--ink); border-radius: 40px; overflow: hidden; height: var(--ph, 690px); padding-top: 54px; }
.phone--head { --pw: 300px; --ph: 620px; }
.phone--sm { --pw: 268px; --ph: 540px; }
.phone--sm .phone__frame { border-radius: 42px; padding: 9px; }
.phone--sm .phone__screen { border-radius: 34px; padding-top: 44px; }
.phone--sm .phone__island { top: 18px; width: 78px; height: 22px; }

/* passport screen content */
.ps { padding: 0 16px 16px; font-size: 13px; line-height: 1.45; }
.ps-top { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding-bottom: 10px; }
.ps-top__title { font-weight: 600; font-size: 13.5px; }
.ps .tag { font-size: 11px; padding: 3px 6px; }
.ps-hero { background: var(--mint-pale); border-radius: 16px; padding: 14px 18px 8px; display: grid; place-items: center; }
.ps-hero .module-art { width: 100%; max-width: 230px; height: auto; }
.ps-head { padding: 12px 2px 4px; }
.ps-cat { font-size: 11.5px; color: var(--muted); }
.ps-name { font-size: 17px; font-weight: 600; line-height: 1.3; margin-top: 2px; font-family: var(--f-display); }
.ps-id { font-size: 11.5px; color: var(--muted); margin-top: 2px; }
.ps-tabs { display: flex; gap: 16px; border-bottom: 1px solid var(--line); margin: 8px 0 4px; font-size: 12.5px; color: var(--muted); }
.ps-tabs span { padding: 8px 0; white-space: nowrap; }
.ps-tabs .is-on { color: var(--ink); font-weight: 600; box-shadow: inset 0 -2px 0 var(--ink); }
.ps-facts { margin: 0; }
.ps-row { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; border-bottom: 1px solid #E9EEEC; font-size: 12.5px; }
.ps-row dt { color: var(--muted); flex: none; max-width: 48%; }
.ps-row dd { margin: 0; text-align: right; font-weight: 500; }
.ps-facts--tight .ps-row { padding: 5px 0; }
.ps-block { margin-top: 14px; }
.ps-block__title { font-size: 12.5px; font-weight: 600; margin-bottom: 4px; }
.ps-docs { list-style: none; }
.ps-docs li { display: grid; grid-template-columns: auto 1fr; column-gap: 8px; padding: 7px 0; border-bottom: 1px solid #E9EEEC; }
.ps-doc__icon { grid-row: span 2; color: var(--green-deep); padding-top: 1px; }
.ps-doc__name { font-size: 12.5px; font-weight: 500; }
.ps-doc__meta { font-size: 11px; color: var(--muted); }
.ps-foot { display: flex; justify-content: space-between; gap: 8px; margin-top: 12px; font-size: 11.5px; color: var(--muted); }
.ps-rolecontent { background: var(--paper); border-radius: 10px; padding: 8px 10px; margin: 8px 0 6px; }
.ps-rolelist { list-style: none; display: grid; gap: 4px; font-size: 12px; }
.ps-rolelist li { display: flex; gap: 6px; align-items: flex-start; }
.ps-rolelist svg { color: var(--ok-fg); flex: none; margin-top: 2px; width: 14px; height: 14px; }

/* ---------------------------------------------------------------- sections */
.sec { padding-block: clamp(72px, 8.5vw, 124px); }
.sec--tight { padding-block: clamp(48px, 6vw, 80px); }
.sec--white { background: var(--white); }
.sec--paper { background: var(--paper); }
.sec--ink { background: var(--ink); color: var(--on-dark); }
.sec--moss { background: var(--moss); color: var(--on-dark); }
.sec__headrow { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px 48px; flex-wrap: wrap; margin-bottom: 48px; }
.sec__headrow .shead { margin-bottom: 0; }
.split { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 40px clamp(40px, 6vw, 96px); align-items: start; }
.split--even { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.split .shead { margin-bottom: 0; }
.sticky { position: sticky; top: calc(var(--header-h) + 32px); }

.rows { list-style: none; border-top: 1px solid var(--line); }
.rows__item { display: grid; grid-template-columns: minmax(0, 15rem) minmax(0, 1fr); gap: 8px 32px; padding: 26px 0; border-bottom: 1px solid var(--line); }
.rows__item h3 { font-size: 19px; font-weight: var(--w-heading); line-height: 1.35; }
.rows__item p { color: var(--muted); }
.rows--2 .rows__item, .rows--3 .rows__item { grid-template-columns: minmax(0, 13rem) minmax(0, 1fr); }
.rows--light { border-color: var(--line-dark); }
.rows--light .rows__item { border-color: var(--line-dark); }
.rows--light .rows__item p { color: var(--on-dark-muted); }

.ticks { list-style: none; display: grid; gap: 10px; }
.ticks li { position: relative; padding-left: 26px; }
.ticks li::before { content: ""; position: absolute; left: 2px; top: 0.62em; width: 12px; height: 7px; border-left: 2px solid var(--green-deep); border-bottom: 2px solid var(--green-deep); transform: translateY(-50%) rotate(-45deg); }
.ticks--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 32px; margin-bottom: 32px; }
.plain { list-style: none; display: grid; gap: 8px; }
.plain li { padding-left: 14px; position: relative; }
.plain li::before { content: ""; position: absolute; left: 0; top: 0.72em; width: 6px; height: 1.5px; background: currentColor; opacity: .55; }
.plain--muted { color: var(--muted); font-size: 15px; }

/* ---------------------------------------------------------------- solution demo */
.solution__head { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px 48px; flex-wrap: wrap; margin-bottom: 40px; }
.solution__head .shead { margin-bottom: 0; }
.demo__tabs { display: flex; gap: 8px 36px; border-bottom: 1px solid var(--line-dark); flex-wrap: wrap; }
.demo__tabs [role="tab"] { background: none; border: 0; color: var(--on-dark-muted); font: 500 17px/1.3 var(--f-body); padding: 14px 0; cursor: pointer; box-shadow: inset 0 -2px 0 transparent; }
.demo__tabs [role="tab"]:hover { color: var(--white); }
.demo__tabs [role="tab"][aria-selected="true"] { color: var(--white); box-shadow: inset 0 -2px 0 var(--green); }
.demo__panel { display: grid; grid-template-columns: minmax(0, 17rem) minmax(0, 1fr); gap: 32px clamp(32px, 5vw, 72px); padding-top: 40px; align-items: start; }
.demo__explain { font-size: 18px; line-height: 1.65; color: var(--on-dark-muted); }
.font-cjk .demo__explain { line-height: 1.85; }
.demo__disclaimer { margin-top: 24px; font-size: 13.5px; color: var(--on-dark-muted); }

.dv { background: var(--white); color: var(--ink); border-radius: var(--radius-lg); padding: clamp(20px, 2.4vw, 32px); min-width: 0; }
.dv__head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 20px; }
.dv__title { font-weight: 600; font-size: 19px; font-family: var(--f-display); }
.dv__sub { font-size: 14px; color: var(--muted); margin-top: 2px; }
.dv__ids { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 0 0 20px; padding: 14px 16px; background: var(--paper); border-radius: var(--radius); }
.dv__ids dt { font-size: 12.5px; color: var(--muted); }
.dv__ids dd { margin: 2px 0 0; font-weight: 600; font-size: 15px; overflow-wrap: anywhere; }
.dv__progress { display: flex; align-items: center; gap: 14px; margin-bottom: 8px; font-size: 14px; color: var(--muted); }
.meter { flex: 1; max-width: 280px; height: 6px; border-radius: 3px; background: #E2E9E6; overflow: hidden; }
.meter span { display: block; height: 100%; background: var(--green); border-radius: 3px; }
.table-wrap { position: relative; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.dv__table { width: 100%; border-collapse: collapse; font-size: 15px; min-width: 460px; }
.dv__table th, .dv__table td { text-align: left; padding: 12px 12px 12px 0; border-bottom: 1px solid var(--line); vertical-align: middle; }
.dv__table thead th { font-size: 12.5px; font-weight: 600; color: var(--muted); letter-spacing: .02em; padding-top: 4px; }
.dv__table tbody th { font-weight: 500; }
.dv__table td { color: var(--muted); }
.dv__table td:last-child { text-align: right; padding-right: 0; }
.dv__table tr.is-pending th { color: var(--warn-fg); }
.dv__note { display: flex; gap: 10px; align-items: flex-start; margin-top: 16px; padding: 12px 14px; background: var(--warn-bg); color: #5E3A00; border-radius: 8px; font-size: 14.5px; }
.dv__note svg { flex: none; margin-top: 3px; color: var(--warn-fg); }
.dv__product { font-size: 14.5px; color: var(--muted); margin-bottom: 18px; }
.tl { list-style: none; position: relative; padding-left: 28px; }
.tl::before { content: ""; position: absolute; left: 7px; top: 8px; bottom: 8px; width: 2px; background: var(--line); }
.tl > li { position: relative; padding-bottom: 22px; }
.tl > li:last-child { padding-bottom: 0; }
.tl > li::before { content: ""; position: absolute; left: -27px; top: 5px; width: 14px; height: 14px; border-radius: 50%; background: var(--white); border: 2px solid var(--line-strong); }
.tl > li.is-current::before { background: var(--green); border-color: var(--green); }
.tl__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; font-size: 14px; color: var(--muted); }
.tl__ver { font-weight: 600; color: var(--ink); font-size: 15px; }
.tl__changes { list-style: none; margin-top: 6px; display: grid; gap: 4px; font-size: 15px; }
.dv__access { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 28px; align-items: start; }
.dv__access-phone { justify-self: center; }
.seg { display: inline-flex; flex-wrap: wrap; border: 1px solid var(--line-strong); border-radius: 8px; padding: 3px; gap: 3px; }
.seg__btn { border: 0; background: transparent; color: var(--ink); font: 500 14.5px/1.2 var(--f-body); padding: 9px 14px; border-radius: 6px; cursor: pointer; }
.seg__btn:hover { background: var(--paper); }
.seg__btn[aria-pressed="true"] { background: var(--ink); color: var(--white); }
.dv__rolenote { font-size: 13.5px; color: var(--muted); margin: 14px 0 22px; max-width: 34rem; }
.qr { display: flex; gap: 18px; align-items: center; padding-top: 20px; border-top: 1px solid var(--line); flex-wrap: wrap; }
.qr__code { width: 116px; height: 116px; flex: none; border: 1px solid var(--line); border-radius: 8px; padding: 4px; background: #fff; }
.qr__code svg { width: 100%; height: 100%; display: block; }
.qr__text { display: grid; gap: 4px; font-size: 14.5px; min-width: 0; }
.qr__url { font-size: 12.5px; color: var(--muted); overflow-wrap: anywhere; }
.dv-frame { background: var(--paper); border-radius: 18px; padding: clamp(12px, 2vw, 24px); }
.dv-frame--light .dv { border: 1px solid var(--line); }

/* ---------------------------------------------------------------- industries (home) */
.ind-list { display: grid; gap: clamp(48px, 6vw, 88px); }
.ind { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 32px clamp(40px, 5vw, 80px); align-items: center; }
.ind--flip { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); }
.ind--flip .ind__img { order: 2; }
.ind__img img, .indp__img img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 6px; }
.ind__title { font-size: clamp(24px, 2.2vw, 30px); font-weight: var(--w-display); line-height: 1.25; margin-bottom: 10px; }
.ind__title a { text-decoration: none; }
.ind__title a:hover { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 5px; }
.ind__short { color: var(--muted); font-size: 17px; margin-bottom: 28px; max-width: 34rem; }
.ind__cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 40px; }
.ind__cols .ticks, .ind__cols .plain { font-size: 15.5px; }

/* ---------------------------------------------------------------- workflow */
.flow { list-style: none; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 32px 24px; counter-reset: flow; }
.flow__step { position: relative; padding-top: 52px; }
.flow__step::before { content: ""; position: absolute; top: 15px; left: 40px; right: -24px; height: 1px; background: rgba(255,255,255,0.35); }
.flow__step:last-child::before { display: none; }
.flow__n { position: absolute; top: 0; left: 0; width: 32px; height: 32px; border-radius: 50%; border: 1px solid rgba(255,255,255,0.7); display: grid; place-items: center; font-size: 14px; font-weight: 500; }
.flow__step h3 { font-size: 19px; font-weight: var(--w-heading); margin-bottom: 8px; }
.flow__step p { font-size: 15px; color: var(--on-dark-muted); }

/* ---------------------------------------------------------------- services */
.chain { list-style: none; display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 48px; align-items: center; }
.chain li { display: flex; align-items: center; gap: 10px; }
.chain li span { display: inline-block; padding: 9px 14px; border: 1px solid var(--line-strong); border-radius: 6px; font-size: 15px; font-weight: 500; background: var(--white); }
.chain li + li::before { content: ""; width: 18px; height: 1.5px; background: var(--green-deep); position: relative; }
.svc-rows { border-top: 1px solid var(--line); }
.svc-row { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1.6fr) minmax(0, 1fr); gap: 12px 40px; padding: 28px 0; border-bottom: 1px solid var(--line); scroll-margin-top: calc(var(--header-h) + 24px); }
.svc-row h3 { font-size: 20px; font-weight: var(--w-heading); line-height: 1.35; }
.svc-row h3 a { text-decoration: none; }
.svc-row h3 a:hover { text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; }
.svc-row > p { color: var(--muted); }
.sysmap { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 32px; }
.sysmap span { padding: 8px 12px; border: 1px solid var(--line-dark); border-radius: 6px; font-size: 14px; font-weight: 500; color: var(--on-dark-muted); }
.sysmap .sysmap__to { border: 0; color: var(--green); padding: 0 4px; }
.sysmap .sysmap__pp { background: var(--white); color: var(--ink); border-color: var(--white); }
.steps { list-style: none; display: grid; gap: 0; border-top: 1px solid var(--line); }
.steps li { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: 16px; padding: 24px 0; border-bottom: 1px solid var(--line); }
.steps__n { width: 34px; height: 34px; border-radius: 50%; background: var(--ink); color: var(--white); display: grid; place-items: center; font-size: 14.5px; font-weight: 500; }
.steps h3 { font-size: 19px; font-weight: var(--w-heading); margin-bottom: 4px; }
.steps p { color: var(--muted); }

/* ---------------------------------------------------------------- tiers */
.tiers { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 32px; align-items: stretch; }
.tier-core { display: flex; flex-direction: column; gap: 12px; background: var(--ink); color: var(--white); border-radius: var(--radius-lg); padding: clamp(24px, 3vw, 40px); text-decoration: none; transition: background-color .2s; }
.tier-core:hover { background: var(--ink-soft); }
.tier-core .tag--core { background: var(--green); align-self: flex-start; }
.tier-core__name { font-family: var(--f-display); font-size: clamp(28px, 2.8vw, 36px); line-height: 1.2; }
.tier-core__text { color: var(--on-dark-muted); max-width: 26rem; }
.tier-ext { background: var(--white); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: clamp(24px, 3vw, 40px); }
.cat-list { list-style: none; margin-bottom: 24px; }
.cat-list li { display: grid; grid-template-columns: minmax(0, 12rem) minmax(0, 1fr) auto; gap: 4px 24px; padding: 14px 0; border-bottom: 1px solid var(--line); align-items: baseline; }
.cat-list__name { font-weight: 500; }
.cat-list__note { color: var(--muted); font-size: 15px; }
.cat-list__link { font-size: 14.5px; color: var(--green-deep); font-weight: 500; text-decoration: none; white-space: nowrap; }
.cat-list__link:hover { text-decoration: underline; text-underline-offset: 3px; }

/* ---------------------------------------------------------------- knowledge + faq */
.kf { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 48px clamp(40px, 6vw, 96px); align-items: start; }
.kf__h { font-size: clamp(26px, 2.6vw, 36px); font-weight: var(--w-display); line-height: 1.2; margin-bottom: 28px; }
.kf__articles .link-arrow { margin-top: 24px; }
.alist { list-style: none; border-top: 1px solid var(--line); }
.alist__item a { display: grid; gap: 6px; padding: 22px 0; border-bottom: 1px solid var(--line); text-decoration: none; }
.alist__item a:hover .alist__title { text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; }
.alist__meta { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center; font-size: 13.5px; color: var(--muted); }
.alist__title { font-family: var(--f-display); font-size: 19px; line-height: 1.35; font-weight: var(--w-heading); }
.alist__sum { color: var(--muted); font-size: 15.5px; }
.alist--compact .alist__title { font-size: 16.5px; }
.alist--compact .alist__sum { display: none; }
.faq { border-top: 1px solid var(--line); }
.faq__item { border-bottom: 1px solid var(--line); }
.faq__item summary { display: flex; justify-content: space-between; align-items: center; gap: 24px; padding: 22px 0; cursor: pointer; list-style: none; }
.faq__item summary::-webkit-details-marker { display: none; }
.faq__q { font-family: var(--f-body); font-size: 18px; font-weight: 500; line-height: 1.45; }
.faq__icon { flex: none; width: 28px; height: 28px; border-radius: 50%; border: 1px solid var(--line-strong); position: relative; transition: background-color .2s; }
.faq__icon::before, .faq__icon::after { content: ""; position: absolute; left: 50%; top: 50%; width: 11px; height: 1.6px; background: var(--ink); transform: translate(-50%, -50%); transition: transform .2s ease; }
.faq__icon::after { transform: translate(-50%, -50%) rotate(90deg); }
.faq__item[open] .faq__icon { background: var(--ink); border-color: var(--ink); }
.faq__item[open] .faq__icon::before, .faq__item[open] .faq__icon::after { background: var(--white); }
.faq__item[open] .faq__icon::after { transform: translate(-50%, -50%) rotate(0deg); }
.faq__item summary:hover .faq__q { text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; }
.faq__a { padding: 0 48px 24px 0; color: var(--muted); max-width: 46rem; }

/* ---------------------------------------------------------------- CTA band */
.cta-band { position: relative; isolation: isolate; overflow: hidden; color: var(--white); padding-block: clamp(88px, 10vw, 144px); background: var(--ink); }
.cta-band__img, .cta-band__img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 30% 50%; z-index: -2; }
.cta-band__shade { position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(15,38,43,0.92) 0%, rgba(15,38,43,0.72) 50%, rgba(15,38,43,0.45) 100%); }
.cta-band__title { font-size: clamp(32px, 3.6vw, 50px); font-weight: var(--w-display); line-height: 1.15; max-width: 40rem; letter-spacing: var(--ls-display); }
.cta-band__lead { margin: 20px 0 36px; font-size: 18px; color: rgba(255,255,255,0.88); max-width: 36rem; }

/* ---------------------------------------------------------------- page header */
.phead { background: var(--ink); color: var(--white); overflow: hidden; }
.phead__inner { padding-top: calc(var(--header-h) + clamp(40px, 5vw, 72px)); padding-bottom: clamp(56px, 6vw, 88px); }
.phead__inner--aside { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 48px; padding-bottom: 0; }
.phead__inner--aside .phead__main { padding-bottom: clamp(56px, 6vw, 88px); }
.phead__aside { align-self: end; margin-bottom: -220px; }
.phead__aside .phone { transform: translateY(-40px); }
.crumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: 4px 0; font-size: 14px; color: var(--on-dark-muted); margin-bottom: 28px; }
.crumbs li + li::before { content: "/"; margin: 0 10px; opacity: .5; }
.crumbs a { text-decoration: none; }
.crumbs a:hover { text-decoration: underline; text-underline-offset: 3px; color: var(--white); }
.crumbs [aria-current] { color: var(--white); }
.phead__title { font-size: clamp(34px, 4.2vw, 56px); font-weight: var(--w-display); line-height: 1.15; letter-spacing: var(--ls-display); max-width: 48rem; }
.font-cjk .phead__title { line-height: 1.3; }
.phead__lead { margin-top: 22px; font-size: clamp(17px, 1.3vw, 19px); line-height: 1.6; color: rgba(255,255,255,0.86); max-width: 44rem; }
.font-cjk .phead__lead { line-height: 1.8; }

/* ---------------------------------------------------------------- doc layout (battery passport page) */
.doc { display: grid; grid-template-columns: 250px minmax(0, 1fr); gap: 32px clamp(40px, 5vw, 80px); padding-block: 24px 96px; }
.doc__side { position: sticky; top: calc(var(--header-h) + 40px); align-self: start; padding-top: 48px; }
.toc__title { font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); margin-bottom: 12px; }
.toc ol { list-style: none; border-left: 1px solid var(--line); }
.toc a { display: block; padding: 8px 0 8px 16px; margin-left: -1px; border-left: 2px solid transparent; text-decoration: none; color: var(--muted); font-size: 15px; line-height: 1.4; }
.toc a:hover { color: var(--ink); }
.toc a.is-active { color: var(--ink); border-left-color: var(--green); font-weight: 500; }
.doc__sidecta { margin-top: 28px; }
.dsec { padding-block: 56px; border-top: 1px solid var(--line); scroll-margin-top: calc(var(--header-h) + 16px); }
.dsec:first-child { border-top: 0; }
.dsec h2 { font-size: clamp(26px, 2.6vw, 36px); font-weight: var(--w-display); line-height: 1.2; margin-bottom: 14px; letter-spacing: var(--ls-display); }
.dsec h3 { font-size: 19px; font-weight: var(--w-heading); margin: 40px 0 16px; }
.dsec__lead { font-size: 17.5px; color: var(--muted); max-width: 44rem; margin-bottom: 32px; }
.levels { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; border: 1px solid var(--line); border-radius: var(--radius); }
.levels li { padding: 22px; }
.levels li + li { border-left: 1px solid var(--line); }
.levels__name { font-family: var(--f-display); font-size: 22px; margin-bottom: 8px; }
.levels li p:last-child { color: var(--muted); font-size: 15.5px; }
.kv { width: 100%; border-collapse: collapse; min-width: 420px; }
.kv th, .kv td { text-align: left; padding: 14px 16px 14px 0; border-bottom: 1px solid var(--line); vertical-align: top; }
.kv th { width: 11rem; font-weight: 500; }
.kv td { color: var(--muted); }
.srcmap { list-style: none; display: grid; gap: 10px; }
.srcmap li { display: grid; grid-template-columns: minmax(0, 1fr) 40px minmax(0, 1.2fr); align-items: center; gap: 12px; }
.srcmap__from { padding: 12px 16px; border: 1px solid var(--line-strong); border-radius: 8px; font-weight: 500; background: var(--white); }
.srcmap__arrow { color: var(--green-deep); display: grid; place-items: center; }
.srcmap__gives { color: var(--muted); }
.gaps, .maintain { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 32px; align-items: start; }
.maintain { grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); }
.gapcard { border: 1px solid #E8C98F; background: #FFFBF3; border-radius: 12px; padding: 20px 22px; display: grid; gap: 8px; }
.gapcard .label { display: flex; align-items: center; gap: 10px; margin-bottom: 4px; }
.gapcard__item { font-size: 18px; font-weight: 500; }
.gapcard__src { color: var(--muted); font-size: 15px; }
.gapcard .status { justify-self: start; }
.actions--light { margin-top: 8px; }

/* ---------------------------------------------------------------- dpp page */
.tier-note { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 56px; }
.tier-note__core, .tier-note__ext { display: inline-flex; align-items: center; gap: 12px; padding: 12px 16px; border-radius: 10px; border: 1px solid var(--line); font-weight: 500; text-decoration: none; }
.tier-note__core:hover { border-color: var(--ink); }
.tier-note__core svg { color: var(--green-deep); }
.tier-note__ext { background: var(--paper); }
.cat-table { width: 100%; border-collapse: collapse; min-width: 560px; background: var(--white); border-radius: var(--radius); overflow: hidden; }
.cat-table th, .cat-table td { text-align: left; padding: 18px 20px; border-bottom: 1px solid var(--line); }
.cat-table tr:last-child th, .cat-table tr:last-child td { border-bottom: 0; }
.cat-table th { font-weight: 500; width: 30%; }
.cat-table td { color: var(--muted); }
.cat-table td:last-child { text-align: right; white-space: nowrap; }
.callout { background: var(--paper); border-radius: var(--radius-lg); padding: clamp(24px, 3vw, 36px); display: grid; gap: 16px; justify-items: start; }
.callout p { color: var(--muted); }
.callout--small { margin-top: 32px; padding: 22px; font-size: 15px; }

/* ---------------------------------------------------------------- industries page */
.jump { padding: 28px 0 8px; position: sticky; top: calc(var(--header-h) + env(safe-area-inset-top, 0px)); z-index: 5; background: var(--white); border-bottom: 1px solid var(--line); }
.jump ul { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; padding-bottom: 20px; }
.jump a { display: inline-block; padding: 8px 14px; border: 1px solid var(--line-strong); border-radius: 6px; text-decoration: none; font-size: 15px; font-weight: 500; }
.jump a:hover, .jump a.is-active { background: var(--ink); color: var(--white); border-color: var(--ink); }
.indp-list { padding-bottom: 32px; }
.indp { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 32px clamp(40px, 5vw, 80px); padding-block: clamp(56px, 7vw, 96px); border-bottom: 1px solid var(--line); scroll-margin-top: calc(var(--header-h) + 90px); align-items: start; }
.indp:last-child { border-bottom: 0; }
.indp--flip { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }
.indp--flip .indp__img { order: 2; }
.indp--noimg { grid-template-columns: minmax(0, 1fr); }
.indp--noimg .indp__body { max-width: 64rem; }
.indp h2 { font-size: clamp(28px, 2.8vw, 38px); font-weight: var(--w-display); line-height: 1.2; margin-bottom: 14px; }
.indp .ind__cols { margin-bottom: 28px; }
.question { background: var(--paper); border-radius: var(--radius); padding: 18px 20px; margin-bottom: 20px; }
.question .label { margin-bottom: 4px; }
.question p:last-child { font-size: 17px; font-weight: 500; }

/* ---------------------------------------------------------------- article */
.article { display: grid; grid-template-columns: 220px minmax(0, 44rem) minmax(0, 1fr); gap: 40px clamp(32px, 4vw, 64px); padding-block: 56px 96px; }
.article__meta dl { display: grid; gap: 20px; position: sticky; top: calc(var(--header-h) + 32px); }
.article__meta dt { font-size: 13px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); margin-bottom: 6px; }
.article__meta dd { margin: 0; font-size: 15px; color: var(--muted); }
.article__meta .tag { margin-bottom: 6px; }
.prose { font-size: 17.5px; line-height: 1.75; }
.font-cjk .prose { line-height: 1.9; }
.prose > * + * { margin-top: 18px; }
.prose h2 { font-size: 26px; font-weight: var(--w-heading); line-height: 1.3; margin-top: 44px; }
.prose ul { padding-left: 22px; display: grid; gap: 8px; }
.prose ul li::marker { color: var(--green-deep); }
.prose .note { background: var(--paper); border-radius: var(--radius); padding: 18px 20px; font-size: 16px; }
.prose .sources { list-style: none; padding: 0; }
.prose .sources a { display: inline-flex; align-items: center; gap: 6px; color: var(--green-deep); font-weight: 500; text-underline-offset: 3px; }
.disclaimer { margin-top: 40px !important; padding-top: 20px; border-top: 1px solid var(--line); font-size: 14.5px; color: var(--muted); line-height: 1.6; }

/* ---------------------------------------------------------------- about */
.facts { display: grid; gap: 0; margin: 0; border-top: 1px solid var(--line); }
.facts > div { display: grid; grid-template-columns: minmax(0, 12rem) minmax(0, 1fr); gap: 16px; padding: 18px 0; border-bottom: 1px solid var(--line); }
.facts dt { color: var(--muted); }
.facts dd { margin: 0; font-weight: 500; }

/* ---------------------------------------------------------------- contact + form */
.contact { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: 40px clamp(40px, 5vw, 80px); align-items: start; }
.contact__aside { display: grid; gap: 20px; position: sticky; top: calc(var(--header-h) + 32px); }
.contact__box { background: var(--paper); border-radius: var(--radius-lg); padding: 26px; }
.contact__box--plain { background: var(--white); border: 1px solid var(--line); }
.contact__box p + p { margin-top: 6px; }
.form__set { border: 0; padding: 0; margin: 0; display: grid; gap: 26px; min-width: 0; }
.form__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 24px; }
.field { display: grid; gap: 8px; min-width: 0; }
.field--group { border: 0; padding: 0; margin: 0; min-width: 0; }
.field--group legend { font-weight: 500; font-size: 15px; padding: 0; margin-bottom: 8px; }
.field--half { max-width: 50%; }
.field--inline { margin-top: 14px; max-width: 420px; }
.field label { font-weight: 500; font-size: 15px; }
.req { color: var(--error); margin-left: 2px; }
.opt { color: var(--muted); font-weight: 400; font-size: 14px; }
.field__hint { font-size: 14px; color: var(--muted); }
.field input[type="text"], .field input[type="email"], .field textarea, .field select {
  width: 100%; min-height: 50px; padding: 12px 14px; border: 1px solid var(--line-strong); border-radius: 8px;
  font: 400 16px/1.4 var(--f-body); color: var(--ink); background: var(--white); transition: border-color .15s, box-shadow .15s; }
.field textarea { min-height: 120px; resize: vertical; }
.field input:hover, .field textarea:hover, .field select:hover { border-color: #8FA39D; }
.field input:focus, .field textarea:focus, .field select:focus { outline: none; border-color: var(--ink); box-shadow: 0 0 0 3px var(--mint); }
.field input:disabled { background: var(--paper); color: #8A9A96; border-color: var(--line); cursor: not-allowed; }
.field [aria-invalid="true"] { border-color: var(--error); box-shadow: 0 0 0 1px var(--error); }
.field__err { color: var(--error); font-size: 14px; font-weight: 500; }
.select { position: relative; }
.select select { appearance: none; -webkit-appearance: none; padding-right: 40px; cursor: pointer; }
.select svg { position: absolute; right: 14px; top: 50%; transform: translateY(-50%); pointer-events: none; color: var(--muted); }
.checks { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px 16px; }
.checks--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.check { display: flex; gap: 10px; align-items: flex-start; font-size: 15.5px; cursor: pointer; padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; transition: border-color .15s, background-color .15s; }
.check:hover { border-color: var(--line-strong); }
.check input { width: 18px; height: 18px; margin: 2px 0 0; accent-color: var(--ink); flex: none; }
.check:has(input:checked) { border-color: var(--ink); background: var(--paper); }
.check:has(input:focus-visible) { outline: 3px solid var(--green); outline-offset: 2px; }
.form__actions { margin-top: 32px; }
.btn--submit { font-size: 16px; }
.form__errors { border: 1px solid #E5A29B; background: var(--error-bg); border-radius: 10px; padding: 16px 18px; margin-bottom: 28px; color: #7A1A12; }
.form__errors p { font-weight: 600; margin-bottom: 6px; }
.form__errors ul { padding-left: 20px; display: grid; gap: 4px; }
.form__errors a { color: inherit; }
.form__result { margin-top: 8px; border: 1px dashed #B98A3E; background: #FFFBF3; border-radius: var(--radius-lg); padding: 26px; display: grid; gap: 12px; }
.form__result.is-success { border-style: solid; border-color: var(--green); background: var(--mint-pale); }
.form__result-title { font-size: 20px; font-weight: 600; font-family: var(--f-display); }
.form__result-text { color: var(--muted); }
.form__summary { display: grid; gap: 0; margin: 6px 0 10px; border-top: 1px solid #EBDDC2; }
.form__summary div { display: grid; grid-template-columns: minmax(0, 11rem) minmax(0, 1fr); gap: 12px; padding: 8px 0; border-bottom: 1px solid #EBDDC2; font-size: 15px; }
.form__summary dt { color: var(--muted); }
.form__summary dd { margin: 0; overflow-wrap: anywhere; white-space: pre-wrap; }
.form__result .btn { justify-self: start; }

/* ---------------------------------------------------------------- sample passport page */
.sp__notice { background: var(--warn-bg); color: #5E3A00; padding-top: calc(var(--header-h) + env(safe-area-inset-top, 0px)); }
.sp__notice .container { display: flex; gap: 12px; align-items: center; padding-block: 14px; font-size: 15px; flex-wrap: wrap; }
.sp__wrap { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 32px; padding-block: 40px 96px; align-items: start; }
.sp__card { border: 1px solid var(--line); border-radius: 18px; overflow: hidden; background: var(--white); }
.sp__head { display: grid; grid-template-columns: minmax(0, 220px) minmax(0, 1fr); gap: 24px; padding: 28px; align-items: center; border-bottom: 1px solid var(--line); }
.sp__art { background: var(--mint-pale); border-radius: 14px; padding: 16px; }
.sp__title { font-size: clamp(24px, 2.4vw, 32px); font-weight: var(--w-display); line-height: 1.25; margin-bottom: 8px; }
.sp__maker, .sp__updated { color: var(--muted); font-size: 15px; }
.sp__tablist { display: flex; gap: 28px; padding: 0 28px; border-bottom: 1px solid var(--line); overflow-x: auto; }
.sp__tablist [role="tab"] { background: none; border: 0; padding: 16px 0; font: 500 15.5px/1.2 var(--f-body); color: var(--muted); cursor: pointer; white-space: nowrap; box-shadow: inset 0 -2px 0 transparent; }
.sp__tablist [role="tab"][aria-selected="true"] { color: var(--ink); box-shadow: inset 0 -2px 0 var(--ink); }
.sp__panel { padding: 24px 28px 32px; }
.sp-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 32px; margin: 0; }
.sp-facts > div { display: flex; justify-content: space-between; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.sp-facts dt { color: var(--muted); }
.sp-facts dd { margin: 0; font-weight: 500; text-align: right; }
.ps-docs--page li { padding: 12px 0; }
.ps-docs--page .ps-doc__name { font-size: 15.5px; }
.ps-docs--page .ps-doc__meta { font-size: 13.5px; }
.sp__side { display: grid; gap: 24px; justify-items: start; }
.sp__side .dv-frame { width: 100%; }

/* ---------------------------------------------------------------- 404 */
.nf { background: var(--ink); color: var(--white); padding: calc(var(--header-h) + 120px) 0 140px; }
.nf .p-lg { color: var(--on-dark-muted); }
.nf__langs { list-style: none; display: flex; gap: 10px; flex-wrap: wrap; margin-top: 12px; }
.nf__langs a { display: inline-block; padding: 10px 18px; border: 1px solid rgba(255,255,255,.6); border-radius: 32px; text-decoration: none; }
.nf__langs a:hover { background: var(--white); color: var(--ink); }

/* ---------------------------------------------------------------- footer */
.site-footer { background: var(--ink-2); color: rgba(255,255,255,0.74); font-size: 15px; }
.site-footer__top { display: grid; grid-template-columns: minmax(0, 2fr) repeat(3, minmax(0, 1fr)); gap: 40px; padding-block: 72px 56px; }
.site-footer__brand .wordmark { color: var(--white); display: inline-block; margin-bottom: 16px; }
.site-footer__brand p { max-width: 24rem; }
.site-footer__legal { margin-top: 16px; color: var(--white); font-weight: 500; }
.site-footer__contact { list-style: none; margin-top: 12px; display: grid; gap: 4px; }
.site-footer__h { color: var(--white); font-weight: 600; margin-bottom: 14px; font-size: 14px; letter-spacing: .06em; text-transform: uppercase; }
.site-footer__col ul { list-style: none; display: grid; gap: 10px; }
.site-footer a { text-decoration: none; }
.site-footer a:hover { color: var(--white); text-decoration: underline; text-underline-offset: 3px; }
.site-footer a[aria-current="true"] { color: var(--white); }
.site-footer__bottom { display: flex; flex-wrap: wrap; gap: 8px 32px; padding-block: 24px 40px; border-top: 1px solid rgba(255,255,255,0.1); font-size: 13.5px; }
.site-footer__bottom p:last-child { margin-left: auto; }

/* ---------------------------------------------------------------- responsive */
@media (max-width: 1240px) {
  .mainnav__link { padding: 10px 10px; font-size: 15px; }
  .flow { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 48px; }
  .flow__step:nth-child(3n)::before { display: none; }
  .article { grid-template-columns: 200px minmax(0, 1fr); }
  .article__more { grid-column: 2; }
}
@media (max-width: 1120px) {
  .mainnav, .site-header [data-header-cta] { display: none; }
  .burger { display: grid; }
  .site-header__right { gap: 4px; }
}
@media (max-width: 1080px) {
  .demo__panel { grid-template-columns: minmax(0, 1fr); }
  .demo__explain { max-width: 44rem; }
}
@media (max-width: 960px) {
  :root { --header-h: 68px; }
  .split, .split--even, .kf, .tiers, .contact, .sp__wrap, .gaps, .maintain { grid-template-columns: minmax(0, 1fr); }
  .sticky, .contact__aside { position: static; }
  .ind, .indp, .ind--flip, .indp--flip { grid-template-columns: minmax(0, 1fr); }
  .ind--flip .ind__img, .indp--flip .indp__img { order: 0; }
  .doc { grid-template-columns: minmax(0, 1fr); }
  .doc__side { position: static; padding-top: 32px; }
  .toc ol { display: flex; flex-wrap: wrap; gap: 6px; border-left: 0; }
  .toc a { border: 1px solid var(--line); border-radius: 6px; padding: 7px 12px; margin: 0; font-size: 14px; }
  .toc a.is-active { border-color: var(--ink); }
  .doc__sidecta { display: none; }
  .svc-row { grid-template-columns: minmax(0, 1fr); }
  .article { grid-template-columns: minmax(0, 1fr); }
  .article__more { grid-column: auto; }
  .article__meta dl { position: static; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .phead__inner--aside { grid-template-columns: minmax(0, 1fr); }
  .phead__aside { display: none; }
  .site-footer__top { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .site-footer__brand { grid-column: 1 / -1; }
  .dv__access { grid-template-columns: minmax(0, 1fr); }

  /* hero: stacked — title, lead, actions, strip, then the passport preview */
  .hero { min-height: 0; }
  .hero__inner { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto; padding-top: calc(var(--header-h) + 56px); }
  .hero__copy, .hero__strip, .hero__device { grid-column: 1; grid-row: auto; }
  .hero__copy { order: 1; }
  .hero__title { font-size: clamp(34px, 8.6vw, 48px); }
  .font-cjk .hero__title { font-size: clamp(32px, 8.2vw, 46px); }
  .hero { padding-bottom: 0; }
  .hero__media img { object-position: 62% 30%; }
  .hero__shade { background: linear-gradient(180deg, rgba(15,38,43,0.78) 0%, rgba(15,38,43,0.72) 45%, rgba(15,38,43,0.55) 70%, rgba(15,38,43,0.7) 100%); }
}
@media (max-width: 720px) {
  .rows__item, .rows--2 .rows__item, .rows--3 .rows__item { grid-template-columns: minmax(0, 1fr); }
  .flow { grid-template-columns: minmax(0, 1fr); row-gap: 0; }
  .flow__step { padding: 0 0 28px 52px; }
  .flow__step::before { top: 40px; bottom: 4px; left: 15px; right: auto; width: 1px; height: auto; display: block !important; }
  .flow__step:last-child::before { display: none !important; }
  .ind__cols, .ticks--2 { grid-template-columns: minmax(0, 1fr); }
  .levels { grid-template-columns: minmax(0, 1fr); }
  .levels li + li { border-left: 0; border-top: 1px solid var(--line); }
  .srcmap li { grid-template-columns: minmax(0, 1fr); gap: 4px; }
  .srcmap__arrow { justify-content: start; transform: rotate(90deg); width: 24px; }
  .dv__ids { grid-template-columns: minmax(0, 1fr); }
  .cat-list li { grid-template-columns: minmax(0, 1fr); }
  .form__grid, .checks, .checks--2 { grid-template-columns: minmax(0, 1fr); }
  .field--half { max-width: none; }
  .sp__head { grid-template-columns: minmax(0, 1fr); }
  .sp__art { max-width: 260px; }
  .sp-facts { grid-template-columns: minmax(0, 1fr); }
  .site-footer__top { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .site-footer__bottom p:last-child { margin-left: 0; }
  .article__meta dl { grid-template-columns: minmax(0, 1fr); }
  .facts > div { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .form__summary div { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .cat-table td:last-child { white-space: normal; }
  .shead { margin-bottom: 36px; }
  .chain li + li::before { display: none; }
  .chain { gap: 8px; }
}
@media (max-width: 560px) {
  .dv__table { min-width: 0; }
  .dv__table thead { display: none; }
  .dv__table tr { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 12px; border-bottom: 1px solid var(--line); padding: 10px 0; }
  .dv__table th, .dv__table td { border: 0; padding: 0; }
  .dv__table tbody th { grid-column: 1 / -1; margin-bottom: 2px; }
  .dv__table td { font-size: 14px; }
}
@media (max-width: 480px) {
  .lang__btn span { max-width: 5.5em; overflow: hidden; text-overflow: ellipsis; }
  .btn { font-size: 15.5px; }
  .hero .actions .btn { width: 100%; justify-content: space-between; }
  .hero .actions .btn--ghost { justify-content: center; }
  .qr { align-items: flex-start; }
  .site-footer__top { grid-template-columns: minmax(0, 1fr); }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; scroll-behavior: auto !important; }
}

/* =====================================================================
   v2 — icons, diagrams, interactive cards, motion
   ===================================================================== */
:root {
  --ease-out: cubic-bezier(.16, 1, .3, 1);
  --ease-io: cubic-bezier(.65, 0, .35, 1);
  --lift: 0 22px 44px -26px rgba(15, 38, 43, 0.42);
}
.ico { flex: none; display: inline-block; vertical-align: middle; }

/* ------------------------------------------------ motion primitives */
@keyframes rise { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes fadeSlide { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes lineIn { from { opacity: .45; transform: translateY(22px); } to { opacity: 1; transform: none; } }
@keyframes phoneIn { from { opacity: 0; transform: translateY(90px); } to { opacity: 1; transform: none; } }
@keyframes heroZoom { from { transform: scale(1.08); } to { transform: scale(1); } }
@keyframes popIn { 0% { opacity: 0; transform: scale(.6); } 70% { transform: scale(1.06); } 100% { opacity: 1; transform: none; } }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes pulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(168, 106, 18, .35); } 50% { box-shadow: 0 0 0 6px rgba(168, 106, 18, 0); } }
@keyframes ringFill { from { stroke-dasharray: 0 100; } }
@keyframes grow { from { transform: scaleX(0); } to { transform: scaleX(1); } }

/* progressive reveal: only hidden while the observer is running */
.motion [data-reveal] { transition: opacity .75s var(--ease-out), transform .75s var(--ease-out); }
.motion [data-reveal].is-pending { opacity: 0; transform: translateY(32px); }
.motion [data-reveal].is-in [style*="--i"] { animation: rise .6s var(--ease-out) both; animation-delay: calc(var(--i) * 70ms + 120ms); }

/* hero entrance: title and buttons are readable from the first frame */
.motion .hero__media img { animation: heroZoom 2.6s var(--ease-out) both; }
.motion .hero__line { animation: lineIn .9s var(--ease-out) both; animation-delay: calc(var(--i) * 110ms); }
.motion .hero__lead { animation: lineIn .9s var(--ease-out) .18s both; }
.motion .hero .actions { animation: lineIn .9s var(--ease-out) .28s both; }
.motion .phead__title, .motion .phead__lead { animation: lineIn .8s var(--ease-out) both; }
.motion .phead__lead { animation-delay: .12s; }
.motion .phead__aside .phone { animation: phoneIn 1.1s var(--ease-out) .2s both; }
.hero__media { will-change: transform; }

/* header shrinks once solid */
.site-header__bar { transition: height .3s var(--ease-out); }
.site-header.is-solid .site-header__bar { height: 68px; }
.dd li, .lang__menu li { opacity: 1; }
.mainnav__item.is-open .dd li, .lang.is-open .lang__menu li { animation: fadeSlide .28s var(--ease-out) both; }
.mainnav__item.is-open .dd li:nth-child(2), .lang.is-open .lang__menu li:nth-child(2) { animation-delay: .04s; }
.mainnav__item.is-open .dd li:nth-child(3), .lang.is-open .lang__menu li:nth-child(3) { animation-delay: .08s; }
.mainnav__item.is-open .dd li:nth-child(4) { animation-delay: .12s; }
.mainnav__item.is-open .dd li:nth-child(5) { animation-delay: .16s; }
.btn:active { transform: scale(.98); }

/* ------------------------------------------------ tabs with sliding ink */
.has-ink { position: relative; }
.tabs-ink { position: absolute; left: 0; bottom: 0; height: 2px; width: 0; background: var(--green); transition: transform .35s var(--ease-out), width .35s var(--ease-out); pointer-events: none; }
.demo__tabs.has-ink [role="tab"][aria-selected="true"], .sp__tablist.has-ink [role="tab"][aria-selected="true"], .ps-tabs.has-ink [role="tab"][aria-selected="true"] { box-shadow: none; }
.ps-tabs .tabs-ink, .sp__tablist .tabs-ink { background: var(--ink); }
.demo__tabs [role="tab"] { display: inline-flex; align-items: center; gap: 10px; }
.demo__tabs [role="tab"] .ico { opacity: .7; transition: opacity .2s, transform .3s var(--ease-out); }
.demo__tabs [role="tab"]:hover .ico, .demo__tabs [role="tab"][aria-selected="true"] .ico { opacity: 1; transform: translateY(-1px); color: var(--green); }
.demo__panel:not([hidden]) { animation: fadeSlide .45s var(--ease-out) both; }
.demo__explain { display: grid; gap: 14px; align-content: start; }
.demo__eico { color: var(--green); }
.dv__table tbody tr { animation: fadeSlide .4s var(--ease-out) both; animation-delay: calc(var(--i, 0) * 60ms + 80ms); }
.dv__table tr.is-pending .status { animation: pulse 2s ease-in-out 3; }
.tl > li { animation: fadeSlide .45s var(--ease-out) both; animation-delay: calc(var(--i, 0) * 90ms + 100ms); }
.tl > li.is-current::before { animation: popIn .5s var(--ease-out) .2s both; }
.ring { position: relative; width: 52px; height: 52px; flex: none; display: grid; place-items: center; }
.ring svg { position: absolute; inset: 0; width: 100%; height: 100%; transform: rotate(-90deg); }
.ring circle { fill: none; stroke-width: 3.2; }
.ring__bg { stroke: #E2E9E6; }
.ring__fg { stroke: var(--green); stroke-linecap: round; stroke-dasharray: var(--p) 100; animation: ringFill 1.1s var(--ease-out) .15s both; }
.ring__v { font-size: 13px; font-weight: 600; color: var(--ink); }

/* phone passport: real tabs + panels */
.ps-tabs { gap: 14px; }
.ps-tabs [role="tab"] { background: none; border: 0; padding: 8px 0; font: inherit; font-size: 12.5px; color: var(--muted); cursor: pointer; white-space: nowrap; box-shadow: inset 0 -2px 0 transparent; }
.ps-tabs [role="tab"][aria-selected="true"] { color: var(--ink); font-weight: 600; box-shadow: inset 0 -2px 0 var(--ink); }
.ps-panel:not([hidden]) { animation: fadeSlide .35s var(--ease-out) both; }
.ps-panels { min-height: 214px; }
.phone--sm .ps-panels { min-height: 150px; }
.seg__btn { display: inline-flex; align-items: center; gap: 8px; transition: background-color .2s, color .2s; }
.ps-rolelist:not([hidden]) li { animation: fadeSlide .3s var(--ease-out) both; }
.ps-rolelist li:nth-child(2) { animation-delay: .05s; } .ps-rolelist li:nth-child(3) { animation-delay: .1s; }

/* ------------------------------------------------ hero strip with icons */

/* ------------------------------------------------ convergence diagram */
.cv { position: relative; margin: 8px 0 40px; display: grid; grid-template-columns: minmax(0, 1fr) minmax(40px, .5fr) minmax(0, 1fr) minmax(40px, .5fr) minmax(0, 1fr); align-items: center; background: var(--paper); border-radius: 18px; padding: clamp(20px, 3vw, 40px); }
.cv__col { list-style: none; display: grid; gap: 10px; position: relative; z-index: 1; }
.cv__node { display: flex; align-items: center; gap: 12px; background: var(--white); border: 1px solid var(--line); border-radius: 10px; padding: 10px 14px; font-weight: 500; font-size: 15px; transition: transform .25s var(--ease-out), border-color .2s, box-shadow .25s; }
.cv__node:hover { transform: translateX(4px); border-color: var(--ink); box-shadow: var(--lift); }
.cv__node--aud:hover { transform: translateX(-4px); }
.cv__ico { width: 34px; height: 34px; border-radius: 8px; background: var(--mint-pale); color: var(--green-deep); display: grid; place-items: center; flex: none; }
.cv__ico .ico { width: 20px; height: 20px; }
.cv__txt { min-width: 0; overflow-wrap: anywhere; }
.cv__node.is-pending { border-style: dashed; border-color: #D9A85B; }
.cv__node.is-pending .cv__ico { background: var(--warn-bg); color: var(--warn-fg); }
.cv__badge { margin-left: auto; font-size: 11.5px; font-weight: 600; color: var(--warn-fg); background: var(--warn-bg); padding: 2px 7px; border-radius: 4px; white-space: nowrap; animation: pulse 2.4s ease-in-out 3 1s; }
.cv__hub { display: grid; place-items: center; position: relative; z-index: 1; }
.cv__card { display: grid; justify-items: center; gap: 8px; text-align: center; background: var(--ink); color: var(--white); border-radius: 16px; padding: 26px 22px; min-width: 190px; box-shadow: 0 28px 50px -30px rgba(15,38,43,.7); transition: transform .3s var(--ease-out); }
.cv__card:hover { transform: scale(1.03); }
.cv__hubico { width: 56px; height: 56px; border-radius: 14px; background: rgba(255,255,255,.1); display: grid; place-items: center; color: var(--mint); }
.cv__hubname { font-family: var(--f-display); font-size: 20px; }
.cv__hubmeta { font-size: 13px; color: var(--on-dark-muted); }
.cv__update { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--mint); border: 1px solid rgba(214,236,221,.35); border-radius: 6px; padding: 4px 8px; }
.cv__card:hover .ico--spin, .motion .cv.is-in .ico--spin { animation: spin 1.6s var(--ease-io) 1; }
.wgap { display: grid; place-items: center; color: var(--line-strong); position: relative; z-index: 1; }
.has-wires .wgap { visibility: hidden; }
.wires { position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: visible; }
.wires__path { fill: none; stroke: #9FB3AD; stroke-width: 1.5; stroke-dasharray: var(--len, 0); stroke-dashoffset: 0; }
.motion [data-reveal].is-pending .wires__path { stroke-dashoffset: var(--len, 0); }
.motion [data-reveal] .wires__path { transition: stroke-dashoffset 1s var(--ease-out); transition-delay: calc(var(--i, 0) * 60ms + 200ms); }
.wires__dot { fill: var(--green); }
.wires__hub { fill: var(--white); stroke: #9FB3AD; stroke-width: 1.5; }
.wires--dark .wires__path { stroke: rgba(255,255,255,.3); }
.wires--dark .wires__dot { fill: var(--mint); }
.wires--dark .wires__hub { fill: var(--ink); stroke: rgba(255,255,255,.45); }

.ptiles { list-style: none; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 16px; }
.ptile { display: grid; gap: 8px; align-content: start; padding: 20px; border: 1px solid var(--line); border-radius: 12px; background: var(--white); transition: transform .3s var(--ease-out), box-shadow .3s, border-color .2s; }
.ptile:hover { transform: translateY(-5px); box-shadow: var(--lift); border-color: transparent; }
.ptile__ico { width: 44px; height: 44px; border-radius: 10px; display: grid; place-items: center; background: var(--ink); color: var(--mint); transition: background-color .25s, transform .35s var(--ease-out); }
.ptile:hover .ptile__ico { background: var(--green); color: var(--white); transform: rotate(-6deg); }
.ptile__title { font-weight: 600; font-size: 17px; font-family: var(--f-display); }
.ptile__text { font-size: 14.5px; color: var(--muted); line-height: 1.5; }

/* ------------------------------------------------ value chain */
.vc { list-style: none; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 0; margin: 0 0 40px; position: relative; }
.vc__stage { position: relative; display: grid; justify-items: center; gap: 12px; text-align: center; padding: 0 6px; transition: opacity .3s; }
.vc__stage::after { content: ""; position: absolute; top: 28px; left: calc(50% + 34px); right: calc(-50% + 34px); height: 2px; background: repeating-linear-gradient(90deg, var(--line-strong) 0 6px, transparent 6px 12px); }
.vc__stage:last-child::after { display: none; }
.vc__ico { width: 56px; height: 56px; border-radius: 50%; display: grid; place-items: center; background: var(--white); border: 1px solid var(--line-strong); color: var(--ink); transition: background-color .3s, color .3s, transform .35s var(--ease-out), border-color .3s; }
.vc__name { font-size: 14.5px; font-weight: 500; line-height: 1.35; }
.vc.is-hl .vc__stage { opacity: .35; }
.vc.is-hl .vc__stage.is-on { opacity: 1; }
.vc__stage.is-on .vc__ico { background: var(--ink); color: var(--mint); border-color: var(--ink); transform: scale(1.1); }
.vc__stage:hover .vc__ico { transform: translateY(-3px); border-color: var(--ink); }

/* ------------------------------------------------ industry cards */
.icards { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
.icard { position: relative; display: flex; flex-direction: column; background: var(--white); border: 1px solid var(--line); border-radius: 14px; overflow: hidden; text-decoration: none; transition: transform .35s var(--ease-out), box-shadow .35s, border-color .25s; }
.icard:hover, .icard:focus-visible { transform: translateY(-6px); box-shadow: var(--lift); border-color: transparent; }
.icard__media { display: block; aspect-ratio: 4 / 3; overflow: hidden; background: var(--moss); }
.icard__media picture, .icard__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s var(--ease-out); }
.icard:hover .icard__media img { transform: scale(1.07); }
.icard__art { height: 100%; display: flex; align-items: center; justify-content: center; gap: 12px; color: var(--mint); transition: transform .5s var(--ease-out); }
.icard__art .ico--b { opacity: .6; }
.icard:hover .icard__art { transform: translateX(8px); }
.icard__body { display: grid; gap: 10px; padding: 18px 18px 56px; align-content: start; }
.icard__title { font-family: var(--f-display); font-size: 19px; line-height: 1.3; font-weight: var(--w-heading); }
.icard__short { color: var(--muted); font-size: 14.5px; }
.icard__roles { display: flex; gap: 8px; align-items: flex-start; font-size: 13px; color: var(--muted); }
.icard__roles .ico { margin-top: 2px; color: var(--green-deep); }
.icard__go { position: absolute; right: 16px; bottom: 16px; width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; background: var(--paper); color: var(--ink); transition: background-color .25s, color .25s, transform .3s var(--ease-out); }
.icard:hover .icard__go { background: var(--green); color: var(--white); transform: translateX(4px); }
.chips { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; }
.chips li { display: inline-flex; align-items: center; gap: 6px; padding: 5px 9px; border-radius: 6px; background: var(--paper); font-size: 13px; line-height: 1.3; color: var(--ink); }
.chips li .ico { color: var(--green-deep); }
.chips--lg li { font-size: 14.5px; padding: 7px 11px; background: var(--white); border: 1px solid var(--line); }
.chips--plain li { background: transparent; border: 1px solid var(--line); }
.chips--plain li .ico { color: var(--muted); }
.chips--stage li { background: var(--ink); color: var(--white); }
.chips--stage li .ico { color: var(--mint); }

/* ------------------------------------------------ workflow (6 icon steps) */
.flow2 { list-style: none; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 24px 16px; position: relative; }
.flow2::before { content: ""; position: absolute; top: 32px; left: 32px; right: calc(100% / 6 - 32px); height: 2px; background: rgba(255,255,255,.3); transform-origin: left; }
.motion .flow2.is-pending::before { transform: scaleX(0); }
.motion .flow2::before { transition: transform 1.4s var(--ease-io) .2s; }
.flow2__step { position: relative; display: grid; gap: 10px; align-content: start; }
.flow2__dot { position: relative; width: 64px; height: 64px; border-radius: 50%; display: grid; place-items: center; background: var(--moss); border: 1.5px solid rgba(255,255,255,.55); color: var(--white); transition: background-color .3s, transform .35s var(--ease-out), color .3s; }
.flow2__step:hover .flow2__dot { background: var(--white); color: var(--ink); transform: translateY(-4px); }
.flow2__n { position: absolute; top: -4px; right: -4px; width: 22px; height: 22px; border-radius: 50%; background: var(--green); color: var(--white); font-size: 12px; font-weight: 600; display: grid; place-items: center; }
.flow2__title { font-family: var(--f-display); font-size: 18px; font-weight: var(--w-heading); margin-top: 6px; }
.flow2__text { font-size: 14.5px; color: var(--on-dark-muted); }
.motion .flow2.is-in .flow2__dot { animation: popIn .55s var(--ease-out) both; animation-delay: calc(var(--i) * 160ms + 200ms); }

/* ------------------------------------------------ project stepper */
.stepper { list-style: none; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 12px; margin-bottom: 40px; counter-reset: s; }
.stepper__item { position: relative; display: grid; gap: 6px; align-content: start; padding: 18px 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--white); transition: transform .3s var(--ease-out), border-color .25s, box-shadow .3s; }
.stepper__item:hover { transform: translateY(-4px); border-color: var(--ink); box-shadow: var(--lift); }
.stepper__item:not(:last-child)::after { content: ""; position: absolute; top: 50%; right: -10px; width: 8px; height: 8px; border-top: 2px solid var(--green-deep); border-right: 2px solid var(--green-deep); transform: translateY(-50%) rotate(45deg); z-index: 1; }
.stepper__ico { width: 40px; height: 40px; border-radius: 10px; display: grid; place-items: center; background: var(--mint-pale); color: var(--green-deep); transition: background-color .25s, color .25s; }
.stepper__item:hover .stepper__ico { background: var(--ink); color: var(--mint); }
.stepper__n { position: absolute; top: 14px; right: 14px; font-size: 12px; color: var(--muted); font-weight: 600; }
.stepper__title { font-weight: 600; font-size: 15.5px; line-height: 1.35; margin-top: 6px; }
.stepper__text { font-size: 13.5px; color: var(--muted); line-height: 1.45; }
.sec--paper .stepper__item { background: var(--white); }

/* ------------------------------------------------ service cards */
.scards { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
.scard { position: relative; display: grid; gap: 12px; align-content: start; padding: 26px 22px 60px; border: 1px solid var(--line); border-radius: 14px; background: var(--white); text-decoration: none; scroll-margin-top: calc(var(--header-h) + 24px); transition: transform .35s var(--ease-out), box-shadow .35s, border-color .25s; }
.scard:hover, .scard:focus-visible { transform: translateY(-6px); box-shadow: var(--lift); border-color: transparent; }
article.scard { padding-bottom: 26px; }
.scard__ico { width: 52px; height: 52px; border-radius: 12px; display: grid; place-items: center; background: var(--ink); color: var(--mint); transition: background-color .3s, transform .4s var(--ease-out); }
.scard:hover .scard__ico { background: var(--green); color: var(--white); transform: scale(1.06) rotate(-4deg); }
.scard__title { font-family: var(--f-display); font-size: 19px; line-height: 1.3; font-weight: var(--w-heading); }
.scard__text { color: var(--muted); font-size: 14.5px; }
.tagrow { display: flex; flex-wrap: wrap; gap: 6px; }
.tag--soft { background: var(--paper); color: var(--ink); font-weight: 500; }
.scard__go { position: absolute; left: 22px; bottom: 20px; color: var(--green-deep); transition: transform .3s var(--ease-out); }
.scard:hover .scard__go { transform: translateX(6px); }

/* ------------------------------------------------ category tiles */
.ctiles { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-bottom: 24px; }
.ctile { display: grid; gap: 6px; align-content: start; height: 100%; padding: 18px; border: 1px solid var(--line); border-radius: 12px; background: var(--white); text-decoration: none; transition: transform .3s var(--ease-out), border-color .25s, box-shadow .3s; }
.ctile:hover, .ctile:focus-visible { transform: translateY(-4px); border-color: var(--ink); box-shadow: var(--lift); }
.ctile__ico { width: 48px; height: 48px; border-radius: 12px; display: grid; place-items: center; background: var(--paper); color: var(--ink); transition: background-color .25s, color .25s, transform .4s var(--ease-out); }
.ctile:hover .ctile__ico { background: var(--ink); color: var(--mint); transform: rotate(-8deg) scale(1.05); }
.ctile__name { font-weight: 600; font-size: 15.5px; margin-top: 6px; }
.ctile__note { font-size: 13.5px; color: var(--muted); }
.no-touch .ctile__note { max-height: 0; opacity: 0; overflow: hidden; transition: max-height .35s var(--ease-out), opacity .25s; }
.no-touch .ctile:hover .ctile__note, .no-touch .ctile:focus-visible .ctile__note { max-height: 4em; opacity: 1; }
.ctile__status { display: inline-flex; align-items: center; gap: 6px; font-size: 13.5px; font-weight: 500; color: var(--green-deep); margin-top: 4px; }
.ctile__status .ico { width: 15px; height: 15px; transition: transform .3s var(--ease-out); }
.ctile:hover .ctile__status .ico { transform: translateX(4px); }
.sec--paper > .container > .ctiles { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.tier-core { position: relative; transition: background-color .25s, transform .35s var(--ease-out); }
.tier-core:hover { transform: translateY(-4px); }
.tier-core__go { position: absolute; right: 28px; bottom: 28px; width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; background: var(--green); color: var(--white); transition: transform .3s var(--ease-out); }
.tier-core:hover .tier-core__go { transform: translateX(6px); }
.tier-ext .ctiles { grid-template-columns: repeat(3, minmax(0, 1fr)); }

/* ------------------------------------------------ generic icon cards */
.iccards { list-style: none; display: grid; gap: 16px; }
.iccards--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.iccards--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.iccards--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.iccards--1 { grid-template-columns: minmax(0, 1fr); }
.iccard { display: grid; gap: 10px; align-content: start; padding: 22px; border: 1px solid var(--line); border-radius: 12px; background: var(--white); transition: transform .3s var(--ease-out), box-shadow .3s, border-color .25s; }
.iccard:hover { transform: translateY(-4px); box-shadow: var(--lift); border-color: transparent; }
.iccard__ico { width: 46px; height: 46px; border-radius: 12px; display: grid; place-items: center; background: var(--mint-pale); color: var(--green-deep); transition: background-color .25s, color .25s, transform .4s var(--ease-out); }
.iccard:hover .iccard__ico { background: var(--ink); color: var(--mint); transform: rotate(-6deg); }
.iccard__title { font-weight: 600; font-size: 16.5px; line-height: 1.35; }
.iccard__text { color: var(--muted); font-size: 14.5px; line-height: 1.5; }
.iccards--compact .iccard { grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 14px; padding: 12px 16px; }
.iccards--compact .iccard__ico { width: 38px; height: 38px; border-radius: 10px; }
.iccards--compact .iccard__title { font-weight: 500; font-size: 15.5px; }
.iccards--compact .iccard__text { grid-column: 2; }
.iccards--bare .iccard { border: 0; padding: 6px 0; background: transparent; }
.iccards--bare .iccard:hover { transform: none; box-shadow: none; }
.contact__box .iccards--bare .iccard__ico { background: var(--white); }

/* ------------------------------------------------ levels: model ⊃ batch ⊃ unit */
.lv { display: grid; gap: 20px; margin-bottom: 8px; }
.lv__tiers { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto minmax(0, 1.2fr); align-items: stretch; gap: 8px; }
.lv__join { display: grid; place-items: center; color: var(--green-deep); }
.lv__tier { display: grid; gap: 14px; align-content: start; text-align: left; padding: 18px; border: 1px solid var(--line); border-radius: 14px; background: var(--white); cursor: pointer; font: inherit; color: inherit; transition: border-color .25s, box-shadow .3s, transform .3s var(--ease-out), background-color .25s; }
.lv__tier:hover { transform: translateY(-3px); }
.lv__tier[aria-pressed="true"] { border-color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink), var(--lift); }
.lv__head { display: flex; align-items: center; gap: 8px; font-family: var(--f-display); font-size: 18px; font-weight: var(--w-heading); }
.lv__head .ico { color: var(--green-deep); }
.lv__model { display: grid; place-items: center; height: 84px; border-radius: 10px; background: var(--ink); color: var(--white); font-weight: 600; letter-spacing: .02em; }
.lv__batches { display: grid; gap: 6px; }
.lv__batch { height: 24px; border-radius: 6px; border: 1px dashed var(--line-strong); display: flex; align-items: center; padding: 0 10px; font-size: 12.5px; }
.lv__batch.is-mark { background: var(--moss); color: var(--white); border: 0; font-weight: 600; }
.lv__units { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 6px; }
.lv__cell { aspect-ratio: 1; border-radius: 6px; display: grid; place-items: center; background: var(--paper); color: var(--muted); }
.lv__cell.is-mark { background: var(--green); color: var(--white); }
.lv__tier[aria-pressed="true"] .lv__cell.is-mark { animation: popIn .5s var(--ease-out) both; }
.lv__detail { background: var(--paper); border-radius: 14px; padding: 20px 22px; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 24px; min-height: 76px; }
.lv__fields { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.lv__fields:not([hidden]) { animation: fadeSlide .35s var(--ease-out) both; }
.lv__fname { font-weight: 600; }
.lv__hint { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--muted); }
.gtiles { list-style: none; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; }
.gtile { display: grid; gap: 10px; align-content: start; padding: 18px; border-radius: 12px; border: 1px solid var(--line); transition: transform .3s var(--ease-out), box-shadow .3s, border-color .25s; }
.gtile:hover { transform: translateY(-4px); box-shadow: var(--lift); border-color: transparent; }
.gtile__ico { width: 40px; height: 40px; border-radius: 10px; display: grid; place-items: center; background: var(--ink); color: var(--mint); }
.gtile__name { font-weight: 600; }
.gtile__list { list-style: none; display: grid; gap: 4px; font-size: 13.5px; color: var(--muted); }
.gtile__list li::before { content: "·"; margin-right: 6px; color: var(--green-deep); font-weight: 700; }

/* source map with icons */
.srcmap2 { list-style: none; display: grid; gap: 10px; position: relative; }
.srcmap2 > li { display: grid; grid-template-columns: minmax(0, 1fr) 56px minmax(0, 1fr); align-items: center; gap: 10px; }
.srcmap2__from { display: flex; align-items: center; gap: 10px; padding: 11px 14px; border: 1px solid var(--line-strong); border-radius: 10px; font-weight: 500; background: var(--white); transition: border-color .2s, transform .3s var(--ease-out); }
.srcmap2__from .ico { color: var(--green-deep); }
.srcmap2 > li:hover .srcmap2__from { border-color: var(--ink); transform: translateX(4px); }
.srcmap2__line { height: 2px; background: linear-gradient(90deg, var(--line-strong), var(--green)); position: relative; transform-origin: left; }
.srcmap2__line::after { content: ""; position: absolute; right: -2px; top: -4px; border: 5px solid transparent; border-left: 7px solid var(--green); border-right: 0; }
.motion .srcmap2.is-in .srcmap2__line { animation: grow .7s var(--ease-out) both; animation-delay: calc(var(--i, 0) * 90ms + 200ms); }
.srcmap2__gives { color: var(--muted); font-size: 15px; }
.srcmap2__target { display: flex !important; align-items: center; gap: 10px; justify-content: center; margin-top: 6px; padding: 12px; border-radius: 10px; background: var(--ink); color: var(--white); font-weight: 500; }
.srcmap2__target .ico { color: var(--mint); }

/* access matrix */
.amx { margin: 28px 0 0; }
.amx__cap { display: flex; align-items: center; gap: 12px; font-family: var(--f-display); font-size: 20px; margin-bottom: 14px; }
.amx__table { width: 100%; border-collapse: separate; border-spacing: 0; min-width: 520px; }
.amx__table th, .amx__table td { padding: 12px 14px; border-bottom: 1px solid var(--line); text-align: center; transition: background-color .2s; }
.amx__table thead th { font-weight: 600; font-size: 14px; vertical-align: bottom; }
.amx__table thead th .ico { display: block; margin: 0 auto 6px; color: var(--green-deep); }
.amx__table tbody th { text-align: left; font-weight: 500; font-size: 15px; }
.amx__table tbody tr:hover { background: var(--paper); }
.amx__table:has([data-col="0"]:hover) [data-col="0"], .amx__table:has([data-col="1"]:hover) [data-col="1"], .amx__table:has([data-col="2"]:hover) [data-col="2"] { background: var(--mint-pale); }
.amx__yes { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--green); color: var(--white); }
.amx__no { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--paper); color: #9AA8A5; }
.amx__note { margin-top: 12px; font-size: 13.5px; color: var(--muted); }

/* integration diagram */
.ig { position: relative; display: grid; grid-template-columns: minmax(0, .6fr) minmax(40px, .5fr) minmax(0, 1.3fr) minmax(40px, .5fr) minmax(0, .6fr); align-items: center; margin: 8px 0 28px; }
.ig__src, .ig__routes { list-style: none; display: grid; gap: 10px; position: relative; z-index: 1; }
.ig__src { grid-template-columns: minmax(0, 1fr); gap: 8px; }
.ig__s { padding: 8px 12px; }
.ig__s { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border: 1px solid var(--line-dark); border-radius: 10px; font-weight: 500; font-size: 14.5px; background: var(--ink); transition: border-color .2s, background-color .2s; }
.ig__s:hover { border-color: var(--mint); background: var(--ink-soft); }
.ig__s .ico { color: var(--mint); }
.ig__r { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 14px; align-items: center; padding: 14px 16px; border-radius: 12px; background: var(--white); color: var(--ink); transition: transform .3s var(--ease-out); }
.ig__r:hover { transform: scale(1.02); }
.ig__rico { grid-row: span 2; width: 44px; height: 44px; border-radius: 10px; display: grid; place-items: center; background: var(--mint-pale); color: var(--green-deep); }
.ig__rt { font-weight: 600; }
.ig__rx { font-size: 13.5px; color: var(--muted); }
.ig__target { display: grid; place-items: center; position: relative; z-index: 1; }
.ig__tcard { display: grid; justify-items: center; gap: 8px; padding: 22px 18px; border-radius: 14px; background: var(--green); color: var(--white); text-align: center; }
.ig .wgap { color: rgba(255,255,255,.4); }

/* regulatory timeline, dots to scale by date */
.rtl { margin: 28px 0 36px; }
.rtl__track { position: relative; height: 40px; margin: 0 14px 18px; }
.rtl__track::before { content: ""; position: absolute; left: 0; right: 0; top: 19px; height: 2px; background: var(--line); }
.rtl__bar { position: absolute; left: 0; right: 0; top: 19px; height: 2px; background: var(--ink); transform-origin: left; }
.motion .rtl.is-pending .rtl__bar { transform: scaleX(0); }
.motion .rtl .rtl__bar { transition: transform 1.3s var(--ease-io) .2s; }
.rtl__dot { position: absolute; left: var(--x); top: 6px; width: 28px; height: 28px; margin-left: -14px; border-radius: 50%; background: var(--white); border: 2px solid var(--ink); display: grid; place-items: center; font-size: 12.5px; font-weight: 600; }
.rtl__dot.is-key { background: var(--green); border-color: var(--green); color: var(--white); box-shadow: 0 0 0 6px rgba(113,169,118,.2); }
.motion .rtl.is-in .rtl__dot { animation: popIn .5s var(--ease-out) both; animation-delay: calc(var(--i) * 260ms + 300ms); }
.rtl__yr { position: absolute; top: 40px; font-size: 12px; color: var(--muted); }
.rtl__yr--a { left: 0; } .rtl__yr--b { right: 0; }
.rtl__legend { list-style: none; padding: 0 !important; display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px !important; margin-top: 20px; }
.rtl__legend li { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 10px; row-gap: 2px; padding: 14px; border-radius: 10px; background: var(--paper); }
.rtl__legend li.is-key { background: var(--mint-pale); }
.rtl__n { grid-row: span 2; width: 24px; height: 24px; border-radius: 50%; border: 2px solid var(--ink); display: grid; place-items: center; font-size: 12px; font-weight: 600; }
.rtl__legend li.is-key .rtl__n { background: var(--green); border-color: var(--green); color: var(--white); }
.rtl__date { font-weight: 600; font-size: 15px; }
.rtl__label { font-size: 13.5px; color: var(--muted); line-height: 1.45; }
.prose .rtl__legend li::marker { content: none; }
.tiers2 { margin: 28px 0; }
.tiers2 figcaption { font-family: var(--f-display); font-size: 19px; margin-bottom: 12px; }
.tiers2 ol { list-style: none; padding: 0; display: grid; gap: 8px; }
.tiers2 li { width: var(--w); display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; column-gap: 12px; padding: 12px 16px; border-radius: 10px; background: var(--paper); transition: transform .3s var(--ease-out); }
.tiers2 li:nth-child(2) { background: var(--mint-pale); }
.tiers2 li:nth-child(3) { background: var(--ink); color: var(--white); }
.tiers2 li:hover { transform: translateX(6px); }
.tiers2__ico { grid-row: span 2; }
.tiers2__who { font-weight: 600; font-size: 15.5px; }
.tiers2__ref { grid-column: 2; font-size: 13px; opacity: .75; }
.tiers2__lock { grid-row: 1 / span 2; grid-column: 3; opacity: .7; }
.prose .tiers2 ol { padding: 0; }

/* spec tiles on the sample page */
.spec-tiles { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-bottom: 20px; }
.spec-tiles li { display: grid; gap: 4px; padding: 16px; border-radius: 12px; background: var(--paper); transition: transform .3s var(--ease-out); }
.spec-tiles li:hover { transform: translateY(-3px); }
.spec-tiles .ico { color: var(--green-deep); }
.spec-tiles__v { font-family: var(--f-display); font-size: 28px; line-height: 1.1; }
.spec-tiles__v small { font-size: 14px; margin-left: 4px; color: var(--muted); }
.spec-tiles__l { font-size: 13.5px; color: var(--muted); }
.sp-facts dt { display: flex; align-items: center; gap: 8px; }
.sp-facts dt .ico { color: var(--green-deep); }
.sp__tablist [role="tab"] { display: inline-flex; align-items: center; gap: 8px; }
.sp__panel:not([hidden]) { animation: fadeSlide .35s var(--ease-out) both; }
.sp__updated { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }

/* misc upgrades */
.alist__item a { grid-template-columns: auto minmax(0, 1fr) auto; column-gap: 16px; align-items: start; transition: background-color .2s, padding .3s var(--ease-out); }
.alist__item a:hover { background: var(--paper); padding-inline: 12px; }
.alist__ico { width: 42px; height: 42px; border-radius: 10px; display: grid; place-items: center; background: var(--mint-pale); color: var(--green-deep); margin-top: 2px; }
.alist__body { display: grid; gap: 6px; min-width: 0; }
.alist__go { align-self: center; color: var(--green-deep); transition: transform .3s var(--ease-out); }
.alist__item a:hover .alist__go { transform: translateX(4px); }
.alist--compact .alist__ico, .alist--compact .alist__go { display: none; }
.alist--compact .alist__item a { grid-template-columns: minmax(0, 1fr); }
.faq__item summary { transition: padding .3s var(--ease-out); }
.faq__item summary:hover { padding-left: 6px; }
.faq__item[open] .faq__a { animation: fadeSlide .35s var(--ease-out) both; }
.toc a { display: flex; align-items: center; gap: 8px; }
.toc a .ico { color: var(--muted); }
.toc a.is-active .ico { color: var(--green-deep); }
.jump a { display: inline-flex; align-items: center; gap: 8px; transition: background-color .2s, color .2s, border-color .2s; }
.indp h2 { display: flex; align-items: center; gap: 12px; }
.indp__hico { color: var(--green-deep); }
.indp__stages { margin-bottom: 22px; }
.indp__img { overflow: hidden; border-radius: 8px; }
.indp__img img { transition: transform .8s var(--ease-out); }
.indp:hover .indp__img img { transform: scale(1.04); }
.indp__img--art { aspect-ratio: 4 / 3; display: flex; align-items: center; justify-content: center; gap: 16px; background: var(--moss); color: var(--mint); }
.indp--noimg, .indp { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
.indp--flip { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }
.indp-chain { padding-top: 48px; }
.question { display: flex; gap: 14px; align-items: flex-start; }
.question > .ico { color: var(--green-deep); margin-top: 2px; }
.gapcard__item { display: flex; align-items: center; gap: 10px; }
.gapcard__item .ico { color: var(--warn-fg); }
.gapcard__src { display: flex; align-items: center; gap: 8px; }
.facts dt { display: flex; align-items: center; gap: 10px; }
.facts dt .ico { color: var(--green-deep); }
.tier-note { align-items: center; }
.tier-note__core .ico, .tier-note__ext .ico { color: var(--green-deep); }
.tier-note__plus { color: var(--muted); }
.callout__ico { width: 52px; height: 52px; border-radius: 12px; display: grid; place-items: center; background: var(--ink); color: var(--mint); }
.prose .note { display: flex; gap: 12px; align-items: flex-start; }
.prose .note .ico { color: var(--green-deep); margin-top: 3px; }

/* ------------------------------------------------ responsive (v2) */
@media (max-width: 1180px) {
  .icards, .scards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ptiles { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .stepper { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 20px; }
  .stepper__item:nth-child(3)::after { display: none; }
  .gtiles { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .sec--paper > .container > .ctiles { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .flow2 { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 40px; }
  .flow2::before { display: none; }
  .iccards--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 960px) {
  .cv { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .cv .wires, .ig .wires { display: none; }
  .has-wires .wgap { visibility: visible; }
  .wgap { transform: rotate(90deg); }
  .cv__src, .cv__aud { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }
  .cv__node:hover, .cv__node--aud:hover { transform: none; }
  .ig { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .ig__src { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .vc { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 24px; }
  .vc__stage:nth-child(3)::after { display: none; }
  .lv__tiers { grid-template-columns: minmax(0, 1fr); }
  .lv__join { transform: rotate(90deg); }
  .indp, .indp--flip, .indp--noimg { grid-template-columns: minmax(0, 1fr); }
  .tier-ext .ctiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  .icards, .scards, .ptiles, .gtiles, .iccards--4, .iccards--3, .iccards--2 { grid-template-columns: minmax(0, 1fr); }
  .ptiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ptile:last-child { grid-column: 1 / -1; }
  .stepper { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .stepper__item::after { display: none !important; }
  .flow2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .vc { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .vc__stage::after { display: none; }
  .ig__src { grid-template-columns: minmax(0, 1fr); gap: 8px; }
.ig__s { padding: 8px 12px; }
  .sec--paper > .container > .ctiles, .tier-ext .ctiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .spec-tiles { grid-template-columns: minmax(0, 1fr); }
  .srcmap2 > li { grid-template-columns: minmax(0, 1fr); gap: 4px; }
  .srcmap2__line { width: 2px; height: 16px; margin-left: 24px; background: var(--green); }
  .srcmap2__line::after { display: none; }
  .tiers2 li { width: 100%; }
  .rtl__legend { grid-template-columns: minmax(0, 1fr); }
  .lv__units { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}
@media (hover: none) { .ctile__note { max-height: none; opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .hero__media { transform: none !important; }
  .wires__dot { display: none; }
}
.ps-tabs .tabs-ink { padding: 0; }
.ptile__text, .iccard__text, .stepper__text, .icard__short, .scard__text, .flow2__text { text-wrap: pretty; }

.hero__video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .8s ease; }
.hero__video.is-playing { opacity: 1; }
@media (prefers-reduced-motion: reduce) { .hero__video { display: none; } }
.cv__node { flex-wrap: wrap; row-gap: 6px; }
.cv__txt { overflow-wrap: break-word; hyphens: auto; -webkit-hyphens: auto; flex: 1 1 8em; }

/* ================================================================ v3: hero video */
.motion .hero--video .hero__video { animation: heroZoom 2.6s var(--ease-out) both; }
.hero--video .hero__shade {
  background:
    linear-gradient(90deg, rgba(10, 27, 31, 0.86) 0%, rgba(10, 27, 31, 0.64) 36%, rgba(10, 27, 31, 0.26) 66%, rgba(10, 27, 31, 0.34) 100%),
    linear-gradient(0deg, rgba(10, 27, 31, 0.82) 0%, rgba(10, 27, 31, 0) 36%),
    linear-gradient(180deg, rgba(10, 27, 31, 0.6) 0%, rgba(10, 27, 31, 0) 24%); }
@media (max-width: 960px) {
  .hero--video .hero__shade { background: linear-gradient(180deg, rgba(10, 27, 31, 0.8) 0%, rgba(10, 27, 31, 0.7) 45%, rgba(10, 27, 31, 0.55) 70%, rgba(10, 27, 31, 0.72) 100%); }
}

/* ================================================================ v3: mega menu */
:root { --mega-bg: #0C2227; --mega-line: rgba(255, 255, 255, 0.09); --mega-card: rgba(255, 255, 255, 0.035); --mega-muted: rgba(255, 255, 255, 0.68); --mega-accent: #A9D8B1; }
.mainnav__item.has-mega { position: static; }
.mainnav__item.has-mega > .mainnav__link { position: relative; }
.mainnav__item.has-mega > .mainnav__link::after { content: ""; position: absolute; left: 14px; right: 14px; bottom: -1px; height: 2px; border-radius: 2px; background: var(--green); transform: scaleX(0); transform-origin: center; transition: transform .3s var(--ease-out); }
.mainnav__item.has-mega.is-open > .mainnav__link::after { transform: scaleX(1); }
.mainnav__item.has-mega.is-open > .mainnav__link { background: transparent; }
.site-header.is-mega { background: var(--mega-bg); box-shadow: none; }

.mega-bg { position: absolute; left: 0; right: 0; top: 100%; height: 0; z-index: 0; overflow: hidden; pointer-events: none;
  background: radial-gradient(1200px 380px at 78% -10%, rgba(113, 169, 118, 0.10), transparent 70%), var(--mega-bg);
  border-top: 1px solid var(--mega-line); box-shadow: 0 60px 90px -40px rgba(3, 10, 12, 0.7);
  transition: height .42s cubic-bezier(.2, .8, .2, 1), opacity .25s ease; opacity: 0; }
.site-header.is-mega .mega-bg { opacity: 1; }
.mega { position: absolute; left: 0; right: 0; top: 100%; z-index: 1; color: var(--white); max-height: calc(100vh - var(--header-h) - 12px); overflow-y: auto; overscroll-behavior: contain;
  opacity: 0; visibility: hidden; pointer-events: none; transform: translateY(-8px);
  transition: opacity .2s ease, transform .35s var(--ease-out), visibility 0s linear .35s; }
.mainnav__item.is-open > .mega { opacity: 1; visibility: visible; pointer-events: auto; transform: none; transition: opacity .28s ease .05s, transform .42s var(--ease-out), visibility 0s; }
html:not(.js) .mega { background: var(--mega-bg); }
html:not(.js) .has-mega:hover > .mega, html:not(.js) .has-mega:focus-within > .mega { opacity: 1; visibility: visible; pointer-events: auto; transform: none; }

.mega__inner { max-width: 1440px; margin-inline: auto; padding: 40px var(--gutter) 46px; display: grid; gap: 40px; align-items: stretch; }
.mega__inner--3 { grid-template-columns: minmax(200px, 250px) minmax(0, 1fr) minmax(250px, 300px); }
.mega__inner--2 { grid-template-columns: minmax(200px, 250px) minmax(0, 1fr); }
.mega a { color: inherit; text-decoration: none; }
.mega :focus-visible { outline: 2px solid var(--green); outline-offset: 3px; }
.mega ul, .mega ol { list-style: none; }

.mega__intro { padding-right: 32px; border-right: 1px solid var(--mega-line); display: flex; flex-direction: column; }
.mega__eyebrow { font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--mega-accent); }
.font-cjk .mega__eyebrow { letter-spacing: .08em; font-size: 13px; }
.mega__title { margin-top: 12px; font: var(--w-display) 26px/1.25 var(--f-display); letter-spacing: var(--ls-display); text-wrap: balance; }
.font-cjk .mega__title { font-size: 24px; line-height: 1.4; word-break: keep-all; }
.mega__text { margin-top: 12px; font-size: 14.5px; line-height: 1.6; color: var(--mega-muted); }
.mega__more { margin-top: auto; padding-top: 24px; display: inline-flex; align-items: center; gap: 10px; font-weight: 500; font-size: 15px; color: var(--white); }
.mega__more svg { width: 18px; height: 18px; color: var(--green); transition: transform .25s var(--ease-out); }
.mega__more:hover svg { transform: translateX(4px); }
.mega__more:hover span { text-decoration: underline; text-underline-offset: 4px; }

/* v7: one card system for every panel — real-scene photo, icon chip, optional tag, name, one line, optional sub-links */
.mega__inner { grid-template-columns: minmax(200px, 250px) minmax(0, 1fr); }
.mega__links { margin-top: auto; padding-top: 24px; display: grid; gap: 10px; justify-items: start; }
.mega__links .mega__more { margin-top: 0; padding-top: 0; }
.mega__sub { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: var(--mega-muted); }
.mega__sub .ico { color: var(--mega-accent); flex: none; }
.mega__sub:hover { color: var(--white); }
.mtiles { display: grid; gap: 18px; align-items: start; }
.mtiles--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
.mtiles--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.mtiles--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.mtile { display: flex; flex-direction: column; min-width: 0; }
.mtile__main { display: grid; gap: 6px; align-content: start; }
.mtile__media { position: relative; display: block; aspect-ratio: 16 / 10; border-radius: 14px; overflow: hidden; background: rgba(255, 255, 255, 0.06); margin-bottom: 10px; }
.mtiles--2 .mtile__media { aspect-ratio: 21 / 9; }
.mtiles--4 .mtile__media { aspect-ratio: 4 / 3; }
.mtile__media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .8s var(--ease-out), filter .45s ease; filter: saturate(.82) brightness(.86); }
.mtile__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(10, 27, 31, 0.62), rgba(10, 27, 31, 0) 58%); pointer-events: none; }
.mtile__icon { position: absolute; z-index: 1; left: 12px; bottom: 12px; width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; background: rgba(12, 34, 39, 0.72); color: var(--mega-accent); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); border: 1px solid rgba(255, 255, 255, 0.14); }
.mtile__tag { position: absolute; z-index: 1; right: 12px; top: 12px; font-size: 11.5px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; padding: 4px 10px; border-radius: 999px; background: rgba(12, 34, 39, 0.72); color: rgba(255, 255, 255, 0.86); border: 1px solid rgba(255, 255, 255, 0.16); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.font-cjk .mtile__tag { letter-spacing: .04em; font-size: 12px; }
.mtile__tag--core { background: var(--green); border-color: var(--green); color: var(--ink); }
.mtile__tag--sample { background: #F4D9A6; border-color: #F4D9A6; color: #5E3A00; }
.mtile__name { display: flex; align-items: center; gap: 8px; font: 500 18px/1.35 var(--f-display); transition: color .2s ease; min-width: 0; }
.mtile__name > span, .mtile__text { -webkit-hyphens: auto; hyphens: auto; overflow-wrap: break-word; min-width: 0; }
.mtiles--2 .mtile__name, .mtiles--3 .mtile__name { font-size: 20px; }
.mtile__name svg { width: 18px; height: 18px; flex: none; color: var(--green); opacity: 0; transform: translateX(-6px); transition: opacity .25s ease, transform .25s var(--ease-out); }
.mtile__text { font-size: 13.5px; line-height: 1.55; color: var(--mega-muted); }
.mtile__main:hover .mtile__media img, .mtile__main:focus-visible .mtile__media img { transform: scale(1.06); filter: saturate(1) brightness(.98); }
.mtile__main:hover .mtile__name, .mtile__main:focus-visible .mtile__name { color: var(--mega-accent); }
.mtile__main:hover .mtile__name svg, .mtile__main:focus-visible .mtile__name svg { opacity: 1; transform: none; }
.mtile__links { margin-top: 14px; padding-top: 6px; border-top: 1px solid var(--mega-line); display: grid; }
.mtile__links a, .mtile__note { display: flex; align-items: center; gap: 10px; padding: 8px 10px; margin-inline: -10px; border-radius: 9px; font-size: 14px; line-height: 1.4; color: rgba(255, 255, 255, 0.84); transition: background-color .2s ease, color .2s ease; }
.mtile__links .ico { color: var(--mega-accent); flex: none; }
.mtile__links a:hover { background: rgba(255, 255, 255, 0.06); color: var(--white); }
.mtile__note { color: var(--mega-muted); font-style: normal; }
.mtile__note .ico { color: rgba(255, 255, 255, 0.45); }

/* entrance */
@keyframes megaIn { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
.motion .mainnav__item.is-open .mega__intro,
.motion .mainnav__item.is-open .mega__main > * { animation: megaIn .5s var(--ease-out) both; }
.motion .mainnav__item.is-open .mega__main > :nth-child(1) { animation-delay: .04s; }
.motion .mainnav__item.is-open .mega__main > :nth-child(2) { animation-delay: .08s; }
.motion .mainnav__item.is-open .mega__main > :nth-child(3) { animation-delay: .12s; }
.motion .mainnav__item.is-open .mega__main > :nth-child(4) { animation-delay: .16s; }

/* scrim behind the open panel */
.mega-scrim { position: fixed; inset: 0; z-index: 45; background: rgba(4, 12, 14, 0.5); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); opacity: 0; visibility: hidden; transition: opacity .3s ease, visibility 0s linear .3s; }
body.mega-open .mega-scrim { opacity: 1; visibility: visible; transition: opacity .3s ease, visibility 0s; }

@media (max-width: 1320px) {
  .mega__inner { gap: 28px; padding-top: 32px; padding-bottom: 36px; }
  .mega__inner { grid-template-columns: minmax(180px, 210px) minmax(0, 1fr); }
  .mega__intro { padding-right: 24px; }
  .mega__title { font-size: 22px; }
  .mtiles { gap: 14px; }
  .mtiles--2, .mtiles--3 { gap: 16px; }
  .mtiles--2 .mtile__name, .mtiles--3 .mtile__name { font-size: 18px; }
}
@media (max-width: 1120px) { .mega-scrim, .mega-bg { display: none; } }
@media (prefers-reduced-motion: reduce) { .mega, .mega-bg, .mega-scrim { transition: none; } }

/* ================================================================ v3: mobile menu items with icons */
.mnav__sub { gap: 4px; padding-bottom: 18px; }
.mnav__sub a { justify-content: flex-start; align-items: center; gap: 14px; padding: 10px 12px; margin-inline: -12px; border-radius: 12px; color: rgba(255, 255, 255, 0.86); transition: background-color .2s ease, color .2s ease; }
.mnav__sub a:hover, .mnav__sub a:active { background: rgba(255, 255, 255, 0.06); color: var(--white); }
.mnav__ico { flex: none; width: 36px; height: 36px; border-radius: 10px; display: grid; place-items: center; background: rgba(113, 169, 118, 0.16); color: var(--mint); }
.mnav__thumb { flex: none; width: 52px; height: 38px; border-radius: 8px; overflow: hidden; background: rgba(255, 255, 255, 0.08); }
.mnav__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; filter: saturate(.85) brightness(.9); }
.mnav__label { flex: 1; min-width: 0; line-height: 1.35; }
.mnav__sub .mnav__tier { flex: none; }
.mnav__toggle[aria-expanded="true"] + .mnav__sub li { animation: fadeSlide .28s var(--ease-out) both; }
.mnav__toggle[aria-expanded="true"] + .mnav__sub li:nth-child(2) { animation-delay: .04s; }
.mnav__toggle[aria-expanded="true"] + .mnav__sub li:nth-child(3) { animation-delay: .08s; }
.mnav__toggle[aria-expanded="true"] + .mnav__sub li:nth-child(4) { animation-delay: .12s; }
.mnav__toggle[aria-expanded="true"] + .mnav__sub li:nth-child(5) { animation-delay: .16s; }
@media (prefers-reduced-motion: reduce) { .mnav__toggle[aria-expanded="true"] + .mnav__sub li { animation: none; } }

/* ================================================================ v4: interaction system
   One interaction per purpose instead of the same reveal + hover-lift everywhere.
   Static where movement adds nothing. */

/* ---- retire the generic patterns */
.motion [data-reveal].is-pending { opacity: 1; transform: none; }
.ptile, .stepper__item, .iccard, .gtile, .spec-tiles li, .lv__tier { transition: border-color .2s ease, background-color .2s ease; }
.ptile:hover, .stepper__item:hover, .iccard:hover, .gtile:hover, .spec-tiles li:hover, .lv__tier:hover { transform: none; box-shadow: none; }
.ptile:hover, .iccard:hover, .gtile:hover { border-color: var(--line); }
.ptile:hover .ptile__ico { background: var(--ink); color: var(--mint); transform: none; }
.stepper__item:hover { border-color: var(--line); }
.stepper__item:hover .stepper__ico { background: var(--mint-pale); color: var(--green-deep); }
.vc__stage:hover .vc__ico { transform: none; }
.flow2__step:hover .flow2__dot { transform: none; }

/* ---- titles: one mask reveal for the page title only (hero + inner page headers) */
.hero__line { overflow: hidden; padding-bottom: .12em; margin-bottom: -.12em; }
.hero__line-in { display: block; }
.phead__title { overflow: hidden; padding-bottom: .1em; margin-bottom: -.1em; }
.phead__title-in { display: block; }
@keyframes maskUp { from { transform: translateY(108%); } to { transform: none; } }
.motion .hero__line, .motion .phead__title { animation: none; }
.motion .hero__line-in { animation: maskUp 1.15s cubic-bezier(.19, 1, .22, 1) both; animation-delay: calc(var(--i) * 130ms + 120ms); }
.motion .phead__title-in { animation: maskUp 1s cubic-bezier(.19, 1, .22, 1) .05s both; }

/* ---- smart header */
:root { --stick: var(--header-h); }
body.hdr-hidden { --stick: 0px; }
.site-header { transition: background-color .25s ease, box-shadow .25s ease, transform .45s cubic-bezier(.2, .7, .2, 1); }
.site-header.is-hidden { transform: translateY(-100%); }
.jump { top: calc(var(--stick) + env(safe-area-inset-top, 0px)); transition: top .45s cubic-bezier(.2, .7, .2, 1); }
.doc__side { top: calc(var(--stick) + 36px); transition: top .45s cubic-bezier(.2, .7, .2, 1); }
.sticky, .article__meta dl, .contact__aside { top: calc(var(--stick) + 28px); transition: top .45s cubic-bezier(.2, .7, .2, 1); }
.readbar { position: fixed; left: 0; right: 0; top: calc(var(--stick) + env(safe-area-inset-top, 0px)); z-index: 49; height: 2px; pointer-events: none; opacity: 0; transition: opacity .3s ease, top .45s cubic-bezier(.2, .7, .2, 1); }
.readbar.is-on { opacity: 1; }
.readbar span { display: block; height: 100%; background: var(--green); transform-origin: 0 50%; transform: scaleX(0); }

/* ---- problems: scroll-scrubbed convergence */
.cv .wires__path { transition: none; }
.cv__node, .cv__node--aud { transition: border-color .2s ease; }
.cv__node:hover, .cv__node--aud:hover { transform: none; box-shadow: none; }
.motion .cv .cv__node { opacity: calc(.32 + .68 * var(--lit, 1)); transform: translateX(calc((1 - var(--lit, 1)) * -14px)); }
.motion .cv .cv__aud .cv__node { transform: translateX(calc((1 - var(--lit, 1)) * 14px)); }
.motion .cv .cv__card, .motion .cv .cv__card:hover { transform: scale(calc(.92 + .08 * var(--hub, 1))); box-shadow: 0 0 0 calc(var(--hub, 1) * 12px) rgba(113, 169, 118, .1), 0 28px 50px -26px rgba(15, 38, 43, .55); }
.cv:not(.is-live) .wires__dot { visibility: hidden; }
.cv__card { position: relative; }
.cv__card::after { content: ""; position: absolute; inset: -7px; border-radius: 22px; border: 1.5px solid rgba(113, 169, 118, .6); opacity: 0; pointer-events: none; }
/* looping data flow (3.6s, same as LOOP in site.js): sources arrive, the passport updates, audiences receive */
.motion .cv.is-live .cv__card::after { animation: cvPing 3.6s var(--ease-out) infinite; }
.motion .cv.is-live .cv__update .ico--spin { animation: cvSpin 3.6s var(--ease-io) infinite; }
.motion .cv.is-live .cv__node.is-pending { animation: pulse 3.6s ease-in-out infinite; }
@keyframes cvPing { 0%, 38% { opacity: 0; transform: scale(.97); } 46% { opacity: 1; } 70%, 100% { opacity: 0; transform: scale(1.06); } }
@keyframes cvSpin { 0%, 40% { transform: rotate(0); } 60%, 100% { transform: rotate(360deg); } }

/* ---- solution demo: panels slide in the direction of the chosen tab */
@keyframes panelNext { from { opacity: 0; transform: translateX(44px); } to { opacity: 1; transform: none; } }
@keyframes panelPrev { from { opacity: 0; transform: translateX(-44px); } to { opacity: 1; transform: none; } }
.demo__panel:not([hidden]), .sp__panel:not([hidden]) { animation: none; }
.motion [role="tabpanel"][data-dir="next"]:not([hidden]) { animation: panelNext .55s cubic-bezier(.2, .7, .2, 1) both; }
.motion [role="tabpanel"][data-dir="prev"]:not([hidden]) { animation: panelPrev .55s cubic-bezier(.2, .7, .2, 1) both; }
.ring.is-armed .ring__fg { animation: none; stroke-dasharray: 0 100; }
.ring.is-armed.is-go .ring__fg { stroke-dasharray: var(--p) 100; animation: ringFill 1.1s var(--ease-out) both; }

/* ---- industries (home): expanding gallery on desktop, swipe row on phones */
@media (min-width: 1100px) {
  .icards[data-gallery] { display: flex; gap: 14px; height: 480px; counter-reset: ind; }
  .icards[data-gallery] .icard { flex: 1 1 0; min-width: 0; overflow: hidden; border: 0; border-radius: 18px; background: var(--ink); color: var(--white); counter-increment: ind; transition: flex-grow .8s cubic-bezier(.2, .7, .2, 1); }
  .icards[data-gallery] .icard:hover, .icards[data-gallery] .icard:focus-visible { transform: none; box-shadow: none; }
  .icards[data-gallery] .icard.is-active { flex-grow: 2.6; }
  .icards[data-gallery] .icard::before { content: counter(ind, decimal-leading-zero); position: absolute; z-index: 2; left: 24px; top: 20px; font: 500 13px/1 var(--f-body); letter-spacing: .12em; color: rgba(255, 255, 255, .72); }
  .icards[data-gallery] .icard::after { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(10, 27, 31, .25) 0%, rgba(10, 27, 31, 0) 28%, rgba(10, 27, 31, .15) 48%, rgba(10, 27, 31, .9) 100%); transition: opacity .6s ease; }
  .icards[data-gallery] .icard__media { position: absolute; inset: 0; aspect-ratio: auto; background: var(--ink); overflow: hidden; overflow: clip; }
  .icards[data-gallery] .icard__media img { transform: scale(1.04); filter: saturate(.7) brightness(.72); transition: transform 1.4s cubic-bezier(.2, .7, .2, 1), filter .7s ease; }
  .icards[data-gallery] .icard.is-active .icard__media img { transform: scale(1.1); filter: none; }
  .icards[data-gallery] .icard__body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 26px 26px 28px; gap: 10px; }
  .icards[data-gallery] .icard__title { color: var(--white); font-size: 18px; line-height: 1.3; text-wrap: balance; -webkit-hyphens: auto; hyphens: auto; overflow-wrap: break-word; transition: font-size .6s cubic-bezier(.2, .7, .2, 1); }
  .icards[data-gallery] .icard.is-active .icard__title { font-size: 24px; }
  .icards[data-gallery] .icard:not(.is-active) .icard__short { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
  .icards[data-gallery] .icard__short { color: rgba(255, 255, 255, .8); }
  .icards[data-gallery] .icard .chips, .icards[data-gallery] .icard__roles { max-height: 0; opacity: 0; overflow: hidden; transform: translateY(10px); transition: max-height .6s cubic-bezier(.2, .7, .2, 1), opacity .35s ease, transform .5s cubic-bezier(.2, .7, .2, 1); }
  .icards[data-gallery] .icard.is-active .chips, .icards[data-gallery] .icard.is-active .icard__roles { max-height: 180px; opacity: 1; transform: none; transition-delay: .25s; }
  .icards[data-gallery] .icard .chips li { background: rgba(255, 255, 255, .1); border-color: rgba(255, 255, 255, .16); color: var(--white); }
  .icards[data-gallery] .icard .chips .ico { color: var(--mint); }
  .icards[data-gallery] .icard__roles { color: rgba(255, 255, 255, .72); }
  .icards[data-gallery] .icard__roles .ico { color: var(--mint); }
  .icards[data-gallery] .icard__go { top: 16px; right: 16px; bottom: auto; background: rgba(255, 255, 255, .12); color: var(--white); border: 1px solid rgba(255, 255, 255, .24); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
  .icards[data-gallery] .icard.is-active .icard__go { background: var(--green); border-color: var(--green); transform: rotate(-45deg); }
  .icards[data-gallery] .icard:hover .icard__go { transform: rotate(-45deg); }
}
@media (max-width: 719px) {
  .icards[data-gallery] { display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; margin-inline: calc(var(--gutter) * -1); padding: 4px var(--gutter) 14px; scroll-padding-inline: var(--gutter); scrollbar-width: none; }
  .icards[data-gallery]::-webkit-scrollbar { display: none; }
  .icards[data-gallery] .icard { flex: 0 0 84%; scroll-snap-align: start; }
  .icards[data-gallery] .icard:hover { transform: none; }
}

/* ---- workflow: the line fills with the scroll and lights each step as it arrives */
.flow2::before, .motion .flow2::before, .motion .flow2.is-pending::before { transform-origin: 0 50%; transform: scaleX(var(--p, 1)); transition: transform .18s linear; }
.motion .flow2 .flow2__dot, .motion .flow2 .flow2__title, .motion .flow2 .flow2__text { transition: background-color .45s ease, color .45s ease, box-shadow .45s ease, opacity .45s ease; }
.motion .flow2 .flow2__step:not(.is-lit) .flow2__dot { opacity: .42; }
.motion .flow2 .flow2__step:not(.is-lit) .flow2__title, .motion .flow2 .flow2__step:not(.is-lit) .flow2__text { opacity: .45; }
.motion .flow2 .flow2__step.is-lit .flow2__dot { background: var(--white); color: var(--ink); box-shadow: 0 0 0 7px rgba(255, 255, 255, .1); }

/* ---- service cards: a soft light follows the cursor instead of lifting the card */
.scard { overflow: hidden; isolation: isolate; transition: border-color .3s ease; }
.scard:hover, .scard:focus-visible { transform: none; box-shadow: none; border-color: var(--line); }
.scard:hover .scard__ico { transform: none; background: var(--ink); color: var(--mint); }
.scard::before { content: ""; position: absolute; inset: 0; z-index: -1; background: radial-gradient(300px circle at var(--mx, 50%) var(--my, -20%), rgba(113, 169, 118, .16), transparent 72%); opacity: 0; transition: opacity .4s ease; }
.scard::after { content: ""; position: absolute; inset: 0; border-radius: inherit; padding: 1px; pointer-events: none; background: radial-gradient(240px circle at var(--mx, 50%) var(--my, -20%), rgba(62, 130, 82, .95), transparent 70%); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0); opacity: 0; transition: opacity .4s ease; }
.no-touch .scard:hover::before, .no-touch .scard:hover::after { opacity: 1; }
.scard:focus-visible::after { opacity: 1; }

/* ---- core product card: tilts towards the cursor */
.tier-core { transform: perspective(1200px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)); transform-style: preserve-3d; transition: transform .7s cubic-bezier(.2, .7, .2, 1), background-color .25s; }
.tier-core:hover { transform: perspective(1200px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)); }
.tier-core.is-tilting { transition: transform .12s linear, background-color .25s; }
.tier-core { outline: 1px solid transparent; -webkit-backface-visibility: hidden; backface-visibility: hidden; }
.tier-core::after { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; background: radial-gradient(420px circle at var(--gx, 50%) var(--gy, 0%), rgba(255, 255, 255, .11), transparent 60%); opacity: 0; transition: opacity .35s ease; }
.tier-core.is-tilting::after { opacity: 1; }

/* ---- other categories: the icon swaps to an arrow */
.ctile { transition: border-color .25s ease; }
.ctile:hover, .ctile:focus-visible { transform: none; box-shadow: none; border-color: var(--ink); }
.ctile__ico { overflow: hidden; place-items: start center; transition: background-color .3s ease, color .3s ease; }
.ctile:hover .ctile__ico, .ctile:focus-visible .ctile__ico { transform: none; background: var(--ink); color: var(--mint); }
.ctile__swap { display: grid; grid-template-rows: 48px 48px; justify-items: center; align-items: center; transition: transform .5s cubic-bezier(.2, .7, .2, 1); }
.ctile:hover .ctile__swap, .ctile:focus-visible .ctile__swap { transform: translateY(-48px); }

/* ---- article list: an underline draws under the title */
.alist__item a:hover { background: transparent; padding-inline: 0; }
.alist__title { background-image: linear-gradient(currentColor, currentColor); background-repeat: no-repeat; background-position: 0 100%; background-size: 0% 1px; transition: background-size .5s cubic-bezier(.2, .7, .2, 1); }
.alist__item a:hover .alist__title, .alist__item a:focus-visible .alist__title { text-decoration: none; background-size: 100% 1px; }
.alist__item a:hover .alist__go { transform: translateX(8px); }

/* ---- FAQ: height animates (JS); no sideways shift */
.faq__item summary:hover { padding-left: 0; }
.faq__a { padding: 0 48px 0 0; overflow: hidden; }
.faq__a > p { padding-bottom: 24px; }
.faq__item[open] .faq__a { animation: none; }
.faq__icon { transition: transform .35s cubic-bezier(.2, .7, .2, 1), background-color .25s, border-color .25s; }
.faq__item[open]:not(.is-closing) .faq__icon { transform: rotate(180deg); }

/* ---- closing call to action: slow zoom with the scroll, a magnetic main button */
.cta-band__img img { transform: scale(calc(1.16 - .16 * var(--p, 1))); transform-origin: 40% 60%; }
.btn[data-magnetic] { transition: transform .45s cubic-bezier(.2, .7, .2, 1), background-color .2s; }

/* ---- solution page: model / batch / unit is a click selection */
.lv__tier { cursor: pointer; }
.lv__tier[aria-pressed="true"] { background: var(--white); }
.lv__tier[aria-pressed="false"] .lv__model, .lv__tier[aria-pressed="false"] .lv__batches, .lv__tier[aria-pressed="false"] .lv__units { opacity: .55; transition: opacity .3s ease; }

/* ---- who sees what: columns light up (hover, or the role picked above) */
.amx td, .amx th[data-col] { transition: background-color .25s ease; }
.amx[data-hover-col="0"] [data-col="0"], .amx[data-hover-col="1"] [data-col="1"], .amx[data-hover-col="2"] [data-col="2"] { background: rgba(15, 38, 43, .04); }
.amx[data-active-col="0"] [data-col="0"], .amx[data-active-col="1"] [data-col="1"], .amx[data-active-col="2"] [data-col="2"] { background: rgba(113, 169, 118, .13); }
.amx[data-active-col="0"] th[data-col="0"], .amx[data-active-col="1"] th[data-col="1"], .amx[data-active-col="2"] th[data-col="2"] { box-shadow: inset 0 -2px 0 var(--green); }

/* ---- industries page: photographs wipe in */
.motion .indp .indp__img { transition: clip-path 1.2s cubic-bezier(.77, 0, .18, 1); clip-path: inset(0 0 0 0); }
.motion .indp.is-pending .indp__img { clip-path: inset(0 100% 0 0); }
.motion .indp--flip.is-pending .indp__img { clip-path: inset(0 0 0 100%); }
.motion .indp .indp__img img { transition: transform 1.8s cubic-bezier(.2, .7, .2, 1); }
.motion .indp.is-pending .indp__img img { transform: scale(1.18); }
.indp:hover .indp__img img { transform: none; }

/* ---- services page: data keeps flowing through the integration diagram */
@keyframes dashFlow { to { stroke-dashoffset: -24; } }
.ig.is-flowing .wires__path { stroke-dasharray: 4 8; stroke-dashoffset: 0; transition: none; animation: dashFlow 1.3s linear infinite; }

/* ---- sample passport: copy the ID */
.copy { position: relative; display: inline-grid; place-items: center; width: 30px; height: 30px; margin-left: 10px; vertical-align: middle; border-radius: 8px; border: 1px solid var(--line); background: var(--white); color: var(--muted); cursor: pointer; transition: border-color .2s, color .2s; }
.copy:hover, .copy:focus-visible { border-color: var(--ink); color: var(--ink); }
.copy .ico { grid-area: 1 / 1; transition: opacity .2s ease, transform .3s cubic-bezier(.2, .7, .2, 1); }
.copy .ico:nth-child(2) { opacity: 0; transform: scale(.5); }
.copy.is-done .ico:first-child { opacity: 0; transform: scale(.5); }
.copy.is-done .ico:nth-child(2) { opacity: 1; transform: none; color: var(--green-deep); }
.copy__tip { position: absolute; bottom: calc(100% + 8px); left: 50%; transform: translate(-50%, 4px); padding: 4px 8px; border-radius: 6px; background: var(--ink); color: var(--white); font: 500 12px/1.2 var(--f-body); white-space: nowrap; opacity: 0; pointer-events: none; transition: opacity .2s ease, transform .25s ease; }
.copy.is-done .copy__tip { opacity: 1; transform: translate(-50%, 0); }

@media (prefers-reduced-motion: reduce) {
  .site-header, .jump, .doc__side, .sticky, .readbar, .icards[data-gallery] .icard, .tier-core, .ctile__swap { transition: none; }
  .cta-band__img img { transform: none; }
  .ig.is-flowing .wires__path { animation: none; stroke-dasharray: none; }
}

/* ---- demo tabs on phones: one scrollable row, so the sliding ink stays under its tab */
@media (max-width: 719px) {
  .demo__tabs { flex-wrap: nowrap; overflow-x: auto; gap: 24px; margin-right: calc(var(--gutter) * -1); padding-right: var(--gutter); scrollbar-width: none; }
  .demo__tabs::-webkit-scrollbar { display: none; }
  .demo__tabs [role="tab"] { flex: none; white-space: nowrap; font-size: 16px; }
}

/* ================================================================ v5: login entry, sharing, footer, pricing */

/* ---- header: client login */
.hdr-login { display: inline-flex; align-items: center; gap: 8px; height: 44px; padding: 0 12px; border-radius: 22px; color: var(--white); text-decoration: none; font: 500 15px/1 var(--f-body); white-space: nowrap; transition: background-color .2s ease; }
.hdr-login:hover, .hdr-login[aria-current="page"] { background: rgba(255, 255, 255, .08); }
.hdr-login .ico { flex: none; }
@media (max-width: 1360px) {
  .hdr-login { width: 44px; padding: 0; justify-content: center; }
  .hdr-login__t { display: none; }
}
.mpanel__login { display: flex; align-items: center; gap: 12px; margin-top: 18px; padding: 16px 0 4px; border-top: 1px solid var(--line-dark); color: var(--white); text-decoration: none; font-weight: 500; }
.mpanel__login svg:last-child { margin-left: auto; color: var(--green); }

/* ---- share buttons (plain links; see site.js for the enhancements) */
.share { display: flex; align-items: center; flex-wrap: wrap; gap: 12px 16px; }
.share__label { font-size: 13px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.font-cjk .share__label { letter-spacing: .04em; }
.share__list, .prose .share__list { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; padding: 0; margin: 0; }
.share__list > li { position: relative; margin: 0; }
.share__btn { position: relative; width: 40px; height: 40px; padding: 0; border-radius: 50%; display: grid; place-items: center; border: 1px solid var(--line); background: var(--white); color: var(--ink); cursor: pointer; text-decoration: none; transition: background-color .2s ease, color .2s ease, border-color .2s ease; }
.share__btn:hover, .share__btn:focus-visible, .share__wx.is-open > .share__btn { background: var(--ink); color: var(--white); border-color: var(--ink); }
.share__btn .ico { width: 18px; height: 18px; }
.share__btn[data-tip]::after { content: attr(data-tip); position: absolute; left: 50%; bottom: calc(100% + 8px); transform: translate(-50%, 4px); background: var(--ink); color: var(--white); font: 500 12px/1 var(--f-body); letter-spacing: 0; text-transform: none; padding: 7px 9px; border-radius: 6px; white-space: nowrap; opacity: 0; pointer-events: none; transition: opacity .15s ease, transform .15s ease; z-index: 6; }
.share__btn[data-tip-now]::after { content: attr(data-tip-now); }
@media (hover: hover) { .share__btn:hover::after { opacity: 1; transform: translate(-50%, 0); } }
.share__btn:focus-visible::after, .share__btn.is-done::after { opacity: 1; transform: translate(-50%, 0); }
.share__wx.is-open > .share__btn::after { opacity: 0; }
.share__copy .ico--b { display: none; }
.share__btn.is-done { background: var(--mint-pale); border-color: var(--green); color: var(--green-deep); }
.share__btn.is-done .ico--a { display: none; }
.share__btn.is-done .ico--b { display: block; }
html:not(.js) .share__wx, html:not(.js) .share__copy { display: none; }
.share__pop { position: absolute; left: 50%; bottom: calc(100% + 12px); z-index: 20; width: 220px; transform: translateX(calc(-50% + var(--dx, 0px))); transform-origin: 50% 100%; background: var(--white); color: var(--ink); border-radius: 14px; box-shadow: var(--shadow-pop), 0 0 0 1px rgba(15, 38, 43, .06); padding: 16px 16px 14px; text-align: center; }
.share__pop::after { content: ""; position: absolute; left: calc(50% - var(--dx, 0px)); top: 100%; transform: translateX(-50%); border: 8px solid transparent; border-top-color: var(--white); }
.share__wx.is-below .share__pop { bottom: auto; top: calc(100% + 12px); }
.share__wx.is-below .share__pop::after { top: auto; bottom: 100%; border-top-color: transparent; border-bottom-color: var(--white); }
.share__pop-h { display: flex; align-items: center; justify-content: center; gap: 6px; font-weight: 600; font-size: 14px; margin-bottom: 10px; }
.share__pop-h .ico { color: var(--green-deep); }
.share__qr svg, .share__qr img { display: block; width: 164px; height: 164px; margin: 0 auto; }
.share__pop-t { font-size: 12.5px; line-height: 1.5; color: var(--muted); margin-top: 10px; }
@keyframes shareIn { from { opacity: 0; scale: .96; } to { opacity: 1; scale: 1; } }
.share__wx.is-below .share__pop { transform-origin: 50% 0; }
.motion .share__wx.is-open .share__pop { animation: shareIn .28s var(--ease-out) both; }

/* in the article sidebar */
.share--rail { display: grid; gap: 12px; margin-top: 28px; padding-top: 24px; border-top: 1px solid var(--line); }
.share--rail .share__list { gap: 6px; }
.share--rail .share__btn { width: 38px; height: 38px; }
/* at the end of an article */
.share--row, .prose .share--row { margin-top: 48px; padding: 18px 22px; border: 1px solid var(--line); border-radius: 14px; background: var(--paper); justify-content: space-between; }
.share--row .share__label { font-size: 16px; font-weight: 500; letter-spacing: 0; text-transform: none; color: var(--ink); }
/* footer (dark) */
.share--footer .share__label, .share--follow .share__label { color: rgba(255, 255, 255, .56); }
.share--footer .share__btn, .share--follow .share__btn { background: transparent; border-color: rgba(255, 255, 255, .18); color: var(--white); }
.share--footer .share__btn:hover, .share--footer .share__btn:focus-visible, .share--follow .share__btn:hover, .share--follow .share__btn:focus-visible, .site-footer .share__wx.is-open > .share__btn { background: var(--white); color: var(--ink); border-color: var(--white); text-decoration: none; }
.share--footer .share__btn::after, .share--follow .share__btn::after { background: var(--white); color: var(--ink); }
.site-footer .share__btn.is-done { background: var(--green); border-color: var(--green); color: var(--white); }

/* article sidebar: meta and share travel together */
@media (min-width: 961px) {
  .article__meta { position: sticky; top: calc(var(--stick) + 28px); align-self: start; transition: top .45s cubic-bezier(.2, .7, .2, 1); }
  .article__meta dl { position: static; }
}
@media (max-width: 960px) {
  .share--rail { display: none; }
}

/* ---- footer */
.site-footer__top { grid-template-columns: minmax(0, 1.5fr) repeat(4, minmax(0, 1fr)); gap: 40px 32px; padding-block: 80px 56px; }
.site-footer__col a { display: inline-block; line-height: 1.45; }
.site-footer__cta { margin-top: 28px; }
.site-footer__cta .btn:hover { text-decoration: none; }
.site-footer__mid { display: flex; flex-wrap: wrap; align-items: center; gap: 20px 48px; padding-block: 24px; border-top: 1px solid rgba(255, 255, 255, .1); }
@media (max-width: 1180px) {
  .site-footer__top { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .site-footer__brand { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 32px; align-items: start; }
  .site-footer__brand > * { grid-column: 1; }
  .site-footer__cta { grid-column: 2; grid-row: 1 / span 4; margin-top: 0; }
}
@media (max-width: 720px) {
  .site-footer__top { grid-template-columns: repeat(2, minmax(0, 1fr)); padding-block: 56px 40px; }
  .site-footer__brand { display: block; }
  .site-footer__cta { margin-top: 24px; }
}

/* ---- contact form: enquiry chips */
.field--interest { margin-bottom: 28px; }
.ichips { display: flex; flex-wrap: wrap; gap: 8px; }
.ichip { position: relative; }
.ichip input { position: absolute; inset: 0; margin: 0; opacity: 0; cursor: pointer; }
.ichip span { display: inline-flex; align-items: center; min-height: 40px; padding: 8px 16px; border: 1px solid var(--line-strong); border-radius: 20px; font-size: 15px; background: var(--white); transition: background-color .2s ease, color .2s ease, border-color .2s ease; }
.ichip input:hover + span { border-color: var(--ink); }
.ichip input:checked + span { background: var(--ink); color: var(--white); border-color: var(--ink); }
.ichip input:focus-visible + span { outline: 2px solid var(--green); outline-offset: 2px; }

/* ---- pricing: plans */
.page-pricing .phead__inner { padding-bottom: clamp(64px, 7vw, 104px); }
.plans-sec { padding-top: clamp(56px, 6vw, 88px); }
.plans { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; align-items: stretch; }
.plan { position: relative; display: flex; flex-direction: column; padding: 30px 30px 34px; border: 1px solid var(--line); border-radius: 20px; background: var(--white); transition: border-color .25s ease, box-shadow .35s ease; scroll-margin-top: calc(var(--header-h) + 24px); }
.plan:hover { border-color: var(--line-strong); }
.plan:target { box-shadow: 0 0 0 2px var(--green); }
.plan__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 22px; min-height: 48px; }
.plan__icon { width: 48px; height: 48px; border-radius: 14px; display: grid; place-items: center; background: var(--mint-pale); color: var(--green-deep); flex: none; }
.plan__tag { font: 500 12.5px/1.2 var(--f-body); padding: 7px 11px; border-radius: 20px; background: rgba(113, 169, 118, .2); color: var(--mint); text-align: right; }
.plan__name { font-family: var(--f-display); font-size: 28px; font-weight: var(--w-heading); line-height: 1.2; letter-spacing: var(--ls-display); }
.plan__for { margin-top: 8px; color: var(--muted); font-size: 15.5px; line-height: 1.55; min-height: 3.1em; }
.plan__price { margin-top: 22px; padding-top: 20px; border-top: 1px solid var(--line); display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 8px; min-height: 64px; }
.price__v { font-family: var(--f-display); font-size: 30px; line-height: 1.1; letter-spacing: var(--ls-display); }
.price__v--ask { font-size: 24px; }
.price__from, .price__per { font-size: 14px; color: var(--muted); }
.plan__cta { margin-top: 18px; }
.plan__cta .btn { width: 100%; justify-content: space-between; }
.plan__inc-h { margin-top: 30px; font-size: 13px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.font-cjk .plan__inc-h { letter-spacing: .02em; }
.plan__list { list-style: none; margin-top: 14px; display: grid; gap: 12px; }
.plan__list li { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 12px; font-size: 15.5px; line-height: 1.45; }
.plan__list .ico { margin-top: 3px; color: var(--green-deep); }
.plan--featured { color: var(--white); border-color: var(--ink); background: radial-gradient(120% 70% at 100% 0%, rgba(113, 169, 118, .26), rgba(113, 169, 118, 0) 60%), var(--ink); box-shadow: 0 34px 70px -40px rgba(15, 38, 43, .7); }
.plan--featured:hover { border-color: var(--ink); }
.plan--featured .plan__icon { background: rgba(255, 255, 255, .08); color: var(--mint); }
.plan--featured .plan__for, .plan--featured .price__from, .plan--featured .price__per, .plan--featured .plan__inc-h { color: var(--on-dark-muted); }
.plan--featured .plan__price { border-top-color: var(--line-dark); }
.plan--featured .plan__list .ico { color: var(--green); }
@media (min-width: 1100px) { .plan--featured { margin-block: -14px; padding-block: 44px 48px; } }
.plans__note { display: flex; align-items: center; gap: 8px; margin-top: 32px; }
.plans__note .ico { flex: none; color: var(--green-deep); }

/* ---- pricing: principles */
.principles { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--line-strong); }
.principles li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 14px; align-content: start; padding: 28px 32px 8px 0; }
.principles li + li { padding-left: 32px; border-left: 1px solid var(--line); }
.principles__n { font-size: 13px; font-weight: 600; letter-spacing: .1em; color: var(--green-deep); align-self: center; }
.principles__ico { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; background: var(--white); color: var(--ink); border: 1px solid var(--line); }
.principles__t { grid-column: 1 / -1; font-family: var(--f-display); font-size: 22px; font-weight: var(--w-heading); line-height: 1.3; margin-top: 8px; }
.principles__x { grid-column: 1 / -1; color: var(--muted); }

/* ---- pricing: comparison */
.switch { display: inline-flex; align-items: center; gap: 12px; padding: 8px 2px; border: 0; background: none; font: 500 15px/1 var(--f-body); color: var(--ink); cursor: pointer; }
.switch__track { position: relative; width: 44px; height: 26px; border-radius: 13px; background: var(--line-strong); transition: background-color .25s ease; flex: none; }
.switch__dot { position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%; background: var(--white); box-shadow: 0 1px 3px rgba(0, 0, 0, .22); transition: transform .3s var(--ease-out); }
.switch[aria-pressed="true"] .switch__track { background: var(--green-deep); }
.switch[aria-pressed="true"] .switch__dot { transform: translateX(18px); }
.switch:focus-visible { outline: 2px solid var(--green); outline-offset: 4px; border-radius: 6px; }
html:not(.js) .switch { display: none; }
.cmp__seg { display: none; }
.cmp__table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 15.5px; }
.cmp__table thead th { position: sticky; top: var(--stick); z-index: 3; background: var(--white); vertical-align: bottom; text-align: left; padding: 18px 20px; border-bottom: 1px solid var(--line-strong); transition: top .45s cubic-bezier(.2, .7, .2, 1), background-color .2s ease; }
.cmp__table thead th.is-featured { background: #F3F9F4; }
.cmp__feat { width: 34%; }
.cmp__plan { width: 22%; }
.cmp__pname { display: block; font-family: var(--f-display); font-size: 20px; font-weight: var(--w-heading); line-height: 1.25; }
.cmp__pprice { display: block; margin-top: 4px; color: var(--muted); font-weight: 400; }
.cmp__pprice .price__v, .cmp__pprice .price__v--ask { font: 400 14.5px/1.4 var(--f-body); }
.cmp__ask { display: inline-flex; align-items: center; gap: 6px; margin-top: 12px; font-size: 14px; font-weight: 500; color: var(--green-deep); text-decoration: none; }
.cmp__ask svg { width: 16px; height: 16px; transition: transform .2s ease; }
.cmp__ask:hover svg { transform: translateX(3px); }
.cmp__gh th { padding: 40px 20px 12px 0; text-align: left; font-size: 13px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; border-bottom: 1px solid var(--ink); }
.font-cjk .cmp__gh th { letter-spacing: .02em; font-size: 14px; }
.cmp__gh th > span { display: inline-flex; align-items: center; gap: 10px; }
.cmp__gh .ico { color: var(--green-deep); }
.cmp__table tbody th[scope="row"] { text-align: left; font-weight: 400; padding: 16px 20px 16px 0; border-bottom: 1px solid var(--line); }
.cmp__table td { padding: 16px 20px; border-bottom: 1px solid var(--line); vertical-align: middle; transition: background-color .2s ease; }
.cmp__table td.is-featured { background: rgba(232, 243, 235, .5); }
.cmp__table[data-hover-c="0"] td[data-c="0"], .cmp__table[data-hover-c="1"] td[data-c="1"], .cmp__table[data-hover-c="2"] td[data-c="2"] { background: var(--paper); }
.cmp__table[data-hover-c="0"] th[data-c="0"], .cmp__table[data-hover-c="1"] th[data-c="1"], .cmp__table[data-hover-c="2"] th[data-c="2"] { background: #EEF3F0; }
.cmp__yes { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--mint-pale); color: var(--green-deep); }
.cmp__no { display: inline-block; width: 14px; height: 2px; border-radius: 1px; background: var(--line-strong); vertical-align: middle; }
.cmp__txt { font-weight: 500; }
.cmp.is-diff tr[data-same] { display: none; }
@media (max-width: 719px) {
  .cmp.has-switch .cmp__seg { display: flex; position: sticky; top: calc(var(--stick) + 8px); z-index: 4; gap: 4px; padding: 4px; margin-bottom: 8px; border-radius: 26px; background: var(--paper); box-shadow: 0 0 0 1px var(--line); transition: top .45s cubic-bezier(.2, .7, .2, 1); }
  .cmp__seg button { flex: 1; min-height: 40px; padding: 6px 8px; border: 0; border-radius: 22px; background: transparent; font: 500 14.5px/1.2 var(--f-body); color: var(--ink); cursor: pointer; }
  .cmp__seg button[aria-pressed="true"] { background: var(--ink); color: var(--white); }
  .cmp.has-switch thead { display: none; }
  .cmp.has-switch [data-c] { display: none; }
  .cmp.has-switch[data-view="0"] [data-c="0"], .cmp.has-switch[data-view="1"] [data-c="1"], .cmp.has-switch[data-view="2"] [data-c="2"] { display: table-cell; }
  .cmp__table td.is-featured { background: transparent; }
  .cmp__table tbody th[scope="row"] { width: 56%; padding-right: 12px; }
  .cmp__table td { padding: 14px 0 14px 12px; }
  .cmp__gh th { padding-top: 28px; }
  html:not(.js) .cmp__wrap { overflow-x: auto; }
  html:not(.js) .cmp__table { min-width: 640px; }
}

/* quote contents on dark */
.iccards--dark .iccard { background: rgba(255, 255, 255, .04); border-color: var(--line-dark); color: var(--white); }
.iccards--dark .iccard__ico { background: rgba(255, 255, 255, .08); color: var(--mint); }
.iccards--dark .iccard__text { color: var(--on-dark-muted); }
.iccards--dark .iccard:hover { border-color: rgba(255, 255, 255, .3); }
.iccards--dark .iccard:hover .iccard__ico { background: var(--green); color: var(--white); transform: none; }

@media (max-width: 1099px) {
  .plans { grid-template-columns: minmax(0, 1fr); max-width: 560px; margin-inline: auto; }
  .plan__for { min-height: 0; }
  .principles { grid-template-columns: minmax(0, 1fr); }
  .principles li, .principles li + li { padding: 24px 0 20px; border-left: 0; }
  .principles li + li { border-top: 1px solid var(--line); }
}

/* ---- home: pricing teaser */
.pteaser__list { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.pteaser__card { height: 100%; display: grid; grid-template-rows: auto auto 1fr auto; gap: 10px; padding: 28px; border-radius: 18px; border: 1px solid var(--line-dark); background: rgba(255, 255, 255, .03); color: var(--white); text-decoration: none; transition: background-color .3s ease, border-color .3s ease; }
.pteaser__card:hover { background: rgba(255, 255, 255, .07); border-color: rgba(255, 255, 255, .34); }
.pteaser__card.is-featured { border-color: rgba(113, 169, 118, .6); background: linear-gradient(160deg, rgba(113, 169, 118, .18), rgba(255, 255, 255, .02) 62%); }
.pteaser__icon { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; background: rgba(255, 255, 255, .08); color: var(--mint); margin-bottom: 8px; }
.pteaser__name { font-family: var(--f-display); font-size: 24px; font-weight: var(--w-heading); line-height: 1.25; }
.pteaser__for { color: var(--on-dark-muted); font-size: 15px; line-height: 1.55; }
.pteaser__price { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 14px; padding-top: 16px; border-top: 1px solid var(--line-dark); font-weight: 500; }
.pteaser__price .price__v, .pteaser__price .price__v--ask { font: 500 16px/1.3 var(--f-body); }
.pteaser__price svg { flex: none; color: var(--green); transition: transform .25s var(--ease-out); }
.pteaser__card:hover .pteaser__price svg { transform: translateX(4px); }
@media (max-width: 899px) { .pteaser__list { grid-template-columns: minmax(0, 1fr); } }

/* ---- client login */
.page-login .site-header { background: var(--ink); box-shadow: 0 1px 0 var(--line-dark); }
.login { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); min-height: 100vh; min-height: 100svh; }
.login__side { position: relative; overflow: hidden; color: var(--white); background: radial-gradient(90% 60% at 0% 100%, rgba(113, 169, 118, .22), rgba(113, 169, 118, 0) 60%), var(--ink); padding: calc(var(--header-h) + clamp(40px, 6vw, 88px)) clamp(24px, 5vw, 72px) 64px; }
.login__side-in { position: relative; z-index: 1; max-width: 520px; margin-left: auto; }
.login__title { font-family: var(--f-display); font-size: clamp(34px, 3.6vw, 52px); font-weight: var(--w-display); line-height: 1.15; letter-spacing: var(--ls-display); }
.font-cjk .login__title { line-height: 1.3; }
.login__lead { margin-top: 18px; color: var(--on-dark-muted); font-size: 18px; max-width: 30rem; }
.login__feats { list-style: none; margin-top: 40px; display: grid; gap: 22px; max-width: 30rem; }
.login__feats li { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 16px; align-items: start; }
.login__fi { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; background: rgba(255, 255, 255, .08); color: var(--mint); }
.login__ft { display: block; font-weight: 500; }
.login__fx { display: block; margin-top: 2px; font-size: 15px; color: var(--on-dark-muted); }
.login__art { position: absolute; right: -60px; bottom: -40px; width: 380px; opacity: .35; pointer-events: none; }
.login__art svg { width: 100%; height: auto; }
.login__main { display: grid; align-content: center; justify-items: start; gap: 28px; background: var(--paper); padding: calc(var(--header-h) + clamp(40px, 6vw, 88px)) clamp(24px, 5vw, 72px) 64px; }
.login__card { width: 100%; max-width: 460px; padding: 36px; border: 1px solid var(--line); border-radius: 20px; background: var(--white); box-shadow: 0 30px 60px -44px rgba(15, 38, 43, .5); }
.login__badge { width: 52px; height: 52px; border-radius: 16px; display: grid; place-items: center; margin-bottom: 22px; background: var(--ink); color: var(--mint); }
.login__tag { display: inline-flex; margin-bottom: 12px; padding: 6px 10px; border-radius: 20px; font: 500 12.5px/1.2 var(--f-body); background: var(--mint-pale); color: var(--green-deep); }
.login__h { font-family: var(--f-display); font-size: 26px; font-weight: var(--w-heading); line-height: 1.3; }
.login__p { margin-top: 12px; color: var(--muted); }
.btn--block { width: 100%; justify-content: space-between; margin-top: 28px; }
.login__fine { display: flex; align-items: flex-start; gap: 8px; margin-top: 20px; font-size: 13.5px; color: var(--muted); }
.login__fine .ico { flex: none; margin-top: 2px; color: var(--green-deep); }
.login__help { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); font-size: 13.5px; color: var(--muted); }
.login__alt { width: 100%; max-width: 460px; padding-inline: 4px; }
.login__alt-h { font-weight: 600; }
.login__alt p + p { color: var(--muted); margin-top: 4px; }
.login__alt-links { display: flex; flex-wrap: wrap; gap: 8px 28px; margin-top: 12px; }
@media (max-width: 899px) {
  .login { grid-template-columns: minmax(0, 1fr); min-height: 0; }
  .login__side { padding-bottom: 48px; }
  .login__side-in { margin-left: 0; }
  .login__art { display: none; }
  .login__main { padding-top: 40px; justify-items: stretch; }
  .login__card { padding: 28px 24px; max-width: none; }
}

@media (prefers-reduced-motion: reduce) {
  .motion .share__wx.is-open .share__pop { animation: none; }
  .switch__dot, .switch__track, .cmp__table thead th, .cmp__seg, .article__meta { transition: none; }
}

/* ================================================================ v6: contact details, legal pages, footer */

/* ---- company contact list (contact page, privacy policy, legal notice) */
.clist { display: grid; margin: 0; }
.clist__row { display: grid; grid-template-columns: minmax(0, 9rem) minmax(0, 1fr); gap: 6px 20px; padding: 14px 0; border-top: 1px solid var(--line); }
.clist__row:first-child { border-top: 0; padding-top: 0; }
.clist dt { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 14.5px; }
.clist dt .ico { color: var(--green-deep); flex: none; }
.clist dd { margin: 0; font-weight: 500; line-height: 1.55; }
.clist dd a { text-decoration: underline; text-decoration-color: var(--line-strong); text-decoration-thickness: 1px; text-underline-offset: 4px; transition: text-decoration-color .2s ease, color .2s ease; }
.clist dd a:hover { text-decoration-color: var(--ink); }
.maplink { color: inherit; }
.clist__line { display: block; }
.clist__row--name { grid-template-columns: minmax(0, 1fr); }
.clist__name { display: block; font-family: var(--f-display); font-size: 20px; font-weight: var(--w-heading); line-height: 1.35; }
.clist__alt { display: block; margin-top: 2px; font-size: 14.5px; font-weight: 400; color: var(--muted); }
.clist--compact .clist__row { grid-template-columns: minmax(0, 1fr); gap: 4px; padding: 12px 0; }
.clist--compact .clist__name { font-size: 17px; }
.clist--plain { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); }
.clist--plain .clist__row:first-child { padding-top: 0; }
.contact__brand { margin: 6px 0 14px; }

/* ---- privacy policy */
.doc--legal .doc__main { max-width: 46rem; }
.doc__stamp { display: flex; align-items: center; gap: 8px; margin-top: 24px; padding-top: 18px; border-top: 1px solid var(--line); font-size: 14px; color: var(--muted); }
.doc__stamp .ico { color: var(--green-deep); flex: none; }
.legal-prose .dsec { padding-block: 40px; }
.legal-prose .dsec h2 { display: flex; align-items: baseline; gap: 14px; font-size: clamp(24px, 2.2vw, 30px); margin-bottom: 18px; }
.dsec__n { font-size: 14px; font-weight: 600; letter-spacing: .08em; color: var(--green-deep); flex: none; transform: translateY(-3px); }
.legal-prose p { font-size: 16.5px; line-height: 1.75; color: var(--text); max-width: 44rem; }
.font-cjk .legal-prose p { line-height: 1.9; }
.legal-prose p + p, .legal-prose p + .basis, .legal-prose .basis + p, .legal-prose .pcard + p, .legal-prose p + .pcard { margin-top: 14px; }
.legal-prose p a { color: var(--green-deep); font-weight: 500; text-underline-offset: 3px; }
.basis { display: flex; gap: 10px; align-items: flex-start; padding: 12px 16px; border-radius: 10px; background: var(--paper); font-size: 14.5px !important; line-height: 1.6 !important; color: var(--muted) !important; }
.basis .ico { flex: none; margin-top: 3px; color: var(--green-deep); }
.pcard { padding: 24px 26px; border: 1px solid var(--line); border-radius: 16px; background: var(--white); box-shadow: 0 24px 50px -40px rgba(15, 38, 43, .45); }
.checklist { list-style: none; display: grid; gap: 12px; }
.checklist li { display: grid; grid-template-columns: 26px minmax(0, 1fr); gap: 12px; font-size: 16.5px; line-height: 1.6; }
.checklist .ico { width: 26px; height: 26px; padding: 4px; border-radius: 50%; background: var(--mint-pale); color: var(--green-deep); }
.legal-foot { margin-top: 32px; }

/* ---- legal notice */
.legal { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 32px clamp(32px, 5vw, 72px); align-items: start; }
.legal__card { padding: 32px; border: 1px solid var(--line); border-radius: 20px; background: var(--white); box-shadow: 0 30px 60px -46px rgba(15, 38, 43, .5); }
.legal__brand { margin-bottom: 20px; }
.legal__notes .btn { margin-top: 28px; }
.legal__list { list-style: none; display: grid; gap: 20px; }
.legal__list li { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 14px; }
.legal__ico { width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; background: var(--mint-pale); color: var(--green-deep); }
.legal__t { display: block; font-weight: 600; }
.legal__x { display: block; margin-top: 2px; color: var(--muted); font-size: 15px; line-height: 1.6; }
@media (max-width: 899px) {
  .legal { grid-template-columns: minmax(0, 1fr); }
  .legal__card { padding: 24px 20px; }
  .clist__row { grid-template-columns: minmax(0, 1fr); gap: 4px; }
}

/* ---- contact form privacy note */
.form__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 24px; }
.form__privacy { display: flex; align-items: flex-start; gap: 8px; max-width: 30rem; font-size: 14px; color: var(--muted); line-height: 1.55; }
.form__privacy .ico { flex: none; margin-top: 2px; color: var(--green-deep); }
.form__privacy a { color: var(--ink); font-weight: 500; text-underline-offset: 3px; }

/* ---- footer (v6) */
.site-footer { font-size: 15px; }
.ft-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px 48px; flex-wrap: wrap; padding-block: 72px 40px; }
.ft-brand .wordmark { color: var(--white); display: inline-block; font-size: 30px; }
.ft-brand__tag { margin-top: 14px; max-width: 30rem; font-size: 17px; color: rgba(255, 255, 255, .78); }
.ft-contact { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.5fr); border-top: 1px solid rgba(255, 255, 255, .12); border-bottom: 1px solid rgba(255, 255, 255, .12); }
.ft-cc { position: relative; display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-rows: auto 1fr; column-gap: 16px; row-gap: 6px; align-content: start; padding: 30px 28px 30px 0; color: var(--white); text-decoration: none; }
.ft-cc + .ft-cc { padding-left: 28px; border-left: 1px solid rgba(255, 255, 255, .12); }
.ft-cc__ico { grid-row: 1 / span 2; width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; background: rgba(255, 255, 255, .06); color: var(--mint); transition: background-color .25s ease, color .25s ease; }
.ft-cc__label { font-size: 13px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: rgba(255, 255, 255, .56); align-self: end; }
.font-cjk .ft-cc__label { letter-spacing: .04em; }
.ft-cc__value { font-family: var(--f-display); font-size: 20px; font-weight: var(--w-heading); line-height: 1.35; font-style: normal; overflow-wrap: anywhere; }
.ft-cc--addr .ft-cc__value { font-family: var(--f-body); font-size: 16px; font-weight: 400; line-height: 1.6; color: var(--white); }
.ft-cc--addr .ft-cc__value span { display: block; }
.ft-cc__go { position: absolute; top: 30px; right: 24px; color: rgba(255, 255, 255, .4); transition: transform .3s var(--ease-out), color .2s ease; }
a.ft-cc:hover .ft-cc__ico, a.ft-cc:focus-visible .ft-cc__ico { background: var(--green); color: var(--white); }
a.ft-cc:hover .ft-cc__go, a.ft-cc:focus-visible .ft-cc__go { color: var(--white); transform: translate(3px, -3px); }
a.ft-cc:hover, a.ft-cc:focus-visible { text-decoration: none; }
.ft-nav { display: grid; grid-template-columns: minmax(0, 1.3fr) repeat(4, minmax(0, 1fr)); gap: 32px; padding-block: 48px 40px; }
.ft-legalname__main { color: var(--white); font-weight: 500; }
.ft-legalname__alt { margin-top: 2px; color: rgba(255, 255, 255, .6); font-size: 14px; }
.ft-col__h { color: var(--white); font-weight: 600; margin-bottom: 14px; font-size: 14px; letter-spacing: .06em; text-transform: uppercase; }
.ft-col ul { list-style: none; display: grid; gap: 10px; }
.ft-col a { color: rgba(255, 255, 255, .74); text-decoration: none; }
.ft-col a:hover { color: var(--white); text-decoration: underline; text-underline-offset: 3px; }
.ft-bottom { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 28px; padding-block: 22px 40px; border-top: 1px solid rgba(255, 255, 255, .1); font-size: 13.5px; color: rgba(255, 255, 255, .6); }
.ft-legal { list-style: none; display: flex; flex-wrap: wrap; gap: 4px 20px; }
.ft-legal a { color: rgba(255, 255, 255, .86); text-decoration: none; }
.ft-legal a:hover, .ft-legal a[aria-current="page"] { color: var(--white); text-decoration: underline; text-underline-offset: 3px; }
.ft-note { margin-left: auto; }
@media (max-width: 1099px) {
  .ft-contact { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .ft-cc--addr { grid-column: 1 / -1; padding-left: 0 !important; border-left: 0 !important; border-top: 1px solid rgba(255, 255, 255, .12); }
  .ft-nav { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .ft-legalname { grid-column: 1 / -1; }
}
@media (max-width: 720px) {
  .ft-head { padding-block: 56px 32px; }
  .ft-contact { grid-template-columns: minmax(0, 1fr); }
  .ft-cc, .ft-cc + .ft-cc { padding: 22px 36px 22px 0; border-left: 0; border-top: 1px solid rgba(255, 255, 255, .12); }
  .ft-cc:first-child { border-top: 0; }
  .ft-cc__go { top: 24px; right: 0; }
  .ft-cc__value { font-size: 18px; }
  .ft-nav { grid-template-columns: repeat(2, minmax(0, 1fr)); padding-block: 36px 28px; }
  .ft-note { margin-left: 0; }
}


/* ================================================================ v7: resources — insights and news & press */
/* insights: featured article with a real-scene photo, the rest as a list */
.ifeat { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 0; border: 1px solid var(--line); border-radius: 20px; overflow: hidden; text-decoration: none; background: var(--white); transition: border-color .25s ease, box-shadow .35s ease; margin-bottom: 28px; }
.ifeat:hover { border-color: var(--line-strong); box-shadow: 0 30px 60px -44px rgba(15, 38, 43, .5); }
.ifeat__media { position: relative; display: block; min-height: 300px; overflow: hidden; background: var(--ink); }
.ifeat__media picture, .ifeat__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .9s var(--ease-out); }
.ifeat:hover .ifeat__media img { transform: scale(1.04); }
.ifeat__body { display: grid; align-content: center; gap: 14px; padding: clamp(28px, 4vw, 48px); }
.ifeat__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; font-size: 14px; color: var(--muted); }
.ifeat__title { font-family: var(--f-display); font-size: clamp(24px, 2.4vw, 32px); font-weight: var(--w-heading); line-height: 1.3; letter-spacing: var(--ls-display); color: var(--ink); }
.ifeat__text { color: var(--muted); }
.ifeat__more { display: inline-flex; align-items: center; gap: 8px; margin-top: 6px; font-weight: 500; color: var(--ink); }
.ifeat__more svg { color: var(--green-deep); transition: transform .25s var(--ease-out); }
.ifeat:hover .ifeat__more svg { transform: translateX(4px); }
.alist--grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 32px; }
.page-insights .split .faq { align-self: start; }
.muted { color: var(--muted); }
.p-lg.muted { margin-top: 10px; }

/* news & press */
.news__grid { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(300px, 1fr); gap: 40px clamp(40px, 5vw, 80px); align-items: start; }
.news__h { display: flex; align-items: center; gap: 12px; padding-bottom: 16px; margin-bottom: 20px; border-bottom: 1px solid var(--ink); font-family: var(--f-display); font-size: 22px; font-weight: var(--w-heading); }
.news__h .ico { color: var(--green-deep); }
.news__press { margin-top: 56px; }
.nlist { list-style: none; display: grid; }
.nitem { display: grid; gap: 6px; padding: 20px 0; border-bottom: 1px solid var(--line); text-decoration: none; color: inherit; }
a.nitem:hover .nitem__title { text-decoration: underline; text-underline-offset: 4px; }
.nitem__date { font-size: 13.5px; color: var(--muted); }
.nitem__title { font-family: var(--f-display); font-size: 20px; font-weight: var(--w-heading); line-height: 1.35; }
.nitem__text { color: var(--muted); }
.nitem__more { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 500; color: var(--green-deep); }
.nempty { display: grid; justify-items: start; gap: 10px; padding: 36px; border: 1px dashed var(--line-strong); border-radius: 18px; background: var(--paper); }
.nempty__ico { width: 52px; height: 52px; border-radius: 14px; display: grid; place-items: center; background: var(--white); color: var(--green-deep); border: 1px solid var(--line); margin-bottom: 6px; }
.nempty__title { font-family: var(--f-display); font-size: 20px; font-weight: var(--w-heading); }
.nempty__text { color: var(--muted); max-width: 34rem; }
.news__aside { display: grid; gap: 20px; position: sticky; top: calc(var(--stick) + 28px); transition: top .45s cubic-bezier(.2, .7, .2, 1); }
.nbox { padding: 26px; border: 1px solid var(--line); border-radius: 18px; background: var(--white); display: grid; gap: 10px; align-content: start; }
.nbox--media { padding-top: 0; overflow: hidden; }
.nbox__media { margin: 0 -26px 10px; aspect-ratio: 16 / 9; overflow: hidden; background: var(--ink); }
.nbox__media picture, .nbox__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.nbox__contact { list-style: none; display: grid; gap: 2px; margin-top: 6px; }
.nbox__contact a { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-top: 1px solid var(--line); text-decoration: none; font-weight: 500; }
.nbox__contact a .ico { color: var(--green-deep); flex: none; }
.nbox__contact a:hover span { text-decoration: underline; text-underline-offset: 3px; }
.nkit { display: grid; margin-top: 6px; }
.nkit > div { display: grid; gap: 2px; padding: 12px 0; border-top: 1px solid var(--line); }
.nkit dt { font-size: 12.5px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.font-cjk .nkit dt { letter-spacing: .02em; font-size: 13px; }
.nkit dd { margin: 0; font-size: 15px; }
.nkit__h { margin-top: 8px; font-weight: 600; font-size: 15px; }
.nkit__rules { list-style: none; display: grid; gap: 8px; }
.nkit__rules li { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 10px; font-size: 14.5px; color: var(--muted); }
.nkit__rules .ico { margin-top: 3px; color: var(--green-deep); }
@media (max-width: 1099px) {
  .news__grid { grid-template-columns: minmax(0, 1fr); }
  .news__aside { position: static; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
}
@media (max-width: 899px) {
  .ifeat { grid-template-columns: minmax(0, 1fr); }
  .ifeat__media { min-height: 0; aspect-ratio: 16 / 9; }
  .alist--grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 719px) {
  .news__aside { grid-template-columns: minmax(0, 1fr); }
  .nempty { padding: 26px 22px; }
}
@media (prefers-reduced-motion: reduce) { .ifeat__media img, .mtile__media img { transition: none; } }

/* ================================================================ v9: core card with a real-scene photo */
.tier-core { overflow: hidden; isolation: isolate; min-height: 440px; background: var(--ink); }
.tier-core__media { position: absolute; inset: 0; z-index: -1; }
.tier-core__media picture, .tier-core__media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.tier-core__media img { transition: transform .9s var(--ease-out); }
.tier-core__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(10, 27, 31, .55) 0%, rgba(10, 27, 31, 0) 62%), linear-gradient(180deg, rgba(10, 27, 31, .92) 0%, rgba(10, 27, 31, .74) 38%, rgba(10, 27, 31, .56) 70%, rgba(10, 27, 31, .78) 100%); }
.tier-core:hover .tier-core__media img { transform: scale(1.045); }
.tier-core__text { color: rgba(255, 255, 255, .82); }

/* ================================================================ v9: back to top (every page except home) */
.totop { position: fixed; z-index: 40; right: calc(18px + env(safe-area-inset-right, 0px)); bottom: calc(22px + env(safe-area-inset-bottom, 0px)); width: 52px; height: 52px; padding: 0; border: 0; border-radius: 50%; display: grid; place-items: center; background: var(--white); color: var(--ink); box-shadow: 0 12px 30px -14px rgba(15, 38, 43, .5), 0 0 0 1px rgba(15, 38, 43, .08); cursor: pointer; opacity: 0; transform: translateY(14px) scale(.9); translate: 0 calc(var(--lift, 0px) * -1); pointer-events: none; transition: opacity .3s ease, transform .35s var(--ease-out), background-color .2s ease, color .2s ease; }
.totop[hidden] { display: none; }
.totop.is-shown { opacity: 1; transform: none; pointer-events: auto; }
.totop__ring { position: absolute; inset: 0; width: 100%; height: 100%; transform: rotate(-90deg); }
.totop__track { fill: none; stroke: rgba(15, 38, 43, .1); stroke-width: 2.5; }
.totop__bar { fill: none; stroke: var(--green); stroke-width: 2.5; stroke-linecap: round; transition: stroke-dashoffset .15s linear, stroke .2s ease; }
.totop__ico { position: relative; transition: transform .25s var(--ease-out); }
.totop:hover { background: var(--ink); color: var(--white); }
.totop:hover .totop__ico { transform: translateY(-3px); }
.totop:hover .totop__track { stroke: rgba(255, 255, 255, .16); }
.totop:hover .totop__bar { stroke: var(--mint); }
.totop:active { transform: scale(.94); }
.totop:focus-visible { outline: 2px solid var(--green); outline-offset: 3px; }
.totop__label { position: absolute; right: calc(100% + 10px); top: 50%; transform: translate(6px, -50%); white-space: nowrap; font-size: 13px; font-weight: 500; line-height: 1; color: var(--white); background: var(--ink); padding: 8px 10px; border-radius: 6px; opacity: 0; pointer-events: none; transition: opacity .2s ease, transform .25s var(--ease-out); }
@media (hover: hover) { .totop:hover .totop__label, .totop:focus-visible .totop__label { opacity: 1; transform: translate(0, -50%); } }
@media (max-width: 799px) { .totop { width: 46px; height: 46px; right: calc(14px + env(safe-area-inset-right, 0px)); bottom: calc(16px + env(safe-area-inset-bottom, 0px)); } }
@media (prefers-reduced-motion: reduce) { .totop, .totop__bar, .totop__ico, .totop__label { transition: none; } }
@media print { .totop { display: none !important; } }

/* ================================================================ v10: hero shows only the video; the live example passport moves into the core card */
.hero__inner { grid-template-rows: auto; align-content: center; padding-bottom: clamp(56px, 7vw, 112px); }
.hero__copy { align-self: center; }
.tier-core { display: flex; flex-direction: column; min-height: 0; padding-bottom: 0; }
.tier-core__body { display: flex; flex-direction: column; gap: 12px; }
.tier-core__name { margin: 0; font-weight: inherit; }
.tier-core__link { color: inherit; text-decoration: none; }
.tier-core__link::before { content: ""; position: absolute; inset: 0; z-index: 3; border-radius: inherit; }
.tier-core__link:focus-visible { outline: none; }
.tier-core__link:focus-visible::before { box-shadow: inset 0 0 0 2px var(--mint); }
.tier-core__demo { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 18px; align-items: start; margin-top: 28px; flex: 1; }
.tier-core__sample { padding-bottom: 96px; }
.tier-core__label { font-size: 12.5px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--mint); margin-bottom: 14px; }
.font-cjk .tier-core__label { font-size: 13.5px; letter-spacing: .04em; }
.tier-core__list { list-style: none; display: grid; gap: 11px; }
.tier-core__list li { display: flex; align-items: center; gap: 10px; font-size: 14.5px; line-height: 1.3; color: rgba(255, 255, 255, .9); overflow-wrap: anywhere; }
.tier-core__list .ico { flex: none; color: var(--mint); }
.tier-core__device { --s: .62; width: calc(330px * var(--s)); height: 340px; pointer-events: none; }
.tier-core__scale { width: 330px; transform: scale(var(--s)); transform-origin: top left; }
.phone--card { --pw: 330px; --ph: 690px; }
.tier-core__device .phone__frame { box-shadow: 0 34px 60px -24px rgba(0, 0, 0, .75), inset 0 0 0 1.5px #33423F; }
.tier-core__go { left: clamp(24px, 3vw, 40px); right: auto; bottom: 28px; z-index: 2; }
.motion .tier-core__device .phone { animation: phoneIn 1.2s var(--ease-out) both; animation-play-state: paused; }
.motion .tier-core.is-seen .tier-core__device .phone { animation-play-state: running; }
@media (max-width: 1280px) { .tier-core__device { --s: .56; height: 310px; } }
@media (max-width: 1080px) { .tier-core__device { --s: .62; height: 340px; } }
@media (max-width: 640px) {
  .tier-core__demo { grid-template-columns: minmax(0, 1fr); justify-items: center; margin-top: 22px; }
  .tier-core__sample { display: none; }
  .tier-core__device { --s: .56; height: 300px; }
}

/* contact form trap field: invisible to people, filled only by bots */
.form__hp { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }
