*{box-sizing:border-box;margin:0;padding:0}body{background:#0f0f0f;color:#e5e5e5;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;line-height:1.5;min-height:100vh;padding:1rem}.app{max-width:1000px;margin:0 auto;display:flex;flex-direction:column;min-height:calc(100vh - 2rem)}.app-header{text-align:center;padding:1rem 1rem .5rem}.app-header h1{font-size:1.8rem;font-weight:700;background:linear-gradient(90deg,#8a2be2,#00bfff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:.25rem}.app-subtitle{font-size:.95rem;color:#aaa}.sticky-bar{position:sticky;top:0;z-index:50;background:#0f0f0f;padding:.75rem 0;display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;border-bottom:1px solid #2a2a2a;margin-bottom:1rem}.sticky-bar .controls,.sticky-bar .model-panel,.sticky-bar .calibration-panel{background:#1a1a1a;border-radius:8px;padding:.5rem .75rem;border:1px solid #333;margin:0;flex-shrink:0}.sticky-bar .controls{display:flex;align-items:center;gap:.5rem}.sticky-bar .button-group{display:flex;gap:.5rem}.sticky-bar .model-panel{display:flex;align-items:center;gap:.5rem;flex-wrap:nowrap}.sticky-bar .model-status{font-size:.8rem;color:#aaa;white-space:nowrap}.sticky-bar .model-progress{display:flex;align-items:center;gap:.3rem;min-width:80px}.sticky-bar .progress-bar{width:50px;height:6px;background:#333;border-radius:3px;overflow:hidden}.sticky-bar .progress-fill{height:100%;background:linear-gradient(90deg,#8a2be2,#00bfff);border-radius:3px;transition:width .3s}.sticky-bar .progress-text{font-size:.75rem;color:#888;min-width:28px}.sticky-bar .calibration-panel{display:flex;align-items:center;gap:.5rem}.sticky-bar .calibration-status{font-size:.8rem;color:#aaa;white-space:nowrap}.app-main{width:100%;display:flex;flex-direction:column;align-items:center}.status-panel{background:#1a1a1a;border-radius:8px;padding:.75rem 1rem;border:1px solid #333;margin-bottom:1rem}.camera-status{font-size:1rem;font-weight:600}.camera-status--idle{color:#888}.camera-status--requesting{color:orange}.camera-status--active{color:#0c6}.camera-status--error,.camera-status--denied{color:#f55}.camera-error{color:#f88;background:#ff55551a;border-left:4px solid #ff5555;padding:.75rem;border-radius:4px;margin-top:.5rem;font-size:.9rem}.video-container{position:relative;background:#1a1a1a;border-radius:12px;overflow:hidden;aspect-ratio:16/9;border:1px solid #333;max-height:55vh}.camera-video{width:100%;height:100%;object-fit:contain;display:none;transform:scaleX(-1)}.video-overlay{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#1a1a1a;color:#666}.video-placeholder{text-align:center}.video-placeholder svg{stroke:#444;margin-bottom:1rem}.video-placeholder p{font-size:1.2rem}.btn{padding:.5rem 1rem;border:none;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer;transition:all .2s ease;white-space:nowrap}.btn-primary{background:linear-gradient(90deg,#8a2be2,#00bfff);color:#fff}.btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 10px #8a2be24d}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:#333;color:#e5e5e5;border:1px solid #555}.btn-secondary:hover:not(:disabled){background:#444;border-color:#666}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.btn-pip{background:#2a2a2a;color:#00bfff;border:1px solid #00bfff}.btn-pip:hover:not(:disabled){background:#1a3a4a}.btn-pip--active{background:#00bfff;color:#000}.btn-pip:disabled{opacity:.5;cursor:not-allowed}.btn-guard{background:#2a2a2a;color:#22c55e;border:1px solid #22c55e}.btn-guard:hover:not(:disabled){background:#1a3a2a}.btn-guard--active{background:#22c55e;color:#000}.btn-guard:disabled{opacity:.5;cursor:not-allowed}.support-warning{background:#ffa5001a;border:1px solid #ffa500;color:#ffcc80;padding:1rem;border-radius:8px;font-size:.95rem;margin-top:1rem}.app-footer{margin-top:2rem;padding:1rem;text-align:center;border-top:1px solid #2a2a2a;color:#888;font-size:.85rem}.footer-note{margin-top:.3rem;font-size:.8rem;color:#666}.error-screen{text-align:center;padding:3rem;background:#1a1a1a;border-radius:12px;border:1px solid #ff5555;max-width:600px;margin:3rem auto}.error-screen h2{color:#f55;margin-bottom:1rem}.error-screen p{margin-bottom:2rem;color:#ccc}.error-screen button{background:#f55;color:#fff;border:none;padding:.8rem 2rem;border-radius:6px;font-size:1rem;cursor:pointer}@media (max-width: 768px){.app-header h1{font-size:1.5rem}.app-subtitle{font-size:.85rem}.sticky-bar{flex-direction:column;align-items:stretch;gap:.5rem}.sticky-bar .controls,.sticky-bar .model-panel,.sticky-bar .calibration-panel{width:100%}.sticky-bar .button-group{flex-wrap:wrap}.btn{width:auto;min-width:unset}.video-container{max-height:40vh}}@media (max-width: 480px){body{padding:.5rem}.app-header{padding:.75rem .5rem}}#onboarding-bar{position:fixed;bottom:0;left:0;right:0;background:linear-gradient(180deg,#0f0f0fd9,#0a0a0afa);border-top:1px solid rgba(255,255,255,.08);padding:10px 20px;z-index:9999;display:flex;align-items:center;justify-content:center;gap:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:13px;color:#d0d0d0}#onboarding-bar.onboarding--done{border-top-color:#22c55e66}.onboarding-step{display:flex;align-items:center;gap:8px}.step-icon{font-size:15px;line-height:1}.step-text{font-size:12px;white-space:nowrap}.onboarding-dots{display:flex;gap:5px;align-items:center}.onboarding-dot{width:5px;height:5px;border-radius:50%;background:#444;transition:background .2s,box-shadow .2s}.onboarding-dot.active{background:#22c55e;box-shadow:0 0 5px #22c55e99}.onboarding-close{background:none;border:none;color:#555;font-size:12px;cursor:pointer;padding:4px 6px;line-height:1;border-radius:4px;transition:color .2s,background .2s}.onboarding-close:hover{color:#aaa;background:#ffffff0f}@media (max-width: 480px){.sticky-bar{flex-direction:row;flex-wrap:wrap;gap:.4rem;padding:.4rem 0}.sticky-bar .controls,.sticky-bar .model-panel,.sticky-bar .calibration-panel{padding:.3rem .5rem;display:flex;align-items:center;gap:.3rem;flex-wrap:wrap}.sticky-bar .btn{font-size:.7rem;padding:.25rem .5rem;min-width:unset}.sticky-bar .model-progress{display:none}.sticky-bar .model-status{font-size:.65rem}.sticky-bar .calibration-status,.app-subtitle{display:none}.video-container{max-height:30vh}#onboarding-bar{padding:6px 12px;font-size:11px;gap:8px}.step-text{font-size:10px}.onboarding-dots{gap:4px}.onboarding-dot{width:4px;height:4px}}@media (max-width: 768px){.sticky-bar .btn{padding:.3rem .6rem;font-size:.75rem}.sticky-bar .model-status,.sticky-bar .calibration-status{font-size:.7rem}}@media (max-height: 480px) and (orientation: landscape){#onboarding-bar{display:none}}.footer-text{margin-bottom:.35rem;color:#bdbdbd}.footer-links{margin-top:.35rem;display:flex;align-items:center;justify-content:center;gap:.65rem;flex-wrap:wrap}.footer-links a{color:#7dd3fc;text-decoration:none;transition:color .2s ease,opacity .2s ease}.footer-links a:hover{color:#bae6fd;text-decoration:underline}.footer-links a:focus-visible{outline:2px solid #00bfff;outline-offset:2px;border-radius:4px}.footer-separator{color:#555}@media (max-width: 480px){.footer-links{flex-direction:column;gap:.35rem}.footer-separator{display:none}}.app{width:100%;max-width:1200px;margin:0 auto;display:flex;flex-direction:column;min-height:calc(100vh - 2rem);position:relative}.app-shell{width:100%;display:flex;flex-direction:column;align-items:center;transition:filter .25s ease,opacity .25s ease}.app-shell.is-locked{filter:blur(4px);opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}.app-header,.sticky-bar,.status-panel,.app-main,.app-footer{width:min(100%,980px);margin-left:auto;margin-right:auto}.app-header{text-align:center;padding:1.2rem 1rem .75rem}.app-header h1{font-size:clamp(1.8rem,4vw,2.6rem);font-weight:800;line-height:1.1;word-break:break-word}.app-subtitle{font-size:1rem;color:#aaa;max-width:680px;margin:.25rem auto 0}.sticky-bar{justify-content:center;align-items:stretch;gap:.75rem}.sticky-bar .controls,.sticky-bar .model-panel,.sticky-bar .calibration-panel{display:flex;align-items:center;justify-content:center;gap:.5rem;flex-wrap:wrap;min-height:56px}.status-panel{width:min(100%,980px)}.app-main{width:min(100%,980px);display:flex;flex-direction:column;align-items:center}.video-container{width:100%;max-width:980px;margin:0 auto;background:#1a1a1a;border-radius:16px;overflow:hidden;aspect-ratio:16 / 9;border:1px solid #333;max-height:60vh}.support-warning{width:100%;max-width:980px;margin-top:1rem}.app-footer{margin-top:2rem;padding:1rem 1rem 2rem;text-align:center;border-top:1px solid #2a2a2a;color:#888;font-size:.9rem}.app-footer a{color:#7dd3fc;text-decoration:none}.app-footer a:hover{color:#bae6fd;text-decoration:underline}body.has-consent-overlay{overflow:hidden}.consent-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:20px;background:radial-gradient(circle at top,rgba(0,191,255,.12),transparent 35%),#0a0a0aeb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:opacity .25s ease,visibility .25s ease}.consent-overlay--hidden{opacity:0;visibility:hidden;pointer-events:none}.consent-card{width:min(100%,860px);max-height:min(92vh,900px);overflow:auto;background:linear-gradient(180deg,#1c1c1cfa,#121212fa);border:1px solid rgba(255,255,255,.08);border-radius:22px;box-shadow:0 20px 60px #00000073;padding:24px}.consent-badge{display:inline-flex;align-items:center;justify-content:center;margin-bottom:12px;padding:6px 12px;border-radius:999px;background:#00bfff1f;border:1px solid rgba(0,191,255,.28);color:#9ddfff;font-size:.85rem;font-weight:700}.consent-card h2{font-size:clamp(1.4rem,3vw,2.1rem);line-height:1.2;margin-bottom:.75rem;color:#fff}.consent-lead{color:#cfcfcf;margin-bottom:1.25rem;font-size:1rem}.consent-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:1rem}.consent-section{background:#ffffff08;border:1px solid #2d2d2d;border-radius:16px;padding:16px}.consent-section h3{font-size:1rem;margin-bottom:.65rem;color:#fff}.consent-section ul{margin:0;padding-left:1.1rem;color:#cfcfcf}.consent-section li+li{margin-top:.45rem}.consent-note{margin-top:.25rem;margin-bottom:1.2rem;padding:12px 14px;border-radius:14px;background:#ffa50014;border:1px solid rgba(255,165,0,.2);color:#ffd79a}.consent-actions{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap}@media (max-width: 768px){body{padding:.75rem}.app{min-height:calc(100vh - 1.5rem)}.app-header{padding:1rem .5rem .5rem}.app-subtitle{font-size:.9rem;display:block}.sticky-bar{flex-direction:column;align-items:stretch;top:0;padding:.5rem 0}.sticky-bar .controls,.sticky-bar .model-panel,.sticky-bar .calibration-panel{width:100%;justify-content:center}.button-group{width:100%;justify-content:center;flex-wrap:wrap}.status-panel{padding:.75rem}.video-container{max-height:38vh;border-radius:14px}.consent-card{padding:18px;border-radius:18px}.consent-grid{grid-template-columns:1fr}.consent-actions{flex-direction:column}.consent-actions .btn{width:100%}}@media (max-width: 480px){body{padding:.5rem}.app-header h1{font-size:1.6rem}.app-subtitle{font-size:.82rem}.sticky-bar .btn{width:100%}.video-container{max-height:30vh}.consent-overlay{padding:12px}.consent-card{padding:16px}.consent-lead,.consent-note,.consent-section ul{font-size:.92rem}}
