blob: 570673a269b21ebf2df35bbdb4d9d7c3bea1e603 [file]
/* Astryx convergence: the pre-#1972 remote-access dialect is retired — page
containers → SettingsPage, section headers → SettingsSection, the runtime
tinted card + <dl> status grid → SettingsSection + MetadataList, the
quick-setup plate → Astryx Card, list grids → the kit's rows body. What
stays below is genuine art (brand plate, QR frames, onboarding glyphs) and
the row-level behaviors (attention wash, planned opacity). */
.settingsBotLogo {
width: 32px;
height: 32px;
display: grid;
place-items: center;
flex: 0 0 auto;
}
.settingsBotLogo svg {
width: 100%;
height: 100%;
display: block;
}
.settingsBotLogo[data-large="true"] {
width: 44px;
height: 44px;
}
.settingsRemoteAccessChannelRow,
.settingsRemoteAccessCatalogRow {
min-height: 64px;
min-width: 0;
gap: var(--space-3);
/* Deep-review fix: flush inline — kit rows edge-align with the section
heading; the 10px inset was a leftover from the old card grid. */
padding: var(--space-2) 0;
}
.settingsRemoteAccessItemTitle {
display: inline-flex;
align-items: baseline;
gap: var(--space-2);
min-width: 0;
flex-wrap: wrap;
overflow-wrap: anywhere;
}
.settingsRemoteAccessItemDescription {
overflow-wrap: anywhere;
}
.settingsRemoteAccessChannelRow[data-attention="true"] {
background: var(--warning-wash);
}
.settingsRemoteAccessItemActions {
display: flex;
color: var(--muted-foreground);
}
.settingsRemoteAccessCatalogRow[data-support="planned"] {
opacity: var(--opacity-muted);
}
.settingsRemoteAccessBack {
/* Deep-review fix: the page gap owns vertical rhythm now; only the optical
inline outdent stays so the ghost button's label aligns with content. */
justify-self: start;
margin-inline-start: calc(var(--space-2) * -1);
}
.settingsBotDetailHeader {
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
align-items: start;
gap: var(--space-3);
padding: 0 var(--space-1);
}
.settingsBotDetailHeaderBody {
grid-column: 2;
grid-row: 1;
min-width: 0;
}
.settingsBotDetailHeader > .settingsBotLogo {
grid-column: 1;
grid-row: 1;
}
.settingsBotDetailHeader > .settingsBotDetailSwitch {
grid-column: 3;
grid-row: 1;
justify-self: end;
}
.settingsBotDetailHeader h3 {
font: var(--maka-text-heading-3);
display: flex;
align-items: center;
flex-wrap: wrap;
gap: var(--space-2);
margin: 0 0 var(--space-1);
color: var(--foreground);
}
.settingsBotDetailHeader p {
font: var(--maka-text-body);
margin: 0;
color: var(--foreground-secondary);
}
.settingsBotEnableHint {
font: var(--maka-text-supporting);
display: block;
margin-top: var(--space-1);
color: var(--warning-text, var(--foreground-secondary));
}
.settingsBotConfigDocLink {
font: var(--maka-text-label);
grid-column: 2;
grid-row: 2;
justify-self: start;
color: var(--link);
text-decoration: none;
white-space: nowrap;
}
.settingsBotConfigDocLink:hover {
text-decoration: underline;
}
.settingsBotConfigDocLink:focus-visible {
text-decoration: underline;
}
/* At the restored/sanitized 480px window floor, the fixed Settings navigation
leaves a narrow content column. Keep provider summaries readable instead of
squeezing the logo, title, status chip, and switch into one row. */
@media (max-width: 620px) {
.settingsBotDetailHeader {
grid-template-columns: auto minmax(0, 1fr) auto;
}
.settingsBotDetailHeaderBody {
grid-column: 1 / -1;
grid-row: 2;
}
.settingsBotConfigDocLink {
grid-column: 1 / -1;
grid-row: 3;
}
.settingsRemoteAccessChannelRow,
.settingsRemoteAccessCatalogRow {
gap: var(--space-2);
}
/* The whole row remains the named button. In the narrow layout, dropping
the redundant chevron leaves enough room for the provider name, status
chip, and a useful diagnostic summary. */
.settingsRemoteAccessItemActions {
display: none;
}
}
.settingsBotActionStack {
display: flex;
align-items: center;
justify-content: flex-end;
flex-wrap: wrap;
gap: var(--space-2);
}
.settingsBotSetupModes,
.settingsBotBrandChoice {
justify-self: start;
}
.settingsBotOnboardingBody {
display: grid;
justify-items: center;
gap: var(--space-2-5);
padding: var(--space-3) var(--space-6) var(--space-5);
}
.settingsBotOnboardingQrFrame {
display: grid;
/* Shared with the WeChat QR login frame (settings/wechat.css): both read
--qr-frame-size so the paired dialogs present one QR spec. */
width: var(--qr-frame-size);
height: var(--qr-frame-size);
place-items: center;
overflow: hidden;
border: var(--border-width-hairline) solid var(--border);
border-radius: var(--radius-surface);
/* Paper, not a ladder tier: a QR code has to stay dark-on-light to be
scannable at all. See --surface-paper in maka-tokens.css. */
background: var(--surface-paper);
padding: var(--space-3);
}
.settingsBotOnboardingQrFrame img {
width: 100%;
height: 100%;
display: block;
object-fit: contain;
}
.settingsBotOnboardingQrFrame[data-state="starting"],
.settingsBotOnboardingQrFrame[data-state="connecting"] {
color: var(--foreground-secondary);
background: var(--foreground-3);
}
.settingsBotOnboardingSuccess,
.settingsBotOnboardingEmpty {
display: grid;
width: 48px;
height: 48px;
place-items: center;
/* Pill, not --radius-plate: a status circle is a circle. */
border-radius: var(--radius-pill);
}
.settingsBotOnboardingSuccess {
color: var(--success-text);
background: var(--success-wash);
}
.settingsBotOnboardingEmpty {
color: var(--destructive);
background: var(--destructive-wash);
}
.settingsBotOnboardingStatus,
.settingsBotOnboardingPrivacy {
margin: 0;
text-align: center;
}
.settingsBotOnboardingStatus {
font: var(--maka-text-label);
color: var(--foreground);
}
.settingsBotOnboardingStatus[data-state="error"],
.settingsBotOnboardingStatus[data-state="denied"] {
color: var(--destructive);
}
.settingsBotOnboardingPrivacy {
font: var(--maka-text-supporting);
color: var(--muted-foreground);
}
.settingsBotOnboardingActions {
display: flex;
justify-content: stretch;
gap: var(--space-2);
padding: var(--space-3) var(--space-5) var(--space-5);
border-top: var(--border-width-hairline) solid var(--border);
}
.settingsBotOnboardingActions > button {
flex: 1;
}
@media (max-width: 620px) {
.settingsBotOnboardingBody {
padding-inline: var(--space-4);
}
.settingsBotOnboardingQrFrame {
width: min(260px, calc(100vw - 96px));
height: min(260px, calc(100vw - 96px));
}
}
.settingsBotAdvanced {
display: flex;
flex-direction: column;
gap: var(--space-2-5);
}
.settingsBotAdvancedBody {
display: flex;
flex-direction: column;
gap: var(--space-3);
padding-left: var(--space-3);
border-left: var(--border-width-thick) solid var(--border);
}
.settingsBotBannerDescription {
overflow-wrap: anywhere;
}