.fig{margin:26px 0 30px;padding:20px 22px 16px;background:rgba(var(--surface-raised-rgb),.45);border:1px solid var(--color-hairline);border-radius:10px}.fig-cap{display:flex;align-items:center;gap:10px;margin-bottom:14px;font-family:var(--font-mono);font-size:.72rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--color-contour)}.fig-src{margin-top:12px;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.04em;color:var(--color-text-faint)}.fig-src a{color:var(--color-text-muted)}.fig-table summary{margin-top:10px;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.06em;color:var(--color-text-faint);cursor:pointer}.fig-table table{width:100%;margin-top:10px;border-collapse:collapse;font-size:.85rem}.fig-table th,.fig-table td{padding:6px 10px;text-align:left;border-bottom:1px solid var(--color-hairline);color:var(--color-text-muted)}.fig-table th{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-faint)}.chart{display:block;width:100%;height:auto}.c-lab{font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;fill:var(--color-text-muted)}.c-val{font-family:var(--font-mono);font-size:11.5px;font-weight:600;letter-spacing:.02em;fill:var(--color-text)}.c-grid{stroke:var(--color-hairline);stroke-width:1}.c-axis{stroke:var(--color-hairline-strong);stroke-width:1}.c-bar{fill:rgba(var(--contour-rgb),.88);rx:4}.c-bar-dim{fill:rgba(var(--contour-rgb),.4);rx:4}.c-line{fill:none;stroke:var(--color-contour);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.c-area{fill:rgba(var(--contour-rgb),.12);stroke:none}.c-dot{fill:var(--color-contour);stroke:var(--color-ink);stroke-width:2}.c-ref{stroke:var(--color-terrain-green);stroke-width:1.4;stroke-dasharray:5 5}.c-ref-lab{font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:.06em;fill:var(--color-terrain-green)}.stat-strip{--gutter-x: 14px;--gutter-y: 14px;margin:26px 0 30px}.stat-tile{padding:18px 20px;background:rgba(var(--surface-raised-rgb),.45);border:1px solid var(--color-hairline);border-radius:10px}.stat-num{display:block;font-size:clamp(1.5rem,3vw,2rem);font-weight:800;letter-spacing:-.02em;line-height:1.15;background:var(--gradient-terrain);-webkit-background-clip:text;background-clip:text;color:transparent;padding-bottom:.08em}.stat-label{display:block;margin-top:4px;color:var(--color-text-muted);font-size:.9rem;line-height:1.45}.stat-src{display:block;margin-top:8px;font-family:var(--font-mono);font-size:.64rem;letter-spacing:.05em;color:var(--color-text-faint)}.demo-row{--gutter-x: 16px;--gutter-y: 16px;margin:26px 0 30px}.demo-stage{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;min-height:150px;padding:22px 18px 16px;background:rgba(var(--surface-sunken-rgb),.5);border:1px solid var(--color-hairline);border-radius:10px;overflow:hidden}.demo-label{font-family:var(--font-mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-faint);text-align:center}.demo-label .icon{margin-right:6px;color:var(--color-contour)}.loop-pulse{width:18px;height:18px;border-radius:50%;background:var(--color-terrain-green);box-shadow:0 0 0 6px rgba(var(--terrain-rgb),.18)}.loop-skeleton{position:relative;width:min(220px,100%);display:flex;flex-direction:column;gap:8px;overflow:hidden}.loop-skeleton span{display:block;height:12px;border-radius:6px;background:rgba(var(--contour-rgb),.14)}.loop-skeleton span:nth-child(1){width:60%;height:16px}.loop-skeleton span:nth-child(3){width:80%}.loop-skeleton:after{content:"";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(100deg,transparent 30%,rgba(var(--contour-rgb),.14) 50%,transparent 70%)}.loop-toggle{position:relative;width:58px;height:30px;border-radius:999px;border:1px solid var(--color-hairline-strong);background:rgba(var(--contour-rgb),.16)}.loop-toggle:before{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:var(--color-contour)}.loop-ring{width:64px;height:64px}.loop-ring .ring-track{fill:none;stroke:var(--color-hairline);stroke-width:6}.loop-ring .ring-fill{fill:none;stroke:var(--color-contour);stroke-width:6;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:28;transform:rotate(-90deg);transform-origin:50% 50%}.loop-lane{position:relative;width:min(220px,100%);height:34px;border:1px dashed var(--color-hairline);border-radius:8px}.loop-lane i{position:absolute;top:6px;left:8px;width:22px;height:22px;border-radius:6px;background:var(--color-contour)}.loop-sheen{font-weight:800;font-size:1.3rem;letter-spacing:-.01em;background:var(--gradient-terrain);-webkit-background-clip:text;background-clip:text;color:transparent}@media(prefers-reduced-motion:no-preference){.loop-pulse{animation:loop-pulse 2s ease-in-out infinite}.loop-skeleton:after{animation:loop-shimmer 1.8s ease-in-out infinite}.loop-toggle:before{animation:loop-toggle-knob 3.2s ease-in-out infinite}.loop-toggle{animation:loop-toggle-track 3.2s ease-in-out infinite}.loop-ring .ring-fill{animation:loop-ring 2.6s ease-in-out infinite}.loop-lane--layout i{animation:loop-lane-layout 2.4s ease-in-out infinite}.loop-lane--transform i{animation:loop-lane-transform 2.4s ease-in-out infinite}.loop-sheen{background-size:200% 100%;animation:loop-sheen 3.5s linear infinite}}@keyframes loop-pulse{0%,to{transform:scale(1);box-shadow:0 0 rgba(var(--terrain-rgb),.3)}50%{transform:scale(1.15);box-shadow:0 0 0 12px rgba(var(--terrain-rgb),0)}}@keyframes loop-shimmer{0%{transform:translate(-100%)}60%,to{transform:translate(100%)}}@keyframes loop-toggle-knob{0%,38%{transform:translate(0)}50%,88%{transform:translate(28px)}to{transform:translate(0)}}@keyframes loop-toggle-track{0%,38%{background:rgba(var(--contour-rgb),.16)}50%,88%{background:rgba(var(--terrain-rgb),.3)}to{background:rgba(var(--contour-rgb),.16)}}@keyframes loop-ring{0%{stroke-dashoffset:100}55%,70%{stroke-dashoffset:12}to{stroke-dashoffset:100}}@keyframes loop-lane-layout{0%,to{left:8px}50%{left:calc(100% - 30px)}}@keyframes loop-lane-transform{0%,to{transform:translate(0)}50%{transform:translate(168px)}}@keyframes loop-sheen{0%{background-position:0% 0}to{background-position:-200% 0}}
