:root{--bg0: #14241c;--bg1: #1f3a2c;--bg2: #2a4d3a;--ink: #f2ebe0;--ink-muted: #c5b8a4;--accent: #e08a3c;--accent-ink: #1a1208;--ok: #6fbf8a;--warn: #e0b45a;--danger: #d96b5c;--line: rgba(242, 235, 224, .14);--shadow: 0 18px 50px rgba(0, 0, 0, .35);--font-display: "Fraunces", Georgia, serif;--font-body: "Source Sans 3", "Segoe UI", sans-serif;--radius: 14px;--nav-h: 64px}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:var(--font-body);color:var(--ink);background:radial-gradient(1200px 600px at 10% -10%,rgba(224,138,60,.22),transparent 55%),radial-gradient(900px 500px at 100% 0%,rgba(111,191,138,.18),transparent 50%),linear-gradient(165deg,var(--bg0),var(--bg1) 45%,#102018 100%);background-attachment:fixed}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.app-shell{min-height:100dvh;display:flex;flex-direction:column}.app-shell>main{flex:1 0 auto}.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 1.25rem;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#14241c8c;position:sticky;top:0;z-index:20}.brand{font-family:var(--font-display);font-weight:700;font-size:1.15rem;letter-spacing:-.02em}.brand span{display:block;font-family:var(--font-body);font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);margin-top:.15rem}.status-pill{display:inline-flex;align-items:center;gap:.45rem;font-size:.85rem;color:var(--ink-muted)}.status-dot{width:.55rem;height:.55rem;border-radius:50%;background:var(--danger);box-shadow:0 0 0 3px #d96b5c33}.status-dot.online{background:var(--ok);box-shadow:0 0 0 3px #6fbf8a40}.nav{display:flex;gap:.35rem;padding:.65rem 1rem;border-top:1px solid var(--line);background:#102018d9;position:sticky;bottom:0}.nav a{flex:1;text-align:center;padding:.7rem .4rem;border-radius:999px;color:var(--ink-muted);font-weight:600;font-size:.92rem;transition:background .16s ease,color .16s ease,transform .16s ease}.nav a.active,.nav a:hover{background:#e08a3c29;color:var(--ink)}.nav a.active{transform:translateY(-1px)}.page{width:min(720px,100%);margin:0 auto;padding:1.25rem 1.1rem 2rem;animation:rise .32s ease both}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}h1,h2{font-family:var(--font-display);font-weight:700;letter-spacing:-.02em;margin:0 0 .5rem}h1{font-size:clamp(1.7rem,4vw,2.2rem)}.lede{color:var(--ink-muted);margin:0 0 1.4rem;line-height:1.45;max-width:36rem}.stack{display:grid;gap:.9rem}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;border-radius:999px;padding:.85rem 1.2rem;font-weight:700;cursor:pointer;transition:transform .14s ease,background .14s ease,border-color .14s ease}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover:not(:disabled){filter:brightness(1.05)}.btn-ghost{background:transparent;border-color:var(--line);color:var(--ink)}.btn-ghost:hover:not(:disabled){border-color:#f2ebe059}.field{display:grid;gap:.35rem}.field label{font-size:.85rem;color:var(--ink-muted);font-weight:600}.field input,.field select,.field textarea{width:100%;border-radius:12px;border:1px solid var(--line);background:#00000038;color:var(--ink);padding:.75rem .9rem}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid rgba(224,138,60,.45);border-color:transparent}.thumb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:.65rem}.thumb{aspect-ratio:3 / 4;border-radius:12px;overflow:hidden;border:1px solid var(--line);background:#00000040;position:relative}.thumb img{width:100%;height:100%;object-fit:cover;display:block}.thumb .thumb-open{all:unset;display:block;width:100%;height:100%;cursor:pointer}.thumb .thumb-remove{position:absolute;top:.35rem;right:.35rem;border:0;border-radius:999px;width:1.7rem;height:1.7rem;background:#0009;color:#fff;cursor:pointer}.thumb .thumb-no{position:absolute;left:.4rem;top:.4rem;min-width:1.5rem;padding:.1rem .4rem;border-radius:999px;background:#0009;color:#fff;font-size:.8rem;font-weight:700;text-align:center}.thumb .thumb-move{position:absolute;bottom:.35rem;left:0;right:0;display:flex;justify-content:center;gap:.4rem}.thumb .thumb-move button{border:0;border-radius:999px;width:2rem;height:1.7rem;background:#0009;color:#fff;font-size:1.1rem;line-height:1;cursor:pointer}.thumb .thumb-move button:disabled{opacity:.3}.scan-editor{display:grid;gap:.85rem}.scan-editor-head{display:grid;gap:.2rem}.scan-stage{position:relative;width:100%;max-height:60vh;margin:0 auto;border-radius:12px;overflow:hidden;background:#000;touch-action:none;user-select:none;-webkit-user-select:none}@supports (aspect-ratio: 1){.scan-stage{max-width:calc(60vh * var(--ar, .75))}}.scan-stage img,.scan-stage svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.scan-stage svg{touch-action:none}.scan-quad{fill:#e08a3c1f;stroke:var(--accent);stroke-linejoin:round}.scan-handle{cursor:grab}.scan-handle circle:last-child{fill:#ffffffeb;stroke:var(--accent)}.scan-handle circle.active{fill:var(--accent)}.segmented{display:flex;padding:.25rem;border-radius:999px;border:1px solid var(--line);background:#0003}.segmented button{flex:1;border:0;border-radius:999px;padding:.55rem .4rem;background:transparent;color:var(--ink-muted);font:inherit;font-weight:600;cursor:pointer}.segmented button.active{background:var(--accent);color:var(--accent-ink)}.nav-badge{display:inline-block;min-width:1.25rem;margin-left:.3rem;padding:0 .35rem;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-size:.75rem;line-height:1.25rem}.list{display:grid;gap:.55rem}.list-row{display:grid;gap:.2rem;padding:.9rem 1rem;border:1px solid var(--line);border-radius:var(--radius);background:#ffffff08;transition:border-color .16s ease,background .16s ease}.list-row:hover{border-color:#e08a3c66;background:#e08a3c0f}.list-row strong{font-size:1.02rem}.meta{color:var(--ink-muted);font-size:.88rem}.banner{padding:.85rem 1rem;border-radius:var(--radius);border:1px solid var(--line);background:#0003;margin-bottom:1rem}.banner.warn{border-color:#e0b45a73;background:#e0b45a1a}.banner.ok{border-color:#6fbf8a66;background:#6fbf8a1a}.banner.error{border-color:#d96b5c73;background:#d96b5c1f}.pair-box{display:grid;gap:1rem;justify-items:start}.pair-box img{width:min(240px,70vw);border-radius:12px;background:#fff;padding:.5rem}.pin{font-family:var(--font-display);font-size:2rem;letter-spacing:.2em}.actions{display:flex;flex-wrap:wrap;gap:.6rem}.capture-input{display:none}.hint{font-size:.85rem;color:var(--ink-muted)}@media(min-width:800px){.nav{position:static;border-top:0;border-bottom:1px solid var(--line);justify-content:center;background:transparent}.nav a{flex:0 1 auto;padding-inline:1.1rem}}.fingerprint{font-family:ui-monospace,SF Mono,Menlo,monospace;font-weight:700;letter-spacing:.06em}.banner .fingerprint{display:inline-block;font-size:1.15rem;margin:.15rem 0}.relay-panel{margin-top:1.5rem;display:grid;gap:.75rem}.relay-qr{width:min(320px,100%);background:#fff;padding:.6rem;border-radius:12px}.pair-link{display:block;word-break:break-all;font-size:.78rem;padding:.5rem;border-radius:8px;background:#00000040;-webkit-user-select:all;user-select:all}.check{display:flex;gap:.5rem;align-items:flex-start;font-size:.92rem}textarea{font:inherit;width:100%;border-radius:10px;border:1px solid var(--line);background:#0003;color:var(--ink);padding:.6rem .75rem}.link-button{border:0;background:none;color:inherit;text-decoration:underline;font:inherit;cursor:pointer;padding:0}
