/* ==========================================================================
   IGREEN official website — tech style, apple-green palette
   Built on Bootstrap 5.3 (RWD grid & components) + custom design tokens.
   ========================================================================== */
:root {
  --ig-apple: #8dc63f;        /* logo apple green */
  --ig-apple-2: #a6dc58;
  --ig-neon: #c4f56a;
  --ig-deep: #5a9420;
  --ig-mint: #3ddc97;
  --ig-bg: #050b07;
  --ig-bg-2: #08120b;
  --ig-bg-3: #0d1a11;
  --ig-panel: rgba(141, 198, 63, 0.04);
  --ig-panel-2: rgba(141, 198, 63, 0.08);
  --ig-line: rgba(141, 198, 63, 0.16);
  --ig-line-2: rgba(141, 198, 63, 0.32);
  --ig-text: #e9f3e1;
  --ig-muted: #9fb39b;
  --ig-dim: #6d8169;
  --ig-glow: 0 0 24px rgba(141, 198, 63, 0.35);
  --ig-radius: 16px;
  --ig-font: "Exo 2", "Noto Sans TC", "Noto Sans SC", "Noto Sans Thai", system-ui, -apple-system, "Segoe UI", sans-serif;
  --ig-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Consolas, monospace;

  --bs-body-bg: var(--ig-bg);
  --bs-body-color: var(--ig-text);
  --bs-link-color: var(--ig-apple-2);
  --bs-link-color-rgb: 166, 220, 88;
  --bs-link-hover-color: var(--ig-neon);
  --bs-border-color: var(--ig-line);
  --bs-primary: var(--ig-apple);
  --bs-primary-rgb: 141, 198, 63;
  --bs-emphasis-color: #fff;
  --bs-secondary-color: var(--ig-muted);
}
html[lang="th"] { --ig-font: "Noto Sans Thai", "Exo 2", system-ui, sans-serif; }
html[lang^="zh-Hans"] { --ig-font: "Exo 2", "Noto Sans SC", "Noto Sans TC", system-ui, sans-serif; }

* { scroll-margin-top: 90px; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--ig-font);
  background: var(--ig-bg);
  color: var(--ig-text);
  line-height: 1.7;
  letter-spacing: .01em;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}
::selection { background: var(--ig-apple); color: #08120b; }
a { text-decoration: none; transition: color .2s; }
img { max-width: 100%; height: auto; }
.text-apple { color: var(--ig-apple) !important; }
.text-muted-ig { color: var(--ig-muted) !important; }
.mono { font-family: var(--ig-mono); }

/* background grid texture */
.bg-grid {
  background-image:
    linear-gradient(var(--ig-line) 1px, transparent 1px),
    linear-gradient(90deg, var(--ig-line) 1px, transparent 1px);
  background-size: 48px 48px;
  mask-image: radial-gradient(ellipse at center, #000 30%, transparent 75%);
  -webkit-mask-image: radial-gradient(ellipse at center, #000 30%, transparent 75%);
}

/* ---------- buttons ---------- */
.btn-ig {
  --bs-btn-padding-x: 1.4rem; --bs-btn-padding-y: .72rem;
  background: linear-gradient(135deg, var(--ig-apple-2), var(--ig-apple) 55%, var(--ig-deep));
  color: #071006; font-weight: 700; border: 0; border-radius: 999px;
  box-shadow: 0 8px 28px -8px rgba(141,198,63,.65), inset 0 1px 0 rgba(255,255,255,.35);
  position: relative; overflow: hidden;
}
.btn-ig:hover, .btn-ig:focus { color: #071006; filter: brightness(1.08); transform: translateY(-1px); }
.btn-ig::after {
  content: ""; position: absolute; inset: 0; transform: translateX(-120%);
  background: linear-gradient(100deg, transparent 30%, rgba(255,255,255,.45) 50%, transparent 70%);
  animation: shine 4.5s ease-in-out infinite;
}
.btn-ig-outline {
  --bs-btn-padding-x: 1.4rem; --bs-btn-padding-y: .72rem;
  color: var(--ig-text); border: 1px solid var(--ig-line-2); border-radius: 999px;
  background: rgba(141,198,63,.06); backdrop-filter: blur(6px);
}
.btn-ig-outline:hover { color: #fff; border-color: var(--ig-apple); background: rgba(141,198,63,.14); }
@keyframes shine { 0%, 60% { transform: translateX(-120%); } 100% { transform: translateX(120%); } }

/* ---------- navbar ---------- */
.ig-nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 1030;
  transition: background .3s, box-shadow .3s, padding .3s;
  padding: .9rem 0;
}
.ig-nav.scrolled, .ig-nav.solid {
  background: rgba(5, 11, 7, .86); backdrop-filter: blur(14px) saturate(140%);
  -webkit-backdrop-filter: blur(14px) saturate(140%);
  box-shadow: 0 1px 0 var(--ig-line); padding: .5rem 0;
}
.ig-nav .navbar-brand img { height: 44px; width: auto; filter: drop-shadow(0 0 10px rgba(141,198,63,.25)); }
.ig-nav .nav-link {
  color: #d6e4cf; font-weight: 500; padding: .5rem .85rem !important; position: relative;
}
.ig-nav .nav-link:hover, .ig-nav .nav-link.active { color: var(--ig-neon); }
.ig-nav .nav-link.active::after {
  content: ""; position: absolute; left: .85rem; right: .85rem; bottom: .2rem; height: 2px;
  background: var(--ig-apple); box-shadow: var(--ig-glow); border-radius: 2px;
}
.ig-nav .dropdown-menu {
  background: rgba(8, 18, 11, .97); border: 1px solid var(--ig-line); border-radius: 14px;
  box-shadow: 0 20px 50px -10px rgba(0,0,0,.7); padding: .5rem; min-width: 18rem;
}
.ig-nav .dropdown-item { color: var(--ig-text); border-radius: 10px; padding: .55rem .75rem; display: flex; gap: .65rem; align-items: center; white-space: normal; }
.ig-nav .dropdown-item:hover, .ig-nav .dropdown-item:focus { background: var(--ig-panel-2); color: var(--ig-neon); }
.ig-nav .dropdown-item .ai { width: 28px; height: 28px; flex: none; }
.ig-nav .navbar-toggler { border: 1px solid var(--ig-line-2); padding: .4rem .6rem; }
.ig-nav .navbar-toggler:focus { box-shadow: 0 0 0 3px rgba(141,198,63,.25); }
.lang-btn { font-family: var(--ig-mono); font-size: .82rem; }
@media (max-width: 1199.98px) {
  .ig-nav .navbar-collapse {
    background: rgba(5, 11, 7, .97); margin-top: .75rem; border: 1px solid var(--ig-line);
    border-radius: 16px; padding: .75rem; max-height: calc(100vh - 90px); overflow-y: auto;
  }
  .ig-nav .nav-link.active::after { display: none; }
  .ig-nav .dropdown-menu { box-shadow: none; border: 0; background: transparent; }
}

/* ---------- section scaffolding ---------- */
.section { padding: 110px 0; position: relative; }
.section-sm { padding: 70px 0; }
.section-alt { background: linear-gradient(180deg, var(--ig-bg-2), var(--ig-bg)); }
.eyebrow {
  font-family: var(--ig-mono); font-size: .78rem; letter-spacing: .22em; text-transform: uppercase;
  color: var(--ig-apple); display: inline-flex; align-items: center; gap: .6rem; margin-bottom: 1rem;
}
.eyebrow::before { content: ""; width: 26px; height: 1px; background: var(--ig-apple); box-shadow: var(--ig-glow); }
.section-title { font-weight: 800; font-size: clamp(1.7rem, 3.2vw, 2.7rem); line-height: 1.25; color: #fff; margin-bottom: 1rem; }
.section-sub { color: var(--ig-muted); font-size: 1.06rem; max-width: 760px; }
.text-center .section-sub { margin-left: auto; margin-right: auto; }
.text-center .eyebrow::after { content: ""; width: 26px; height: 1px; background: var(--ig-apple); box-shadow: var(--ig-glow); }
.hl {
  background: linear-gradient(90deg, var(--ig-neon), var(--ig-apple) 50%, var(--ig-mint));
  -webkit-background-clip: text; background-clip: text; color: transparent;
}

/* reveal on scroll */
.reveal { opacity: 0; transform: translateY(26px); transition: opacity .8s ease, transform .8s cubic-bezier(.2,.7,.2,1); }
.reveal.in { opacity: 1; transform: none; }
.reveal[data-delay="1"] { transition-delay: .08s; } .reveal[data-delay="2"] { transition-delay: .16s; }
.reveal[data-delay="3"] { transition-delay: .24s; } .reveal[data-delay="4"] { transition-delay: .32s; }
.reveal[data-delay="5"] { transition-delay: .40s; }

/* ---------- glass card ---------- */
.ig-card {
  position: relative; height: 100%;
  background: linear-gradient(160deg, rgba(141,198,63,.07), rgba(141,198,63,.015) 45%, rgba(5,11,7,.4));
  border: 1px solid var(--ig-line); border-radius: var(--ig-radius);
  padding: 1.75rem; transition: transform .35s cubic-bezier(.2,.7,.2,1), border-color .35s, box-shadow .35s;
  overflow: hidden;
}
.ig-card::before {   /* corner brackets – HUD look */
  content: ""; position: absolute; inset: 10px; pointer-events: none; border-radius: 10px;
  background:
    linear-gradient(var(--ig-apple), var(--ig-apple)) top left / 14px 1px no-repeat,
    linear-gradient(var(--ig-apple), var(--ig-apple)) top left / 1px 14px no-repeat,
    linear-gradient(var(--ig-apple), var(--ig-apple)) bottom right / 14px 1px no-repeat,
    linear-gradient(var(--ig-apple), var(--ig-apple)) bottom right / 1px 14px no-repeat;
  opacity: .45; transition: opacity .35s, inset .35s;
}
.ig-card:hover { transform: translateY(-6px); border-color: var(--ig-line-2); box-shadow: 0 24px 60px -24px rgba(141,198,63,.45); }
.ig-card:hover::before { opacity: 1; inset: 6px; }
.ig-card h3, .ig-card h4 { color: #fff; font-weight: 700; }
.ig-card p { color: var(--ig-muted); }
a.ig-card { display: block; color: inherit; }
.ig-card .card-link-arrow { color: var(--ig-apple); font-weight: 600; display: inline-flex; gap: .35rem; align-items: center; }
.ig-card:hover .card-link-arrow i { transform: translateX(4px); }
.ig-card .card-link-arrow i { transition: transform .25s; }

.icon-wrap {
  width: 76px; height: 76px; border-radius: 20px; display: grid; place-items: center; margin-bottom: 1.25rem;
  background: radial-gradient(circle at 30% 25%, rgba(196,245,106,.18), rgba(141,198,63,.05) 60%);
  border: 1px solid var(--ig-line-2); box-shadow: inset 0 0 22px rgba(141,198,63,.12);
}
.icon-wrap .ai { width: 54px; height: 54px; }
.icon-wrap.lg { width: 120px; height: 120px; border-radius: 28px; }
.icon-wrap.lg .ai { width: 88px; height: 88px; }

.tag {
  display: inline-block; font-family: var(--ig-mono); font-size: .72rem; letter-spacing: .03em;
  color: var(--ig-apple-2); border: 1px solid var(--ig-line-2); background: rgba(141,198,63,.06);
  padding: .18rem .55rem; border-radius: 6px; margin: 0 .3rem .35rem 0; white-space: nowrap;
}
.pill {
  display: inline-flex; align-items: center; gap: .4rem; font-size: .8rem; color: var(--ig-text);
  padding: .3rem .75rem; border-radius: 999px; border: 1px solid var(--ig-line-2); background: rgba(5,11,7,.55);
}
.pill .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--ig-apple); box-shadow: 0 0 10px var(--ig-apple); animation: blink 1.8s infinite; }

/* ---------- hero ---------- */
.hero {
  position: relative; min-height: max(640px, min(100vh, 980px)); display: flex; align-items: center;
  padding: 130px 0 90px; overflow: hidden;
  background:
    radial-gradient(900px 600px at 78% 40%, rgba(141,198,63,.16), transparent 60%),
    radial-gradient(700px 500px at 10% 90%, rgba(61,220,151,.08), transparent 60%),
    var(--ig-bg);
}
.hero canvas#net { position: absolute; inset: 0; width: 100%; height: 100%; opacity: .75; }
.hero .bg-grid { position: absolute; inset: 0; opacity: .5; }
.hero .container { position: relative; z-index: 2; }
.hero h1 { font-weight: 800; font-size: clamp(2.1rem, 5vw, 4.1rem); line-height: 1.15; color: #fff; margin: 1rem 0 1.4rem; }
.hero h1 .hl { display: inline-block; }
.hero .lead { color: #c3d4bd; font-size: clamp(1rem, 1.3vw, 1.18rem); max-width: 620px; }
.hero-badges { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: 2rem; }
.typing-caret { display: inline-block; width: .08em; height: .95em; background: var(--ig-neon); margin-left: .08em; vertical-align: -.1em; animation: blink 1s steps(1) infinite; }
.scroll-hint { position: absolute; bottom: 26px; left: 50%; transform: translateX(-50%); z-index: 2; color: var(--ig-dim); font-size: .75rem; font-family: var(--ig-mono); letter-spacing: .2em; text-align: center; }
.scroll-hint span { display: block; width: 22px; height: 36px; border: 1.5px solid var(--ig-line-2); border-radius: 12px; margin: 0 auto 6px; position: relative; }
.scroll-hint span::after { content: ""; position: absolute; left: 50%; top: 7px; width: 4px; height: 7px; border-radius: 2px; background: var(--ig-apple); transform: translateX(-50%); animation: scrolldot 1.8s infinite; }
@keyframes scrolldot { 0% { opacity: 0; transform: translate(-50%, 0); } 30% { opacity: 1; } 100% { opacity: 0; transform: translate(-50%, 12px); } }

/* hero hub illustration */
.hub-svg { width: 100%; max-width: 620px; display: block; margin: 0 auto; overflow: visible; }
.hub-svg .node-bg { fill: rgba(8, 18, 11, .92); stroke: var(--ig-line-2); stroke-width: 1.2; }
.hub-svg .node:hover .node-bg { stroke: var(--ig-neon); }
.hub-svg .node-label { fill: #d8e7d0; font-size: 13px; font-weight: 600; font-family: var(--ig-font); }
.hub-svg .link { stroke: rgba(141,198,63,.28); stroke-width: 1.4; fill: none; }
.hub-svg .link-flow { stroke: var(--ig-apple); stroke-width: 2; fill: none; stroke-dasharray: 6 14; animation: dashflow 1.6s linear infinite; opacity: .85; }
.hub-svg .link-flow.rev { animation-direction: reverse; stroke: var(--ig-mint); }
.hub-svg .packet { fill: var(--ig-neon); filter: drop-shadow(0 0 6px var(--ig-neon)); }
.hub-svg .ring { fill: none; stroke: var(--ig-line-2); }
.hub-svg .ring-dash { fill: none; stroke: var(--ig-apple); stroke-width: 1.2; stroke-dasharray: 2 10; transform-box: fill-box; transform-origin: center; animation: spin 40s linear infinite; }
.hub-svg .ring-dash.rev { animation: spin 28s linear infinite reverse; stroke-dasharray: 30 18 4 18; opacity: .6; }
.hub-svg .hub-pulse { fill: none; stroke: var(--ig-apple); transform-box: fill-box; transform-origin: center; animation: ping 3s ease-out infinite; }
.hub-svg .hub-pulse.d2 { animation-delay: 1.5s; }
.hub-svg .hub-label { fill: #fff; font-size: 13px; font-weight: 700; font-family: var(--ig-font); }
.hub-svg .hub-sub { fill: var(--ig-apple); font-size: 10px; font-family: var(--ig-mono); letter-spacing: .15em; }
@keyframes dashflow { to { stroke-dashoffset: -40; } }
@keyframes ping { 0% { transform: scale(.6); opacity: .9; } 100% { transform: scale(1.9); opacity: 0; } }

/* ---------- stats ---------- */
.stats-bar { border-top: 1px solid var(--ig-line); border-bottom: 1px solid var(--ig-line); background: linear-gradient(90deg, transparent, rgba(141,198,63,.05), transparent); }
.stat { text-align: center; padding: 2.2rem .5rem; position: relative; }
.stat + .stat::before { content: ""; position: absolute; left: 0; top: 30%; bottom: 30%; width: 1px; background: var(--ig-line); }
.stat .num { font-family: "Exo 2", var(--ig-font); font-weight: 800; font-size: clamp(2rem, 3.6vw, 3rem); line-height: 1; color: #fff; }
.stat .num sup { color: var(--ig-apple); font-size: .5em; top: -.9em; margin-left: 2px; }
.stat .lbl { color: var(--ig-muted); font-size: .9rem; margin-top: .55rem; }
@media (max-width: 767.98px) { .stat:nth-child(odd)::before { display: none; } .stat { padding: 1.4rem .5rem; } }

/* ---------- architecture layers ---------- */
.arch { position: relative; }
.arch-layer {
  display: grid; grid-template-columns: 76px 1fr; gap: 1.2rem; align-items: center;
  border: 1px solid var(--ig-line); border-radius: 16px; padding: 1.1rem 1.4rem; margin-bottom: 18px;
  background: linear-gradient(90deg, rgba(141,198,63,.08), rgba(141,198,63,.01));
  position: relative; overflow: hidden;
}
.arch-layer::after { /* scanning light */
  content: ""; position: absolute; top: 0; bottom: 0; width: 120px; left: -140px;
  background: linear-gradient(90deg, transparent, rgba(196,245,106,.12), transparent);
  animation: scan 6s ease-in-out infinite;
}
.arch-layer:nth-child(2)::after { animation-delay: 1.2s; } .arch-layer:nth-child(3)::after { animation-delay: 2.4s; }
.arch-layer:nth-child(4)::after { animation-delay: 3.6s; }
@keyframes scan { 0% { left: -140px; } 60%, 100% { left: 110%; } }
.arch-layer .lvl { font-family: var(--ig-mono); font-size: .7rem; color: var(--ig-apple); letter-spacing: .15em; }
.arch-layer h4 { margin: 0; font-size: 1.15rem; color: #fff; font-weight: 700; }
.arch-layer p { margin: .15rem 0 0; color: var(--ig-muted); font-size: .92rem; }
.arch-layer .icon-wrap { margin: 0; width: 64px; height: 64px; border-radius: 16px; }
.arch-layer .icon-wrap .ai { width: 44px; height: 44px; }
.arch-stream { position: absolute; left: 50px; top: 30px; bottom: 30px; width: 2px; background: linear-gradient(var(--ig-line-2), var(--ig-line)); z-index: 0; }
.arch-stream i { position: absolute; left: -3px; width: 8px; height: 8px; border-radius: 50%; background: var(--ig-neon); box-shadow: 0 0 12px var(--ig-neon); animation: rise 4s linear infinite; }
.arch-stream i:nth-child(2) { animation-delay: 1.3s; } .arch-stream i:nth-child(3) { animation-delay: 2.6s; }
@keyframes rise { 0% { bottom: 0; opacity: 0; } 10% { opacity: 1; } 90% { opacity: 1; } 100% { bottom: 100%; opacity: 0; } }
.arch-visual { position: relative; border-radius: 22px; border: 1px solid var(--ig-line); background: radial-gradient(circle at 50% 40%, rgba(141,198,63,.12), transparent 70%); padding: 1rem; }

/* ---------- process ---------- */
.process { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1rem; position: relative; }
.process::before { content: ""; position: absolute; top: 38px; left: 10%; right: 10%; height: 2px; background: linear-gradient(90deg, var(--ig-line), var(--ig-apple), var(--ig-line)); background-size: 200% 100%; animation: flowbar 4s linear infinite; }
@keyframes flowbar { to { background-position: -200% 0; } }
.step { text-align: center; position: relative; }
.step .num { width: 76px; height: 76px; border-radius: 50%; margin: 0 auto 1rem; display: grid; place-items: center; font-family: var(--ig-mono); font-weight: 700; font-size: 1.25rem; color: var(--ig-neon); background: var(--ig-bg); border: 1.5px solid var(--ig-apple); box-shadow: 0 0 0 6px rgba(141,198,63,.08), var(--ig-glow); position: relative; z-index: 1; }
.step h4 { font-size: 1.05rem; font-weight: 700; color: #fff; }
.step p { font-size: .88rem; color: var(--ig-muted); }
@media (max-width: 991.98px) {
  .process { grid-template-columns: 1fr; gap: 0; }
  .process::before { top: 0; bottom: 0; left: 37px; right: auto; width: 2px; height: auto; background: linear-gradient(var(--ig-line), var(--ig-apple), var(--ig-line)); }
  .step { display: grid; grid-template-columns: 76px 1fr; gap: 1rem; text-align: left; padding-bottom: 1.2rem; align-items: center; }
  .step .num { margin: 0; }
}

/* ---------- industries ---------- */
.ind-item {
  display: flex; align-items: center; gap: .9rem; padding: 1rem 1.1rem; border-radius: 14px;
  border: 1px solid var(--ig-line); background: var(--ig-panel); color: var(--ig-text); height: 100%;
  transition: all .3s;
}
.ind-item:hover { border-color: var(--ig-apple); background: var(--ig-panel-2); color: #fff; transform: translateY(-3px); }
.ind-item .ai { width: 40px; height: 40px; flex: none; }
.ind-item b { display: block; font-weight: 600; line-height: 1.3; }
.ind-item small { color: var(--ig-dim); font-family: var(--ig-mono); font-size: .72rem; }

/* ---------- case card ---------- */
.case-card { padding: 0; display: flex; flex-direction: column; }
.case-card .cover { position: relative; aspect-ratio: 16 / 9; overflow: hidden; background: var(--ig-bg-3); }
.case-card .cover img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s cubic-bezier(.2,.7,.2,1); filter: saturate(.9) brightness(.85); }
.case-card:hover .cover img { transform: scale(1.06); }
.case-card .cover::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 45%, rgba(5,11,7,.85)); }
.gen-cover { position: absolute; inset: 0; display: grid; place-items: center;
  background:
    radial-gradient(circle at 70% 30%, rgba(141,198,63,.28), transparent 55%),
    radial-gradient(circle at 15% 85%, rgba(61,220,151,.14), transparent 50%),
    linear-gradient(135deg, #0b1a0f, #050b07); }
.gen-cover .bg-grid { position: absolute; inset: 0; opacity: .7; }
.gen-cover .ai { width: 96px; height: 96px; position: relative; z-index: 1; filter: drop-shadow(0 0 18px rgba(141,198,63,.45)); }
.case-card .badges { position: absolute; top: 12px; left: 12px; right: 12px; display: flex; justify-content: space-between; z-index: 2; gap: .4rem; }
.case-card .body { padding: 1.4rem 1.5rem 1.6rem; display: flex; flex-direction: column; flex: 1; }
.case-card h3 { font-size: 1.12rem; line-height: 1.45; margin-bottom: .5rem; }
.case-card .client { font-size: .85rem; color: var(--ig-apple-2); margin-bottom: .6rem; }
.case-card p { font-size: .92rem; margin-bottom: 1rem; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.case-card .tags { margin-top: auto; }

/* ---------- page header ---------- */
.page-hero { padding: 160px 0 80px; position: relative; overflow: hidden;
  background: radial-gradient(800px 400px at 80% 0%, rgba(141,198,63,.18), transparent 60%), var(--ig-bg); border-bottom: 1px solid var(--ig-line); }
.page-hero .bg-grid { position: absolute; inset: 0; opacity: .45; }
.page-hero .container { position: relative; z-index: 1; }
.page-hero h1 { font-weight: 800; color: #fff; font-size: clamp(2rem, 4vw, 3.1rem); }
.page-hero p { color: var(--ig-muted); max-width: 720px; font-size: 1.08rem; }
.page-hero .deco { position: absolute; right: 6%; top: 50%; transform: translateY(-40%); width: 230px; height: 230px; opacity: .9; z-index: 0; }
.page-hero .deco .ai { width: 100%; height: 100%; }
@media (min-width: 992px) { .page-hero h1, .page-hero p { max-width: calc(100% - 300px); } }
@media (max-width: 991.98px) { .page-hero .deco { display: none; } .page-hero { padding: 130px 0 56px; } }
.page-hero h1 { overflow-wrap: anywhere; }
.crumb { font-family: var(--ig-mono); font-size: .78rem; color: var(--ig-dim); margin-bottom: 1rem; }
.crumb a { color: var(--ig-muted); } .crumb a:hover { color: var(--ig-apple); }

/* ---------- lists ---------- */
.check-list { list-style: none; padding: 0; margin: 0; }
.check-list li { position: relative; padding: .45rem 0 .45rem 2rem; color: #d3e2cc; }
.check-list li::before { content: ""; position: absolute; left: 0; top: .78rem; width: 18px; height: 18px; border-radius: 6px; border: 1px solid var(--ig-apple); background: rgba(141,198,63,.12) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23c4f56a' stroke-width='2' d='M3.5 8.5l3 3 6-7'/%3E%3C/svg%3E") center/12px no-repeat; }
.num-list { counter-reset: n; list-style: none; padding: 0; }
.num-list li { counter-increment: n; position: relative; padding: .6rem 0 .6rem 3rem; border-bottom: 1px dashed var(--ig-line); color: #d3e2cc; }
.num-list li::before { content: counter(n, decimal-leading-zero); position: absolute; left: 0; top: .6rem; font-family: var(--ig-mono); color: var(--ig-apple); font-weight: 700; }

/* ---------- filters ---------- */
.filter-bar { border: 1px solid var(--ig-line); border-radius: 18px; padding: 1.1rem; background: rgba(8,18,11,.75); backdrop-filter: blur(8px); }
.chip { display: inline-flex; align-items: center; gap: .35rem; padding: .38rem .85rem; border-radius: 999px; font-size: .86rem; border: 1px solid var(--ig-line); color: var(--ig-muted); margin: 0 .35rem .45rem 0; background: transparent; transition: all .2s; }
.chip:hover { color: #fff; border-color: var(--ig-line-2); }
.chip.active { color: #071006; background: var(--ig-apple); border-color: var(--ig-apple); font-weight: 600; box-shadow: 0 0 18px rgba(141,198,63,.4); }
.chip .cnt { font-family: var(--ig-mono); font-size: .7rem; opacity: .75; }
.form-control, .form-select { background-color: rgba(5,11,7,.7); border-color: var(--ig-line-2); color: var(--ig-text); border-radius: 12px; padding: .7rem 1rem; }
.form-control:focus, .form-select:focus { background-color: rgba(5,11,7,.9); color: #fff; border-color: var(--ig-apple); box-shadow: 0 0 0 .2rem rgba(141,198,63,.2); }
.form-control::placeholder { color: var(--ig-dim); }
.form-label { color: #cfe0c7; font-weight: 500; font-size: .92rem; }
.filter-label { font-family: var(--ig-mono); font-size: .72rem; letter-spacing: .14em; color: var(--ig-dim); text-transform: uppercase; margin-bottom: .45rem; }

/* ---------- detail ---------- */
.detail-box { border: 1px solid var(--ig-line); border-radius: 18px; padding: 1.8rem; background: var(--ig-panel); margin-bottom: 1.5rem; }
.detail-box h2 { font-size: 1.25rem; font-weight: 700; color: #fff; display: flex; align-items: center; gap: .7rem; margin-bottom: 1rem; }
.detail-box h2 .ai { width: 34px; height: 34px; }
.meta-table { width: 100%; }
.meta-table td { padding: .55rem 0; border-bottom: 1px dashed var(--ig-line); vertical-align: top; }
.meta-table td:first-child { color: var(--ig-dim); font-family: var(--ig-mono); font-size: .78rem; letter-spacing: .08em; text-transform: uppercase; width: 38%; padding-right: .8rem; }
.sticky-side { position: sticky; top: 100px; }
.case-hero-img { border-radius: 18px; overflow: hidden; border: 1px solid var(--ig-line); position: relative; aspect-ratio: 16/9; background: var(--ig-bg-3); }
.case-hero-img img { width: 100%; height: 100%; object-fit: cover; }

/* ---------- CTA band ---------- */
.cta-band { position: relative; border-radius: 26px; overflow: hidden; padding: 3.5rem 2.5rem; border: 1px solid var(--ig-line-2);
  background: radial-gradient(600px 300px at 85% 20%, rgba(196,245,106,.25), transparent 60%), linear-gradient(120deg, #0f2412, #07120a 60%); }
.cta-band .bg-grid { position: absolute; inset: 0; opacity: .5; }
.cta-band > * { position: relative; }
.cta-band h2 { color: #fff; font-weight: 800; font-size: clamp(1.6rem, 3vw, 2.3rem); }
.cta-band p { color: #c3d4bd; }

/* ---------- tech page ---------- */
.spec-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: .6rem; }
.spec-grid span { border: 1px solid var(--ig-line); border-radius: 10px; padding: .6rem .8rem; font-family: var(--ig-mono); font-size: .8rem; color: #d3e2cc; background: var(--ig-panel); text-align: center; transition: all .25s; }
.spec-grid span:hover { border-color: var(--ig-apple); color: var(--ig-neon); }
.device-svg { width: 100%; max-width: 440px; display: block; margin: 0 auto; }

/* IG9000 product illustration */
.ig9000 { width: 100%; max-width: 470px; display: block; margin: 0 auto; overflow: visible; }
.ig9000 text { font-family: "Exo 2", "Segoe UI", Arial, sans-serif; }
.ig9000 .g9-legend text { fill: #c9d1d8; font-size: 8.5px; letter-spacing: .02em; }
.ig9000 .g9-legend text.tiny { font-size: 7px; fill: #aab3ba; }
.ig9000 .g9-lbl text { fill: #e6ebee; font-size: 12px; font-weight: 600; }
.ig9000 .g9-lbl text.sm { font-size: 10.5px; }
.ig9000 .g9-val { fill: #2a3138; font-size: 10.5px; font-family: "JetBrains Mono", Consolas, monospace; }
.ig9000 .g9-val.strong { font-weight: 700; font-size: 11.5px; }
.ig9000 .g9-name { fill: #f0a81c; font-size: 27px; font-weight: 800; letter-spacing: .01em; filter: drop-shadow(0 0 10px rgba(240,168,28,.25)); }
.ig9000 .g9-sub { fill: #8dc63f; font-size: 8.5px; letter-spacing: .25em; font-family: "JetBrains Mono", Consolas, monospace; opacity: .85; }
.ig9000 .g9-tf { fill: #c9d1d8; font-size: 9px; letter-spacing: .1em; }
.ig9000 .g9-pin { fill: #e6ebee; font-size: 10.5px; font-weight: 600; }
.ig9000 .g9-ring { transform-box: fill-box; transform-origin: center; animation: spin 40s linear infinite; }
.ig9000 .g9-flow { stroke: #8dc63f; stroke-width: 2; stroke-dasharray: 5 9; fill: none; opacity: .6; animation: dashflow 1.4s linear infinite reverse; }
.ig9000 .g9-flow.rev { stroke: #3ddc97; animation-direction: normal; }
.ig9000 .g9-packet { fill: #c4f56a; filter: drop-shadow(0 0 6px #c4f56a); }
.ig9000 .g9-packet.mint { fill: #3ddc97; filter: drop-shadow(0 0 6px #3ddc97); }
.ig9000 .g9-led.b0 { animation: blink 1.1s steps(2) infinite; }
.ig9000 .g9-led.b1 { animation: blink .7s steps(2) infinite .2s; }
.ig9000 .g9-led.b2 { animation: blink 1.6s steps(2) infinite .5s; }
.ig9000 .g9-led.b3 { animation: blink .5s steps(2) infinite .1s; }
.ig9000 .g9-led.off { opacity: .18; }
.ig9000 .g9-glare { animation: g9glare 7s ease-in-out infinite; }
@keyframes g9glare { 0%, 55% { transform: skewX(-18deg) translateX(0); } 100% { transform: skewX(-18deg) translateX(720px); } }

/* dashboard mock */
.dash { border: 1px solid var(--ig-line-2); border-radius: 18px; background: rgba(5,11,7,.85); padding: 1rem; box-shadow: 0 30px 80px -30px rgba(141,198,63,.35); }
.dash .bar { display: flex; gap: 6px; margin-bottom: .8rem; } .dash .bar i { width: 10px; height: 10px; border-radius: 50%; background: var(--ig-line-2); }
.dash .bar i:first-child { background: #e8645a; } .dash .bar i:nth-child(2) { background: #e6c14d; } .dash .bar i:nth-child(3) { background: var(--ig-apple); }
.dash-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: .6rem; }
.dash-tile { border: 1px solid var(--ig-line); border-radius: 12px; padding: .7rem; background: var(--ig-panel); }
.dash-tile .k { font-family: var(--ig-mono); font-size: .65rem; color: var(--ig-dim); letter-spacing: .1em; }
.dash-tile .v { font-weight: 800; font-size: 1.3rem; color: #fff; font-family: "Exo 2", sans-serif; }
.dash-tile .v small { color: var(--ig-apple); font-size: .65rem; }
.dash-tile.wide { grid-column: span 4; } .dash-tile.half { grid-column: span 2; }
.status-dots { display: grid; grid-template-columns: repeat(12, 1fr); gap: 5px; margin-top: .4rem; }
.status-dots i { aspect-ratio: 1; border-radius: 4px; background: var(--ig-apple); opacity: .85; animation: blink 3s infinite; }
.status-dots i:nth-child(7n) { background: #e6c14d; animation-delay: .6s; } .status-dots i:nth-child(11n) { background: #e8645a; animation-delay: 1.2s; }
.status-dots i:nth-child(5n) { animation-delay: 1.8s; }
.spark { width: 100%; height: 70px; }
.spark path.line { fill: none; stroke: var(--ig-apple); stroke-width: 2; stroke-dasharray: 600; stroke-dashoffset: 600; animation: draw 3.5s ease-in-out infinite alternate; }
.spark path.area { fill: url(#sparkGrad); opacity: .5; }
@keyframes draw { to { stroke-dashoffset: 0; } }
@media (max-width: 575.98px) { .dash-grid { grid-template-columns: repeat(2, 1fr); } .dash-tile.wide { grid-column: span 2; } .dash-tile.half { grid-column: span 2; } }

/* ---------- footer ---------- */
.ig-footer { border-top: 1px solid var(--ig-line); background: linear-gradient(180deg, var(--ig-bg), #030704); padding: 80px 0 30px; position: relative; overflow: hidden; }
.ig-footer::before { content: ""; position: absolute; left: 0; right: 0; top: -1px; height: 1px; background: linear-gradient(90deg, transparent, var(--ig-apple), transparent); animation: flowbar 6s linear infinite; background-size: 200% 100%; }
.ig-footer h6 { font-family: var(--ig-mono); font-size: .76rem; letter-spacing: .18em; text-transform: uppercase; color: var(--ig-apple); margin-bottom: 1.1rem; }
.ig-footer a { color: var(--ig-muted); } .ig-footer a:hover { color: var(--ig-neon); }
.ig-footer ul { list-style: none; padding: 0; margin: 0; } .ig-footer li { margin-bottom: .5rem; font-size: .92rem; }
.ig-footer .contact-row { display: flex; gap: .7rem; color: var(--ig-muted); font-size: .92rem; margin-bottom: .6rem; }
.ig-footer .contact-row i { color: var(--ig-apple); }
.ig-footer .bottom { border-top: 1px solid var(--ig-line); margin-top: 3rem; padding-top: 1.4rem; color: var(--ig-dim); font-size: .82rem; }
.social a { width: 38px; height: 38px; border-radius: 10px; display: inline-grid; place-items: center; border: 1px solid var(--ig-line-2); margin-right: .4rem; color: var(--ig-text); }
.social a:hover { border-color: var(--ig-apple); color: var(--ig-neon); box-shadow: var(--ig-glow); }

.back-top { position: fixed; right: 18px; bottom: 18px; z-index: 1000; width: 46px; height: 46px; border-radius: 14px; display: grid; place-items: center; background: rgba(8,18,11,.9); border: 1px solid var(--ig-line-2); color: var(--ig-apple); opacity: 0; pointer-events: none; transition: opacity .3s; }
.back-top.show { opacity: 1; pointer-events: auto; }
.back-top:hover { color: var(--ig-neon); box-shadow: var(--ig-glow); }

.alert-ig { border: 1px solid var(--ig-line-2); background: rgba(141,198,63,.08); color: var(--ig-text); border-radius: 14px; }

/* ==========================================================================
   Animated icon system (.ai) — inline SVG, CSS-driven motion
   ========================================================================== */
.ai { display: inline-block; overflow: visible; color: var(--ig-apple); }
.ai .st { fill: none; stroke: currentColor; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.ai .st-soft { fill: none; stroke: rgba(141,198,63,.45); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.ai .fl { fill: currentColor; }
.ai .fl-soft { fill: rgba(141,198,63,.18); }
.ai .fl-neon { fill: var(--ig-neon); }
.ai .st-neon { fill: none; stroke: var(--ig-neon); stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.ai .st-mint { fill: none; stroke: var(--ig-mint); stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.ai .fl-mint { fill: var(--ig-mint); }
.ai .spin { transform-box: fill-box; transform-origin: center; animation: spin 6s linear infinite; }
.ai .spin-rev { transform-box: fill-box; transform-origin: center; animation: spin 4.5s linear infinite reverse; }
.ai .spin-slow { transform-box: fill-box; transform-origin: center; animation: spin 14s linear infinite; }
.ai .pulse { transform-box: fill-box; transform-origin: center; animation: pulse 2s ease-in-out infinite; }
.ai .blink { animation: blink 1.6s ease-in-out infinite; }
.ai .blink.d1 { animation-delay: .3s; } .ai .blink.d2 { animation-delay: .6s; } .ai .blink.d3 { animation-delay: .9s; } .ai .blink.d4 { animation-delay: 1.2s; }
.ai .wave { transform-box: fill-box; transform-origin: left center; animation: wave 2s ease-out infinite; }
.ai .wave.d1 { animation-delay: .5s; } .ai .wave.d2 { animation-delay: 1s; }
.ai .wave-c { transform-box: view-box; animation: wavec 2.4s ease-out infinite; opacity: 0; }
.ai .wave-c.d1 { animation-delay: .8s; } .ai .wave-c.d2 { animation-delay: 1.6s; }
.ai .rise { animation: riseup 2.6s ease-in infinite; }
.ai .rise.d1 { animation-delay: .9s; } .ai .rise.d2 { animation-delay: 1.7s; }
.ai .smoke { transform-box: fill-box; transform-origin: center; animation: smoke 3s ease-out infinite; }
.ai .smoke.d1 { animation-delay: 1s; } .ai .smoke.d2 { animation-delay: 2s; }
.ai .move-x { animation: movex 3s linear infinite; }
.ai .move-x.d1 { animation-delay: -1s; } .ai .move-x.d2 { animation-delay: -2s; }
.ai .dash { stroke-dasharray: 5 7; animation: dashflow 1.2s linear infinite; }
.ai .draw { stroke-dasharray: 120; stroke-dashoffset: 120; animation: drawline 2.6s ease-in-out infinite; }
.ai .swing { transform-box: fill-box; animation: swing 2.8s ease-in-out infinite; }
.ai .arm1 { transform-box: view-box; transform-origin: 22px 50px; animation: arm1 4s ease-in-out infinite; }
.ai .arm2 { transform-box: view-box; transform-origin: 34px 28px; animation: arm2 4s ease-in-out infinite; }
.ai .float { animation: float 3s ease-in-out infinite; }
.ai .level { transform-box: fill-box; transform-origin: bottom; animation: level 3.2s ease-in-out infinite; }
.ai .bar1 { transform-box: fill-box; transform-origin: bottom; animation: bars 2.4s ease-in-out infinite; }
.ai .bar2 { transform-box: fill-box; transform-origin: bottom; animation: bars 2.4s ease-in-out infinite .4s; }
.ai .bar3 { transform-box: fill-box; transform-origin: bottom; animation: bars 2.4s ease-in-out infinite .8s; }
.ai .needle { transform-box: view-box; transform-origin: 32px 40px; animation: needle 3s ease-in-out infinite; }
.ai .rays { transform-box: fill-box; transform-origin: center; animation: spin 12s linear infinite; }
.ai .glint { animation: glint 3s ease-in-out infinite; }
.ai .beat { transform-box: fill-box; transform-origin: center; animation: beat 1.2s ease-in-out infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.12); opacity: .75; } }
@keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: .2; } }
@keyframes wave { 0% { opacity: 0; transform: scale(.6); } 40% { opacity: 1; } 100% { opacity: 0; transform: scale(1.15); } }
@keyframes wavec { 0% { opacity: .9; stroke-width: 2.4; } 100% { opacity: 0; stroke-width: .5; transform: scale(1.0); } }
@keyframes riseup { 0% { transform: translateY(0); opacity: 0; } 20% { opacity: 1; } 100% { transform: translateY(-16px); opacity: 0; } }
@keyframes smoke { 0% { transform: translateY(0) scale(.6); opacity: 0; } 30% { opacity: .9; } 100% { transform: translateY(-14px) scale(1.4); opacity: 0; } }
@keyframes movex { 0% { transform: translateX(-18px); opacity: 0; } 15%, 85% { opacity: 1; } 100% { transform: translateX(18px); opacity: 0; } }
@keyframes drawline { 0% { stroke-dashoffset: 120; } 55%, 75% { stroke-dashoffset: 0; } 100% { stroke-dashoffset: -120; } }
@keyframes swing { 0%, 100% { transform: rotate(-8deg); } 50% { transform: rotate(8deg); } }
@keyframes arm1 { 0%, 100% { transform: rotate(-10deg); } 50% { transform: rotate(12deg); } }
@keyframes arm2 { 0%, 100% { transform: rotate(16deg); } 50% { transform: rotate(-22deg); } }
@keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-4px); } }
@keyframes level { 0%, 100% { transform: scaleY(.45); } 50% { transform: scaleY(1); } }
@keyframes bars { 0%, 100% { transform: scaleY(.35); } 50% { transform: scaleY(1); } }
@keyframes needle { 0%, 100% { transform: rotate(-50deg); } 60% { transform: rotate(45deg); } }
@keyframes glint { 0%, 70%, 100% { opacity: 0; } 80% { opacity: 1; } }
@keyframes beat { 0%, 100% { transform: scale(1); } 15% { transform: scale(1.15); } 30% { transform: scale(1); } 45% { transform: scale(1.1); } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  .reveal { opacity: 1; transform: none; }
}
