:root{--bg:#0b0f14;--surface:#141a22;--surface-2:#1c2430;--border:#263041;--text:#eef2f7;--muted:#8a96a8;--accent:#22c55e;--accent-ink:#04210f;--danger:#ef4444;--warn:#f59e0b;--radius:14px;--buncss-light: ;--buncss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;margin:0;font:16px/1.45 system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}[hidden]{display:none!important}h1{margin:0 0 8px;font-size:1.75rem;line-height:1.15}h2{display:flex;align-items: center;gap:8px;margin:0;font-size:1rem}a{color:var(--accent)}.page{padding:max(24px,env(safe-area-inset-top))16px max(24px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:20px;max-width:480px;min-height:100dvh;margin:0 auto}.page.wide{max-width:1100px}.page.center{text-align:center;justify-content:center}.stack{display:flex;flex-direction:column;gap:12px}.eyebrow{text-transform:uppercase;letter-spacing:.12em;color:var(--accent);margin:0;font-size:.75rem;font-weight:700}.muted{color:var(--muted)}.small{font-size:.85rem}.hint{color:var(--muted);margin:0;font-size:.9rem}.error{color:var(--danger);margin:0}.field{display:flex;flex-direction:column;gap:6px;font-weight:600}.field input,.field select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);outline:none;padding:14px 16px}.field input:focus,.field select:focus{border-color:var(--accent)}.btn{display:inline-flex;font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);text-decoration:none;cursor:pointer;justify-content:center;align-items: center;gap:8px;min-height:52px;padding:0 20px;font-weight:700}.btn:disabled{opacity:.6}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-danger{border-color:color-mix(in srgb,var(--danger)50%,transparent);color:var(--danger);background:0 0}.btn-ghost{background:0 0}.btn-small{min-height:36px;padding:0 14px;font-size:.9rem}.link-btn{font:inherit;color:var(--accent);word-break:break-all;cursor:pointer;background:0 0;border:0;padding:0;font-size:.85rem}.chip{display:inline-flex;background:color-mix(in srgb,var(--accent)18%,transparent);color:var(--accent);border-radius:999px;align-items: center;gap:6px;padding:4px 10px;font-size:.8rem;font-weight:600}.chip-off{background:color-mix(in srgb,var(--warn)18%,transparent);color:var(--warn)}.count{background:var(--surface-2);color:var(--muted);border-radius:999px;padding:1px 8px;font-size:.8rem}.qr-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);display:flex;text-align:center;flex-direction:column;align-items: center;gap:10px;padding:20px}.qr-card img{aspect-ratio:1;background:#fff;border-radius:10px;width:min(260px,70vw);padding:8px}.qr-card p{margin:0}.camera-list,.recent{list-style:none;display:flex;flex-direction:column;gap:8px;margin:0;padding:0}.camera-list li,.recent li{display:flex;background:var(--surface);border:1px solid var(--border);border-radius:12px;align-items: center;gap:10px;padding:12px 14px}.recent li .status{margin-left:auto}.dot{background:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent)25%,transparent);border-radius:50%;width:8px;height:8px}.host-header{display:flex;justify-content:space-between;align-items: flex-start;gap:12px}.host-meta{display:flex;flex-wrap:wrap;gap:8px}.lance-btn{aspect-ratio:1;color:#fff;font:inherit;display:flex;cursor:pointer;user-select:none;touch-action:manipulation;background:radial-gradient(circle at 35% 30%,#ff6b6b,#dc2626 60%,#991b1b);border:0;border-radius:50%;flex-direction:column;justify-content:center;align-self: center;align-items: center;gap:4px;width:min(72vw,300px);transition:transform 80ms;box-shadow:0 0 0 10px #dc26262e,0 18px 40px #00000080}.lance-btn span{letter-spacing:.06em;font-size:clamp(2rem,11vw,3rem);font-weight:900}.lance-btn small{opacity:.85;font-weight:600}.lance-btn:active{transform:scale(.96)}.lance-btn.fired{background:radial-gradient(circle at 35% 30%,#4ade80,#16a34a 60%,#166534);box-shadow:0 0 0 16px #16a34a40}.status{background:var(--surface-2);color:var(--muted);white-space:nowrap;border-radius:999px;padding:3px 10px;font-size:.8rem;font-weight:700}.status-ready{color:var(--accent);background:color-mix(in srgb,var(--accent)15%,transparent)}.status-partial,.status-processing,.status-capturing{color:var(--warn);background:color-mix(in srgb,var(--warn)15%,transparent)}.status-failed{color:var(--danger);background:color-mix(in srgb,var(--danger)15%,transparent)}.camera-page{overscroll-behavior:none}.live{position:fixed;background:#000;inset:0}.live video{object-fit:cover;width:100%;height:100%}.live-top,.live-bottom{position:absolute;display:flex;gap:8px;padding:16px;left:0;right:0}.live-top{padding-top:max(16px,env(safe-area-inset-top));background:linear-gradient(#0009,#0000);flex-wrap:wrap;align-items: center;top:0}.live-bottom{padding-bottom:max(16px,env(safe-area-inset-bottom));background:linear-gradient(#0000,#000000bf);flex-direction:column;gap:10px;bottom:0}.cam-status{background:#00000080;border-radius:999px;align-self: flex-start;margin:0;padding:6px 12px;font-size:.9rem;font-weight:600}.cam-controls{display:flex;justify-content:space-between;align-items: center;gap:12px}.orient{display:inline-flex;color:#fff;font:inherit;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff26;border:0;border-radius:999px;align-items: center;gap:8px;height:36px;margin-left:auto;padding:0 14px 0 10px}.orient:focus,.swap-btn:focus{outline:none}.orient:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.swap-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.orient:active,.swap-btn:active{background:#ffffff40}.phone{display:inline-flex;border:2px solid #fff;border-radius:4px;flex:none;justify-content:center;align-items: flex-start;width:12px;height:20px;margin:0 4px;padding-top:2px;transition:transform .15s ease-out;transform:rotate(0)}.phone i{background:#fff;border-radius:50%;flex:none;width:3px;height:3px}.orient-label{text-transform:capitalize;font-size:.8rem;font-weight:700;line-height:1}.up-hint{position:absolute;pointer-events:none;transform:rotate(var(--up,0deg));width:0;height:0;transition:transform .25s ease-out;top:50%;left:50%}.up-hint span{position:absolute;white-space:nowrap;letter-spacing:.02em;color:#fff;background:#00000073;border:1px dashed #ffffff80;border-radius:999px;padding:4px 10px;font-size:.75rem;font-weight:700;top:calc(-1*min(34vmin,180px));left:0;transform:translate(-50%,-50%)}.up-hint-auto span{border-style:solid;border-color:var(--accent)}.swap-btn{color:#fff;font:inherit;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff26;border:0;border-radius:50%;width:36px;height:36px;font-size:1.05rem}.rec{display:inline-flex;color:#fff;align-items: center;gap:6px;font-size:.85rem;font-weight:800}.rec i{background:var(--danger);animation:1.2s infinite blink;border-radius:50%;width:10px;height:10px}@keyframes blink{50%{opacity:.2}}.buffer{display:flex;flex:1;align-items: center;gap:10px;min-width:0;font-size:.85rem;font-weight:600}.buffer-bar{overflow:hidden;background:#fff3;border-radius:999px;flex:1;height:6px}#buffer-fill{background:var(--accent);width:0;height:100%;transition:width .4s linear}.cam-status{margin:0;font-weight:600}.flash{position:absolute;display:flex;color:#fff;background:color-mix(in srgb,var(--danger)45%,transparent);animation:.9s ease-out forwards fade;justify-content:center;align-items: center;font-size:3rem;font-weight:900;inset:0}@keyframes fade{to{opacity:0}}.lances{display:flex;flex-direction:column;gap:16px}.lance-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;gap:14px;padding:16px}.lance-card header{display:flex;flex-wrap:wrap;align-items: center;gap:10px}.lance-card header h2{font-size:1.1rem}.lance-card header .status{margin-left:auto}.clips{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));align-items: start;gap:12px}.clip{display:flex;flex-direction:column;gap:8px}.clip video,.clip-placeholder{aspect-ratio:16/9;object-fit:contain;background:#000;border-radius:10px;width:100%}.clip-placeholder{display:flex;color:var(--muted);background:var(--surface-2);justify-content:center;align-items: center;font-size:1.5rem}.clip p{margin:0}.clip-footer{display:flex;justify-content:space-between;align-items: center;gap:8px}
