:root{color-scheme:light;font-family:system-ui,-apple-system,Noto Sans CJK SC,sans-serif;--bubble-max: 260px}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:#e6e9dd;color:#23302b}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;gap:14px;padding:8px 14px;background:#29443c;color:#f5e9cd;font-size:14px}.topbar .title{font-weight:600;font-size:15px}.badge{padding:2px 8px;border-radius:999px;font-size:12px;background:#556}.badge.live{background:#2f8f5b}.badge.offline{background:#6b6f73}.badge.reel{background:#8a5a2b}.clock{font-variant-numeric:tabular-nums;font-size:16px}.status{font-size:12px;color:#f5e9cd99}.status.running{color:#9be0b6}.controls button{margin-left:4px;padding:3px 9px;border:1px solid #f5e9cd66;border-radius:6px;background:transparent;color:inherit;cursor:pointer}.controls button.on{background:#f5e9cd;color:#29443c}.error{margin-left:auto;color:#ffb3a7}.body{flex:1;display:flex;min-height:0}.world{position:relative;flex:1;min-width:0;overflow:hidden}.world canvas{display:block}.labels{position:absolute;inset:0;pointer-events:none}.labels>div{position:absolute;left:0;top:0;white-space:nowrap}.place-label{font-size:12px;color:#29443c;background:#fffa;padding:1px 6px;border-radius:4px}.name-tag{font-size:12px;color:#fff;background:#29443ccc;padding:1px 6px;border-radius:4px}.thinking{font-size:13px;color:#29443c;background:#fff9ec;border:2px solid #29443c;border-radius:999px;padding:0 9px;box-shadow:0 2px 6px #0003}.bubble{max-width:var(--bubble-max);white-space:normal!important;word-break:break-all;font-size:14px;line-height:1.35;color:#23302b;background:#fff9ec;border:2px solid #29443c;border-radius:12px;padding:6px 10px 7px;box-shadow:0 3px 10px #0004}.bubble .who{display:block;font-size:11px;font-weight:600;color:#6b4c3b;margin-bottom:2px}.bubble .ghost{visibility:hidden}.bubble .text{position:absolute;left:10px;right:10px;bottom:7px}.bubble:after{content:"";position:absolute;bottom:-8px;width:12px;height:12px;background:#fff9ec;border:2px solid #29443c;border-top:0;border-left:0;transform:rotate(45deg)}.bubble[data-side=left]:after{right:14%}.bubble[data-side=right]:after{left:14%}.bubble[data-side=center]:after{left:calc(50% - 6px)}.panel{width:320px;border-left:1px solid #c9cfc0;background:#f4f5ef;display:flex;flex-direction:column}.panel-head{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid #dfe3d6}.panel-head button{border:1px solid #aab;background:#fff;border-radius:6px;padding:2px 8px;cursor:pointer}.tabs button{margin-right:4px}.tabs button.on{background:#29443c;color:#f5e9cd;border-color:#29443c}.list{list-style:none;margin:0;padding:6px 12px;overflow-y:auto;font-size:13px;line-height:1.45}.list li{padding:3px 0;border-bottom:1px dashed #e2e5dc}.list li.judge_unavailable,.list li.speech_unavailable,.list li.error{color:#b3261e;font-weight:600}.list li.encounter{color:#6a4c93}.list li.said,.list li.heard{color:#1f5f8b}.list li.talk{padding:6px 0 6px 8px;border-left:3px solid transparent}.list li.talk.open{border-left-color:#2f8f5b;background:#eef5ee}.talk-head{font-weight:600;margin-bottom:2px}.talk-head em{margin-left:6px;font-style:normal;font-size:11px;color:#2f8f5b}.talk .line{padding:1px 0}.talk .summary{margin-top:3px}.when{color:#778;margin-right:6px;font-variant-numeric:tabular-nums}.importance{float:right;color:#99a;font-size:11px}.muted{color:#889;font-weight:400;font-size:12px}.boot{padding:40px;font-size:15px}
