:root{--bg: #0b0d12;--bg2: #12161f;--bg3: #1a1f2b;--gold: #d9b44a;--gold-dim: #a8873a;--ink: #e8dcc3;--ink-dim: #9a8f78;--line: #3a342a;--red: #c94f4f;--green: #4fae6a;--blue: #4a8fd9;--serif: "LXGW WenKai", "KaiTi", "STKaiti", "FangSong", "SimSun", serif}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;background:var(--bg);color:var(--ink);font-family:var(--serif);overflow:hidden}button,input,select{font-family:var(--serif)}.menu-shell{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:30px;background:radial-gradient(ellipse at 50% 20%,rgba(217,180,74,.08),transparent 60%),repeating-linear-gradient(0deg,rgba(217,180,74,.02) 0 1px,transparent 1px 44px),var(--bg)}.menu-title{text-align:center}.menu-title h1{font-size:46px;letter-spacing:10px;color:var(--gold);text-shadow:0 0 24px rgba(217,180,74,.35),0 2px 0 #000}.menu-title p{color:var(--ink-dim);letter-spacing:3px;margin-top:8px}.menu-name-row{display:flex;align-items:center;gap:10px;color:var(--ink-dim)}.menu-name-row input{width:140px}.menu-grid{display:grid;grid-template-columns:repeat(3,220px);gap:16px}.menu-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:22px 16px;background:linear-gradient(160deg,var(--bg2),var(--bg3));border:1px solid var(--line);border-radius:8px;color:var(--ink);cursor:pointer;transition:all .2s}.menu-card:hover{border-color:var(--gold);box-shadow:0 0 18px #d9b44a26;transform:translateY(-2px)}.menu-icon{font-size:34px}.menu-card b{font-size:19px;color:var(--gold);letter-spacing:2px}.menu-desc{font-size:13px;color:var(--ink-dim);text-align:center;line-height:1.5}.menu-help{color:var(--gold-dim)}.btn{padding:8px 16px;background:var(--bg3);border:1px solid var(--line);color:var(--ink);border-radius:6px;cursor:pointer;font-size:14px;transition:all .15s}.btn:hover:not(:disabled){border-color:var(--gold);color:var(--gold)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:linear-gradient(160deg,#8a6c24,#5d4a1a);border-color:var(--gold);color:#fff}.btn.danger{border-color:#6b3333;color:#d98a8a}.btn.small{padding:5px 10px;font-size:13px}.btn.tiny{padding:2px 8px;font-size:12px}.btn.big{padding:12px 40px;font-size:17px;letter-spacing:4px}.btn.cmd{padding:10px 6px;font-size:14px}.btn-ghost{background:none;border:none;color:var(--ink-dim);font-size:18px;cursor:pointer}input,select{background:#0e1219;border:1px solid var(--line);color:var(--ink);border-radius:5px;padding:8px 10px;font-size:14px}input:focus,select:focus{outline:none;border-color:var(--gold)}label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--ink-dim)}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#05060abf;display:flex;align-items:center;justify-content:center;z-index:50}.modal{width:520px;max-width:94vw;max-height:86vh;display:flex;flex-direction:column;background:linear-gradient(160deg,#151a24,#0d1016);border:1px solid var(--gold-dim);border-radius:10px;box-shadow:0 0 40px #000c,inset 0 0 60px #d9b44a0a;overflow:hidden}.modal-wide{width:860px}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;border-bottom:1px solid var(--line);background:linear-gradient(90deg,rgba(217,180,74,.12),transparent)}.modal-head h2{font-size:20px;letter-spacing:4px;color:var(--gold)}.modal-body{padding:18px 20px;overflow-y:auto;display:flex;flex-direction:column;gap:14px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-err{color:var(--red)}.scenario-desc{grid-column:1 / -1;color:var(--ink-dim);font-size:13px;line-height:1.6}.hint{color:var(--ink-dim);font-size:13px}.mode-tabs{display:flex;gap:8px}.mode-tab{flex:1;padding:8px;background:var(--bg3);border:1px solid var(--line);color:var(--ink-dim);border-radius:6px;cursor:pointer}.mode-tab.on{border-color:var(--gold);color:var(--gold);background:#d9b44a14}.game-root{height:100%;display:flex;flex-direction:column}.topbar{display:flex;justify-content:space-between;align-items:center;padding:8px 16px;background:linear-gradient(180deg,#161a23,#0d1016);border-bottom:1px solid var(--line);gap:12px;flex-wrap:wrap;z-index:10}.tb-left,.tb-right{display:flex;align-items:center;gap:12px}.game-title{color:var(--gold);letter-spacing:3px;font-size:17px}.tb-date{color:var(--ink-dim)}.turn-chip{padding:3px 10px;border:1px solid var(--line);border-radius:20px;font-size:13px;color:var(--ink-dim)}.turn-chip.my{border-color:var(--gold);color:var(--gold);animation:pulse 1.6s infinite}@keyframes pulse{0%,to{box-shadow:0 0 #d9b44a00}50%{box-shadow:0 0 12px #d9b44a66}}.conn{font-size:12px;padding:2px 8px;border-radius:10px}.conn.on{color:var(--green);border:1px solid var(--green)}.conn.off{color:var(--red);border:1px solid var(--red)}.room-code{color:var(--gold-dim);font-size:14px;letter-spacing:2px}.game-body{flex:1;display:flex;min-height:0}.left-panel{width:260px;padding:12px;display:flex;flex-direction:column;gap:12px;background:var(--bg2);border-right:1px solid var(--line);overflow-y:auto}.right-panel{width:320px;padding:12px;display:flex;flex-direction:column;gap:12px;background:var(--bg2);border-left:1px solid var(--line);overflow-y:auto}.map-wrap{flex:1;position:relative;min-width:0;background:#0b0d12}.map-host{cursor:grab}.map-hint{position:absolute;top:12px;left:50%;transform:translate(-50%);padding:6px 16px;background:#d9b44a26;border:1px solid var(--gold);color:var(--gold);border-radius:20px;font-size:13px;pointer-events:none;z-index:5}.faction-box{border:1px solid var(--line);border-left-width:4px;border-radius:8px;padding:12px;background:var(--bg3)}.faction-head{display:flex;align-items:center;gap:8px;font-size:17px}.faction-dot{width:12px;height:12px;border-radius:50%;display:inline-block}.faction-res{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px;font-size:13px;color:var(--ink-dim)}.faction-rel{margin-top:8px;display:flex;flex-direction:column;gap:4px;font-size:12px}.badge.war{color:#e09a9a}.badge.ally{color:#9ac8e0}.officer-self{display:grid;grid-template-columns:1fr 1fr;gap:4px 10px;padding:10px;background:linear-gradient(135deg,rgba(217,180,74,.1),transparent);border:1px solid var(--line);border-radius:8px;cursor:pointer;font-size:13px}.self-name{color:var(--gold);font-size:18px}.self-title{text-align:right;color:var(--ink-dim)}.selection-box,.cmd-box,.chronicle-box{background:var(--bg3);border:1px solid var(--line);border-radius:8px;padding:12px}.selection-box h4,.cmd-box h4,.chronicle-box h4{color:var(--gold-dim);margin-bottom:10px;font-size:14px;letter-spacing:2px}.selection-box p{font-size:13px;line-height:1.6;color:var(--ink-dim)}.sel-title{color:var(--ink)!important;font-size:17px!important}.sel-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.supply-ok{color:var(--green)!important}.supply-cut{color:var(--red)!important;font-weight:700}.cmd-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.cmd-hint{margin-top:10px;font-size:12px;color:var(--ink-dim);line-height:1.5}.chronicle-box ul{list-style:none;display:flex;flex-direction:column;gap:6px}.chronicle-box li{font-size:12px;color:var(--ink-dim);line-height:1.5;border-bottom:1px dashed #26221a;padding-bottom:4px}.ch-date{color:var(--gold-dim);margin-right:8px;white-space:nowrap}.officer-card{display:flex;gap:20px}.officer-name-plaque{width:120px;min-width:120px;padding:16px 10px;background:radial-gradient(circle at 50% 30%,rgba(217,180,74,.12),transparent 70%),repeating-linear-gradient(45deg,rgba(217,180,74,.03) 0 4px,transparent 4px 8px),#10141c;border:2px solid var(--gold);border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;box-shadow:inset 0 0 30px #d9b44a0f,0 0 20px #0009}.plaque-name{writing-mode:vertical-rl;font-size:40px;letter-spacing:8px;color:var(--gold);text-shadow:0 0 14px rgba(217,180,74,.5);line-height:1.1}.plaque-sub,.plaque-title{font-size:12px;color:var(--ink-dim);writing-mode:vertical-rl;letter-spacing:3px}.plaque-faction{font-size:14px;color:#c8b98a;letter-spacing:2px}.officer-info{flex:1;display:flex;flex-direction:column;gap:12px}.officer-meta{display:flex;flex-wrap:wrap;gap:10px;font-size:13px;color:var(--ink-dim)}.officer-radar-row{display:flex;gap:18px;align-items:flex-start}.radar{background:#00000040;border-radius:8px}.officer-bio{flex:1;font-size:14px;line-height:1.7}.officer-bio h4,.officer-abilities h4{color:var(--gold-dim);font-size:14px;margin:6px 0}.rel-list{list-style:none;display:flex;flex-direction:column;gap:4px;color:var(--ink-dim);font-size:13px}.chip-row{display:flex;flex-wrap:wrap;gap:6px}.chip{padding:3px 10px;border:1px solid var(--line);border-radius:12px;font-size:12px;color:var(--ink);background:#ffffff08;cursor:help}.chip.gold{border-color:var(--gold-dim);color:var(--gold)}.chip.red{border-color:#7a4444;color:#e0a0a0}.skill-row{display:grid;grid-template-columns:1fr 1fr;gap:6px}.skill-item{display:flex;justify-content:space-between;align-items:center;font-size:13px}.lv-dots{display:flex;gap:3px}.lv-dots i{width:8px;height:8px;border-radius:50%;background:#2a2f3a}.lv-dots i.on{background:var(--gold)}.officer-table{width:100%;border-collapse:collapse;font-size:13px}.officer-table th,.officer-table td{padding:6px 8px;border-bottom:1px solid #26221a;text-align:center}.officer-table th{color:var(--gold-dim);font-weight:400}.event-text{font-size:16px;line-height:1.9}.event-choices{display:flex;gap:10px;flex-wrap:wrap}.battle-verdict{font-size:28px;letter-spacing:8px;text-align:center}.battle-verdict.win{color:var(--gold)}.battle-verdict.lose{color:var(--red)}.battle-log{list-style:none;display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--ink-dim)}.mini-hp{display:flex;flex-direction:column;gap:10px}.hp-row{display:flex;align-items:center;gap:8px;font-size:14px}.hp-row span:first-child{width:70px}.hp-bar{flex:1;height:12px;background:#11151d;border:1px solid var(--line);border-radius:6px;overflow:hidden}.hp-bar div{height:100%;background:linear-gradient(90deg,#7a5a1e,var(--gold));transition:width .3s}.hp-bar.enemy div{background:linear-gradient(90deg,#6b2424,var(--red))}.qi-row{font-size:13px;color:var(--ink-dim)}.mini-log{padding:8px 12px;background:#d9b44a12;border:1px solid var(--line);border-radius:6px;font-size:14px}.mini-commands{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.waiting{color:var(--ink-dim);text-align:center}.diplo-list{display:flex;flex-direction:column;gap:8px}.diplo-row{display:flex;align-items:center;gap:12px;padding:10px;background:var(--bg3);border:1px solid var(--line);border-radius:8px;font-size:13px;flex-wrap:wrap}.faction-name{font-size:16px;min-width:70px}.diplo-actions{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}.policy-board{display:grid;grid-template-columns:1fr 1fr;gap:10px}.policy-slot{background:var(--bg3);border:1px solid var(--line);border-radius:8px;padding:10px}.policy-slot h4{color:var(--gold-dim);margin-bottom:8px}.policy-officer{display:flex;justify-content:space-between;font-size:13px;padding:4px 0;border-bottom:1px dashed #26221a}.policy-candidates{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.buildings{display:flex;flex-direction:column;gap:6px}.building-row{display:flex;justify-content:space-between;align-items:center;font-size:14px}.save-row{display:flex;gap:8px}.save-row input{flex:1}.cp-list{list-style:none;display:flex;flex-direction:column;gap:8px}.cp-list li{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--bg3);border:1px solid var(--line);border-radius:6px;font-size:13px;flex-wrap:wrap}.cp-list li span:first-child{min-width:90px;color:var(--ink)}.cp-list li span:nth-child(2){flex:1;color:var(--ink-dim)}.chronicle-full{list-style:none;display:flex;flex-direction:column;gap:8px;font-size:13px}.chronicle-full li{display:flex;gap:12px;line-height:1.6}.ch-kind.battle{color:#d9a0a0}.ch-kind.life{color:#a8c8a0}.ch-kind.diplomacy{color:#a0b8d9}.ch-kind.ai{color:#d9c0a0}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.help-grid h4{color:var(--gold);margin-bottom:6px}.help-grid p{font-size:13px;color:var(--ink-dim);line-height:1.7}.victory-text{font-size:26px;color:var(--gold);text-align:center;letter-spacing:4px;line-height:1.8}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:#141822f2;border:1px solid var(--gold-dim);color:var(--ink);padding:10px 24px;border-radius:24px;z-index:100;font-size:14px;box-shadow:0 8px 30px #0009;max-width:80vw}.cost-hint{font-size:12px;color:var(--ink-dim)}.life-actions select,.life-actions input{width:100%}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#2c3038;border-radius:4px}::-webkit-scrollbar-track{background:transparent}@media (max-width: 1100px){.left-panel,.right-panel{width:220px}.menu-grid{grid-template-columns:repeat(2,220px)}}
