:root{color-scheme:light;font-family:Space Grotesk,Segoe UI,sans-serif;background:linear-gradient(135deg,#f0f4fa,#e8ecf5);color:#0b192c}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-height:100vh}button,input{font:inherit}.shell{min-height:100vh;padding:16px;display:flex;flex-direction:column;gap:20px;max-width:1200px;margin:0 auto}.hero,.panel{background:#fff;border-radius:24px;box-shadow:0 8px 32px #0047ba1f;border:1px solid rgba(0,71,186,.08);transition:box-shadow .3s ease}.hero{padding:32px;display:flex;flex-direction:column;gap:16px}.logo-header{display:flex;flex-direction:column;align-items:center;gap:20px;margin-bottom:16px;text-align:center}.jbs-logo{width:clamp(140px,25vw,220px);height:auto;object-fit:contain;animation:slideInDown .5s ease-out}.header-text{width:100%}@keyframes slideInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.eyebrow,.label{font-family:IBM Plex Mono,monospace;text-transform:uppercase;letter-spacing:.14em;font-size:.72rem;color:#0047ba;font-weight:700;display:block;margin-bottom:6px}h1,h2,p{margin:0}h1{font-size:clamp(1.8rem,6vw,2.8rem);line-height:1.2;color:#002d75;margin-bottom:0;animation:fadeInUp .6s ease-out;font-weight:700}h2{font-size:clamp(1.1rem,2.2vw,1.6rem);line-height:1.2;color:#002d75;margin-bottom:10px;margin-top:0;font-weight:700}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.hero>p,.muted,.hint-box p{color:#4a6b8c;line-height:1.6}.status-row,.controls,.model-card,.detection-list li{display:flex;gap:10px;flex-wrap:wrap}.pill{display:inline-flex;align-items:center;border-radius:999px;padding:10px 16px;background:linear-gradient(135deg,#e6eef8,#dfe8f5);border:1px solid rgba(0,71,186,.2);font-family:IBM Plex Mono,monospace;font-size:.78rem;color:#0047ba;font-weight:600;transition:all .3s ease;box-shadow:0 2px 8px #0047ba14}.pill-ok{background:linear-gradient(135deg,#e1f5ec,#d1f0e3);border-color:#2ab877;color:#106c42;box-shadow:0 2px 8px #2ab8771f}.pill-warn{background:linear-gradient(135deg,#fff3e0,#ffe8cc);border-color:#ffa033;color:#b55f00;box-shadow:0 2px 8px #ffa0331f}.controls button{border:0;border-radius:14px;padding:16px 24px;color:#fff;background:linear-gradient(135deg,#0047ba,#039);font-weight:700;cursor:pointer;box-shadow:0 6px 20px #0047ba40;transition:all .3s ease;flex:1;text-align:center;font-size:1rem}.controls button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 28px #0047ba59}.controls button:active:not(:disabled){transform:translateY(0);box-shadow:0 4px 12px #0047ba33}.controls button:disabled{background:#c0c9d8;box-shadow:none;cursor:not-allowed;transform:none;opacity:.7}.controls button:nth-child(2){background:#fff;color:#0047ba;border:2px solid #0047ba;box-shadow:0 4px 12px #0047ba26}.controls button:nth-child(2):hover:not(:disabled){background:#f0f4fa;box-shadow:0 6px 16px #0047ba33}.model-card{padding:20px;border-radius:16px;background:linear-gradient(135deg,#f8fafc,#f0f4fa);border:1px solid #dce4f0;justify-content:space-between;transition:all .3s ease}.model-card:hover{border-color:#0047ba;box-shadow:0 4px 16px #0047ba1a}.model-card strong{display:block;margin-top:8px;font-size:1.1rem;color:#0047ba;font-weight:600}.viewer{display:flex;flex-direction:column;gap:16px}.panel{padding:16px}.camera-panel{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;min-height:400px;border-radius:20px;background:linear-gradient(135deg,#e8ecf5,#dce4f0);box-shadow:inset 0 2px 8px #0047ba0d}.video,.canvas{max-width:100%;max-height:75vh;width:auto;height:auto;object-fit:contain;border-radius:16px;display:block;box-shadow:0 8px 24px #0047ba26}.empty-state{position:absolute;top:16px;right:16px;bottom:16px;left:16px;display:grid;place-items:center;text-align:center;border-radius:16px;color:#7c8fa6;border:2px dashed #cbd5e1;background:#f8fafcf2;padding:2rem;font-size:1.05rem;font-weight:500}.canvas.loading-blur{filter:blur(4px) opacity(.6);transition:filter .3s ease}.loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:#0047ba;font-weight:700;pointer-events:none}.spinner{width:48px;height:48px;border:5px solid rgba(0,71,186,.2);border-top-color:#0047ba;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.zoom-indicator{position:absolute;bottom:12px;right:12px;padding:6px 10px;background:#fff;border:1px solid #cbd5e1;border-radius:8px;font-family:IBM Plex Mono,monospace;font-size:.75rem;color:#0047ba;font-weight:600;pointer-events:none;box-shadow:0 2px 8px #0000001a}.list-panel{display:flex;flex-direction:column;gap:18px}.detection-list{list-style:none;padding:0;margin:0;display:grid;gap:10px}.detection-list li{justify-content:space-between;padding:14px 16px;border-radius:12px;background:linear-gradient(135deg,#f1f5f9,#e8ecf5);border:1px solid #dce4f0;color:#0f172a;font-weight:500;transition:all .2s ease}.detection-list li:hover{border-color:#0047ba;box-shadow:0 2px 8px #0047ba1a;transform:translate(2px)}.hint-box{margin-top:auto;padding:18px;border-radius:14px;background:linear-gradient(135deg,#f0f4fa,#e8ecf5);border:1px solid #dce4f0;n display: grid;gap:10px;n box-shadow: 0 4px 12px rgba(0,71,186,.08)}@media (min-width: 900px){.shell{padding:24px;display:grid;grid-template-columns:280px 1fr;grid-template-rows:auto 1fr;gap:20px;max-width:100%;height:100vh;overflow:hidden}.hero{padding:24px;grid-column:1;grid-row:1;max-height:fit-content;overflow-y:auto}.jbs-logo{width:120px}.viewer{grid-column:2;grid-row:1 / 3;display:contents}.camera-panel{grid-column:2;grid-row:1 / 3;min-height:auto}.list-panel{grid-column:1;grid-row:2;min-height:200px;overflow-y:auto}}@media (min-width: 1400px){.shell{grid-template-columns:320px 1fr;gap:24px;padding:28px;height:100vh}.hero{padding:28px}.jbs-logo{width:140px}.camera-panel{min-height:auto}.list-panel{min-height:220px}}
