.app-shell { min-height: 100dvh; width: 100%; overflow-x: hidden; background: transparent; } .app-shell:has(.app-chat-panel) { height: 100dvh; max-height: 100dvh; overflow: hidden; } .app-shell:has(.app-main-panel--play-saved) { height: 100dvh; max-height: 100dvh; overflow: hidden; } .app-shell:has(.app-chat-panel) > .ant-layout { min-height: 0; height: calc(100dvh - 60px); overflow: hidden; } .app-shell:has(.app-main-panel--play-saved) > .ant-layout { min-height: 0; height: calc(100dvh - 60px); overflow: hidden; } .app-shell--docs-api { background: radial-gradient(circle at top left, rgba(22, 93, 255, 0.12), transparent 26%), linear-gradient(180deg, #f8fbff 0%, #eff5ff 45%, #ffffff 100%); } .app-header { position: sticky; top: 0; z-index: 20; display: flex; align-items: center; justify-content: center; height: 60px; padding: 0 18px; background: rgba(255, 255, 255, 0.82); border-bottom: 1px solid rgba(148, 163, 184, 0.16); backdrop-filter: blur(18px); } .app-header__row { display: flex; align-items: center; justify-content: space-between; width: 100%; min-width: 0; } .app-header__menu-side { display: flex; align-items: center; gap: 12px; flex: 1; min-width: 0; } .app-header__actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; } .app-header__row .ant-btn { width: 36px; height: 36px; border-radius: 12px; } .app-header__connection-indicator { display: inline-flex; align-items: center; justify-content: center; position: relative; overflow: visible; width: 36px; height: 36px; padding: 0; border: 1px solid rgba(148, 163, 184, 0.16); border-radius: 12px; background: rgba(255, 255, 255, 0.9); color: #182230; font: inherit; cursor: pointer; } .app-header__connection-indicator--labelled { justify-content: flex-start; gap: 8px; width: auto; min-width: 124px; padding: 0 12px 0 10px; } .app-header__connection-indicator:hover { background: #f3f7ff; } .app-header__connection-indicator--connected { border-color: rgba(22, 163, 74, 0.2); } .app-header__connection-indicator--connecting { border-color: rgba(37, 99, 235, 0.24); background: rgba(239, 246, 255, 0.92); } .app-header__connection-indicator--disconnected { border-color: rgba(220, 38, 38, 0.22); background: rgba(254, 242, 242, 0.92); } .app-header__connection-indicator--busy { box-shadow: 0 10px 24px rgba(37, 99, 235, 0.16); } .app-header__connection-count-badge { position: absolute; top: 2px; right: 2px; min-width: 18px; height: 18px; padding: 0 5px; border: 2px solid #ffffff; border-radius: 999px; background: #2563eb; color: #ffffff; font-size: 11px; font-weight: 700; line-height: 1; display: inline-flex; align-items: center; justify-content: center; z-index: 2; pointer-events: none; box-shadow: 0 6px 16px rgba(37, 99, 235, 0.24); } .app-header__connection-indicator--busy .app-header__connection-count-badge { animation: app-header-connection-badge-pulse 1.8s ease-in-out infinite; } .app-header__connection-count-badge--connecting { background: #2563eb; } .app-header__connection-count-badge--disconnected { background: #dc2626; box-shadow: 0 6px 16px rgba(220, 38, 38, 0.22); } .app-header__connection-copy { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; min-width: 0; line-height: 1.1; } .app-header__connection-title { font-size: 13px; font-weight: 700; color: #182230; white-space: nowrap; } .app-header__connection-meta { font-size: 11px; color: #64748b; white-space: nowrap; } @keyframes app-header-connection-badge-pulse { 0%, 100% { transform: scale(1); box-shadow: 0 6px 16px rgba(37, 99, 235, 0.24); } 50% { transform: scale(1.08); box-shadow: 0 10px 22px rgba(37, 99, 235, 0.34); } } .app-header__settings-item { display: flex; align-items: center; gap: 10px; min-width: 132px; padding: 10px 12px; border: 0; border-radius: 14px; background: #ffffff; color: #182230; font: inherit; text-align: left; cursor: pointer; } .app-header__settings-menu { display: flex; flex-direction: column; gap: 8px; } .app-header__settings-group { display: flex; flex-direction: column; gap: 6px; } .app-header__settings-item:hover { background: #f3f7ff; } .app-header__settings-item--nested { margin-left: 12px; min-width: 0; padding-left: 14px; background: #f8fbff; } .app-header__settings-icon { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; font-size: 16px; } .app-header__status-dot { position: absolute; right: -1px; bottom: -1px; width: 8px; height: 8px; border: 2px solid #ffffff; border-radius: 999px; } .app-header__status-dot--active { background: #16a34a; } .app-header__status-dot--inactive { background: #dc2626; } .app-header__status-dot--warning { background: #f59e0b; } .app-header__status-dot--progress { background: #2563eb; } .app-header__server-version-indicator { display: inline-flex; width: 12px; height: 12px; border: 2px solid #ffffff; border-radius: 999px; box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.08); } .app-header__server-version-indicator--latest { color: #2563eb; background: #2563eb; } .app-header__server-version-indicator--unknown { background: #94a3b8; } .app-header__server-version-indicator--update-available { background: #f59e0b; } .app-header__server-version-indicator--build-required { background: #dc2626; } .app-header__settings-label { display: inline-flex; align-items: center; gap: 4px; flex: 1; font-size: 14px; font-weight: 600; } .app-header__settings-group-arrow { display: inline-flex; align-items: center; justify-content: center; width: 16px; color: #64748b; font-size: 12px; } .app-header__update-progress { display: flex; flex-direction: column; gap: 8px; padding: 12px 14px; border: 1px solid rgba(37, 99, 235, 0.16); border-radius: 16px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(239, 245, 255, 0.96)), rgba(255, 255, 255, 0.96); } .app-header__update-progress-copy { display: flex; flex-direction: column; gap: 2px; } .app-header__update-progress-task { display: flex; justify-content: space-between; gap: 12px; padding: 8px 10px; border-radius: 12px; background: rgba(37, 99, 235, 0.08); } .app-header__update-progress .ant-progress { margin: 0; } .app-header__runtime-summary { display: flex; flex-wrap: wrap; gap: 10px; } .app-header__runtime-summary-card { display: inline-flex; align-items: center; gap: 6px; padding: 8px 12px; border: 1px solid rgba(148, 163, 184, 0.16); border-radius: 999px; background: linear-gradient(180deg, rgba(248, 250, 252, 0.95), rgba(239, 245, 255, 0.92)); } .app-header__runtime-list { display: flex; flex-direction: column; gap: 8px; } .app-header__runtime-list-item { display: flex; flex-direction: column; gap: 6px; padding: 10px 12px; border-radius: 12px; background: #f8fafc; } .app-header__runtime-list-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; } .app-header__runtime-list-copy { display: flex; flex-direction: column; gap: 2px; min-width: 0; } .app-header__runtime-list-copy .ant-typography { margin-bottom: 0; } .app-header__runtime-summary-text.ant-typography { color: #475467; font-size: 13px; } .app-header__runtime-meta { display: flex; flex-wrap: wrap; gap: 6px; } .app-header__runtime-badge { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 999px; background: rgba(37, 99, 235, 0.08); color: #1d4ed8; font-size: 12px; font-weight: 600; line-height: 1.4; } .app-header__menu-side .ant-segmented { flex: 1; min-width: 0; } .app-header__top-menu.ant-segmented { padding: 4px; } .app-header__top-menu .ant-segmented-item { min-height: 34px; padding-inline: 14px; } .app-sider.ant-layout-sider { background: rgba(255, 255, 255, 0.72); border-right: 1px solid rgba(148, 163, 184, 0.14); } .app-sider--mobile.ant-layout-sider { position: fixed; inset: 72px 0 0; z-index: 40; width: 100vw !important; min-width: 100vw !important; max-width: 100vw; flex: 0 0 100vw !important; height: calc(100vh - 72px); border-right: 0; background: rgba(255, 255, 255, 0.98); transition: none !important; overflow: hidden; } .app-sider--mobile-inline.ant-layout-sider { width: 100% !important; max-width: 100%; flex: 0 0 auto !important; border-right: 0; border-bottom: 1px solid rgba(148, 163, 184, 0.14); background: rgba(255, 255, 255, 0.92); } .app-sider__inner { display: flex; flex-direction: column; gap: 12px; height: 100%; padding: 12px 10px; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; } .app-sider__intro { width: 100%; padding: 0 4px; } .app-main-content.ant-layout-content { position: relative; display: flex; min-width: 0; min-height: calc(100dvh - 60px); width: 100%; padding: 0; overflow-x: hidden; } .app-main-content.ant-layout-content:has(.app-chat-panel) { height: 100%; min-height: 0; overflow: hidden; } .app-main-content.ant-layout-content:has(.app-main-panel--play-saved) { height: 100%; min-height: 0; padding: 0; overflow: hidden; } .app-main-content--expanded.ant-layout-content { position: relative; display: flex; min-height: 100vh; padding: 20px; } .app-main-panel { display: flex; min-width: 0; width: 100%; } .app-main-panel--play { min-height: 100%; } .app-main-panel--play-saved { height: 100%; min-height: calc(100dvh - 60px); overflow: hidden; } .app-main-panel--play > * { min-width: 0; min-height: 100%; width: 100%; } .app-main-layout:has(.app-main-panel--play-saved) { padding: 0; gap: 0; overflow: hidden; } .app-main-content--expanded.ant-layout-content:has(.app-main-panel--play-saved) { min-height: calc(100dvh - 60px); padding: 0; overflow: hidden; } .app-main-panel:has(.app-chat-panel) { height: 100%; min-height: 100%; overflow: hidden; } .app-main-layout:has(.app-chat-panel) { height: 100%; min-height: 100%; overflow: hidden; } .app-main-layout { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); gap: 16px; flex: 1; min-height: 100%; min-width: 0; padding: 16px; width: 100%; } .app-main-layout:has(.chat-type-management-page) { grid-template-columns: minmax(0, 1fr); gap: 12px; padding: 4px 12px 12px; } @media (max-width: 720px) { html, body, #root { height: 100dvh; overflow-x: hidden; overflow-y: auto; } .app-shell, .app-main-content.ant-layout-content, .app-main-panel, .app-main-layout { height: 100%; min-height: 0; } .app-shell, .app-main-content.ant-layout-content { overflow-x: hidden; overflow-y: auto; } .app-main-panel, .app-main-layout { overflow: visible; } .app-main-panel:has(.app-chat-panel), .app-main-layout:has(.app-chat-panel) { overflow: hidden; } .app-shell:has(.app-main-panel--play-saved), .app-shell:has(.app-main-panel--play-saved) > .ant-layout, .app-main-content.ant-layout-content:has(.app-main-panel--play-saved), .app-main-layout:has(.app-main-panel--play-saved), .app-main-panel--play-saved { height: calc(100dvh - 52px); min-height: calc(100dvh - 52px); overflow: hidden; } .app-header { padding-inline: 8px; } .app-header__row { gap: 8px; } .app-header__actions { gap: 4px; } .app-main-layout { gap: 0; padding: 0; } } .app-main-layout > * { min-width: 0; } .app-main-layout--single { grid-template-columns: minmax(0, 1fr); } .app-main-content--expanded .app-main-panel, .app-main-content--expanded .app-main-card { min-height: 100%; } .app-main-content__restore.ant-btn { position: fixed; top: 16px; right: 16px; z-index: 30; border-radius: 999px; background: rgba(255, 255, 255, 0.88); border: 1px solid rgba(148, 163, 184, 0.24); backdrop-filter: blur(16px); } .app-main-card { border-radius: 20px; width: 100%; } .app-main-card.ant-card, .app-chat-panel.ant-card { border: 0; box-shadow: none; } .app-main-card.ant-card { min-height: 100%; } .app-main-card.ant-card { background: rgba(255, 255, 255, 0.72); } .app-main-card.ant-card .ant-card-head { min-height: auto; padding: 16px 20px 0; border-bottom: 0; } .app-main-card.ant-card .ant-card-body { display: flex; flex-direction: column; height: auto; min-width: 0; padding: 12px 20px 20px; } .app-main-copy.ant-typography { margin-bottom: 20px; } .app-main-window-layer { position: absolute; inset: 16px; z-index: 25; pointer-events: none; } .app-main-window-layer__stage { position: relative; width: 100%; height: 100%; min-height: calc(100dvh - 92px); overflow: hidden; border-radius: 24px; } .app-main-window-layer__window { pointer-events: auto; } .app-main-window-layer__body { display: flex; flex: 1 1 auto; flex-direction: column; gap: 0; min-width: 0; min-height: 0; padding: 0 !important; overflow: hidden; } .app-main-window-layer__fallback { display: flex; flex: 1; flex-direction: column; gap: 12px; min-height: 0; } .app-main-window-layer__sample { display: flex; flex: 1; min-width: 0; min-height: 0; overflow: auto; } .app-main-window-layer__sample > * { flex: 1; min-width: 0; min-height: 0; } .app-main-window-layer__sample--intrinsic { display: block; flex: 0 0 auto; overflow: visible; padding: 20px; } .app-main-window-layer__sample--intrinsic > * { flex: 0 0 auto; min-height: auto; } .app-main-window-layer__sample--fill { display: flex; flex: 1 1 auto; min-width: 0; min-height: 0; overflow: hidden; padding: 0; } .app-main-window-layer__sample--fill > * { flex: 1 1 auto; min-width: 0; min-height: 0; } .app-main-window-layer__keywords { display: flex; flex-wrap: wrap; gap: 8px; } .app-main-stack { width: 100%; min-width: 0; } @media (max-width: 1080px) { .app-main-layout { grid-template-columns: minmax(0, 1fr); } } @media (max-width: 1180px) { .app-main-panel:has(.app-chat-panel) { height: calc(100dvh - 60px); min-height: calc(100dvh - 60px); overflow: hidden; } .app-main-layout:has(.app-chat-panel) { height: calc(100dvh - 60px); min-height: calc(100dvh - 60px); padding: 0; gap: 0; overflow: hidden; } } @media (max-width: 768px) { .app-shell:has(.app-chat-panel) > .ant-layout { height: calc(100dvh - 52px); } .app-header { padding: 6px 10px; height: 52px; } .app-header__row { gap: 8px; } .app-header__menu-side { gap: 8px; } .app-header__top-menu.ant-segmented { padding: 5px; } .app-header__top-menu .ant-segmented-item { min-height: 34px; padding-inline: 12px; } .app-header__row .ant-btn { width: 32px; height: 32px; } .app-header__connection-indicator--labelled { min-width: 32px; width: 32px; padding: 0; justify-content: center; } .app-header__connection-copy { display: none; } .app-header__runtime-summary { gap: 8px; } .app-sider.ant-layout-sider { position: static; } .app-sider--mobile.ant-layout-sider { position: fixed; inset: 52px 0 0; height: calc(100vh - 52px); } .app-sider--mobile-inline.ant-layout-sider { position: static; height: auto; } .app-main-content.ant-layout-content { padding: 0; min-height: calc(100dvh - 52px); } .app-main-layout { min-height: calc(100dvh - 52px); padding: 8px; gap: 8px; } .app-main-panel--play-saved { min-height: calc(100dvh - 52px); } .app-main-layout:has(.app-main-panel--play-saved) { min-height: calc(100dvh - 52px); } .app-main-layout:has(.chat-type-management-page) { padding: 0; gap: 0; } .app-main-window-layer { inset: 8px; } .app-main-window-layer__stage { min-height: calc(100dvh - 68px); border-radius: 18px; } .app-main-card { border-radius: 16px; } .app-main-card.ant-card { background: rgba(255, 255, 255, 0.82); } .app-main-card.ant-card .ant-card-head { padding: 14px 16px 0; } .app-main-card.ant-card .ant-card-head-title { white-space: normal; } .app-main-card.ant-card .ant-card-body { padding: 10px 16px 16px; } .app-main-panel:has(.app-chat-panel) { height: calc(100dvh - 76px); min-height: calc(100dvh - 76px); } }