:root{--bg: #0e0f12;--fg: #e8eaf0;--muted: #9aa3b2;--panel: #171a21;--accent: #5cc8ff;--accent-2: #ffb454;--ok: #5fd48a;--warn: #ffb454;--bad: #ff6b6b;--radius: 12px;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--fg)}body{-webkit-text-size-adjust:100%}a{color:var(--accent)}h1,h2,h3{margin:0 0 .5rem;line-height:1.2}p{line-height:1.45}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em;background:#ffffff0f;padding:.05em .3em;border-radius:4px}.hidden{display:none!important}.page{max-width:760px;margin:0 auto;padding:1.25rem 1rem 3rem}.hero{padding:1.5rem 0 1rem}.hero h1{font-size:2rem}.hero p.lead{color:var(--muted);font-size:1.05rem}.grid{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.card{display:block;background:var(--panel);border:1px solid rgba(255,255,255,.08);border-radius:var(--radius);padding:1rem;color:var(--fg);text-decoration:none}.card:hover{border-color:var(--accent)}.card h3{font-size:1.05rem}.card p{margin:0;color:var(--muted);font-size:.95rem}.badge{display:inline-block;font-size:.72rem;padding:.1rem .45rem;border-radius:999px;background:#ffffff1a;color:var(--muted);margin-left:.4rem;vertical-align:middle}.muted{color:var(--muted)}.small{font-size:.9rem}.section{margin-top:2rem}button,.btn{appearance:none;border:1px solid rgba(255,255,255,.16);background:#ffffff14;color:var(--fg);font:inherit;font-size:.95rem;padding:.6rem .9rem;border-radius:10px;cursor:pointer;min-height:44px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}button:hover,.btn:hover{background:#ffffff24}button.primary,.btn.primary{background:var(--accent);color:#06111a;border-color:transparent;font-weight:600}button.primary:hover,.btn.primary:hover{filter:brightness(1.08)}button:disabled{opacity:.45;cursor:not-allowed}button.on{outline:2px solid var(--accent)}input.code{text-transform:uppercase;font:inherit;padding:.4rem;border-radius:8px;width:7ch;border:1px solid rgba(255,255,255,.2);background:#ffffff0f;color:inherit}.row{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center}.row.start{justify-content:flex-start}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}table.caps{width:100%;border-collapse:collapse;font-size:.95rem}table.caps th,table.caps td{text-align:left;padding:.5rem .4rem;border-bottom:1px solid rgba(255,255,255,.08);vertical-align:top}table.caps th{color:var(--muted);font-weight:500;width:40%}.ok{color:var(--ok)}.warn{color:var(--warn)}.bad{color:var(--bad)}pre.out{background:#ffffff0d;padding:.75rem;border-radius:8px;overflow:auto;font-size:.82rem;white-space:pre-wrap}.viewer-root{position:fixed;inset:0;overflow:hidden;background:#000;touch-action:none}.viewer-root canvas{display:block;width:100%;height:100%}.viewer-root video,.viewer-root .overlay{position:absolute;inset:0;width:100%;height:100%}.viewer-root video{object-fit:cover;background:#000}.hud{position:fixed;left:0;right:0;bottom:0;padding:.75rem;display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;background:linear-gradient(to top,#000000a6,#0000);pointer-events:none}.hud>*{pointer-events:auto}.topbar{position:fixed;top:0;left:0;right:0;padding:.6rem .75rem;display:flex;gap:.5rem;align-items:center;justify-content:space-between;background:linear-gradient(to bottom,#0009,#0000);pointer-events:none}.topbar>*{pointer-events:auto}.topbar a{color:var(--fg);text-decoration:none;font-weight:600}.status{font-size:.85rem;color:var(--muted);max-width:60%;text-align:right}.dropzone{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:1rem;text-align:center;overflow:auto}.dropzone p{color:var(--muted);max-width:32rem;margin:0}.dropzone.drag{outline:3px dashed var(--accent);outline-offset:-12px}.dropzone details{margin-top:.5rem;max-width:30rem;text-align:left}.dropzone progress{width:min(90vw,30rem)}.dropzone img.preview{max-width:min(96vw,60rem);border-radius:8px}.dropzone pre.out{max-width:min(96vw,40rem);text-align:left}.info{position:fixed;top:3.2rem;right:.75rem;max-width:min(92vw,24rem);background:var(--panel);border-radius:var(--radius);padding:.75rem;font-size:.82rem}.info dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:.2rem .6rem}.info dt{color:var(--muted)}.info dd{margin:0}.warnings{color:var(--warn);margin-top:.4rem}.panel-bottom{top:auto;bottom:5.5rem;left:.75rem;right:.75rem;max-width:none;font-size:.95rem}.pair-code{font-size:2.2rem;letter-spacing:.3em;font-weight:700;margin:.3rem 0}.break{word-break:break-all}.gallery{display:grid;gap:.75rem}.gallery-item{background:var(--panel);border:1px solid rgba(255,255,255,.08);border-radius:var(--radius);padding:.75rem}.gallery-item img{width:100%;border-radius:8px;background:#000;aspect-ratio:4/1;object-fit:cover}.gallery-item .meta{color:var(--muted);font-size:.85rem;margin:.4rem 0}.gallery-item .row{justify-content:flex-start}.gallery-item button,.gallery-item .btn{min-height:38px;padding:.4rem .7rem;font-size:.9rem}
