:root{--bg:#06060e;--bg2:#0d0d1a;--bg3:#12122a;--accent:#7c3aed;--accent2:#a855f7;--accent3:#e879f9;--green:#10b981;--red:#f43f5e;--yellow:#fbbf24;--text:#f0f0ff;--text2:#a0a0c0;--border:#7c3aed40;--glow:0 0 30px #7c3aed66;--font-display:"Syne",sans-serif;--font-mono:"Space Mono",monospace}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:#06060e;background:var(--bg);color:#f0f0ff;color:var(--text);font-family:Syne,sans-serif;font-family:var(--font-display);min-height:100vh;overflow-x:hidden}body:before{background:radial-gradient(ellipse 80% 50% at 20% 10%,#7c3aed1f 0,#0000 60%),radial-gradient(ellipse 60% 40% at 80% 90%,#e879f914 0,#0000 60%);content:"";inset:0;pointer-events:none;position:fixed;z-index:0}#root{position:relative;z-index:1}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:#0d0d1a;background:var(--bg2)}::-webkit-scrollbar-thumb{background:#7c3aed;background:var(--accent);border-radius:3px}.header{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#0d0d1af2;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100}.header-inner{justify-content:space-between;margin:0 auto;max-width:1400px;padding:.9rem 2rem}.header-inner,.logo{align-items:center;display:flex}.logo{gap:.75rem}.logo-icon{align-items:center;background:linear-gradient(135deg,#7c3aed33,#e879f933);border:1px solid var(--border);border-radius:10px;display:flex;height:42px;justify-content:center;width:42px}.logo-text{display:flex;flex-direction:column;line-height:1}.logo-title{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#a855f7,#e879f9);-webkit-background-clip:text;background-clip:text;font-size:1.4rem;font-weight:800;letter-spacing:-.02em}.logo-sub{color:var(--text2);font-family:var(--font-mono);font-size:.65rem;letter-spacing:.12em;margin-top:2px;text-transform:uppercase}.header-badges{align-items:center;display:flex;gap:.6rem}.badge{border-radius:20px;font-family:var(--font-mono);font-size:.68rem;font-weight:700;letter-spacing:.05em;padding:.3rem .7rem}.badge-live{animation:pulse 2s ease-in-out infinite;background:#10b9811a;border:1px solid #10b98166;color:#10b981}.badge-ai{background:#7c3aed26;border:1px solid var(--border);color:var(--accent2)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@media (max-width:640px){.header-inner{padding:.7rem 1rem}.badge-ai{display:none}}.detector{background:var(--bg2);border:1px solid var(--border);border-radius:16px;display:flex;flex-direction:column;gap:0;overflow:hidden}.detector-header{align-items:center;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:1rem 1.25rem}.detector-title{color:var(--text2);font-size:.9rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.tracking-badge{align-items:center;background:#ffffff08;border:1px solid #ffffff1a;border-radius:20px;color:var(--text2);display:flex;font-family:var(--font-mono);font-size:.72rem;gap:.4rem;padding:.3rem .7rem;transition:all .3s}.tracking-badge.tracking{background:#10b98114;border-color:#10b9814d;color:var(--green)}.tracking-dot{background:currentColor;border-radius:50%;height:7px;width:7px}.tracking-badge.tracking .tracking-dot{animation:pulse-dot 1s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.4)}}.video-container{aspect-ratio:4/3;background:#050510;overflow:hidden;position:relative;width:100%}.video-feed{display:block;object-fit:cover}.landmark-canvas,.video-feed{height:100%;transform:scaleX(-1);width:100%}.landmark-canvas{left:0;pointer-events:none;position:absolute;top:0}.video-corner{border-color:var(--accent2);border-style:solid;height:20px;opacity:.6;position:absolute;width:20px}.video-corner.top-left{border-width:2px 0 0 2px;left:8px;top:8px}.video-corner.top-right{border-width:2px 2px 0 0;right:8px;top:8px}.video-corner.bottom-left{border-width:0 0 2px 2px;bottom:8px;left:8px}.video-corner.bottom-right{border-width:0 2px 2px 0;bottom:8px;right:8px}.overlay-message{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#06060ed9;display:flex;flex-direction:column;gap:.75rem;inset:0;justify-content:center;position:absolute}.overlay-message p{color:var(--text);font-size:1rem;font-weight:600}.overlay-message span{color:var(--text2);font-family:var(--font-mono);font-size:.75rem}.spinner{animation:spin .8s linear infinite;border:3px solid #a855f733;border-radius:50%;border-top:3px solid var(--accent2);height:36px;width:36px}@keyframes spin{to{transform:rotate(1turn)}}.error-icon{font-size:2.5rem}.overlay-message.error p{color:#f87171}.hand-guide{background:#0d0d1acc;border:1px solid var(--border);border-radius:10px;bottom:1rem;left:50%;padding:.6rem 1rem;pointer-events:none;position:absolute;text-align:center;transform:translateX(-50%)}.guide-hand{animation:wave 1.5s ease-in-out infinite;font-size:1.8rem}@keyframes wave{0%,to{transform:rotate(0deg)}25%{transform:rotate(-15deg)}75%{transform:rotate(15deg)}}.hand-guide p{color:var(--text2);font-size:.75rem;margin-top:.2rem}.detector-tips{border-top:1px solid var(--border);display:flex;gap:0}.tip{border-right:1px solid var(--border);color:var(--text2);flex:1 1;font-family:var(--font-mono);font-size:.72rem;padding:.7rem .8rem;text-align:center}.tip:last-child{border-right:none}@media (max-width:640px){.detector-tips{flex-direction:column}.tip{border-bottom:1px solid var(--border);border-right:none}.tip:last-child{border-bottom:none}}.result-panel{display:flex;flex-direction:column;gap:1rem;height:100%}.result-card{background:var(--bg2);border:1px solid var(--border);border-radius:14px;overflow:hidden}.card-label{background:#ffffff05;border-bottom:1px solid var(--border);color:var(--text2);font-family:var(--font-mono);font-size:.68rem;font-weight:700;justify-content:space-between;letter-spacing:.12em;padding:.75rem 1rem}.card-label,.sign-display{align-items:center;display:flex}.sign-display{flex-direction:column;gap:.6rem;justify-content:center;min-height:120px;padding:1.25rem;text-align:center;transition:all .3s}.sign-display.pop{animation:popIn .35s cubic-bezier(.34,1.56,.64,1)}@keyframes popIn{0%{opacity:.5;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.sign-letter{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#a855f7,#e879f9);-webkit-background-clip:text;background-clip:text;font-size:2.8rem;font-weight:800;letter-spacing:-.02em;line-height:1}.sign-description{color:var(--text2);font-size:.82rem;line-height:1.5;max-width:260px;text-align:center}.confidence-bar{margin-top:.4rem;width:100%}.conf-label{color:var(--text2);display:flex;font-family:var(--font-mono);font-size:.65rem;justify-content:space-between;margin-bottom:.3rem}.conf-track{background:#ffffff14;border-radius:2px;height:4px;overflow:hidden}.conf-fill{background:linear-gradient(90deg,var(--accent),var(--accent3));border-radius:2px;height:100%;transition:width .4s ease}.no-sign{align-items:center;color:var(--text2);display:flex;flex-direction:column;gap:.5rem}.no-sign-icon{animation:float 3s ease-in-out infinite;font-size:2rem;opacity:.4}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.no-sign p{font-size:.85rem}.sentence-display{display:flex;flex-direction:column;gap:.75rem;min-height:80px;padding:1rem}.sentence-text{color:var(--text);font-size:1.5rem;font-weight:700;letter-spacing:.05em;word-break:break-all}.sentence-chars{display:flex;flex-wrap:wrap;gap:.3rem}.char-bubble{background:#7c3aed33;border:1px solid #7c3aed66;border-radius:6px;color:var(--accent2);font-family:var(--font-mono);font-size:.75rem;font-weight:700;padding:.2rem .5rem}.sentence-empty{align-items:center;display:flex;flex-direction:column;gap:.3rem;justify-content:center;padding:1rem;text-align:center}.sentence-empty p{color:var(--text2);font-size:.85rem}.sentence-empty span{color:#a0a0c080;font-family:var(--font-mono);font-size:.72rem}.add-btn{background:linear-gradient(135deg,var(--accent),#9333ea);border:none;color:#fff;cursor:pointer;font-family:var(--font-display);font-size:.85rem;font-weight:700;letter-spacing:.02em;padding:.75rem;transition:all .2s;width:100%}.add-btn:hover:not(:disabled){filter:brightness(1.15)}.add-btn:disabled{cursor:not-allowed;opacity:.4}.clear-btn{background:#f43f5e1a;border:1px solid #f43f5e4d;border-radius:4px;color:#f43f5e;cursor:pointer;font-family:var(--font-mono);font-size:.65rem;font-weight:700;padding:.2rem .6rem;transition:all .2s}.clear-btn:hover:not(:disabled){background:#f43f5e33}.clear-btn:disabled{cursor:not-allowed;opacity:.3}.ref-grid{grid-gap:0;display:grid;gap:0;grid-template-columns:repeat(4,1fr)}.ref-item{align-items:center;border-bottom:1px solid var(--border);border-right:1px solid var(--border);cursor:default;display:flex;flex-direction:column;gap:.25rem;padding:.75rem .5rem;transition:background .2s}.ref-item:nth-child(4n){border-right:none}.ref-item:nth-child(n+5){border-bottom:none}.ref-item:hover{background:#ffffff08}.ref-emoji{font-size:1.4rem}.ref-label{color:var(--text2);font-family:var(--font-mono);font-size:.62rem}.dictionary{margin:0 auto;max-width:1400px;padding:1.5rem 2rem;width:100%}.dict-controls{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1rem}.dict-search{flex:1 1;min-width:200px;position:relative}.search-icon{font-size:.9rem;left:.75rem;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.search-input{background:var(--bg2);border:1px solid var(--border);border-radius:8px;color:var(--text);font-family:var(--font-display);font-size:.9rem;outline:none;padding:.65rem .75rem .65rem 2.2rem;transition:border-color .2s;width:100%}.search-input:focus{border-color:var(--accent2)}.search-input::placeholder{color:var(--text2);opacity:.6}.dict-filters{display:flex;gap:.4rem}.filter-btn{background:var(--bg2);border:1px solid var(--border);border-radius:8px;color:var(--text2);cursor:pointer;font-family:var(--font-display);font-size:.8rem;font-weight:600;padding:.55rem 1rem;transition:all .2s}.filter-btn.active,.filter-btn:hover{background:#7c3aed26;border-color:var(--accent);color:var(--accent2)}.dict-count{color:var(--text2);font-family:var(--font-mono);font-size:.72rem;letter-spacing:.05em;margin-bottom:1rem}.signs-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.sign-card{align-items:center;background:var(--bg2);border:1px solid var(--border);border-radius:12px;cursor:default;display:flex;flex-direction:column;gap:.5rem;overflow:hidden;padding:1.25rem 1rem;position:relative;text-align:center;transition:all .25s}.sign-card:before{background:linear-gradient(135deg,#7c3aed0d,#0000);content:"";inset:0;opacity:0;position:absolute;transition:opacity .25s}.sign-card:hover{border-color:#a855f780;box-shadow:0 8px 24px #7c3aed26;transform:translateY(-2px)}.sign-card:hover:before{opacity:1}.sign-card-emoji{font-size:2.5rem;line-height:1}.sign-card-letter{color:var(--accent2);font-size:1.1rem;font-weight:800;letter-spacing:-.01em}.sign-card-desc{color:var(--text2);font-size:.72rem;line-height:1.4}.sign-card-cat{border-radius:4px;font-family:var(--font-mono);font-size:.6rem;font-weight:700;letter-spacing:.08em;margin-top:.2rem;padding:.2rem .5rem;text-transform:uppercase}.sign-card-cat.alphabet{background:#7c3aed26;border:1px solid #7c3aed4d;color:var(--accent2)}.sign-card-cat.expression{background:#10b9811a;border:1px solid #10b9814d;color:var(--green)}@media (max-width:640px){.dictionary{padding:1rem}.signs-grid{gap:.75rem;grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}}.app{display:flex;flex-direction:column;min-height:100vh}.tab-nav{background:var(--bg2);border-bottom:1px solid var(--border);display:flex;gap:0;padding:0 2rem}.tab-btn{align-items:center;background:none;border:none;color:var(--text2);cursor:pointer;display:flex;font-family:var(--font-display);font-size:.9rem;font-weight:600;gap:.5rem;letter-spacing:.03em;padding:1rem 1.5rem;position:relative;transition:color .2s}.tab-btn:after{background:var(--accent2);bottom:-1px;content:"";height:2px;left:0;position:absolute;right:0;transform:scaleX(0);transition:transform .2s}.tab-btn.active{color:var(--accent2)}.tab-btn.active:after{transform:scaleX(1)}.tab-btn:hover{color:var(--text)}.tab-icon{font-size:1rem}.main-layout{grid-gap:1.5rem;display:grid;flex:1 1;gap:1.5rem;grid-template-columns:1fr 380px;margin:0 auto;max-width:1400px;padding:1.5rem 2rem;width:100%}@media (max-width:1024px){.main-layout{grid-template-columns:1fr;padding:1rem}}@media (max-width:640px){.tab-nav{padding:0 1rem}.tab-btn{font-size:.8rem;padding:.8rem 1rem}}
/*# sourceMappingURL=main.fef434d2.css.map*/