:root{--egg-gold: var(--ey-yellow);--egg-amber: var(--ey-orange);--egg-warm: var(--ey-pocket-gold);--green: var(--ey-teal);--green-dim: var(--teal-dim);--red: var(--red);--red-dim: var(--red-dim);--blue: var(--ey-sky);--blue-dim: var(--blue-dim);--teal: var(--ey-teal)}.cam-status-bar{background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:16px 20px;margin-bottom:20px;transition:border-color var(--duration-normal)}.cam-status-bar:hover{border-color:var(--border-hover)}.cam-status-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.cam-status-title{display:flex;align-items:center;gap:12px}.cam-store-name{font-weight:700;font-size:.92rem;background:linear-gradient(135deg,var(--egg-gold),var(--egg-amber));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.cam-status-summary{font-size:.78rem;color:var(--text-tertiary)}.cam-status-actions{display:flex;gap:8px}.cam-btn{padding:7px 14px;border:1px solid var(--border-default);background:var(--bg-card);color:var(--text-secondary);border-radius:var(--radius-md);font-size:.76rem;font-weight:600;cursor:pointer;transition:all var(--duration-normal) var(--ease-out);text-decoration:none;display:inline-flex;align-items:center;gap:5px;letter-spacing:.01em}.cam-btn:hover{border-color:var(--border-hover);background:var(--bg-card-hover);color:var(--text-primary);transform:translateY(-1px)}.cam-btn-connect.active{background:linear-gradient(135deg,var(--ey-teal),var(--ey-sky));color:#000;border-color:transparent;box-shadow:var(--shadow-glow-green);font-weight:700}.cam-btn-autopilot.active{background:linear-gradient(135deg,var(--ey-orange),var(--ey-yellow));color:#000;border-color:transparent;box-shadow:var(--shadow-glow-gold);font-weight:700}.cam-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}.cam-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:12px 14px;display:flex;align-items:center;gap:12px;transition:all var(--duration-normal) var(--ease-out);position:relative;overflow:hidden}.cam-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;border-radius:inherit}.cam-card:hover{border-color:var(--border-hover);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.cam-card:hover:before{opacity:1}.cam-card.cam-connected{border-color:#34d39940}.cam-card.cam-connected:before{background:linear-gradient(135deg,rgba(52,211,153,.04),transparent)}.cam-card.cam-error{border-color:#f8717140}.cam-card.cam-error:before{background:linear-gradient(135deg,rgba(248,113,113,.04),transparent)}.cam-card.cam-disabled{opacity:.4}.cam-card.cam-active{border-color:var(--egg-gold)!important;box-shadow:0 0 12px #fdd83533,inset 0 0 0 1px #fdd83526}.cam-card.cam-active:before{background:linear-gradient(135deg,rgba(253,216,53,.06),transparent);opacity:1}.cam-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;position:relative}.cam-dot.dot-connected{background:var(--green);box-shadow:0 0 8px #34d39966;animation:dot-pulse 2.5s infinite ease-in-out}.cam-dot.dot-disconnected{background:var(--text-muted)}.cam-dot.dot-error{background:var(--red);box-shadow:0 0 8px #f8717166;animation:dot-pulse-err 1.2s infinite}.cam-dot.dot-disabled{background:var(--text-muted);opacity:.5}@keyframes dot-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.85)}}@keyframes dot-pulse-err{0%,to{opacity:1}50%{opacity:.4}}.cam-info{flex:1;min-width:0}.cam-name{font-weight:600;font-size:.82rem;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cam-meta{font-size:.68rem;color:var(--text-tertiary);margin-top:3px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}.cam-role{background:var(--blue-dim);color:var(--blue);padding:1px 7px;border-radius:var(--radius-md);font-size:.62rem;font-weight:600;letter-spacing:.02em}.cam-type-badge{background:#fdd83514;color:var(--ey-yellow);padding:1px 7px;border-radius:var(--radius-md);font-size:.62rem;font-weight:600}.cam-error-msg{font-size:.62rem;color:var(--red);margin-top:2px}.cam-status-text{font-size:.68rem;font-weight:600;text-align:right;min-width:70px}.cam-status-text.text-connected{color:var(--green)}.cam-status-text.text-disconnected{color:var(--text-muted)}.cam-status-text.text-error{color:var(--red)}.cam-status-text.text-disabled{color:var(--text-muted);opacity:.6}.cam-preview-btn{width:28px;height:28px;border-radius:50%;border:1px solid rgba(45,212,191,.3);background:#2dd4bf1a;color:var(--teal);font-size:.85rem;cursor:pointer;transition:all var(--duration-normal) var(--ease-out);display:flex;align-items:center;justify-content:center;flex-shrink:0}.cam-preview-btn:hover{background:#2dd4bf40;border-color:var(--teal);transform:scale(1.15);box-shadow:0 0 12px #2dd4bf4d}.res-active{background:linear-gradient(135deg,#059669,#34d399)!important;color:#fff!important;border-color:transparent!important;box-shadow:var(--shadow-glow-green)}.main-layout{display:grid;grid-template-columns:1fr 380px;gap:20px;min-height:65vh}.video-section{display:flex;flex-direction:column;gap:14px;position:relative}.video-container{position:relative;background:#000;border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--border-default);box-shadow:var(--shadow-lg);aspect-ratio:16 / 9}video{width:100%;height:100%;object-fit:cover;display:block}#webcam{transform:scaleX(-1)}.smile-overlay{position:absolute;bottom:14px;left:14px;display:flex;align-items:center;gap:10px;background:#0009;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding:8px 16px;border-radius:var(--radius-pill);border:1px solid rgba(255,255,255,.08)}.smile-emoji{font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-secondary)}.smile-bar-container{width:100px;height:6px;background:#ffffff1a;border-radius:3px;overflow:hidden}.smile-bar{height:100%;width:0%;border-radius:3px;background:linear-gradient(90deg,var(--egg-gold),var(--green));transition:width .4s var(--ease-out),background .4s}.smile-label{font-size:.72rem;font-weight:700;min-width:30px;color:var(--text-primary)}.face-badge{position:absolute;top:12px;right:12px;background:#0000008c;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:5px 12px;border-radius:var(--radius-pill);font-size:.8rem;font-weight:600;border:1px solid rgba(255,255,255,.08)}.controls{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.btn{padding:9px 6px;border:1px solid var(--border-default);background:var(--bg-card);color:var(--text-secondary);border-radius:var(--radius-md);font-size:.72rem;font-weight:600;cursor:pointer;transition:all var(--duration-normal) var(--ease-out);display:flex;align-items:center;justify-content:center;gap:4px;position:relative;overflow:hidden;letter-spacing:-.01em;white-space:nowrap}.btn:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;border-radius:inherit}.btn:hover{border-color:var(--border-hover);color:var(--text-primary);transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn:active{transform:translateY(0)}.btn-smile.active,.btn-sop.active{background:linear-gradient(135deg,var(--ey-teal),var(--ey-sky));border-color:transparent;color:#000;font-weight:700;box-shadow:var(--shadow-glow-green)}.btn-scan.active,.btn-content.active{background:linear-gradient(135deg,var(--ey-orange),var(--ey-yellow));border-color:transparent;color:#000;font-weight:700;box-shadow:var(--shadow-glow-gold)}.btn-counter.active{background:linear-gradient(135deg,var(--ey-teal),var(--ey-sky));border-color:transparent;color:#000;font-weight:700;box-shadow:var(--shadow-glow-green)}.zone-canvas{position:absolute;top:0;left:0;width:100%;height:100%;z-index:15;cursor:crosshair;border-radius:12px}.zone-canvas.hidden{display:none}.zone-instructions{position:absolute;top:10px;left:50%;transform:translate(-50%);z-index:20;background:#000000d1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:8px 16px;display:flex;align-items:center;gap:10px;font-size:.75rem;color:#e5e7eb;white-space:nowrap}.zone-instructions .zone-step{font-weight:700;padding:2px 8px;border-radius:4px;font-size:.7rem}.zone-step-in{background:#22c55e40;color:#4ade80}.zone-step-out{background:#ef444440;color:#f87171}.zone-step-done{background:#fdd83540;color:var(--egg-gold)}.zone-toolbar{position:absolute;bottom:0;left:0;width:100%;z-index:20;display:flex;align-items:center;justify-content:center;gap:12px;background:#0f172ad9;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid rgba(255,255,255,.08);padding:12px 20px;box-sizing:border-box;border-bottom-left-radius:12px;border-bottom-right-radius:12px}.zone-toolbar button{padding:6px 14px;border-radius:8px;border:1px solid rgba(255,255,255,.15);font-size:.72rem;font-weight:600;cursor:pointer;transition:all .2s}.zone-btn-save{background:#22c55e33;color:#4ade80}.zone-btn-save:hover{background:#22c55e59}.zone-btn-clear{background:#ef444426;color:#f87171}.zone-btn-clear:hover{background:#ef44444d}.zone-btn-cancel{background:#ffffff14;color:#9ca3af}.zone-btn-cancel:hover{background:#ffffff26}.question-bar{display:flex;gap:8px}.question-bar input{flex:1;padding:12px 16px;background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);font-size:.88rem;font-family:var(--font-sans);transition:border-color var(--duration-normal)}.question-bar input:focus{outline:none;border-color:var(--egg-gold);box-shadow:0 0 0 3px #fdd8351a}.question-bar input::placeholder{color:var(--text-muted)}.btn-ask{padding:12px 22px;background:linear-gradient(135deg,#7c3aed,#a78bfa);border:none;border-radius:var(--radius-md);color:#fff;font-weight:700;font-size:.85rem;cursor:pointer;transition:all var(--duration-normal) var(--ease-out);font-family:var(--font-sans)}.btn-ask:hover{transform:translateY(-1px);box-shadow:0 4px 16px #7c3aed4d}.results-panel{background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:20px;overflow-y:auto;max-height:80vh}.result-placeholder{text-align:center;padding:48px 16px;color:var(--text-tertiary)}.result-placeholder-icon{font-size:2.8rem;margin-bottom:16px;filter:grayscale(.3)}.result-placeholder p{font-size:.92rem;color:var(--text-secondary);margin-bottom:8px}.mode-guide{text-align:left;list-style:none;margin-top:24px}.mode-guide li{padding:12px 0;border-bottom:1px solid var(--border-subtle);font-size:.82rem;line-height:1.6;color:var(--text-secondary)}.mode-guide li strong{color:var(--text-primary)}.result-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:18px;margin-bottom:12px;transition:border-color var(--duration-normal)}.result-card:hover{border-color:var(--border-hover)}.result-card h3{margin-bottom:10px;font-size:.95rem;font-weight:700;letter-spacing:-.01em}.score-big{font-size:2.8rem;font-weight:800;text-align:center;margin:12px 0;letter-spacing:-.03em}.score-pass{background:linear-gradient(135deg,#34d399,#059669);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.score-fail{background:linear-gradient(135deg,#f87171,#dc2626);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.status-badge{display:inline-flex;align-items:center;gap:5px;padding:5px 14px;border-radius:var(--radius-pill);font-weight:700;font-size:.8rem;letter-spacing:.01em}.badge-pass{background:var(--green-dim);color:var(--green)}.badge-fail{background:var(--red-dim);color:var(--red)}.badge-smile{background:var(--green-dim);color:var(--green)}.badge-no-smile{background:#fdd8351a;color:var(--egg-gold)}.violation-list{list-style:none;margin-top:10px}.violation-list li{padding:10px 0;border-bottom:1px solid var(--border-subtle);font-size:.82rem;display:flex;align-items:flex-start;gap:8px;color:var(--text-secondary);line-height:1.5}.violation-list li:before{content:"●";color:var(--ey-orange);font-size:.6rem;margin-top:2px}.gemma-text{font-size:.88rem;line-height:1.75;padding:14px 16px;background:#fdd8350a;border-left:3px solid var(--ey-orange);border-radius:0 var(--radius-md) var(--radius-md) 0;margin-top:10px;color:var(--text-secondary)}.detection-tags{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.det-tag{background:var(--blue-dim);color:var(--blue);padding:4px 12px;border-radius:var(--radius-pill);font-size:.75rem;font-weight:600;letter-spacing:.01em;transition:transform .2s}.det-tag:hover{transform:scale(1.05)}.loading-spinner{text-align:center;padding:30px;color:var(--egg-gold);font-size:.88rem}.smile-history{display:flex;align-items:flex-end;gap:3px;height:60px;margin-top:10px}.smile-history-bar{flex:1;min-width:4px;max-width:12px;border-radius:3px 3px 0 0;transition:height .4s var(--ease-out)}@media (max-width: 1024px){.cam-cards{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}@media (max-width: 900px){#app{padding:16px}.header{flex-direction:column;text-align:center;gap:8px}.header p{justify-content:center}.main-layout{grid-template-columns:1fr}.results-panel{max-height:50vh}.controls{grid-template-columns:repeat(3,1fr)}.cam-status-header{flex-direction:column;gap:10px;align-items:flex-start}}@media (max-width: 480px){.controls,.cam-cards{grid-template-columns:1fr}.btn{font-size:.68rem;padding:8px 6px}}.video-loading{position:absolute;top:0;right:0;bottom:0;left:0;background:#0f172abf;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:var(--text-primary);font-size:.85rem;font-weight:600;border-radius:inherit;transition:opacity var(--duration-normal) ease}.video-loading .loader-spinner{width:40px;height:40px;border:3.5px solid rgba(253,216,53,.08);border-radius:50%;border-top-color:var(--egg-gold);animation:ey-spin .8s cubic-bezier(.4,.15,.3,.85) infinite;box-shadow:0 0 20px #fdd83526}.btn-help{background:none;border:none;padding:4px;cursor:pointer;color:var(--text-tertiary);display:flex;align-items:center;justify-content:center;transition:all var(--duration-normal)}.btn-help:hover{color:var(--egg-gold);transform:scale(1.12)}
