openvibers/openvibe.network Commits
Motion: Calm reduces, only Off removes (Shared 4.183.0) (#750)
Changes
@@@ -159,7 +159,6 @@ a.btn{text-decoration:none}#sec-ssh .staff-pill{font-size:0.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:3px 8px;border-radius:999px;vertical-align:middle;margin-left:8px;color:var(--warning-text, var(--warning,#f0b74a));background:color-mix(in srgb,var(--warning,#f0b74a) 18%,transparent);border:1px solid color-mix(in srgb,var(--warning,#f0b74a) 40%,transparent)}#sec-ssh .staff-pill.user-pill{color:var(--accent,#6ea8ff);background:color-mix(in srgb,var(--accent,#6ea8ff) 18%,transparent);border-color:color-mix(in srgb,var(--accent,#6ea8ff) 40%,transparent)}--@media (prefers-reduced-motion: reduce) { .section, .toast { animation: none; } }/* ── Platform AI (AI Exchange D11 S3, owner only): one long page, sticky index, no inner tabs ───────────────────── */.platform-ai{max-width:1100px;min-width:0;overflow-wrap:anywhere}@@@ -261,4 +261,3 @@ body{min-height:100dvh;background:var(--bg);color:var(--text);font-family:'Inter.tab-bar button{font-size:12px;padding:8px 6px}}--@media (prefers-reduced-motion: reduce) { .bg-canvas .orb, .particles .p, .grid-overlay, .login-card, .login-card::before, .form-panel, .submit-btn .ripple, .message { animation: none; } }@@@ -360,10 +360,6 @@ button.td-stat:hover span { color: var(--accent-light); }.td-settings-btn { padding: 8px 10px; font-size: 0; gap: 0; }.td-settings-btn i { font-size: 16px; }}--@media (prefers-reduced-motion: reduce) {-- .td-pulse { animation: none; }-- .td-thumb img { transition: none; }--}.recent-tools { margin-top: 14px; }.recent-tools h3 { font-size: 12px; font-weight: 700; color: var(--text-secondary); margin: 0 0 8px; display: flex; gap: 6px; align-items: center; }.recent-tools-list { display: flex; flex-wrap: wrap; gap: 6px; }@@@ -423,7 +419,6 @@ button.td-stat:hover span { color: var(--accent-light); }.mc-pool > div.mc-role { grid-template-columns: auto minmax(0, 1fr); cursor: default; }.mc-empty { display: flex; gap: 14px; align-items: center; padding: 18px; border-radius: 14px; border: 1px dashed var(--border); color: var(--text-secondary); }.mc-empty > i { font-size: 26px; color: var(--accent-light); }--@media (prefers-reduced-motion: reduce) { .mc-wait-dot { animation: none; } }/* Your data choices (L24): kit fold rows, one per purpose. Phone first: one column of equal-weight buttons, neversideways. The kit's own /shared/kit.css draws the fold; these rules only lay out the choice inside it. */@@@ -551,7 +546,6 @@ button.td-stat:hover span { color: var(--accent-light); }80% { transform: translateX(5px); }}.qr-shake { animation: qr-shake .36s ease-in-out 1; }--@media (prefers-reduced-motion: reduce) { .qr-shake { animation: none; } }@media (max-width: 419px) {.qr-actions { grid-template-columns: minmax(0, 1fr); }.qr-actions .btn { width: 100%; }@@@ -653,7 +647,7 @@ button.td-stat:hover span { color: var(--accent-light); }.me-act-ic { width: 40px; height: 40px; font-size: 16px; }.me-act-t { font-size: 11.5px; }}--@media (prefers-reduced-motion: reduce) { .me-act { transition: none; } .me-act:hover { transform: none; } }++html[data-ov-motion=off] .me-act:hover{transform: none}/* Your status beside your name: the same dot as the bar's, one tap to change it. */.me-status { display: inline-flex; align-items: center; gap: 8px; min-height: 32px; margin-top: 10px; padding: 0 12px 0 10px; border-radius: 999px; cursor: pointer;@@@ -243,7 +243,5 @@ a { color: var(--accent, #3b82f6); }.w-pay-page { padding-left: 12px; padding-right: 12px; }}--/* Reduced motion: nothing here moves, and a person who asks for calm gets no transitions either. */--@media (prefers-reduced-motion: reduce) {-- *, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }--}++/* Motion off: the page does not glide. Calm keeps it. */++html[data-ov-motion=off] *,html[data-ov-motion=off] *::before,html[data-ov-motion=off] *::after{scroll-behavior: auto !important}@@@ -128,7 +128,6 @@ a{color:inherit}.constellation .cs-node:hover text,.constellation .cs-node:focus text{fill:var(--text-primary)}.constellation .cs-soon .cs-star{fill:var(--text-muted)}.constellation .cs-soon text{fill:var(--text-muted);font-size:10.5px;font-weight:500}@keyframes cs-twinkle{0%,100%{transform:scale(1);opacity:.16}50%{transform:scale(1.35);opacity:.3}}--@media (prefers-reduced-motion:reduce){.constellation .cs-halo{animation:none}.intent{transition:none}}@media (max-width:900px){.hero-grid{grid-template-columns:minmax(0,1fr);text-align:center}.hero-grid p.sub{margin:14px auto 0}.hero-sky{position:static;padding-top:0}.intent{text-align:left}}/* The orbit (server/home/render.js orbit()): rings turning in opposite directions, every icon upright. */.orbit{position:relative;width:min(100%,460px);aspect-ratio:1;margin:0 auto;container-type:inline-size}@@@ -149,8 +148,6 @@ a{color:inherit}.orb-core b{font-size:15px;font-weight:800;margin-top:6px}.orb-core small{font-size:12px;color:var(--text-muted)}@keyframes orb-dash{to{opacity:.3}}@keyframes orb-breathe{0%,100%{opacity:.7;transform:scale(.95)}50%{opacity:1;transform:scale(1.05)}}--@media (prefers-reduced-motion:reduce){.orb-ring,.orb-face,.orb-glow{animation:none}}--html[data-ov-motion=reduced] .orb-ring,html[data-ov-motion=reduced] .orb-face,html[data-ov-motion=reduced] .orb-glow{animation:none}/* Phones: the rings far enough apart that a label under an inner site never crosses the core or an outer site at anyturn (inner reach R1 + 42 px < R2 - 13 px; top label above the core's 45 px half height). The turning ring boxes reach past the screen'sedge at their corners, so the hero clips sideways overflow (nothing visible is there). */@@@ -56,7 +56,6 @@ li.now .dot i{animation:breathe 1.2s var(--ov-ease-in-out, ease-in-out) infinite.foot{display:flex;justify-content:space-between;align-items:center;margin-top:16px;font-size:12px;color:var(--text-muted);position:relative}.foot a{color:var(--accent-light);text-decoration:none;font-weight:600}.ov-mark{width:38px;height:38px;flex:none}--@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}</style><!-- The OpenVibe glyphs draw every fa- icon here (no Font Awesome since 2026-11-01). --><script src="/shared/ov-glyphs.js" defer></script>@@@ -67,7 +67,6 @@ p{color:var(--text-secondary);font-size:14px;line-height:1.6}.next{margin-top:22px;text-align:left;background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;padding:14px 16px;font-size:13px;color:var(--text-secondary);animation:rise var(--ov-dur-4, .5s) .25s both}.next b{color:var(--text-primary)}.next ul{margin:8px 0 0 18px;line-height:1.7}--@media (prefers-reduced-motion:reduce){.card,.ring,.ico,.burst i,.next{animation:none!important;transition:none!important}}</style></head><body>@@@ -312,7 +312,6 @@ const CSS = `.more-pick-h{display:block;margin:40px 0 0;padding:0 16px;font-size:clamp(1.25rem,5vw,1.5rem);font-weight:800;letter-spacing:-.02em}.more-pick{margin:10px 0 0;padding:2px 16px 4px}[data-now-part],[data-more-part]{scroll-margin-top:72px}}--@media (prefers-reduced-motion:reduce){.vc-thumb img,.vc-play,.vc-play i,.vc-about{transition:none}}.now-code{display:inline-block;margin:0 0 3px;padding:1px 7px;border-radius:6px;border:1px dashed var(--accent,#3b82f6);color:var(--accent-light,#60a5fa);font:700 12.5px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.3px}.now-list b{overflow-wrap:anywhere}.net-num{margin-top:18px;padding:16px 18px;border-radius:16px;border:1px solid var(--border,rgba(255,255,255,.08));background:color-mix(in srgb,var(--bg-secondary,#101828) 85%,transparent)}@@@ -326,7 +325,6 @@ const CSS = `.faq-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));margin-top:4px}.faq-item{padding:16px 18px;border-radius:16px;border:1px solid var(--border,rgba(255,255,255,.08));background:var(--bg-secondary,#101828)}.faq-item h3{font-size:15.5px;margin:0 0 6px;line-height:1.35}.faq-item p{margin:0;color:var(--text-secondary,#a8b3c4);font-size:14px;line-height:1.55}--@media (prefers-reduced-motion:reduce){.now-dot{animation:none}}${icons.CSS}/* Touch targets on phones (fleet audit, 2026-10-29): touch pointers only. */@media (pointer: coarse) {
@@ -159,7 +159,6 @@ a.btn{text-decoration:none}
@@ -159,7 +159,6 @@ a.btn{text-decoration:none}
#sec-ssh .staff-pill{font-size:0.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:3px 8px;border-radius:999px;vertical-align:middle;margin-left:8px;color:var(--warning-text, var(--warning,#f0b74a));background:color-mix(in srgb,var(--warning,#f0b74a) 18%,transparent);border:1px solid color-mix(in srgb,var(--warning,#f0b74a) 40%,transparent)}
#sec-ssh .staff-pill{font-size:0.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:3px 8px;border-radius:999px;vertical-align:middle;margin-left:8px;color:var(--warning-text, var(--warning,#f0b74a));background:color-mix(in srgb,var(--warning,#f0b74a) 18%,transparent);border:1px solid color-mix(in srgb,var(--warning,#f0b74a) 40%,transparent)}
#sec-ssh .staff-pill.user-pill{color:var(--accent,#6ea8ff);background:color-mix(in srgb,var(--accent,#6ea8ff) 18%,transparent);border-color:color-mix(in srgb,var(--accent,#6ea8ff) 40%,transparent)}
#sec-ssh .staff-pill.user-pill{color:var(--accent,#6ea8ff);background:color-mix(in srgb,var(--accent,#6ea8ff) 18%,transparent);border-color:color-mix(in srgb,var(--accent,#6ea8ff) 40%,transparent)}
-@media (prefers-reduced-motion: reduce) { .section, .toast { animation: none; } }
/* ── Platform AI (AI Exchange D11 S3, owner only): one long page, sticky index, no inner tabs ───────────────────── */
/* ── Platform AI (AI Exchange D11 S3, owner only): one long page, sticky index, no inner tabs ───────────────────── */
.platform-ai{max-width:1100px;min-width:0;overflow-wrap:anywhere}
.platform-ai{max-width:1100px;min-width:0;overflow-wrap:anywhere}
@@ -261,4 +261,3 @@ body{min-height:100dvh;background:var(--bg);color:var(--text);font-family:'Inter
@@ -261,4 +261,3 @@ body{min-height:100dvh;background:var(--bg);color:var(--text);font-family:'Inter
.tab-bar button{font-size:12px;padding:8px 6px}
.tab-bar button{font-size:12px;padding:8px 6px}
}
}
-@media (prefers-reduced-motion: reduce) { .bg-canvas .orb, .particles .p, .grid-overlay, .login-card, .login-card::before, .form-panel, .submit-btn .ripple, .message { animation: none; } }
@@ -360,10 +360,6 @@ button.td-stat:hover span { color: var(--accent-light); }
@@ -360,10 +360,6 @@ button.td-stat:hover span { color: var(--accent-light); }
.td-settings-btn { padding: 8px 10px; font-size: 0; gap: 0; }
.td-settings-btn { padding: 8px 10px; font-size: 0; gap: 0; }
.td-settings-btn i { font-size: 16px; }
.td-settings-btn i { font-size: 16px; }
}
}
-@media (prefers-reduced-motion: reduce) {
- .td-pulse { animation: none; }
- .td-thumb img { transition: none; }
-}
.recent-tools { margin-top: 14px; }
.recent-tools { margin-top: 14px; }
.recent-tools h3 { font-size: 12px; font-weight: 700; color: var(--text-secondary); margin: 0 0 8px; display: flex; gap: 6px; align-items: center; }
.recent-tools h3 { font-size: 12px; font-weight: 700; color: var(--text-secondary); margin: 0 0 8px; display: flex; gap: 6px; align-items: center; }
.recent-tools-list { display: flex; flex-wrap: wrap; gap: 6px; }
.recent-tools-list { display: flex; flex-wrap: wrap; gap: 6px; }
@@ -423,7 +419,6 @@ button.td-stat:hover span { color: var(--accent-light); }
@@ -423,7 +419,6 @@ button.td-stat:hover span { color: var(--accent-light); }
.mc-pool > div.mc-role { grid-template-columns: auto minmax(0, 1fr); cursor: default; }
.mc-pool > div.mc-role { grid-template-columns: auto minmax(0, 1fr); cursor: default; }
.mc-empty { display: flex; gap: 14px; align-items: center; padding: 18px; border-radius: 14px; border: 1px dashed var(--border); color: var(--text-secondary); }
.mc-empty { display: flex; gap: 14px; align-items: center; padding: 18px; border-radius: 14px; border: 1px dashed var(--border); color: var(--text-secondary); }
.mc-empty > i { font-size: 26px; color: var(--accent-light); }
.mc-empty > i { font-size: 26px; color: var(--accent-light); }
-@media (prefers-reduced-motion: reduce) { .mc-wait-dot { animation: none; } }
/* Your data choices (L24): kit fold rows, one per purpose. Phone first: one column of equal-weight buttons, never
/* Your data choices (L24): kit fold rows, one per purpose. Phone first: one column of equal-weight buttons, never
sideways. The kit's own /shared/kit.css draws the fold; these rules only lay out the choice inside it. */
sideways. The kit's own /shared/kit.css draws the fold; these rules only lay out the choice inside it. */
@@ -551,7 +546,6 @@ button.td-stat:hover span { color: var(--accent-light); }
@@ -551,7 +546,6 @@ button.td-stat:hover span { color: var(--accent-light); }
80% { transform: translateX(5px); }
80% { transform: translateX(5px); }
}
}
.qr-shake { animation: qr-shake .36s ease-in-out 1; }
.qr-shake { animation: qr-shake .36s ease-in-out 1; }
-@media (prefers-reduced-motion: reduce) { .qr-shake { animation: none; } }
@media (max-width: 419px) {
@media (max-width: 419px) {
.qr-actions { grid-template-columns: minmax(0, 1fr); }
.qr-actions { grid-template-columns: minmax(0, 1fr); }
.qr-actions .btn { width: 100%; }
.qr-actions .btn { width: 100%; }
@@ -653,7 +647,7 @@ button.td-stat:hover span { color: var(--accent-light); }
@@ -653,7 +647,7 @@ button.td-stat:hover span { color: var(--accent-light); }
.me-act-ic { width: 40px; height: 40px; font-size: 16px; }
.me-act-ic { width: 40px; height: 40px; font-size: 16px; }
.me-act-t { font-size: 11.5px; }
.me-act-t { font-size: 11.5px; }
}
}
-@media (prefers-reduced-motion: reduce) { .me-act { transition: none; } .me-act:hover { transform: none; } }
+html[data-ov-motion=off] .me-act:hover{transform: none}
/* Your status beside your name: the same dot as the bar's, one tap to change it. */
/* Your status beside your name: the same dot as the bar's, one tap to change it. */
.me-status { display: inline-flex; align-items: center; gap: 8px; min-height: 32px; margin-top: 10px; padding: 0 12px 0 10px; border-radius: 999px; cursor: pointer;
.me-status { display: inline-flex; align-items: center; gap: 8px; min-height: 32px; margin-top: 10px; padding: 0 12px 0 10px; border-radius: 999px; cursor: pointer;
@@ -243,7 +243,5 @@ a { color: var(--accent, #3b82f6); }
@@ -243,7 +243,5 @@ a { color: var(--accent, #3b82f6); }
.w-pay-page { padding-left: 12px; padding-right: 12px; }
.w-pay-page { padding-left: 12px; padding-right: 12px; }
}
}
-/* Reduced motion: nothing here moves, and a person who asks for calm gets no transitions either. */
-@media (prefers-reduced-motion: reduce) {
- *, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
-}
+/* Motion off: the page does not glide. Calm keeps it. */
+html[data-ov-motion=off] *,html[data-ov-motion=off] *::before,html[data-ov-motion=off] *::after{scroll-behavior: auto !important}
@@ -128,7 +128,6 @@ a{color:inherit}
@@ -128,7 +128,6 @@ a{color:inherit}
.constellation .cs-node:hover text,.constellation .cs-node:focus text{fill:var(--text-primary)}
.constellation .cs-node:hover text,.constellation .cs-node:focus text{fill:var(--text-primary)}
.constellation .cs-soon .cs-star{fill:var(--text-muted)}.constellation .cs-soon text{fill:var(--text-muted);font-size:10.5px;font-weight:500}
.constellation .cs-soon .cs-star{fill:var(--text-muted)}.constellation .cs-soon text{fill:var(--text-muted);font-size:10.5px;font-weight:500}
@keyframes cs-twinkle{0%,100%{transform:scale(1);opacity:.16}50%{transform:scale(1.35);opacity:.3}}
@keyframes cs-twinkle{0%,100%{transform:scale(1);opacity:.16}50%{transform:scale(1.35);opacity:.3}}
-@media (prefers-reduced-motion:reduce){.constellation .cs-halo{animation:none}.intent{transition:none}}
@media (max-width:900px){.hero-grid{grid-template-columns:minmax(0,1fr);text-align:center}.hero-grid p.sub{margin:14px auto 0}.hero-sky{position:static;padding-top:0}.intent{text-align:left}}
@media (max-width:900px){.hero-grid{grid-template-columns:minmax(0,1fr);text-align:center}.hero-grid p.sub{margin:14px auto 0}.hero-sky{position:static;padding-top:0}.intent{text-align:left}}
/* The orbit (server/home/render.js orbit()): rings turning in opposite directions, every icon upright. */
/* The orbit (server/home/render.js orbit()): rings turning in opposite directions, every icon upright. */
.orbit{position:relative;width:min(100%,460px);aspect-ratio:1;margin:0 auto;container-type:inline-size}
.orbit{position:relative;width:min(100%,460px);aspect-ratio:1;margin:0 auto;container-type:inline-size}
@@ -149,8 +148,6 @@ a{color:inherit}
@@ -149,8 +148,6 @@ a{color:inherit}
.orb-core b{font-size:15px;font-weight:800;margin-top:6px}.orb-core small{font-size:12px;color:var(--text-muted)}
.orb-core b{font-size:15px;font-weight:800;margin-top:6px}.orb-core small{font-size:12px;color:var(--text-muted)}
@keyframes orb-dash{to{opacity:.3}}
@keyframes orb-dash{to{opacity:.3}}
@keyframes orb-breathe{0%,100%{opacity:.7;transform:scale(.95)}50%{opacity:1;transform:scale(1.05)}}
@keyframes orb-breathe{0%,100%{opacity:.7;transform:scale(.95)}50%{opacity:1;transform:scale(1.05)}}
-@media (prefers-reduced-motion:reduce){.orb-ring,.orb-face,.orb-glow{animation:none}}
-html[data-ov-motion=reduced] .orb-ring,html[data-ov-motion=reduced] .orb-face,html[data-ov-motion=reduced] .orb-glow{animation:none}
/* Phones: the rings far enough apart that a label under an inner site never crosses the core or an outer site at any
/* Phones: the rings far enough apart that a label under an inner site never crosses the core or an outer site at any
turn (inner reach R1 + 42 px < R2 - 13 px; top label above the core's 45 px half height). The turning ring boxes reach past the screen's
turn (inner reach R1 + 42 px < R2 - 13 px; top label above the core's 45 px half height). The turning ring boxes reach past the screen's
edge at their corners, so the hero clips sideways overflow (nothing visible is there). */
edge at their corners, so the hero clips sideways overflow (nothing visible is there). */
@@ -56,7 +56,6 @@ li.now .dot i{animation:breathe 1.2s var(--ov-ease-in-out, ease-in-out) infinite
@@ -56,7 +56,6 @@ li.now .dot i{animation:breathe 1.2s var(--ov-ease-in-out, ease-in-out) infinite
.foot{display:flex;justify-content:space-between;align-items:center;margin-top:16px;font-size:12px;color:var(--text-muted);position:relative}
.foot{display:flex;justify-content:space-between;align-items:center;margin-top:16px;font-size:12px;color:var(--text-muted);position:relative}
.foot a{color:var(--accent-light);text-decoration:none;font-weight:600}
.foot a{color:var(--accent-light);text-decoration:none;font-weight:600}
.ov-mark{width:38px;height:38px;flex:none}
.ov-mark{width:38px;height:38px;flex:none}
-@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
</style>
</style>
<!-- The OpenVibe glyphs draw every fa- icon here (no Font Awesome since 2026-11-01). -->
<!-- The OpenVibe glyphs draw every fa- icon here (no Font Awesome since 2026-11-01). -->
<script src="/shared/ov-glyphs.js" defer></script>
<script src="/shared/ov-glyphs.js" defer></script>
@@ -67,7 +67,6 @@ p{color:var(--text-secondary);font-size:14px;line-height:1.6}
@@ -67,7 +67,6 @@ p{color:var(--text-secondary);font-size:14px;line-height:1.6}
.next{margin-top:22px;text-align:left;background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;padding:14px 16px;font-size:13px;color:var(--text-secondary);animation:rise var(--ov-dur-4, .5s) .25s both}
.next{margin-top:22px;text-align:left;background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;padding:14px 16px;font-size:13px;color:var(--text-secondary);animation:rise var(--ov-dur-4, .5s) .25s both}
.next b{color:var(--text-primary)}
.next b{color:var(--text-primary)}
.next ul{margin:8px 0 0 18px;line-height:1.7}
.next ul{margin:8px 0 0 18px;line-height:1.7}
-@media (prefers-reduced-motion:reduce){.card,.ring,.ico,.burst i,.next{animation:none!important;transition:none!important}}
</style>
</style>
</head>
</head>
<body>
<body>
@@ -312,7 +312,6 @@ const CSS = `
@@ -312,7 +312,6 @@ const CSS = `
.more-pick-h{display:block;margin:40px 0 0;padding:0 16px;font-size:clamp(1.25rem,5vw,1.5rem);font-weight:800;letter-spacing:-.02em}.more-pick{margin:10px 0 0;padding:2px 16px 4px}
.more-pick-h{display:block;margin:40px 0 0;padding:0 16px;font-size:clamp(1.25rem,5vw,1.5rem);font-weight:800;letter-spacing:-.02em}.more-pick{margin:10px 0 0;padding:2px 16px 4px}
[data-now-part],[data-more-part]{scroll-margin-top:72px}
[data-now-part],[data-more-part]{scroll-margin-top:72px}
}
}
-@media (prefers-reduced-motion:reduce){.vc-thumb img,.vc-play,.vc-play i,.vc-about{transition:none}}
.now-code{display:inline-block;margin:0 0 3px;padding:1px 7px;border-radius:6px;border:1px dashed var(--accent,#3b82f6);color:var(--accent-light,#60a5fa);font:700 12.5px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.3px}
.now-code{display:inline-block;margin:0 0 3px;padding:1px 7px;border-radius:6px;border:1px dashed var(--accent,#3b82f6);color:var(--accent-light,#60a5fa);font:700 12.5px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.3px}
.now-list b{overflow-wrap:anywhere}
.now-list b{overflow-wrap:anywhere}
.net-num{margin-top:18px;padding:16px 18px;border-radius:16px;border:1px solid var(--border,rgba(255,255,255,.08));background:color-mix(in srgb,var(--bg-secondary,#101828) 85%,transparent)}
.net-num{margin-top:18px;padding:16px 18px;border-radius:16px;border:1px solid var(--border,rgba(255,255,255,.08));background:color-mix(in srgb,var(--bg-secondary,#101828) 85%,transparent)}
@@ -326,7 +325,6 @@ const CSS = `
@@ -326,7 +325,6 @@ const CSS = `
.faq-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));margin-top:4px}
.faq-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));margin-top:4px}
.faq-item{padding:16px 18px;border-radius:16px;border:1px solid var(--border,rgba(255,255,255,.08));background:var(--bg-secondary,#101828)}
.faq-item{padding:16px 18px;border-radius:16px;border:1px solid var(--border,rgba(255,255,255,.08));background:var(--bg-secondary,#101828)}
.faq-item h3{font-size:15.5px;margin:0 0 6px;line-height:1.35}.faq-item p{margin:0;color:var(--text-secondary,#a8b3c4);font-size:14px;line-height:1.55}
.faq-item h3{font-size:15.5px;margin:0 0 6px;line-height:1.35}.faq-item p{margin:0;color:var(--text-secondary,#a8b3c4);font-size:14px;line-height:1.55}
-@media (prefers-reduced-motion:reduce){.now-dot{animation:none}}
${icons.CSS}
${icons.CSS}
/* Touch targets on phones (fleet audit, 2026-10-29): touch pointers only. */
/* Touch targets on phones (fleet audit, 2026-10-29): touch pointers only. */
@media (pointer: coarse) {
@media (pointer: coarse) {