/* Owner workspace: one semantic palette, independent full-page business views. */
.ow-shell,.ow-identity{font:14px/1.6 var(--uf-font);font-variant-numeric:tabular-nums lining-nums;color:var(--uf-text);background:var(--uf-bg);min-height:100vh;box-sizing:border-box}
.ow-shell *,.ow-identity *{box-sizing:border-box}
.ow-shell a,.ow-identity a{color:inherit;text-decoration:none}
.ow-shell button,.ow-shell input,.ow-identity button{font:inherit;color:inherit}
.ow-shell{display:grid;grid-template-columns:224px minmax(0,1fr)}
.ow-sidebar{border-right:1px solid var(--uf-divider);padding:30px 18px;display:flex;flex-direction:column;gap:34px;position:sticky;top:0;height:100vh;background:var(--uf-bg)}
.ow-brand{display:flex;align-items:center;gap:12px;font-weight:650;font-size:17px}.ow-brand small{display:block;font-size:11px;font-weight:400;color:var(--uf-muted);margin-top:3px}
.ow-emblem{display:inline-grid;place-items:center;width:38px;height:38px;border:1px solid var(--uf-accent);border-radius:10px;color:var(--uf-accent);font-size:20px}
.ow-sidebar nav{display:grid;gap:7px}.ow-nav{display:block;padding:10px 14px;border-radius:6px;border-left:2px solid transparent}.ow-nav span{display:block;font-weight:550}.ow-nav small{font-size:11px;color:var(--uf-muted)}.ow-nav:hover{background:var(--uf-surface)}.ow-nav.is-active{border-left-color:var(--uf-accent);background:var(--uf-surface-hover)}
.ow-sidebar-bottom{margin-top:auto;font-size:12px;color:var(--uf-muted)}.ow-sidebar-bottom a{display:inline-block;margin-top:8px;text-decoration:underline;text-underline-offset:4px}.ow-mode{color:var(--uf-warn);font-size:12px;border:1px solid var(--uf-divider);border-radius:4px;padding:3px 7px}
.ow-body{min-width:0}.ow-topbar{display:flex;justify-content:space-between;align-items:center;padding:15px 36px;border-bottom:1px solid var(--uf-divider);color:var(--uf-muted);font-size:12px}.ow-topbar>div{display:flex;gap:20px;align-items:center}.ow-shell button{border:1px solid var(--uf-divider);border-radius:5px;background:var(--uf-surface);padding:7px 12px;cursor:pointer}.ow-shell button:hover{background:var(--uf-surface-hover)}
.ow-content{padding:28px 36px 50px;max-width:1700px;margin:auto}.ow-heading{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:20px}.ow-heading p{font-size:12px;color:var(--uf-muted);margin:0}.ow-heading h1{font-size:28px;line-height:1.4;font-weight:600;letter-spacing:-.6px;margin:5px 0 0}.ow-asof{display:grid;text-align:right;color:var(--uf-muted);font-size:11px;overflow-wrap:anywhere}.ow-asof time{color:var(--uf-text)}
.ow-disclosure{border-left:2px solid var(--uf-warn);background:var(--uf-surface);padding:10px 14px;color:var(--uf-muted);font-size:12px;margin:0 0 22px}.ow-brief{display:grid;grid-template-columns:minmax(0,1fr) 260px;border:1px solid var(--uf-divider);border-radius:10px;margin-bottom:24px;background:var(--uf-surface);overflow:hidden}.ow-brief>div{padding:30px}.ow-brief span{color:var(--uf-muted);font-size:12px}.ow-brief h2{font-size:27px;font-weight:550;margin:12px 0}.ow-brief p{color:var(--uf-muted);max-width:560px;margin-bottom:22px}.ow-brief-status{border-left:1px solid var(--uf-divider);display:flex;flex-direction:column;justify-content:center}.ow-brief-status strong{font-size:34px;color:var(--uf-warn);font-weight:500;margin-top:10px}.ow-brief-status a{color:var(--uf-accent);font-size:12px}.ow-action{display:inline-flex;align-items:center;padding:8px 14px;border:1px solid var(--uf-border);border-radius:5px;font-size:12px}.ow-action:hover{background:var(--uf-surface-hover)}
.ow-metric-row{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--uf-divider);padding-bottom:24px;margin:24px 0 26px}.ow-metric-row section{padding:0 24px;border-right:1px solid var(--uf-divider)}.ow-metric-row section:first-child{padding-left:0}.ow-metric-row section:last-child{border:0}.ow-metric-row span,.ow-metric-row small{display:block;color:var(--uf-muted);font-size:12px}.ow-metric-row strong{display:block;font-size:32px;font-weight:450;margin:4px 0}
.ow-two-col{display:grid;grid-template-columns:1fr 1fr;gap:22px}.ow-gap{border:1px solid var(--uf-divider);border-radius:8px;padding:22px;margin-bottom:24px;background:var(--uf-surface)}.ow-gap h2,.ow-section h2,.ow-settings h2{font-size:16px;font-weight:600;margin:0}.ow-gap p{color:var(--uf-muted);font-size:13px;max-width:780px;margin:12px 0 18px}.ow-section{margin:0 0 26px;border:1px solid var(--uf-divider);border-radius:8px;overflow:hidden;background:var(--uf-surface)}.ow-section-heading{padding:18px 20px;display:flex;justify-content:space-between;align-items:center;gap:14px}.ow-section-heading>span{color:var(--uf-muted);font-size:11px}.ow-table{overflow:auto}.ow-table table{width:100%;border-collapse:collapse;white-space:nowrap;font-size:12px}.ow-table th{color:var(--uf-muted);font-weight:500;text-align:left;background:var(--uf-bg)}.ow-table th,.ow-table td{padding:9px 20px;border-bottom:1px solid var(--uf-divider)}.ow-table tr:last-child td{border-bottom:0}.ow-table tbody tr:hover{background:var(--uf-surface-hover)}.ow-note,.ow-empty{color:var(--uf-muted);font-size:12px;padding:0 20px 15px}.ow-path{padding:22px}.ow-path p{line-height:2;color:var(--uf-text)}.ow-path small{color:var(--uf-muted)}
.ow-watch{display:flex;gap:10px;flex-wrap:wrap;padding:0 20px 20px}.ow-watch button{text-align:left}.ow-watch small{display:block;font-size:11px;color:var(--uf-muted)}.ow-watch .is-active{border-color:var(--uf-accent)}.ow-shell input{background:var(--uf-bg);border:1px solid var(--uf-border);border-radius:5px;padding:8px 12px;width:280px;max-width:100%;font-size:12px}.ow-event-list{display:grid;grid-template-columns:1fr 1fr;gap:0}.ow-event-list article{padding:18px 20px;border-top:1px solid var(--uf-divider)}.ow-event-list article:nth-child(odd){border-right:1px solid var(--uf-divider)}.ow-event-list article>div{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--uf-muted)}.ow-symbol{font-size:14px;color:var(--uf-text);font-weight:600}.ow-event-list h3{font-size:14px;font-weight:500;margin:10px 0}.ow-event-list p,.ow-event-list footer{font-size:11px;color:var(--uf-muted)}.ow-event-list footer{display:flex;gap:12px;justify-content:space-between;flex-wrap:wrap}.ow-settings{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--uf-divider);border-radius:8px;overflow:hidden;margin-bottom:24px}.ow-settings section{padding:24px;background:var(--uf-surface);border-bottom:1px solid var(--uf-divider)}.ow-settings h2{margin-bottom:12px}.ow-settings p{color:var(--uf-muted);font-size:13px;margin-bottom:0}.ow-links{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:24px}
.ow-identity{display:grid;place-items:center;padding:24px}.ow-identity-panel{max-width:460px;padding:36px;border:1px solid var(--uf-divider);border-radius:12px;background:var(--uf-surface)}.ow-identity h1{font-size:26px;font-weight:550}.ow-identity p,.ow-identity small{color:var(--uf-muted)}.ow-identity button{display:block;width:100%;padding:12px;border:1px solid var(--uf-divider);background:var(--uf-bg);border-radius:5px;margin:24px 0 12px}.ow-identity small{display:block;font-size:11px;margin-top:20px}.ow-shell :focus-visible,.ow-identity :focus-visible{outline:2px solid var(--uf-accent);outline-offset:3px}
/* 测试登录是本地合成身份入口，真实登录没开放。所以它被围进虚线框，与「重新检查会话」
   这类正式操作分开，免得有人把这条通道当成登录本站的正规方式。 */
.ow-login{display:grid;gap:5px;margin:0 0 10px;padding:16px 18px;border:1px dashed var(--uf-border);border-radius:8px}
.ow-login label{font-size:11px;color:var(--uf-muted)}
.ow-login label+input{margin-bottom:8px}
.ow-login input{width:100%;background:var(--uf-bg);border:1px solid var(--uf-border);border-radius:5px;padding:9px 12px;font-size:13px}
.ow-login input:focus-visible{border-color:var(--uf-accent)}
.ow-login button{display:block;width:100%;margin:6px 0 0;padding:10px}
/* 权限范围逐条是标签，不是正文列表：横排成一行，读起来像「这次会话挂了哪几个范围」。 */
.ow-identity ul{list-style:none;display:flex;flex-wrap:wrap;gap:6px;padding:0;margin:0 0 16px}
.ow-identity ul li{border:1px solid var(--uf-divider);border-radius:999px;padding:3px 10px;font-size:11px;color:var(--uf-muted)}
.ow-row{display:flex;gap:10px;margin-top:22px}
.ow-row button{display:block;flex:1 1 0;width:auto;margin:0}
@media(max-width:1050px){.ow-shell{grid-template-columns:180px 1fr}.ow-content{padding:24px}.ow-brief{grid-template-columns:1fr 210px}.ow-brief>div{padding:22px}.ow-brief h2{font-size:23px}.ow-metric-row section{padding:0 12px}.ow-topbar{padding:15px 24px}}
@media(max-width:720px){.ow-shell{display:block}.ow-sidebar{position:static;height:auto;padding:16px;gap:16px;border-right:0;border-bottom:1px solid var(--uf-divider)}.ow-sidebar nav{display:flex;overflow:auto;gap:6px}.ow-nav{flex-shrink:0;padding:8px 12px}.ow-nav small,.ow-sidebar-bottom{display:none}.ow-topbar{padding:12px 18px}.ow-content{padding:20px 16px}.ow-heading{align-items:start}.ow-heading h1{font-size:23px}.ow-asof{max-width:140px}.ow-brief{grid-template-columns:1fr}.ow-brief-status{border-left:0;border-top:1px solid var(--uf-divider)}.ow-brief-status strong{font-size:26px}.ow-brief-status p{margin:6px 0}.ow-metric-row{grid-template-columns:1fr 1fr;gap:18px}.ow-metric-row section{padding:0;border:0}.ow-two-col,.ow-settings,.ow-event-list{grid-template-columns:1fr}.ow-event-list article:nth-child(odd){border-right:0}.ow-section-heading{align-items:start;flex-wrap:wrap}.ow-table td,.ow-table th{padding:8px 14px}.ow-identity-panel{padding:26px}}

.ow-table .ow-number{text-align:right}.ow-asof time{white-space:normal;max-width:210px}

/* Neutral candidate: equal-channel greys; interaction colors remain user configurable. */
/* L1 调色板：本作用域重设 --uf-* 即整体换壳。R2.4 后 legacy 别名已全部退役，无需再就地重桥
   （legacy→uf 映射与收敛过程见 docs/design/theme-layer-convergence-20261005.md §3）。
   语义色只在此处定 --uf-warn（仍表达警告，属正式主题配色）。
   --uf-info **不得**在此重设：本块曾把它定为正文灰 #dddddd/#333333，导致信息态位被挪作普通文字灰，
   与「交互用 accent、状态用 info」的分层冲突；需要灰字请用 --uf-text/--uf-muted。 */
.ow-shell,.ow-identity{--uf-bg:#1b1b1b;--uf-surface:#252525;--uf-surface-hover:#333333;--uf-text:#eeeeee;--uf-muted:#b8b8b8;--uf-border:#777777;--uf-divider:#404040;--uf-accent:#dddddd;--uf-warn:#edc487}
html[data-theme="light"] .ow-shell,html[data-theme="light"] .ow-identity{--uf-bg:#f5f5f5;--uf-surface:#ffffff;--uf-surface-hover:#ededed;--uf-text:#252525;--uf-muted:#666666;--uf-border:#999999;--uf-divider:#dddddd;--uf-accent:#333333;--uf-warn:#855823}
.ow-sidebar{background:var(--uf-surface);color:var(--uf-text);border-right-color:var(--uf-divider);gap:26px;padding:28px 18px}
.ow-sidebar .ow-brand small,.ow-sidebar-bottom{color:var(--uf-muted)}.ow-sidebar .ow-emblem{color:var(--uf-text);border-color:var(--uf-divider);background:transparent}
.ow-sidebar .ow-nav:hover,.ow-sidebar .ow-nav.is-active{background:var(--uf-surface-hover)}.ow-sidebar .ow-nav.is-active{border-left-color:var(--uf-text)}.ow-sidebar .ow-mode{color:var(--uf-muted);border-color:var(--uf-divider)}
.ow-nav{padding:12px 14px;font-size:14px;border-radius:5px}.ow-topbar{background:var(--uf-surface)}.ow-brief{border-radius:6px}.ow-brief-status strong{color:var(--uf-muted)}.ow-shell .ow-action,.ow-identity .ow-action{background:var(--uf-surface);border-color:var(--uf-divider);color:var(--uf-accent)}.ow-section-heading{background:var(--uf-surface)}.ow-disclosure{background:transparent;border-left-color:var(--uf-border);padding-left:12px}
.ow-settings{gap:0;background:var(--uf-surface);grid-template-columns:1fr;border-radius:5px}.ow-settings section{border:0;border-bottom:1px solid var(--uf-divider);padding:20px 24px;display:grid;grid-template-columns:160px 80px 1fr;gap:18px;align-items:start}.ow-settings h2{margin:0}.ow-settings p{margin:0}.ow-settings .ow-mode{display:inline-block;justify-self:start}
.ow-utility{margin-top:auto;border-top:1px solid var(--uf-divider);padding-top:18px;gap:3px!important}.ow-utility a{padding:9px 14px;border-radius:5px;font-size:12px;color:var(--uf-muted)}.ow-utility a:hover,.ow-utility a.is-active{background:var(--uf-surface-hover);color:var(--uf-text)}.ow-sidebar-bottom{margin-top:0;padding:4px 14px}.ow-sidebar-bottom p{margin:8px 0}
.ow-localviews{display:flex;gap:22px;border-bottom:1px solid var(--uf-divider);margin:0 0 24px}.ow-localviews a{padding:8px 0 12px;font-size:13px;color:var(--uf-muted);border-bottom:2px solid transparent}.ow-localviews a.is-active{border-bottom-color:var(--uf-text);color:var(--uf-text);font-weight:600}
.ow-admin .card{background:var(--uf-surface);border-color:var(--uf-divider);border-radius:6px;padding:20px}.ow-admin h2{font-size:20px;margin:0 0 14px}.ow-admin h3{font-size:15px;font-weight:600}.ow-admin .heading{margin:4px 0 18px}.ow-admin .muted{color:var(--uf-muted)}.ow-admin table{font-size:12px}.ow-admin th{color:var(--uf-muted);background:var(--uf-bg);text-align:left}.ow-admin th,.ow-admin td{border-bottom:1px solid var(--uf-divider);padding:9px 12px}.ow-admin .table-wrap{overflow:auto}.ow-admin .badge{font-size:11px}.ow-admin button{background:var(--uf-surface-hover)}
@media(max-width:720px){.ow-sidebar{gap:14px;padding:16px}.ow-sidebar nav{flex-wrap:wrap;overflow:visible}.ow-utility{display:flex!important;flex-wrap:wrap;padding-top:10px;gap:8px!important}.ow-utility a{padding:4px 8px}.ow-settings section{grid-template-columns:1fr auto;gap:10px}.ow-settings p{grid-column:1/-1}.ow-admin .card{padding:16px}}

.service-language{display:inline-block;padding:2px 7px;font-size:11px;color:var(--uf-muted);border:1px solid var(--uf-divider);border-radius:4px}.ow-admin>.heading h2{font-size:16px;color:var(--uf-muted)}

.ow-shell .studio-scene-stage,.ow-shell .u04-canvas,.ow-shell .u05-canvas{background:#191919}
/* .ow-shell .wr-studio 的 legacy 重桥已删：warroom 系 100% 消费 --uf-*，且 .wr-studio 不重设 --uf-*，
   故该重桥与 .ow-shell 求得同值（浏览器实测一致），保留只会造成散落别名。见收敛文档 §3。 */
.ow-shell .wr-studio>.wr-topbar{display:none}
.ow-shell .u04-badge.s-mode-3d,.ow-shell .u04-chip.s-demo,.ow-shell .u05-badge.g-mode-3d{color:var(--uf-muted);background:var(--uf-surface-hover)}
.ow-shell .u04-chip.is-selected{outline-color:var(--uf-accent)}

html[data-theme="light"] .ow-shell[data-palette="warm"],html[data-theme="light"] .ow-identity[data-palette="warm"]{--uf-bg:#eef2e8;--uf-surface:#fbfcf7;--uf-surface-hover:#e1e8d8;--uf-text:#2d3329;--uf-muted:#59634f;--uf-divider:#d7dfcf;--uf-border:#87917d}
.ow-appearance{padding:22px}.ow-appearance>p{color:var(--uf-muted);font-size:12px}.ow-palette-options{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:20px 0}.ow-shell .ow-palette{padding:16px;text-align:left;background:var(--uf-surface);border:1px solid var(--uf-divider)}.ow-shell .ow-palette.is-active{border-color:var(--uf-accent);box-shadow:inset 0 0 0 1px var(--uf-accent)}.ow-palette strong,.ow-palette small{display:block}.ow-palette small{color:var(--uf-muted);font-size:11px;margin-top:4px}.ow-swatch{display:block;height:35px;border-radius:4px;margin-bottom:12px;border:1px solid #bfbfbf;background:linear-gradient(90deg,#252525 0 22%,#f5f5f5 22% 70%,#fff 70%)}.swatch-warm{background:linear-gradient(90deg,#252525 0 22%,#eef2e8 22% 70%,#fbfcf7 70%)}.swatch-graphite{background:linear-gradient(90deg,#252525 0 22%,#1c1c1c 22% 70%,#363636 70%)}.ow-color-controls{display:flex;gap:20px;align-items:center;flex-wrap:wrap}.ow-color-controls label{display:flex;gap:12px;align-items:center;font-size:13px}.ow-shell input[type="color"]{padding:3px;width:52px;height:36px;cursor:pointer}.ow-appearance .ow-note{padding:12px 0 0}.ow-appearance [role="alert"]{color:var(--uf-err)}
@media(max-width:720px){.ow-palette-options{grid-template-columns:1fr}.ow-appearance{padding:18px}.ow-palette small{font-size:12px}}

.ow-sidebar :focus-visible{outline-color:var(--uf-accent)}
.ow-shell .b-process,.ow-shell .b-demo{color:var(--uf-muted);background:var(--uf-surface-hover)}
.ow-shell .u05-badge.s-mode-3d,.ow-shell .u05-chip.g-demo{color:var(--uf-muted);background:var(--uf-surface-hover)}
.ow-shell .u05-chip.is-selected{outline-color:var(--uf-accent)}
.ow-shell .u04-ref.s-ref-valid{color:var(--uf-info)}
@media(max-width:720px){.ow-palette-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.ow-shell .ow-palette{padding:10px}.ow-palette small{display:none}.ow-swatch{height:22px;margin-bottom:8px}.ow-appearance{padding:18px}.ow-heading h1{font-size:22px}}

/* Seasonal palettes change surface tokens only; business status colors stay independent.
   Both `.ow-*` entry points (shell / identity) carry `data-palette`, so the preset applies to each. */
html[data-theme="light"] .ow-shell[data-palette="rose"],html[data-theme="light"] .ow-identity[data-palette="rose"]{--uf-bg:#faf0ee;--uf-surface:#fffaf8;--uf-surface-hover:#f3e0dc;--uf-text:#252525;--uf-muted:#595959;--uf-divider:#e6d4d0;--uf-border:#958783}
.swatch-rose{background:linear-gradient(90deg,#252525 0 22%,#faf0ee 22% 70%,#fffaf8 70%)}
.ow-palette-options{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:720px){.ow-palette-options{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Secondary business pages: quiet hierarchy, readable records, explicit unavailable states. */
.ow-subnav{display:flex;gap:26px;flex-wrap:wrap;border-bottom:1px solid var(--uf-divider);margin:0 0 26px}
.ow-subnav:empty{display:none}.ow-subnav a{padding:8px 0 12px;border-bottom:2px solid transparent;color:var(--uf-muted);font-size:13px}.ow-subnav a.is-active{color:var(--uf-text);border-bottom-color:var(--uf-accent);font-weight:600}
.ow-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:0 0 26px;border-block:1px solid var(--uf-divider);background:var(--uf-surface)}.ow-facts>div{padding:20px;border-right:1px solid var(--uf-divider)}.ow-facts dt{color:var(--uf-muted);font-size:12px}.ow-facts dd{margin:8px 0 0;font-size:15px;font-weight:550;overflow-wrap:anywhere}
.ow-unavailable{padding:24px}.ow-unavailable .ow-section-heading{padding:0}.ow-unavailable h2{font-size:16px;margin:0}.ow-unavailable p{font-size:13px;color:var(--uf-muted);max-width:760px;margin:14px 0 20px}.ow-shell button:disabled,.ow-identity button:disabled{opacity:.6;cursor:not-allowed}.ow-order-detail{border-top:1px solid var(--uf-divider);padding:14px 20px}.ow-order-detail summary{cursor:pointer;display:flex;justify-content:space-between;gap:15px;overflow-wrap:anywhere;font-size:12px}.ow-order-detail summary span:last-child{color:var(--uf-muted)}.ow-order-detail ol{padding-left:24px}.ow-order-detail li{padding:10px}.ow-order-detail li span,.ow-order-detail li small{display:block;color:var(--uf-muted)}.ow-calendar article{display:grid;grid-template-columns:105px 100px 1fr;gap:12px;padding:14px 20px;border-top:1px solid var(--uf-divider);font-size:12px}.ow-calendar small{grid-column:2/-1;color:var(--uf-muted);overflow-wrap:anywhere}
/* 报告原文：服务端应答原样陈列。等宽、可换行，这一格不做二次排版——排版过的正文
   会让「这是不是模型说的」变成一个看不出来的问题。分区视图在它上方。 */
.ow-report{margin:0;padding:16px 20px;font:inherit;font-size:12px;line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--uf-bg);border-top:1px solid var(--uf-divider)}
/* 报告分区：栏名取自服务端的封闭档位表（research_model::KIND_TITLES），界面不自造档位；
   档位读不出来的一律进「未标注」，模型写的原词不上屏。 */
.ow-report-parts{padding:18px 20px 4px}
.ow-report-part{margin:0 0 18px}
.ow-report-part:last-child{margin-bottom:0}
.ow-report-part h4{font-size:13px;font-weight:600;margin:0 0 8px}
.ow-report-claims{margin:0;padding-left:22px}
.ow-report-claims li{padding:9px 0;border-bottom:1px solid var(--uf-divider)}
.ow-report-claims li:last-child{border-bottom:0}
.ow-report-claims p{margin:0;font-size:13px;line-height:1.7;overflow-wrap:anywhere}
.ow-report-cite{display:block;color:var(--uf-muted);font-size:11px;margin-top:6px;overflow-wrap:anywhere}
.ow-report-cite.is-missing{color:var(--uf-warn)}
.ow-report-window{display:block;color:var(--uf-muted);font-size:11px;margin-top:4px;overflow-wrap:anywhere}
.ow-report-source{margin-top:4px}
.ow-report-source .ow-report{border-top:0}
@media(max-width:720px){.ow-subnav{gap:18px}.ow-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.ow-facts>div{padding:15px}.ow-unavailable{padding:20px}.ow-calendar article{grid-template-columns:90px 1fr}.ow-calendar article>span{grid-column:2}.ow-order-detail summary{flex-direction:column}}

.ow-context{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;font-size:12px;padding:12px 0;color:var(--uf-muted)}.ow-context a{text-decoration:underline}.ow-section>.ow-context{padding-inline:20px}.ow-event-detail{font-size:12px;margin-top:14px;border-top:1px solid var(--uf-divider);padding-top:12px}.ow-event-detail summary{cursor:pointer}.ow-event-detail .ow-links{margin-bottom:0}
/* Expanded business workspaces: quiet chrome, dense market rows, terminal proportions. */
.wx-intro{margin:6px 0 24px;border-bottom:1px solid var(--uf-divider);padding-bottom:20px}.wx-intro h2{font-size:25px;font-weight:550;letter-spacing:-.5px;margin:0 0 9px}.wx-intro p{color:var(--uf-muted);font-size:13px;max-width:850px;margin:0;line-height:1.8}
.wx-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--uf-divider);border:1px solid var(--uf-divider);border-radius:7px;overflow:hidden;margin-bottom:26px}.wx-card{background:var(--uf-surface);padding:20px}.wx-card span,.wx-card small{display:block;color:var(--uf-muted);font-size:12px}.wx-card strong{display:block;font-size:28px;font-weight:500;letter-spacing:-.5px;margin:7px 0}.wx-card small{font-size:11px}
.wx-list{padding:0 20px 10px}.wx-list>div{display:flex;justify-content:space-between;gap:20px;padding:13px 0;border-top:1px solid var(--uf-divider);font-size:12px}.wx-list strong{font-weight:500;min-width:120px}.wx-list span{color:var(--uf-muted);max-width:65%;text-align:right}.wx-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 20px}.ow-section>.wx-tabs{padding:0 20px;margin-bottom:12px}.wx-tabs button{border:1px solid var(--uf-divider);background:var(--uf-surface);border-radius:5px;padding:7px 14px;font-size:12px}.wx-tabs button[aria-pressed="true"]{background:var(--uf-surface-hover);border-color:var(--uf-accent);font-weight:600}
.wx-next{display:flex;gap:20px;flex-wrap:wrap;margin:18px 0 26px;font-size:13px}.wx-process{display:flex;align-items:stretch;gap:0;overflow:auto;margin:0 0 26px}.wx-process>span,.wx-process>a{padding:16px 18px;background:var(--uf-surface);border:1px solid var(--uf-divider);min-width:100px;font-size:12px;flex:1;text-align:center}.wx-process>*+*{border-left:0}.wx-process>a:hover{background:var(--uf-surface-hover)}
.wx-terminal{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:24px;align-items:start}.wx-form{padding:22px}.wx-form h2{margin-bottom:18px}.wx-form label{display:grid;gap:8px;margin:14px 0;font-size:12px}.wx-form input{width:100%}.wx-form p,.wx-form small{color:var(--uf-muted);font-size:12px;line-height:1.8}.wx-form button{margin:8px 8px 8px 0}.wx-form button:disabled{opacity:.55;cursor:not-allowed}.wx-ticket{position:sticky;top:20px}.wx-chart-empty{min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:var(--uf-bg);border-top:1px solid var(--uf-divider);border-bottom:1px solid var(--uf-divider)}.wx-chart-empty span{font-size:18px;font-weight:500}.wx-chart-empty small{font-size:11px;color:var(--uf-muted);padding:0 16px;text-align:center}
.wx-conversation{min-height:210px;padding:20px;background:var(--uf-bg);border:1px solid var(--uf-divider);border-radius:6px;margin:20px 0}.wx-conversation pre{font:inherit;font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.9}.wx-connection{border-left:3px solid var(--uf-border);padding-left:12px}.wx-architecture .wx-process{margin:0 20px 20px}.wx-domains{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding:0 20px 20px}.wx-domains article{border:1px solid var(--uf-divider);padding:15px;border-radius:5px}.wx-domains strong{font-size:15px;font-weight:550;display:block}.wx-domains code{font-size:11px;color:var(--uf-muted);display:block;margin:6px 0}.wx-domains small{font-size:11px;color:var(--uf-muted)}.wx-radar-layout{display:grid;grid-template-columns:330px 1fr;align-items:center;gap:20px;padding:0 20px 20px}.wx-radar-layout svg{width:100%;color:var(--uf-text)}.wx-radar-layout .ow-section{margin:0}.wx-radar-panel{background:var(--uf-surface)}
@media(max-width:1100px){.wx-terminal{grid-template-columns:minmax(0,1fr) 290px}.wx-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.wx-domains{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.wx-terminal,.wx-radar-layout{grid-template-columns:1fr}.wx-ticket{position:static}.wx-radar-layout svg{max-width:320px;margin:auto}.wx-intro h2{font-size:22px}.wx-list>div{flex-direction:column;gap:6px}.wx-list span{max-width:none;text-align:left}.wx-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.wx-card{padding:15px}.wx-card strong{font-size:23px}.wx-process{margin-bottom:18px}}

/* 投资工作台：抬头直接落在页面上，不套卡片；读数按「能不能用」排成一条细线；
   明细收进折叠区。只消费既有 --uf-* 令牌，不新增令牌、不碰其他页面的 .ow-*。 */
/* 抬头：宽屏时结论在左、名册在右，把 1216px 的宽度用起来；窄屏自然叠成一列。 */
.wb-top{display:grid;grid-template-columns:minmax(0,1fr);gap:34px;margin:0 0 34px}
.wb-head{margin:0}
.wb-eyebrow{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:0;font-size:11px;letter-spacing:.09em;color:var(--uf-muted)}
.wb-statement{margin:14px 0 16px;font-size:clamp(24px,2.9vw,42px);line-height:1.24;font-weight:600;letter-spacing:-.022em;text-wrap:balance;max-width:26ch}
.wb-lede{margin:0;color:var(--uf-muted);font-size:13px;line-height:1.9;max-width:64ch}
.wb-head-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:22px}
.wb-action{border:1px solid var(--uf-border);border-radius:6px;background:var(--uf-surface);padding:9px 16px;font-size:12px;cursor:pointer;transition:background var(--uf-motion) ease-out,border-color var(--uf-motion) ease-out}
.wb-action:hover:not(:disabled){background:var(--uf-surface-hover);border-color:var(--uf-accent)}
.wb-action:disabled{opacity:.6;cursor:progress}
.wb-progress{color:var(--uf-muted);font-size:11px}
/* 名册：一行一招，左侧状态词带语义色，右侧是清单里的服务名。 */
.wb-roster{border-top:1px solid var(--uf-divider);border-bottom:1px solid var(--uf-divider);margin:0 0 36px}
.wb-roster-row{display:grid;grid-template-columns:72px minmax(0,1fr);gap:18px;align-items:baseline;padding:13px 2px;border-top:1px solid var(--uf-divider)}
.wb-roster-row:first-child{border-top:0}
.wb-roster-key{font-size:11px;letter-spacing:.05em}
.wb-roster-val{font-size:14px;font-weight:500;overflow-wrap:anywhere}
.wb-roster-note{margin:10px 0 0;color:var(--uf-muted);font-size:11px}
/* 段落：标题压在一条细线上，正文直接落在页面底色，不再套一层圆角盒子。 */
.wb-sec{margin:0 0 36px}
.wb-sec-head{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;padding-bottom:10px;border-bottom:1px solid var(--uf-divider);margin-bottom:16px}
.wb-sec-head h2{margin:0;font-size:15px;font-weight:650;letter-spacing:.01em}
.wb-sec-head > span{color:var(--uf-muted);font-size:11px}
.wb-panel{background:var(--uf-surface);border:1px solid var(--uf-divider);border-radius:9px;overflow:hidden}
.wb-panel .ow-table{border:0}
/* 全局 .ow-table 用 nowrap 撑横向滚动条；本页在窄屏宁可让文字折行，也不让读数横着跑。
   数字列仍不折行，免得小数被拦腰截断。 */
.wb-panel .ow-table table{white-space:normal}
.wb-panel .ow-table th,.wb-panel .ow-table td{white-space:normal;overflow-wrap:break-word;vertical-align:top}
.wb-panel .ow-table .ow-number{white-space:nowrap}
.wb-facts{margin:0 0 16px}
.wb-facts > div{display:flex;justify-content:space-between;gap:22px;padding:10px 2px;border-top:1px solid var(--uf-divider);font-size:12px}
.wb-facts > div:first-child{border-top:0}
.wb-facts strong{flex:0 0 auto;font-weight:500;color:var(--uf-muted)}
.wb-facts span{text-align:right;overflow-wrap:anywhere}
.wb-note{margin:14px 0 0;color:var(--uf-muted);font-size:12px;line-height:1.85;max-width:72ch}
.wb-empty{margin:0;padding:20px;color:var(--uf-muted);font-size:12px;line-height:1.85}
/* 逐条读数垫底：它是核对用的底账，不该挤在结论和真实读数中间。 */
.wb-fold{margin:0;border-top:1px solid var(--uf-divider);padding-top:20px}
.wb-fold > .wb-panel{margin-bottom:16px}
.wb-fold .uf-section-title{margin:22px 0 12px}
/* 找标的：搜索行一行到底；结果是可选中的标的；选中之前不出现读数，避免空表看起来像「没有行情」。 */
.wb-search{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.wb-search label{font-size:12px;color:var(--uf-muted);flex:0 0 auto}
.wb-search input{flex:1 1 220px;width:auto;min-width:0;max-width:380px;background:var(--uf-bg);border:1px solid var(--uf-border);border-radius:var(--uf-radius-button);padding:9px 12px;font-size:13px}
.wb-search .wb-note{flex:1 1 100%;margin:0}
.wb-picks{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 0}
.wb-picks .uf-btn{display:grid;gap:2px;text-align:left;padding:9px 14px}
.wb-picks .uf-btn strong{font-size:13px;font-weight:600}
.wb-picks .uf-btn small{font-size:11px;color:var(--uf-muted)}
.wb-picks .uf-btn.is-active{border-color:var(--uf-accent);background:var(--uf-surface-hover)}
/* 自选：存下来的是一份名录，每条自带移除。外观刻意与「找标的」的候选按钮区分开——
   候选是让你挑的，名录是已经定下的，同一套按钮样式会让人以为还能再点一次选中。 */
.wb-watch{list-style:none;margin:14px 0 0;padding:0;border-top:1px solid var(--uf-divider)}
.wb-watch li{display:flex;align-items:baseline;gap:12px;padding:11px 0;border-bottom:1px solid var(--uf-divider)}
.wb-watch li strong{font-size:13px;font-weight:600}
.wb-watch li small{color:var(--uf-muted);font-size:11px}
.wb-watch li .uf-btn{margin-left:auto;align-self:center;font-size:11px;padding:6px 11px}
.wb-subhead{display:flex;justify-content:space-between;align-items:baseline;gap:14px;flex-wrap:wrap;margin:24px 0 10px;font-size:13px;font-weight:650}
/* .ow-shell a 把链接压成了继承色，这里要用两个类才盖得住，别退回 a 选择器。 */
.wb-subhead .wb-link{color:var(--uf-accent);font-size:12px;font-weight:400;text-decoration:underline;text-underline-offset:3px}
/* 分隔带只服务工作台的读数折叠区（.wb-fold）。.ow-table 是全局类，旧座舱的表格也用；
   不加容器前缀就会替别处的表格改分隔带样式。 */
.wb-fold .ow-table tr.uf-group > th{background:var(--uf-bg);color:var(--uf-text);font-weight:650;letter-spacing:.02em;border-top:1px solid var(--uf-divider);border-bottom:1px solid var(--uf-divider)}
.wb-fold .ow-table tr.uf-group:first-child > th{border-top:0}
.ow-table tbody tr.is-selected{background:var(--uf-surface-hover)}
@media(min-width:1080px){
  .wb-top{grid-template-columns:minmax(0,1fr) 300px;gap:52px;align-items:start}
  .wb-lede{max-width:70ch}
  .wb-roster{margin:2px 0 0}
  .wb-roster-row{grid-template-columns:60px minmax(0,1fr);gap:12px;padding:12px 0}
  .wb-roster-val{font-size:13px}
}
@media(max-width:720px){
  .wb-statement{font-size:24px;max-width:none}
  .wb-roster-row{grid-template-columns:56px minmax(0,1fr);gap:12px;padding:11px 0}
  .wb-facts > div{flex-direction:column;gap:4px}
  .wb-facts span{text-align:left}
  .wb-sec-head h2{font-size:14px}
  .wb-fold .ow-table tr.uf-group>th{font-size:11px}
  .wb-panel .ow-table th,.wb-panel .ow-table td{padding:8px 11px;font-size:11px}
}

/* Authentication entry state has no mounted business views. */
.session-gate { min-height: 100vh; display: grid; place-items: center; padding: 24px; box-sizing: border-box; }
.session-gate > .card { width: min(100%, 36rem); padding: 32px; box-sizing: border-box; }
.session-gate h1 { font-size: 24px; }
.session-gate p { line-height: 1.7; }
