/* v10 最终布局层：只定义稳定的几何规则，覆盖此前多轮互相冲突的追加样式。 */
:root{--v10-gap:10px;--v10-button-h:56px;--v10-gold:#b77a25;--v10-ink:#4b2d12}
*,*::before,*::after{box-sizing:border-box}
html,body,#app{width:100%;height:100%;max-width:100%;overflow:hidden}
button,.btn{min-width:112px;min-height:44px;padding:9px 16px;font:700 16px/1.25 var(--serif);white-space:normal;word-break:keep-all;overflow-wrap:normal}
button:hover,.btn:hover{transform:none!important;filter:brightness(1.04)}

/* 顶栏为设置按钮留出明确空间，周数与年月留在同一格。 */
#topbar{padding-right:92px!important;grid-auto-flow:column;align-items:stretch}
#topbar>span{display:flex;align-items:center;justify-content:center;min-height:34px;font-size:clamp(12px,1vw,15px)!important}
#corner-settings{z-index:60!important;top:7px!important;right:10px!important;width:72px!important;min-width:72px!important;height:34px!important;min-height:34px!important;padding:4px 8px!important;font-size:14px!important}

/* 朝堂七枚一级按钮：桌面、笔记本始终同一行，宽度均等且字号不压缩。 */
:root{--court-nav-h:78px}
#action-rail[data-scene="court"]{display:grid!important;grid-template-columns:repeat(7,minmax(108px,1fr))!important;grid-template-rows:1fr!important;align-items:stretch!important;left:12px!important;right:calc(var(--log-w) + 12px)!important;bottom:8px!important;width:auto!important;height:70px!important;min-height:70px!important;padding:7px!important;gap:8px!important;overflow:visible!important;background:rgba(248,237,207,.94)!important;border:1px solid #b78a42!important}
#action-rail[data-scene="court"]>button{width:100%!important;min-width:0!important;min-height:54px!important;height:54px!important;padding:7px 10px!important;font:700 clamp(16px,1.35vw,20px)/1.2 var(--serif)!important;letter-spacing:3px!important;white-space:nowrap!important}
#action-rail[data-scene="court"]>.rail-log{display:none!important}
#screen-root[data-court="1"] .v7-page,#screen-root[data-court="1"] .world-page{padding-bottom:82px!important}
#rail-flyout{bottom:70px!important;display:grid!important;grid-template-columns:1fr!important;width:156px!important;gap:6px!important;padding:7px!important}
#rail-flyout button{width:100%!important;min-width:140px!important;min-height:48px!important;font-size:16px!important}

/* 正殿操作位于画面右半部而不是画面之外。 */
#action-rail[data-scene="palace"]{top:72px!important;right:calc(var(--log-w) + 22px)!important;bottom:16px!important;width:176px!important;height:auto!important;padding:8px!important;gap:9px!important;grid-template-rows:repeat(6,minmax(48px,1fr))!important;background:rgba(250,240,211,.86)!important;border:1px solid rgba(155,105,37,.62)!important}
#action-rail[data-scene="palace"]>button{width:100%!important;min-width:0!important;min-height:48px!important;padding:8px 12px!important;font-size:19px!important;letter-spacing:5px!important}

/* 奏折主体充分利用画面；选择和结果占同一位置。 */
.court-v9,.court-v9 .court-throne{height:100%!important;min-height:0!important;overflow:hidden!important}
.court-v9 .court-throne{display:grid!important;grid-template-rows:auto auto minmax(0,1fr)!important;padding:clamp(12px,2vw,26px)!important;gap:8px!important}
.court-v9 .court-memorial,.court-v9 .court-decision{width:min(92%,1240px)!important;max-width:none!important;height:100%!important;min-height:0!important;margin:0 auto!important;padding:clamp(18px,3vw,40px)!important;display:grid!important;grid-template-rows:auto minmax(0,1fr) auto!important;overflow:hidden!important}
.court-v9 .court-memorial p,.court-v9 .court-decision p{overflow:auto!important;font-size:clamp(18px,1.8vw,24px)!important;line-height:1.85!important}
.court-v9 .court-memorial-choices{display:grid!important;grid-template-columns:repeat(2,minmax(260px,1fr))!important;gap:12px!important;width:100%!important}
.court-v9 .court-memorial-choices button{width:100%!important;min-width:0!important;min-height:62px!important;padding:12px 20px!important;font-size:clamp(18px,1.6vw,23px)!important}
.court-v9 .court-decision{grid-template-rows:auto minmax(0,1fr) auto auto!important}
.court-v9 .court-decision button{position:static!important;justify-self:end!important;align-self:end!important;min-width:160px!important;min-height:54px!important;font-size:18px!important}

/* 人事：名单不再挤成窄条，详情及按钮保持可读。 */
.hr-split{height:100%!important;grid-template-columns:minmax(330px,36%) minmax(0,1fr)!important;gap:14px!important}
.hr-list{min-width:0!important;overflow:auto!important}
.hr-row{min-height:70px!important;padding:11px 14px!important}
.hr-row b{font-size:19px!important}.hr-row-pos,.hr-row-attrs{font-size:14px!important}
.hr-detail{height:100%!important;overflow:auto!important;padding:clamp(12px,2vw,24px)!important}
.hr-actions{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(145px,1fr))!important;gap:9px!important}
.hr-actions button{width:100%!important;min-width:0!important;min-height:50px!important;font-size:16px!important}

/* 天下：地图与右侧详情填满可用空间。 */
.world-page main,.world-page main>.panel-body,.v9-map-split,.v9-map-split>.panel-body{height:100%!important;min-height:0!important;min-width:0!important;overflow:hidden!important}
.world-page main>.panel-body,.v9-map-split>.panel-body{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(330px,34%)!important;gap:10px!important;padding:0!important}
.world-page #map-wrap,.v9-map-split #map-wrap{width:100%!important;height:100%!important;min-height:0!important;overflow:hidden!important}
.world-page #map-info,.v9-map-split #map-info{width:100%!important;height:100%!important;min-height:0!important;padding:12px!important;overflow:auto!important}
.world-focus{min-height:100%!important}.world-diplomacy{grid-template-columns:repeat(2,minmax(130px,1fr))!important;gap:9px!important}.world-diplomacy button{min-height:48px!important;font-size:15px!important}

/* 选阵营：桌面地图完整铺开；移动端用势力牌填补纵向空间。 */
#screen-root[data-mapselect="1"],.map-select-full{height:100%!important;overflow:hidden!important;background:#eee5cf!important}
.map-select-full{display:grid!important;grid-template-rows:58px minmax(0,1fr)!important}
.map-select-full #map-wrap{position:relative!important;width:100%!important;height:100%!important;display:grid!important;place-items:center!important;overflow:hidden!important;background:linear-gradient(145deg,#eee4c8,#d9dfbf)!important}
.map-select-full #map-canvas{display:block!important;max-width:100%!important;max-height:100%!important;background:#e7dfc6!important;touch-action:manipulation}
.ms-map-caption{position:absolute;left:50%;bottom:8px;transform:translateX(-50%);padding:5px 12px;color:#5a3a18;background:rgba(255,248,225,.88);border:1px solid rgba(167,114,40,.45);font-size:12px;pointer-events:none}
.ms-faction-grid{display:none}.ms-card{z-index:8!important;max-height:calc(100% - 74px)!important;overflow:auto!important}

/* 宫外：场景、操作、对话同处一张画面，不使用黑色底板或漂浮长条。 */
#action-rail[data-scene="visit"]{right:calc(var(--log-w) + 20px)!important;bottom:16px!important;width:176px!important;padding:0!important;background:transparent!important;border:0!important;box-shadow:none!important}
#action-rail[data-scene="visit"] button{width:100%!important;min-width:0!important;min-height:54px!important;font-size:18px!important;letter-spacing:3px!important}
.visit-scene{padding:14px 212px 14px 18px!important;background:
  linear-gradient(180deg,rgba(246,232,191,.34),rgba(187,139,70,.26)),
  radial-gradient(ellipse at 72% 38%,rgba(255,239,177,.48) 0 12%,transparent 34%),
  linear-gradient(150deg,#d7c88e 0 32%,#b88a4e 58%,#7e6338 100%)!important}
.visit-scene{box-shadow:inset 0 0 80px rgba(83,54,20,.18)!important}
.visit-scene>*{position:relative;z-index:1}
.visit-scene.place{display:grid!important;grid-template-rows:auto auto minmax(0,1fr)!important;gap:10px!important;overflow:hidden!important}
.visit-scene.place .visit-head{padding-right:0!important}.visit-head-right .visit-exit{display:none!important}
.visit-scene.place .visit-acts-col{position:absolute!important;right:18px!important;top:92px!important;width:176px!important;max-height:calc(100% - 180px)!important;display:grid!important;grid-template-columns:1fr!important;gap:9px!important;padding:0!important;overflow:auto!important;background:transparent!important;border:0!important;box-shadow:none!important}
.visit-scene.place .place-act-btn{width:100%!important;min-width:0!important;min-height:54px!important;padding:10px 12px!important;font-size:17px!important;letter-spacing:2px!important;background:linear-gradient(180deg,#fff3ce,#e8cb8d)!important;color:#533416!important;border:1px solid #ad7833!important}
.visit-scene.place .place-act-btn.is-done{opacity:.58!important}
.visit-scene.place .place-shop-group,.visit-scene.place .visit-shop{width:100%!important;background:transparent!important;border:0!important;box-shadow:none!important}
.visit-scene.place .visit-shop{display:grid!important;grid-template-columns:1fr!important;gap:6px!important;margin-top:6px!important}
.visit-scene.place .visit-shop article{display:grid!important;grid-template-columns:1fr auto!important;gap:3px 8px!important;padding:8px!important;background:rgba(255,247,222,.91)!important}
.visit-scene.place .visit-shop article span{grid-column:1/-1!important}.visit-scene.place .visit-shop article button{grid-column:2!important;grid-row:1!important;min-width:70px!important;min-height:34px!important;padding:4px 8px!important;font-size:13px!important}
.visit-dialog-reserve,.visit-dialog-reserve.is-active{position:absolute!important;left:18px!important;right:212px!important;bottom:14px!important;width:auto!important;height:clamp(210px,32%,300px)!important;min-height:0!important;max-height:none!important;padding:14px 16px!important;overflow:hidden!important;display:grid!important;background:linear-gradient(180deg,rgba(255,249,230,.96),rgba(239,220,179,.96))!important;border:1px solid #ad7833!important;box-shadow:0 7px 22px rgba(52,31,10,.25)!important;color:#4b3218!important;text-shadow:none!important}
.visit-dialog-reserve b,.visit-dialog-reserve h3,.visit-dialog-reserve span,.visit-dialog-reserve p{color:#4b3218!important;text-shadow:none!important}
.visit-person-picker{display:flex!important;align-items:stretch!important;gap:8px!important;min-height:0!important;overflow:auto!important}
.visit-person-choice{flex:1 1 150px!important;min-width:140px!important;min-height:72px!important;padding:10px!important;background:rgba(255,252,239,.88)!important}
.visit-conversation{height:100%!important;min-height:0!important;display:grid!important;grid-template-rows:auto minmax(0,1fr) auto!important;gap:7px!important}
.visit-conversation .visit-monologue,.visit-conversation .visit-reply{min-height:0!important;overflow:auto!important;margin:0!important;font-size:15px!important;line-height:1.72!important;color:#4b3218!important;text-shadow:none!important}
.visit-conversation .visit-reply{padding-top:7px!important;border-top:1px solid rgba(155,105,37,.45)!important}
.visit-answer-list{display:grid!important;grid-template-columns:repeat(2,minmax(220px,1fr))!important;gap:8px!important;max-height:120px!important;overflow:auto!important}
.visit-answer-list .dialogue-answer{width:100%!important;min-width:0!important;min-height:48px!important;font-size:15px!important}
.dialogue-read-footer{display:flex!important;justify-content:flex-end!important}.dialogue-read-footer button{min-width:132px!important}

/* 人物候选大卡：统一3:4展示区和足够宽的操作按钮。 */
.candidate-modal{width:min(1180px,calc(100vw - 30px))!important;height:min(760px,calc(100dvh - 24px))!important;padding:16px!important;overflow:hidden!important}
.candidate-view{height:100%!important;grid-template-columns:minmax(260px,34%) minmax(0,1fr)!important;gap:14px!important}
.candidate-portrait{width:100%!important;aspect-ratio:3/4!important;max-height:100%!important;align-self:center!important;overflow:hidden!important;background:#d8c69e!important}
.candidate-portrait img{width:100%!important;height:100%!important;object-fit:cover!important;object-position:center top!important}
.candidate-profile{padding:14px!important;padding-bottom:82px!important;overflow:auto!important}
.candidate-actions{display:flex!important;flex-wrap:wrap!important;justify-content:flex-end!important;gap:9px!important}
.candidate-actions button{min-width:132px!important;min-height:50px!important;font-size:16px!important}
.bio-card,.cand-block p{font-size:14px!important;line-height:1.75!important}

/* 弹窗和所有普通操作按钮不再窄成文字柱。 */
#modal-box{max-width:min(1040px,calc(100vw - 24px))!important;max-height:calc(100dvh - 24px)!important;overflow:auto!important}
#modal-box .row-flex{gap:10px!important}#modal-box .row-flex button{min-width:128px!important}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.modal-actions button{min-width:150px!important}

@media(max-width:1100px){
  :root{--log-w:216px}
  #action-rail[data-scene="court"]{grid-template-columns:repeat(7,minmax(86px,1fr))!important;gap:5px!important}
  #action-rail[data-scene="court"]>button{font-size:15px!important;letter-spacing:1px!important;padding:6px 4px!important}
  .world-page main>.panel-body,.v9-map-split>.panel-body{grid-template-columns:minmax(0,1fr) minmax(270px,36%)!important}
  .hr-split{grid-template-columns:minmax(280px,35%) minmax(0,1fr)!important}
}

@media(max-width:700px){
  :root{--log-w:40px;--court-nav-h:66px}
  #topbar{display:grid!important;padding:3px 66px 3px 3px!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;grid-template-rows:repeat(2,30px)!important;gap:2px!important;min-height:66px!important;max-height:66px!important}
  #topbar>span{display:flex!important;min-width:0!important;min-height:0!important;font-size:9px!important;padding:2px!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
  #tb-ruler{display:none!important}
  #corner-settings{right:5px!important;width:56px!important;min-width:56px!important;font-size:12px!important}
  #action-rail[data-scene="court"]{left:4px!important;right:calc(var(--log-w) + 4px)!important;bottom:4px!important;height:60px!important;min-height:60px!important;padding:4px!important;gap:3px!important;grid-template-columns:repeat(7,minmax(0,1fr))!important}
  #action-rail[data-scene="court"]>button{height:50px!important;min-height:50px!important;min-width:0!important;padding:4px 1px!important;font-size:clamp(12px,3.25vw,15px)!important;letter-spacing:0!important}
  #screen-root[data-court="1"] .v7-page,#screen-root[data-court="1"] .world-page{padding-bottom:68px!important}
  #rail-flyout{bottom:58px!important;width:130px!important}#rail-flyout button{min-width:114px!important;font-size:14px!important}
  .court-v9 .court-memorial,.court-v9 .court-decision{width:98%!important;padding:12px!important}
  .court-v9 .court-memorial p,.court-v9 .court-decision p{font-size:15px!important;line-height:1.55!important}
  .court-v9 .court-memorial-choices{grid-template-columns:1fr!important;gap:6px!important}
  .court-v9 .court-memorial-choices button{min-height:44px!important;font-size:15px!important;padding:7px 10px!important}
  .hr-split{grid-template-columns:minmax(138px,38%) minmax(0,1fr)!important;gap:6px!important}.hr-row{min-height:62px!important;padding:7px!important}.hr-row b{font-size:15px!important}.hr-row-pos,.hr-row-attrs{font-size:11px!important}.hr-actions{grid-template-columns:1fr!important}.hr-actions button{width:100%!important;min-width:96px!important;font-size:13px!important;min-height:44px!important}
  .world-page main>.panel-body,.v9-map-split>.panel-body{grid-template-columns:1fr!important;grid-template-rows:minmax(0,55%) minmax(0,45%)!important}.world-page #map-info,.v9-map-split #map-info{padding:6px!important}
  .map-select-full{grid-template-rows:auto minmax(210px,42%) minmax(0,1fr)!important}.map-select-full #map-wrap{grid-row:2!important}.ms-head{grid-row:1!important}.ms-faction-grid{grid-row:3!important;display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;align-content:start!important;gap:5px!important;padding:7px!important;overflow:auto!important;background:#eee5cf!important}.ms-faction-grid button{min-width:0!important;min-height:48px!important;padding:5px!important;border:2px solid var(--faction)!important;background:rgba(255,249,229,.94)!important;color:#4a2d13!important}.ms-faction-grid b{display:block;font-size:14px}.ms-faction-grid span{display:block;font-size:10px;color:#7b5a30}.ms-map-caption{font-size:10px!important;bottom:4px!important}.ms-card{position:fixed!important;left:8px!important;right:8px!important;bottom:8px!important;width:auto!important;max-height:52dvh!important}
  #action-rail[data-scene="palace"]{right:calc(var(--log-w) + 7px)!important;width:92px!important;padding:4px!important;gap:5px!important}#action-rail[data-scene="palace"]>button{font-size:14px!important;letter-spacing:1px!important;padding:5px!important}
  #action-rail[data-scene="visit"]{right:calc(var(--log-w) + 7px)!important;bottom:8px!important;width:92px!important}#action-rail[data-scene="visit"] button{font-size:14px!important;letter-spacing:1px!important;min-height:48px!important}
  .visit-scene{padding:8px 106px 8px 8px!important}.visit-scene.place{padding-bottom:238px!important}.visit-scene.place .visit-acts-col{top:74px!important;right:7px!important;width:92px!important;max-height:calc(100% - 140px)!important;gap:5px!important}.visit-scene.place .place-act-btn{min-height:46px!important;padding:6px 3px!important;font-size:14px!important;letter-spacing:0!important}.visit-dialog-reserve,.visit-dialog-reserve.is-active{left:8px!important;right:106px!important;bottom:8px!important;height:222px!important;padding:8px!important}.visit-person-picker{display:grid!important;grid-template-columns:1fr!important}.visit-person-choice{min-width:0!important;min-height:55px!important}.visit-answer-list{grid-template-columns:1fr!important;max-height:92px!important}.visit-answer-list .dialogue-answer{font-size:13px!important;min-height:42px!important}.visit-conversation .visit-monologue,.visit-conversation .visit-reply{font-size:13px!important;line-height:1.5!important}
  .candidate-modal{width:calc(100vw - 8px)!important;height:calc(100dvh - 8px)!important;padding:6px!important}.candidate-view{grid-template-columns:minmax(118px,36%) minmax(0,1fr)!important;gap:6px!important}.candidate-profile{padding:7px!important;padding-bottom:74px!important}.candidate-profile h2{font-size:19px!important}.candidate-actions{gap:4px!important}.candidate-actions button{min-width:0!important;flex:1 1 44%!important;min-height:42px!important;padding:6px!important;font-size:13px!important}.bio-card,.cand-block p{font-size:11px!important;line-height:1.45!important}
  #modal-box{width:calc(100vw - 12px)!important;max-width:calc(100vw - 12px)!important;padding:12px!important}#modal-box .row-flex button{min-width:108px!important}
}

@media(max-width:420px){
  .ms-faction-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .visit-dialog-reserve,.visit-dialog-reserve.is-active{right:8px!important;height:226px!important}.visit-scene.place{padding-right:106px!important;padding-bottom:240px!important}
  .candidate-attrs{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
