:root{--bg: #0f1115;--panel: #171a21;--panel-2: #1f232c;--line: #2a2f3a;--text: #e8eaee;--muted: #9aa3b2;--accent: #4ade80;--warn: #fbbf24;--bad: #f87171;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;background:var(--bg);color:var(--text);font:16px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overscroll-behavior-y:none}#app{min-height:100%;display:flex;flex-direction:column}button{font:inherit;color:inherit;border:0;border-radius:12px;padding:12px 16px;min-height:48px;background:var(--panel-2);cursor:pointer}button:active{opacity:.75}button.primary{background:var(--accent);color:#0b1a10;font-weight:600}button.ghost{background:transparent;border:1px solid var(--line)}button:disabled{opacity:.5}input{font:inherit;color:inherit;width:100%;min-height:48px;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--panel)}.app-header{display:flex;align-items:center;gap:12px;padding:calc(env(safe-area-inset-top) + 10px) 16px 10px;background:var(--panel);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.app-header .title{font-weight:700;letter-spacing:.4px}.app-header .spacer{flex:1}.app-header button{min-height:40px;padding:8px 12px;border-radius:10px}.content{flex:1;padding:16px;padding-bottom:calc(env(safe-area-inset-bottom) + 24px);display:flex;flex-direction:column;gap:16px;max-width:720px;width:100%;margin:0 auto}.card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:16px}.card h2{margin:0 0 12px;font-size:15px;text-transform:none;color:var(--muted);font-weight:600}.muted{color:var(--muted)}.small{font-size:14px}.rows{display:flex;flex-direction:column;gap:10px}.row{display:flex;gap:12px;align-items:baseline}.row .label{color:var(--muted);font-size:14px;flex:0 0 45%}.row .value{flex:1;word-break:break-word}.status-line{display:flex;align-items:center;gap:10px;font-size:20px;font-weight:700}.dot{width:12px;height:12px;border-radius:50%;background:var(--muted);flex:none}.dot.good{background:var(--accent)}.dot.warn{background:var(--warn)}.dot.bad{background:var(--bad)}.chip{display:inline-block;padding:4px 10px;border-radius:999px;background:var(--panel-2);font-size:13px;color:var(--muted)}.chip.good{background:#4ade8026;color:var(--accent)}.chip.bad{background:#f8717126;color:var(--bad)}.code-text{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;word-break:break-all;color:var(--muted)}.viewfinder{position:relative;width:100%;aspect-ratio:3 / 4;background:#000;border-radius:16px;overflow:hidden}.viewfinder video{width:100%;height:100%;object-fit:cover}.viewfinder .frame{position:absolute;inset:22% 18%;border:2px solid rgba(255,255,255,.85);border-radius:12px;box-shadow:0 0 0 100vmax #00000059}.viewfinder .hint{position:absolute;left:0;right:0;bottom:12px;text-align:center;font-size:14px;color:#fff;text-shadow:0 1px 4px #000}.viewfinder .tools{position:absolute;top:12px;right:12px;display:flex;flex-direction:column;gap:8px}.viewfinder .tools button{background:#0f1115bf;border:1px solid rgba(255,255,255,.25);min-height:44px;padding:10px 12px}.timeline{display:flex;flex-direction:column;gap:14px}.timeline .point{display:grid;grid-template-columns:12px 1fr;gap:12px}.timeline .point .bullet{width:10px;height:10px;border-radius:50%;background:var(--line);margin-top:7px}.timeline .point.chz .bullet{background:var(--warn)}.timeline .point .when{font-size:13px;color:var(--muted)}.error-box{background:#f871711f;border:1px solid rgba(248,113,113,.4);color:#fecaca;border-radius:12px;padding:12px 14px}.spinner{width:22px;height:22px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.center{display:flex;align-items:center;justify-content:center;gap:12px}.actions{display:flex;gap:12px;flex-wrap:wrap}.actions button{flex:1 1 140px}.switch{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--muted)}.switch input{width:20px;min-height:20px;height:20px;accent-color:var(--accent)}
