:root{--ink:#1b1f24;--muted:#6b7580;--faint:#98a2ae;--line:#e6e9ee;--line-strong:#d3d8e0;--bg:#f6f7f9;--panel:#ffffff;--panel-2:#f2f4f7;--accent:#2f6df6;--accent-ink:#1e4fc4;--ok:#1f9d64;--warn:#c77a12;--bad:#d64545;--shadow:0 1px 2px rgba(20,28,40,.06),0 6px 18px rgba(20,28,40,.05);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Inter,sans-serif;font-size:14px;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;font-synthesis:none}*{box-sizing:border-box}html{overflow-x:hidden}body{margin:0;min-width:320px;overflow-x:hidden}button,input,select{font:inherit;color:inherit}h1,h2,h3{margin:0;font-weight:650;letter-spacing:-.01em}a{color:inherit;text-decoration:none}.muted{color:var(--muted)}.faint{color:var(--faint)}.empty{color:var(--muted);padding:2rem 0}.error{color:var(--bad)}.warning{color:var(--warn);font-weight:600}button{border:1px solid transparent;border-radius:.5rem;background:var(--accent);color:#fff;padding:.5rem .85rem;font-weight:600;cursor:pointer;transition:background .12s}button:hover{background:var(--accent-ink)}button:disabled{opacity:.5;cursor:not-allowed}button.secondary{background:var(--panel);color:var(--ink);border-color:var(--line-strong)}button.secondary:hover{background:var(--panel-2)}button.ghost{background:transparent;color:var(--muted);border-color:transparent;padding:.3rem .5rem}button.ghost:hover{background:var(--panel-2);color:var(--ink)}input,select{width:100%;border:1px solid var(--line-strong);border-radius:.5rem;padding:.6rem .7rem;background:var(--panel)}input:focus,select:focus,button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}label{display:grid;gap:.35rem;font-weight:600;font-size:.85rem;color:var(--muted)}.app-shell{display:grid;grid-template-columns:13rem minmax(0,1fr);min-height:100vh}.app-shell>aside{position:sticky;top:0;height:100vh;background:var(--panel);border-right:1px solid var(--line);padding:1.1rem;display:flex;flex-direction:column;gap:1.25rem}.brand{display:grid;gap:.05rem;padding:.15rem .2rem}.brand span{text-transform:uppercase;letter-spacing:.12em;font-size:.62rem;font-weight:800;color:var(--accent)}.brand strong{font-size:1rem}.app-shell nav{display:grid;gap:.15rem}.app-shell nav a{padding:.5rem .6rem;border-radius:.5rem;color:var(--muted);font-weight:600;font-size:.9rem}.app-shell nav a[aria-current=page]{background:var(--accent);color:#fff}.app-shell nav a:not([aria-current=page]):hover{background:var(--panel-2);color:var(--ink)}.account{margin-top:auto;display:grid;gap:.1rem;font-size:.82rem;overflow-wrap:anywhere}.account small{color:var(--faint)}.account button{margin-top:.5rem;padding:.4rem .6rem;font-size:.82rem}.workspace{padding:clamp(1rem,2.5vw,2rem);min-width:0;max-width:1500px}.page-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.25rem;flex-wrap:wrap}.page-header h1{font-size:1.15rem;overflow-wrap:anywhere;line-height:1.25}.page-header .sub{color:var(--muted);font-size:.82rem;margin-top:.15rem}.eyebrow{display:none}.status{display:inline-flex;align-items:center;gap:.35rem;border-radius:99px;padding:.2rem .55rem;font-size:.72rem;font-weight:700;background:var(--panel-2);color:var(--muted);white-space:nowrap}.status:before{content:"";width:.45rem;height:.45rem;border-radius:99px;background:currentColor}.status-running{background:#e7f0ff;color:#1e4fc4}.status-queued{background:#fff3e0;color:#9a5a00}.status-partial{background:#fff6da;color:#8a6400}.status-failed{background:#fde5e3;color:#b3271b}.status-succeeded{background:#e2f6ec;color:#1a7d50}.submit-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:.75rem;background:var(--panel);border:1px solid var(--line);border-radius:.75rem;padding:1rem;box-shadow:var(--shadow);margin-bottom:1.25rem}.submit-bar button{padding:.6rem 1rem}.submit-bar .error{grid-column:1/-1;font-size:.85rem}.run-list{display:grid;gap:.5rem}.run-row{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:.6rem;color:var(--ink);padding:.7rem .9rem;text-align:left;display:flex;align-items:center;gap:1rem;box-shadow:var(--shadow)}button.run-row:hover{border-color:var(--line-strong);background:var(--panel-2)}.run-row .grow{flex:1;min-width:0;display:grid;gap:.15rem}.run-row .url{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.run-row small{color:var(--muted);font-size:.78rem}.run-row .count{color:var(--muted);font-size:.8rem;white-space:nowrap}.run-row input[type=checkbox]{width:1.1rem;height:1.1rem;flex:none}.target-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(20rem,100%),1fr));gap:.6rem}.target-card{text-align:left;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:.6rem;padding:.9rem;display:grid;gap:.3rem;box-shadow:var(--shadow);overflow-wrap:anywhere}.target-card:hover{border-color:var(--line-strong);background:var(--panel-2)}.list-controls{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem;flex-wrap:wrap}.list-controls input{max-width:24rem}.list-count{font-size:.8rem;white-space:nowrap}.load-more{margin-top:.85rem}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:.7rem;box-shadow:var(--shadow);background:var(--panel)}.table{width:100%;border-collapse:separate;border-spacing:0;font-size:.86rem}.table thead th{text-align:left;font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;padding:.55rem .9rem;border-bottom:1px solid var(--line);background:var(--panel-2);white-space:nowrap}.table th.num,.table td.num{text-align:right;white-space:nowrap}.table th.check,.table td.check{width:1px;padding-right:.4rem}.table td{padding:.6rem .9rem;border-bottom:1px solid var(--line);vertical-align:middle;color:var(--ink)}.table tbody tr:last-child td{border-bottom:0}.table tr.clickable{cursor:pointer}.table tr.clickable:hover td{background:var(--panel-2)}.table tr.clickable:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.table td.url{font-weight:600;max-width:0;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table td.nowrap{white-space:nowrap;color:var(--muted)}.table td.strong{font-weight:650}.table td .cell-error{display:block;color:var(--bad);font-size:.76rem;margin-top:.2rem}.table input[type=checkbox]{width:1.1rem;height:1.1rem;display:block}.gallery-bar{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-bottom:1rem;color:var(--muted);font-size:.85rem}.gallery-bar .grow{flex:1}.gallery-bar .seg{display:inline-flex;background:var(--panel-2);border-radius:.5rem;padding:.15rem}.gallery-bar .seg button{background:transparent;color:var(--muted);padding:.3rem .6rem;font-size:.8rem;border-radius:.4rem;font-weight:600}.gallery-bar .seg button[aria-pressed=true]{background:var(--panel);color:var(--ink);box-shadow:var(--shadow)}.gallery{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}.gallery.large{grid-template-columns:repeat(auto-fill,minmax(360px,1fr));align-items:start}.shot{background:var(--panel);border:1px solid var(--line);border-radius:.7rem;overflow:hidden;box-shadow:var(--shadow);display:flex;flex-direction:column}.shot-img{display:block;width:100%;height:300px;padding:0;border:0;border-radius:0;background:var(--panel-2);cursor:zoom-in;overflow:hidden}.shot-img img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}.shot-img:hover img{opacity:.94}.shot-missing{height:300px;display:grid;place-items:center;text-align:center;gap:.3rem;background:var(--panel-2);color:var(--muted);padding:1rem;font-size:.85rem}.gallery.large .shot{align-self:start;width:100%}.gallery.large .shot-img{display:block;width:100%;height:auto;max-height:none;overflow:visible;cursor:zoom-in}.gallery.large .shot-img img{display:block;width:100%;height:auto;max-height:none;object-fit:fill;object-position:top}.gallery.large .shot-missing{height:440px}.shot-missing .why{font-weight:600;color:var(--ink)}.shot-cap{padding:.6rem .75rem;display:flex;align-items:center;gap:.5rem;justify-content:space-between;border-top:1px solid var(--line)}.shot-cap .who{min-width:0;display:grid;gap:.1rem}.shot-cap .name{display:flex;align-items:baseline;gap:.35rem;min-width:0}.shot-cap strong{font-size:.9rem;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shot-cap .cov{flex:none;color:var(--muted);font-weight:500;font-size:.82rem;white-space:nowrap}.shot-cap .cap-right{display:flex;align-items:center;gap:.5rem;flex:none}.cap-right .retry-btn{padding:.24rem .6rem;font-size:.74rem;font-weight:600;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);cursor:pointer;white-space:nowrap}.cap-right .retry-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--surface))}.cap-right .retry-btn:disabled{opacity:.6;cursor:default}.cap-right .retrying{font-size:.74rem;color:var(--accent);white-space:nowrap}.shot .retry-btn.on-hover{display:none}.shot:hover .retry-btn.on-hover,.shot:focus-within .retry-btn.on-hover{display:inline-flex}.shot-missing.loading .why{color:var(--accent);animation:cap-pulse 1.1s ease-in-out infinite}@keyframes cap-pulse{0%,to{opacity:.55}50%{opacity:1}}.shot-cap small{color:var(--muted);font-size:.76rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dot{width:.5rem;height:.5rem;border-radius:99px;flex:none}.dot-ok{background:var(--ok)}.dot-bad{background:var(--bad)}.dot-warn{background:var(--warn)}.dot-wait{background:var(--faint)}.cmp-head{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:.5rem}.cmp-head .col{flex:1;min-width:12rem;background:var(--panel);border:1px solid var(--line);border-radius:.6rem;padding:.7rem .9rem;box-shadow:var(--shadow)}.cmp-head .col b{font-weight:650}.cmp-head .col small{display:block;color:var(--muted);font-size:.78rem}.comparison{display:grid;gap:1rem;margin-top:1rem}.cmp-row{background:var(--panel);border:1px solid var(--line);border-radius:.7rem;overflow:hidden;box-shadow:var(--shadow)}.cmp-row>header{padding:.6rem .9rem;border-bottom:1px solid var(--line);display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap}.cmp-row>header strong{font-size:.92rem}.cmp-row>header .vp{color:var(--muted);font-size:.8rem}.cmp-panes{display:grid;grid-template-columns:1fr 1fr}.cmp-pane{padding:.75rem;display:grid;gap:.5rem;min-width:0}.cmp-pane+.cmp-pane{border-left:1px solid var(--line)}.cmp-pane .shot-img,.cmp-pane .shot-missing{height:420px;border-radius:.5rem}.cmp-pane .plabel{font-size:.78rem;color:var(--muted);display:flex;justify-content:space-between;gap:.5rem}.viewer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0d1117e8;z-index:30;padding:clamp(.4rem,1.5vw,1.5rem);display:grid;place-items:center}.viewer{width:100%;height:100%;background:#161b22;color:#e6edf3;border-radius:.6rem;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden}.viewer>header{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.6rem .9rem;border-bottom:1px solid #26303b}.viewer>header>div:first-child{display:grid;gap:.1rem;min-width:0}.viewer>header strong{font-size:.92rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer>header span{color:#9aa7b4;font-size:.78rem}.viewer-tools{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.viewer-tools>button{background:#26303b;color:#e6edf3;padding:.4rem .75rem;font-size:.82rem;font-weight:600}.viewer-tools>button:hover{background:#323e4b}.viewer-tools>button[aria-pressed=true]{background:#2f6df6;color:#fff}.viewer-tools .zoom{display:inline-flex;align-items:center;gap:.1rem;background:#0b0f14;border-radius:.5rem;padding:.1rem .2rem}.viewer-tools .zoom button{background:transparent;color:#e6edf3;padding:.25rem .55rem;font-size:1.05rem;line-height:1;min-width:1.9rem}.viewer-tools .zoom button:hover{background:#26303b}.viewer-tools output{color:#c3ccd6;font-size:.8rem;min-width:3rem;text-align:center;font-variant-numeric:tabular-nums}.viewer-canvas{overflow:auto;background:#0b0f14;padding:1rem;display:block}.viewer-canvas img{display:block;margin:0 auto}.viewer-canvas img.zoomable{cursor:zoom-in}.viewer-canvas img.actual{cursor:zoom-out}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:1rem;background:var(--bg)}.auth-card{width:min(100%,24rem);display:grid;gap:.9rem;background:var(--panel);border:1px solid var(--line);border-radius:.9rem;padding:1.6rem;box-shadow:var(--shadow)}.auth-card h1{font-size:1.35rem}.auth-card p{margin:0;color:var(--muted);font-size:.86rem}.google-btn{display:flex;align-items:center;justify-content:center;gap:.5rem;width:100%;border:1px solid var(--line-strong);border-radius:.5rem;background:var(--panel);color:var(--ink);padding:.5rem .85rem;font-weight:600}.google-btn:hover{background:var(--panel-2)}.google-btn svg{width:1.15rem;height:1.15rem;flex:none}.auth-sep{display:flex;align-items:center;gap:.6rem;color:var(--faint);font-size:.78rem}.auth-sep:before,.auth-sep:after{content:"";flex:1;height:1px;background:var(--line)}.auth-card p.error{color:var(--bad)}.account-list{display:grid;gap:.4rem}.account-list article{display:flex;justify-content:space-between;gap:1rem;align-items:center;padding:.7rem .9rem;background:var(--panel);border:1px solid var(--line);border-radius:.6rem;box-shadow:var(--shadow)}.account-list article>div:first-child{display:grid;gap:.1rem}.account-list small{color:var(--muted);font-size:.78rem}.actions{display:flex;gap:.35rem;align-items:center;flex-wrap:wrap}.split{display:grid;grid-template-columns:minmax(15rem,.6fr) minmax(0,1.4fr);gap:1.25rem;align-items:start}.split form{display:grid;gap:.8rem;background:var(--panel);border:1px solid var(--line);border-radius:.75rem;padding:1rem;box-shadow:var(--shadow)}@media(max-width:820px){.app-shell{display:block}.app-shell>aside{position:static;height:auto;flex-direction:row;align-items:center;flex-wrap:wrap;gap:.75rem;border-right:0;border-bottom:1px solid var(--line)}.app-shell nav{grid-auto-flow:column;display:flex;overflow:auto}.account{margin:0 0 0 auto;flex:none;text-align:right}.account button{margin-top:.25rem}.cmp-panes{grid-template-columns:1fr}.cmp-pane+.cmp-pane{border-left:0;border-top:1px solid var(--line)}.split{grid-template-columns:1fr}}@media(max-width:520px){.submit-bar{grid-template-columns:1fr}}
