:root{--ubio-ink: #1a1816;--ubio-ink-soft: #5c574e;--ubio-ink-muted: #a69f92;--ubio-parchment: #f7f4ef;--ubio-parchment-deep: #f0ece4;--ubio-line: #d8d3cb;--ubio-line-soft: #e8e4dd;--ubio-white: #ffffff;--ubio-neutral: #f6f6f4;--ubio-cool: #f7f7fa;--ubio-indigo: #4f46e5;--ubio-indigo-400: #6366f1;--ubio-indigo-tint: #eef0fe;--ubio-coral: #d9573a;--ubio-status-pass: #15803d;--ubio-status-pass-bg: #dcfce7;--ubio-status-drift: #b45309;--ubio-status-drift-bg: #fef3c7;--ubio-status-fail: #dc2626;--ubio-status-fail-bg: #fee2e2;--ubio-dark-bg: #17140f;--ubio-dark-ink: #f0ece4;--ubio-font-sans: "Source Sans 3", "Source Sans Pro", ui-sans-serif, system-ui, sans-serif;--ubio-font-mono: "Source Code Pro", ui-monospace, monospace}:root{--bg: var(--ubio-parchment);--bg-deep: var(--ubio-parchment-deep);--surface: var(--ubio-white);--ink: var(--ubio-ink);--ink-soft: var(--ubio-ink-soft);--ink-muted: var(--ubio-ink-muted);--line: var(--ubio-line);--line-soft: var(--ubio-line-soft);--accent: var(--ubio-indigo);--accent-tint: var(--ubio-indigo-tint);--ok: var(--ubio-status-pass);--ok-bg: var(--ubio-status-pass-bg);--drift: var(--ubio-status-drift);--fail: var(--ubio-status-fail);--shadow: 0 1px 2px rgba(26, 24, 22, .04), 0 8px 24px -12px rgba(26, 24, 22, .12);color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: var(--ubio-dark-bg);--bg-deep: #100e0a;--surface: #211d17;--ink: var(--ubio-dark-ink);--ink-soft: #bdb6aa;--ink-muted: #8a8378;--line: #3a342c;--line-soft: #2c2721;--accent: #8b85f5;--accent-tint: #2a2747;--ok: #4ade80;--ok-bg: #12301d;--drift: #fbbf24;--fail: #f87171;--shadow: none;color-scheme:dark}.hexi,.logo img{filter:invert(1) hue-rotate(180deg)}}*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{font-family:var(--ubio-font-sans);font-size:16px;line-height:1.5;color:var(--ink);background:var(--bg);background-image:radial-gradient(ellipse 80% 40% at 50% 0%,var(--surface) 0%,transparent 70%);background-repeat:no-repeat;-webkit-font-smoothing:antialiased}.top,#app,.foot{max-width:680px;margin:0 auto;padding-left:16px;padding-right:16px}.top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:20px;padding-bottom:8px}.logo{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;font-weight:600;font-size:18px;letter-spacing:-.01em}#who{display:flex;align-items:center;gap:12px;min-width:0}.me{font-family:var(--ubio-font-mono);font-size:12px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#app{padding-top:24px;padding-bottom:32px;display:flex;flex-direction:column;gap:16px}.foot{padding-top:8px;padding-bottom:40px;font-size:12px;color:var(--ink-muted)}h1{font-weight:600;font-size:clamp(28px,6vw,36px);line-height:1.12;letter-spacing:-.02em;margin:0 0 10px}h2{font-weight:600;font-size:18px;line-height:1.3;margin:0;display:flex;align-items:center;gap:10px;flex-wrap:wrap}h2.section{margin-top:16px;font-size:13px;font-family:var(--ubio-font-mono);font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}p{margin:0}code{font-family:var(--ubio-font-mono);font-size:.88em;background:var(--bg-deep);border:1px solid var(--line-soft);border-radius:5px;padding:1px 5px}.hero{display:flex;gap:24px;align-items:center;padding:8px 0}.hero.small{flex-direction:column;align-items:stretch;gap:14px}.hexi{flex:none}.lede{color:var(--ink-soft);font-size:17px;line-height:1.55;max-width:34em}.progress{height:6px;border-radius:99px;background:var(--line-soft);overflow:hidden}.progress span{display:block;height:100%;background:var(--ok);border-radius:99px;transition:width .4s ease}.card,.step,.trouble{border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:var(--shadow)}.card{padding:22px;display:flex;flex-direction:column;gap:12px}.step{display:grid;grid-template-columns:36px 1fr;gap:16px;padding:22px}.step .body{display:flex;flex-direction:column;gap:12px;min-width:0}.num{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-family:var(--ubio-font-mono);font-weight:600;font-size:15px;border:1.5px solid var(--ink);color:var(--ink)}.step.done .num{background:var(--ok);border-color:var(--ok);color:var(--surface)}.preview{display:flex;flex-direction:column;gap:10px}.preview .step{padding:16px 18px;box-shadow:none;background:transparent}.preview .step .body{gap:4px}.pill{font-family:var(--ubio-font-mono);font-size:11px;font-weight:500;padding:2px 8px;border-radius:99px;letter-spacing:.02em}.pill.ok{color:var(--ok);background:var(--ok-bg)}.steps{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px;color:var(--ink-soft)}.steps li::marker{font-family:var(--ubio-font-mono);color:var(--ink-muted)}.steps b{color:var(--ink)}details summary{cursor:pointer;color:var(--accent);font-weight:500}details[open] summary{margin-bottom:10px}.devices{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.devices li{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dot{width:9px;height:9px;border-radius:50%;flex:none}.dot.on{background:var(--ok);box-shadow:0 0 0 3px var(--ok-bg)}.dot.off{background:var(--ink-muted)}.pair-row{display:flex;gap:10px}#pair-code{font-family:var(--ubio-font-mono);font-size:22px;letter-spacing:.18em;text-transform:uppercase;text-align:center;max-width:220px;padding:10px 12px}.services{display:grid;grid-template-columns:1fr 1fr;gap:12px}.svc{border:1px solid var(--line-soft);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:8px;align-items:flex-start;background:var(--bg)}.svc-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;width:100%}.svc .hint{flex:1}.tokens{display:flex;flex-direction:column;gap:14px;border-top:1px solid var(--line-soft);padding-top:16px}label{display:block;font-size:14px;font-weight:600;color:var(--ink);margin-bottom:6px}input,textarea{width:100%;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font:inherit;background:var(--bg);color:var(--ink)}textarea{min-height:64px;resize:vertical;font-family:var(--ubio-font-mono);font-size:13px}input:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}button{font:inherit;font-weight:600;font-size:15px;border:1px solid var(--ink);background:var(--ink);color:var(--bg);border-radius:10px;padding:10px 16px;cursor:pointer;transition:transform .06s ease,opacity .15s ease}button:active:not(:disabled){transform:translateY(1px)}button:focus-visible,summary:focus-visible,.logo:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button.secondary{background:transparent;color:var(--ink);border-color:var(--line)}button.ghost{background:transparent;border-color:transparent;color:var(--ink-soft);padding:6px 4px;font-weight:500;font-size:14px}button:disabled{opacity:.4;cursor:not-allowed}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.status{font-family:var(--ubio-font-mono);font-size:12px;color:var(--ink-soft);white-space:nowrap}.status.ok{color:var(--ok)}.status.missing{color:var(--ink-muted)}.msg{font-size:14px;color:var(--ink-soft)}.msg:empty{display:none}.msg.error{color:var(--fail)}.loading{padding:40px 0;text-align:center}.field-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.hint{font-size:14px;color:var(--ink-soft);line-height:1.5}.label{font-family:var(--ubio-font-mono);font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted)}.gestures{width:100%;border-collapse:collapse;font-size:15px}.gestures th,.gestures td{text-align:left;vertical-align:top;padding:9px 0;border-bottom:1px solid var(--line-soft)}.gestures th{font-weight:600;padding-right:16px;width:46%}.gestures td{color:var(--ink-soft)}.asks{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}.asks li{background:var(--accent-tint);color:var(--ink);border-radius:99px;padding:6px 12px;font-size:14px}.trouble{padding:22px;display:flex;flex-direction:column;gap:4px;margin-top:8px}.trouble h2{margin-bottom:8px}.trouble details{border-top:1px solid var(--line-soft);padding:12px 0}.trouble details summary{color:var(--ink)}.trouble details p{color:var(--ink-soft);font-size:15px}.google-btn{display:flex;min-height:44px}.google-btn iframe{margin:0!important}@media(max-width:560px){.hero{flex-direction:column;align-items:flex-start;gap:16px}.hexi{width:64px;height:64px}.step{grid-template-columns:28px 1fr;gap:12px;padding:18px 16px}.num{width:28px;height:28px;font-size:13px}.services{grid-template-columns:1fr}.gestures th,.gestures td{display:block;width:auto;padding:0;border:0}.gestures tr{display:block;padding:10px 0;border-bottom:1px solid var(--line-soft)}.pair-row{flex-direction:column}#pair-code{max-width:none}.me{display:none}}
