:root{--bg: #0b0d12;--surface: #151922;--text: #f4f6fb;--text-dim: #8b93a7;--accent: #4f8cff;--ok: #3ddc84;--warn: #ffb020;--error: #ff5c5c;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;cursor:none;overflow:hidden}.pairing{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:max(4vh,env(safe-area-inset-top)) max(5vw,env(safe-area-inset-right)) max(4vh,env(safe-area-inset-bottom)) max(5vw,env(safe-area-inset-left));gap:4vh;text-align:center}.pairing[hidden]{display:none}.pairing__title{margin:0;font-size:clamp(1.8rem,4.5vw,3.5rem);font-weight:650;letter-spacing:-.02em}.pairing__subtitle{margin:.6em 0 0;font-size:clamp(.95rem,1.6vw,1.4rem);color:var(--text-dim);max-width:32ch;margin-inline:auto}.pairing__body{display:flex;align-items:center;gap:clamp(2rem,6vw,6rem);flex-wrap:wrap;justify-content:center}.qr{background:#fff;padding:clamp(.8rem,1.5vw,1.4rem);border-radius:16px;line-height:0;box-shadow:0 12px 40px #00000073}.qr canvas{display:block;width:clamp(160px,22vw,300px);height:auto;image-rendering:pixelated}.pin{display:flex;flex-direction:column;align-items:center;gap:.3em}.pin__label{font-size:clamp(.8rem,1.2vw,1.1rem);color:var(--text-dim);text-transform:uppercase;letter-spacing:.25em;text-indent:.25em}.pin__value{font-size:clamp(3rem,9vw,7rem);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.12em;text-indent:.12em;line-height:1;font-family:ui-monospace,SF Mono,Cascadia Mono,Menlo,monospace}.pin__url{font-size:clamp(.75rem,1.1vw,1rem);color:var(--text-dim);font-family:ui-monospace,monospace}.pairing__footer{position:absolute;bottom:max(3vh,env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:.6em}.fingerprint{font-family:ui-monospace,monospace;font-size:clamp(.65rem,.95vw,.85rem);color:var(--text-dim);opacity:.65;letter-spacing:.04em}.fingerprint[hidden]{display:none}.status{display:inline-flex;align-items:center;gap:.6em;font-size:clamp(.8rem,1.2vw,1.05rem);color:var(--text-dim)}.status__dot{width:.7em;height:.7em;border-radius:50%;background:var(--text-dim);flex-shrink:0}.status__dot--ok{background:var(--ok)}.status__dot--warn{background:var(--warn);animation:pulse 1.4s ease-in-out infinite}.status__dot--error{background:var(--error)}@keyframes pulse{50%{opacity:.3}}@media (prefers-reduced-motion: reduce){.status__dot--warn{animation:none}}.player{position:fixed;inset:0;background:#000}.player[hidden]{display:none}.player__video{width:100%;height:100%;object-fit:contain;background:#000;transform-origin:center center}.player[data-fit=cover] .player__video{object-fit:cover}.player[data-fit=fill] .player__video{object-fit:fill}.player[data-rotation="90"] .player__video,.player[data-rotation="270"] .player__video{position:absolute;top:50%;left:50%;width:100vh;height:100vw}.player[data-rotation="90"] .player__video{transform:translate(-50%,-50%) rotate(90deg)}.player[data-rotation="180"] .player__video{transform:rotate(180deg)}.player[data-rotation="270"] .player__video{transform:translate(-50%,-50%) rotate(270deg)}.player__help{position:absolute;bottom:max(2vh,env(safe-area-inset-bottom));left:50%;transform:translate(-50%);padding:.5em 1.1em;background:#0009;border-radius:999px;font-size:clamp(.7rem,1.1vw,.9rem);color:var(--text-dim);backdrop-filter:blur(8px);white-space:nowrap;transition:opacity .4s ease}.player__help[hidden]{display:none}.player__overlay{position:absolute;top:max(2vh,env(safe-area-inset-top));right:max(2vw,env(safe-area-inset-right));padding:.5em .9em;background:#000000a6;border-radius:8px;font-family:ui-monospace,monospace;font-size:clamp(.7rem,1.1vw,.95rem);color:var(--text);backdrop-filter:blur(8px)}.player__overlay[hidden]{display:none}.player__toast{position:absolute;bottom:max(5vh,env(safe-area-inset-bottom));left:50%;transform:translate(-50%);padding:.8em 1.5em;background:#000c;border-radius:999px;font-size:clamp(.9rem,1.5vw,1.2rem);backdrop-filter:blur(8px);white-space:nowrap}.player__toast[hidden]{display:none}
