/* Preserve the approved page compositions. Desktop is a real 16:9 frame, without stretching. */
:root{--workspace-font:'Noto Sans CJK SC','PingFang SC','Microsoft YaHei',Arial,sans-serif;--workspace-display:'Noto Serif CJK SC','Songti SC',SimSun,serif;--cn-font:var(--workspace-font);--workspace-frame-height:100dvh;--workspace-frame-width:100vw}
html body{font-family:var(--workspace-font);font-stretch:normal}
html body .app.app-ready,html body #authRoot{font-family:var(--workspace-font)!important;font-stretch:normal!important}
html body .app.app-ready :is(input,select,textarea,button,label){font-family:var(--workspace-font)!important;font-stretch:normal!important}
html body .app.app-ready :is(h1,h2,h3,h4){font-family:var(--workspace-display)!important;font-stretch:normal!important}
html body .app.app-ready img{object-fit:contain}
html body .app.app-ready :is(.gender-avatar,.pc-avatar,.ri-avatar,.trade-candidate-avatar,.fd-person) img{object-fit:cover}
html body #authRoot .scene-reference-art{object-fit:cover!important;object-position:center!important}
html body .app.app-ready #france70chat .fr70-layout[hidden],html body .app.app-ready #france70chat #fr70DailyRoot[hidden]{display:none!important}
@media(min-width:901px){
 html body{min-height:100dvh;background:#252722}
 html body:has(.app.app-ready.ink-shell){height:100dvh;overflow:hidden;display:grid;place-items:center}
 html body .app.app-ready.ink-shell{--workspace-frame-width:min(100vw,177.7777778dvh);--workspace-frame-height:min(100dvh,56.25vw);--ink-sidebar:clamp(202px,calc(var(--workspace-frame-width)*.147),282px);position:relative!important;width:var(--workspace-frame-width)!important;height:var(--workspace-frame-height)!important;min-height:0!important;max-height:none!important;margin:0 auto!important;aspect-ratio:16/9;overflow:hidden!important}
 html body .app.app-ready.ink-shell>.sidebar{position:absolute!important;inset:0 auto 0 0!important;height:100%!important;width:var(--ink-sidebar)!important}
 html body .app.app-ready.ink-shell>.main{height:100%!important;min-height:0!important;width:calc(100% - var(--ink-sidebar))!important;margin-left:var(--ink-sidebar)!important;overflow-y:auto!important}
 html body #authRoot{--workspace-frame-width:min(100vw,177.7777778dvh);--workspace-frame-height:min(100dvh,56.25vw);inset:auto!important;top:50%!important;left:50%!important;width:var(--workspace-frame-width)!important;height:var(--workspace-frame-height)!important;transform:translate(-50%,-50%)!important;aspect-ratio:16/9}
}
/* Keep primary controls inside the desktop frame; long content scrolls within its panel. */
@media(min-width:1101px){
 html body .app.app-ready.ink-writing #novel .wi-workspace{height:calc(var(--workspace-frame-height) - 234px);box-sizing:border-box;min-height:0;align-items:stretch}
 html body .app.app-ready.ink-writing #novel .editor-card{height:100%;min-height:0;display:flex;flex-direction:column}
 html body .app.app-ready.ink-writing #novel #dailyEditor{flex:1;min-height:0!important;max-height:none!important;overflow:auto}
 html body .app.app-ready.ink-writing #novel .wi-insights{height:100%;min-height:0;grid-template-rows:minmax(0,1.05fr) minmax(0,1fr)}
 html body .app.app-ready.ink-writing #novel :is(.speech-panel,.memory-panel){display:flex;flex-direction:column;min-height:0!important;overflow:hidden}
 html body .app.app-ready.ink-writing #novel :is(#speechRanking,#writingHistory){flex:1;min-height:0;max-height:none!important;overflow:auto}
 html body .app.app-ready.ink-france #fr70DailyRoot .fd-workbench{height:calc(var(--workspace-frame-height) - 310px);min-height:0}
 html body .app.app-ready.ink-france #fr70DailyRoot :is(.fd-plan,.fd-cast){display:flex;flex-direction:column;min-height:0}
 html body .app.app-ready.ink-france #fr70DailyRoot :is(.fd-plan-fields,#fdCastRoster){flex:1;min-height:0;overflow:auto}
 html body .app.app-ready.ink-france #fr70DailyRoot :is(.fd-panel-head,.fd-timezone,.fd-plan-foot){flex-shrink:0}
 html body .app.app-ready.ink-france #fr70DailyRoot .fd-workflow{min-height:86px;padding:8px 14px;box-sizing:border-box}
}
/* The transaction workspace is fixed; only data panels scroll. */
@media(min-width:1101px){
 html body .app.app-ready.ink-trade>.main{overflow:hidden!important}
 html body .app.app-ready.ink-trade #tradeRecommend.active,
 html body .app.app-ready.ink-trade #tradeRecommendBody{height:100%;min-height:0!important;overflow:hidden}
 html body .app.app-ready.ink-trade #tradeRecommendBody{display:flex;flex-direction:column}
 html body .app.app-ready.ink-trade #tradeRecommendBody>.topbar{flex-shrink:0}
 html body .app.app-ready.ink-trade #tradeRecommend .ti-workspace{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}
 html body .app.app-ready.ink-trade #tradeRecommend .trade-plan-panel{flex-shrink:0}
 html body .app.app-ready.ink-trade #tradeRecommend .trade-plan-list{max-height:122px;overflow:auto}
 html body .app.app-ready.ink-trade #tradeRecommend .trade-studio{flex:1;min-height:0;overflow:hidden}
 html body .app.app-ready.ink-trade #tradeRecommend :is(.trade-current-panel,.trade-recommend-people){height:100%;min-height:0!important;box-sizing:border-box;overflow:hidden;display:flex!important;flex-direction:column}
 html body .app.app-ready.ink-trade #tradeRecommend .trade-current-summary{flex:1;min-height:0;overflow:auto}
 html body .app.app-ready.ink-trade #tradeRecommend :is(#recommendPeople,.ti-summary,.panel-head){flex-shrink:0}
 html body .app.app-ready.ink-trade #tradeRecommend .trade-candidate-list{flex:1;min-height:0;overflow:auto}
}
/* Shared type hierarchy: identical semantic levels across all nine modules. */
:root{--ui-page-title:clamp(32px,3.1vw,52px);--ui-section-title:22px;--ui-body:14px;--ui-caption:12px;--ui-control:14px}
html body .app.app-ready.ink-shell :is(#overview,#people,#groups,#tradeRecommend,#holdingsV2,#trades,#records,#novel,#france70chat).active .page-title{font-size:var(--ui-page-title)!important;line-height:1.2!important;letter-spacing:1px!important}
html body .app.app-ready.ink-shell :is(#overview,#people,#groups,#tradeRecommend,#holdingsV2,#trades,#records,#novel,#france70chat).active :is(.panel-head h2,.speech-head h2,.fd-panel-head h2){font-size:var(--ui-section-title)!important;line-height:1.4!important}
html body .app.app-ready.ink-shell :is(#overview,#people,#groups,#tradeRecommend,#holdingsV2,#trades,#records,#novel,#france70chat).active :is(.sub,.panel-head p,.panel-head .muted,label,input,select,textarea,.btn){font-size:var(--ui-body)!important;line-height:1.5!important}
html body .app.app-ready.ink-shell :is(#overview,#people,#groups,#tradeRecommend,#holdingsV2,#trades,#records,#novel,#france70chat).active :is(.eyebrow,.ti-header-date,.wi-date,.fd-header-date){font-size:var(--ui-caption)!important;line-height:1.4!important}
@media(max-width:900px){:root{--ui-page-title:32px;--ui-section-title:20px}}
@media(min-width:1101px){
 html body .app.app-ready.ink-trade #tradeRecommend .trade-current-summary{overflow:hidden}
 html body .app.app-ready.ink-trade #tradeRecommend .offer-stat{min-height:22px!important;padding:2px 4px!important}
 html body .app.app-ready.ink-trade #tradeRecommend .offer-stat :is(span,b){font-size:12px!important;line-height:1.3!important}
 html body .app.app-ready.ink-trade #tradeRecommend .trade-current-title{font-size:18px!important;margin-bottom:6px!important;line-height:1.3!important}
 html body .app.app-ready.ink-trade #tradeRecommend .trade-current-title :is(b,span){font-size:18px!important}
 html body .app.app-ready.ink-trade #tradeRecommend #recommendPeople{min-height:36px!important;height:36px;margin:8px 0!important;font-size:12px!important}
 html body .app.app-ready.ink-trade #tradeRecommend .ti-summary{min-height:54px;padding:6px 0}
 html body .app.app-ready.ink-trade #tradeRecommend .trade-summary-chip{font-size:12px!important;gap:5px}
 html body .app.app-ready.ink-trade #tradeRecommend .trade-summary-chip b{font-size:18px!important}
}
@media(min-width:1101px){
 html body .app.app-ready.ink-trade #tradeRecommend .trade-candidate-list{overflow:hidden;display:flex;flex-direction:column;gap:8px}
 html body .app.app-ready.ink-trade #tradeRecommend .trade-candidate-row{min-height:100px!important;padding:10px!important}
 html body .app.app-ready.ink-trade #tradeRecommend .trade-candidate-avatar,html body .app.app-ready.ink-trade #tradeRecommend .trade-candidate-avatar>*{width:64px!important;height:64px!important}
 html body .app.app-ready.ink-trade #tradeRecommend .trade-candidate-person{grid-template-columns:64px minmax(0,1fr)!important}
 html body .app.app-ready.ink-trade #tradeRecommend .ti-page-hidden{display:none!important}
 .ti-candidate-pager{display:flex;justify-content:center;align-items:center;gap:16px;padding-top:8px;flex-shrink:0;font-size:12px}.ti-candidate-pager[hidden]{display:none}.ti-candidate-pager button{font-size:12px;padding:4px 12px}
}
@media(min-width:1101px){
 html body .app.app-ready.ink-trade #tradeRecommend .offer-stat{min-height:18px!important;padding:0 4px!important}
 html body .app.app-ready.ink-trade #tradeRecommend .trade-current-panel>.panel-head{margin-bottom:6px!important}
 html body .app.app-ready.ink-trade #tradeRecommend .trade-candidate-row{flex-shrink:0}
 html body .app.app-ready.ink-trade #tradeRecommend :is(.ti-person-meta,.ti-person-info>small,.ti-candidate-facts span,.ti-candidate-facts b,.ti-funding small){font-size:12px!important;line-height:1.3!important}
 html body .app.app-ready.ink-trade #tradeRecommend .ti-person-name>b{font-size:14px!important}
}
