/* ==========================================================================
   hand-control/ — Hand Control product page
   Loaded after seidr-v2.css; only page-specific rules live here.
   Hooks used by hand-control/hand-control.js and download-meta.js
   (data-hc-*, .is-ready / .is-paused / .is-away, html.hc-win) are styled
   here, so both scripts keep working unchanged.
   ========================================================================== */

.page-hand {
  --hc: var(--frost);
  --hc-deep: #5c9bc9;
  --hc-ink: #081319;
}
.page-hand code, .page-hand pre { font-family: var(--f-mono); }
.page-hand code { font-size: .88em; }
.section-head .eyebrow + h2 { margin-top: 18px; }
.hc-ui { font-style: normal; font-weight: 600; color: var(--bone); }
.hc-inline-link { color: var(--hc); text-underline-offset: 4px; white-space: nowrap; }
.hc-inline-link:hover { color: var(--bone); }
.hc-nw { white-space: nowrap; }

/* ---------- hero ---------- */
.hc-hero { background: radial-gradient(70% 90% at 85% 100%, rgba(159, 212, 255, .12), transparent 60%), radial-gradient(80% 90% at 70% 110%, rgba(47, 159, 132, .14), transparent 60%), linear-gradient(180deg, #04080a, var(--night)); }
.hc-hero .page-rune { color: var(--hc); opacity: .14; }
.hc-hero h1 { max-width: 12ch; }
.hc-hero .lead { max-width: 56ch; }
.hc-hero .hero-actions { align-items: center; }
.hc-download { gap: 6px 14px; max-width: 100%; flex-wrap: wrap; white-space: normal; }
.hc-download small { padding-left: 0; border-left: 0; font-family: var(--f-mono); font-size: .75rem; font-weight: 500; letter-spacing: .02em; opacity: .85; }
.hc-fine { margin-top: 18px; font-family: var(--f-mono); font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; color: var(--mist-2); }
.hc-hero-pills { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 26px; }
.hc-hero-pills .tag { background: rgba(6, 11, 13, .5); }

/* phones: the installer is for a Windows PC (shown only on touch devices, see the end) */
.hc-phone-note { display: none; margin-top: 22px; max-width: 52ch; padding: 12px 16px; border-radius: var(--r-m); border: 1px solid color-mix(in srgb, var(--hc) 30%, transparent); background: color-mix(in srgb, var(--hc) 7%, transparent); color: var(--bone); font-size: .92rem; align-items: center; gap: 14px; }
.hc-phone-note .rune { font-size: 1.5rem; color: var(--hc); }
.hc-phone-download { display: none; color: var(--mist); text-decoration: underline; text-underline-offset: 4px; font-size: .92rem; padding: 10px 0; min-height: 44px; }
.hc-phone-download:hover { color: var(--sap); }

/* ---------- the sketch: your pointer plays the hand ---------- */
.hc-try { padding-bottom: clamp(60px, 8vw, 110px); }
.hc-stage {
  position: relative; border-radius: var(--r-l); overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--hc) 24%, var(--line));
  background: linear-gradient(180deg, var(--moss), var(--night-2));
  box-shadow: 0 40px 120px -50px rgba(159, 212, 255, .35), 0 30px 80px -40px rgba(0, 0, 0, .8);
}
.hc-stage-bar { display: flex; align-items: center; gap: 14px; padding: 12px 16px; border-bottom: 1px solid var(--line); background: rgba(4, 8, 9, .55); font-family: var(--f-mono); font-size: .75rem; letter-spacing: .12em; text-transform: uppercase; color: var(--mist-2); }
.hc-stage-dots { display: inline-flex; gap: 6px; }
.hc-stage-dots i, .hc-window-bar i { width: 9px; height: 9px; border-radius: 50%; background: var(--line-2); }
.hc-stage-dots i:first-child { background: color-mix(in srgb, var(--ember) 70%, transparent); }
.hc-stage-title { flex: 1; min-width: 0; }
.hc-stage-state { color: var(--aurora); display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; }
.hc-stage-state::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; box-shadow: 0 0 10px currentColor; }
.hc-stage-state.off { color: var(--ember); }
.hc-stage-view { position: relative; height: clamp(420px, 44vw, 560px); background: radial-gradient(70% 80% at 50% 45%, #0d1c22, #050a0b); cursor: none; }
.hc-stage-view::after { content: ""; position: absolute; inset: 0; pointer-events: none; box-shadow: inset 0 0 90px rgba(0, 0, 0, .65); }
.hc-stage-view canvas { width: 100%; height: 100%; touch-action: pan-y; }
.hc-stage-view canvas:focus-visible { outline: 2px solid var(--sap); outline-offset: -4px; border-radius: 0; }
.hc-stage-score { position: absolute; top: 14px; right: 14px; z-index: 2; font-family: var(--f-mono); font-size: .75rem; letter-spacing: .06em; color: var(--hc); background: rgba(5, 10, 11, .75); padding: 5px 11px; border-radius: 99px; border: 1px solid var(--line); pointer-events: none; }
.hc-stage-hint { position: absolute; left: 50%; bottom: 16px; z-index: 2; transform: translateX(-50%); font-family: var(--f-mono); font-size: .75rem; letter-spacing: .12em; text-transform: uppercase; color: var(--mist); background: rgba(5, 10, 11, .75); padding: 6px 12px; border-radius: 99px; border: 1px solid var(--line); pointer-events: none; white-space: nowrap; transition: opacity .5s; }
.hc-stage-hint.gone { opacity: 0; }
.hc-stage-fallback { position: absolute; inset: 0; display: grid; place-items: center; padding: 24px; text-align: center; color: var(--mist); }
html.js .hc-stage-fallback { display: none; }
html:not(.js) .hc-stage-hint, html:not(.js) .hc-stage-score { display: none; }
.hc-stage-foot { display: grid; gap: 12px; padding: 16px 18px 18px; border-top: 1px solid var(--line); }
.hc-stage-modes { display: flex; flex-wrap: wrap; gap: 8px; }
.hc-stage-modes .chip { cursor: pointer; }
.hc-stage-caption { min-height: 1.6em; color: var(--mist); font-size: .95rem; }
.hc-stage-caption b { font-family: var(--f-display); font-size: 1.35rem; font-weight: 500; color: var(--bone); margin-right: .45em; }
.hc-stage-help { font-size: .8rem; color: var(--mist-2); }

/* ---------- gesture drawings (cards and the illustration) ---------- */
.hc-pose { display: block; width: 96px; height: auto; margin: 0; overflow: visible; }
.hc-pose .g-bone, .hc-live-art .g-bone { fill: none; stroke: var(--hc); stroke-width: 11; stroke-linecap: round; stroke-linejoin: round; opacity: .85; }
.hc-pose .g-faint, .hc-live-art .g-faint { fill: none; stroke: var(--hc); stroke-width: 7; stroke-linecap: round; opacity: .3; }
.hc-pose .g-joint { fill: var(--night-2); stroke: var(--hc); stroke-width: 6; }
.hc-live-art .g-joint { fill: #0a1417; stroke: var(--hc); stroke-width: 6; }
.hc-pose .g-mark, .hc-live-art .g-mark { fill: var(--sap); }
.hc-pose .g-ring, .hc-live-art .g-ring { fill: none; stroke: var(--sap); stroke-width: 5; opacity: .7; }
.hc-pose .g-halo, .hc-live-art .g-halo { fill: none; stroke: var(--night-2); stroke-width: 16; stroke-linecap: round; stroke-linejoin: round; }

/* ---------- the illustration (animated by hand-control.js classes) ---------- */
.hc-live-frame { margin: 0 0 clamp(28px, 4vw, 44px); }
.hc-live {
  display: grid; grid-template-columns: minmax(0, 1fr) 230px; gap: 22px; align-items: center;
  padding: clamp(14px, 2vw, 24px); border-radius: var(--r-l); border: 1px solid var(--line);
  background: radial-gradient(80% 100% at 30% 0%, rgba(159, 212, 255, .06), transparent 60%), #0a1417;
}
.hc-live-art { display: block; width: 100%; height: auto; }
.hc-live-side { display: grid; gap: 18px; align-content: center; }
.hc-live-steps { margin: 0; padding: 0; list-style: none; display: grid; gap: 10px; counter-reset: lv; }
.hc-live-steps li { counter-increment: lv; display: flex; gap: 12px; align-items: center; color: var(--mist-2); font-size: .92rem; }
.hc-live-steps li::before { content: counter(lv); display: grid; place-items: center; flex: none; width: 26px; height: 26px; border-radius: 50%; border: 1px solid var(--line-2); font-family: var(--f-mono); font-size: .75rem; }
.hc-live-pause { justify-self: start; min-height: 44px; padding: 0 20px; border-radius: 99px; border: 1px solid var(--line-2); background: transparent; color: var(--bone); font-size: .85rem; }
.hc-live-pause:hover { border-color: var(--hc); color: var(--hc); }
.lv-win { fill: #0f1d21; stroke: #27393d; }
.lv-bar { fill: #152629; }
.lv-dot { fill: #2c4145; }
.lv-row-bg { fill: transparent; }
.lv-icon { fill: #2c5a5c; }
.lv-name { fill: #c9d3cd; font-family: var(--f-body); font-size: 20px; }
.lv-meta { fill: var(--mist-2); font-family: var(--f-mono); font-size: 15px; }
.lv-path { fill: var(--mist); font-family: var(--f-mono); font-size: 15px; }
.lv-k-part { fill: #2c6a66; }
.lv-k-asm { fill: #8a7340; }
.lv-k-step { fill: #3d5a78; }
.lv-k-dxf { fill: #5a5f6e; }
.lv-open-title { fill: var(--bone); font-family: var(--f-body); font-size: 17px; font-weight: 600; }
.lv-part path, .lv-part ellipse { fill: none; stroke: var(--hc); stroke-width: 1.6; stroke-linejoin: round; }
.lv-target .lv-row-bg { fill: #1b3238; }
.lv-target .lv-meta { fill: var(--mist); }
.lv-open { opacity: 0; }
.lv-open rect:first-child { fill: #142a30; stroke: var(--hc); stroke-width: 1.5; }
.lv-cursor { transform: translate(322px, 134px); }
.lv-cursor path { fill: var(--bone); stroke: #060b0d; stroke-width: 2; stroke-linejoin: round; }
.lv-ripple { fill: none; stroke: var(--sap); stroke-width: 2.5; opacity: 0; transform: translate(322px, 134px); }
.lv-h-pinch, .lv-h-vee { opacity: 0; }
/* the animation runs only once the page script is present (it alone can pause it) and motion is welcome */
@media (prefers-reduced-motion: no-preference) {
  .hc-live.is-ready .lv-cursor { animation: lv-cursor 10s infinite; }
  .hc-live.is-ready .lv-hands { animation: lv-hands 10s infinite; }
  .hc-live.is-ready .lv-h-point { animation: lv-point 10s infinite; }
  .hc-live.is-ready .lv-h-pinch { animation: lv-pinch 10s infinite; }
  .hc-live.is-ready .lv-h-vee { animation: lv-vee 10s infinite; }
  .hc-live.is-ready .lv-r1 { animation: lv-rip1 10s infinite; }
  .hc-live.is-ready .lv-r2 { animation: lv-rip2 10s infinite; }
  .hc-live.is-ready .lv-r3 { animation: lv-rip3 10s infinite; }
  .hc-live.is-ready .lv-target .lv-row-bg { animation: lv-select 10s infinite; }
  .hc-live.is-ready .lv-open { animation: lv-open 10s infinite; }
  .hc-live.is-ready .lv-list { animation: lv-scroll 10s infinite; }
  .hc-live.is-ready .lv-s1 { animation: lv-s1 10s infinite; }
  .hc-live.is-ready .lv-s2 { animation: lv-s2 10s infinite; }
  .hc-live.is-ready .lv-s3 { animation: lv-s3 10s infinite; }
  .hc-live.is-ready .lv-s4 { animation: lv-s4 10s infinite; }
  .hc-live.is-paused *, .hc-live.is-away * { animation-play-state: paused !important; }
}
@media (prefers-reduced-motion: reduce) { .hc-live-pause { display: none; } }
@keyframes lv-cursor { 0% { transform: translate(120px, 236px); } 20%, 92% { transform: translate(322px, 134px); } 100% { transform: translate(120px, 236px); } }
@keyframes lv-hands { 0% { transform: translate(-71px, 36px); } 20%, 64% { transform: translate(0, 0); } 88%, 92% { transform: translate(0, -18px); } 100% { transform: translate(-71px, 36px); } }
@keyframes lv-point { 0%, 23.9% { opacity: 1; } 24%, 45.9% { opacity: 0; } 46%, 47.9% { opacity: 1; } 48%, 91.9% { opacity: 0; } 92%, 100% { opacity: 1; } }
@keyframes lv-pinch { 0%, 23.9% { opacity: 0; } 24%, 45.9% { opacity: 1; } 46%, 47.9% { opacity: 0; } 48%, 61.9% { opacity: 1; } 62%, 100% { opacity: 0; } }
@keyframes lv-vee { 0%, 61.9% { opacity: 0; } 62%, 91.9% { opacity: 1; } 92%, 100% { opacity: 0; } }
@keyframes lv-rip1 { 0%, 27% { opacity: 0; transform: translate(322px, 134px) scale(.3); } 28% { opacity: .9; } 35%, 100% { opacity: 0; transform: translate(322px, 134px) scale(1.4); } }
@keyframes lv-rip2 { 0%, 40.5% { opacity: 0; transform: translate(322px, 134px) scale(.3); } 41.5% { opacity: .9; } 46%, 100% { opacity: 0; transform: translate(322px, 134px) scale(1.4); } }
@keyframes lv-rip3 { 0%, 48% { opacity: 0; transform: translate(322px, 134px) scale(.3); } 49% { opacity: .9; } 55%, 100% { opacity: 0; transform: translate(322px, 134px) scale(1.4); } }
@keyframes lv-select { 0%, 27.9% { fill: transparent; } 28%, 96% { fill: #1b3238; } 100% { fill: transparent; } }
@keyframes lv-open { 0%, 50% { opacity: 0; } 52%, 63% { opacity: 1; } 66%, 100% { opacity: 0; } }
@keyframes lv-scroll { 0%, 67% { transform: translateY(0); } 88%, 96% { transform: translateY(-68px); } 100% { transform: translateY(0); } }
@keyframes lv-s1 { 0%, 23% { color: var(--bone); } 24%, 91% { color: var(--mist-2); } 92%, 100% { color: var(--bone); } }
@keyframes lv-s2 { 0%, 23% { color: var(--mist-2); } 24%, 39% { color: var(--bone); } 40%, 100% { color: var(--mist-2); } }
@keyframes lv-s3 { 0%, 39% { color: var(--mist-2); } 40%, 61% { color: var(--bone); } 62%, 100% { color: var(--mist-2); } }
@keyframes lv-s4 { 0%, 61% { color: var(--mist-2); } 62%, 91% { color: var(--bone); } 92%, 100% { color: var(--mist-2); } }
/* the illustration still reads, and stands still on its first frame, without the script */
.hc-live:not(.is-ready) .lv-s1 { color: var(--bone); }

/* ---------- gesture cards ---------- */
.hc-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.hc-card {
  --c: var(--hc);
  position: relative; overflow: hidden; display: grid; grid-template-columns: 84px minmax(0, 1fr); grid-template-rows: auto auto 1fr; column-gap: 20px;
  padding: 22px; border-radius: var(--r-m); border: 1px solid var(--line); background: linear-gradient(180deg, var(--moss), var(--night-2));
  transition: border-color .35s;
}
.hc-card::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(300px circle at var(--mx, 50%) var(--my, 0%), color-mix(in srgb, var(--c) 13%, transparent), transparent 60%); opacity: 0; transition: opacity .35s; }
.hc-card:hover { border-color: color-mix(in srgb, var(--c) 40%, transparent); }
.hc-card:hover::before { opacity: 1; }
.hc-card > .hc-pose { grid-row: 1 / 4; width: 84px; transition: transform .6s var(--ease-spring); }
.hc-card:hover > .hc-pose { transform: rotate(-5deg) scale(1.05); }
.hc-card > .kicker, .hc-card > h3, .hc-card > p { grid-column: 2; }
.kicker { font-family: var(--f-mono); font-size: .75rem; letter-spacing: .12em; text-transform: uppercase; color: var(--hc); }
.hc-card h3 { font-size: 1.65rem; margin: 6px 0 8px; }
.hc-card p { color: var(--mist); font-size: .92rem; }
.hc-card-3d { grid-column: 1 / -1; grid-template-columns: 200px minmax(0, 1fr); grid-template-rows: auto; column-gap: 32px; align-items: center; background: radial-gradient(70% 120% at 0% 50%, rgba(243, 183, 95, .08), transparent 60%), linear-gradient(180deg, var(--moss-2), var(--night-2)); }
.hc-card-3d > .hc-pose { width: 200px; grid-row: auto; }
.hc-card-3d > div { grid-column: 2; }
.hc-card-3d h3 { font-size: clamp(1.8rem, 2.6vw, 2.4rem); }
.hc-card-3d p { max-width: 70ch; font-size: .98rem; }

/* ---------- 3D programs ---------- */
.hc-3d { background: linear-gradient(180deg, transparent, var(--night-2) 18%, var(--night-2) 82%, transparent); }
.hc-demo-grid { display: grid; grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr); gap: clamp(30px, 5vw, 80px); align-items: center; }
.hc-demo-shot { --c: var(--hc); position: relative; display: block; border-radius: var(--r-l); overflow: hidden; border: 1px solid var(--line-2); background: #0b1a20; box-shadow: 0 40px 100px -40px rgba(0, 0, 0, .8), 0 0 80px -40px rgba(126, 232, 201, .35); transition: transform .5s var(--ease), border-color .35s; }
.hc-demo-shot:hover { border-color: color-mix(in srgb, var(--aurora) 50%, transparent); }
.hc-demo-shot img { display: block; width: 100%; height: auto; transition: transform 1.2s var(--ease); }
.hc-demo-shot:hover img { transform: scale(1.03); }
.hc-demo-tag { position: absolute; top: 14px; left: 14px; z-index: 2; font-family: var(--f-mono); font-size: .75rem; letter-spacing: .12em; text-transform: uppercase; color: var(--aurora); background: rgba(5, 10, 11, .75); padding: 5px 11px; border-radius: 99px; border: 1px solid var(--line); }
.hc-3d-copy { display: grid; gap: 20px; min-width: 0; }
.hc-3d-copy h2 { font-size: clamp(2rem, 3.6vw, 3.3rem); }
.hc-3d-copy .lead { max-width: 60ch; }
.hc-3d-copy .hero-actions { margin-top: 4px; }
.hc-3d-copy .hero-actions .btn { white-space: normal; line-height: 1.25; }

.hc-more { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.hc-more summary { list-style: none; cursor: pointer; min-height: 52px; display: flex; align-items: center; gap: 12px; color: var(--bone); font-weight: 600; font-size: .95rem; }
.hc-more summary::-webkit-details-marker { display: none; }
.hc-more summary::after { content: "+"; margin-left: auto; flex: none; display: grid; place-items: center; width: 30px; height: 30px; border: 1px solid var(--line-2); border-radius: 50%; color: var(--sap); font-size: 1.05rem; line-height: 1; transition: transform .35s var(--ease); }
.hc-more[open] summary::after { content: "−"; transform: rotate(180deg); }
.hc-more summary:hover::after { border-color: var(--sap); }
.hc-more[open] { padding-bottom: 16px; }
.hc-table-note { margin: 0 0 10px; color: var(--mist); font-size: .88rem; }
.hc-table-wrap { overflow-x: auto; margin: 0 0 12px; border: 1px solid var(--line); border-radius: var(--r-m); background: rgba(4, 8, 9, .5); }
.hc-table { width: 100%; border-collapse: collapse; font-size: .92rem; }
.hc-table th, .hc-table td { padding: 12px 16px; text-align: left; border-bottom: 1px solid var(--line); color: var(--mist); white-space: nowrap; }
.hc-table thead th { font-family: var(--f-mono); font-weight: 500; font-size: .75rem; letter-spacing: .12em; text-transform: uppercase; color: var(--mist-2); }
.hc-table tbody th { font-weight: 600; color: var(--bone); }
.hc-table tbody tr:last-child > * { border-bottom: 0; }
.hc-table tbody tr:hover > * { background: rgba(159, 212, 255, .04); }
.hc-note { color: var(--mist); font-size: .9rem; }
.hc-note .text-link { margin-left: 6px; }

/* ---------- privacy + agents ---------- */
.hc-trust { padding-top: clamp(60px, 8vw, 110px); }
.hc-duo { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.hc-panel {
  --c: var(--aurora);
  position: relative; overflow: hidden; display: flex; flex-direction: column; gap: 16px;
  padding: clamp(24px, 3vw, 40px); border-radius: var(--r-l); border: 1px solid var(--line);
  background: radial-gradient(90% 70% at 100% 0%, color-mix(in srgb, var(--c) 9%, transparent), transparent 60%), linear-gradient(180deg, var(--moss), var(--night-2));
  scroll-margin-top: 100px; transition: border-color .35s;
}
.hc-panel-agents { --c: var(--violet); }
.hc-panel::after { content: ""; position: absolute; inset: 0; pointer-events: none; border-radius: inherit; background: radial-gradient(380px circle at var(--mx, 50%) var(--my, 0%), color-mix(in srgb, var(--c) 12%, transparent), transparent 60%); opacity: 0; transition: opacity .35s; }
.hc-panel:hover { border-color: color-mix(in srgb, var(--c) 35%, transparent); }
.hc-panel:hover::after { opacity: 1; }
.hc-panel > * { position: relative; z-index: 1; }
.hc-panel-label { color: var(--c); }
.hc-panel-label .rune { font-size: 1.1rem; }
.hc-panel h2 { font-size: clamp(2rem, 3vw, 2.8rem); }
.hc-panel h2 em { color: var(--c); }
.hc-panel > p { color: var(--mist); }
.hc-panel ul, .hc-rel ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 12px; }
.hc-panel li, .hc-rel li { position: relative; padding-left: 22px; color: var(--mist); font-size: .95rem; }
.hc-panel li::before, .hc-rel li::before { content: ""; position: absolute; left: 2px; top: .62em; width: 7px; height: 7px; border-radius: 50%; background: var(--c, var(--hc)); box-shadow: 0 0 10px var(--c, var(--hc)); }
.hc-panel strong { color: var(--bone); font-weight: 600; }
.hc-links { display: flex; flex-wrap: wrap; gap: 14px 30px; margin-top: auto; padding-top: 8px; }
.hc-flow { display: block; width: 100%; max-width: 340px; height: auto; }
.hc-flow text { fill: var(--bone); font-family: var(--f-mono); font-size: 12px; text-anchor: middle; }
.hc-flow .fl-dim { fill: var(--mist-2); }
.fl-box { fill: none; stroke: var(--line-2); }
.fl-on { stroke: var(--aurora); fill: rgba(126, 232, 201, .08); }
.fl-arrow { fill: none; stroke: var(--aurora); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.fl-stop { stroke: var(--line-2); stroke-width: 2; stroke-dasharray: 4 5; }
.fl-x { stroke: var(--ember); stroke-width: 2.5; stroke-linecap: round; }
.hc-agent-line { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-family: var(--f-mono); font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; color: var(--bone); min-height: 70px; }
.hc-agent-line span { padding: 8px 11px; border-radius: 8px; border: 1px solid var(--line-2); }
.hc-agent-line span:last-child { border-color: color-mix(in srgb, var(--violet) 55%, transparent); background: rgba(174, 150, 255, .08); }
.hc-agent-line i { flex: 1 1 18px; max-width: 40px; height: 1px; background: linear-gradient(90deg, var(--violet), transparent); }

/* ---------- install + tabs ---------- */
.hc-install { background: linear-gradient(180deg, transparent, var(--night-2) 14%, var(--night-2) 86%, transparent); scroll-margin-top: 70px; }
.hc-tablist { display: inline-flex; flex-wrap: wrap; gap: 4px; padding: 5px; margin: 0 0 30px; border-radius: 99px; border: 1px solid var(--line); background: rgba(4, 8, 9, .6); }
.hc-tablist [role="tab"] { min-height: 44px; padding: 0 20px; border: 0; border-radius: 99px; background: transparent; color: var(--mist); font-size: .92rem; white-space: nowrap; transition: background .25s, color .25s; }
.hc-tablist [role="tab"]:hover { color: var(--bone); background: rgba(237, 230, 213, .06); }
.hc-tablist [role="tab"][aria-selected="true"] { color: var(--ink-on-sap); background: var(--sap); font-weight: 600; }
.hc-tablist [role="tab"]:focus-visible { outline-offset: 2px; }
.hc-tabpanel { scroll-margin-top: 100px; }
.hc-nojs-title { font-size: var(--t-h3); margin: 40px 0 18px; }
.hc-tabs.is-ready .hc-nojs-title { display: none; }

.hc-setup { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: clamp(28px, 5vw, 64px); align-items: start; }
.hc-setup .hc-nojs-title { grid-column: 1 / -1; margin: 0; }
.hc-steps { margin: 0; padding: 0; list-style: none; counter-reset: step; display: grid; gap: 12px; }
.hc-steps li { counter-increment: step; display: grid; grid-template-columns: 46px minmax(0, 1fr); gap: 4px 16px; padding: 20px; border-radius: var(--r-m); border: 1px solid var(--line); background: var(--night); }
.hc-steps li::before { content: counter(step); grid-row: span 2; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; border: 1px solid color-mix(in srgb, var(--aurora) 40%, transparent); color: var(--aurora); font-family: var(--f-mono); font-size: .85rem; background: rgba(126, 232, 201, .06); }
.hc-steps b { font-family: var(--f-display); font-size: 1.45rem; font-weight: 500; color: var(--bone); line-height: 1.2; }
.hc-steps span { grid-column: 2; color: var(--mist); font-size: .93rem; }
.hc-steps code { color: var(--sap); }
.hc-getcard { --c: var(--sap); position: relative; display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; justify-items: start; padding: clamp(22px, 3vw, 34px); border-radius: var(--r-l); border: 1px solid color-mix(in srgb, var(--sap) 28%, var(--line)); background: radial-gradient(90% 70% at 100% 0%, rgba(243, 183, 95, .08), transparent 60%), linear-gradient(180deg, var(--moss), var(--night-2)); }
.hc-getcard::after { content: ""; position: absolute; inset: 0; pointer-events: none; border-radius: inherit; background: radial-gradient(360px circle at var(--mx, 50%) var(--my, 0%), rgba(243, 183, 95, .08), transparent 60%); }
.hc-getcard > * { position: relative; z-index: 1; }
.hc-req { width: 100%; }
.hc-hash { display: block; font-size: .8rem; color: var(--sap); overflow-wrap: anywhere; line-height: 1.5; }
.hc-verify { color: var(--mist); font-size: .88rem; }
.hc-verify b { color: var(--bone); }
.hc-cmd-row { display: flex; gap: 8px; align-items: stretch; width: 100%; }
.hc-cmd { flex: 1; min-width: 0; margin: 0; padding: 14px 16px; background: rgba(4, 8, 9, .8); border: 1px solid var(--line-2); border-radius: 12px; overflow-x: auto; white-space: pre-wrap; overflow-wrap: anywhere; color: var(--sap); font-size: .88rem; line-height: 1.5; }
.hc-cmd code { font-size: inherit; }
.hc-cmd [data-hc-file] { white-space: nowrap; }
.hc-copy { flex: none; min-width: 84px; min-height: 44px; border-radius: 12px; border: 1px solid var(--line-2); background: rgba(237, 230, 213, .05); color: var(--bone); font-size: .85rem; transition: border-color .25s, color .25s; }
.hc-copy:hover { border-color: var(--sap); color: var(--sap); }
.hc-getcard .hc-download { margin-top: 4px; }

.hc-appshots { display: grid; grid-template-columns: repeat(2, minmax(0, 520px)); gap: clamp(20px, 3vw, 36px); align-items: start; justify-content: center; }
.hc-appshots figure { margin: 0; }
.hc-window { border-radius: 12px; overflow: hidden; border: 1px solid var(--line-2); background: #f0f0f0; box-shadow: 0 30px 80px -30px rgba(0, 0, 0, .8), 0 0 60px -30px rgba(159, 212, 255, .4); transition: transform .5s var(--ease); }
.hc-window:hover { transform: translateY(-4px); }
.hc-window-bar { display: flex; align-items: center; gap: 6px; padding: 9px 12px; background: #172528; border-bottom: 1px solid var(--line); }
.hc-window-bar b { margin-left: 8px; font-family: var(--f-mono); font-size: .75rem; font-weight: 500; letter-spacing: .1em; text-transform: uppercase; color: var(--mist); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hc-window a { display: block; }
.hc-window a:focus-visible { outline-offset: -4px; }
.hc-window img { display: block; width: 100%; height: auto; }
.hc-appshots figcaption { margin-top: 12px; color: var(--mist); font-size: .88rem; }

.hc-faq { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 0; }
.hc-faq > div { padding: 20px 22px; border-radius: var(--r-m); border: 1px solid var(--line); background: var(--night); }
.hc-faq dt { font-family: var(--f-mono); font-size: .75rem; letter-spacing: .12em; text-transform: uppercase; color: var(--sap); margin-bottom: 8px; }
.hc-faq dd { margin: 0; color: var(--mist); font-size: .94rem; }

.hc-release { max-width: 900px; }
.hc-rel { position: relative; padding: 0 0 26px 30px; border-left: 1px solid var(--line-2); margin-left: 6px; }
.hc-rel::before { content: ""; position: absolute; left: -6px; top: .45em; width: 11px; height: 11px; border-radius: 50%; background: var(--night-2); border: 2px solid var(--hc); }
.hc-release > .hc-rel:first-of-type::before { background: var(--hc); box-shadow: 0 0 14px var(--hc); }
.hc-rel h3 { font-size: 1.6rem; margin-bottom: 12px; }
.hc-earlier { max-width: 900px; margin-top: 4px; }
.hc-earlier[open] summary { margin-bottom: 16px; }
.hc-earlier .hc-rel h3 { font-size: 1.3rem; color: var(--mist); }
.hc-earlier .hc-rel::before { border-color: var(--mist-2); }
.hc-install-links { margin-top: 36px; }

/* ---------- CTA ---------- */
.hc-cta-rune { font-size: 2.6rem; color: var(--hc); text-shadow: 0 0 30px var(--hc); }

/* ---------- screen sizes ---------- */
@media (max-width: 1100px) {
  .lv-name { font-size: 25px; }
  .lv-meta { display: none; }
  .lv-path { font-size: 19px; }
  .lv-open-title { font-size: 19px; }
  .hc-card:not(.hc-card-3d) { grid-template-columns: 60px minmax(0, 1fr); column-gap: 14px; }
  .hc-card:not(.hc-card-3d) > .hc-pose { width: 60px; }
}
@media (max-width: 900px) {
  .hc-live { grid-template-columns: minmax(0, 1fr); }
  .hc-live-side { grid-template-columns: minmax(0, 1fr) auto; align-items: center; }
  .hc-live-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 16px; }
  .hc-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .hc-card-3d { grid-template-columns: 130px minmax(0, 1fr); }
  .hc-card-3d > .hc-pose { width: 130px; }
  .hc-demo-grid { grid-template-columns: minmax(0, 1fr); }
  .hc-duo { grid-template-columns: minmax(0, 1fr); }
  .hc-setup { grid-template-columns: minmax(0, 1fr); }
  .hc-faq { grid-template-columns: minmax(0, 1fr); }
  .hc-appshots { grid-template-columns: minmax(0, 520px); }
}
@media (max-width: 640px) {
  .hc-download { width: 100%; flex-direction: column; align-items: flex-start; gap: 6px; white-space: normal; line-height: 1.2; }
  .hc-download small { padding-left: 0; border-left: 0; }
  .hc-hero .hero-actions .btn { white-space: normal; line-height: 1.25; }
  .hc-stage-view { height: 440px; }
  /* the window dots give way so the sketch title reads in full on a phone */
  .hc-stage-bar { gap: 10px; padding: 10px 12px; letter-spacing: .06em; }
  .hc-stage-dots { display: none; }
  .hc-stage-title { font-size: .75rem; }
  .hc-stage-foot { padding: 14px; }
  .hc-stage-modes { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin-inline: -14px; padding-inline: 14px; }
  .hc-stage-modes::-webkit-scrollbar { display: none; }
  .hc-stage-modes .chip { flex: none; }
  .hc-live { padding: 10px; gap: 12px; }
  .hc-live-side { grid-template-columns: minmax(0, 1fr); }
  .hc-live-steps li { font-size: .82rem; gap: 8px; }
  .hc-live-steps li::before { width: 22px; height: 22px; }
  .hc-grid { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .hc-card { padding: 18px; }
  .hc-card-3d { grid-template-columns: 90px minmax(0, 1fr); column-gap: 16px; }
  .hc-card-3d > .hc-pose { width: 90px; }
  .hc-table { font-size: .85rem; }
  .hc-table th, .hc-table td { padding: 10px 12px; }
  .hc-flow { max-width: 100%; }
  /* the command gets the full card width, with Copy under it, so the file name never splits */
  .hc-cmd-row { flex-wrap: wrap; }
  .hc-cmd { flex-basis: 100%; }
  /* the closing label breaks at its middle dot instead of leaving it dangling */
  .hc-cta-sep { display: none; }
  .cta .label .hc-nw { display: block; }
  /* the three agent boxes stay on one line down to a 360px phone */
  .hc-agent-line { gap: 6px; font-size: .75rem; letter-spacing: .04em; }
  .hc-agent-line span { padding: 7px 8px; }
  .hc-agent-line i { flex-basis: 10px; }
  .hc-tablist { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-radius: 18px; width: 100%; }
  .hc-tablist [role="tab"] { border-radius: 14px; white-space: normal; padding: 0 10px; }
  .hc-steps li { padding: 16px; grid-template-columns: 40px minmax(0, 1fr); gap: 4px 12px; }
  .hc-steps li::before { width: 34px; height: 34px; font-size: .8rem; }
  .hc-appshots { grid-template-columns: minmax(0, 1fr); }
  .hc-rel { padding-left: 22px; }
  .cta .row .btn { white-space: normal; }
}
/* touch-first devices (phones in either orientation, tablets) that are not Windows: say where the app
   runs, and demote the 122 MB download to a text link. hand-control.js marks Windows with .hc-win. */
@media (hover: none) and (pointer: coarse) {
  html:not(.hc-win) .hc-hero .hc-phone-note { display: flex; }
  html:not(.hc-win) .hc-download { display: none; }
  html:not(.hc-win) .hc-getcard .hc-phone-note { display: block; }
  html:not(.hc-win) .hc-phone-download { display: inline-block; }
  /* the PowerShell check is for the PC that installs it; the SHA-256 stays visible */
  html:not(.hc-win) .hc-getcard .hc-verify, html:not(.hc-win) .hc-getcard .hc-cmd-row { display: none; }
  .hc-stage-view { cursor: auto; }
}
.hc-getcard .hc-phone-note-plain { margin-top: 0; padding: 0; border: 0; background: none; color: var(--mist); }

/* an opened table scrolls inside its own box; it never widens the column */
.hc-3d-copy, .hc-3d-copy > *, .hc-more { min-width: 0; max-width: 100%; }

/* no one-word last lines in step and list copy */
.page-hand :is(.hc-steps span, .hc-faq dd, .hc-panel li, .hc-rel li) { text-wrap: pretty; }
@media (max-width: 380px) {
  .hc-agent-line { gap: 4px; font-size: .75rem; letter-spacing: .02em; }
  .hc-agent-line span { padding: 6px 6px; }
  .hc-agent-line i { flex-basis: 6px; }
}
/* tablet: the download takes its own line and the two secondary buttons pair up under it,
   instead of one button wrapping alone */
@media (min-width: 641px) and (max-width: 1000px) {
  .page-hand .cta .row .hc-download { order: -2; }
  .page-hand .cta .row::before { content: ""; order: -1; flex-basis: 100%; height: 0; }
  .page-hand .cta .row { row-gap: 6px; }
}
