:root{--plain: #e6e6e6;--entity: #6fc3df;--place: #8fbc8f;--item: #d9b45b;--foe: #d9736a;--gain: #7fc98a;--loss: #c96a6a;--danger: #ff5f56;--muted: #7d7d7d;--highlight: #00c584;--bg: #000000;--rule: #1c1c1c;--dim: #4a4a4a;--t-fast: .14s;--t-line: .28s;--t-panel: .2s;--line-stagger: 70ms;--t-dot: .64s;--dot-stagger: .13s}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--plain);font-family:ui-monospace,SF Mono,Menlo,Consolas,Noto Sans Mono CJK SC,PingFang SC,Microsoft YaHei,monospace;font-size:15px;line-height:1.85;-webkit-font-smoothing:antialiased}.r-plain{color:var(--plain)}.r-entity{color:var(--entity)}.r-place{color:var(--place)}.r-item{color:var(--item)}.r-foe{color:var(--foe)}.r-gain{color:var(--gain)}.r-loss{color:var(--loss)}.r-danger{color:var(--danger);font-weight:600}.r-muted{color:var(--muted)}.r-highlight{color:var(--highlight)}.app{display:grid;grid-template-columns:minmax(0,1fr) 320px;height:100%}.main-wrap{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0}.main{flex:1;display:flex;flex-direction:column;overflow-y:auto;min-height:0;scrollbar-width:thin;scrollbar-color:var(--rule) transparent}.main::-webkit-scrollbar{width:8px}.main::-webkit-scrollbar-thumb{background:var(--rule)}.stream{flex:1 0 auto;padding:24px 28px 0}.line{white-space:pre-wrap;word-break:break-word;margin:0 0 2px}.line+.line{margin-top:0}.line-gap{height:14px}.panel{border-left:1px solid var(--rule);padding:24px 22px;overflow-y:auto;font-size:14px;line-height:1.9}.panel-title{color:var(--plain);margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid var(--rule);letter-spacing:1px}.status{margin:0;display:grid;gap:3px 10px}.status-row{display:grid;grid-template-columns:3.4em minmax(0,1fr);gap:10px;align-items:baseline}.status dt{color:var(--muted);white-space:nowrap}.status dd{margin:0;min-width:0}.status dd .line{margin:0;white-space:normal;word-break:break-word}.briefing-line{color:var(--plain);line-height:1.9;margin:0 0 18px;white-space:pre-wrap}.save-broken{color:var(--danger);font-size:13px;line-height:1.7;margin:0 0 18px}.intro-import{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:10px 0 4px}.file-button{display:block;border:1px solid var(--dim);border-radius:2px;padding:6px 14px;font-size:14px;cursor:pointer;transition:border-color var(--t-fast) ease}.file-button:hover{border-color:var(--plain)}.file-button input{display:none}.panel-restart{width:100%;margin-top:16px;text-align:left}.status-label{background:none;border:none;padding:0;margin:0;font:inherit;color:var(--muted);cursor:help;border-bottom:1px dotted var(--dim);line-height:inherit;text-align:left}.status-label:hover:not(:disabled){color:var(--plain);border-bottom-color:var(--muted)}.status-help{color:var(--muted);font-size:12.5px;line-height:1.75;margin-top:4px;padding-left:8px;border-left:1px solid var(--rule)}.gate-hint{font-size:12.5px}.actions{flex:0 0 auto;margin-top:20px;border-top:1px solid var(--rule);padding:16px 28px 32px;display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center;background-color:var(--bg);position:sticky;bottom:0;z-index:1}.jump-latest{position:absolute;right:22px;bottom:22px;z-index:2;background-color:var(--bg);bottom:calc(var(--actions-h, 0px) + 22px);border-color:var(--dim);color:var(--muted);font-size:13px;padding:5px 12px;animation:rise-in var(--t-panel) ease-out both}.jump-latest:hover:not(:disabled){color:var(--plain);border-color:var(--plain);background-color:var(--bg)}button{background:transparent;border:1px solid var(--dim);color:var(--plain);font:inherit;font-size:14px;padding:6px 14px;cursor:pointer;border-radius:2px;text-align:left;transition:border-color var(--t-fast) ease,color var(--t-fast) ease,background-color var(--t-fast) ease}button:hover:not(:disabled){border-color:var(--plain);color:#fff;background-color:#0d0d0d}button:active:not(:disabled){background-color:#161616}button:focus-visible{outline:1px solid var(--highlight);outline-offset:2px}button:disabled{color:var(--dim);border-color:var(--rule);cursor:default}button.primary{border-color:var(--highlight);color:var(--highlight)}button.primary:hover:not(:disabled){border-color:#fff;color:#fff}button.quiet{border-color:transparent;color:var(--muted);padding-left:4px}.hint{color:var(--muted);font-size:13px;width:100%}.intro{max-width:620px;margin:0 auto;padding:56px 24px;height:100%;overflow-y:auto;animation:rise-in var(--t-panel) ease-out both}.intro h1{font-size:20px;font-weight:400;letter-spacing:2px;margin:0 0 6px}.intro p.tagline{color:var(--muted);margin:0 0 32px}.origin{display:block;width:100%;margin-bottom:10px;padding:12px 16px}.origin .name{font-size:15px}.origin .stars{color:var(--item);margin-left:10px;font-size:13px}.origin .desc{color:var(--muted);font-size:13px;margin-top:4px;line-height:1.7}.origin.selected,.origin.selected:hover:not(:disabled){border-color:var(--highlight)}.origin.selected .name{color:var(--highlight)}input[type=text]{background:transparent;border:1px solid var(--dim);color:var(--plain);font:inherit;padding:7px 12px;width:220px;border-radius:2px;transition:border-color var(--t-fast) ease}input[type=text]:focus{outline:none;border-color:var(--plain)}.row{display:flex;gap:10px;align-items:center;margin-top:18px}@keyframes line-in{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}.line-enter{animation:line-in var(--t-line) ease-out both}@keyframes rise-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes value-flash{0%{color:var(--highlight)}to{color:inherit}}.status-row.flash dd{animation:value-flash .72s ease-out}@keyframes dot-hop{0%,55%,to{transform:translateY(0);opacity:.3}25%{transform:translateY(-5px);opacity:1}}.pending-line{animation:line-in var(--t-line) ease-out both}.pending-dot{display:inline-block;animation:dot-hop var(--t-dot) ease-in-out infinite}.actions{animation:rise-in var(--t-panel) ease-out both}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-delay:0ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.line-enter{opacity:1;transform:none}}@media(max-width:760px){.actions{position:static;bottom:auto}.jump-latest{bottom:14px}.app{grid-template-columns:1fr;grid-template-rows:1fr auto}.panel{border-left:none;border-top:1px solid var(--rule);max-height:32vh;padding:14px 20px;font-size:13px}.stream{padding:18px 20px 0}.actions{margin-top:16px;padding:12px 20px 24px}.intro{padding:32px 20px}}
