:root{
  --bg:#0b0d12;
  --panel:#101521;
  --card:#0f1626;
  --text:#e7eaf0;
  --muted:#a8b0bf;
  --line:rgba(255,255,255,.10);
  --accent:#7dd3fc;
  --danger:#fb7185;
}

*{box-sizing:border-box;}
html,body{height:100%;}
body{
  margin:0;
  font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
  background: radial-gradient(1000px 600px at 15% 10%, rgba(125,211,252,.14), transparent 60%),
              radial-gradient(900px 500px at 85% 15%, rgba(167,139,250,.12), transparent 55%),
              var(--bg);
  color:var(--text);
}

a{color:inherit;text-decoration:none;}
a:hover{opacity:.9;}

.topbar{
  position:sticky;top:0;z-index:10;
  background:rgba(11,13,18,.65);
  backdrop-filter: blur(10px);
  border-bottom:1px solid var(--line);
}
.topbar-inner{
  max-width:1100px;
  margin:0 auto;
  padding:14px 18px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
}
.brand{display:flex;align-items:center;gap:10px;font-weight:600;letter-spacing:.2px;}
.brand-icon{height:28px;width:auto;}
.topnav{display:flex;gap:14px;color:var(--muted);font-weight:500;}
.topnav a{padding:8px 10px;border-radius:10px;}
.topnav a:hover{background:rgba(255,255,255,.06);color:var(--text);}

.page{max-width:1100px;margin:0 auto;padding:26px 18px 40px;}
.hero{padding:8px 0 18px;}
.hero h1{margin:0 0 8px;font-size:28px;letter-spacing:-.2px;}
.sub{margin:0;color:var(--muted);max-width:760px;line-height:1.5;}

.panel{
  display:flex;
  flex-direction:column;
  gap:16px;
  align-items:stretch;
}

.upload{display:block;}
.uploadbox{
  border:1px solid var(--line);
  background:rgba(16,21,33,.55);
  border-radius:18px;
  overflow:hidden;
}

.file-input{display:none;}


.dropzone{
  width:100%;
  min-height: min(72vh, 760px);
  border:1px dashed rgba(255,255,255,.22);
  background:rgba(0,0,0,.12);
  border-radius:0;
  padding:24px 20px;
  text-align:left;
  color:var(--text);
  cursor:pointer;
  transition: background .15s ease, border-color .15s ease;
  position:relative;
  display:flex;
  align-items:flex-start;
  justify-content:flex-start;
}

.dropzone:hover{background:rgba(16,21,33,.70);border-color:rgba(125,211,252,.35);}
.dropzone.dragover{background:rgba(125,211,252,.10);border-color:rgba(125,211,252,.55);}

.dz-inner{max-width:720px;}
.dz-title{font-weight:650;letter-spacing:-.2px;font-size:16px;}
.dz-sub{margin-top:6px;color:var(--muted);font-size:13px;line-height:1.35;}

.kbd{display:inline-block;padding:2px 7px;border-radius:8px;border:1px solid var(--line);background:rgba(255,255,255,.06);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:12px;}

.uploadbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px 14px;
  border-top:1px solid var(--line);
  background:rgba(0,0,0,.10);
}
.uploadbar-left{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
.uploadbar-right{display:flex;align-items:center;gap:10px;}

.uploadmeta{
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding:10px 14px;
  border-top:1px solid var(--line);
  background:rgba(0,0,0,.06);
}

.btn{
  appearance:none;
  border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.08);
  color:var(--text);
  padding:10px 12px;
  border-radius:12px;
  font-weight:600;
  cursor:pointer;
}
.btn:hover{background:rgba(255,255,255,.11);}
.btn:disabled{opacity:.5;cursor:not-allowed;}
.btn-ghost{background:transparent;}
.btn-danger{border-color:rgba(251,113,133,.35);background:rgba(251,113,133,.12);}
.btn-danger:hover{background:rgba(251,113,133,.18);}

.results{display:flex;flex-direction:column;gap:16px;margin-top:4px;}

.status{color:var(--muted);font-weight:650;font-size:13px;}

video{display:none;position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#000;}
.preview-img{display:none;position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#000;}
.dropzone video, .dropzone .preview-img{border-radius:0;}

.dropzone.has-preview .dz-inner{display:none;}

.muted{color:var(--muted);}

.grid{margin-top:16px;display:grid;grid-template-columns: 1fr 1fr;gap:16px;}
.card{
  border:1px solid var(--line);
  background:rgba(16,21,33,.65);
  border-radius:16px;
  padding:14px;
  overflow:hidden;
}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;}
.card h2{margin:0;font-size:14px;letter-spacing:.2px;color:var(--text);}

.mono{
  margin:0;
  padding:12px;
  border-radius:14px;
  border:1px solid var(--line);
  background:rgba(0,0,0,.22);
  overflow:auto;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  font-size:12px;
  line-height:1.5;
  white-space:pre-wrap;
  word-break:break-word;
}

.meta{margin-top:10px;color:var(--muted);font-size:12px;display:flex;flex-wrap:wrap;gap:8px;}
.meta span{padding:4px 8px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.05);}

.structured{margin:10px 0 12px;}
.kv{display:grid;grid-template-columns: 160px 1fr;gap:8px 12px;}
.k{color:var(--muted);font-weight:600;font-size:12px;}
.v{color:var(--text);font-weight:500;font-size:12px;}
.empty{color:var(--muted);font-size:13px;padding:8px 0;}

.flights{display:flex;flex-direction:column;gap:12px;margin-top:8px;}
.flight{
  border:1px solid var(--line);
  background:rgba(0,0,0,.14);
  border-radius:16px;
  padding:14px;
}
.flight-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;}
.route{font-weight:750;letter-spacing:-.2px;font-size:16px;}
.route span{color:var(--muted);font-weight:650;}
.flight-sub{margin-top:6px;color:var(--muted);font-size:13px;line-height:1.4;}
.flight-badges{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;}
.badge-strong{color:var(--text);border-color:rgba(125,211,252,.28);background:rgba(125,211,252,.10);}
.flight-grid{margin-top:12px;display:grid;grid-template-columns: 160px 1fr;gap:8px 12px;}
.flight-grid .k{font-size:12px;}
.flight-grid .v{font-size:12px;}

.raw{margin-top:12px;}
.raw summary{cursor:pointer;color:var(--muted);font-weight:650;font-size:13px;}
.raw[open] summary{color:var(--text);}

.detections{display:flex;flex-direction:column;gap:10px;margin-top:10px;}
.det{
  border:1px solid var(--line);
  background:rgba(0,0,0,.18);
  border-radius:14px;
  padding:12px;
}
.det-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px;}
.det-badges{display:flex;gap:8px;flex-wrap:wrap;}
.badge{padding:3px 8px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.05);color:var(--muted);font-size:12px;font-weight:600;}
.det-text{margin:0;font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;font-size:12px;line-height:1.45;white-space:pre-wrap;word-break:break-word;color:var(--text);}

.foot{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);}

@media (max-width: 920px){
  .panel{grid-template-columns:1fr;}
  .grid{grid-template-columns:1fr;}
  .dropzone{min-height:min(64vh, 680px);}
  .kv{grid-template-columns: 140px 1fr;}
  .flight-grid{grid-template-columns: 140px 1fr;}
  .uploadmeta{flex-direction:column;align-items:flex-start;}
}
