:root{--bg:#fff;--fg:#1c1c1e;--muted:#6b7280;--accent:#36f;--accent-fg:#fff;--card:#f3f4f6;--border:#d1d5db;--warn-bg:#fff4d6;--err-bg:#fde2e2;--info-bg:#e3ecff;--ok-bg:#dcfce7;--touch:56px}@media (prefers-color-scheme:dark){:root{--bg:#121212;--fg:#f1f1f1;--muted:#9ca3af;--card:#1f2023;--border:#3a3b40;--warn-bg:#4a3b10;--err-bg:#5a1f1f;--info-bg:#1d2c52;--ok-bg:#14391f}}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--fg);-webkit-tap-highlight-color:transparent;overscroll-behavior:none;font:18px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}#app{height:100%}.app{min-height:100%;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);flex-direction:column;display:flex}.header{background:var(--accent);color:var(--accent-fg);align-items:center;gap:8px;min-height:52px;padding:4px 8px;display:flex}.header h1{margin:0;font-size:20px;font-weight:600}.icon-btn,.icon-spacer{flex:none;width:44px;height:44px}.icon-btn{color:inherit;cursor:pointer;background:0 0;border:0;font-size:34px;line-height:1}.content{flex:1;width:100%;max-width:720px;margin:0 auto;padding:16px}.center{text-align:center;padding:32px 16px}.stack{flex-direction:column;gap:12px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:12px 16px}.label{color:var(--muted);font-size:14px}.value{font-size:22px;font-weight:600}.muted{color:var(--muted)}.denied{color:#b91c1c}@media (prefers-color-scheme:dark){.denied{color:#fca5a5}}code{font-family:ui-monospace,Menlo,Consolas,monospace}.btn{min-height:var(--touch);font:inherit;background:var(--card);color:var(--fg);border:1px solid var(--border);cursor:pointer;border-radius:12px;padding:0 20px;font-weight:600}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}.btn-small{min-height:40px;padding:0 14px;font-size:16px}.btn-icon{justify-content:center;align-items:center;min-width:48px;min-height:48px;padding:0;display:inline-flex}.field{flex-direction:column;gap:4px;display:flex}select,input[type=text]{min-height:var(--touch);font:inherit;background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:12px;padding:0 12px}input[type=checkbox]{flex:none;width:28px;height:28px}.scan{font-size:22px}.banner{justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex}.banner-warn{background:var(--warn-bg)}.banner-error{background:var(--err-bg)}.banner-info{background:var(--info-bg)}@media (orientation:landscape) and (height<=480px){.header{min-height:40px}.content{padding:8px 16px}:root{--touch:48px}}.scan-wrap{align-items:flex-end;gap:8px;display:flex}.scan-field{flex:1;min-width:0}.scan{width:100%;font-size:22px}.scan-busy{opacity:.6}.rows{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.row-card{text-align:left;width:100%;font:inherit;color:var(--fg);background:var(--card);border:1px solid var(--border);cursor:pointer;border-radius:12px;padding:10px 14px;display:block}.row-card.static{cursor:default}.row-ok{color:#1c1c1e;background:#96ff96}.row-ok .muted{color:#3b4a3b}.row-warn{background:var(--warn-bg)}.row-error{background:var(--err-bg)}.row-top{justify-content:space-between;gap:12px;display:flex}.row-title{font-weight:600}.qty{white-space:nowrap;font-size:20px;font-weight:600}.small{font-size:14px}.msg{border:1px solid var(--border);border-radius:12px;align-items:flex-start;gap:10px;padding:10px 14px;display:flex}.msg-mark{color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:28px;height:28px;font-weight:700;display:inline-flex}.msg-body{white-space:pre-wrap;word-break:break-word;flex:1}.msg-close{color:inherit;width:32px;height:32px;font-size:28px}.msg-success{background:var(--ok-bg)}.msg-success .msg-mark{background:#16a34a}.msg-error{background:var(--err-bg)}.msg-error .msg-mark{background:#dc2626}.msg-warn{background:var(--warn-bg)}.msg-warn .msg-mark{background:#d97706}.msg-info{background:var(--info-bg)}.msg-info .msg-mark{background:var(--accent)}.btn-big{width:100%;min-height:72px;font-size:20px}.btn-danger{color:#fff;background:#dc2626;border-color:#dc2626}.menu-title{color:var(--muted);margin:8px 0 4px;font-size:16px;font-weight:600}.menu-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.btn-tile{text-align:center;min-height:84px;padding:8px 12px;line-height:1.2}.contour{color:#1c1c1e;background:#f59e0b;border-radius:8px;padding:2px 8px;font-size:12px;font-weight:700}.contour-stub{color:#fff;background:#a855f7}.plain{margin:4px 0 12px;padding-left:20px}.modal-back{z-index:10;background:#00000080;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--bg);color:var(--fg);border-radius:16px;flex-direction:column;gap:8px;width:100%;max-width:460px;max-height:90vh;padding:16px;display:flex;overflow:auto}.modal h2{margin:0;font-size:20px}.toasts{left:16px;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:20;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed}.toast{color:#fff;background:#323232;border-radius:12px;padding:12px 16px}.cam{align-items:stretch}.cam-video{object-fit:cover;background:#000;border-radius:12px;width:100%;max-height:55vh}.diag-row{border-bottom:1px solid var(--border);justify-content:space-between;gap:12px;padding:4px 0;display:flex}.diag-row .label{flex:none}.diag-row span:last-child{text-align:right;word-break:break-word}.diag-log{min-height:60px;font-family:ui-monospace,Menlo,Consolas,monospace;line-height:1.8}.diag-key{background:var(--bg);border:1px solid var(--border);border-radius:6px;margin:0 2px;padding:0 6px;display:inline-block}.diag-key sub{color:var(--muted);font-size:11px}.header h1{flex:1;min-width:0;line-height:1.15}.link{flex:0 auto;align-items:center;gap:6px;min-width:0;padding:0 6px;font-size:13px;display:inline-flex}.link-text{text-overflow:ellipsis;white-space:nowrap;max-width:9em;overflow:hidden}.link-dot{background:#9ca3af;border:2px solid #fffc;border-radius:50%;width:12px;height:12px}.link-ok .link-dot{background:#22c55e}.link-warn .link-dot{background:#f59e0b}.link-down .link-dot{background:#ef4444}.link-text{color:#fff;font-weight:600}
