*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;background:#000;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}#app{width:100%;height:100%;position:relative}#canvas{width:100%;height:100%;display:block;touch-action:none}#character-panel{position:absolute;bottom:0;left:0;right:0;background:#140a1ef2;border-radius:20px 20px 0 0;transform:translateY(100%);transition:transform .3s ease-out;z-index:100;max-height:70vh;overflow-y:auto;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}#character-panel.visible{transform:translateY(0)}#character-panel.hidden{transform:translateY(100%)}.panel-handle{width:40px;height:4px;background:#ffffff4d;border-radius:2px;margin:12px auto;cursor:grab}.panel-content{padding:0 20px 30px}.panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:10px;border-bottom:1px solid rgba(255,255,255,.1)}.panel-title{color:#fff;font-family:system-ui,-apple-system,sans-serif;font-size:1.2rem;font-weight:600}.panel-time{color:#ffffff80;font-family:system-ui,-apple-system,sans-serif;font-size:.9rem}.panel-section{margin-bottom:20px}.section-title{color:#fff9;font-family:system-ui,-apple-system,sans-serif;font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;margin-bottom:10px}.phase-bars{display:flex;flex-direction:column;gap:8px}.phase-row{display:flex;align-items:center;gap:10px}.phase-label{width:80px;color:#ffffffb3;font-family:system-ui,-apple-system,sans-serif;font-size:.8rem}.phase-bar{flex:1;height:8px;background:#ffffff1a;border-radius:4px;overflow:hidden}.phase-fill{height:100%;border-radius:4px;transition:width .5s ease-out}.phase-fill.peace{background:linear-gradient(90deg,#4a9eff,#7eb8ff)}.phase-fill.listening{background:linear-gradient(90deg,#9b59b6,#c39bd3)}.phase-fill.tension{background:linear-gradient(90deg,#f39c12,#f5b041)}.phase-fill.bleeding{background:linear-gradient(90deg,#e74c3c,#ec7063)}.phase-fill.trauma{background:linear-gradient(90deg,#8b0000,#b22222)}.phase-fill.healing{background:linear-gradient(90deg,#2ecc71,#58d68d)}.phase-value{width:40px;text-align:right;color:#ffffff80;font-family:system-ui,-apple-system,sans-serif;font-size:.75rem}.trust-bar{position:relative;height:12px;background:#ffffff1a;border-radius:6px;overflow:hidden}.trust-fill{height:100%;background:linear-gradient(90deg,#8b5cf6,#a78bfa);border-radius:6px;transition:width .5s ease-out}.trust-value{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:#fff;font-family:system-ui,-apple-system,sans-serif;font-size:.7rem;font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.5)}.gesture-stats{display:flex;flex-wrap:wrap;gap:8px}.gesture-tag{background:#ffffff1a;padding:6px 12px;border-radius:20px;color:#ffffffb3;font-family:system-ui,-apple-system,sans-serif;font-size:.75rem}.gesture-tag.dominant{background:#8b5cf64d;color:#a78bfa}#swipe-hint{position:absolute;bottom:10px;left:50%;transform:translate(-50%);z-index:50;opacity:.5;transition:opacity .3s}#swipe-hint.hidden{opacity:0;pointer-events:none}.hint-line{width:40px;height:4px;background:#ffffff4d;border-radius:2px}#customization-panel{position:absolute;bottom:0;left:0;right:0;background:#140a1ef2;border-radius:20px 20px 0 0;transform:translateY(100%);transition:transform .3s ease-out;z-index:100;max-height:70vh;overflow-y:auto;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}#customization-panel.visible{transform:translateY(0)}#customization-panel.hidden{transform:translateY(100%)}.slider-row{display:flex;align-items:center;gap:12px;margin-bottom:12px}.slider-label{width:80px;color:#ffffffb3;font-family:system-ui,-apple-system,sans-serif;font-size:.8rem;flex-shrink:0}.slider{flex:1;height:8px;-moz-appearance:none;appearance:none;-webkit-appearance:none;background:#ffffff26;border-radius:4px;outline:none;cursor:pointer}.slider::-webkit-slider-thumb{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:20px;height:20px;background:linear-gradient(135deg,#8b5cf6,#a78bfa);border-radius:50%;cursor:pointer;box-shadow:0 2px 6px #8b5cf666;transition:transform .15s,box-shadow .15s}.slider::-webkit-slider-thumb:hover{transform:scale(1.15);box-shadow:0 3px 10px #8b5cf699}.slider::-moz-range-thumb{width:20px;height:20px;background:linear-gradient(135deg,#8b5cf6,#a78bfa);border-radius:50%;cursor:pointer;border:none;box-shadow:0 2px 6px #8b5cf666}.slider-value{width:50px;text-align:right;color:#fff9;font-family:system-ui,-apple-system,sans-serif;font-size:.75rem;flex-shrink:0}.checkbox-row{margin-top:8px}.checkbox{width:20px;height:20px;accent-color:#8b5cf6;cursor:pointer}.reset-btn{padding:6px 12px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#ffffffb3;font-family:system-ui,-apple-system,sans-serif;font-size:.75rem;cursor:pointer;transition:background .15s,color .15s}.reset-btn:hover{background:#ffffff26;color:#fff}.reset-btn:active{background:#fff3}#sound-debug{position:absolute;top:70px;left:10px;background:#000c;border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:10px;z-index:200;font-family:monospace;font-size:11px;min-width:140px}#sound-debug.hidden{display:none}.debug-title{color:#0f0;margin-bottom:8px;font-weight:700;text-transform:uppercase;letter-spacing:1px}.lfo-bars{display:flex;flex-direction:column;gap:4px}.lfo-row{display:flex;align-items:center;gap:6px}.lfo-row span{color:#fff9;width:50px;font-size:10px}.lfo-bar{flex:1;height:8px;background:#ffffff1a;border-radius:4px;overflow:hidden}.lfo-fill{height:100%;background:#0f0;border-radius:4px;transition:width .05s linear}#lfo-ocean .lfo-fill,#lfo-ocean{background:#00bcd4}#lfo-breath .lfo-fill,#lfo-breath{background:#4caf50}#lfo-pulse .lfo-fill,#lfo-pulse{background:#ff9800}#lfo-shimmer .lfo-fill,#lfo-shimmer{background:#e91e63}#lfo-drift .lfo-fill,#lfo-drift{background:#9c27b0}.lfo-bar{background:#ffffff1a!important}.debug-status{margin-top:8px;padding-top:6px;border-top:1px solid rgba(255,255,255,.1);color:#888;text-align:center}.debug-status.playing{color:#0f0}.emotion-fill{background:linear-gradient(90deg,#ff6b6b,#ffd93d)!important}.tension-fill{background:linear-gradient(90deg,#4ecdc4,#ff6b6b,#c44569)!important}.glitch-fill{background:linear-gradient(90deg,#6c5ce7,#fd79a8,#e17055)!important}.glitch-bar{position:relative}.threshold-mark{position:absolute;left:35%;top:0;width:2px;height:100%;background:#fff;opacity:.8}.emo-val{color:#fffc;font-size:9px;width:28px;text-align:right}#glitch-status{font-size:10px}#glitch-status.active{color:#fd79a8;animation:glitch-pulse .3s ease infinite}@keyframes glitch-pulse{0%,to{opacity:1}50%{opacity:.5}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.ui-layer{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:250;opacity:0;transition:opacity .5s ease}.ui-layer.visible{opacity:1}.ui-layer>*{pointer-events:auto}.ui-top-left{position:absolute;top:calc(16px + env(safe-area-inset-top,0px));left:16px;display:flex;align-items:center;gap:8px}.ui-top-right{position:absolute;top:calc(16px + env(safe-area-inset-top,0px));right:16px}.ui-bottom-center{position:absolute;bottom:80px;left:50%;transform:translate(-50%)}.registration-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:450;display:flex;align-items:center;justify-content:center;padding:20px;background:#0000008c;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.registration-card{width:min(420px,92vw);border-radius:16px;padding:18px 16px 16px;border:1px solid rgba(255,255,255,.12);background:#ffffff0f;box-shadow:0 18px 60px #00000059;position:relative}.registration-title{font-size:18px;letter-spacing:.02em;color:#ffffffeb;margin-bottom:8px}.registration-text{font-size:13px;line-height:1.35;color:#ffffffb8;margin-bottom:10px}.registration-hint{font-size:12px;line-height:1.3;color:#ffffffa6;margin-bottom:10px}.registration-actions{display:flex;flex-direction:column;gap:10px;margin-top:8px}.registration-primary,.registration-secondary,.registration-ghost{height:44px;border-radius:12px;border:1px solid rgba(255,255,255,.14);background:#ffffff14;color:#ffffffe6;cursor:pointer}.registration-primary{background:#ffffff24}.registration-ghost{background:transparent;border-color:#ffffff1a;color:#ffffffb8}.registration-primary:disabled,.registration-secondary:disabled,.registration-ghost:disabled{opacity:.45;cursor:not-allowed}.registration-link{margin-top:12px;width:100%;background:transparent;border:0;color:#ffffffbf;text-decoration:underline;cursor:pointer}.registration-back{position:absolute;top:10px;right:12px;border:0;background:transparent;color:#fff9;cursor:pointer;padding:6px}.registration-input{width:100%;height:44px;border-radius:12px;border:1px solid rgba(255,255,255,.12);background:#00000040;color:#ffffffd9;padding:0 12px;outline:none}.registration-input::placeholder{color:#ffffff73}.glass-button{width:44px;height:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;outline:none;background:#ffffff14;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.12);border-radius:12px;transition:opacity .2s,transform .15s,background .2s}.glass-button:hover{background:#ffffff1f}.glass-button:active{opacity:.7;transform:scale(.95)}.glass-button:focus-visible{outline:2px solid rgba(255,255,255,.4);outline-offset:2px}.glass-button svg{width:20px;height:20px;fill:#ffffffe6}.settings-modal{position:fixed;top:calc(56px + env(safe-area-inset-top,0px));right:16px;min-width:100px;z-index:260;background:#000c;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.08);border-radius:10px;opacity:0;transform:translateY(-8px) scale(.95);pointer-events:none;transition:opacity .15s ease,transform .15s ease}.settings-modal.visible{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}.modal-items{padding:4px}.modal-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:6px;cursor:pointer;transition:background .1s}.modal-item:active{background:#ffffff1a}.modal-item svg{width:14px;height:14px;fill:#ffffff80;flex-shrink:0}.modal-item span{color:#fffc;font-family:system-ui,-apple-system,sans-serif;font-size:11px;font-weight:500;letter-spacing:.02em}.modal-item-toggle{justify-content:flex-start}.toggle-indicator{margin-left:auto;color:#fff6;font-size:9px;text-transform:uppercase}.modal-view{padding:12px;text-align:center;position:relative}.view-title{color:#ffffffe6;font-family:system-ui,-apple-system,sans-serif;font-size:12px;font-weight:600;letter-spacing:.1em}.view-sub{color:#fff6;font-size:9px;margin-top:2px}.view-text{color:#ffffff80;font-size:10px;margin:2px 0}.view-back{position:absolute;top:8px;left:8px;color:#fff6;font-size:12px;cursor:pointer;padding:4px}.view-back:active{color:#fffc}.export-textarea{width:100%;min-height:160px;margin-top:8px;padding:8px;resize:none;border-radius:8px;border:1px solid rgba(255,255,255,.08);background:#00000059;color:#ffffffbf;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:10px;line-height:1.4}.entity-switcher{width:48px;height:48px;border-radius:14px}.entity-switcher svg{width:24px;height:24px}.entity-switcher.has-new-entity{animation:entity-glow 2s ease-in-out infinite}@keyframes entity-glow{0%,to{box-shadow:0 0 #8b5cf600}50%{box-shadow:0 0 20px 4px #8b5cf680}}.entity-switcher.reveal{animation:entityReveal .5s ease-out}@keyframes entityReveal{0%{transform:scale(0);opacity:0}60%{transform:scale(1.2);opacity:1}to{transform:scale(1);opacity:1}}.entity-switcher-container{display:flex;flex-direction:column;align-items:center;gap:20px}.orbital-toggle{width:32px;height:32px;border-radius:10px;opacity:.5;transition:opacity .2s,transform .15s,background .2s,box-shadow .3s}.orbital-toggle svg{width:16px;height:16px}.orbital-toggle:hover{opacity:.7}.orbital-toggle.active{opacity:1;background:#8b5cf640;box-shadow:0 0 12px 2px #8b5cf666}.orbital-toggle.active svg{fill:#c8b4ff}.orbital-toggle.reveal{animation:orbitalReveal .5s ease-out}@keyframes orbitalReveal{0%{transform:scale(0) translateY(-10px);opacity:0}60%{transform:scale(1.3) translateY(0);opacity:.8}to{transform:scale(1) translateY(0);opacity:.5}}.entity-wrapper{position:relative;width:64px;min-height:64px;overflow:visible}.entity-wrapper .entity-switcher,.entity-wrapper .entity-switcher-container{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.emotion-ring{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;pointer-events:none;transition:opacity .3s ease;background:conic-gradient(from 0deg,var(--ring-color),transparent 30%,var(--ring-color) 60%,transparent 90%);mask:radial-gradient(circle,transparent 22px,black 23px,black 31px,transparent 32px);-webkit-mask:radial-gradient(circle,transparent 22px,black 23px,black 31px,transparent 32px)}@supports not (background: conic-gradient(red,blue)){.emotion-ring{background:transparent;border:3px solid var(--ring-color);mask:none;-webkit-mask:none}}.emotion-ring.emotion-peace{--ring-color: #00d4ff;animation:ring-rotate 3s linear infinite}.emotion-ring.emotion-tension{--ring-color: #ff6b35;animation:ring-pulse .8s ease-in-out infinite}.emotion-ring.emotion-trauma{--ring-color: #ff2d55;animation:ring-shake .3s ease-in-out infinite,ring-flicker .15s steps(2) infinite}.emotion-ring.emotion-healing{--ring-color: #34c759;animation:ring-heal 2s ease-in-out infinite;box-shadow:0 0 12px var(--ring-color)}@keyframes ring-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes ring-pulse{0%,to{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.05)}}@keyframes ring-shake{0%,to{transform:translate(0)}25%{transform:translate(-2px)}75%{transform:translate(2px)}}@keyframes ring-flicker{0%{opacity:1}50%{opacity:.4}}@keyframes ring-heal{0%,to{opacity:.7;transform:scale(1);box-shadow:0 0 8px var(--ring-color)}50%{opacity:1;transform:scale(1.03);box-shadow:0 0 16px var(--ring-color)}}@media (prefers-reduced-motion: reduce){.glass-button,.ui-layer,.settings-modal{transition:none}.entity-switcher.has-new-entity{animation:none;box-shadow:0 0 0 2px #8b5cf680}.emotion-ring{animation:ring-pulse-simple 2s ease-in-out infinite!important}@keyframes ring-pulse-simple{0%,to{opacity:.5}50%{opacity:1}}}.toast{position:fixed;top:calc(20px + env(safe-area-inset-top,0px));left:50%;transform:translate(-50%) translateY(-100px);z-index:1000;display:flex;align-items:center;gap:10px;padding:12px 20px;max-width:calc(100vw - 40px);background:#ffffff1a;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.15);border-radius:12px;color:#ffffffe6;font-family:system-ui,-apple-system,sans-serif;font-size:14px;text-align:center;opacity:0;transition:transform .3s ease,opacity .3s ease;pointer-events:none}.toast.visible{transform:translate(-50%) translateY(0);opacity:1;pointer-events:auto}.toast-message{line-height:1.35}.toast-action{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid rgba(196,181,253,.45);background:#8b5cf63d;color:#f3edff;font-family:inherit;font-size:13px;font-weight:600;line-height:1;border-radius:999px;padding:7px 12px;cursor:pointer}.toast-action:hover{background:#8b5cf657}.toast-action:active{transform:translateY(1px)}.toast.error{background:#e74c3c33;border-color:#e74c3c66;color:#ff8a80}.toast.info{background:#8b5cf633;border-color:#8b5cf666;color:#c4b5fd}body.embed-mode #ui-layer,body.embed-mode #character-panel,body.embed-mode #customization-panel,body.embed-mode #swipe-hint,body.embed-mode #sound-debug,body.embed-mode .settings-overlay,body.embed-mode .discovery-ui{display:none!important;visibility:hidden!important;opacity:0!important;pointer-events:none!important}.discovery-ui{position:fixed;bottom:20px;right:20px;font-family:SF Mono,Monaco,Inconsolata,monospace;font-size:13px;font-weight:500;color:#ffffff59;pointer-events:none;z-index:90;transition:color .3s ease,transform .2s ease,text-shadow .3s ease}.discovery-ui.hidden{display:none}.discovery-ui.pulse{animation:discoveryPulse .4s ease-out}@keyframes discoveryPulse{0%{transform:scale(1);color:#ffffff59}50%{transform:scale(1.3);color:#ffffffe6}to{transform:scale(1);color:#ffffff59}}.discovery-ui.complete{color:#78ffb4b3}.discovery-ui.celebrate{animation:discoveryCelebrate .8s ease-out;text-shadow:0 0 12px rgba(120,255,180,.6)}@keyframes discoveryCelebrate{0%{transform:scale(1)}25%{transform:scale(1.5)}50%{transform:scale(1.2)}75%{transform:scale(1.4)}to{transform:scale(1)}}.discovery-toast{position:fixed;bottom:50px;right:20px;font-family:SF Mono,Monaco,Inconsolata,monospace;font-size:18px;font-weight:500;letter-spacing:.05em;color:#ffffffe6;text-shadow:0 0 10px rgba(255,255,255,.4);pointer-events:none;z-index:90;opacity:0;transform:translate(20px,20px);transition:opacity .4s ease-out,transform .4s ease-out}.discovery-toast.hidden{display:none}.discovery-toast.visible{opacity:1;transform:translate(0)}.discovery-toast.fade-out{opacity:0;transform:translate(-15px,-15px)}.discovery-gift{position:fixed;bottom:50px;right:20px;font-family:SF Mono,Monaco,Inconsolata,monospace;font-size:18px;font-weight:500;letter-spacing:.05em;color:#ffffffe6;text-shadow:0 0 10px rgba(255,255,255,.4);pointer-events:auto;cursor:pointer;z-index:91;opacity:0;transform:rotate(0);transition:opacity .4s ease-out,transform .2s ease}.discovery-gift.hidden{display:none}.discovery-gift.visible{display:block;opacity:1;animation:giftWobble 3s ease-in-out infinite}.discovery-gift:hover{transform:scale(1.15) rotate(0);text-shadow:0 0 15px rgba(255,255,255,.6);animation-play-state:paused}@keyframes giftWobble{0%,to{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}body.embed-mode .discovery-gift,body.embed-mode .discovery-toast{display:none!important}.embed-badge{position:fixed;right:12px;bottom:12px;z-index:1000;display:inline-flex;align-items:baseline;gap:6px;padding:7px 10px;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,"Apple Color Emoji","Segoe UI Emoji";font-size:12px;font-weight:500;letter-spacing:.02em;color:#fffc;text-decoration:none;background:#0000004d;border:1px solid rgba(255,255,255,.12);border-radius:999px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:background .15s ease,border-color .15s ease,color .15s ease}.embed-badge:hover{background:#0000006b;border-color:#ffffff2e;color:#ffffffeb}.embed-badge__mark{opacity:.9}.embed-badge__expand{display:inline-block;max-width:0;opacity:0;overflow:hidden;white-space:nowrap;margin-left:0;transition:max-width .18s ease,opacity .12s ease,margin-left .18s ease}.embed-badge:hover .embed-badge__expand{max-width:160px;opacity:.9;margin-left:2px}
