{
  "version": 1,
  "moreHref": "guide.html",
  "topics": {
    "lab.group-adjust": {
      "title": "Adjust face",
      "body": "Every slider here reshapes your Alive Agent Avatar while it stays fully animated — drag anything and the face updates instantly. Nothing is permanent: 'reset to on-disk tuning' takes you back, and EXPORT saves a look you love as one JSON file."
    },
    "lab.group-nuances": {
      "title": "Nuances",
      "body": "Small finishing touches — living expression lines, earrings, and cheek blush. They all start OFF so your face stays clean; switch one on and dial its strength to taste."
    },
    "lab.group-accessories": {
      "title": "Accessories",
      "body": "Flowers, hats, glasses, and necklaces you can mix onto any character. Turn one on, then drag it right on the picture to place it — click it to select, and fine-tune with the X/Y sliders. Positions stick to this base image; styles and colors travel with the character."
    },
    "lab.group-colors": {
      "title": "Colors",
      "body": "Every feature has its own swatch, tuned to read on skin and on flat fills alike. Brows, iris, and lips change the character the most — start there."
    },
    "lab.voice-brain": {
      "title": "Voice & brain",
      "body": "Choose which voice and AI model your avatar uses, powered by your own API keys. Keys stay only in this browser — never on our servers, never inside saved avatars or exported files — so previews and conversations bill your account directly. The choice of provider and voice travels with the avatar; the keys never do."
    },
    "lab.face-display": {
      "title": "Face display",
      "body": "How the face is drawn: your dialed overlay look, or the same character re-imagined as SVG, ASCII, Sketch Line, or Kinetic Typography. Every style rides the same living mathematics — blinks, gaze, and speech stay in sync — and switching never erases your adjustments."
    },
    "lab.brows": {
      "title": "Brow Y",
      "body": "How high the brows sit above the eyes - the muscle lift. Slide right and the brows ride higher on the forehead; left brings them down toward the eyes. Thickness is the separate Brow thick dial; how much they animate with emotion is Brow emotion."
    },
    "lab.brow-length": {
      "title": "Brow length",
      "body": "Makes both eyebrows longer or shorter with one knob. Handy when you're matching a photo where the brows are clearly long or short."
    },
    "lab.brow-emotion": {
      "title": "Brow emotion",
      "body": "How much the eyebrows move when your avatar feels something. 0 keeps them stone-still for a calm, composed character; 1 is the normal expressive range; higher gets extra animated."
    },
    "lab.eye-emotion": {
      "title": "Eye emotion",
      "body": "How much the eyes react when your avatar feels something - the surprise widening and the squint hooding. 0 keeps them calm and steady (a comfort setting when big eye moves are too much, e.g. for kids); 1 is the normal expressive range; higher gets extra animated. Blinking and gaze are never affected."
    },
    "lab.mouth-emotion": {
      "title": "Mouth emotion",
      "body": "How much the mouth expresses feeling - the smile corner lift, the sad corner droop, and the grin that reveals teeth. 0 keeps the mouth calm; 1 is the normal expressive range; higher gets extra animated. Talking and lip-sync are never affected."
    },
    "lab.eye-size": {
      "title": "Eye size",
      "body": "Scales the whole eye. Bigger eyes read younger and more expressive; smaller eyes read calmer and more realistic."
    },
    "lab.eye-width": {
      "title": "Eye spacing",
      "body": "How far apart the two eyes sit around the nose - widen it to open the gap between the eyes (dialing an avatar into glasses lives here). Small nudges make a big difference - move gently until it matches your character's photo. Per-eye size is the separate Eye size dial."
    },
    "lab.lashes": {
      "title": "Lashes",
      "body": "Eyelash style: off, a subtle set, a defined liner-and-curl look, long dramatic lashes, or Advanced - a real lash fan grown from the lash line the way macro photos show it: short upright lashes near the inner corner, the long curl through the middle, the last few swept past the outer corner into a wing, with a shorter under-layer for depth and a light row of small lower lashes. Pair any style with 'Lash alpha' just below to control how strongly they show; the Advanced fan also gets its own 'Lash fan' dial. And because lashes should match the hair - blonde, brunette, red - the 'lash upper' and 'lash lower' swatches (mirrored at the bottom of this section) recolor them on every style."
    },
    "lab.lash-fan": {
      "title": "Lash fan",
      "body": "How full the Advanced lash fan grows - only the 'Advanced - real lash fan' style reads this dial. It gauges density and length together: around 0.3 is a sparse natural set, 0.65 (the default) matches real macro-photo lashes, and 1.0 is the full drama fan with the longest wing. 'Lash alpha' stays the separate ink-strength control, so you can have a full fan drawn lightly or a sparse set drawn dark - and the lash color swatches pick the shade that matches the hair."
    },
    "lab.lip-ratio": {
      "title": "Lip ratio",
      "body": "Balances the lower lip against the upper lip. Most faces look natural near the default; slide right for a fuller lower lip, left for more even lips."
    },
    "lab.lip-shading": {
      "title": "Lip shading",
      "body": "Adds natural light and shadow to the lips — the upper lip turns gently away from the light while the lower lip catches it. A little goes a long way; at 0 the lips stay exactly as they were."
    },
    "lab.lip-sheen": {
      "title": "Lip sheen",
      "body": "A soft moisture highlight on the lower lip, like a hint of gloss. It rides along as your avatar speaks, so the lips keep that fresh, alive look. Slide to 0 for a fully matte finish."
    },
    "lab.lip-edge": {
      "title": "Lip edge",
      "body": "Softens the outline where the lips meet the skin. Higher values melt the hard drawn edge into a natural lip border; 0 keeps the crisp sketch look you started with."
    },
    "lab.seam-taper": {
      "title": "Seam taper",
      "body": "Lets the line between the lips fade out gracefully toward the corners of the mouth, with a tiny soft shadow at each corner — the way real mouths settle. At 0 the classic full line stays."
    },
    "lab.lip-version": {
      "title": "Lips version",
      "body": "Two complete lip looks, like the eye shapes. Classic is the original drawn mouth you know. Furrowed adds the fine vertical texture real lips have — light catches the little ridges while shadow settles in the creases, so the lips read fuller and more alive. Switch any time; nothing else about your face changes."
    },
    "lab.furrow-depth": {
      "title": "Furrow depth",
      "body": "How strongly the Furrowed lips show their real-lip texture. Low keeps just a whisper of it for a softer, glossier mouth; higher carves in more definition and fullness. It only applies while 'Lips version' is set to Furrowed — the texture even bends naturally as your avatar speaks."
    },
    "lab.brow-version": {
      "title": "Brows version",
      "body": "Three complete brow looks, like the lips. Classic is the original drawn brow you know. Haired redraws each brow as a field of fine individual hairs that grow the way real brow hair does — rising steeply near the nose, sweeping outward across the middle, and lying flat along the tail. Vector paints a single detailed brow shape copied from real-brow anatomy — a soft rounded head, a gentle taper through the arch, a fine pointed tail, with little hair-clump edges and fine strands drawn inside. Whichever you choose, the brows stay alive: they lift, arch, and stretch with every expression."
    },
    "lab.brow-hair": {
      "title": "Hair amount",
      "body": "How full the Haired and Vector brows grow. On Haired, lower keeps a softer, wispier brow with fewer, lighter hairs; higher fills in a denser, darker field. On Vector it becomes a detail dial: 0 leaves a clean smooth silhouette, higher carves in the little hair-clump edges and inner strands up to the full drawing. It never applies to Classic — Brow thick, Brow length, and the brow color all still shape every version."
    },
    "lab.nose-version": {
      "title": "Nose version",
      "body": "Three nose looks. Classic is the simple sketched nose you know. Crinkle adds the bunny lines — the little creases that fan across the bridge of a real nose when someone scrunches it up in a big laugh. Lines instead draws three short vertical lines going up the top of the nose, the way some faces crease. The magic: with Crinkle or Lines the creases stay invisible until your avatar smiles really big — then they flash in for a moment of extra life and melt away again."
    },
    "lab.nose-crinkle": {
      "title": "Crinkle amount",
      "body": "How strongly the nose creases flash in on a big smile. Lower keeps them a barely-there whisper; higher lets the scrunch really show, especially when the mouth opens wide mid-laugh. At rest they are always invisible — this dial only shapes the flash. It applies to the Crinkle and Lines nose versions; Classic never shows creases."
    },
    "lab.crinkle-place": {
      "title": "Crinkle placement",
      "body": "Fit the nose creases to this particular face. Crinkle X slides them across the nose — on the bunny-line version it spreads both fans outward or tucks them in; on the bridge-line version it shifts the little lines left or right. Crinkle Y moves them up or down the bridge, and Crinkle size grows or shrinks the whole cluster. Turn on the crinkle preview while you adjust so you can see exactly where they'll land."
    },
    "lab.crinkle-preview": {
      "title": "Crinkle preview",
      "body": "Normally the nose creases only flash in during a big smile — which makes them hard to place while editing. Held keeps them visible at your dial settings so you can size and position them; Live goes back to the real smile-driven behavior. This is an editing aid only: saved avatars and visitors always get the live flash."
    },
    "lab.bottom-teeth": {
      "title": "Bottom teeth",
      "body": "How much the lower row of teeth shows while your avatar talks. Teeth only appear during speech — at rest the mouth stays closed either way."
    },
    "lab.tongue": {
      "title": "Tongue",
      "body": "How present the tongue is. Slide up and a resting tongue lies visibly in the mouth whenever it opens properly — all the way up keeps it in play nearly all the time, with playful pokes and speech sounds on top. Around the default it only makes rare cameo appearances; slide to 0 to switch it off entirely."
    },
    "lab.mouth-width": {
      "title": "Mouth width",
      "body": "How wide the mouth draws across the face. The automatic lip match picks a good starting point from the face itself, and your hand on this slider always wins."
    },
    "lab.lip-mass": {
      "title": "Lip mass",
      "body": "The thickness of the lips themselves. More mass reads fuller and softer; less reads thinner and more graphic."
    },
    "lab.articulation": {
      "title": "Articulation",
      "body": "How energetically the mouth works while speaking — think of it as enunciation. Lower is relaxed and understated; higher is crisp, animated, presenter-style mouth shapes."
    },
    "lab.boil": {
      "title": "Boil",
      "body": "The gentle hand-drawn shimmer on the face lines — like a sketch that's alive. The default 0.2 is a calm living sketch, and higher gets buzzy and energetic. Below 0 is the deep-calm band: it quiets the last traces of line life — the subtle width flicker and the classic-engine boil — until −2 is truly, perfectly still. Breathing, blinks and expressions keep living at every setting."
    },
    "lab.breathing": {
      "title": "Breathing",
      "body": "The soft up-and-down bob of the face, like calm breathing. Slide to 0 for a perfectly still head, or up for a livelier idle."
    },
    "lab.size": {
      "title": "Size",
      "body": "Scales the whole face on the image. Use it together with 'Left / Right', 'Eyes Y', and 'Mouth Y' to seat the face exactly where it belongs on your picture."
    },
    "create.step-what": {
      "title": "What",
      "body": "Pick what kind of character you're making — a person, pet, mascot, creature, or robot. This only sets a smart starting point; every choice stays changeable later."
    },
    "create.step-method": {
      "title": "Method",
      "body": "Choose how to begin: a ready-made starter character, your own authorized image, a silhouette you shape with sliders, or a fully original build. There's no wrong door — they all lead to the same Customize tools."
    },
    "create.step-structure": {
      "title": "Structure",
      "body": "Decide how much of your character shows on screen — from a compact head to a full body. You can come back and change this any time without losing your look."
    },
    "create.step-style": {
      "title": "Style",
      "body": "Select every visual style this character should support — one identity can live as SVG, ASCII, sketch line, and more. Check as many as you like; the preview switches live so you can compare."
    },
    "create.step-customize": {
      "title": "Customize",
      "body": "The detail workshop: name and personality, head features, wings and tail, colors and markings, clothing, and how the character moves. Work through the tabs in any order — the live preview updates with every tap."
    },
    "create.step-states": {
      "title": "Live states",
      "body": "See how your character behaves as a working agent — idle, listening, thinking, speaking, celebrating, and more. Every state is expressed in your character's own body language; tap a few and watch."
    },
    "create.step-save": {
      "title": "Save & use",
      "body": "Save your character, start talking with it, or copy the one-line embed code to put it on your website. You can also download the character profile — a portable JSON file you can re-load or share any time."
    },
    "board.load-face": {
      "title": "Load face JSON",
      "body": "Load a face file exported from the Face Studio (face-overlay-lab → '⬇ EXPORT tuning JSON'). One JSON file carries the entire face — every dial, color, and style — so the same look travels to any site. Loading only previews it here; visitors see nothing until you press APPLY."
    },
    "board.apply-face": {
      "title": "Apply as site default",
      "body": "Makes the loaded face this site's default — the face every visitor meets. It reports honestly: if a brand-new dial needs a one-time server refresh before it sticks, it says so instead of silently dropping it."
    },
    "board.download-face": {
      "title": "Download current face JSON",
      "body": "Downloads the face this site shows right now as one portable JSON file — the same format the studio exports. Use it to back up a look you love or carry it to another site's admin."
    },
    "lab.upload-asis": {
      "title": "Upload as-is",
      "body": "The $0 door. Your photo lands exactly as shot — real brows, eyes and mouth stay — and the animated Alive overlay rides those features. Any shape works (portrait, landscape, full-body): the fit tool auto-frames your head to the outline and you can drag or zoom to adjust. No meter here — you pay only your own AI & voice usage when an agent runs."
    },
    "lab.upload-mute": {
      "title": "Mute upload",
      "body": "The billed door. A real OpenAI image edit digitally removes your brows, eyes, eyelashes and mouth while keeping every contour of your face — so the animated face becomes the only face. One real API call is billed per run (Retry bills again). You compare original vs muted side-by-side, then Accept, Retry or Discard — nothing lands until you accept."
    },
    "lab.quick-actions": {
      "title": "Quick actions",
      "body": "The two things you do most, right at the top of the rail. Save avatar lands the COMPLETE current look on the MY AVATARS shelf — the very same save as the shelf and publish buttons below, just closer to hand. Live voice starts a real, billed voice session (billed to the key that runs it) — the same button as under the picture. Everything else in this studio is $0/min · $0/sec — no meter, you pay only your own AI & voice usage."
    },
    "lab.use-avatar": {
      "title": "Use your avatar",
      "body": "Your finished Alive Agent Avatar leaves this studio as one portable .alive.json file — sealed, image embedded, ready to place. Put it on your own website with the two-line embed, front the Universal Stage with it, list it on the open NetShow Alive marketplace, feed it to your own model or agent framework, or export a GIF for email and social. Each line in this card links to the exact page that shows you how. $0/min · $0/sec — no meter, you pay only your own AI & voice usage."
    },
    "lab.export-avatar": {
      "title": "Export avatar (.alive.json)",
      "body": "Downloads the sealed, complete Alive Agent Avatar package: base image embedded, cast character, accessories with their dragged positions, colors, every gauge — sha-256 sealed so tampering shows. This is the file you place places: your website embed, the marketplace, the Universal Stage, your own agent. Import restores it on any browser. See 'Use your avatar' below for where it goes."
    },
    "lab.export-character": {
      "title": "Export character (.json)",
      "body": "Downloads the look recipe only — every knob, palette, and style, with no base image. Cast it onto any base in this studio or share it with someone building their own character. When you want the full placeable avatar — image included, ready for your website or the marketplace — use ⬇ Export avatar on the MY AVATARS card instead (.alive.json)."
    },
    "lab.byo-ai": {
      "title": "Bring your own AI + voice",
      "body": "There is no meter on your Alive Agent Avatar — $0/min · $0/sec — because the intelligence and the voice come from accounts YOU connect, on your own keys, billed to you by your providers. Proven lanes on this estate today: OpenAI and Google Gemini adapters (each with its own self-test), plus a text adapter that fits any framework or self-hosted model — that's how Claude and kin ride; your OpenClaw agent connections use those same keys. Studio voice lanes: OpenAI, ElevenLabs, and Gemini. Keys live only in this browser — never on our servers, never inside saved avatars or exported files. More named lanes are coming; the adapter contract is model-agnostic."
    },
    "lab.camera-door": {
      "title": "Take a photo",
      "body": "Shoot your portrait right here — no file needed. Your camera opens with the same head-and-shoulders outline the fit tool uses, so you can line yourself up before the shot (front camera first; Flip switches to the back one). Shooting is $0 and every frame stays in this browser — the camera turns off the moment your photo is taken. Then you pick a lane for the shot: Use as-is ($0, your real face under the animated overlay) or Mute it (billed — one AI edit removes brows, eyes and mouth first). If the camera is blocked or missing, nothing breaks: the two upload doors still work."
    },
    "lab.lower-lid": {
      "title": "Lower lid flat",
      "body": "How flat the lower eyelid sits, per avatar. The default (1.0) is the original soft eye, untouched. Slide LEFT to straighten the bottom lid toward real-eye anatomy - the lower lid rises to meet the bottom of the iris (around 0.58 matches real reference photos). The top lid never changes."
    },
    "lab.upper-lid": {
      "title": "Upper lid flat",
      "body": "How flat the upper eyelid arc sits, per avatar. The default (1.0) is the original top arc, untouched. Slide LEFT for a flatter, more hooded top lid; a touch right of 1.0 rounds it slightly wider. Pairs with Lower lid flat to fine-tune the whole eye shape."
    },
    "lab.iris-texture": {
      "title": "Iris texture",
      "body": "Fine lines radiating around the pupil - the scattered furrows and the soft broken ring a real iris carries. 0 (the default) is the current clean iris, untouched. Slide up for a little extra depth and sparkle: most lines sit in a darker iris tone with a scattered lighter subset riding the ridges, and the whole field is anchored on the pupil so it compresses and fans naturally as the pupil lives. Around 0.3 is a barely-there elegance; 1.0 is the full detail. Deterministic per avatar - your character's pattern is their own and never crawls."
    },
    "lab.eye-shape": {
      "title": "Eye shape",
      "body": "The character of the almond. Soft is the calm hooded default on photo faces; Wide is the classic V12 almond; Sharp is the upturned fox/cat look. Advanced — real anatomy rebuilds the outline the way a real eye is drawn: the outer corner sits a touch higher than the inner, the top arc peaks nearer the nose, the inner corner starts with a small tear-duct notch, the upper line overlaps the outer end, and the lower lid runs flatter under the iris. Every eye slider — lid flats, size, iris, liner, lashes — keeps working on whichever shape you pick."
    },
    "lab.corner-bend": {
      "title": "Corner bend",
      "body": "How softly the outer corner of the eye turns. Only the Advanced — real anatomy eye shape reads this dial: it rounds the junction where the top lid's long descent meets the corner and the little overlap tail, so the line flows through in one smooth confident sweep instead of a hard angle. 0 is the original sharp corner, untouched. The default (0.5) is the gentle soften — the tail is still there, it just bends instead of kinking. Slide toward 1 for the fullest soft wrap. The other eye shapes never change."
    },
    "topics": {
      "lab.front-bend": {
        "title": "Mid front bend",
        "body": "How softly the lower lid's front half bends down toward the tear duct. Only the Advanced — real anatomy eye shape reads this dial: it rounds the junction where the near-straight middle of the lower lid breaks into its dive toward the inner corner, so the line swoops down in one continuous bend instead of a hard break. The tear duct and its little warm caruncle stay exactly where they are — the line still lands there, it just bends smoothly on the way. 0 is the original hard break, untouched. The default (0.5) is the gentle soften. Slide toward 1 for the fullest front swoop. Its rear twin is the Back corner bend dial. The other eye shapes never change."
      },
      "lab.corner-bend": {
        "title": "Back corner bend",
        "body": "How softly the outer (back) corner of the eye turns. Only the Advanced — real anatomy eye shape reads this dial: it rounds the junction where the top lid's long descent meets the corner and the little overlap tail, so the line flows through in one smooth confident sweep instead of a hard angle. 0 is the original sharp corner, untouched. The default (0.5) is the gentle soften — the tail is still there, it just bends instead of kinking. Slide toward 1 for the fullest soft wrap. Its front twin is the Mid front bend dial. The other eye shapes never change."
      }
    },
    "studio.seat": {
      "title": "Engine seats",
      "body": "Six seats, one per first-class avatar engine. Picking a seat mounts that engine live in the stage beside it \u2014 nothing is pre-rendered and nothing is a video. Each seat's small print is measured when the page loads: how many looks that engine can actually wear today, not how many exist. A seat that cannot mount on your device links out to its own stage instead of failing in front of you."
    },
    "studio.look": {
      "title": "Looks",
      "body": "A look is a sealed .alive.json package \u2014 one file carrying a whole appearance. Tapping one puts it on the seat right now. Every look crosses the same three gates before it is worn: it must parse, its sha-256 seal must recompute and match, and its type must match the seat. A look that fails any gate is refused out loud rather than half-applied."
    },
    "studio.state": {
      "title": "Agent states",
      "body": "The five states every engine speaks: idle, listening, thinking, speaking, interrupted. Press one to hold the face in it. 'Drive it' walks the face through thinking \u2192 speaking \u2192 idle with your own line, entirely in this browser \u2014 no call is placed and no audio is generated, so the meter stays at zero."
    },
    "studio.zero": {
      "title": "What this page costs",
      "body": "Nothing. The engines run in your browser, the packages are static files, and no live voice or model call is made here \u2014 there is no key or pass embedded in this page at all. Live voice exists, but it lives behind its own gate on its own stage. You pay only for your own AI and voice usage, never for the avatar."
    },
    "studio.rack": {
      "title": "What this rack counts",
      "body": "Every sealed .alive.json served from this site, counted by running the site's own package law over each file: parse it, then recompute its sha-256 seal and compare. 'Sealed \u2713 verified' means recomputed and matched during that count \u2014 a package that merely claims a hash is never shown as verified. Where a number was not measured, the page says so instead of borrowing one."
    },
    "lab.lips-natural": {
      "title": "Natural lips",
      "body": "The organic lip texture - furrow lines at scattered angles that curve with the lip surface, uneven lengths, some broken or branching, denser through the center, like real lips. Furrow depth gauges how strong. Furrowed keeps the original uniform lines; Classic is the clean lip."
    }
  }
}