/* Training-only responsive rules. Desktop uses the shared EXE stylesheet. */
.training-mobile-nav,.mobile-chart-back,.mobile-chart-zoom,.mobile-trade-quote{display:none}
.training-save-status{white-space:nowrap;min-height:36px;font-size:11px}
.training-save-status[data-state="error"]{color:#ff9aaa;border-color:#ff647f}
.training-save-dialog{position:fixed;inset:0;width:min(540px,calc(100% - 24px));max-height:calc(100dvh - 24px);margin:auto;padding:22px;border:1px solid #625884;border-radius:18px;background:#1d1b2c;color:#eee9ff;overflow:auto;overscroll-behavior:contain;z-index:1000}
.training-save-dialog::backdrop{background:rgba(8,7,16,.78)}
.training-save-dialog h2{font-size:21px;margin:0 0 12px}
.training-save-dialog p{line-height:1.65;overflow-wrap:anywhere}
.training-save-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.training-save-actions button,.training-import-label{min-height:44px}
.training-import-label{position:relative;display:inline-flex;align-items:center;cursor:pointer;overflow:hidden}
.training-import-label input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
/* Follow the actual visual viewport. No rotated app surface, fixed desktop canvas or forced orientation. */
html.training-mobile{scroll-padding-bottom:calc(90px + env(safe-area-inset-bottom,0px))}
html.training-mobile,html.training-mobile body{height:auto;min-height:100%;min-width:0;overflow:visible;overscroll-behavior-x:none}
.training-mobile body{margin:0;padding:0;-webkit-text-size-adjust:100%;font-size:14px}
.training-mobile .app{display:block;position:static;width:100%;height:auto;min-height:100svh;max-width:none;max-height:none;margin:0;padding:env(safe-area-inset-top,0px) max(10px,env(safe-area-inset-right,0px)) calc(88px + env(safe-area-inset-bottom,0px)) max(10px,env(safe-area-inset-left,0px));transform:none}
.training-mobile .topbar{height:auto;min-height:48px;padding:6px 0;gap:8px;flex-wrap:wrap}
.training-mobile .brand{gap:7px;min-width:0}
.training-mobile .brand-mark{width:30px;height:30px;border-radius:10px;font-size:16px}
.training-mobile .brand-title{font-size:13px}
/* 返回学院入口在手机上必须保留：隐藏后用户无法从训练页回到学院。 */
.training-mobile .brand-sub{display:none}
.training-mobile .top-link{display:inline-flex;align-items:center;min-height:32px;padding:5px 8px;font-size:12px;white-space:nowrap}
.training-mobile .top-actions{gap:5px;flex-wrap:wrap}
.training-mobile .status-pill{display:none}
.training-mobile main{height:auto;min-height:0;overflow:visible;padding-top:8px}
.training-mobile #homeView,.training-mobile #workView,.training-mobile #reportView{height:auto;min-height:0;max-height:none;overflow:visible}
.training-mobile #homeView:not(.hidden),.training-mobile #workView:not(.hidden),.training-mobile #reportView:not(.hidden){display:block}
.training-mobile .page-heading{display:block;margin:10px 0 16px}
.training-mobile .page-heading h1{font-size:28px!important;line-height:1.3}
.training-mobile .page-heading p{font-size:13px;line-height:1.6}
.training-mobile .intro-grid{display:grid;grid-template-columns:minmax(0,1fr);height:auto;gap:12px}
.training-mobile #homeView .hero,.training-mobile #homeView .setup-card{height:auto;max-height:none;min-height:0;overflow:visible;padding:18px}
.training-mobile #homeView .hero h2{font-size:25px;line-height:1.35}
.training-mobile #homeView .hero-copy{font-size:13px;line-height:1.6}
.training-mobile #homeView .hero-bottom{flex-wrap:wrap;margin-top:16px}
.training-mobile #homeView .setup-card .microcopy{white-space:normal;line-height:1.5}
.training-mobile #homeView .disclosure{max-height:none;overflow:visible}
.training-mobile #workView .session-bar{position:static;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:8px;min-height:0;height:auto;max-height:none;margin:0 0 8px;padding:10px;border-radius:12px}
.training-mobile #workView .session-name{font-size:14px}
.training-mobile #workView .session-meta{white-space:normal;font-size:11px;line-height:1.5}
.training-mobile #workView .session-bar>div:first-child{flex:1 1 100%}.training-mobile #workView .progress-wrap{flex:1 1 110px;width:auto;min-width:100px;height:18px;min-height:18px}
.training-mobile #workView .session-actions{flex-wrap:wrap;gap:6px;margin:0}
.training-mobile #workView .session-actions button{min-height:40px;font-size:12px;padding:7px 10px}
.training-mobile #workView .intraday-toolbar:not(.hidden){position:static;display:flex;flex-wrap:wrap;height:auto;min-height:0;max-height:none;gap:8px;margin:0 0 10px;padding:10px}
.training-mobile #workView .intraday-playback{flex-wrap:wrap}
.training-mobile #workView .intraday-playback button{min-height:42px}
.training-mobile #workView .intraday-hint{white-space:normal;font-size:12px;line-height:1.5}
.training-mobile #workView .workspace{display:block;height:auto;min-height:0;max-height:none;overflow:visible;margin:0;contain:none}
.training-mobile #workView .work-main{display:contents;height:auto;min-height:0;overflow:visible}
.training-mobile #workView .universe-card{position:static;display:block;height:auto;min-height:0;max-height:none;overflow:visible;padding:10px;margin:0 0 10px}
.training-mobile #workView .universe-heading{height:auto;min-height:0}
.training-mobile #workView .universe-heading h3{font-size:14px}
.training-mobile #workView .universe-heading p{display:none}
.training-mobile #workView .instrument-switch{display:flex;flex-direction:row;gap:8px;max-height:none;height:auto;margin:8px 0 0;padding:0 0 4px;overflow-x:auto;overflow-y:visible;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.training-mobile #workView .instrument-tab{flex:0 0 164px;display:block;width:164px;height:auto;min-height:66px;padding:8px;scroll-snap-align:start;touch-action:pan-x}
.training-mobile #workView .instrument-tab-top,.training-mobile #workView .instrument-tab-bottom{display:flex;justify-content:space-between;gap:5px;line-height:1.4}
.training-mobile #workView .instrument-tab-code{font-size:11px}
.training-mobile #workView .instrument-tab-name,.training-mobile #workView .instrument-tab-price{font-size:13px}
.training-mobile #workView .instrument-tab-board,.training-mobile #workView .instrument-tab-change,.training-mobile #workView .instrument-tab-position{font-size:11px;display:inline}
.training-mobile #workView .chart-card{display:flex;flex-direction:column;position:relative;animation:none;transform:none;grid-area:auto;height:auto;min-height:0;max-height:none;overflow:visible;padding:12px 10px;margin:0 0 10px;gap:8px}
.training-mobile #workView .quote-head{flex:none;height:auto;gap:8px}
.training-mobile #workView .quote-title{font-size:16px;line-height:1.5}
.training-mobile #workView .quote-title .tag{font-size:10px;white-space:normal}
.training-mobile #workView .quote-sub{font-size:12px;line-height:1.5}
.training-mobile #workView .last-price{font-size:24px}
.training-mobile #workView .price-change{font-size:12px}
.training-mobile #workView .news-strip{height:auto;min-height:44px;flex:none;gap:6px;padding:7px}
.training-mobile #workView .news-strip>b{display:none}
.training-mobile #workView .news-strip>span{white-space:normal;font-size:12px;line-height:1.4;overflow-wrap:anywhere}
.training-mobile #workView .news-strip button{min-height:42px;flex-shrink:0;font-size:12px}
.training-mobile #workView .chart-tools{order:3;display:flex;flex-wrap:wrap;justify-content:flex-start;gap:7px;height:auto;min-height:0;max-height:none;padding:0;margin:0;overflow:visible;flex:none}
.training-mobile #workView .chart-period-switch,.training-mobile #workView .range-switch,.training-mobile #workView .chart-type-switch,.training-mobile #workView .ma-switch{display:flex;flex-wrap:wrap;gap:3px}
.training-mobile #workView .chart-tools button{height:auto;min-height:40px;font-size:12px;padding:7px 10px}
.training-mobile #workView .chart-hint{font-size:11px;white-space:normal}
.training-mobile #workView #mainChart{display:block;order:1;position:relative;width:100%;height:300px;min-height:260px;max-height:none;overflow:visible;flex:none;touch-action:pan-y pinch-zoom}
.training-mobile #workView #mainChart svg{display:block;width:100%;height:100%;min-width:0;min-height:260px;max-height:none;aspect-ratio:auto;margin:0;overflow:visible;touch-action:pan-y pinch-zoom}
.training-mobile #workView .chart-readout{order:2;display:flex;flex-wrap:wrap;white-space:normal;height:auto;min-height:36px;max-height:none;gap:4px 10px;overflow:visible;padding:0;font-size:12px;line-height:1.6}
.training-mobile #workView .chart-note{order:5;display:flex;flex-wrap:wrap;white-space:normal;font-size:11px;line-height:1.5;height:auto;min-height:0;max-height:none;overflow:visible}
.training-mobile .mobile-chart-zoom{display:flex;order:4;gap:8px;align-items:center;flex-wrap:wrap}
.training-mobile .mobile-chart-zoom button{min-height:42px;padding:7px 12px}
.training-mobile .mobile-chart-zoom small{font-size:11px;color:var(--muted)}
.training-mobile #workView .decision-panel{position:static;display:block;height:auto;max-height:none;min-height:0;overflow:visible;padding:14px;margin-bottom:10px}
.training-mobile #workView .decision-panel h2{font-size:21px;margin:6px 0}
.training-mobile #workView .decision-panel .sub,.training-mobile #workView .action-title{font-size:13px;line-height:1.5}
.training-mobile #workView .account-box{display:flex;justify-content:space-between;gap:10px;height:auto;min-height:0;padding:10px;margin:10px 0}
.training-mobile #workView .account-line{display:block;font-size:12px}
.training-mobile #workView .account-line strong{display:block;font-size:16px}
.training-mobile #workView .order-quantity{height:auto;min-height:0;padding:10px;margin-bottom:10px}
.training-mobile #workView .qty-row{grid-template-columns:minmax(0,1fr) auto auto;gap:6px}
.training-mobile #workView .qty-row .field{height:44px;font-size:16px}
.training-mobile #workView .qty-shortcut{height:44px;padding:6px;font-size:11px}
.training-mobile #workView .availability-line,.training-mobile #workView .order-estimate{display:block;white-space:normal;font-size:12px;line-height:1.6}
.training-mobile #workView .decision-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.training-mobile #workView .decision{min-height:70px;height:auto;padding:10px}
.training-mobile #workView .decision strong{font-size:15px;line-height:1.5}
.training-mobile #workView .decision span{font-size:12px;line-height:1.5}
.training-mobile #workView .order-queue{display:block;height:auto;min-height:60px;max-height:none;overflow:visible;margin:10px 0}
.training-mobile #workView .queue-item,.training-mobile #workView .queue-empty{font-size:12px;line-height:1.6;white-space:normal;overflow-wrap:anywhere}
.training-mobile #workView .queue-item button{min-height:42px}
.training-mobile #workView .pending-box{display:block;height:auto;min-height:44px;max-height:none;overflow:visible;white-space:normal;font-size:13px;line-height:1.5;padding:10px}
.training-mobile #workView .advance{height:auto;min-height:48px;margin:12px 0 5px;padding:10px;font-size:15px}
.training-mobile #workView .decision-feedback{display:block;font-size:12px;line-height:1.5}
.training-mobile #workView .journal-details,.training-mobile #workView .fee-details{display:block;font-size:13px;line-height:1.6;margin-top:12px}
.training-mobile #workView .journal-details summary,.training-mobile #workView .fee-details summary{min-height:44px;padding:8px 0}
.training-mobile #workView .reason-wrap{flex-wrap:wrap}
.training-mobile #workView .reason-chip{font-size:12px;min-height:40px;padding:8px}
.training-mobile #workView .confidence{width:40px;height:40px;font-size:14px}
.training-mobile #workView .note{min-height:90px;font-size:16px;line-height:1.5}
.training-mobile #workView .account-observatory{display:grid;grid-template-columns:minmax(0,1fr);height:auto;min-height:0;max-height:none;gap:10px;margin:0 0 10px}
.training-mobile #workView .insight-card{height:auto;min-height:150px;max-height:none;padding:14px;overflow:visible}
.training-mobile #workView .insight-label{font-size:15px;line-height:1.4}
.training-mobile #workView .insight-value{font-size:25px;line-height:1.5}
.training-mobile #workView .insight-chart{display:block;min-height:50px;height:70px;margin:8px 0}
.training-mobile #workView .insight-foot{display:flex;position:static;gap:8px;white-space:normal;font-size:12px;line-height:1.5}
.training-mobile #workView .insight-chip{font-size:12px}
.training-mobile #workView .allocation-layout{height:auto;min-height:90px;gap:12px}
.training-mobile #workView .allocation-chart{width:84px;height:84px;flex:0 0 84px}
.training-mobile #workView .allocation-legend,.training-mobile #workView .allocation-legend strong{font-size:13px;line-height:1.5}
.training-mobile #workView .allocation-heading{display:flex;flex-wrap:wrap;gap:8px}
.training-mobile #workView .allocation-mode-toggle button{min-height:38px;font-size:12px}
.training-mobile #workView .holdings-card{display:block;height:auto;min-height:150px;max-height:none;padding:12px;overflow:visible}
.training-mobile #workView .holdings-heading{height:auto;min-height:35px;flex-wrap:wrap;gap:8px}
.training-mobile #workView .holdings-heading h3{font-size:17px}
.training-mobile #workView .holdings-heading span{font-size:12px}
.training-mobile #workView .holdings-scroll{height:auto;max-height:none;min-height:80px;overflow-x:auto;overflow-y:visible;margin:10px 0}
.training-mobile #workView .holdings-table{min-width:620px;width:100%;font-size:13px;table-layout:auto}
.training-mobile #workView .holdings-table th,.training-mobile #workView .holdings-table td{padding:10px 8px;font-size:13px;line-height:1.5}
.training-mobile #workView .holdings-symbol{min-height:40px;font-size:13px}
.training-mobile #workView .holdings-foot{display:flex;flex-wrap:wrap;gap:8px;height:auto;font-size:12px;line-height:1.5;white-space:normal}
.training-mobile #workView .timeline-card,.training-mobile #workView .timeline-card[open]{position:static;display:block;height:auto;min-height:60px;max-height:none;overflow:visible;margin:0;padding:12px;inset:auto}
.training-mobile #workView .timeline-summary{display:flex;flex-wrap:wrap;gap:8px;height:auto;min-height:44px;padding:0}
.training-mobile #workView .timeline-summary-title strong{font-size:16px}
.training-mobile #workView .timeline-summary-title small,.training-mobile #workView .timeline-summary-meta,.training-mobile #workView .timeline-summary-toggle{font-size:12px;line-height:1.5}
.training-mobile #workView .timeline-card[open]>.timeline-expanded-content,.training-mobile #workView .timeline-card[open].is-sparse>.timeline-expanded-content{display:block;height:auto;min-height:0;overflow:visible}
.training-mobile #workView .timeline-plot{height:180px;min-height:100px;margin:10px 0}
.training-mobile #workView .timeline-footer{display:block;height:auto;overflow:visible}
.training-mobile #workView .timeline-history{height:auto;overflow:visible}
.training-mobile #workView .timeline-logbar{display:flex;flex-wrap:wrap;gap:8px}
.training-mobile #workView .timeline-history .timeline-list{display:grid;grid-template-columns:minmax(0,1fr);height:auto;max-height:none;overflow:visible;margin-top:10px}
.training-mobile #workView .timeline-filter{min-height:40px;font-size:12px}
.training-mobile #workView .timeline-symbol-filter{min-height:40px;font-size:14px}
.training-mobile #workView .timeline-entry{font-size:13px;white-space:normal;overflow-wrap:anywhere;max-height:none}
.training-mobile #workView .news-feed:not([hidden]){position:fixed;inset:max(10px,env(safe-area-inset-top,0px)) max(10px,env(safe-area-inset-right,0px)) calc(80px + env(safe-area-inset-bottom,0px)) max(10px,env(safe-area-inset-left,0px));width:auto;height:auto;min-height:0;max-height:none;z-index:160;overflow:auto}
.training-mobile #workView .news-feed-list{display:grid;grid-template-columns:minmax(0,1fr);max-height:none;overflow:visible}
.training-mobile #workView .news-item strong{font-size:15px}
.training-mobile #workView .news-item p{font-size:13px;line-height:1.5}
.training-mobile #workView[data-mobile-panel="chart"] .decision-panel,.training-mobile #workView[data-mobile-panel="chart"] .account-observatory,.training-mobile #workView[data-mobile-panel="chart"] .holdings-card,.training-mobile #workView:not([data-mobile-panel="history"])>.timeline-card{display:none}
.training-mobile #workView:not([data-mobile-panel="chart"]) .universe-card,.training-mobile #workView:not([data-mobile-panel="chart"]) .chart-card{display:none}
.training-mobile #workView:not([data-mobile-panel="trade"]) .decision-panel{display:none}
.training-mobile #workView:not([data-mobile-panel="assets"]) .account-observatory,.training-mobile #workView:not([data-mobile-panel="assets"]) .holdings-card{display:none}
.training-mobile .training-mobile-nav:not([hidden]){position:fixed;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;inset:auto 0 0;z-index:200;padding:7px max(10px,env(safe-area-inset-right,0px)) calc(7px + env(safe-area-inset-bottom,0px)) max(10px,env(safe-area-inset-left,0px));border-top:1px solid #51486b;background:rgba(22,20,35,.98)}
.training-mobile .training-mobile-nav button{min-width:0;min-height:46px;font-size:14px;padding:7px 4px;border-radius:10px;border:1px solid var(--line);background:transparent;color:var(--soft)}
.training-mobile .training-mobile-nav button[aria-pressed="true"]{background:#796be7;color:white}
.training-mobile #workView.chart-focus .chart-card{display:flex;position:fixed;inset:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) calc(72px + env(safe-area-inset-bottom,0px)) env(safe-area-inset-left,0px);height:auto;max-height:none;overflow:auto;overscroll-behavior:contain;z-index:180;padding:6px 10px 16px;gap:4px;margin:0;background:#171522}
.training-mobile #workView.chart-focus #mainChart{height:max(260px,calc(100dvh - 132px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)));min-height:260px}
.training-mobile #workView.chart-focus #mainChart svg{min-height:260px}
.training-mobile #workView.chart-focus .mobile-chart-back{display:block;position:fixed;top:calc(6px + env(safe-area-inset-top,0px));right:calc(12px + env(safe-area-inset-right,0px));z-index:190;min-height:42px;font-size:14px;padding:8px 16px;background:#796be7;color:white}
.training-mobile #reportView .report-top{display:block}
.training-mobile #reportView .report-hero{padding:18px}
.training-mobile #reportView .report-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.training-mobile #reportView .report-grid{display:grid;grid-template-columns:minmax(0,1fr);height:auto;gap:10px}
.training-mobile #reportView .report-chart-card,.training-mobile #reportView .reflection-card{height:auto;min-height:0;max-height:none;overflow:visible;padding:12px}
.training-mobile #reportView #reportChart{height:280px;min-height:260px}
.training-mobile #reportView #reportChart svg{width:100%;height:100%;min-height:260px}
.training-mobile #reportView .report-actions{display:flex;flex-wrap:wrap;gap:8px}
.training-mobile #reportView .report-actions button{min-height:44px;font-size:14px}
.training-mobile #reportView .reflection-card textarea{font-size:16px;min-height:120px}
.training-mobile #reportView .report-portfolio-grid{grid-template-columns:minmax(0,1fr)}
.training-mobile #reportView .review-list{max-height:none;overflow:visible}
.training-mobile #reportView .review-item{white-space:normal;overflow-wrap:anywhere}
.training-mobile .field{font-size:16px}
.training-mobile .toast{bottom:calc(82px + env(safe-area-inset-bottom,0px));max-width:calc(100% - 24px)}
@media(min-width:700px){.training-mobile .intro-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.training-mobile #workView .account-observatory{grid-template-columns:repeat(3,minmax(0,1fr))}.training-mobile #workView #mainChart{height:320px}.training-mobile #reportView .report-portfolio-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.scenario-setup-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:8px;align-items:start}
.scenario-setup-grid>.field-wrap{min-width:0;margin:0}
.scenario-setup-grid .field-label{display:block;white-space:normal;line-height:1.25;margin:0 0 4px}
.scenario-setup-grid .field{width:100%;min-width:0}
.scenario-settings>.field-label{margin-bottom:5px}
.scenario-settings>.field-hint{line-height:1.4}
.training-mobile #homeView .scenario-setup-grid{grid-template-columns:minmax(0,1fr)}
.training-mobile #homeView .scenario-setup-grid .field{min-height:44px}
.training-mobile #workView .news-feed:not([hidden]){display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:auto;max-height:calc(100dvh - max(10px,env(safe-area-inset-top,0px)) - 88px - env(safe-area-inset-bottom,0px));min-height:min(240px,calc(100dvh - 110px));overflow:hidden;overscroll-behavior:contain}
.training-mobile #workView .news-feed-head{position:sticky;top:0;z-index:1;background:rgba(24,22,37,.99)}
.training-mobile #workView .news-feed-list{min-height:0;max-height:none;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding-bottom:calc(10px + env(safe-area-inset-bottom,0px))}
.training-mobile #workView .news-item-meta{gap:6px 8px}
.training-mobile #workView .news-item-context{font-size:12px;line-height:1.5;overflow-wrap:anywhere}
.training-mobile #workView .news-disclaimer{position:sticky;bottom:0;background:rgba(24,22,37,.99);font-size:10px}
.training-mobile #homeView .scenario-settings .field-hint{font-size:12px;line-height:1.5}
@media(max-height:520px){.training-mobile #workView .news-feed:not([hidden]){max-height:calc(100dvh - env(safe-area-inset-top,0px) - 24px - env(safe-area-inset-bottom,0px));min-height:180px}}
/* A short desktop window may scroll vertically rather than clipping essential panels. */
@media(min-width:1101px) and (max-height:650px){html,body{height:auto;overflow:auto}.app{height:auto;min-height:100svh;max-height:none}main{height:auto;overflow:visible}#workView:not(.hidden){display:block;height:auto;overflow:visible}#workView .workspace{height:670px;min-height:670px;margin-bottom:10px}#workView .decision-panel{overflow-y:auto}#workView .timeline-card{min-height:46px}}

.training-mobile .mobile-trade-quote{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid var(--line)}
.training-mobile .mobile-trade-quote strong{font-size:17px;margin-right:10px}
.training-mobile .mobile-trade-quote span{font-size:18px;font-weight:700}
.training-mobile .mobile-trade-quote small{display:block;font-size:11px;line-height:1.5;color:var(--muted)}
.training-mobile .mobile-trade-quote button{min-height:42px;flex-shrink:0;font-size:12px}

.training-mobile #workView.chart-focus .quote-head{display:flex;height:42px;min-height:42px;align-items:center;padding-right:120px}
.training-mobile #workView.chart-focus .quote-sub,.training-mobile #workView.chart-focus .quote-title .tag{display:none}
.training-mobile #workView.chart-focus .quote-title{font-size:14px}
.training-mobile #workView.chart-focus .last-price{font-size:18px}
.training-mobile #workView.chart-focus .news-strip{order:6}
/* === landscape-split v2 === */
/* Landscape phones keep the chart and the order panel on screen together,
   mirroring the EXE workbench order: instruments -> chart -> decision.
   The workbench is a fixed-height two-column grid; only the decision column
   and the chart card scroll internally, so nothing is scaled or rotated. */
.training-landscape .app{padding:0 10px calc(6px + env(safe-area-inset-bottom,0px))}
.training-landscape .topbar{min-height:34px;padding:1px 0}
.training-landscape .top-link{display:inline-flex;align-items:center;min-height:28px;padding:3px 7px;font-size:11px}
.training-landscape .brand-mark{width:26px;height:26px;font-size:14px}
.training-landscape .brand-title{font-size:12px}
.training-landscape #workView .session-bar{height:36px;min-height:36px;padding:4px 8px;margin:0 0 4px;flex-wrap:nowrap;gap:6px;overflow:hidden}
.training-landscape #workView .session-meta{display:none}
.training-landscape #workView .session-name{font-size:12px;white-space:nowrap}
.training-landscape #workView .session-actions{gap:4px;margin-left:auto}
.training-landscape #workView .session-actions button{min-height:30px;font-size:11px;padding:4px 8px}
.training-landscape #workView .progress-wrap{flex:1 1 70px;min-width:60px;height:14px;min-height:14px}
.training-landscape #workView .intraday-toolbar:not(.hidden){height:38px;min-height:38px;margin:0 0 4px;padding:4px 8px;flex-wrap:nowrap;overflow:hidden}
.training-landscape #workView .intraday-hint{display:none}
.training-landscape #workView .intraday-playback button{min-height:30px;font-size:11px}
.training-landscape #workView .speed-chip{min-height:28px;font-size:11px;padding:2px 8px}
.training-landscape #workView .universe-card{height:48px;min-height:48px;padding:4px 8px;margin:0 0 4px;overflow:hidden}
.training-landscape #workView .universe-heading{display:none}
.training-landscape #workView .instrument-switch{margin:0;padding:0;gap:6px;overflow-x:auto;overflow-y:hidden}
.training-landscape #workView .instrument-tab{flex:0 0 152px;min-height:40px;height:40px;padding:4px 7px}
.training-landscape #workView .instrument-tab-code{font-size:10px}
.training-landscape #workView .instrument-tab-name{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.training-landscape #workView .instrument-tab-price{font-size:12px}
.training-landscape #workView .instrument-tab-board{display:none}
.training-landscape #workView .instrument-tab-change,.training-landscape #workView .instrument-tab-position{font-size:10px}
.training-landscape #workView .workspace{display:grid;grid-template-columns:minmax(0,1fr) clamp(236px,31vw,320px);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"universe universe" "main decision";gap:0 8px;height:calc(100dvh - 100px - env(safe-area-inset-top,0px));min-height:0;align-items:stretch;overflow:hidden}
.training-landscape #workView[data-mobile-panel] .universe-card{grid-area:universe;display:block;min-width:0}
.training-landscape #workView .chart-card{grid-area:main;display:flex;margin:0;padding:7px 8px;gap:4px;height:auto;min-width:0;min-height:0;max-height:none;overflow:hidden}
.training-landscape #workView[data-mobile-panel] .chart-card{display:flex}
.training-landscape #workView .quote-head{height:32px;min-height:32px;align-items:center;gap:6px}
.training-landscape #workView .quote-title{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.training-landscape #workView .quote-title .tag{font-size:9px;white-space:nowrap}
.training-landscape #workView .quote-sub{display:none}
.training-landscape #workView .last-price{font-size:17px}
.training-landscape #workView .price-change{font-size:10px}
.training-landscape #workView .news-strip{min-height:28px;height:28px;padding:2px 6px}
.training-landscape #workView .news-strip>b,.training-landscape #workView .news-strip>i{display:none}
.training-landscape #workView .news-strip>span{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.training-landscape #workView .news-strip button{min-height:24px;font-size:10px;padding:1px 7px}
.training-landscape #workView .chart-tools{order:3;display:flex;flex-wrap:nowrap;gap:4px;height:30px;min-height:30px;overflow-x:auto;overflow-y:hidden;padding:0}
.training-landscape #workView .chart-tools>div{flex:0 0 auto;flex-wrap:nowrap}
.training-landscape #workView .chart-tools button{min-height:26px;height:26px;font-size:10px;padding:2px 7px;white-space:nowrap}
.training-landscape #workView .chart-readout{display:none}
.training-landscape #workView .chart-note,.training-landscape #workView .mobile-chart-zoom,.training-landscape #workView .chart-hint{display:none}
.training-landscape #workView #mainChart{order:1;flex:1 1 auto;height:auto;min-height:0;max-height:none;overflow:hidden}
.training-landscape #workView #mainChart svg{height:100%;min-height:0}
.training-landscape #workView .decision-panel{grid-area:decision;display:block;margin:0;padding:8px 9px 52px;height:auto;min-width:0;max-height:none;overflow-y:auto;overscroll-behavior:contain}
.training-landscape #workView[data-mobile-panel] .decision-panel{display:block}
.training-landscape #workView .mobile-trade-quote{padding-bottom:3px;margin-bottom:5px;gap:6px}
.training-landscape #workView .mobile-trade-quote strong{font-size:12px;margin-right:4px}
.training-landscape #workView .mobile-trade-quote span{font-size:14px}
.training-landscape #workView .mobile-trade-quote small{display:none}
.training-landscape #workView .mobile-trade-quote button{min-height:30px;font-size:10px}
.training-landscape #workView .decision-panel .panel-kicker{display:none}
.training-landscape #workView .decision-panel h2{font-size:16px;margin:1px 0 3px;line-height:1.25}
.training-landscape #workView .decision-panel .sub{display:none}
.training-landscape #workView .action-title{font-size:10px;line-height:1.4}
.training-landscape #workView .account-box{padding:5px 7px;margin:5px 0}
.training-landscape #workView .account-line{font-size:10px}
.training-landscape #workView .account-line strong{font-size:13px}
.training-landscape #workView .order-quantity{padding:5px 7px;margin-bottom:5px}
.training-landscape #workView .qty-row{grid-template-columns:minmax(0,1fr) auto auto;gap:4px}
.training-landscape #workView .qty-row .field{height:32px;font-size:14px}
.training-landscape #workView .qty-shortcut{height:32px;font-size:10px;padding:3px}
.training-landscape #workView .availability-line,.training-landscape #workView .order-estimate{font-size:10px;line-height:1.4}
.training-landscape #workView .decision-grid{gap:5px}
.training-landscape #workView .decision{min-height:52px;padding:6px 7px}
.training-landscape #workView .decision strong{font-size:12px}
.training-landscape #workView .decision span{font-size:9px;line-height:1.35}
.training-landscape #workView .order-queue{min-height:30px;margin:5px 0;font-size:10px}
.training-landscape #workView .queue-item button{min-height:30px;font-size:10px}
.training-landscape #workView .pending-box{min-height:30px;padding:5px 7px;font-size:10px;line-height:1.4}
.training-landscape #workView .advance{position:sticky;bottom:0;z-index:3;min-height:38px;margin:6px 0 3px;font-size:13px;padding:6px;box-shadow:0 -10px 18px rgba(10,9,18,.55)}
.training-landscape #workView .decision-feedback{font-size:10px;line-height:1.4}
.training-landscape #workView .journal-details,.training-landscape #workView .fee-details{margin-top:5px;font-size:11px}
.training-landscape #workView .journal-details summary,.training-landscape #workView .fee-details summary{min-height:32px;padding:4px 0}
.training-landscape #workView .note{min-height:64px;font-size:13px}
.training-landscape #workView .account-observatory{grid-column:1 / -1}
.training-landscape #workView .holdings-card{grid-column:1 / -1}
.training-landscape #workView[data-mobile-panel] .account-observatory{display:none}
.training-landscape #workView[data-mobile-panel] .holdings-card{display:none}
.training-landscape #workView[data-mobile-panel="assets"] .account-observatory{display:grid}
.training-landscape #workView[data-mobile-panel="assets"] .holdings-card{display:block}
.training-landscape #workView[data-mobile-panel]>.timeline-card{display:none}
.training-landscape #workView[data-mobile-panel="history"]>.timeline-card{display:block}
.training-landscape .training-landscape-more{display:inline-flex;align-items:center;min-height:28px;padding:3px 8px;font-size:11px}
html:not(.training-landscape) .training-landscape-more{display:none!important}
/* 横屏下点「面板」：退出分栏，回到可滚动的单栏流，底部导航重现。 */
html.training-landscape.landscape-stack #workView .workspace{display:block;height:auto;min-height:0;overflow:visible}
html.training-landscape.landscape-stack #workView .chart-card{display:none!important}
html.training-landscape.landscape-stack #workView .decision-panel{display:none!important}
html.training-landscape.landscape-stack #workView .account-observatory{display:grid}
html.training-landscape.landscape-stack #workView .holdings-card{display:block}
html.training-landscape.landscape-stack #workView>.timeline-card{display:block}
html.training-landscape.landscape-stack .app{padding-bottom:calc(62px + env(safe-area-inset-bottom,0px))}
html.training-landscape.landscape-stack .training-mobile-nav:not([hidden]){display:grid!important;position:fixed;inset:auto 0 0;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;padding:6px max(10px,env(safe-area-inset-right,0px)) calc(6px + env(safe-area-inset-bottom,0px)) max(10px,env(safe-area-inset-left,0px));border-top:1px solid #51486b;background:rgba(22,20,35,.98);z-index:210}
html.training-landscape.landscape-stack .training-mobile-nav button{min-height:38px;font-size:12px}
.training-landscape .training-mobile-nav{display:none!important}
/* === end landscape-split === */

/* === mobile fit and landscape chart polish === */
.training-mobile .brand{flex:1 1 156px;min-width:0}
.training-mobile .brand>div{min-width:0}
.training-mobile .brand-title{display:block;min-width:0;line-height:1.25;white-space:normal;overflow-wrap:anywhere}
.training-mobile .top-actions{flex:0 1 auto;min-width:0;margin-left:auto;gap:5px}
.training-mobile .top-actions>*{min-width:0}
.training-mobile #homeView .page-heading>div:first-child{min-width:0;width:100%}
.training-mobile #homeView .page-heading h1{max-width:100%;font-size:clamp(23px,6.8vw,30px)!important;line-height:1.25;overflow-wrap:anywhere}
.training-mobile #homeView .page-heading p{max-width:100%;line-height:1.55;overflow-wrap:anywhere}
.training-mobile #homeView .intro-grid,.training-mobile #homeView .intro-grid>*{min-width:0}
.training-mobile #homeView .hero{align-items:stretch}
.training-mobile #homeView .hero>*{min-width:0;max-width:100%;overflow-wrap:anywhere}
.training-mobile #homeView .hero .tag{white-space:normal;line-height:1.4}
.training-mobile #homeView .setup-card{min-width:0}
.training-mobile #homeView .feature-disclosure>summary{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start}
.training-mobile #homeView .feature-quicklinks{display:flex;flex-wrap:wrap;gap:6px}
.training-mobile .training-orientation-hint{display:none}
.training-mobile .training-orientation-hint:not([hidden]){display:flex;align-items:center;justify-content:space-between;gap:12px;margin:6px 0 4px;padding:8px 10px;border:1px solid rgba(167,155,255,.3);border-radius:12px;background:rgba(100,86,184,.12);color:var(--soft);font-size:12px;line-height:1.45}
.training-mobile .training-orientation-hint button{flex:0 0 auto;min-height:32px;padding:4px 9px;font-size:11px}
@media(max-width:699px){
  html.training-mobile #homeView .intro-grid{grid-template-columns:minmax(0,1fr);height:auto;min-height:0;gap:12px}
  html.training-mobile #homeView .hero,html.training-mobile #homeView .setup-card{width:100%;height:auto;min-height:0;max-height:none}
  html.training-mobile #homeView .hero{align-items:stretch;justify-content:flex-start}
  html.training-mobile #homeView .setup-card{overflow:visible}
}
@media(max-width:380px){
  .training-mobile .topbar{align-items:flex-start}
  .training-mobile .brand{flex-basis:100%}
  .training-mobile .top-actions{width:100%;justify-content:flex-start;margin-left:0}
  .training-mobile #homeView .field-pair{grid-template-columns:minmax(0,1fr)}
  .training-mobile #homeView .field-pair .field-wrap{min-width:0}
}
@media(min-width:700px) and (max-width:1100px){
  html.training-mobile #homeView .intro-grid{grid-template-columns:minmax(0,1.35fr) minmax(0,.85fr);height:auto;min-height:0;align-items:stretch}
  html.training-mobile #homeView .hero,html.training-mobile #homeView .setup-card{height:auto;min-height:0;max-height:none}
  html.training-mobile #homeView .hero{align-items:stretch}
}
/* Recover vertical room for the actual candlestick plot in landscape split mode. */
.training-landscape #workView .workspace{height:calc(100dvh - 100px - env(safe-area-inset-top,0px));}
.training-landscape #workView .chart-card{padding:4px 6px;gap:3px}
.training-landscape #workView .quote-head{height:25px;min-height:25px}
.training-landscape #workView .quote-title{font-size:12px}
.training-landscape #workView .news-strip{display:none!important}
.training-landscape #workView .chart-tools{height:24px;min-height:24px;gap:3px}
.training-landscape #workView .chart-tools button{height:22px;min-height:22px;padding:1px 6px;font-size:9px}
.training-landscape #workView #mainChart{flex:1 1 0%;min-height:132px;height:auto}
.training-landscape #workView #mainChart svg{width:100%;height:100%;min-height:132px;max-height:none}
.training-landscape #workView .decision-panel{padding-bottom:46px}
@media(max-height:390px){
  .training-landscape #workView .workspace{height:calc(100dvh - 100px - env(safe-area-inset-top,0px))}
  .training-landscape #workView .universe-card{height:42px;min-height:42px}
  .training-landscape #workView .instrument-tab{height:36px;min-height:36px}
  .training-landscape #workView .quote-head{height:22px;min-height:22px}
  .training-landscape #workView .chart-tools{height:21px;min-height:21px}
  .training-landscape #workView .chart-tools button{height:19px;min-height:19px;padding:0 5px}
  .training-landscape #workView #mainChart,.training-landscape #workView #mainChart svg{min-height:118px}
}
/* Landscape chart focus uses the full visual viewport, with a persistent return target. */
.training-landscape #workView.chart-focus .chart-card{position:fixed;inset:calc(2px + env(safe-area-inset-top,0px)) 8px calc(4px + env(safe-area-inset-bottom,0px));z-index:180;height:auto;max-height:none;padding:4px 8px;overflow:hidden;}
.training-landscape #workView.chart-focus .news-strip,.training-landscape #workView.chart-focus .chart-readout,.training-landscape #workView.chart-focus .chart-note{display:none!important}
.training-landscape #workView.chart-focus .quote-head{height:24px;min-height:24px;flex:none;padding-right:110px}
.training-landscape #workView.chart-focus .chart-tools{height:24px;min-height:24px;flex:none}
.training-landscape #workView.chart-focus #mainChart{flex:1 1 0%;height:auto;min-height:160px}
.training-landscape #workView.chart-focus #mainChart svg{height:100%;min-height:160px}
.training-landscape #workView.chart-focus .mobile-chart-back{position:fixed;top:calc(2px + env(safe-area-inset-top,0px));right:calc(14px + env(safe-area-inset-right,0px));z-index:190;display:block;min-height:34px;padding:4px 10px;font-size:11px}
@media(max-height:390px){
  .training-landscape #workView.chart-focus #mainChart,.training-landscape #workView.chart-focus #mainChart svg{min-height:140px}
}
/* === end mobile fit and landscape chart polish === */
