:root{--bg:#14201a;--panel-bg:#1b2a22;--panel-border:#2f4636;--accent:#6fd6c4;--accent-warm:#f6d27a;--text:#eaf3ee;--text-dim:#a9c2b4;font-family:Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);margin:0;overflow:hidden}#app{width:100vw;height:100vh;display:flex}#loading-overlay{z-index:999;background:var(--bg);color:var(--accent);letter-spacing:.02em;justify-content:center;align-items:center;font-size:15px;font-weight:600;transition:opacity .4s;display:flex;position:fixed;inset:0}.hidden{display:none!important}#loading-overlay.hidden{opacity:0;pointer-events:none}#scene-container{flex:auto;min-width:0;position:relative;overflow:hidden}#scene-canvas{width:100%;height:100%;display:block}#hint-bar{border:1px solid var(--panel-border);color:var(--text-dim);pointer-events:none;background:#0a120eb8;border-radius:999px;gap:18px;padding:8px 18px;font-size:13px;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%)}#hint-bar strong{color:var(--accent-warm)}#autonomous-indicator{color:#fff;font-family:var(--font-primary);letter-spacing:.1em;text-shadow:0 1px 2px #00000080;pointer-events:none;z-index:200;background:#ff3c3cd9;border-radius:4px;padding:8px 24px;font-size:1.1rem;font-weight:700;animation:2s infinite pulse;position:absolute;top:0;left:50%;transform:translate(-50%);box-shadow:0 4px 12px #ff3c3c4d}#needs-panel{border:1px solid var(--panel-border);pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0a120eb8;border-radius:8px;flex-direction:column;gap:8px;padding:12px;display:flex;position:absolute;top:200px;left:14px}.need-row{align-items:center;gap:12px;display:flex}.need-label{width:70px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;font-size:11px}.need-bar-bg{background:#ffffff1a;border-radius:4px;width:120px;height:8px;overflow:hidden}.need-bar-fg{width:0%;height:100%;transition:width .3s ease-out}.need-bar-fg.hunger{background:#ff5c5c}.need-bar-fg.curiosity{background:#5c8aff}.need-bar-fg.tiredness{background:#a85cff}@keyframes pulse{0%{opacity:.8;box-shadow:0 0 #ff3c3c66}70%{opacity:1;box-shadow:0 0 0 10px #ff3c3c00}to{opacity:.8;box-shadow:0 0 #ff3c3c00}}#achievement-stack{pointer-events:none;z-index:4;flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;top:62px;left:50%;transform:translate(-50%)}.achievement-item{border:1px solid var(--accent);color:var(--accent-warm);letter-spacing:.01em;white-space:nowrap;background:#0a1611eb;border-radius:10px;padding:8px 18px;font-size:13px;font-weight:700;animation:.35s cubic-bezier(.2,.9,.2,1) forwards achievementIn}.achievement-item:before{content:"✦ "}.achievement-item.leaving{animation:.4s ease-in forwards achievementOut}@keyframes achievementIn{0%{opacity:0;transform:scale(.85)translateY(-6px)}60%{opacity:1;transform:scale(1.05)translateY(0)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes achievementOut{0%{opacity:1;max-height:40px;margin-bottom:6px;transform:scale(1)translateY(0)}to{opacity:0;max-height:0;margin-bottom:0;transform:scale(.9)translateY(-4px)}}#speech-bubble{border:1px solid var(--panel-border);opacity:0;pointer-events:none;background:#14201af0;border-radius:12px;max-width:480px;padding:14px 18px;transition:opacity .25s,transform .25s;position:absolute;bottom:28px;left:50%;transform:translate(-50%,12px)}#speech-bubble.visible{opacity:1;transform:translate(-50%)}#speech-name{text-transform:uppercase;letter-spacing:.06em;color:var(--accent-warm);margin-bottom:4px;font-size:12px;font-weight:700}#speech-text{font-size:15px;line-height:1.4}#toast{border:1px solid var(--panel-border);color:var(--text-dim);opacity:0;pointer-events:none;background:#14201af0;border-radius:8px;max-width:320px;padding:10px 16px;font-size:13px;transition:opacity .25s;position:absolute;bottom:28px;right:28px}#toast.visible{opacity:1}#journal-panel{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-left:1px solid var(--panel-border);z-index:100;background:#1b2a22d9;flex-direction:column;width:340px;padding:18px;display:flex;position:absolute;top:0;bottom:0;right:0;overflow:hidden}#journal-header{border-bottom:1px solid var(--panel-border);flex-direction:column;gap:4px;margin-bottom:10px;padding-bottom:12px;display:flex}#journal-header h1{color:var(--accent-warm);margin:0;font-size:17px}#journal-count-wrap{color:var(--text-dim);font-size:12px}#journal-tabs{gap:4px;margin-bottom:10px;display:flex}.journal-tab{border:1px solid var(--panel-border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:6px;flex:auto;padding:6px 4px;font-size:11px;transition:background .15s,color .15s}.journal-tab:hover{background:#6fd6c414}.journal-tab.active{color:var(--accent);border-color:var(--accent);background:#6fd6c42e;font-weight:600}#journal-content{flex:auto;overflow-y:auto}#journal-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.journal-entry{border:1px solid var(--panel-border);background:#6fd6c40f;border-radius:8px;padding:8px 10px;animation:.3s entryIn}@keyframes entryIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.journal-entry-text{text-transform:capitalize;font-size:13px;line-height:1.35}.journal-entry-meta{color:var(--text-dim);text-transform:none;margin-top:3px;font-size:11px}#journal-content pre.turtle-view{color:var(--text);white-space:pre-wrap;margin:0;font-family:Cascadia Code,Fira Code,Consolas,monospace;font-size:12px;line-height:1.6;animation:.3s entryIn}.turtle-subject{color:var(--accent-warm)}.turtle-keyword{color:#8fb8e6}.natural-block{border:1px solid var(--panel-border);background:#6fd6c40f;border-radius:8px;margin:0 0 12px;padding:8px 10px;font-size:13px;line-height:1.6;animation:.3s entryIn}.natural-subject{color:var(--accent-warm);font-weight:700}#graph-svg{width:100%;height:100%;min-height:320px}#graph-svg text{fill:var(--text);font-size:9px}#graph-svg .graph-node circle{fill:#6fd6c440;stroke:var(--accent);stroke-width:1px}#graph-svg .graph-edge{stroke:var(--panel-border);stroke-width:1px}#graph-svg .graph-edge-label{fill:var(--text-dim);font-size:8px}#graph-svg .graph-prop-label{fill:var(--accent-warm);opacity:.85;font-size:8px}.journal-empty{color:var(--text-dim);padding:10px 0;font-size:12px}#log-toggle-btn{border:1px solid var(--panel-border);color:var(--text-dim);cursor:pointer;z-index:110;background:#0a120eb8;border-radius:999px;padding:7px 14px;font-size:13px;position:absolute;top:14px;right:14px}#log-toggle-btn:hover{color:var(--accent);border-color:var(--accent)}#journal-toggle-btn{border:1px solid var(--panel-border);color:var(--text-dim);cursor:pointer;z-index:110;background:#0a120eb8;border-radius:999px;padding:7px 14px;font-size:13px;position:absolute;top:14px;right:186px}#journal-toggle-btn:hover{color:var(--accent);border-color:var(--accent)}#voice-toggle-btn{border:1px solid var(--panel-border);color:var(--text-dim);cursor:pointer;z-index:110;background:#0a120eb8;border-radius:999px;padding:7px 14px;font-size:13px;position:absolute;top:14px;right:100px}#voice-toggle-btn:hover{color:var(--accent);border-color:var(--accent)}#voice-toggle-btn.muted{color:#d98c6a;opacity:.75;border-color:#d98c6a}#conversation-log{border-left:1px solid var(--panel-border);z-index:5;background:#0e1813f7;flex-direction:column;width:320px;height:100%;transition:transform .25s;display:flex;position:absolute;top:0;right:0;transform:translate(100%)}#conversation-log.visible{transform:translate(0)}#conversation-log-header{border-bottom:1px solid var(--panel-border);color:var(--accent-warm);justify-content:space-between;align-items:center;padding:14px 16px;font-size:14px;font-weight:700;display:flex}#log-close-btn{color:var(--text-dim);cursor:pointer;background:0 0;border:none;font-size:15px}#conversation-log-list{flex-direction:column;flex:auto;gap:10px;margin:0;padding:12px 16px;list-style:none;display:flex;overflow-y:auto}.log-entry-speaker{text-transform:uppercase;letter-spacing:.05em;color:var(--accent);margin-bottom:2px;font-size:11px;font-weight:700}.log-entry-line{font-size:13px;line-height:1.4}.log-empty{color:var(--text-dim);font-size:12px}#journal-footer{color:var(--text-dim);border-top:1px solid var(--panel-border);margin:10px 0 0;padding-top:10px;font-size:11.5px;line-height:1.4}.notes-container{flex-direction:column;gap:10px;display:flex}.note-card{border:1px solid var(--panel-border);background:#6fd6c40f;border-radius:8px;padding:10px 12px;animation:.3s entryIn}.note-textarea{border:1px solid var(--panel-border);width:100%;min-height:54px;color:var(--text);resize:vertical;background:#0a120e80;border-radius:6px;outline:none;padding:8px 10px;font-family:inherit;font-size:12.5px;line-height:1.45;transition:border-color .15s}.note-textarea:focus{border-color:var(--accent)}.note-textarea::placeholder{color:var(--text-dim);opacity:.6}.note-facts{flex-direction:column;gap:4px;margin:8px 0 0;padding:0;list-style:none;display:flex}.note-fact-item{color:var(--text);background:#6fd6c414;border-radius:5px;align-items:center;gap:6px;padding:4px 8px;font-size:12px;display:flex}.note-fact-text{text-transform:capitalize;flex:auto}.note-fact-source{color:var(--accent);opacity:.7;white-space:nowrap;font-size:10px}.note-remove-btn{color:#d98c6a;cursor:pointer;opacity:.7;background:0 0;border:none;flex:none;padding:0 2px;font-size:13px;line-height:1;transition:opacity .15s}.note-remove-btn:hover{opacity:1}.note-extract-form{align-items:flex-end;gap:4px;margin-top:8px;display:flex}.note-extract-field{flex-direction:column;flex:1 1 0;min-width:0;display:flex}.note-extract-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);margin-bottom:2px;font-size:9px}.note-extract-input{border:1px solid var(--panel-border);color:var(--text);background:#0a120e80;border-radius:5px;outline:none;min-width:0;padding:5px 7px;font-family:inherit;font-size:11.5px;transition:border-color .15s}.note-extract-input:focus{border-color:var(--accent)}.note-extract-btn{border:1px solid var(--accent);color:var(--accent);cursor:pointer;white-space:nowrap;background:#6fd6c426;border-radius:5px;flex:none;padding:5px 10px;font-size:11px;font-weight:600;transition:background .15s}.note-extract-btn:hover{background:#6fd6c440}.note-extract-btn:disabled{opacity:.4;cursor:default}.note-add-btn{border:1px dashed var(--panel-border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:8px;padding:10px;font-size:12px;transition:border-color .15s,color .15s}.note-add-btn:hover{border-color:var(--accent);color:var(--accent)}.note-delete-btn{color:var(--text-dim);cursor:pointer;opacity:.6;background:0 0;border:none;margin-top:6px;padding:0;font-size:11px;transition:opacity .15s,color .15s}.note-delete-btn:hover{opacity:1;color:#d98c6a}.note-candidates{flex-direction:column;gap:4px;margin-top:8px;display:flex}.note-candidates-label{text-transform:uppercase;letter-spacing:.08em;color:var(--accent);opacity:.7;margin-bottom:2px;font-size:9px}.note-candidate-row{align-items:center;gap:3px;display:flex}.note-candidate-input{min-width:0;color:var(--text);background:#0a120e80;border:1px solid #6fd6c433;border-radius:4px;outline:none;flex:1 1 0;padding:4px 6px;font-family:inherit;font-size:11px;transition:border-color .15s}.note-candidate-input:focus{border-color:var(--accent)}.note-accept-btn,.note-reject-btn{cursor:pointer;border:none;border-radius:4px;flex:none;justify-content:center;align-items:center;width:24px;height:24px;font-size:14px;font-weight:700;transition:background .15s,transform .1s;display:flex}.note-accept-btn{color:var(--accent);background:#6fd6c433}.note-accept-btn:hover{background:#6fd6c459;transform:scale(1.05)}.note-reject-btn{color:#d98c6a;background:#d98c6a26}.note-reject-btn:hover{background:#d98c6a4d;transform:scale(1.05)}.note-bottom-row{justify-content:space-between;align-items:center;margin-top:8px;display:flex}.note-auto-btn{color:#c0a0e8;cursor:pointer;background:linear-gradient(135deg,#6fd6c41f,#a078dc1f);border:1px solid #a078dc59;border-radius:5px;padding:5px 12px;font-size:11px;font-weight:600;transition:background .2s,border-color .2s}.note-auto-btn:hover:not(:disabled){background:linear-gradient(135deg,#6fd6c433,#a078dc33);border-color:#a078dc8c}.note-auto-btn:disabled{opacity:.4;cursor:default}.note-error{color:#d98c6a;background:#d98c6a1a;border-radius:4px;margin-top:6px;padding:4px 8px;font-size:11px}#chat-panel{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--panel-border);z-index:60;background:#0e1a14eb;border-radius:12px;flex-direction:column;width:340px;max-height:420px;animation:.25s chatSlideIn;display:none;position:absolute;bottom:16px;left:16px;overflow:hidden}#chat-panel.open{display:flex}@keyframes chatSlideIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}#chat-header{border-bottom:1px solid var(--panel-border);flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 12px;display:flex}#chat-npc-name{color:var(--accent);font-size:13px;font-weight:600}#chat-close-btn{color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:15px;line-height:1;transition:color .15s}#chat-close-btn:hover{color:var(--text)}#chat-messages{flex-direction:column;flex:auto;gap:6px;min-height:120px;max-height:300px;padding:10px 12px;display:flex;overflow-y:auto}.chat-msg{word-wrap:break-word;border-radius:10px;max-width:85%;padding:6px 10px;font-size:12.5px;line-height:1.4;animation:.2s entryIn}.chat-msg-player{color:var(--text);background:#6fd6c426;border-bottom-right-radius:3px;align-self:flex-end}.chat-msg-npc{color:var(--text);background:#a078dc1f;border-bottom-left-radius:3px;align-self:flex-start}.chat-msg-npc-name{color:#c0a0e8;margin-bottom:2px;font-size:10px;font-weight:600}.chat-thinking{letter-spacing:3px;color:#c0a0e8;opacity:.7;align-self:flex-start;padding:8px 14px;font-size:18px}.chat-thinking span{animation:1.2s infinite chatDot;display:inline-block}.chat-thinking span:nth-child(2){animation-delay:.2s}.chat-thinking span:nth-child(3){animation-delay:.4s}@keyframes chatDot{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}#chat-input-row{border-top:1px solid var(--panel-border);flex-shrink:0;gap:6px;padding:8px 12px;display:flex}#chat-input{border:1px solid var(--panel-border);color:var(--text);background:#0a120e80;border-radius:8px;outline:none;flex:auto;padding:7px 10px;font-family:inherit;font-size:12.5px;transition:border-color .15s}#chat-input:focus{border-color:var(--accent)}#chat-input::placeholder{color:var(--text-dim);opacity:.6}#chat-send-btn{border:1px solid var(--accent);width:34px;height:34px;color:var(--accent);cursor:pointer;background:#6fd6c426;border-radius:8px;flex:none;justify-content:center;align-items:center;font-size:16px;font-weight:700;transition:background .15s;display:flex}#chat-send-btn:hover:not(:disabled){background:#6fd6c440}#chat-send-btn:disabled{opacity:.4;cursor:default}.chat-empty{color:var(--text-dim);text-align:center;opacity:.7;padding:20px 10px;font-size:12px}
