| :root{ |
| --os-font: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Inter", "PingFang SC", "Microsoft YaHei", sans-serif; |
| --mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono","Courier New", monospace; |
|
|
| --bg: #ffffff; |
| --text: #0b0b0c; |
| --muted: rgba(11,11,12,0.62); |
|
|
| --surface: rgba(255,255,255,0.92); |
| --surface-2: rgba(0,0,0,0.03); |
|
|
| --border: rgba(11,11,12,0.14); |
| --border-weak: rgba(11,11,12,0.08); |
|
|
| --shadow-soft: 0 12px 32px rgba(0,0,0,0.06); |
| --shadow: 0 22px 60px rgba(0,0,0,0.10); |
|
|
| --radius-lg: 28px; |
| --radius-md: 18px; |
| --radius-sm: 12px; |
|
|
| --maxw: 920px; |
| --ring: 0 0 0 3px rgba(0,0,0,0.12); |
|
|
| --topbar-h: 56px; |
|
|
| --sidebar-w: 260px; |
| --sidebar-collapsed-w: 56px; |
|
|
| --devbar-w: 360px; |
| --devbar-collapsed-w: 56px; |
|
|
| --sidebar-panel-gap: 14px; |
| } |
|
|
| @media (prefers-color-scheme: dark){ |
| :root{ |
| --bg: #0b0b0c; |
| --text: #f4f4f5; |
| --muted: rgba(244,244,245,0.60); |
|
|
| --surface: rgba(20,20,22,0.92); |
| --surface-2: rgba(255,255,255,0.07); |
|
|
| --border: rgba(244,244,245,0.16); |
| --border-weak: rgba(244,244,245,0.10); |
|
|
| --shadow-soft: 0 14px 36px rgba(0,0,0,0.38); |
| --shadow: 0 24px 70px rgba(0,0,0,0.58); |
|
|
| --ring: 0 0 0 3px rgba(255,255,255,0.14); |
| } |
| } |
|
|
| *{ box-sizing: border-box; } |
| html, body{ height: 100%; } |
|
|
| body{ |
| margin: 0; |
| font-family: var(--os-font); |
| color: var(--text); |
| background: var(--bg); |
| -webkit-font-smoothing: antialiased; |
| -moz-osx-font-smoothing: grayscale; |
| text-rendering: geometricPrecision; |
|
|
| --sidebar-current: var(--sidebar-w); |
| --content-offset: var(--sidebar-current); |
|
|
| --devbar-current: 0px; |
| --right-offset: 0px; |
|
|
| |
| --center-shift: calc((var(--content-offset) - var(--right-offset)) * 0.5); |
| } |
|
|
| body.sidebar-collapsed{ |
| --sidebar-current: var(--sidebar-collapsed-w); |
| --content-offset: var(--sidebar-current); |
| } |
|
|
| body.dev-mode{ |
| --devbar-current: var(--devbar-w); |
| --right-offset: var(--devbar-current); |
| } |
| body.dev-mode.devbar-collapsed{ |
| --devbar-current: var(--devbar-collapsed-w); |
| --right-offset: var(--devbar-current); |
| } |
|
|
| |
| @media (max-width: 760px){ |
| body{ --content-offset: var(--sidebar-collapsed-w); } |
| body.dev-mode, |
| body.dev-mode.devbar-collapsed{ --right-offset: 0px; } |
| } |
|
|
| .hidden{ display:none !important; } |
|
|
| ::selection{ background: rgba(0,0,0,0.10); } |
| @media (prefers-color-scheme: dark){ |
| ::selection{ background: rgba(255,255,255,0.14); } |
| } |
|
|
| |
| .main{ |
| margin-left: var(--content-offset); |
| margin-right: var(--right-offset); |
| min-height: 100vh; |
| } |
|
|
| |
| |
| |
| .sidebar{ |
| position: fixed; |
| left: 0; |
| top: 0; |
| height: 100vh; |
| width: var(--sidebar-current); |
| z-index: 55; |
|
|
| overflow: hidden; |
|
|
| background: var(--surface); |
| border-right: 1px solid var(--border-weak); |
| box-shadow: var(--shadow-soft); |
| backdrop-filter: blur(10px); |
|
|
| transition: width 0.18s ease; |
| } |
|
|
| .sidebar-inner{ |
| height: 100%; |
| padding: 12px; |
| display: flex; |
| flex-direction: column; |
| gap: 10px; |
| } |
|
|
| .sidebar-icon-btn{ |
| width: 44px; |
| height: 44px; |
| border-radius: 999px; |
| border: 1px solid var(--border-weak); |
| background: transparent; |
| color: var(--text); |
| display: grid; |
| place-items: center; |
| cursor: pointer; |
| } |
| .sidebar-icon-btn:hover{ |
| background: var(--surface-2); |
| border-color: var(--border); |
| } |
|
|
| .sidebar-action{ |
| width: 100%; |
| height: 44px; |
| border-radius: 16px; |
| border: 1px solid var(--border-weak); |
| background: transparent; |
| color: var(--text); |
| display:flex; |
| align-items:center; |
| gap: 10px; |
| padding: 0 12px; |
| cursor:pointer; |
| } |
| .sidebar-action:hover{ |
| background: var(--surface-2); |
| border-color: var(--border); |
| } |
| .sidebar-action.primary{ border-color: var(--border); } |
|
|
| .sidebar-action-icon{ |
| width: 20px; |
| height: 20px; |
| display: grid; |
| place-items:center; |
| font-size: 18px; |
| line-height: 1; |
| flex: 0 0 auto; |
| } |
| .sidebar-action-text{ |
| font-size: 13px; |
| color: var(--text); |
| white-space: nowrap; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| } |
|
|
| .devbar-sid{ |
| font-family: var(--mono); |
| font-size: 12px; |
| color: var(--muted); |
| padding: 6px 2px 0; |
| white-space: normal; |
| word-break: break-all; |
| user-select: text; |
| } |
| body.dev-mode.devbar-collapsed .devbar-sid{ display:none; } |
|
|
| |
| body.sidebar-collapsed .sidebar-inner{ padding: 12px 6px; } |
| body.sidebar-collapsed .sidebar-action{ |
| width: 44px; |
| padding: 0; |
| justify-content: center; |
| border-radius: 999px; |
| } |
| body.sidebar-collapsed .sidebar-action-text{ display:none; } |
|
|
| |
| .sidebar-model{ |
| width: 100%; |
| display: flex; |
| flex-direction: column; |
| gap: 6px; |
| padding: 2px; |
| } |
| .sidebar-model-label{ |
| font-size: 12px; |
| color: var(--muted); |
| padding: 2px 6px 0; |
| white-space: nowrap; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| } |
| .sidebar-model-select{ |
| width: 100%; |
| height: 36px; |
| border-radius: 12px; |
| border: 1px solid var(--border-weak); |
| background: var(--surface-2); |
| color: var(--text); |
| padding: 0 10px; |
| font-size: 13px; |
| outline: none; |
| } |
| .sidebar-model-select:hover{ border-color: var(--border); } |
| .sidebar-model-select:focus{ |
| border-color: var(--border); |
| box-shadow: var(--ring); |
| } |
| body.sidebar-collapsed .sidebar-model{ display: none; } |
|
|
| |
| |
| |
| .sidebar-panel{ |
| width: 100%; |
| border: 1px solid var(--border-weak); |
| border-radius: 16px; |
| background: var(--surface); |
| padding: 10px 12px; |
| display: flex; |
| flex-direction: column; |
| gap: 8px; |
| } |
|
|
| .sidebar-scroll .sidebar-panel + .sidebar-panel{ |
| margin-top: var(--sidebar-panel-gap); |
| } |
|
|
| .sidebar-panel-title{ |
| font-size: 12px; |
| color: var(--muted); |
| padding: 2px 2px 0; |
|
|
| display: flex; |
| align-items: center; |
| gap: 6px; |
|
|
| overflow: visible; |
| } |
|
|
| .sidebar-panel-title-text{ |
| flex: 0 1 auto; |
| min-width: 0; |
|
|
| white-space: nowrap; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| } |
|
|
| |
| |
| |
|
|
| .sidebar-help{ |
| position: relative; |
| flex: 0 0 auto; |
| display: inline-flex; |
| align-items: center; |
| justify-content: center; |
| text-decoration: none; |
| cursor: pointer; |
| } |
|
|
| .sidebar-help-icon{ |
| width: 18px; |
| height: 18px; |
| border-radius: 999px; |
|
|
| border: 1px solid var(--border-weak); |
| background: var(--surface-2); |
| color: var(--muted); |
|
|
| display: grid; |
| place-items: center; |
|
|
| font-size: 11px; |
| font-weight: 600; |
| line-height: 1; |
| } |
|
|
| .sidebar-help:hover .sidebar-help-icon{ |
| border-color: var(--border); |
| color: var(--text); |
| } |
|
|
| .sidebar-help:focus-visible .sidebar-help-icon{ |
| box-shadow: var(--ring); |
| } |
|
|
| .sidebar-help{ |
| position: relative; |
| } |
|
|
| .sidebar-help-tooltip{ |
| position: absolute; |
| z-index: 60; |
|
|
| left: 0px; |
| right: auto; |
| max-width: calc(var(--sidebar-current) / 2); |
| white-space: normal; |
| max-height: min(35vh, 180px); |
| top: calc(100% + 6px); |
|
|
| display: inline-block; |
| width: max-content; |
|
|
| overflow: auto; |
|
|
| padding: 2px 6px; |
| border-radius: 12px; |
| border: 1px solid var(--border-weak); |
| background: var(--surface); |
| box-shadow: var(--shadow-soft); |
|
|
| color: var(--text); |
| font-size: 12px; |
| line-height: 1.45; |
|
|
| white-space: pre-line; |
| overflow-wrap: anywhere; |
|
|
| opacity: 0; |
| visibility: hidden; |
| transform: translateY(-4px); |
| pointer-events: none; |
|
|
| transition: opacity .12s ease, transform .12s ease, visibility .12s ease; |
| } |
|
|
| .sidebar-help-tooltip::before{ |
| content: ""; |
| position: absolute; |
| top: -6px; |
| left: auto; |
| right: 10px; |
| width: 10px; |
| height: 10px; |
| transform: rotate(45deg); |
|
|
| background: var(--surface); |
| border-left: 1px solid var(--border-weak); |
| border-top: 1px solid var(--border-weak); |
| } |
|
|
| .sidebar-help:hover .sidebar-help-tooltip, |
| .sidebar-help:focus-visible .sidebar-help-tooltip, |
| .sidebar-help-tooltip:hover{ |
| opacity: 1; |
| visibility: visible; |
| transform: translateY(0); |
| pointer-events: auto; |
| } |
|
|
| .sidebar-help-tooltip-body{ |
| display: block; |
| color: var(--text); |
| } |
|
|
| .sidebar-help-tooltip-cta{ |
| display: block; |
| margin-top: 2px; |
| color: var(--muted); |
| text-decoration: underline; |
| text-underline-offset: 2px; |
| } |
|
|
| .sidebar-help-tooltip-text{ |
| text-decoration: underline; |
| text-underline-offset: 2px; |
| } |
|
|
| |
| .sidebar-help:hover .sidebar-help-tooltip, |
| .sidebar-help:focus-visible .sidebar-help-tooltip{ |
| opacity: 1; |
| visibility: visible; |
| transform: translateY(0); |
| pointer-events: auto; |
| } |
| |
| .sidebar-help{ |
| position: relative; |
| } |
|
|
| .sidebar-help::after{ |
| content: ""; |
| position: absolute; |
| left: -10px; |
| right: -10px; |
| top: 100%; |
| height: 14px; |
| background: transparent; |
| } |
|
|
| .sidebar-help:hover .sidebar-help-tooltip, |
| .sidebar-help:focus-visible .sidebar-help-tooltip, |
| .sidebar-help-tooltip:hover{ |
| opacity: 1; |
| visibility: visible; |
| transform: translateY(0); |
| pointer-events: auto; |
| } |
|
|
| .sidebar-subtitle{ |
| font-size: 12px; |
| color: var(--muted); |
| margin-top: 4px; |
| } |
| .sidebar-input{ |
| width: 100%; |
| height: 34px; |
| border-radius: 12px; |
| border: 1px solid var(--border-weak); |
| background: var(--surface-2); |
| color: var(--text); |
| padding: 0 10px; |
| font-size: 13px; |
| outline: none; |
| } |
| .sidebar-input:hover{ border-color: var(--border); } |
| .sidebar-input:focus{ |
| border-color: var(--border); |
| box-shadow: var(--ring); |
| } |
| .sidebar-divider{ |
| height: 1px; |
| background: var(--border-weak); |
| margin: 6px 0 2px; |
| } |
| .sidebar-hint{ |
| font-size: 11px; |
| color: var(--muted); |
| line-height: 1.45; |
| } |
| .sidebar-tts-fields{ |
| display: flex; |
| flex-direction: column; |
| gap: 8px; |
| } |
|
|
| |
| body.sidebar-collapsed .sidebar-panel{ display: none; } |
|
|
| |
| .sidebar-inner{ |
| min-height: 0; |
| } |
|
|
| |
| .sidebar-top{ |
| display: flex; |
| flex-direction: column; |
| gap: 10px; |
| flex: 0 0 auto; |
| min-height: 0; |
| } |
|
|
| |
| .sidebar-scroll{ |
| flex: 1 1 auto; |
| min-height: 0; |
| overflow-y: auto; |
| overflow-x: hidden; |
| padding-bottom: 12px; |
| overscroll-behavior: contain; |
| -webkit-overflow-scrolling: touch; |
| } |
|
|
| .sidebar-icon-btn, |
| .sidebar-action{ |
| flex: 0 0 auto; |
| flex-shrink: 0; |
| } |
|
|
| .sidebar-action{ |
| min-height: 44px; |
| } |
|
|
| body.sidebar-collapsed .sidebar-scroll{ |
| display: none; |
| } |
|
|
|
|
| |
| |
| |
| .topbar{ |
| position: sticky; |
| top: 0; |
| z-index: 45; |
| height: var(--topbar-h); |
|
|
| display: flex; |
| align-items: center; |
| padding: 0 16px; |
|
|
| background: var(--surface); |
| border-bottom: 1px solid var(--border-weak); |
| backdrop-filter: blur(10px); |
|
|
| box-shadow: 0 10px 24px rgba(0,0,0,0.04); |
| } |
| @media (prefers-color-scheme: dark){ |
| .topbar{ box-shadow: 0 16px 34px rgba(0,0,0,0.32); } |
| } |
|
|
| .topbar > .brand{ |
| width: 100%; |
| margin: 0; |
| display: flex; |
| align-items: baseline; |
| gap: 10px; |
| min-width: 0; |
| } |
|
|
| .topbar .brand{ |
| font-size: 24px; |
| font-weight: 700; |
| letter-spacing: -0.03em; |
| color: var(--text); |
| opacity: 0.92; |
|
|
| white-space: nowrap; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| } |
|
|
| .topbar .ver{ |
| display: inline-flex; |
| align-items: center; |
| height: 20px; |
| padding: 0 8px; |
| border-radius: 999px; |
|
|
| border: 1px solid var(--border-weak); |
| background: var(--surface-2); |
| color: var(--muted); |
|
|
| font-family: var(--mono); |
| font-size: 11px; |
| font-weight: 600; |
| letter-spacing: 0; |
| } |
|
|
| .topbar .actions{ |
| margin-left: auto; |
| display: flex; |
| align-items: center; |
| gap: 8px; |
| } |
|
|
| @media (max-width: 640px){ |
| .topbar{ height: 52px; padding: 0 12px; } |
| .topbar > .brand{ width: min(var(--maxw), calc(100% - 1.25rem)); } |
| } |
|
|
| |
| |
| |
| .chat{ |
| width: min(var(--maxw), calc(100% - 2rem)); |
| margin: 0 auto; |
| padding: 24px 0 240px; |
| } |
| #chat:empty{ padding: 0; } |
|
|
| |
| .hero{ |
| display: none; |
| position: fixed; |
| left: calc(50% + var(--center-shift)); |
| top: 18vh; |
| transform: translateX(-50%); |
| width: min(var(--maxw), calc(100vw - var(--content-offset) - var(--right-offset) - 2rem)); |
| text-align: center; |
| pointer-events: none; |
| } |
| #chat:empty ~ .hero{ display:block; } |
|
|
| .hero-title{ |
| margin: 0; |
| font-size: clamp(34px, 4.2vw, 52px); |
| line-height: 1.06; |
| font-weight: 650; |
| letter-spacing: -0.03em; |
| } |
|
|
| |
| .msg{ |
| margin: 0; |
| padding: 10px 0; |
| display: flex; |
| } |
| .msg.assistant{ justify-content:flex-start; } |
| .msg.user{ justify-content:flex-end; } |
|
|
| |
| .msg.user > div, |
| .msg.assistant > div{ min-width: 0; } |
|
|
| |
| .msg.user > div{ |
| max-width: min(70%, 560px) !important; |
| min-width: 0; |
| } |
|
|
| .bubble{ |
| max-width: min(74ch, 100%); |
| font-size: 15px; |
| line-height: 1.68; |
| letter-spacing: -0.01em; |
| white-space: normal; |
| word-break: break-word; |
| } |
|
|
| .msg.assistant .bubble{ |
| padding: 0; |
| background: transparent; |
| border: none; |
| box-shadow: none; |
| } |
|
|
| .msg.user .bubble{ |
| padding: 8px 12px; |
| background: var(--surface-2); |
| border: 1px solid var(--border-weak); |
| border-radius: 16px; |
|
|
| font-size: 14.5px; |
| line-height: 1.55; |
| letter-spacing: -0.005em; |
|
|
| max-width: min(60ch, 72vw); |
| white-space: pre-wrap; |
| } |
|
|
| .bubble a{ |
| color: inherit; |
| text-decoration: underline; |
| text-underline-offset: 2px; |
| } |
| .bubble a:hover{ opacity: 0.88; } |
|
|
| .bubble pre{ |
| margin: 12px 0; |
| padding: 12px 14px; |
| border-radius: 16px; |
| background: var(--surface-2); |
| border: 1px solid var(--border-weak); |
| overflow: auto; |
| font-family: var(--mono); |
| font-size: 13px; |
| line-height: 1.6; |
| } |
| .bubble code{ |
| font-family: var(--mono); |
| font-size: 0.92em; |
| padding: 2px 6px; |
| border-radius: 10px; |
| background: var(--surface-2); |
| border: 1px solid var(--border-weak); |
| } |
| .bubble pre code{ |
| padding: 0; |
| border: none; |
| background: transparent; |
| } |
|
|
| |
| .msg.assistant .bubble h1, |
| .msg.assistant .bubble h2, |
| .msg.assistant .bubble h3{ |
| margin: 18px 0 10px; |
| line-height: 1.25; |
| letter-spacing: -0.02em; |
| } |
| .msg.assistant .bubble p{ margin: 10px 0; } |
| .msg.assistant .bubble ul, |
| .msg.assistant .bubble ol{ margin: 10px 0 10px 1.2em; } |
| .msg.assistant .bubble blockquote{ |
| margin: 12px 0; |
| padding: 8px 12px; |
| border-left: 3px solid var(--border); |
| background: var(--surface-2); |
| border-radius: 12px; |
| color: var(--muted); |
| } |
| .msg.assistant .bubble hr{ |
| border: none; |
| border-top: 1px solid var(--border-weak); |
| margin: 14px 0; |
| } |
|
|
| |
| |
| |
| .attach-row{ |
| display: flex; |
| gap: 8px; |
| padding: 6px 0 0; |
| } |
|
|
| |
| .media-row, |
| .attach-row{ |
| display: flex; |
| gap: 8px; |
|
|
| max-width: 100%; |
| min-width: 0; |
| flex-wrap: nowrap; |
|
|
| overflow-x: auto; |
| overflow-y: hidden; |
|
|
| -webkit-overflow-scrolling: touch; |
| scrollbar-width: thin; |
| } |
|
|
| |
| .media-row::-webkit-scrollbar, |
| .attach-row::-webkit-scrollbar{ height: 6px; } |
| .media-row::-webkit-scrollbar-thumb, |
| .attach-row::-webkit-scrollbar-thumb{ |
| background: var(--border); |
| border-radius: 999px; |
| } |
| .media-row::-webkit-scrollbar-track, |
| .attach-row::-webkit-scrollbar-track{ background: transparent; } |
|
|
| |
| .msg.user .attach-row{ |
| padding-top: 4px; |
| justify-content: flex-start !important; |
| margin-left: 0 !important; |
|
|
| width: 100%; |
| min-width: 0; |
|
|
| overscroll-behavior-x: contain; |
| touch-action: pan-x; |
| } |
|
|
| |
| .attach-wrap{ |
| max-width: 100%; |
| min-width: 0; |
| } |
| .attach-wrap.align-right{ margin-left: auto; } |
| .attach-wrap .attach-row{ |
| width: 100%; |
| min-width: 0; |
| justify-content: flex-start; |
| } |
|
|
| |
| .media-item{ |
| position: relative; |
| flex: 0 0 auto; |
| width: 64px; |
| height: 64px; |
| border-radius: 14px; |
| overflow: hidden; |
| background: var(--surface-2); |
| border: 1px solid var(--border-weak); |
| cursor: pointer; |
| } |
| .media-item:hover{ border-color: var(--border); } |
|
|
| .media-item img{ |
| width: 100%; |
| height: 100%; |
| object-fit: contain; |
| object-position: center; |
| display:block; |
| } |
|
|
| .media-tag{ |
| position: absolute; |
| left: 6px; |
| top: 6px; |
| font-size: 10px; |
| padding: 2px 6px; |
| border-radius: 999px; |
| background: rgba(255,255,255,0.86); |
| border: 1px solid rgba(0,0,0,0.10); |
| color: rgba(0,0,0,0.72); |
| } |
| @media (prefers-color-scheme: dark){ |
| .media-tag{ |
| background: rgba(0,0,0,0.55); |
| border-color: rgba(255,255,255,0.12); |
| color: rgba(255,255,255,0.78); |
| } |
| } |
|
|
| .media-play{ |
| position: absolute; |
| right: 8px; |
| bottom: 8px; |
| width: 0; |
| height: 0; |
| border-left: 14px solid rgba(255,255,255,0.92); |
| border-top: 9px solid transparent; |
| border-bottom: 9px solid transparent; |
| filter: drop-shadow(0 1px 2px rgba(0,0,0,0.35)); |
| } |
|
|
| .media-remove{ |
| position: absolute; |
| right: 6px; |
| top: 6px; |
| width: 22px; |
| height: 22px; |
| border-radius: 999px; |
| border: 1px solid rgba(255,255,255,0.70); |
| background: rgba(0,0,0,0.55); |
| color: rgba(255,255,255,0.96); |
| font-weight: 700; |
| line-height: 20px; |
| text-align: center; |
| cursor: pointer; |
| } |
| @media (prefers-color-scheme: dark){ |
| .media-remove{ |
| border-color: rgba(255,255,255,0.18); |
| background: rgba(255,255,255,0.12); |
| color: rgba(255,255,255,0.96); |
| } |
| } |
|
|
| |
| .media-remove{ |
| display: grid; |
| place-items: center; |
| padding: 0; |
| line-height: 0; |
| font-size: 0; |
| -webkit-appearance: none; |
| appearance: none; |
| } |
|
|
| .media-remove{ --x-size: 10px; --x-thick: 2px; --x-nudge-y: 4.5px; } |
|
|
| .media-remove::before, |
| .media-remove::after{ |
| content: ""; |
| width: var(--x-size); |
| height: var(--x-thick); |
| background: currentColor; |
| border-radius: 999px; |
| grid-area: 1 / 1; |
| pointer-events: none; |
| display: block; |
| place-self: center; |
| } |
|
|
| .media-remove::before{ transform: translateY(var(--x-nudge-y, 0px)) rotate(45deg); } |
| .media-remove::after{ transform: translateY(var(--x-nudge-y, 0px)) rotate(-45deg); } |
|
|
|
|
| |
| |
| |
| .file-input{ display:none; } |
|
|
| .composer{ |
| position: fixed; |
| left: calc(50% + var(--center-shift)); |
| bottom: calc(24px + env(safe-area-inset-bottom)); |
| transform: translateX(-50%); |
| z-index: 45; |
|
|
| width: min(var(--maxw), calc(100vw - var(--content-offset) - var(--right-offset) - 2rem)); |
| padding: 10px 12px; |
| border-radius: var(--radius-lg); |
|
|
| background: var(--surface); |
| border: 1px solid var(--border-weak); |
| box-shadow: var(--shadow-soft); |
| backdrop-filter: blur(10px); |
|
|
| display: flex; |
| flex-direction: column; |
| flex-wrap: nowrap; |
| align-items: stretch; |
| gap: 8px; |
| } |
|
|
| #chat:empty ~ .composer{ |
| top: 55vh; |
| bottom: auto; |
| transform: translate(-50%, -50%); |
| } |
|
|
| .composer:focus-within{ |
| border-color: var(--border); |
| box-shadow: var(--shadow-soft), var(--ring); |
| } |
|
|
| |
| .pending{ |
| display:flex; |
| gap: 8px; |
| padding: 6px 2px 2px; |
| margin: 0 0 2px; |
| border-bottom: 1px solid var(--border-weak); |
| overflow: hidden; |
| } |
| .media-bar-title{ display:none; } |
| .pending .media-row{ flex: 1 1 auto; } |
|
|
| |
| .composer-top{ |
| width: 100%; |
| padding: 0 2px; |
| } |
|
|
| .prompt{ |
| width: 100%; |
| min-height: 40px; |
| max-height: 180px; |
|
|
| border: none; |
| outline: none; |
| background: transparent; |
|
|
| resize: none; |
|
|
| overflow-y: hidden; |
| overflow-x: hidden; |
|
|
| font-family: inherit; |
| font-size: 15px; |
| line-height: 20px; |
| color: var(--text); |
| padding: 10px 8px; |
| } |
| .prompt::placeholder{ color: var(--muted); } |
|
|
| .composer-actions{ |
| display: flex; |
| align-items: center; |
| gap: 8px; |
| padding-top: 10px; |
| border-top: 1px solid var(--border-weak); |
| } |
| .composer-actions-spacer{ |
| flex: 1 1 auto; |
| min-width: 0; |
| } |
|
|
| |
| .icon-btn{ |
| width: 44px; |
| height: 44px; |
| border-radius: 999px; |
| border: 1px solid var(--border-weak); |
| background: transparent; |
| color: var(--text); |
| display: grid; |
| place-items: center; |
| cursor: pointer; |
| flex: 0 0 auto; |
| } |
| .icon-btn:hover{ |
| background: var(--surface-2); |
| border-color: var(--border); |
| } |
| .icon-btn:active{ transform: translateY(1px); } |
| .icon-btn:disabled{ |
| opacity: 0.35; |
| cursor: not-allowed; |
| transform: none; |
| } |
|
|
| |
| .send-btn{ |
| width: 44px; |
| height: 44px; |
| border-radius: 999px; |
|
|
| border: 1px solid transparent; |
| background: #000; |
| color: #fff; |
|
|
| display: grid; |
| place-items: center; |
| cursor: pointer; |
| flex: 0 0 auto; |
|
|
| transition: transform 0.08s ease, opacity 0.18s ease; |
| } |
| @media (prefers-color-scheme: dark){ |
| .send-btn{ background: #fff; color: #000; } |
| } |
| .send-btn:hover{ transform: translateY(-1px); } |
| .send-btn:active{ transform: translateY(0); } |
| .send-btn:disabled{ |
| opacity: 0.35; |
| cursor: not-allowed; |
| transform: none; |
| } |
|
|
| |
| .sidebar-icon-btn svg, |
| .devbar-icon-btn svg, |
| .icon-btn svg, |
| .send-btn svg, |
| .scroll-bottom svg{ |
| width: 20px; |
| height: 20px; |
| fill: none; |
| stroke: currentColor; |
| stroke-width: 2.2; |
| stroke-linecap: round; |
| stroke-linejoin: round; |
| } |
|
|
| |
| |
| |
| .toast{ |
| position: fixed; |
| left: calc(50% + var(--center-shift)); |
| transform: translateX(-50%); |
| bottom: calc(24px + env(safe-area-inset-bottom) + 86px); |
| z-index: 60; |
|
|
| padding: 10px 12px; |
| border-radius: 14px; |
|
|
| border: 1px solid var(--border-weak); |
| background: var(--surface); |
| box-shadow: var(--shadow-soft); |
|
|
| color: var(--text); |
| font-size: 13px; |
| letter-spacing: -0.01em; |
| } |
|
|
| details.tool-card{ |
| width: min(480px, 100%); |
| border: 1px solid var(--border-weak); |
| border-radius: 16px; |
| background: var(--surface); |
| overflow: hidden; |
| } |
| details.tool-card > summary{ list-style: none; } |
| details.tool-card > summary::-webkit-details-marker{ display:none; } |
| details.tool-card > summary::marker{ content:""; } |
|
|
| .tool-head{ cursor: pointer; padding: 12px 14px; } |
| details.tool-card[open] .tool-head{ border-bottom: 1px solid var(--border-weak); } |
|
|
| .media-card{ |
| width: min(480px, 100%); |
| border: 1px solid var(--border-weak); |
| border-radius: 16px; |
| background: var(--surface); |
| padding: 10px 14px 12px; |
| } |
| .media-card .tool-preview{ margin-top: 0; } |
| .msg.assistant.tool-media-msg{ padding-top: 6px; } |
|
|
| .tool-line{ |
| display: flex; |
| align-items: center; |
| gap: 10px; |
| min-width: 0; |
| } |
| .tool-left{ |
| display: flex; |
| align-items: center; |
| gap: 8px; |
| min-width: 0; |
| flex: 0 1 auto; |
| } |
| .tool-status{ |
| width: 14px; |
| height: 14px; |
| flex: 0 0 auto; |
| display: inline-flex; |
| align-items: center; |
| justify-content: center; |
| box-sizing: border-box; |
| color: var(--muted); |
| } |
| .tool-status.is-running::before{ |
| content: ""; |
| width: 12px; |
| height: 12px; |
| box-sizing: border-box; |
| border: 2px solid var(--muted); |
| border-top-color: transparent; |
| border-radius: 999px; |
| animation: os_tool_spin 0.8s linear infinite; |
| } |
| .tool-status.is-success, |
| .tool-status.is-error{ color: var(--text); } |
|
|
| .tool-name{ |
| font-size: 13px; |
| color: var(--muted); |
| white-space: nowrap; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| } |
| .tool-args-preview{ |
| font-family: var(--mono); |
| font-size: 12px; |
| color: var(--muted); |
| white-space: nowrap; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| min-width: 0; |
| flex: 1 1 auto; |
| text-align: right; |
| } |
|
|
| .tool-progress{ |
| margin-top: 10px; |
| width: min(240px, 100%); |
| height: 6px; |
| border-radius: 999px; |
| background: var(--surface-2); |
| overflow: hidden; |
| } |
| .tool-progress-fill{ |
| height: 100%; |
| width: 0%; |
| background: var(--text); |
| border-radius: 999px; |
| transition: width 0.12s linear; |
| } |
|
|
| .tool-body-wrap{ padding: 10px 14px 12px; } |
| .tool-body{ |
| margin: 0; |
| font-family: var(--mono); |
| font-size: 12px; |
| line-height: 1.6; |
| color: var(--muted); |
| white-space: pre-wrap; |
| overflow-wrap: anywhere; |
| word-break: break-word; |
| } |
|
|
| .tool-preview{ |
| margin-top: 10px; |
| display: flex; |
| flex-direction: column; |
| gap: 10px; |
| } |
| .tool-preview-block{ |
| display: flex; |
| flex-direction: column; |
| gap: 8px; |
| } |
| .tool-preview-title{ |
| font-size: 12px; |
| color: var(--muted); |
| user-select: none; |
| } |
|
|
| .tool-inline-video{ |
| width: 100%; |
| max-height: 360px; |
| border-radius: 12px; |
| border: 1px solid var(--border-weak); |
| background: rgba(0,0,0,0.06); |
| object-fit: contain; |
| } |
|
|
| .tool-preview-actions{ |
| display: flex; |
| align-items: center; |
| gap: 10px; |
| } |
| .tool-preview-btn{ |
| height: 30px; |
| padding: 0 10px; |
| border-radius: 999px; |
| border: 1px solid var(--border-weak); |
| background: transparent; |
| color: var(--text); |
| font-size: 12px; |
| cursor: pointer; |
| } |
| .tool-preview-btn:hover{ |
| background: var(--surface-2); |
| border-color: var(--border); |
| } |
| .tool-preview-link{ |
| font-size: 12px; |
| color: var(--muted); |
| text-decoration: underline; |
| text-underline-offset: 2px; |
| } |
| .tool-preview-link:hover{ opacity: 0.88; } |
|
|
| |
| .tool-media-grid{ |
| display: grid; |
| grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); |
| gap: 10px; |
| } |
| .tool-media-item{ |
| border: none; |
| background: transparent; |
| padding: 0; |
| text-align: left; |
| cursor: pointer; |
| } |
| .tool-media-thumb{ |
| width: 100%; |
| aspect-ratio: 16 / 9; |
| border-radius: 12px; |
| overflow: hidden; |
| background: var(--surface-2); |
| border: 1px solid var(--border-weak); |
| position: relative; |
| display: grid; |
| place-items: center; |
| } |
| .tool-media-thumb.is-portrait{ aspect-ratio: 9 / 16; } |
| .tool-media-thumb.is-square{ aspect-ratio: 1 / 1; } |
|
|
| .tool-media-thumb img, |
| .tool-media-thumb video{ |
| width: 100%; |
| height: 100%; |
| object-fit: contain; |
| display: block; |
| } |
| .tool-media-play{ |
| position: absolute; |
| right: 10px; |
| bottom: 10px; |
| width: 0; |
| height: 0; |
| border-left: 16px solid rgba(255,255,255,0.92); |
| border-top: 10px solid transparent; |
| border-bottom: 10px solid transparent; |
| filter: drop-shadow(0 1px 2px rgba(0,0,0,0.35)); |
| pointer-events: none; |
| } |
| .tool-media-label{ |
| margin-top: 6px; |
| font-size: 12px; |
| color: var(--muted); |
| white-space: nowrap; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| } |
| .tool-media-more{ |
| font-size: 12px; |
| color: var(--muted); |
| } |
|
|
| |
| .tool-audio-list{ |
| display: flex; |
| flex-direction: column; |
| gap: 10px; |
| } |
| .tool-audio-item{ |
| border: 1px solid var(--border-weak); |
| background: var(--surface-2); |
| border-radius: 12px; |
| padding: 10px 10px 8px; |
| } |
| .tool-audio-item audio{ width: 100%; } |
|
|
| |
| .tool-progress-row{ |
| display: flex; |
| align-items: center; |
| gap: 10px; |
| margin-top: 8px; |
| } |
| .tool-progress-pct{ |
| font-family: var(--mono); |
| font-size: 12px; |
| line-height: 1; |
| color: var(--muted); |
| min-width: 38px; |
| text-align: right; |
| user-select: none; |
| flex: 0 0 auto; |
| } |
| .tool-progress-row .tool-progress{ |
| flex: 1 1 auto; |
| min-width: 0; |
| } |
|
|
| @keyframes os_tool_spin{ |
| from{ transform: rotate(0deg); } |
| to{ transform: rotate(360deg); } |
| } |
|
|
| |
| .modal{ position: fixed; inset: 0; z-index: 80; } |
| .modal-backdrop{ |
| position: absolute; |
| inset: 0; |
| background: rgba(0,0,0,0.55); |
| z-index: 0; |
| } |
| .modal-body{ |
| position: absolute; |
| left: 50%; |
| top: 50%; |
| transform: translate(-50%, -50%); |
| width: fit-content; |
| max-width: 92vw; |
| max-height: 86vh; |
| background: var(--surface); |
| border: 1px solid var(--border-weak); |
| border-radius: 18px; |
| overflow: hidden; |
| box-shadow: var(--shadow); |
| z-index: 1; |
| } |
| .modal-content{ position: relative; z-index: 1; padding: 0; } |
|
|
| .modal-close{ |
| position: absolute; |
| right: 12px; |
| top: 12px; |
| width: 36px; |
| height: 36px; |
| border-radius: 999px; |
| border: 1px solid var(--border-weak); |
| background: var(--surface-2); |
| color: var(--text); |
| cursor: pointer; |
|
|
| |
| display: grid; |
| place-items: center; |
| padding: 0; |
| line-height: 1; |
|
|
| font-size: 20px; |
| z-index: 10; |
| pointer-events: auto; |
| } |
|
|
| .modal-close:hover{ opacity: 0.88; } |
|
|
| |
| .modal-close{ |
| display: grid; |
| place-items: center; |
| padding: 0; |
| line-height: 0; |
| font-size: 0; |
| -webkit-appearance: none; |
| appearance: none; |
| } |
|
|
| .modal-close{ --x-size: 16px; --x-thick: 2px; --x-nudge-y: 8px; } |
|
|
| .modal-close::before, |
| .modal-close::after{ |
| content: ""; |
| width: var(--x-size); |
| height: var(--x-thick); |
| background: currentColor; |
| border-radius: 999px; |
| grid-area: 1 / 1; |
| pointer-events: none; |
| display: block; |
| place-self: center; |
| } |
|
|
| .modal-close::before{ transform: translateY(var(--x-nudge-y, 0px)) rotate(45deg); } |
| .modal-close::after{ transform: translateY(var(--x-nudge-y, 0px)) rotate(-45deg); } |
|
|
| .modal-content img, |
| .modal-content video{ |
| max-width: 100%; |
| max-height: 86vh; |
| width: auto; |
| height: auto; |
| display: block; |
| margin: 0 auto; |
| } |
| .modal-content audio{ |
| width: min(720px, 92vw); |
| display: block; |
| padding: 16px; |
| } |
| .modal-content .file-fallback{ |
| padding: 16px; |
| color: var(--muted); |
| font-size: 13px; |
| } |
|
|
| |
| |
| |
| @media (max-width: 640px){ |
| .chat{ width: calc(100% - 1.25rem); padding: 24px 0 240px; } |
| #chat:empty{ padding: 0; } |
|
|
| .composer{ |
| width: calc(100vw - var(--content-offset) - var(--right-offset) - 1.25rem); |
| bottom: calc(14px + env(safe-area-inset-bottom)); |
| padding: 10px 10px; |
| border-radius: 24px; |
| } |
| #chat:empty ~ .composer{ |
| top: auto; |
| bottom: calc(18px + env(safe-area-inset-bottom)); |
| transform: translateX(-50%); |
| } |
|
|
| .msg.user > div{ max-width: 92% !important; } |
| .msg.user .bubble{ max-width: 100%; } |
| } |
|
|
| |
| |
| |
| .devbar{ |
| position: fixed; |
| right: 0; |
| top: 0; |
| height: 100vh; |
| width: var(--devbar-current); |
| z-index: 56; |
|
|
| overflow: hidden; |
|
|
| background: var(--surface); |
| border-left: 1px solid var(--border-weak); |
| box-shadow: var(--shadow-soft); |
| backdrop-filter: blur(10px); |
|
|
| transition: width 0.18s ease; |
| } |
| .devbar-inner{ |
| height: 100%; |
| padding: 12px; |
| display: flex; |
| flex-direction: column; |
| gap: 10px; |
| } |
|
|
| .devbar-icon-btn{ |
| width: 44px; |
| height: 44px; |
| border-radius: 999px; |
| border: 1px solid var(--border-weak); |
| background: transparent; |
| color: var(--text); |
| display: grid; |
| place-items: center; |
| cursor: pointer; |
| } |
| .devbar-icon-btn:hover{ |
| background: var(--surface-2); |
| border-color: var(--border); |
| } |
|
|
| .devbar-title{ |
| font-size: 13px; |
| color: var(--muted); |
| padding: 0 2px 4px; |
| white-space: nowrap; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| } |
| .devbar-log{ |
| flex: 1 1 auto; |
| overflow: auto; |
| border-top: 1px solid var(--border-weak); |
| padding-top: 10px; |
| } |
|
|
| .devlog-item{ |
| border: 1px solid var(--border-weak); |
| border-radius: 14px; |
| background: var(--surface); |
| padding: 10px 12px; |
| margin-bottom: 10px; |
| } |
| .devlog-head{ |
| font-family: var(--mono); |
| font-size: 12px; |
| color: var(--muted); |
| margin-bottom: 8px; |
| white-space: nowrap; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| } |
| .devlog-pre{ |
| margin: 0; |
| font-family: var(--mono); |
| font-size: 12px; |
| line-height: 1.55; |
| color: var(--muted); |
| white-space: pre-wrap; |
| word-break: break-word; |
| } |
|
|
| body.dev-mode.devbar-collapsed .devbar-inner{ padding: 12px 6px; } |
| body.dev-mode.devbar-collapsed .devbar-title, |
| body.dev-mode.devbar-collapsed .devbar-log{ display: none; } |
|
|
| |
| .scroll-bottom{ |
| position: fixed; |
| right: calc(48px + var(--right-offset) + env(safe-area-inset-right)); |
| bottom: calc(24px + env(safe-area-inset-bottom) + 120px); |
| z-index: 62; |
|
|
| width: 44px; |
| height: 44px; |
| border-radius: 999px; |
|
|
| border: 1px solid var(--border-weak); |
| background: var(--surface); |
| box-shadow: var(--shadow-soft); |
| backdrop-filter: blur(10px); |
|
|
| display: grid; |
| place-items: center; |
| cursor: pointer; |
| } |
| .scroll-bottom:hover{ |
| background: var(--surface-2); |
| border-color: var(--border); |
| } |
| .scroll-bottom:active{ transform: translateY(1px); } |
|
|
| |
|
|
| |
| :root{ |
| --vvh: 100vh; |
| --kb: 0px; |
| --composer-h: 140px; |
| --composer-gap: 24px; |
|
|
| |
| --sat: 0px; |
| --sar: 0px; |
| --sab: 0px; |
| --sal: 0px; |
|
|
| |
| --surface-solid: #ffffff; |
| } |
| @media (prefers-color-scheme: dark){ |
| :root{ --surface-solid: #141416; } |
| } |
|
|
| @supports (padding-top: env(safe-area-inset-top)){ |
| :root{ |
| --sat: env(safe-area-inset-top); |
| --sar: env(safe-area-inset-right); |
| --sab: env(safe-area-inset-bottom); |
| --sal: env(safe-area-inset-left); |
| } |
| } |
| |
| @supports (padding-top: constant(safe-area-inset-top)){ |
| :root{ |
| --sat: constant(safe-area-inset-top); |
| --sar: constant(safe-area-inset-right); |
| --sab: constant(safe-area-inset-bottom); |
| --sal: constant(safe-area-inset-left); |
| } |
| } |
|
|
| |
| html{ |
| -webkit-text-size-adjust: 100%; |
| text-size-adjust: 100%; |
| } |
| button, input, textarea, select, a{ |
| -webkit-tap-highlight-color: transparent; |
| } |
| button, input, textarea, select{ |
| font: inherit; |
| } |
|
|
| |
| body{ |
| --center-shift: calc(((var(--content-offset) - var(--right-offset)) * 0.5) + ((var(--sal) - var(--sar)) * 0.5)); |
| } |
|
|
| |
| .main{ min-height: 100vh; min-height: 100dvh; } |
| .sidebar, .devbar{ height: 100vh; height: 100dvh; } |
|
|
| |
| .sidebar, .topbar, .composer, .toast, .devbar, .scroll-bottom, .modal-body{ |
| backdrop-filter: blur(10px); |
| -webkit-backdrop-filter: blur(10px); |
| } |
|
|
| |
| @supports not ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))){ |
| .sidebar, .topbar, .composer, .toast, .devbar, .scroll-bottom, .modal-body{ |
| background: var(--surface-solid); |
| } |
| } |
|
|
| |
| .topbar{ |
| height: calc(var(--topbar-h) + var(--sat)); |
| padding: var(--sat) 16px 0; |
| } |
| @media (max-width: 640px){ |
| .topbar{ |
| height: calc(52px + var(--sat)); |
| padding: var(--sat) 12px 0; |
| } |
| :root{ --composer-gap: 14px; } |
| } |
|
|
| |
| .sidebar-inner{ padding-top: calc(12px + var(--sat)); } |
| body.sidebar-collapsed .sidebar-inner{ padding-top: calc(12px + var(--sat)); } |
|
|
| .devbar-inner{ padding-top: calc(12px + var(--sat)); } |
| body.dev-mode.devbar-collapsed .devbar-inner{ padding-top: calc(12px + var(--sat)); } |
|
|
| |
| .chat{ |
| padding-bottom: calc(var(--composer-h) + var(--composer-gap) + var(--sab) + var(--kb) + 24px); |
| } |
| @media (max-width: 640px){ |
| .chat{ |
| padding-bottom: calc(var(--composer-h) + var(--composer-gap) + var(--sab) + var(--kb) + 18px); |
| } |
| } |
|
|
| |
| .hero{ |
| width: min(var(--maxw), calc(100vw - var(--content-offset) - var(--right-offset) - 2rem - var(--sal) - var(--sar))); |
| } |
|
|
| |
| .composer{ |
| bottom: calc(var(--composer-gap) + var(--sab) + var(--kb)); |
| width: min(var(--maxw), calc(100vw - var(--content-offset) - var(--right-offset) - 2rem - var(--sal) - var(--sar))); |
| } |
| @media (max-width: 640px){ |
| .composer{ |
| width: calc(100vw - var(--content-offset) - var(--right-offset) - 1.25rem - var(--sal) - var(--sar)); |
| bottom: calc(var(--composer-gap) + var(--sab) + var(--kb)); |
| } |
| #chat:empty ~ .composer{ |
| bottom: calc(18px + var(--sab) + var(--kb)); |
| } |
| } |
|
|
| |
| .toast{ |
| bottom: calc(var(--composer-gap) + var(--sab) + var(--kb) + var(--composer-h) + 12px); |
| } |
| .scroll-bottom{ |
| right: calc(48px + var(--right-offset) + var(--sar)); |
| bottom: calc(var(--composer-gap) + var(--sab) + var(--kb) + var(--composer-h) + 16px); |
| } |
|
|
| |
| @media (max-width: 640px){ |
| .prompt{ font-size: 16px; line-height: 22px; } |
| .sidebar-model-select{ font-size: 16px; } |
| } |
|
|
| |
| @media (hover: none) and (pointer: coarse){ |
| .sidebar-icon-btn:hover, |
| .sidebar-action:hover, |
| .icon-btn:hover, |
| .ghost-icon-btn:hover, |
| .tool-preview-btn:hover, |
| .devbar-icon-btn:hover{ |
| background: transparent; |
| border-color: var(--border-weak); |
| opacity: 0.68; |
| } |
|
|
| .sidebar-model-select:hover{ |
| background: var(--surface-2); |
| border-color: var(--border-weak); |
| } |
|
|
| .scroll-bottom:hover{ |
| background: var(--surface); |
| border-color: var(--border-weak); |
| } |
|
|
| .send-btn:hover{ transform: none; } |
| .tool-preview-link:hover, |
| .modal-close:hover{ opacity: 1; } |
| .media-item:hover{ border-color: var(--border-weak); } |
| } |
|
|
| |
| |
| |
| .lang-switch{ |
| display: flex; |
| align-items: center; |
| gap: 8px; |
| padding: 6px 10px; |
| |
| border: 0; |
| border-radius: 999px; |
| background: var(--surface-2); |
| } |
|
|
| .lang-chip{ |
| font-size: 12px; |
| font-weight: 650; |
| color: var(--muted); |
| user-select: none; |
| } |
|
|
| body.lang-zh .lang-chip.lang-zh, |
| body.lang-en .lang-chip.lang-en{ |
| color: var(--text); |
| } |
|
|
| .lang-toggle{ |
| position: relative; |
| width: 44px; |
| height: 24px; |
| display: inline-block; |
| cursor: pointer; |
| } |
|
|
| .lang-toggle input{ |
| opacity: 0; |
| width: 0; |
| height: 0; |
| } |
|
|
| .lang-slider{ |
| position: absolute; |
| inset: 0; |
| border-radius: 999px; |
| background: var(--surface); |
| border: 1px solid var(--border-weak); |
| transition: border-color .18s ease, background .18s ease; |
| } |
|
|
| .lang-slider::before{ |
| content: ""; |
| position: absolute; |
| width: 18px; |
| height: 18px; |
| left: 3px; |
| top: 50%; |
| transform: translateY(-50%); |
| border-radius: 999px; |
| background: var(--text); |
| transition: transform .18s ease; |
| } |
|
|
| |
| .lang-toggle input:checked + .lang-slider::before{ |
| transform: translate(20px, -50%); |
| } |
|
|
| .lang-toggle input:focus-visible + .lang-slider{ |
| box-shadow: var(--ring); |
| } |
|
|
| |
| |
| |
|
|
| body.dev-mode.devbar-collapsed{ |
| --devbar-current: 0px; |
| --right-offset: 0px; |
| } |
|
|
| body.dev-mode.devbar-collapsed .devbar{ |
| width: 0; |
| background: transparent; |
| border-left: 0; |
| box-shadow: none; |
| backdrop-filter: none; |
| -webkit-backdrop-filter: none; |
| overflow: visible; |
| } |
|
|
| body.dev-mode.devbar-collapsed .devbar-inner{ padding: 0; } |
| body.dev-mode.devbar-collapsed .devbar-title, |
| body.dev-mode.devbar-collapsed .devbar-log, |
| body.dev-mode.devbar-collapsed .devbar-sid{ display: none !important; } |
|
|
| body.dev-mode.devbar-collapsed #devbarToggle{ |
| position: fixed; |
| top: 50%; |
| right: calc(10px + var(--sar)); |
| transform: translateY(-50%); |
|
|
| width: 36px; |
| height: 36px; |
| border-radius: 999px; |
|
|
| background: var(--surface); |
| border: 1px solid var(--border-weak); |
| box-shadow: var(--shadow-soft); |
|
|
| z-index: 70; |
| } |
|
|
| body.dev-mode.devbar-collapsed #devbarToggle svg{ |
| width: 18px; |
| height: 18px; |
| } |
|
|
| body.dev-mode:not(.devbar-collapsed) #devbarToggle svg{ |
| transform: rotate(180deg); |
| } |
|
|
| .topbar > .brand{ align-items: center; gap: 10px; } |
| .brand-img{ height: 48px; width: auto; display: block; } |
| @media (max-width: 640px){ .brand-img{ height: 22px; } } |
|
|
| #uploadBtn svg{ |
| stroke-width: 2; |
| } |
|
|
| .sidebar-fields{ |
| display: flex; |
| flex-direction: column; |
| gap: 8px; |
| } |
|
|
| |
| |
| |
| .ghost-icon-btn{ |
| width: 44px; |
| height: 44px; |
| border-radius: 999px; |
| border: 1px solid var(--border-weak); |
| background: transparent; |
| color: var(--text); |
|
|
| display: grid; |
| place-items: center; |
| cursor: pointer; |
| flex: 0 0 auto; |
|
|
| opacity: 0.68; |
|
|
| transition: |
| opacity .12s ease, |
| background .12s ease, |
| border-color .12s ease, |
| transform .08s ease; |
|
|
| text-decoration: none; |
| user-select: none; |
| } |
|
|
| .ghost-icon-btn:hover{ |
| opacity: 1; |
| background: var(--surface-2); |
| border-color: var(--border); |
| } |
|
|
| .ghost-icon-btn:active, |
| .ghost-icon-btn.is-active{ |
| opacity: 1; |
| background: var(--surface-2); |
| border-color: var(--border); |
| transform: translateY(1px); |
| } |
|
|
| .ghost-icon-btn:focus-visible{ |
| box-shadow: var(--ring); |
| } |
|
|
| .ghost-icon-btn img.os-icon{ |
| width: 20px; |
| height: 20px; |
| display: block; |
| object-fit: contain; |
| pointer-events: none; |
| } |
|
|
| .ghost-icon-btn.sm{ |
| width: 44px; |
| height: 44px; |
| } |
| .ghost-icon-btn.sm img.os-icon{ |
| width: 36px; |
| height: 36px; |
| } |
|
|
| .topbar-links{ |
| display: flex; |
| align-items: center; |
| gap: 6px; |
| } |
|
|
| @media (max-width: 640px){ |
| .topbar-links{ gap: 4px; } |
| .ghost-icon-btn.sm{ width: 34px; height: 34px; } |
| .ghost-icon-btn.sm img.os-icon{ width: 18px; height: 18px; } |
| } |
|
|
| .topbar-links .ghost-icon-btn{ |
| border: 0; |
| background: transparent; |
| border-radius: 0; |
| opacity: 0.68; |
| } |
|
|
| .topbar-links .ghost-icon-btn:hover, |
| .topbar-links .ghost-icon-btn:active, |
| .topbar-links .ghost-icon-btn.is-active{ |
| background: transparent; |
| opacity: 1; |
| } |
|
|
| #quickPromptBtn{ |
| width: 48px; |
| height: 48px; |
| } |
|
|
| #quickPromptBtn img.os-icon{ |
| width: 26px; |
| height: 26px; |
| } |
|
|
| |
| .topbar-links{ |
| margin-right: 30px; |
| } |
|
|
| .topbar-pill{ |
| display: inline-flex; |
| align-items: center; |
| gap: 8px; |
|
|
| height: 36px; |
| padding: 0 12px 0 10px; |
| border-radius: 999px; |
|
|
| border: 0; |
| background: transparent; |
| opacity: 0.72; |
|
|
| color: var(--text); |
| text-decoration: none; |
| cursor: pointer; |
| user-select: none; |
|
|
| transition: opacity .12s ease, background .12s ease, transform .08s ease; |
| } |
|
|
| .topbar-pill:hover{ |
| opacity: 1; |
| background: var(--surface-2); |
| } |
| .topbar-pill:active{ |
| opacity: 1; |
| background: var(--surface-2); |
| transform: translateY(1px); |
| } |
|
|
|
|
| .topbar-pill .os-icon{ |
| width: 30px; |
| height: 30px; |
| display: block; |
| object-fit: contain; |
| pointer-events: none; |
| } |
|
|
| .topbar-pill-text{ |
| font-size: 13px; |
| font-weight: 650; |
| letter-spacing: -0.01em; |
| white-space: nowrap; |
| color: var(--muted); |
| } |
| .topbar-pill:hover .topbar-pill-text, |
| .topbar-pill:active .topbar-pill-text{ |
| color: var(--text); |
| } |
|
|
| @media (max-width: 640px){ |
| .topbar-pill-text{ display: none; } |
| .topbar-pill{ |
| padding: 0 10px; |
| gap: 0; |
| } |
| } |
|
|
| #quickPromptBtn{ |
| margin-right: 6px; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| .sidebar-help-tooltip-link{ |
| display: inline-block; |
| margin-top: 6px; |
| font-size: 12px; |
| color: var(--text); |
| text-decoration: underline; |
| text-underline-offset: 2px; |
| cursor: pointer; |
| opacity: 0.92; |
| } |
|
|
| .sidebar-help-tooltip-link:hover{ |
| opacity: 1; |
| } |