:root{font-family:Segoe UI,system-ui,-apple-system,sans-serif;line-height:1.5;color:#e0e0e0;background-color:#0a0a1a;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden}#root{width:100%;height:100vh}.app-container{width:100%;height:100%;display:flex;flex-direction:column;background:#0a0a1a}.app-header{display:flex;align-items:baseline;gap:12px;padding:12px 24px;background:linear-gradient(135deg,#141428,#1a1a2e);border-bottom:1px solid rgba(100,120,200,.2);flex-shrink:0}.app-title{font-size:20px;font-weight:700;color:#c8c8ff;letter-spacing:.5px}.app-subtitle{font-size:14px;color:#88b;font-weight:400}.scene-container{flex:1;position:relative;min-height:0;background:radial-gradient(ellipse at center bottom,#1a1a3e,#0a0a1a 70%)}.canvas-wrapper{width:100%;height:100%}.canvas-wrapper canvas{display:block}.fullscreen-loading{position:fixed;inset:0;background:linear-gradient(180deg,#0a0a1a,#141428 40%,#1a1a3e);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:9999;color:#e0e0e0}.fullscreen-loading-content{text-align:center}.fullscreen-loading-title{font-size:28px;font-weight:700;color:#c8c8ff;letter-spacing:1px;margin-bottom:8px}.fullscreen-loading-sub{font-size:16px;color:#88b;margin-bottom:32px}.fullscreen-loading-dots{display:flex;gap:8px;justify-content:center;margin-bottom:20px}.fullscreen-loading-dot{width:10px;height:10px;border-radius:50%;background:#c8c8ff33;animation:dotPulse 1.5s ease-in-out infinite}.fullscreen-loading-dot:nth-child(1){animation-delay:0s}.fullscreen-loading-dot:nth-child(2){animation-delay:.2s}.fullscreen-loading-dot:nth-child(3){animation-delay:.4s}.fullscreen-loading-dot:nth-child(4){animation-delay:.6s}.fullscreen-loading-dot:nth-child(5){animation-delay:.8s}@keyframes dotPulse{0%,80%,to{background:#c8c8ff33}40%{background:#c8c8ff}}.fullscreen-loading-msg{font-size:14px;color:#88b}.flash-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#fff;pointer-events:none;opacity:0;z-index:100}.flash-overlay.active{animation:flash .5s ease-out}@keyframes flash{0%{opacity:.85}to{opacity:0}}.state-overlay{position:absolute;top:16px;left:16px;z-index:10}.state-badge{padding:6px 16px;border-radius:20px;font-size:13px;font-weight:600;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.15);transition:background 2s ease,color 2s ease,border-color 2s ease;animation:badgeFadeIn 2s ease-out}@keyframes badgeFadeIn{0%{opacity:0;transform:translateY(-4px)}30%{opacity:0}to{opacity:1;transform:translateY(0)}}.state-waiting{background:#64648c80;color:#aab}.state-watching{background:#2196f366;color:#8cf}.state-pose{background:#e91e6366;color:#f8a}.state-farewell{background:#ffb30066;color:#fd8}.state-buttonA{background:#4caf5066;color:#afa}.state-buttonB{background:#f4433666;color:#faa}.state-buttonX{background:#2196f366;color:#8cf}.state-buttonY{background:#ffb30066;color:#fd8}.state-headpat{background:#ff69b480;color:#fce}.state-idle{background:#9696aa66;color:#bbc}.hint-overlay{position:absolute;top:16px;right:16px;padding:8px 20px;background:#141428cc;border:1px solid rgba(100,120,200,.2);border-radius:20px;font-size:13px;color:#889;backdrop-filter:blur(10px);pointer-events:none;animation:fadeInHint .5s ease-out;z-index:10}@keyframes fadeInHint{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}.control-bar{padding:12px 24px;background:linear-gradient(135deg,#141428,#1a1a2e);border-top:1px solid rgba(100,120,200,.2);flex-shrink:0}.reaction-buttons{display:flex;align-items:center;justify-content:center;gap:16px}.reaction-group{display:flex;gap:8px}.reaction-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 16px;background:#282846cc;border:2px solid var(--btn-color, #666);border-radius:10px;cursor:pointer;transition:all .2s ease;min-width:72px;position:relative}.reaction-btn:hover{background:#3c3c64e6;transform:translateY(-2px);box-shadow:0 4px 12px #0006}.reaction-btn:active{transform:translateY(0)}.reaction-letter{font-size:20px;font-weight:800;color:var(--btn-color, #ccc);line-height:1}.reaction-sub{font-size:10px;color:#889;line-height:1}.reaction-key{position:absolute;top:-6px;right:-6px;padding:1px 5px;background:#141428e6;border:1px solid rgba(100,120,200,.3);border-radius:4px;font-size:10px;font-family:monospace;color:#778}.capture-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 24px;background:linear-gradient(135deg,#e91e63,#c2185b);border:2px solid #e91e63;border-radius:10px;color:#fff;cursor:pointer;transition:all .2s ease;position:relative}.capture-btn:hover{background:linear-gradient(135deg,#f44336,#e91e63);transform:translateY(-2px);box-shadow:0 4px 16px #e91e6366}.capture-btn:active{transform:translateY(0)}.capture-icon{font-size:16px;font-weight:700}.error-message{padding:16px;background:#781e1ecc;border:1px solid #a33;border-radius:8px;color:#faa;font-size:14px;margin:16px}.loading-spinner{display:flex;flex-direction:column;align-items:center;gap:12px}.spinner{width:40px;height:40px;border:3px solid rgba(100,120,200,.2);border-top-color:#6478c8;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 600px){.app-header{padding:8px 16px}.app-title{font-size:16px}.control-bar{padding:8px 12px}.reaction-group{gap:4px}.reaction-btn{padding:6px 10px;min-width:56px}.reaction-letter{font-size:16px}.capture-btn{padding:8px 16px}}
