:root{--bg: #12100d;--panel: #1a1713;--panel-edge: #2e2921;--ink: #d8cfc0;--ink-dim: #8a8072;--gold: #c9a86a;--gold-dim: #8a7448;--qi: #7fb8a4;--stamina: #d8b46a;--gain: #8fbf9f;--loss: #d98f8f;--system: #9ab8d8;--flavor: #b08fc9;--warn: #e0b070;--danger: #a05545;--serif: "Noto Serif SC", "Source Han Serif SC", "Songti SC", SimSun, serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--serif);font-size:15px;line-height:1.65}.app{height:100%;display:flex;flex-direction:column;padding:14px 18px;gap:10px;max-width:1440px;margin:0 auto}.topbar{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid var(--panel-edge);padding-bottom:10px}.title{font-size:22px;font-weight:600;letter-spacing:4px;color:var(--gold);margin:0}.subtitle{font-size:14px;letter-spacing:2px;color:var(--ink-dim)}.topbar-actions{display:flex;gap:8px}button{font-family:var(--serif);font-size:14px;color:var(--ink);background:transparent;border:1px solid var(--panel-edge);border-radius:3px;padding:5px 14px;cursor:pointer;letter-spacing:1px;transition:border-color .15s,color .15s,background .15s,transform .06s}button:active:not(:disabled){transform:scale(.97)}button:hover:not(:disabled){border-color:var(--gold-dim);color:var(--gold)}button:disabled{opacity:.38;cursor:not-allowed}button.danger:hover{border-color:var(--danger);color:var(--loss)}.toast{align-self:center;background:#241f18;border:1px solid var(--gold-dim);color:var(--gold);border-radius:3px;padding:4px 16px;font-size:13px;cursor:pointer}.toast-hint{color:var(--ink-dim);margin-left:8px;font-size:12px}.layout{flex:1;display:grid;grid-template-columns:280px 1fr 340px;gap:12px;min-height:0}.panel{background:var(--panel);border:1px solid var(--panel-edge);border-radius:4px;padding:14px 16px;overflow-y:auto;min-height:0}.panel-title{font-size:15px;font-weight:600;letter-spacing:3px;color:var(--gold);margin:0 0 10px;border-bottom:1px dashed var(--panel-edge);padding-bottom:8px}.block{margin-bottom:16px}.block-title{font-size:13px;color:var(--ink-dim);letter-spacing:2px;margin:0 0 6px}.realm-name{font-size:18px;color:var(--gold);letter-spacing:2px}.realm-desc{font-size:12px;color:var(--ink-dim)}.stat-row{display:flex;justify-content:space-between;align-items:baseline;margin-top:8px}.stat-label{color:var(--ink-dim);font-size:13px;letter-spacing:2px}.stat-value{font-size:13px}.stat-value.lifespan{color:var(--qi)}.bar{height:7px;background:#0d0b09;border:1px solid var(--panel-edge);border-radius:4px;margin-top:4px;overflow:hidden}.bar-fill{height:100%;transition:width .25s ease}.bar-fill.qi{background:linear-gradient(90deg,#4e8a75,var(--qi))}.bar-fill.stamina{background:linear-gradient(90deg,#a5854a,var(--stamina))}.bar-fill.hp{background:linear-gradient(90deg,#8a4438,#c46a5a)}.bar-fill.mp{background:linear-gradient(90deg,#44688a,#6a9ac4)}.bar-fill.enemy{background:linear-gradient(90deg,#6d3a52,#a5577a)}.bar.big{height:12px}.debuff-note{margin-top:8px;font-size:12px;color:var(--warn);border:1px dashed var(--warn);border-radius:3px;padding:3px 8px}.realm-next{font-size:12px;color:var(--ink-dim);margin-top:2px}.monster-element{display:inline-block;margin-left:6px;font-size:11px;color:var(--flavor);border:1px solid var(--flavor);border-radius:50%;width:18px;height:18px;line-height:16px;text-align:center}.boss-tag{margin-left:6px;font-size:11px;color:var(--loss);border:1px solid var(--loss);border-radius:3px;padding:0 4px}button.boss-btn .action-name{color:var(--loss)}.monster-row{display:flex;gap:6px;align-items:stretch;margin-bottom:6px}.monster-row .monster-main{flex:1;margin-bottom:0}.auto-btn{width:68px;font-size:13px;letter-spacing:1px}.row-btns{display:flex;gap:6px;margin-top:4px}.row-btns .action-btn{flex:1;margin-bottom:0}.farm-plot{display:flex;flex-direction:column;gap:5px;border:1px solid var(--panel-edge);border-radius:4px;padding:8px 10px;margin-bottom:6px;background:#171410}.plot-label{font-size:13px;color:var(--ink);letter-spacing:1px}.plot-grow{display:flex;align-items:center;gap:8px}.plot-grow .bar{flex:1;margin-top:0}.plot-days{font-size:12px;color:var(--ink-dim);white-space:nowrap}.mini-btn{font-size:12px;padding:3px 10px;letter-spacing:.5px;display:inline-flex;align-items:center;gap:5px}.mini-btn .favored{color:var(--gain)}.mini-btn .unfavored{color:var(--ink-dim)}.mini-btn.harvest{border-color:var(--gold-dim);color:var(--gold)}.mini-btn.plot-buy{margin-top:2px}.farm-plot .row-btns{flex-wrap:wrap}.market-hint{font-size:12px;color:var(--ink-dim);margin-bottom:6px;font-style:italic}.market-rows{display:flex;flex-direction:column;gap:4px}.market-row{display:flex;align-items:center;gap:8px;border-bottom:1px solid #221e18;padding:3px 0;font-size:13px}.market-name{width:64px;letter-spacing:1px}.market-have{width:44px;color:var(--ink-dim);font-size:12px}.market-row .mini-btn{margin-left:auto}.market-row .mini-btn+.mini-btn{margin-left:0}.battle-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#080604d1;display:flex;align-items:center;justify-content:center;z-index:100}.battle-modal{width:min(560px,92vw);max-height:88vh;overflow-y:auto;background:var(--panel);border:1px solid var(--gold-dim);border-radius:6px;padding:18px 22px;box-shadow:0 0 40px #0009}.battle-head{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px dashed var(--panel-edge);padding-bottom:8px;margin-bottom:12px}.battle-title{color:var(--gold);letter-spacing:3px;font-size:16px}.battle-vs{color:var(--loss);letter-spacing:2px;font-size:13px}.battle-enemy{text-align:center;margin-bottom:14px}.enemy-name{font-size:18px;color:var(--ink);letter-spacing:2px;margin-bottom:6px}.enemy-hp{font-size:12px;color:var(--ink-dim);margin-top:3px}.battle-self{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.self-row{display:grid;grid-template-columns:34px 1fr 64px;align-items:center;gap:8px;font-size:12px;color:var(--ink-dim)}.self-num{text-align:right;font-variant-numeric:tabular-nums}.battle-log{border:1px solid var(--panel-edge);border-radius:4px;background:#14110d;padding:8px 12px;min-height:90px;max-height:200px;overflow-y:auto;margin-bottom:14px;display:flex;flex-direction:column;gap:4px}.battle-log .log-entry{border-bottom:none;padding-bottom:0;font-size:13px}.battle-actions{display:flex;flex-wrap:wrap;gap:8px}.battle-btn{flex:1 1 auto;min-width:96px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 12px}.battle-btn.flee:hover:not(:disabled){border-color:var(--warn);color:var(--warn)}.skill-mp{font-size:11px;color:var(--ink-dim)}.retreat-btns{flex-wrap:wrap}.retreat-btns .retreat-mode{min-width:96px}.retreat-mode.active{border-color:var(--gold);color:var(--gold);background:#241f16}.retreat-mode.active .action-cost span{color:var(--gold-dim)}button.danger-btn .action-name{color:var(--loss)}button.rest-btn .action-name{color:var(--system)}button.rest-btn:hover:not(:disabled){border-color:var(--system);color:var(--system)}button.danger-btn:hover:not(:disabled){border-color:var(--danger);color:var(--loss)}.retreat-modal .battle-log.tall{max-height:280px;min-height:120px}.rebirth-summary{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.rebirth-summary .self-row{grid-template-columns:40px 1fr}.rebirth-line{font-size:13px;color:var(--ink)}.stat-list .num.root{color:var(--flavor)}.dialog-modal{width:min(480px,92vw)}.dialog-text{font-size:14px;color:var(--ink);margin-bottom:14px;line-height:1.8}.dialog-textarea{width:100%;background:#14110d;border:1px solid var(--panel-edge);border-radius:4px;color:var(--ink);font-family:monospace;font-size:12px;padding:8px 10px;resize:vertical;margin-bottom:14px}.dialog-textarea:focus{outline:none;border-color:var(--gold-dim)}button.dialog-danger{border-color:var(--danger);color:var(--loss)}.equip-card{border:1px solid var(--panel-edge);border-radius:4px;padding:8px 10px;margin-bottom:6px;background:#171410}.equip-card.equipped-card{border-color:var(--gold-dim)}.equip-head{display:flex;align-items:center;gap:8px;font-size:13px}.equip-name{letter-spacing:1px}.tier-tag{font-size:11px;border:1px solid;border-radius:3px;padding:0 4px}.tier-0 .tier-tag{color:var(--ink-dim);border-color:var(--ink-dim)}.tier-1 .tier-tag{color:var(--gold);border-color:var(--gold-dim)}.tier-2 .tier-tag{color:var(--flavor);border-color:var(--flavor)}.tier-2 .equip-name{color:var(--flavor)}.tier-1 .equip-name{color:var(--gold)}.equip-stats{font-size:12px;color:var(--gain);margin-top:3px}.equip-affixes{font-size:12px;color:var(--system);margin-top:2px}.equip-ops{display:flex;gap:6px;margin-top:6px}.equip-ops .mini-btn{margin-left:0}.slot-summary{display:flex;justify-content:space-between;font-size:13px;padding:2px 0}.slot-summary .slot-label{color:var(--ink-dim)}.slot-summary.none .equip-name{color:var(--ink-dim);font-size:12px}.res-list,.stat-list{list-style:none;margin:0;padding:0;font-size:13px}.res-list li,.stat-list li{display:flex;justify-content:space-between;padding:2px 0}.res-list li.dim{color:var(--ink-dim);opacity:.55}.num{font-variant-numeric:tabular-nums;color:var(--ink)}.scene-panel{display:flex;flex-direction:column}.scene-header{display:flex;justify-content:space-between;align-items:baseline}.scene-header .panel-title{border-bottom:none;margin:0;padding:0}.scene-time{font-size:13px;color:var(--ink-dim);letter-spacing:1px}.scene-groups{display:flex;flex-direction:column;gap:18px;margin-top:12px}.group-title{font-size:13px;color:var(--gold-dim);letter-spacing:3px;margin:0 0 8px;border-left:3px solid var(--gold-dim);padding-left:8px}.action-btn{display:flex;flex-direction:column;align-items:flex-start;gap:3px;width:100%;text-align:left;padding:9px 14px;margin-bottom:6px}.action-name{font-size:15px;letter-spacing:2px}.action-cost{display:flex;gap:12px;font-size:12px;color:var(--ink-dim)}.recipe-io{color:var(--gold-dim)}.empty-hint{font-size:12px;color:var(--ink-dim);font-style:italic}.dead-banner{margin-top:auto;text-align:center;color:var(--loss);border:1px solid var(--danger);border-radius:4px;padding:12px;letter-spacing:2px}.log-stream{display:flex;flex-direction:column;gap:6px}.log-entry{display:flex;flex-direction:column;font-size:13px;border-bottom:1px solid #221e18;padding-bottom:6px}.log-time{font-size:11px;color:var(--ink-dim);letter-spacing:1px}.log-text{color:var(--ink)}.kind-gain .log-text{color:var(--gain)}.kind-loss .log-text{color:var(--loss)}.kind-system .log-text{color:var(--system)}.kind-flavor .log-text{color:var(--flavor);font-style:italic}.kind-warn .log-text{color:var(--warn)}.kind-action .log-text{color:var(--ink-dim)}.log-entry{animation:log-in .35s ease both}@keyframes log-in{0%{opacity:0;transform:translate(14px)}to{opacity:1;transform:translate(0)}}.footer{text-align:center;font-size:12px;color:var(--ink-dim);letter-spacing:1px;padding-top:4px}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--panel-edge);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--gold-dim)}.quest-card{display:flex;justify-content:space-between;align-items:center;border:1px solid var(--panel-edge);border-left:3px solid var(--gold-dim);border-radius:4px;padding:6px 10px;margin-bottom:6px;background:#171410;font-size:13px}.quest-card.done{border-left-color:var(--gain)}.quest-name{letter-spacing:1px}.quest-reward{color:var(--ink-dim);font-size:12px}.fx-floaters{position:fixed;left:300px;top:96px;z-index:150;pointer-events:none;display:flex;flex-direction:column;gap:2px}.fx-floater{font-size:15px;font-weight:600;letter-spacing:1px;text-shadow:0 1px 3px rgba(0,0,0,.8);animation:floater-rise 1.35s ease-out both}.fx-floater.d1{animation-delay:.08s}.fx-floater.d2{animation-delay:.16s}.fx-floater.qi{color:var(--qi)}.fx-floater.stamina{color:var(--stamina)}.fx-floater.hp{color:#d98f8f}.fx-floater.hp.neg{color:var(--loss)}.fx-floater.mp{color:#8fb8d8}.fx-floater.stone{color:var(--gold)}.fx-floater.rep{color:var(--system)}.fx-floater.herb{color:var(--gain)}.fx-floater.neg{filter:brightness(.85)}@keyframes floater-rise{0%{opacity:0;transform:translateY(6px)}15%{opacity:1}75%{opacity:1}to{opacity:0;transform:translateY(-34px)}}.fx-flash{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:180;animation:fx-flash .55s ease-out both}.fx-flash.fx-red{box-shadow:inset 0 0 120px 40px #a032288c}.fx-flash.fx-gold{box-shadow:inset 0 0 140px 50px #c9a86a80}.fx-flash.fx-dark{box-shadow:inset 0 0 160px 60px #0a0505bf}.fx-flash.fx-orange{box-shadow:inset 0 0 130px 45px #c8782880}@keyframes fx-flash{0%{opacity:0}20%{opacity:1}to{opacity:0}}.fx-toasts{position:fixed;top:64px;left:50%;transform:translate(-50%);z-index:190;pointer-events:none;display:flex;flex-direction:column;gap:6px;align-items:center}.fx-toast{font-family:var(--serif);font-size:17px;letter-spacing:3px;padding:8px 26px;border-radius:4px;border:1px solid;background:#120f0ceb;text-shadow:0 0 12px currentColor;animation:toast-in .3s ease-out,toast-out .4s ease-in 2.1s both}.fx-toast.fx-gold{color:var(--gold);border-color:var(--gold-dim);box-shadow:0 0 18px #c9a86a40}.fx-toast.fx-red{color:var(--loss);border-color:var(--danger);box-shadow:0 0 18px #a055454d}.fx-toast.fx-purple{color:var(--flavor);border-color:var(--flavor);box-shadow:0 0 18px #b08fc940}@keyframes toast-in{0%{opacity:0;transform:translateY(-12px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes toast-out{to{opacity:0;transform:translateY(-8px)}}button.sfx-on{color:var(--gold);border-color:var(--gold-dim)}button.sfx-off{color:var(--ink-dim)}.ceremony-overlay{z-index:210}.ceremony-modal{position:relative;width:min(420px,92vw);text-align:center;padding:40px 24px 20px;background:radial-gradient(circle at 50% 40%,#241d12 0%,var(--panel) 70%);border:1px solid var(--gold-dim);border-radius:8px;box-shadow:0 0 60px #c9a86a33}.ceremony-ring{position:absolute;left:50%;top:34%;width:140px;height:140px;margin:-70px 0 0 -70px;border-radius:50%;border:2px solid var(--gold-dim);animation:ring-pulse 1.1s ease-in-out infinite}.ceremony-ring[data-stage="1"]{animation-duration:.7s;border-color:var(--gold)}.ceremony-ring[data-stage="2"]{animation-duration:.35s;border-color:var(--loss)}@keyframes ring-pulse{0%,to{transform:scale(.82);opacity:.4;box-shadow:0 0 12px #c9a86a33}50%{transform:scale(1.05);opacity:1;box-shadow:0 0 34px #c9a86a8c}}.ceremony-text{position:relative;min-height:96px;display:flex;flex-direction:column;gap:8px;justify-content:flex-end}.ceremony-line{font-size:15px;color:var(--ink-dim);letter-spacing:2px;opacity:.55;animation:log-in .4s ease both}.ceremony-line.active{color:var(--gold);font-size:17px;opacity:1;text-shadow:0 0 10px rgba(201,168,106,.5)}.ceremony-ops{display:flex;justify-content:center;gap:10px;margin-top:18px}.battle-enemy{position:relative}.battle-enemy.hit{animation:enemy-shake .3s ease}@keyframes enemy-shake{0%,to{transform:translate(0)}20%{transform:translate(-7px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(3px)}}.battle-dmg{position:absolute;left:50%;top:-6px;font-size:20px;font-weight:700;pointer-events:none;z-index:5;transform:translate(calc(-50% + var(--jx, 0px)));animation:dmg-pop 1.05s ease-out both;text-shadow:0 1px 4px rgba(0,0,0,.9)}.battle-dmg.enemy-dmg{color:#ffd9a0}.battle-dmg.enemy-dmg.crit{color:#ff9d5c;font-size:27px}.battle-dmg.self-dmg{color:var(--loss);top:8px}.battle-dmg.self-dmg.crit{font-size:24px}@keyframes dmg-pop{0%{opacity:0;transform:translate(calc(-50% + var(--jx, 0px))) translateY(8px) scale(.7)}18%{opacity:1;transform:translate(calc(-50% + var(--jx, 0px))) translateY(-6px) scale(1.15)}35%{transform:translate(calc(-50% + var(--jx, 0px))) translateY(-2px) scale(1)}to{opacity:0;transform:translate(calc(-50% + var(--jx, 0px))) translateY(-30px) scale(.95)}}.battle-self{position:relative}@media (max-width: 960px){.app{padding:8px;gap:8px}.layout{grid-template-columns:1fr;grid-template-rows:auto auto auto}.status-panel{order:2}.scene-panel{order:1}.log-panel{order:3;max-height:260px}.title{font-size:18px;letter-spacing:2px}.topbar-actions button{padding:4px 8px;font-size:12px}.battle-modal{width:96vw;padding:12px}.monster-row{flex-wrap:wrap}.market-row{flex-wrap:wrap;gap:4px}.market-row .mini-btn{margin-left:0}.fx-floaters{left:50%;transform:translate(-50%);top:60px}}.cloud-badge{display:inline-flex;align-items:center;gap:6px}.cloud-badge-guest{border-style:dashed;border-color:var(--gold-dim);color:var(--gold)}.cloud-badge-user{border:1px solid var(--panel-edge);background:#1d1a15;border-radius:3px;padding:4px 10px;font-size:12px;color:var(--ink-dim)}.cloud-dot{width:7px;height:7px;border-radius:50%;flex:none;background:var(--ink-dim)}.cloud-dot-synced{background:var(--gain)}.cloud-dot-idle{background:var(--gold-dim)}.cloud-dot-syncing{background:var(--stamina);animation:cloud-pulse 1s ease-in-out infinite}.cloud-dot-error{background:var(--loss)}@keyframes cloud-pulse{0%,to{opacity:1}50%{opacity:.25}}.cloud-name{color:var(--gold);cursor:pointer}.cloud-status{color:var(--ink-dim);font-size:11px}.cloud-badge-user .cloud-signout{padding:2px 8px;font-size:11px;letter-spacing:0}.cloud-hint{font-size:12px;color:var(--ink-dim)}.cloud-tabs{display:flex;gap:6px;margin-bottom:14px}.cloud-tab{flex:1 1 auto}.cloud-tab.active{border-color:var(--gold-dim);color:var(--gold);background:#221d16}.cloud-field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.cloud-label{font-size:12px;color:var(--ink-dim)}.cloud-input{width:100%;background:#14110d;border:1px solid var(--panel-edge);border-radius:4px;color:var(--ink);font-family:var(--serif);font-size:14px;padding:8px 10px;box-sizing:border-box}.cloud-input:focus{outline:none;border-color:var(--gold-dim)}.cloud-input::placeholder{color:#5d5648;font-size:12px}.cloud-error{color:var(--loss);font-size:13px;margin-bottom:12px}.cloud-submit{border-color:var(--gold-dim);color:var(--gold)}.cloud-footnote{margin-top:14px;font-size:11px;color:var(--ink-dim);line-height:1.7}@media (max-width: 860px){.cloud-status{display:none}}
