Files
story/web/src/styles.css
T

3559 lines
196 KiB
CSS
Raw Normal View History

2026-08-26 06:41:07 +08:00
:root {
font-family: Inter, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
color: #173042;
background: #f2f6f4;
font-synthesis: none;
text-rendering: optimizeLegibility;
}
* { box-sizing: border-box; }
body {
margin: 0;
min-width: 320px;
min-height: 100vh;
background:
radial-gradient(circle at 85% 3%, rgba(242, 187, 90, 0.22), transparent 28rem),
linear-gradient(180deg, #e7f0ed 0, #f5f7f4 28rem, #f2f6f4 100%);
}
button {
border: 0;
border-radius: 999px;
padding: 0.8rem 1.25rem;
font: inherit;
font-weight: 700;
color: #fff;
background: #cb6d35;
cursor: pointer;
transition: transform 150ms ease, opacity 150ms ease;
}
button:hover { transform: translateY(-1px); }
button:disabled { cursor: wait; opacity: 0.65; }
.button-secondary { color: #244356; background: #e5ece9; }
main {
width: min(1120px, calc(100% - 2rem));
margin: 0 auto;
padding: 5rem 0;
}
/* 回忆时间轴与大模型管理:沿用家庭首页的暖白、陶土红和雾蓝设计语言。 */
.customer-page--conversations .workspace__header,
.customer-page--models .workspace__header { margin-bottom: 18px; }
.memory-timeline-page { display: block !important; min-height: 0 !important; border: 0 !important; overflow: visible !important; background: transparent !important; }
.memory-timeline-grid { display: grid; grid-template-columns: minmax(280px, .78fr) minmax(420px, 1.28fr) minmax(220px, .62fr); gap: 16px; align-items: start; }
.memory-timeline-grid > * { min-width: 0; border: 1px solid #eadeda; border-radius: 18px; background: #fffdfb; box-shadow: 0 10px 30px rgba(91, 64, 55, .055); }
.memory-timeline-grid .conversation-list { overflow: hidden; }
.memory-timeline-grid .conversation-filter { border-bottom: 1px solid #eee4e1; background: #faf6f2; }
.memory-timeline-grid .conversation-filter__fields { grid-template-columns: 1fr 1fr; }
.memory-timeline-grid .conversation-filter__fields label:nth-child(n+3) { display: none; }
.memory-timeline-list { position: relative; padding: 8px 0 12px; }
.memory-timeline-list::before { position: absolute; top: 15px; bottom: 22px; left: 25px; width: 2px; content: ""; background: #dfcbc4; }
.memory-timeline-list .conversation-row { position: relative; grid-template-columns: 16px 36px 1fr; margin: 0 8px; width: calc(100% - 16px); border: 0; border-radius: 13px; background: transparent; }
.memory-timeline-list .conversation-row.active { background: #f7ebe6; box-shadow: inset 3px 0 #a73920; }
.memory-timeline-list .conversation-row > .tag { grid-column: 3; justify-self: start; }
.memory-timeline-dot { z-index: 1; width: 11px; height: 11px; border: 3px solid #fffdfb; border-radius: 50%; background: #b86a55; box-shadow: 0 0 0 1px #d7b8ae; }
.memory-summary-panel { padding: 24px; }
.memory-summary-panel > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.memory-summary-panel h3 { margin: 3px 0 0; color: #493834; font-family: "Noto Serif SC", "Songti SC", serif; font-size: 24px; }
.memory-summary-panel__mood { padding: 7px 10px; border-radius: 999px; color: #50725f; background: #edf5ef; white-space: nowrap; }
.memory-summary-panel__meta { display: flex; flex-wrap: wrap; gap: 8px 16px; margin: 14px 0 20px; color: #8a7872; font-size: 12px; }
.memory-summary-block { margin-top: 14px; padding: 17px 18px; border: 1px solid #ede3df; border-radius: 14px; background: #fff; }
.memory-summary-block--warm { border-color: #ecd5cd; background: #fff6f1; }
.memory-summary-block h4 { margin: 0 0 9px; color: #6b4f47; font-size: 14px; }
.memory-summary-block p { margin: 0; color: #574b47; line-height: 1.85; }
.memory-keywords { display: flex; flex-wrap: wrap; gap: 8px; }
.memory-keywords span { padding: 5px 10px; border-radius: 999px; color: #78564d; background: #f4e9e4; font-size: 12px; }
.memory-summary-panel > footer { display: flex; justify-content: flex-end; gap: 10px; margin-top: 20px; }
.memory-summary-empty { display: grid; place-items: center; min-height: 370px; color: #9a8179; text-align: center; }
.memory-summary-empty .anticon { font-size: 36px; }
.memory-summary-empty h3 { margin-bottom: 0; }
.memory-model-card { position: sticky; top: 84px; padding: 22px; text-align: center; }
.memory-model-card__icon { display: grid; place-items: center; width: 52px; height: 52px; margin: 0 auto 13px; border-radius: 16px; color: #fff; background: #6f8c98; font-size: 24px; }
.memory-model-card > p { margin: 5px 0; color: #907d77; font-size: 12px; }
.memory-model-card h3 { margin: 6px 0; color: #493834; }
.memory-model-card small { display: block; overflow-wrap: anywhere; color: #887873; line-height: 1.6; }
.memory-model-card > div { margin: 16px 0; padding: 8px; border-radius: 10px; color: #65736a; background: #f2f5f1; font-size: 12px; }
.memory-model-card > div span { display: inline-block; width: 8px; height: 8px; margin-right: 6px; border-radius: 50%; background: #b2aaa6; }
.memory-model-card > div span.is-active { background: #65a176; box-shadow: 0 0 0 3px #dceddf; }
.memory-model-card__history { padding-top: 14px; border-top: 1px solid #eee4e1; line-height: 1.7; }
.memory-model-card__history strong { overflow-wrap: anywhere; color: #6f5a54; font-weight: 600; }
.model-management-page { display: grid; gap: 18px; }
.model-active-hero { display: flex; align-items: center; justify-content: space-between; padding: 24px 26px; border: 1px solid #dfd2ce; border-radius: 18px; background: linear-gradient(120deg, #fffaf6, #edf4f4); }
.model-active-hero > div { display: flex; align-items: center; gap: 16px; }
.model-active-hero__icon { display: grid; place-items: center; width: 58px; height: 58px; border-radius: 18px; color: #fff; background: #6d8995; font-size: 26px; }
.model-active-hero p, .model-active-hero h3 { margin: 0; }
.model-active-hero h3 { margin: 3px 0; color: #493934; font-size: 24px; }
.model-active-hero span { color: #7f6e68; }
.model-card-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.model-config-card { padding: 21px; border: 1px solid #eadeda; border-radius: 18px; background: #fffdfb; box-shadow: 0 9px 25px rgba(94, 68, 60, .05); }
.model-config-card.is-active { border-color: #9db7aa; box-shadow: inset 0 3px #6f9b7d, 0 9px 25px rgba(94, 68, 60, .05); }
.model-config-card header { display: grid; grid-template-columns: 44px 1fr auto; gap: 12px; align-items: center; }
.model-config-card header > span { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 13px; color: #6c8792; background: #eaf1f2; font-size: 21px; }
.model-config-card h3, .model-config-card p { margin: 0; }
.model-config-card header p { color: #927e77; font-size: 12px; }
.model-config-card header b { padding: 5px 9px; border-radius: 999px; color: #597462; background: #eaf3ed; font-size: 11px; }
.model-config-card dl { margin: 18px 0; padding: 12px 0; border-block: 1px solid #eee5e1; }
.model-config-card dl div { display: grid; grid-template-columns: 82px 1fr; gap: 10px; padding: 5px 0; font-size: 12px; }
.model-config-card dt { color: #9a8781; }
.model-config-card dd { margin: 0; overflow-wrap: anywhere; color: #5c4d48; }
.model-config-card footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.model-config-card footer > div { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; }
.model-test-status { color: #8a7b76; font-size: 12px; }
.model-test-status--passed { color: #4f8260; }
.model-test-status--failed { color: #a33f2d; }
.model-empty { grid-column: 1 / -1; padding: 54px; border: 1px dashed #d9c8c2; border-radius: 18px; color: #8e7c76; background: #fffaf7; text-align: center; }
.model-empty > .anticon { font-size: 38px; }
.model-security-note { display: flex; gap: 14px; padding: 18px; border-radius: 14px; color: #5d6963; background: #edf3ef; }
.model-security-note > .anticon { margin-top: 3px; color: #5e8a6b; font-size: 20px; }
.model-security-note p { margin: 5px 0 0; line-height: 1.65; }
.model-parameter-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.model-create-dialog .workspace-dialog__body { display: grid; gap: 14px; }
/* 非首页业务页统一为轻量、长者优先的内容画布。 */
.customer-page:not(.customer-page--home) > .workspace { border-color: #e9deda; border-radius: 18px; background: rgba(255, 253, 251, .96); box-shadow: 0 14px 38px rgba(78, 59, 52, .055); }
.customer-page:not(.customer-page--home) .workspace__header { padding: 3px 2px 18px; }
.customer-page:not(.customer-page--home) .panel-section,
.customer-page:not(.customer-page--home) .customer-message-panel,
.customer-page:not(.customer-page--home) .customer-billing-panel { border-radius: 16px; box-shadow: 0 8px 24px rgba(87, 65, 57, .04); }
@media (max-width: 1180px) {
.memory-timeline-grid { grid-template-columns: minmax(270px, .8fr) minmax(390px, 1.2fr); }
.memory-model-card { position: static; grid-column: 1 / -1; text-align: left; }
.model-card-grid { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
.memory-timeline-grid { grid-template-columns: 1fr; }
.memory-summary-panel { padding: 18px; }
.memory-summary-panel > header, .model-active-hero, .model-config-card footer { align-items: stretch; flex-direction: column; }
.memory-model-card { grid-column: auto; }
.model-parameter-row { grid-template-columns: 1fr; }
}
2026-08-26 06:41:07 +08:00
.hero {
display: flex;
align-items: end;
justify-content: space-between;
gap: 3rem;
margin-bottom: 3rem;
}
.eyebrow {
margin: 0 0 0.75rem;
color: #a4532b;
font-size: 0.74rem;
font-weight: 800;
letter-spacing: 0.16em;
}
h1, h2, h3, h4 { margin: 0; color: #10283a; }
h1 { max-width: 13em; font-family: Georgia, "Songti SC", serif; font-size: clamp(2.4rem, 5vw, 4rem); line-height: 1.08; }
h2 { font-size: clamp(1.5rem, 3vw, 2.2rem); }
.hero__description {
max-width: 44rem;
margin: 1.3rem 0 0;
color: #506675;
font-size: 1.05rem;
line-height: 1.8;
}
.notice {
display: flex;
justify-content: space-between;
align-items: center;
gap: 1rem;
margin-bottom: 1.2rem;
padding: 1rem 1.25rem;
border: 1px solid #e4bba4;
border-radius: 1rem;
background: #fff6f0;
}
.notice p { margin: 0.3rem 0 0; color: #775644; }
.status-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1rem;
}
.status-card {
min-height: 13rem;
padding: 1.5rem;
border: 1px solid rgba(21, 53, 72, 0.09);
border-radius: 1.4rem;
background: rgba(255, 255, 255, 0.8);
box-shadow: 0 1rem 3rem rgba(24, 55, 66, 0.06);
}
.status-card__topline { display: flex; justify-content: space-between; color: #6e8089; }
.status-card__dot { width: 0.65rem; height: 0.65rem; border-radius: 50%; background: #82929a; }
.status-card--good .status-card__dot { background: #4b9b72; box-shadow: 0 0 0 0.35rem rgba(75, 155, 114, 0.12); }
.status-card--warning .status-card__dot { background: #d07942; box-shadow: 0 0 0 0.35rem rgba(208, 121, 66, 0.12); }
.status-card strong { display: block; margin-top: 2.3rem; color: #163348; font-size: 1.65rem; }
.status-card p { margin: 0.8rem 0 0; color: #647783; line-height: 1.6; }
.identity-panel {
display: grid;
grid-template-columns: 0.9fr 1.6fr;
gap: 3rem;
margin-top: 1rem;
padding: 2rem;
border: 1px solid rgba(21, 53, 72, 0.09);
border-radius: 1.4rem;
background: rgba(255, 255, 255, 0.88);
}
.identity-panel__intro > p:last-child { color: #647783; line-height: 1.7; }
.identity-panel__state, .identity-panel__login { align-self: center; color: #647783; }
.identity-panel__login strong { display: block; color: #183548; font-size: 1.25rem; }
.identity-panel__login p { margin: 0.65rem 0 1.2rem; line-height: 1.6; }
.identity-panel__login > div { display: flex; gap: 0.6rem; }
.identity-panel__account { display: grid; gap: 0.8rem; }
.identity-panel__account-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.identity-panel__account-head strong, .identity-panel__account-head span { display: block; }
.identity-panel__account-head span { margin-top: 0.25rem; color: #768791; font-size: 0.86rem; }
.account-card { padding: 1rem; border-radius: 1rem; background: #edf3f0; }
.account-card p { margin: 0 0 0.25rem; color: #687d87; font-size: 0.82rem; }
.account-card > strong { color: #183548; }
.membership { display: flex; justify-content: space-between; gap: 1rem; margin-top: 0.8rem; padding-top: 0.8rem; border-top: 1px solid #d7e2dd; color: #4e6672; font-size: 0.88rem; }
.workspace-shell {
margin-top: 1rem;
padding: 1rem;
border: 1px solid rgba(21, 53, 72, 0.09);
border-radius: 1.5rem;
background: rgba(228, 237, 233, 0.72);
}
.workspace-shell__heading {
display: flex;
align-items: end;
justify-content: space-between;
gap: 2rem;
padding: 0.8rem 1rem 1rem;
}
.workspace-shell__heading h2 { font-size: 1.45rem; }
.workspace-shell__heading > p { max-width: 31rem; margin: 0; color: #627781; font-size: 0.82rem; line-height: 1.65; text-align: right; }
.workspace-nav {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
gap: 0.55rem;
padding: 0.55rem;
border: 1px solid #d5e1dc;
border-radius: 1.15rem;
background: rgba(255, 255, 255, 0.72);
}
.workspace-nav__item {
display: grid;
min-width: 0;
gap: 0.25rem;
padding: 0.85rem 1rem;
border: 1px solid transparent;
border-radius: 0.85rem;
color: #45616d;
background: transparent;
text-align: left;
box-shadow: none;
}
.workspace-nav__item:hover { border-color: #d3dfda; background: #f4f8f6; }
.workspace-nav__item.active { border-color: #c8ddd3; color: #fff; background: #245a4c; box-shadow: 0 0.65rem 1.5rem rgba(36, 90, 76, 0.16); }
.workspace-nav__item strong { font-size: 0.9rem; }
.workspace-nav__item span { overflow: hidden; color: #768a92; font-size: 0.68rem; line-height: 1.45; text-overflow: ellipsis; white-space: nowrap; }
.workspace-nav__item.active span { color: #c9ded6; }
.workspace-shell__content > .workspace, .workspace-shell__content > .ops-workspace { margin-top: 0.75rem; }
.milestone-panel {
display: grid;
grid-template-columns: 0.9fr 1.6fr;
gap: 3rem;
margin-top: 1rem;
padding: 2rem;
border-radius: 1.4rem;
color: #fff;
background: #10283a;
}
.milestone-panel h2 { color: #fff; }
.milestone-panel ol { display: grid; grid-template-columns: repeat(7, 1fr); gap: 0.7rem; margin: 0; padding: 0; list-style: none; }
.milestone-panel li { color: #8fa2ad; font-size: 0.85rem; line-height: 1.5; }
.milestone-panel li span { display: block; margin-bottom: 1rem; color: #637985; font-size: 1.4rem; }
.milestone-panel li.done, .milestone-panel li.active { color: #fff; }
.milestone-panel li.done span { color: #75b690; }
.milestone-panel li.active span { color: #efaf6d; }
.workspace {
margin-top: 1rem;
padding: 2rem;
border: 1px solid rgba(21, 53, 72, 0.09);
border-radius: 1.4rem;
background: rgba(255, 255, 255, 0.9);
box-shadow: 0 1rem 3rem rgba(24, 55, 66, 0.06);
}
.workspace__header { display: flex; align-items: end; justify-content: space-between; gap: 2rem; }
.workspace__header > div:first-child > p:last-child { margin: 0.7rem 0 0; color: #647783; }
.workspace__actions { display: flex; align-items: end; gap: 0.7rem; }
.event-stream-status { display: inline-flex; align-items: center; align-self: center; gap: 0.35rem; padding: 0.35rem 0.6rem; border-radius: 999px; color: #5b7568; background: #e8f2ec; font-size: 0.68rem; font-weight: 800; white-space: nowrap; }
.event-stream-status::before { width: 0.42rem; height: 0.42rem; border-radius: 50%; background: #4c9a70; content: ""; }
.event-stream-status--connecting, .event-stream-status--reconnecting { color: #8a652d; background: #fff1da; }
.event-stream-status--connecting::before, .event-stream-status--reconnecting::before { background: #d38a36; }
.accept-invitation { display: flex; align-items: end; justify-content: flex-end; gap: 0.6rem; margin-top: 0.8rem; }
.accept-invitation label { width: min(25rem, 100%); }
.accept-invitation input, .invitation-secret input {
width: 100%; box-sizing: border-box; border: 1px solid #ccd9d4; border-radius: 0.8rem;
padding: 0.72rem 0.85rem; color: #183548; background: #fff; font: inherit;
}
.household-create { margin-top: 0.8rem; border: 1px solid #dbe6e1; border-radius: 1rem; background: #f8faf9; }
.household-create summary { padding: 0.85rem 1rem; color: #355764; font-size: 0.8rem; font-weight: 800; cursor: pointer; }
.household-create[open] summary { border-bottom: 1px solid #e2eae6; }
.household-create .tool-form { border: 0; border-radius: 0 0 1rem 1rem; }
.workspace label { display: grid; gap: 0.35rem; color: #6d7f88; font-size: 0.78rem; font-weight: 700; }
.workspace select {
min-width: 12rem;
border: 1px solid #ccd9d4;
border-radius: 0.8rem;
padding: 0.72rem 2rem 0.72rem 0.85rem;
color: #183548;
background: #fff;
font: inherit;
}
.workspace__summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.8rem; margin-top: 1.5rem; }
.conversation-readiness { display: grid; gap: 1rem; margin-top: 1rem; padding: 1.1rem; border: 1px solid #d9e5e0; border-radius: 1.1rem; background: linear-gradient(145deg,#f7faf8,#fff); }
.conversation-readiness--ready { border-color: #bcd9ca; background: linear-gradient(145deg,#eef8f2,#fff); }
.conversation-readiness--blocked { border-color: #ead5bd; background: linear-gradient(145deg,#fff8ef,#fff); }
.conversation-readiness--loading { color: #6d8189; font-size: .76rem; }
.conversation-readiness__head { display: flex; align-items: start; justify-content: space-between; gap: 1rem; }
.conversation-readiness__head h3 { margin: .2rem 0; color: #294c59; }
.conversation-readiness__head p { margin: 0; color: #6c8088; font-size: .75rem; }
.readiness-state { flex: none; padding: .36rem .7rem; border-radius: 999px; font-size: .7rem; font-weight: 800; }
.readiness-state--ready { color: #26694b; background: #dfeee5; }
.readiness-state--blocked { color: #945426; background: #fae9d6; }
.conversation-readiness__checks { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .55rem; }
.readiness-check { display: grid; grid-template-columns: auto minmax(0,1fr) auto; align-items: center; gap: .65rem; min-width: 0; padding: .7rem .8rem; border: 1px solid #e2e9e6; border-radius: .78rem; background: rgba(255,255,255,.82); }
.readiness-check__icon { display: grid; place-items: center; width: 1.55rem; height: 1.55rem; border-radius: 50%; color: #fff; background: #3a7d63; font-size: .72rem; font-weight: 900; }
.readiness-check--blocked .readiness-check__icon { background: #b66d38; }
.readiness-check--attention .readiness-check__icon { background: #8a7a39; }
.readiness-check strong { display: block; color: #385864; font-size: .75rem; }
.readiness-check p { margin: .16rem 0 0; color: #71848b; font-size: .68rem; line-height: 1.45; }
.conversation-readiness__foot { margin: 0; color: #788990; font-size: .66rem; line-height: 1.55; }
.story-source-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: .5rem; }
.metric { padding: 1rem; border-radius: 1rem; background: #edf3f0; }
.metric > span { color: #6a7d86; font-size: 0.78rem; }
.metric strong { display: block; margin-top: 0.35rem; color: #163348; font-size: 1.65rem; }
.metric p { margin: 0.25rem 0 0; color: #72838b; font-size: 0.78rem; }
.workspace__tabs { display: flex; flex-wrap: wrap; gap: 0.35rem; margin: 1.5rem 0 1rem; padding: 0.3rem; border-radius: 1rem; background: #eef3f1; }
.tab-button { border-radius: 0.75rem; padding: 0.7rem 1rem; color: #647983; background: transparent; }
.tab-button.active { color: #fff; background: #244d57; }
.tab-button:hover { transform: none; }
.workspace__inline-error { margin: 0 0 1rem; padding: 0.8rem 1rem; border-radius: 0.8rem; color: #8d422e; background: #fff0ea; }
.workspace__action-message { margin: 1rem 0 0; padding: 0.8rem 1rem; border-radius: 0.8rem; color: #276246; background: #e5f3ea; }
.workspace__readonly-note { margin: 0 0 1rem; padding: 0.8rem 1rem; border-radius: 0.8rem; color: #667982; background: #f0f4f2; font-size: 0.82rem; }
.workspace__tools { display: grid; gap: 0.7rem; margin-bottom: 1rem; }
.tool-form {
display: grid;
grid-template-columns: minmax(11rem, 1fr) minmax(10rem, 0.75fr) minmax(12rem, 1.25fr) auto;
align-items: end;
gap: 0.7rem;
padding: 0.9rem;
border: 1px solid #dfe8e4;
border-radius: 1rem;
background: #f7f9f8;
}
.tool-form > div strong, .tool-form > div span { display: block; }
.tool-form > div strong { color: #284754; font-size: 0.88rem; }
.tool-form > div span { margin-top: 0.2rem; color: #778990; font-size: 0.72rem; line-height: 1.45; }
.tool-form input {
width: 100%;
min-width: 0;
box-sizing: border-box;
border: 1px solid #ccd9d4;
border-radius: 0.8rem;
padding: 0.72rem 0.85rem;
color: #183548;
background: #fff;
font: inherit;
}
.tool-form select { width: 100%; min-width: 0; }
.tool-form__wide { min-width: 0; }
.tool-form textarea, .profile-editor textarea {
width: 100%; min-width: 0; box-sizing: border-box; border: 1px solid #ccd9d4; border-radius: 0.8rem;
padding: 0.72rem 0.85rem; color: #183548; background: #fff; font: inherit; line-height: 1.5; resize: vertical;
}
.subject-create-form { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.subject-create-form > div:first-child { grid-column: 1 / -1; }
.subject-create-form .tool-form__wide { grid-column: span 2; }
.profile-editor { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: end; gap: 0.65rem; margin: 1rem 0; padding: 1rem; border: 1px solid #dfe8e4; border-radius: 1rem; background: #f7faf8; }
.profile-editor .section-title { grid-column: 1 / -1; }
.profile-editor .section-title > div p { margin: 0.2rem 0 0; color: #778990; font-size: 0.7rem; line-height: 1.45; }
.profile-editor input, .profile-editor select { width: 100%; min-width: 0; box-sizing: border-box; }
.profile-editor__wide { grid-column: 1 / -1; }
.profile-editor > button { justify-self: end; }
.consent-confirm { display: grid !important; grid-template-columns: auto 1fr; align-items: start; gap: 0.5rem !important; color: #566e79 !important; font-size: 0.72rem !important; font-weight: 500 !important; line-height: 1.45; }
.consent-confirm input { width: auto; margin-top: 0.15rem; accent-color: #cb6d35; }
.workspace__claim { margin-bottom: 1rem; }
.row-actions { display: flex; flex: none; align-items: center; gap: 0.35rem; }
.button-small { padding: 0.35rem 0.65rem; border-radius: 0.55rem; font-size: 0.7rem; }
.button-danger { color: #934633; background: #fae8e3; }
.status { display: inline-flex; align-items: center; min-height: 1.6rem; padding: 0.15rem 0.55rem; border-radius: 999px; color: #607580; background: #edf1ef; font-size: 0.68rem; font-weight: 800; white-space: nowrap; }
.status.ready, .status.completed, .status.confirmed { color: #27704e; background: #e2f1e8; }
.status.running, .status.uploading, .status.assigned, .status.downloading, .status.installing { color: #8a5a20; background: #fff0d8; }
.status.paused, .status.failed, .status.retired, .status.rolled_back { color: #934633; background: #fae8e3; }
.member-layout { display: grid; gap: 1rem; }
.invitation-secret { display: grid; grid-template-columns: minmax(10rem, 0.8fr) minmax(14rem, 1.4fr) auto auto; align-items: center; gap: 0.6rem; padding: 0.9rem; border: 1px solid #e4bba4; border-radius: 1rem; background: #fff6f0; }
.invitation-secret strong { color: #743e27; }
.invitation-secret p { margin: 0.2rem 0 0; color: #8b6a58; font-size: 0.72rem; }
.member-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.member-columns > section { padding: 1rem; border: 1px solid #dfe8e4; border-radius: 1rem; }
.member-row { display: flex; align-items: center; justify-content: space-between; gap: 0.7rem; padding: 0.75rem 0; border-bottom: 1px solid #edf1ef; }
.member-row:last-child { border-bottom: 0; }
.member-row strong { color: #284754; font-size: 0.86rem; }
.member-row p { margin: 0.2rem 0 0; color: #77878e; font-size: 0.74rem; }
.member-row__actions { display: flex; flex: none; align-items: center; gap: 0.35rem; }
.member-row__actions select { min-width: 6.8rem; padding-top: 0.45rem; padding-bottom: 0.45rem; }
.workspace__split { display: grid; grid-template-columns: 15rem 1fr; min-height: 29rem; border: 1px solid #dfe8e4; border-radius: 1.1rem; overflow: hidden; }
.resource-list { padding: 1rem; background: #f3f6f4; }
.resource-list__title, .section-title, .conversation-filter { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.resource-list__title { margin-bottom: 0.7rem; color: #526b76; }
.resource-list__title span, .section-title span { color: #7a8c94; font-size: 0.78rem; }
.resource-button, .conversation-row {
width: 100%;
margin-top: 0.4rem;
border-radius: 0.8rem;
padding: 0.8rem;
text-align: left;
color: #34515f;
background: transparent;
}
.resource-button:hover, .conversation-row:hover { transform: none; background: #e6eeea; }
.resource-button.active, .conversation-row.active { color: #183548; background: #fff; box-shadow: 0 0.35rem 1rem rgba(24, 55, 66, 0.07); }
.resource-button strong, .resource-button span { display: block; }
.resource-button span { margin-top: 0.2rem; color: #7b8b92; font-size: 0.76rem; font-weight: 500; }
.resource-detail { min-width: 0; padding: 1.4rem; }
.resource-detail__head { display: flex; align-items: start; justify-content: space-between; gap: 1rem; }
.resource-detail__head h3 { font-size: 1.65rem; }
.resource-detail__head > div > p:last-child { margin: 0.4rem 0 0; color: #70828b; font-size: 0.84rem; }
.permission { padding: 0.35rem 0.65rem; border-radius: 999px; color: #687c85; background: #edf1ef; font-size: 0.72rem; font-weight: 800; }
.permission--write { color: #27704e; background: #e2f1e8; }
.detail-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.6rem; margin-top: 1.2rem; }
.info { min-width: 0; padding: 0.75rem; border: 1px solid #e2eae6; border-radius: 0.8rem; }
.info span, .info strong { display: block; }
.info span { color: #7a8c94; font-size: 0.72rem; }
.info strong { margin-top: 0.3rem; overflow: hidden; color: #284754; font-size: 0.88rem; text-overflow: ellipsis; white-space: nowrap; }
.section-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 1.2rem; margin-top: 1.5rem; }
.section-title { padding-bottom: 0.5rem; border-bottom: 1px solid #e2e9e6; }
.data-row { display: flex; align-items: start; justify-content: space-between; gap: 0.7rem; padding: 0.75rem 0; border-bottom: 1px solid #edf1ef; }
.data-row strong { color: #284754; font-size: 0.86rem; }
.data-row p { margin: 0.2rem 0 0; color: #77878e; font-size: 0.75rem; line-height: 1.45; }
.tag { flex: none; padding: 0.25rem 0.5rem; border-radius: 999px; color: #6d7f87; background: #edf1ef; font-size: 0.68rem; font-weight: 800; }
.tag--confirmed, .tag--completed, .tag--active { color: #27704e; background: #e2f1e8; }
.tag--pending, .tag--preparing, .tag--room_issued, .tag--starting_agent, .tag--stopping { color: #9a5a25; background: #fff0df; }
.tag--rejected, .tag--failed, .tag--expired, .tag--revoked { color: #9b4936; background: #fae8e3; }
.tag--used { color: #607580; background: #edf1ef; }
.empty-copy { color: #84939a; font-size: 0.82rem; line-height: 1.6; }
.empty-copy.padded { padding: 1rem; }
.device-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.9rem; }
.device-card { padding: 1.2rem; border: 1px solid #dfe8e4; border-radius: 1rem; }
.device-card__head { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 0.7rem; }
.device-card__head strong, .device-card__head span { display: block; }
.device-card__head > div span { margin-top: 0.15rem; color: #7b8b92; font-size: 0.76rem; }
.presence-dot { width: 0.7rem; height: 0.7rem; border-radius: 50%; background: #9aa7ab; box-shadow: 0 0 0 0.3rem #edf1ef; }
.presence-dot.online { background: #4b9b72; box-shadow: 0 0 0 0.3rem #e2f1e8; }
.sync-bar { display: flex; justify-content: space-between; margin-top: 1rem; padding: 0.75rem; border-radius: 0.8rem; color: #607580; background: #f3f6f4; font-size: 0.8rem; }
.device-card__time { margin: 0.7rem 0 0; color: #7a8b92; font-size: 0.74rem; }
.device-volume { margin-top: 0.75rem; padding: 0.8rem; border: 1px solid #dfe8e4; border-radius: 0.8rem; background: #fbfcfb; }
.device-volume__head, .device-volume__meta { display: flex; align-items: center; justify-content: space-between; gap: 0.8rem; }
.device-volume__head label { color: #395762; font-size: 0.78rem; font-weight: 800; }
.device-volume__head strong { color: #27704e; font-size: 0.86rem; }
.device-volume input[type="range"] { width: 100%; margin: 0.7rem 0 0.45rem; padding: 0; accent-color: #4b9b72; }
.device-volume__meta { color: #71858e; font-size: 0.68rem; }
.device-volume .row-actions { margin-top: 0.75rem; }
.firmware-workspace { display: grid; gap: 1rem; }
.firmware-tools .tool-form { grid-template-columns: repeat(4, minmax(0, 1fr)); align-items: end; }
.firmware-tools .tool-form > div:first-child { grid-column: 1 / -1; }
.firmware-tools .tool-form__wide { grid-column: span 2; }
.firmware-tools .tool-form > button { justify-self: end; }
.firmware-key-ledger { padding: 0.9rem; border: 1px solid #dbe6e1; border-radius: 0.9rem; background: #fbfcfb; }
.firmware-key-ledger .section-title { margin-bottom: 0.75rem; }
.firmware-key-ledger .section-title p { margin: 0.2rem 0 0; color: #71858e; font-size: 0.7rem; }
.firmware-key-card { display: flex; align-items: center; justify-content: space-between; gap: 0.8rem; padding: 0.75rem 0.8rem; border: 1px solid #e0e8e4; border-radius: 0.8rem; background: #f8faf9; }
.firmware-key-card > div:first-child { min-width: 0; }
.firmware-key-card strong, .firmware-key-card code, .firmware-key-card p { display: block; }
.firmware-key-card code { margin-top: 0.25rem; color: #536d77; font-size: 0.68rem; overflow-wrap: anywhere; }
.firmware-key-card p { margin: 0.25rem 0 0; color: #7b8b92; font-size: 0.68rem; }
.firmware-digest { grid-column: span 3; min-width: 0; padding: 0.7rem 0.85rem; border: 1px dashed #b9cbc3; border-radius: 0.8rem; background: #fff; }
.firmware-digest span, .firmware-digest strong, .firmware-digest code { display: block; }
.firmware-digest span { color: #71858e; font-size: 0.7rem; }
.firmware-digest strong { margin-top: 0.2rem; color: #294956; font-size: 0.78rem; }
.firmware-digest code { overflow: hidden; margin-top: 0.25rem; color: #73858c; font-size: 0.68rem; text-overflow: ellipsis; white-space: nowrap; }
.firmware-device-select { grid-column: span 3; display: flex; flex-wrap: wrap; gap: 0.55rem 1rem; min-width: 0; margin: 0; padding: 0.7rem 0.85rem; border: 1px solid #d4dfda; border-radius: 0.8rem; background: #fff; }
.firmware-device-select legend { padding: 0 0.35rem; color: #71858e; font-size: 0.7rem; font-weight: 700; }
.firmware-device-select label { display: flex; align-items: center; gap: 0.35rem; color: #536d77; font-size: 0.74rem; }
.firmware-device-select input { width: auto; accent-color: #cb6d35; }
.firmware-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.panel-section { min-width: 0; padding: 1.15rem; border: 1px solid #dfe8e4; border-radius: 1rem; background: #fff; }
.section-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; margin-bottom: 0.8rem; }
.section-heading h3 { margin-top: 0.1rem; color: #244754; font-size: 1.05rem; }
.section-heading > span { color: #71858e; font-size: 0.74rem; }
.stack-list { display: grid; gap: 0.55rem; }
.stack-card { display: flex; align-items: center; justify-content: space-between; gap: 0.8rem; width: 100%; box-sizing: border-box; padding: 0.75rem 0.8rem; border: 1px solid #e0e8e4; border-radius: 0.8rem; color: #294956; background: #f8faf9; text-align: left; }
.stack-card > div:first-child strong, .stack-card > div:first-child span { display: block; }
.stack-card > div:first-child strong { font-size: 0.8rem; }
.stack-card > div:first-child span, .stack-card .row-actions > span:not(.status), .stack-card code { margin-top: 0.2rem; color: #7b8b92; font-size: 0.68rem; }
.stack-card--button:hover, .stack-card--button.selected { transform: none; border-color: #9fbaae; background: #eef5f1; }
.firmware-recovery-form { display: grid; gap: 0.75rem; margin-top: 0.9rem; padding: 0.9rem; border: 1px solid #d7e3dd; border-radius: 0.85rem; background: #f7faf8; }
.firmware-recovery-form > div:first-child p { margin: 0.25rem 0 0; color: #71858e; font-size: 0.72rem; }
.firmware-recovery-form label { display: grid; gap: 0.35rem; color: #405b65; font-size: 0.75rem; font-weight: 700; }
.firmware-recovery-form label small { color: #71858e; font-size: 0.68rem; font-weight: 400; }
.firmware-recovery-form .firmware-digest { grid-column: auto; }
.firmware-recovery-form .firmware-digest code { overflow-wrap: anywhere; white-space: normal; }
.firmware-recovery-form .workspace__action-message, .firmware-recovery-form .workspace__inline-error { margin: 0; }
.firmware-impact { display: grid; gap: 0.75rem; margin-top: 0.9rem; padding: 0.9rem; border: 1px solid #d4e2dc; border-radius: 0.85rem; background: #f8faf9; }
.firmware-impact .section-title p { margin: 0.2rem 0 0; color: #71858e; font-size: 0.68rem; overflow-wrap: anywhere; }
.firmware-impact__metrics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.55rem; }
.firmware-impact__metrics article { min-width: 0; padding: 0.65rem 0.7rem; border: 1px solid #e0e8e4; border-radius: 0.7rem; background: #fff; }
.firmware-impact__metrics span, .firmware-impact__metrics strong, .firmware-impact__metrics small { display: block; }
.firmware-impact__metrics span { color: #71858e; font-size: 0.66rem; }
.firmware-impact__metrics strong { margin: 0.12rem 0; color: #294956; font-size: 1.05rem; }
.firmware-impact__metrics small { color: #71858e; font-size: 0.64rem; line-height: 1.45; }
.firmware-impact__devices { display: grid; gap: 0.45rem; }
.firmware-impact__devices article { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 0.75rem; padding: 0.65rem 0.7rem; border: 1px solid #e0e8e4; border-radius: 0.7rem; background: #fff; }
.firmware-impact__devices strong, .firmware-impact__devices code, .firmware-impact__devices span, .firmware-impact__devices small { display: block; }
.firmware-impact__devices code { margin: 0.15rem 0; color: #607580; font-size: 0.64rem; overflow-wrap: anywhere; }
.firmware-impact__devices span, .firmware-impact__devices small { color: #71858e; font-size: 0.64rem; }
.firmware-impact__devices > article > div:last-child { text-align: right; }
.firmware-impact__devices > article > div:last-child strong { margin: 0.2rem 0; color: #395762; font-size: 0.7rem; }
.firmware-detail__actions { display: flex; align-items: end; justify-content: flex-end; gap: 0.55rem; margin-bottom: 1rem; padding: 0.8rem; border-radius: 0.8rem; background: #f5f8f6; }
.firmware-detail__actions label { display: grid; gap: 0.3rem; margin-right: auto; }
.firmware-detail__actions label span { color: #71858e; font-size: 0.7rem; font-weight: 700; }
.firmware-assignment-list { display: grid; gap: 0.6rem; }
.firmware-assignment { display: grid; grid-template-columns: minmax(12rem, 1fr) minmax(15rem, 1.4fr); align-items: center; gap: 1rem; padding: 0.8rem; border: 1px solid #e0e8e4; border-radius: 0.8rem; }
.firmware-assignment > div:first-child strong, .firmware-assignment > div:first-child span { display: block; }
.firmware-assignment > div:first-child strong { color: #294956; font-size: 0.8rem; }
.firmware-assignment > div:first-child span { margin-top: 0.2rem; color: #7b8b92; font-size: 0.68rem; }
.firmware-progress > div { display: flex; justify-content: space-between; color: #607580; font-size: 0.72rem; }
.firmware-progress progress { width: 100%; height: 0.55rem; margin-top: 0.35rem; accent-color: #4b9b72; }
.firmware-progress small { display: block; margin-top: 0.25rem; color: #71858e; font-size: 0.66rem; line-height: 1.35; }
.firmware-event-timeline { grid-column: 1 / -1; display: grid; gap: 0.35rem; margin: 0; padding: 0.65rem 0 0; border-top: 1px solid #edf1ef; list-style: none; }
.firmware-event-timeline li { display: grid; grid-template-columns: 8rem minmax(12rem, 1fr) auto; align-items: baseline; gap: 0.55rem; color: #536c77; font-size: 0.67rem; }
.firmware-event-timeline time { color: #829198; font-variant-numeric: tabular-nums; }
.firmware-event-timeline code { max-width: 18rem; overflow-wrap: anywhere; color: #476b5b; font-size: 0.62rem; }
.firmware-event-timeline__empty { grid-column: 1 / -1; margin: 0; padding-top: 0.55rem; border-top: 1px solid #edf1ef; color: #8a989e; font-size: 0.66rem; }
.upload-queue { margin-top: 0.65rem; padding: 0.7rem 0.75rem; border: 1px solid #dfe8e4; border-radius: 0.75rem; background: #f5f8f6; }
.upload-queue > div { display: flex; align-items: center; justify-content: space-between; gap: 0.8rem; }
.upload-queue span { color: #71858e; font-size: 0.68rem; }
.upload-queue strong { color: #395762; font-size: 0.72rem; }
.upload-queue p { margin: 0.35rem 0 0; color: #71858e; font-size: 0.66rem; line-height: 1.45; }
.upload-queue--pending { border-color: #edd5aa; background: #fff8e9; }
.upload-queue--pending strong { color: #8a5a20; }
.upload-queue--failed { border-color: #e7c4bb; background: #faece8; }
.upload-queue--failed strong, .upload-queue--failed p { color: #934633; }
.conversation-layout { display: grid; grid-template-columns: 0.9fr 1.1fr; min-height: 31rem; border: 1px solid #dfe8e4; border-radius: 1.1rem; overflow: hidden; }
.conversation-list { border-right: 1px solid #dfe8e4; background: #f6f8f7; }
.conversation-filter { padding: 1rem; }
.conversation-filter__fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.55rem; }
.conversation-filter label { width: auto; min-width: 0; }
.conversation-filter label:first-child { grid-column: 1 / -1; }
.conversation-filter select, .conversation-filter input { min-width: 0; width: 100%; box-sizing: border-box; }
.conversation-filter__summary { display: flex; align-items: center; justify-content: space-between; gap: 0.7rem; margin-top: 0.7rem; }
.conversation-filter__summary > span { color: #7b8b92; font-size: 0.72rem; }
.conversation-list__error { margin: 0 1rem 0.8rem; padding: 0.65rem 0.75rem; border-radius: 0.7rem; color: #934633; background: #fae8e3; font-size: 0.72rem; }
.conversation-list__more { display: flex; justify-content: center; padding: 0.9rem; border-top: 1px solid #e6ece9; }
.conversation-list__more button { width: 100%; }
.conversation-row { display: flex; align-items: center; justify-content: space-between; margin: 0; border-radius: 0; border-top: 1px solid #e6ece9; }
.conversation-row div strong, .conversation-row div span { display: block; }
.conversation-row div span { margin-top: 0.25rem; color: #7b8b92; font-size: 0.74rem; font-weight: 500; }
.conversation-detail { padding: 1.4rem; }
.timeline { margin-top: 1.3rem; }
.timeline h4 { margin-bottom: 0.6rem; }
.timeline__item { display: grid; grid-template-columns: auto 1fr; gap: 0.8rem; min-height: 3.4rem; }
.timeline__item > span { width: 0.55rem; height: 0.55rem; margin-top: 0.25rem; border-radius: 50%; background: #5c9b7a; box-shadow: 0 0 0 0.25rem #e5f0ea; }
.timeline__item strong { color: #34515f; font-size: 0.82rem; }
.timeline__item p { margin: 0.2rem 0 0; color: #809097; font-size: 0.72rem; }
.content-block { margin-top: 1.25rem; }
.recording-block { padding: 1rem; border: 1px solid #dfe8e4; border-radius: 1rem; background: #fbfcfb; }
.recording-notice { margin: 0.7rem 0 0; padding: 0.75rem; border-radius: 0.75rem; color: #647982; background: #eef3f1; font-size: 0.76rem; line-height: 1.55; }
.recording-notice--restricted { color: #7f571f; background: #fff2dc; }
.recording-notice--error { color: #934633; background: #fae8e3; }
.recording-capabilities { display: flex; flex-wrap: wrap; align-items: center; gap: 0.45rem; margin-top: 0.7rem; }
.recording-capabilities small { flex: 1 1 16rem; color: #7b8b92; font-size: 0.68rem; text-align: right; }
.recording-segments { display: grid; gap: 0.55rem; margin-top: 0.75rem; }
.recording-segment { display: grid; grid-template-columns: minmax(10rem, 1fr) auto; align-items: center; gap: 0.6rem; padding: 0.75rem; border: 1px solid #e2e9e6; border-radius: 0.8rem; background: #fff; }
.recording-segment > div:first-child strong, .recording-segment > div:first-child span { display: block; }
.recording-segment > div:first-child strong { color: #294956; font-size: 0.78rem; }
.recording-segment > div:first-child span { margin-top: 0.2rem; color: #7b8b92; font-size: 0.68rem; }
.recording-audio { grid-column: 1 / -1; width: 100%; height: 2.25rem; }
.recording-admin { display: grid; gap: 0.8rem; margin-top: 0.9rem; padding-top: 0.9rem; border-top: 1px dashed #d6e1dc; }
.recording-grant-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: end; gap: 0.55rem; }
.recording-grant-form > div { grid-column: 1 / -1; }
.recording-grant-form > div strong, .recording-grant-form > div span { display: block; }
.recording-grant-form > div strong { color: #294956; font-size: 0.8rem; }
.recording-grant-form > div span { margin-top: 0.2rem; color: #7b8b92; font-size: 0.67rem; line-height: 1.4; }
.recording-grant-form label span { font-size: 0.66rem; }
.recording-grant-form input, .recording-grant-form select { width: 100%; min-width: 0; box-sizing: border-box; padding: 0.55rem 0.6rem; font-size: 0.72rem; }
.recording-grant-form button { justify-self: end; padding: 0.6rem 0.7rem; font-size: 0.7rem; white-space: nowrap; }
.recording-grants > article { display: flex; align-items: center; justify-content: space-between; gap: 0.7rem; padding: 0.55rem 0; border-bottom: 1px solid #e8eeeb; }
.recording-grants > article strong, .recording-grants > article span { display: block; }
.recording-grants > article strong { color: #395762; font-size: 0.73rem; }
.recording-grants > article span { margin-top: 0.2rem; color: #7b8b92; font-size: 0.66rem; }
.summary-card { margin-top: 0.65rem; padding: 0.8rem; border-radius: 0.8rem; background: #f2f6f4; }
.summary-card strong { color: #294956; font-size: 0.82rem; }
2026-08-29 21:56:51 +08:00
.summary-card p { margin: 0.35rem 0; color: #506a75; font-size: 0.82rem; line-height: 1.6; white-space: pre-wrap; }
2026-08-26 06:41:07 +08:00
.summary-card small { color: #829198; }
.turn-row { margin-top: 0.6rem; padding: 0.75rem 0.85rem; border: 1px solid #e0e9e5; border-radius: 0.85rem; }
.turn-row--subject { margin-right: 2rem; background: #eef6f1; }
.turn-row--agent { margin-left: 2rem; background: #f7f5f1; }
.turn-row > div { display: flex; justify-content: space-between; gap: 1rem; }
.turn-row strong { color: #294956; font-size: 0.8rem; }
.turn-row span { color: #829198; font-size: 0.7rem; }
.turn-row p { margin: 0.35rem 0 0; color: #526d77; font-size: 0.82rem; line-height: 1.55; }
.story-layout { display: grid; grid-template-columns: 17rem 1fr; min-height: 34rem; border: 1px solid #dfe8e4; border-radius: 1.1rem; overflow: hidden; }
.story-sidebar { padding: 1rem; border-right: 1px solid #dfe8e4; background: #f5f8f6; }
.story-sidebar > label { display: block; margin-bottom: 1rem; }
.story-sidebar > label select { width: 100%; }
.story-button { width: 100%; padding: 0.75rem; border-radius: 0.8rem; text-align: left; color: #385561; background: transparent; }
.story-button:hover { transform: none; background: #e7efeb; }
.story-button.active { background: #fff; box-shadow: 0 0.35rem 1rem rgba(24, 55, 66, 0.07); }
.story-button strong, .story-button span { display: block; }
.story-button strong { font-size: 0.82rem; line-height: 1.45; }
.story-button span { margin-top: 0.25rem; color: #7c8d94; font-size: 0.7rem; }
.memory-title { margin-top: 1.3rem; }
.memory-search { width: 100%; box-sizing: border-box; margin-top: 0.65rem; border: 1px solid #ccd9d4; border-radius: 0.7rem; padding: 0.6rem 0.7rem; color: #183548; background: #fff; font: inherit; font-size: 0.76rem; }
.memory-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: .45rem; padding: 0.7rem 0; border-bottom: 1px solid #e1e9e5; }
.memory-row.selected { margin: 0 -.45rem; padding: .7rem .45rem; border-radius: .7rem; background: #e7efeb; }
.memory-row__select { min-width: 0; padding: 0; color: inherit; background: transparent; text-align: left; }
.memory-row__select:hover { transform: none; background: transparent; }
.memory-row strong, .memory-row span { display: block; }
.memory-row strong { overflow: hidden; color: #385561; font-size: 0.78rem; line-height: 1.45; text-overflow: ellipsis; white-space: nowrap; }
.memory-row span { margin-top: 0.25rem; color: #7c8d94; font-size: 0.68rem; }
.story-detail { min-width: 0; padding: 1.4rem; }
.story-editor, .story-reason { display: block; margin-top: 1rem; color: #607580; font-size: 0.76rem; font-weight: 700; }
.story-editor textarea, .story-reason input { width: 100%; box-sizing: border-box; margin-top: 0.35rem; border: 1px solid #ccd9d4; border-radius: 0.8rem; padding: 0.85rem; color: #183548; background: #fff; font: inherit; line-height: 1.65; resize: vertical; }
.story-editor textarea:disabled { color: #526a74; background: #f4f7f5; }
.story-actions { display: flex; flex-wrap: wrap; gap: 0.55rem; margin-top: 0.8rem; }
.memory-management { min-width: 0; }
.memory-management__content { margin-top: 1rem; padding: 1rem; border: 1px solid #dfe8e4; border-radius: .9rem; background: #f7faf8; }
.memory-management__content span, .memory-management__content small { color: #71858e; font-size: .72rem; }
.memory-management__content p { margin: .45rem 0; color: #2f4f5b; font-size: .9rem; line-height: 1.7; white-space: pre-wrap; }
.memory-management__tabs { display: flex; flex-wrap: wrap; gap: .45rem; margin-top: 1rem; padding: .4rem; border-radius: .8rem; background: #eef3f1; }
.memory-management__tabs button { padding: .55rem .8rem; color: #526c77; background: transparent; box-shadow: none; }
.memory-management__tabs button:hover { transform: none; background: #fff; }
.memory-management__tabs button.active { color: #fff; background: #245f51; }
.memory-management__tabs button.danger { color: #934633; }
.memory-management__tabs button.danger.active { color: #fff; background: #a84f39; }
.memory-management__form { display: grid; gap: .8rem; margin-top: .8rem; padding: 1rem; border: 1px solid #dfe8e4; border-radius: .9rem; background: #fff; }
.memory-management__form > p { margin: 0; color: #657b84; font-size: .78rem; line-height: 1.6; }
.memory-management__form label:not(.consent-confirm) { display: grid; gap: .35rem; color: #607580; font-size: .76rem; font-weight: 700; }
.memory-management__form input, .memory-management__form textarea { width: 100%; min-width: 0; box-sizing: border-box; border: 1px solid #ccd9d4; border-radius: .75rem; padding: .75rem .8rem; color: #183548; background: #fff; font: inherit; }
.memory-management__form textarea { resize: vertical; line-height: 1.65; }
.memory-management__form > button { justify-self: end; }
.memory-management__form--delete { border-color: #e4b8ad; background: #fff7f4; }
.memory-management__form--delete > p { color: #815d54; }
.memory-management__form--delete > button:not(:disabled) { color: #fff; background: #a84f39; }
.source-row { position: relative; padding: 0.75rem 0; border-bottom: 1px solid #edf1ef; }
.source-row strong { color: #34515f; font-size: 0.78rem; }
.source-row p { margin: 0.3rem 0; color: #697d86; font-size: 0.78rem; line-height: 1.55; }
2026-08-29 21:56:51 +08:00
.fact-review-card { padding: 1rem; border: 1px solid #eadfd9; border-radius: 14px; background: #fff; box-shadow: 0 8px 20px rgba(66, 48, 39, 0.04); }
.fact-review-card + .fact-review-card { margin-top: 0.75rem; }
.fact-review-card > p { margin: 0.8rem 0; color: #334750; line-height: 1.65; }
.fact-review-card__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; }
.fact-review-card__head > div { display: grid; gap: 0.2rem; }
.fact-review-card__head strong { color: #263d47; }
.fact-review-card__head span { color: #7b8b91; font-size: 0.76rem; }
.fact-review-card__meta { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-bottom: 0.8rem; color: #71838a; font-size: 0.75rem; }
.fact-review-reason, .fact-review-form label { display: grid; gap: 0.35rem; color: #536970; font-size: 0.75rem; }
.fact-review-reason input, .fact-review-form input, .fact-review-form textarea, .fact-review-form select { width: 100%; }
.fact-review-form { display: grid; gap: 0.75rem; margin-top: 0.9rem; }
.fact-review-form textarea { min-height: 7rem; resize: vertical; }
2026-08-26 06:41:07 +08:00
.state-panel { display: grid; place-content: center; min-height: 12rem; padding: 2rem; text-align: center; }
.state-panel strong { color: #294956; }
.state-panel p { max-width: 30rem; margin: 0.5rem auto 0; color: #7a8b92; line-height: 1.6; }
.state-panel button { justify-self: center; margin-top: 0.8rem; }
.privacy-layout { display: grid; gap: 1rem; }
.privacy-toolbar { display: grid; grid-template-columns: minmax(11rem, .7fr) minmax(18rem, 1.8fr) auto; align-items: end; gap: 1rem; padding: 1.2rem; border: 1px solid #dfe8e4; border-radius: 1rem; background: #f8faf9; }
.privacy-toolbar label { display: grid; min-width: 0; gap: 0.35rem; }
.privacy-toolbar select { width: 100%; min-width: 0; }
.privacy-toolbar label span, .privacy-toolbar p { color: #71858e; font-size: 0.78rem; }
.privacy-toolbar p { margin: 0.3rem 0 0; line-height: 1.55; }
.privacy-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(19rem, 1fr)); gap: 0.9rem; }
.privacy-card { padding: 1.2rem; border: 1px solid #dfe8e4; border-radius: 1rem; background: #fff; box-shadow: 0 0.45rem 1.2rem rgba(24, 55, 66, 0.05); }
.privacy-card__head { display: flex; justify-content: space-between; align-items: flex-start; gap: 0.8rem; }
.privacy-card__head div { display: grid; gap: 0.25rem; }
.privacy-card__head div span, .privacy-card > p { color: #71858e; font-size: 0.76rem; }
.privacy-counts { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.5rem; margin: 1rem 0; }
.privacy-counts .info { min-width: 0; }
.privacy-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 0.5rem; }
.privacy-exports { padding: 1.2rem; border: 1px solid #dfe8e4; border-radius: 1rem; background: #fff; }
.privacy-delete-confirmation { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .85rem; padding: 1.2rem; border: 1px solid #e4b8ad; border-radius: 1rem; background: #fff7f4; box-shadow: 0 .6rem 1.5rem rgba(120, 54, 38, .08); }
.privacy-delete-confirmation__head, .privacy-delete-confirmation > p, .privacy-delete-confirmation__error, .privacy-delete-confirmation__actions { grid-column: 1 / -1; }
.privacy-delete-confirmation__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.privacy-delete-confirmation__head h4 { margin-top: .15rem; color: #713d31; font-size: 1.05rem; }
.privacy-delete-confirmation > p { margin: 0; color: #815d54; font-size: .78rem; line-height: 1.6; }
.privacy-delete-confirmation label { display: grid; min-width: 0; gap: .35rem; color: #744b42; font-size: .76rem; font-weight: 700; }
.privacy-delete-confirmation textarea, .privacy-delete-confirmation input { width: 100%; min-width: 0; box-sizing: border-box; border: 1px solid #d8b7af; border-radius: .75rem; padding: .7rem .8rem; color: #412d29; background: #fff; font: inherit; }
.privacy-delete-confirmation textarea { min-height: 5.2rem; resize: vertical; }
.privacy-delete-confirmation input[aria-invalid="true"] { border-color: #b45d49; box-shadow: 0 0 0 .18rem rgba(180, 93, 73, .12); }
.privacy-delete-confirmation__error { color: #934633 !important; font-weight: 700; }
.privacy-delete-confirmation__actions { display: flex; justify-content: flex-end; gap: .55rem; }
.privacy-delete-confirmation__actions button[type="submit"]:not(:disabled) { color: #fff; background: #a84f39; box-shadow: 0 .35rem .8rem rgba(139, 59, 40, .18); }
.ops-workspace { margin-top: 1rem; padding: 2rem; border: 1px solid #dce7e2; border-radius: 1.5rem; background: rgba(255,255,255,.9); box-shadow: 0 1.2rem 3rem rgba(24,55,66,.08); }
.ops-workspace__head { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin-bottom: 1.2rem; }
.ops-workspace__head h2 { margin: .25rem 0; }
.ops-workspace__head p { margin: 0; color: #6e828b; line-height: 1.55; }
.ops-workspace__head label { display: grid; min-width: 18rem; gap: .35rem; color: #657982; font-size: .76rem; font-weight: 700; }
.ops-workspace select, .ops-workspace input, .ops-workspace textarea { width: 100%; box-sizing: border-box; border: 1px solid #cbd9d3; border-radius: .75rem; padding: .7rem .8rem; color: #183548; background: #fff; font: inherit; }
.ops-workspace textarea { resize: vertical; font-family: "Cascadia Mono", Consolas, monospace; font-size: .76rem; line-height: 1.55; }
.ops-config-form { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); align-items: end; gap: .8rem; margin: 1rem 0; padding: 1.2rem; border: 1px solid #dfe8e4; border-radius: 1rem; background: #f7faf8; }
.ops-config-form label { display: grid; min-width: 0; gap: .35rem; color: #657982; font-size: .76rem; font-weight: 700; }
.ops-config-form__intro, .ops-config-form__wide { grid-column: 1 / -1; }
.ops-config-form__intro strong, .ops-config-form__intro span { display: block; }
.ops-config-form__intro strong { color: #284754; }
.ops-config-form__intro span { margin-top: .2rem; color: #778990; font-size: .74rem; }
.ops-bundle-composer { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .75rem; min-width: 0; margin: 0; padding: 1rem; border: 1px solid #d9e4df; border-radius: .85rem; background: #fff; }
.ops-bundle-composer legend { padding: 0 .35rem; color: #284754; font-size: .78rem; font-weight: 800; }
.ops-bundle-composer > small { grid-column: 1 / -1; color: #70848d; font-size: .72rem; line-height: 1.5; }
.ops-bundle-composer > small.ops-bundle-composer__warning { color: #9a4c2d; }
.ops-config-form__note { margin: 0; padding: .75rem .85rem; border-radius: .75rem; color: #617780; background: #edf4f1; font-size: .74rem; line-height: 1.5; }
.ops-config-form button { justify-self: end; }
.ops-gate-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .8rem; margin: 1rem 0; }
.ops-gate-card { display: grid; align-content: start; gap: .65rem; padding: 1rem; border: 1px solid #dfe8e4; border-radius: 1rem; background: #f7faf8; }
.ops-gate-card > p { margin: -.35rem 0 0; color: #71858d; font-size: .73rem; }
.ops-gate-card label { display: grid; gap: .3rem; color: #657982; font-size: .74rem; font-weight: 700; }
.ops-gate-card button { justify-self: start; }
.ops-gate-card small { color: #70848d; }
.ops-ledger-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .8rem; margin: 1rem 0; }
.ops-ledger { overflow: hidden; border: 1px solid #dfe8e4; border-radius: 1rem; background: #fff; }
.ops-ledger > div { display: flex; justify-content: space-between; gap: 1rem; padding: .8rem 1rem; border-bottom: 1px solid #e6ece9; background: #f4f8f6; }
.ops-ledger > div span, .ops-ledger > p { color: #71858d; font-size: .72rem; }
.ops-ledger > p { margin: 0; padding: 1rem; }
.ops-ledger ul { max-height: 15rem; overflow: auto; margin: 0; padding: 0; list-style: none; }
.ops-ledger li { display: flex; align-items: center; justify-content: space-between; gap: .8rem; padding: .7rem 1rem; border-bottom: 1px solid #edf1ef; color: #637a83; font-size: .72rem; }
.ops-ledger li:last-child { border-bottom: 0; }
.ops-ledger li > span:first-child { display: grid; min-width: 0; gap: .15rem; }
.ops-ledger li small { overflow-wrap: anywhere; color: #71858d; }
.external-dependency-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: .75rem; }
.external-dependency-grid .diagnostic-card { margin: 0; }
.ops-rollout-panel { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); align-items: end; gap: .8rem; margin: 1rem 0; padding: 1rem; border: 1px solid #d6e4de; border-radius: 1rem; background: #f0f7f3; }
.ops-rollout-panel > div, .ops-rollout-panel__reason { grid-column: 1 / -1; }
.ops-rollout-panel > div p { margin: .25rem 0 0; color: #71858d; font-size: .74rem; }
.ops-rollout-panel label { display: grid; gap: .35rem; color: #657982; font-size: .74rem; font-weight: 700; }
.ops-version-list { margin-top: 1rem; }
.ops-version-group { margin-top: .8rem; overflow: hidden; border: 1px solid #dfe8e4; border-radius: 1rem; background: #fff; }
.ops-version-group > div:first-child { display: flex; justify-content: space-between; gap: 1rem; padding: .9rem 1rem; border-bottom: 1px solid #e5ece8; background: #f4f8f6; }
.ops-version-group > div:first-child span { color: #70848d; font-size: .75rem; }
.ops-version { display: grid; grid-template-columns: minmax(14rem,.8fr) minmax(20rem,1.6fr) auto; align-items: center; gap: 1rem; padding: 1rem; border-bottom: 1px solid #edf1ef; }
.ops-version:last-child { border-bottom: 0; }
.ops-version__summary { display: grid; gap: .25rem; }
.ops-version__summary span, .ops-version__summary small { color: #70848d; font-size: .73rem; line-height: 1.45; }
.ops-version details summary { color: #3c5d69; font-size: .76rem; cursor: pointer; }
.ops-diff { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; margin-top: .5rem; }
.ops-diff pre { max-height: 14rem; overflow: auto; margin: 0; padding: .6rem; border-radius: .55rem; color: #395965; background: #eef4f1; font-size: .68rem; white-space: pre-wrap; }
.ops-version details p { margin: .4rem 0 0; color: #72858d; font-size: .7rem; }
.ops-version__actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .4rem; }
.ops-version-transition { grid-column: 1 / -1; width: 100%; }
.ops-version-transition__scope { grid-column: 1 / -1; margin: 0; }
.ops-evidence-list { grid-column: 1 / -1; display: grid; gap: .35rem; margin: 0; padding: .6rem .8rem; border-radius: .7rem; background: #f4f8f6; list-style: none; }
.ops-evidence-list li { display: flex; gap: .7rem; color: #637a83; font-size: .72rem; }
.ops-evidence-list strong { color: #2d725b; }
.ops-evaluation-editor { grid-column: 1 / -1; margin-top: 0; }
.ops-evaluation-editor h4 { margin: .1rem 0 0; color: #4e4a3c; }
.ops-billing { background: linear-gradient(145deg,rgba(255,255,255,.96),rgba(247,251,249,.96)); }
.billing-summary-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: .8rem; margin: 1rem 0; }
.billing-summary-grid article { display: grid; gap: .3rem; padding: 1rem; border: 1px solid #dce7e2; border-radius: 1rem; background: #f4f8f6; }
.billing-summary-grid span, .billing-summary-grid small { color: #71858d; font-size: .72rem; }
.billing-summary-grid strong { color: #234957; font-size: 1.3rem; }
.billing-form { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); align-items: end; gap: .8rem; margin: 1rem 0; padding: 1.2rem; border: 1px solid #dce7e2; border-radius: 1rem; background: #f7faf8; }
.billing-form label { display: grid; min-width: 0; gap: .35rem; color: #657982; font-size: .76rem; font-weight: 700; }
.billing-form__intro, .billing-form__wide { grid-column: 1 / -1; }
.billing-form__intro { display: grid; gap: .2rem; }
.billing-form__intro span { color: #71858d; font-size: .74rem; }
.billing-form button { justify-self: end; }
.billing-form--quota { border-color: #d5e1e9; background: #f5f8fa; }
.billing-rate-table { overflow-x: auto; border: 1px solid #dfe8e4; border-radius: .8rem; background: #fff; }
.billing-rate-table > div, .billing-rate-table label { display: grid; grid-template-columns: minmax(7rem,.8fr) minmax(10rem,1.3fr) minmax(7rem,.8fr) minmax(9rem,.9fr); align-items: center; gap: .5rem; padding: .55rem .7rem; }
.billing-rate-table > div { color: #71858d; background: #edf4f1; font-size: .7rem; font-weight: 700; }
.billing-rate-table label { border-top: 1px solid #edf1ef; }
.billing-rate-table label strong { color: #3d5e69; font-size: .72rem; }
.billing-rate-table input { padding: .52rem .6rem; font-size: .72rem; }
.billing-ledger-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .8rem; margin: 1rem 0; }
.billing-ledger, .billing-policy-list { overflow: hidden; border: 1px solid #dfe8e4; border-radius: 1rem; background: #fff; }
.billing-ledger > div, .billing-policy-list > div { display: flex; justify-content: space-between; gap: 1rem; padding: .8rem 1rem; border-bottom: 1px solid #e6ece9; background: #f4f8f6; }
.billing-ledger > div span, .billing-policy-list > div span, .billing-ledger > p, .billing-policy-list > p { color: #71858d; font-size: .72rem; }
.billing-ledger > p, .billing-policy-list > p { margin: 0; padding: 1rem; }
.billing-ledger ul, .billing-policy-list ul { max-height: 19rem; overflow: auto; margin: 0; padding: 0; list-style: none; }
.billing-ledger li, .billing-policy-list li { display: flex; align-items: center; justify-content: space-between; gap: .8rem; padding: .75rem 1rem; border-bottom: 1px solid #edf1ef; color: #637a83; font-size: .72rem; }
.billing-ledger li:last-child, .billing-policy-list li:last-child { border-bottom: 0; }
.billing-ledger li > span:first-child, .billing-policy-list li > span:first-child { display: grid; min-width: 0; gap: .2rem; }
.billing-ledger small, .billing-policy-list small { overflow-wrap: anywhere; color: #71858d; }
.billing-ledger b { color: #2d725b; white-space: nowrap; }
.conversation-usage { display: grid; grid-template-columns: minmax(12rem,.8fr) minmax(16rem,1.4fr); gap: 1rem; margin: 1rem 0; padding: 1rem; border: 1px solid #dce7e2; border-radius: 1rem; background: #f4f8f6; }
.conversation-usage > div { display: grid; align-content: start; gap: .25rem; }
.conversation-usage > div span, .conversation-usage small, .conversation-usage > p { color: #71858d; font-size: .72rem; }
.conversation-usage > div strong { color: #245567; font-size: 1.15rem; }
.conversation-usage ul { margin: 0; padding: 0; list-style: none; }
.conversation-usage li { display: flex; justify-content: space-between; gap: .8rem; padding: .35rem 0; border-bottom: 1px solid #e3ebe7; color: #607781; font-size: .72rem; }
.conversation-usage li:last-child { border-bottom: 0; }
.conversation-usage li strong { color: #2d725b; white-space: nowrap; }
.conversation-usage > p { margin: 0; }
.ops-alerts { background: linear-gradient(145deg,rgba(255,255,255,.97),rgba(248,250,249,.97)); }
.ops-diagnostics { background: linear-gradient(145deg,rgba(255,255,255,.98),rgba(245,250,252,.98)); }
.diagnostic-search { display: grid; grid-template-columns: minmax(12rem,.45fr) minmax(20rem,1fr) auto; align-items: end; gap: .8rem; margin: 1rem 0; padding: 1rem; border: 1px solid #d9e6e7; border-radius: 1rem; background: #f5f9fa; }
.diagnostic-search label { display: grid; gap: .35rem; color: #657982; font-size: .76rem; font-weight: 700; }
.diagnostic-results { display: grid; gap: .8rem; margin-top: 1rem; }
.diagnostic-card { padding: 1rem; border: 1px solid #dce7e7; border-radius: 1rem; background: #fff; }
.diagnostic-card__head { display: flex; align-items: start; justify-content: space-between; gap: 1rem; }
.diagnostic-card__head > div { display: grid; gap: .25rem; }
.diagnostic-card__head strong { color: #284a59; overflow-wrap: anywhere; }
.diagnostic-card__head span { color: #71858d; font-size: .74rem; }
.diagnostic-card dl { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: .65rem; margin: 1rem 0; }
.diagnostic-card dl div { min-width: 0; padding: .7rem; border-radius: .7rem; background: #f5f8f8; }
.diagnostic-card dt { color: #71858d; font-size: .68rem; }
.diagnostic-card dd { margin: .25rem 0 0; color: #355967; font: .72rem/1.5 "Cascadia Mono",Consolas,monospace; overflow-wrap: anywhere; }
.sensitive-access-request { display: grid; grid-template-columns: 1.2fr .8fr; gap: .8rem 1rem; margin-top: 1rem; padding: 1rem; border: 1px solid #e4d5b8; border-radius: 1rem; background: #fffaf0; }
.sensitive-access-request__head, .sensitive-access-request > p, .sensitive-access-request > label:first-of-type, .sensitive-access-request__actions { grid-column: 1 / -1; }
.sensitive-access-request__head { display: flex; align-items: start; justify-content: space-between; gap: 1rem; }
.sensitive-access-request__head h3 { margin-top: .1rem; color: #4e4a3c; }
.sensitive-access-request > p { margin: 0; color: #746b58; font-size: .75rem; line-height: 1.6; }
.sensitive-access-request > p strong { overflow-wrap: anywhere; color: #4d5e62; }
.sensitive-access-request label, .sensitive-access-request fieldset { display: grid; gap: .35rem; color: #657982; font-size: .72rem; font-weight: 700; }
.sensitive-access-request textarea { min-height: 5rem; resize: vertical; }
.sensitive-access-request fieldset { grid-template-columns: 1fr; margin: 0; padding: .75rem; border: 1px solid #ded7c8; border-radius: .7rem; background: rgba(255,255,255,.7); }
.sensitive-access-request fieldset legend { padding: 0 .3rem; }
.sensitive-access-request fieldset label { display: flex; align-items: center; gap: .45rem; font-weight: 600; }
.sensitive-access-request fieldset input { width: auto; accent-color: #c56a32; }
.sensitive-access-request__actions { display: flex; justify-content: flex-end; gap: .5rem; }
.controlled-operation--danger { border-color: #e8c3ba; background: #fff7f4; }
.controlled-operation__confirmation { grid-column: 1 / -1; display: flex !important; align-items: flex-start; gap: .55rem !important; padding: .75rem; border: 1px solid #e4d5b8; border-radius: .7rem; background: rgba(255,255,255,.75); font-weight: 600 !important; line-height: 1.5; }
.controlled-operation__confirmation input { flex: 0 0 auto; width: auto; margin-top: .12rem; accent-color: #b64f3f; }
form[aria-label="联调问题流转编辑"] > label { grid-column: 1 / -1; }
form[aria-label="联调问题流转编辑"] label small { color: #7b898d; font-weight: 500; line-height: 1.5; }
.integration-issues { display: grid; gap: .8rem; }
.integration-issues .section-heading { align-items: end; }
.integration-issues .section-heading p { margin: .25rem 0 0; color: #71858d; font-size: .74rem; }
.issue-summary-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: .8rem; }
.issue-summary-grid article { display: grid; gap: .25rem; padding: 1rem; border: 1px solid #dce7e2; border-radius: 1rem; background: #f5f8f7; }
.issue-summary-grid span, .issue-summary-grid small { color: #71858d; font-size: .72rem; }
.issue-summary-grid strong { color: #234957; font-size: 1.3rem; }
.issue-summary-grid .issue-gate-pass { border-color: #b8ddcd; background: #f1faf6; }
.issue-summary-grid .issue-gate-blocked { border-color: #efc3bd; background: #fff5f3; }
.issue-summary-grid .issue-gate-blocked strong { color: #a43f35; }
.integration-issue-form { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); align-items: end; gap: .7rem; padding: 1rem; border: 1px solid #d9e6e7; border-radius: 1rem; background: #f5f9fa; }
.integration-issue-form label { display: grid; gap: .35rem; color: #657982; font-size: .72rem; font-weight: 700; }
.integration-issue-form label:first-child { grid-column: 1 / -1; }
.integration-issue-form fieldset { min-width: 0; margin: 0; padding: .75rem; border: 1px solid #d9e6e7; border-radius: .7rem; }
.integration-issue-form .checkbox-label { display: flex; align-items: center; gap: .45rem; min-width: 0; overflow-wrap: anywhere; }
.integration-issue-form .checkbox-label input { flex: 0 0 auto; width: auto; }
.integration-issue-form textarea { min-height: 5rem; resize: vertical; }
.integration-issue-form button { justify-self: end; }
.integration-issue-card > p { margin: .7rem 0 0; color: #506c77; font-size: .76rem; line-height: 1.6; white-space: pre-wrap; }
.alert-summary-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: .8rem; margin: 1rem 0; }
.alert-summary-grid article { display: grid; gap: .25rem; padding: 1rem; border: 1px solid #dce7e2; border-radius: 1rem; background: #f5f8f7; }
.alert-summary-grid span, .alert-summary-grid small { color: #71858d; font-size: .72rem; }
.alert-summary-grid strong { color: #234957; font-size: 1.35rem; }
.alert-queue-layout { display: grid; grid-template-columns: minmax(20rem,.85fr) minmax(25rem,1.15fr); min-height: 28rem; overflow: hidden; border: 1px solid #dce7e2; border-radius: 1rem; background: #fff; }
.alert-queue { border-right: 1px solid #e2e9e6; }
.alert-queue__toolbar { display: flex; align-items: end; justify-content: space-between; gap: 1rem; padding: .8rem 1rem; border-bottom: 1px solid #e6ece9; background: #f4f8f6; }
.alert-queue__toolbar label { display: grid; gap: .2rem; color: #71858d; font-size: .68rem; }
.alert-queue__toolbar select { min-width: 8rem; padding: .45rem .55rem; font-size: .72rem; }
.alert-queue > p { margin: 0; padding: 1rem; color: #71858d; font-size: .74rem; }
.alert-queue ul { max-height: 35rem; overflow: auto; margin: 0; padding: 0; list-style: none; }
.alert-queue li { border-bottom: 1px solid #edf1ef; }
.alert-queue li.selected { box-shadow: inset .22rem 0 #2d725b; background: #f3f8f5; }
.alert-queue li button { display: grid; grid-template-columns: auto minmax(0,1fr); width: 100%; gap: .7rem; padding: .8rem 1rem; border: 0; border-radius: 0; color: inherit; background: transparent; text-align: left; box-shadow: none; }
.alert-queue li button > span:last-child { display: grid; gap: .2rem; min-width: 0; }
.alert-queue li button strong { overflow: hidden; color: #31515e; font-size: .77rem; text-overflow: ellipsis; white-space: nowrap; }
.alert-queue li button small { color: #72858d; font-size: .68rem; line-height: 1.45; }
.alert-severity { align-self: start; min-width: 2.2rem; padding: .25rem .4rem; border-radius: 999px; color: #fff; font-size: .64rem; font-weight: 800; text-align: center; }
.alert-severity--critical { background: #a53b3b; }
.alert-severity--high { background: #c56a32; }
.alert-severity--medium { background: #aa882b; }
.alert-severity--low { background: #447b72; }
.alert-detail { min-width: 0; padding: 1.2rem; }
.alert-detail__title { display: flex; align-items: start; justify-content: space-between; gap: 1rem; }
.alert-detail__title span { color: #7a8b92; font-family: "Cascadia Mono",Consolas,monospace; font-size: .68rem; }
.alert-detail__title h3 { margin: .25rem 0 0; color: #294a57; }
.alert-detail__title b { padding: .3rem .6rem; border-radius: 999px; color: #2d725b; background: #e7f2ed; font-size: .7rem; white-space: nowrap; }
.alert-detail > p, .alert-detail__empty p { color: #657b84; font-size: .76rem; line-height: 1.65; }
.alert-detail dl { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .45rem .8rem; margin: 1rem 0; }
.alert-detail dl div { min-width: 0; padding: .65rem; border-radius: .7rem; background: #f5f8f7; }
.alert-detail dt { color: #7b8c93; font-size: .65rem; }
.alert-detail dd { overflow-wrap: anywhere; margin: .25rem 0 0; color: #3f5d68; font-size: .72rem; }
.alert-detail__actions { display: flex; flex-wrap: wrap; gap: .5rem; }
.alert-detail__empty { display: grid; place-content: center; min-height: 24rem; text-align: center; }
.alert-timeline { margin-top: 1.2rem; padding-top: 1rem; border-top: 1px solid #e3ebe7; }
.alert-timeline > p { color: #71858d; font-size: .72rem; }
.alert-timeline ol { position: relative; margin: .8rem 0 0; padding: 0 0 0 1.4rem; list-style: none; }
.alert-timeline ol::before { position: absolute; top: .3rem; bottom: .3rem; left: .35rem; width: 1px; content: ""; background: #ccdcd5; }
.alert-timeline li { position: relative; margin-bottom: .8rem; }
.alert-timeline li::before { position: absolute; top: .3rem; left: -1.35rem; width: .58rem; height: .58rem; border: .18rem solid #fff; border-radius: 50%; content: ""; background: #3f806b; box-shadow: 0 0 0 1px #b9cec5; }
.alert-timeline li span { color: #2f5a68; font-size: .72rem; font-weight: 800; }
.alert-timeline li p { margin: .18rem 0; color: #607781; font-size: .71rem; }
.alert-timeline li small { color: #839198; font-size: .65rem; }
.alert-config-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .8rem; margin: 1rem 0; }
.alert-config-form { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); align-content: start; align-items: end; gap: .7rem; padding: 1rem; border: 1px solid #dce7e2; border-radius: 1rem; background: #f7faf8; }
.alert-config-form > div, .alert-config-form__wide { grid-column: 1 / -1; }
.alert-config-form > div { display: grid; gap: .2rem; }
.alert-config-form > div span { color: #71858d; font-size: .72rem; }
.alert-config-form label { display: grid; gap: .3rem; color: #657982; font-size: .72rem; font-weight: 700; }
.alert-config-form button { justify-self: end; }
.alert-config-form--silence { align-content: start; border-color: #e4dfd2; background: #faf9f5; }
.alert-ledger-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .8rem; }
.alert-ledger-grid > section { overflow: hidden; border: 1px solid #dce7e2; border-radius: 1rem; background: #fff; }
.alert-ledger-grid section > div { display: flex; justify-content: space-between; gap: 1rem; padding: .8rem 1rem; border-bottom: 1px solid #e6ece9; background: #f4f8f6; }
.alert-ledger-grid section > div span { color: #71858d; font-size: .72rem; }
.alert-ledger-grid ul { max-height: 18rem; overflow: auto; margin: 0; padding: 0; list-style: none; }
.alert-ledger-grid li { display: flex; align-items: center; justify-content: space-between; gap: .8rem; padding: .75rem 1rem; border-bottom: 1px solid #edf1ef; }
.alert-ledger-grid li > span { display: grid; min-width: 0; gap: .2rem; }
.alert-ledger-grid li strong { color: #3a5965; font-size: .72rem; }
.alert-ledger-grid li small, .alert-ledger-grid li b { overflow-wrap: anywhere; color: #71858d; font-size: .68rem; font-weight: 400; }
@media (max-width: 760px) {
main { padding: 3rem 0; }
.hero { align-items: start; flex-direction: column; gap: 1.5rem; }
.status-grid { grid-template-columns: 1fr; }
.identity-panel { grid-template-columns: 1fr; gap: 2rem; }
.membership { align-items: start; flex-direction: column; gap: 0.25rem; }
.workspace-shell { padding: 0.7rem; }
.workspace-shell__heading { align-items: start; flex-direction: column; gap: 0.7rem; padding: 0.65rem; }
.workspace-shell__heading > p { text-align: left; }
.workspace-nav { display: flex; overflow-x: auto; scroll-snap-type: x proximity; }
.workspace-nav__item { min-width: 10.5rem; scroll-snap-align: start; }
.milestone-panel { grid-template-columns: 1fr; gap: 2rem; }
.milestone-panel ol { grid-template-columns: repeat(2, 1fr); }
.workspace { padding: 1.2rem; }
.workspace__header { align-items: stretch; flex-direction: column; }
.workspace__actions { align-items: stretch; flex-direction: column; }
.accept-invitation { align-items: stretch; flex-direction: column; }
.accept-invitation label { width: 100%; }
.tool-form { grid-template-columns: 1fr; align-items: stretch; }
.subject-create-form, .profile-editor { grid-template-columns: 1fr; }
.subject-create-form > div:first-child, .subject-create-form .tool-form__wide, .profile-editor .section-title, .profile-editor__wide { grid-column: auto; }
.invitation-secret, .member-columns { grid-template-columns: 1fr; }
.member-row { align-items: start; flex-direction: column; }
.workspace__summary, .detail-grid { grid-template-columns: repeat(2, 1fr); }
.conversation-readiness__head { flex-direction: column; }
.conversation-readiness__checks { grid-template-columns: 1fr; }
.readiness-check { grid-template-columns: auto minmax(0,1fr); }
.readiness-check button { grid-column: 2; justify-self: start; }
.story-source-actions { justify-content: flex-start; }
.workspace__split, .conversation-layout, .story-layout { grid-template-columns: 1fr; }
.resource-list { display: flex; overflow-x: auto; gap: 0.4rem; }
.resource-list__title { display: none; }
.resource-button { min-width: 10rem; margin: 0; }
.section-columns, .device-grid { grid-template-columns: 1fr; }
.firmware-tools .tool-form, .firmware-columns, .firmware-assignment, .firmware-impact__metrics, .firmware-impact__devices article { grid-template-columns: 1fr; }
.firmware-event-timeline li { grid-template-columns: 1fr; gap: 0.2rem; }
.firmware-tools .tool-form__wide, .firmware-digest, .firmware-device-select { grid-column: auto; }
.firmware-detail__actions { align-items: stretch; flex-direction: column; }
.firmware-detail__actions label { margin-right: 0; }
.firmware-impact__devices > article > div:last-child { text-align: left; }
.recording-grant-form, .recording-segment { grid-template-columns: 1fr; }
.recording-grant-form > div { grid-column: 1 / -1; }
.recording-capabilities small { text-align: left; }
.conversation-list { border-right: 0; border-bottom: 1px solid #dfe8e4; }
.conversation-filter__fields { grid-template-columns: 1fr; }
.conversation-filter label:first-child { grid-column: auto; }
.story-sidebar { border-right: 0; border-bottom: 1px solid #dfe8e4; }
.privacy-toolbar { grid-template-columns: 1fr; align-items: stretch; }
.privacy-counts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.privacy-delete-confirmation { grid-template-columns: 1fr; }
.privacy-delete-confirmation__head, .privacy-delete-confirmation > p, .privacy-delete-confirmation__error, .privacy-delete-confirmation__actions { grid-column: auto; }
.ops-workspace { padding: 1.2rem; }
.ops-workspace__head { align-items: stretch; flex-direction: column; }
.ops-workspace__head label { min-width: 0; }
.ops-config-form, .ops-bundle-composer, .ops-version, .ops-gate-grid, .ops-rollout-panel, .ops-ledger-grid, .billing-summary-grid, .billing-form, .billing-ledger-grid, .alert-summary-grid, .alert-queue-layout, .alert-config-grid, .alert-ledger-grid, .diagnostic-search, .diagnostic-card dl, .integration-issue-form, .external-dependency-grid, .issue-summary-grid, .sensitive-access-request { grid-template-columns: 1fr; }
.sensitive-access-request__head, .sensitive-access-request > p, .sensitive-access-request > label:first-of-type, .sensitive-access-request__actions { grid-column: auto; }
.ops-config-form__intro, .ops-config-form__wide { grid-column: auto; }
.ops-rollout-panel > div, .ops-rollout-panel__reason, .ops-evidence-list { grid-column: auto; }
.ops-config-form button { justify-self: stretch; }
.ops-diff { grid-template-columns: 1fr; }
.ops-version__actions { justify-content: flex-start; }
.billing-form__intro, .billing-form__wide { grid-column: auto; }
.billing-form button { justify-self: stretch; }
.billing-rate-table > div, .billing-rate-table label { min-width: 38rem; }
.billing-policy-list li { align-items: flex-start; flex-direction: column; }
.conversation-usage { grid-template-columns: 1fr; }
.alert-queue { border-right: 0; border-bottom: 1px solid #e2e9e6; }
.alert-detail dl { grid-template-columns: 1fr; }
.alert-config-form { grid-template-columns: 1fr; }
.alert-config-form > div, .alert-config-form__wide { grid-column: auto; }
.alert-config-form button { justify-self: stretch; }
}
/* Customer portal: a separate family-facing shell. */
.customer-layout {
min-height: 100vh;
color: #1f2329;
background: #f5f6f8;
}
.customer-layout button:hover { transform: none; }
.customer-header {
position: sticky;
top: 0;
z-index: 100;
display: flex;
align-items: center;
justify-content: space-between;
2026-08-29 21:56:51 +08:00
height: 50px;
padding: 0 22px 0 14px;
border-bottom: 1px solid #e8eaee;
background: #fff;
box-shadow: 0 2px 8px rgba(31, 35, 41, 0.04);
}
.customer-header__brand,
.customer-header__actions,
.customer-account-button,
.customer-sider__title,
.customer-sider__help,
.customer-profile__identity {
display: flex;
align-items: center;
}
.customer-header__brand { gap: 10px; color: #646a73; white-space: nowrap; }
.customer-header__brand > strong { color: #1f2329; font-size: 18px; }
.customer-brand-mark {
display: grid;
place-items: center;
width: 30px;
height: 30px;
border-radius: 7px;
color: #fff;
background: #5b5ce2;
font-size: 17px;
}
.customer-brand-divider { width: 1px; height: 22px; margin: 0 5px; background: #e3e6eb; }
.customer-header__actions { gap: 10px; }
.customer-search { width: min(320px, 28vw); }
.customer-account-button { gap: 8px; height: 42px; padding: 0 8px; color: #3f444c; background: transparent; }
2026-08-29 21:56:51 +08:00
.customer-layout__body { min-height: calc(100vh - 50px); }
.customer-sider {
position: sticky !important;
2026-08-29 21:56:51 +08:00
top: 50px;
align-self: flex-start;
2026-08-29 21:56:51 +08:00
height: calc(100vh - 50px);
overflow: auto;
border-right: 1px solid #e8eaee;
background: #fff !important;
}
.customer-sider__title { gap: 10px; height: 58px; padding: 0 24px; color: #30343b; font-weight: 700; }
.customer-sider .ant-menu { border-inline-end: 0 !important; padding: 0 10px; background: transparent; }
.customer-sider .ant-menu-item,
.customer-sider .ant-menu-submenu-title { margin-block: 3px; font-size: 14px; }
.customer-sider__help {
gap: 10px;
margin: 22px 14px;
padding: 12px;
border: 1px solid #e8eaee;
border-radius: 8px;
color: #5b5ce2;
background: #f8f8ff;
}
.customer-sider__help div { display: grid; gap: 2px; }
.customer-sider__help strong { color: #3f444c; font-size: 12px; }
.customer-sider__help span { color: #8b9199; font-size: 10px; }
.customer-content { min-width: 0; background: #f5f6f8; }
.customer-page {
width: min(1440px, 100%);
margin: 0 auto;
padding: 22px 28px 48px;
}
.customer-page__header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 24px;
margin: 14px 0 18px;
}
.customer-page__header h1 { max-width: none; color: #1f2329; font-family: inherit; font-size: 26px; line-height: 1.35; }
.customer-page__header p { margin: 6px 0 0; color: #646a73; line-height: 1.6; }
.customer-auth-state { display: flex; justify-content: center; }
.customer-auth-state .ant-card-body { display: flex; align-items: center; gap: 12px; color: #646a73; }
.customer-page > .workspace {
margin-top: 0;
padding: 20px;
border: 1px solid #e3e6eb;
border-radius: 10px;
background: #fff;
box-shadow: none;
}
.customer-page .workspace__header { align-items: center; padding-bottom: 16px; border-bottom: 1px solid #eef0f3; }
.customer-page .workspace__header h2 { color: #1f2329; font-size: 18px; }
.customer-page .workspace__header > div:first-child > p:last-child { color: #7b818a; font-size: 13px; }
.customer-page .eyebrow { margin-bottom: 5px; color: #5b5ce2; font-size: 10px; letter-spacing: .13em; }
.customer-page .workspace__actions select { min-width: 160px; border-radius: 7px; }
.customer-page .workspace__summary { margin-top: 16px; }
.customer-page .metric { border: 1px solid #e8eaee; border-radius: 8px; background: #fafbfc; }
.customer-page .conversation-readiness,
.customer-page .conversation-readiness--ready,
.customer-page .conversation-readiness--blocked { border-radius: 8px; background: #fff; }
.customer-welcome-card {
display: flex;
align-items: center;
justify-content: space-between;
gap: 24px;
margin-top: 16px;
padding: 24px;
border: 1px solid #dedfff;
border-radius: 10px;
background: #f7f7ff;
}
.customer-welcome-card h3 { color: #22263d; font-size: 22px; }
.customer-welcome-card p:not(.eyebrow) { max-width: 650px; margin: 8px 0 0; color: #686e7b; line-height: 1.7; }
.customer-welcome-card > button { flex: none; border-radius: 7px; color: #fff; background: #5b5ce2; }
.customer-quick-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-top: 14px; }
.customer-quick-grid button {
display: grid;
gap: 6px;
min-width: 0;
padding: 16px;
border: 1px solid #e6e8ec;
border-radius: 8px;
color: #646a73;
background: #fff;
text-align: left;
}
.customer-quick-grid button:hover { border-color: #b8b9f5; background: #fafaff; }
.customer-quick-grid strong { color: #1f2329; font-size: 24px; }
.customer-quick-grid small { overflow: hidden; color: #8b9199; text-overflow: ellipsis; white-space: nowrap; }
.customer-action-list { display: grid; grid-template-columns: 1.2fr repeat(3, 1fr); gap: 12px; margin-top: 14px; }
.customer-action-list > div,
.customer-action-list > button { padding: 16px; border: 1px solid #e6e8ec; border-radius: 8px; background: #fff; text-align: left; }
.customer-action-list > div { border: 0; padding-left: 0; }
.customer-action-list > button { display: grid; gap: 6px; color: #1f2329; }
.customer-action-list > button span { color: #8b9199; font-size: 12px; font-weight: 400; line-height: 1.5; }
.customer-billing-panel,
.customer-message-panel { margin-top: 16px; }
.panel-title { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; margin-bottom: 14px; }
.panel-title h3 { color: #1f2329; font-size: 18px; }
.panel-title p:not(.eyebrow) { margin: 6px 0 0; color: #7b818a; }
.billing-total-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; margin: 14px 0; }
.billing-total-grid article { padding: 20px; border: 1px solid #e6e8ec; border-radius: 8px; background: #fafbfc; }
.billing-total-grid span,
.billing-total-grid small { display: block; color: #7b818a; }
.billing-total-grid strong { display: block; margin: 8px 0; color: #1f2329; font-size: 26px; }
.billing-category-list { border: 1px solid #e6e8ec; border-radius: 8px; overflow: hidden; }
.billing-category-list div { display: flex; justify-content: space-between; padding: 12px 16px; border-bottom: 1px solid #eef0f3; }
.billing-category-list div:last-child { border-bottom: 0; }
.quota-note { margin-top: 14px; padding: 16px; border-left: 3px solid #5b5ce2; background: #f7f7ff; }
.quota-note p { margin: 5px 0 0; color: #646a73; line-height: 1.65; }
.message-list,
.message-timeline { display: grid; gap: 8px; }
.message-item { display: flex; align-items: center; gap: 12px; padding: 13px 15px; border: 1px solid #e6e8ec; border-radius: 8px; background: #fff; }
.message-item > span { width: 8px; height: 8px; border-radius: 50%; background: #5b5ce2; }
.message-item--warning > span { background: #d98b12; }
.message-item strong { color: #30343b; }
.message-item p { margin: 3px 0 0; color: #8b9199; }
.message-timeline { margin-top: 18px; }
.message-timeline h4 { margin: 0 0 4px; }
.message-timeline article { display: grid; grid-template-columns: 150px 1fr; gap: 16px; padding: 12px 0; border-bottom: 1px solid #eef0f3; }
.message-timeline time,
.message-timeline p { color: #8b9199; }
.message-timeline p { margin: 3px 0 0; }
.customer-login-card { max-width: 560px; margin: 70px auto 0; text-align: center; }
.customer-login-card .ant-card-body { padding: 42px; }
.customer-login-icon { display: grid; place-items: center; width: 52px; height: 52px; margin: 0 auto 18px; border-radius: 12px; color: #5b5ce2; background: #eeeeff; font-size: 23px; }
.customer-login-notes { display: flex; justify-content: center; gap: 22px; margin-top: 24px; color: #7b818a; font-size: 12px; }
.customer-profile { display: grid; gap: 16px; }
.customer-profile__identity { gap: 18px; }
.customer-profile__identity > div { flex: 1; }
.customer-profile__identity h2,
.customer-profile__identity p { margin: 0; }
.customer-profile__identity p { margin-top: 4px; color: #8b9199; }
.customer-membership-list { margin-top: 18px; }
.customer-membership-list > div { padding: 12px 0; border-top: 1px solid #eef0f3; }
.customer-membership-list > div > div { display: flex; justify-content: space-between; }
.customer-membership-list small { color: #8b9199; }
@media (max-width: 1000px) {
.customer-search { display: none; }
.customer-quick-grid { grid-template-columns: repeat(2, 1fr); }
.customer-action-list { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
.customer-header { padding-inline: 8px; }
.customer-header__brand > strong,
.customer-header__brand > span:not(.customer-brand-mark),
.customer-account-button > span,
.customer-account-button > .anticon-down { display: none; }
.customer-sider { position: fixed !important; z-index: 90; }
.customer-content { margin-left: 72px; }
.customer-page { padding: 16px 12px 32px; }
.customer-page__header { flex-direction: column; gap: 8px; }
.customer-page > .workspace { padding: 14px; }
.customer-page .workspace__header,
.customer-welcome-card { align-items: flex-start; flex-direction: column; }
.customer-page .workspace__actions { align-items: stretch; flex-direction: column; width: 100%; }
.customer-quick-grid,
.billing-total-grid { grid-template-columns: 1fr; }
.message-timeline article { grid-template-columns: 1fr; gap: 4px; }
}
/* Ant Design enterprise console refresh */
:root {
color: #1f2329;
background: #f5f6f8;
--console-primary: #5b5ce2;
--console-primary-soft: #ebe9ff;
--console-text: #1f2329;
--console-muted: #646a73;
--console-border: #e3e6eb;
--console-fill: #f7f8fa;
--console-white: #fff;
}
html { background: #f5f6f8; }
body {
color: var(--console-text);
background: #f5f6f8;
}
button {
min-height: 34px;
border: 1px solid var(--console-primary);
border-radius: 8px;
padding: 0.42rem 0.9rem;
color: #fff;
background: var(--console-primary);
box-shadow: none;
font-size: 0.82rem;
transition: border-color 150ms ease, background 150ms ease, color 150ms ease;
}
button:hover {
transform: none;
border-color: #7979eb;
background: #6c6de8;
}
button:disabled { opacity: 0.55; }
.button-secondary {
border-color: #d8dbe2;
color: #3d424a;
background: #fff;
}
.app-layout { min-height: 100vh; }
2026-08-29 21:56:51 +08:00
.maintenance-layout { min-height: 100vh; background: #f5f6f8; }
.maintenance-header { position: fixed; inset: 0 0 auto; z-index: 110; display: flex; height: 60px; padding: 0 22px; align-items: center; justify-content: space-between; border-bottom: 1px solid #dfe3ea; background: #fff; line-height: normal; }
.maintenance-header__brand, .maintenance-header__actions { display: flex; align-items: center; gap: 11px; }
.maintenance-header__brand > strong { color: #172033; font-size: 16px; }
.maintenance-brand-mark { display: grid; width: 32px; height: 32px; place-items: center; border-radius: 8px; color: #fff; background: linear-gradient(135deg, #225fc9, #5434a5); }
.maintenance-brand-divider { width: 1px; height: 18px; background: #dfe3ea; }
.maintenance-search { width: min(320px, 25vw); }
.maintenance-account { display: flex; align-items: center; gap: 8px; }
.maintenance-layout__body { min-height: 100vh; padding-top: 60px; }
.maintenance-sider { position: sticky !important; top: 60px; height: calc(100vh - 60px); overflow: auto; border-right: 1px solid #dfe3ea; background: #f8f9fb !important; }
.maintenance-sider .ant-layout-sider-children { display: flex; min-height: 100%; flex-direction: column; }
.maintenance-sider__title { display: flex; height: 58px; padding: 0 20px; align-items: center; gap: 10px; color: #293249; font-weight: 650; white-space: nowrap; }
.maintenance-sider__title .anticon { color: #315ea8; font-size: 18px; }
.maintenance-sider .ant-menu { flex: 1; padding: 0 10px; border-inline-end: 0 !important; background: transparent; }
.maintenance-sider .ant-menu-item { height: 42px; margin-block: 4px; line-height: 42px; }
.maintenance-sider .ant-menu-item-selected { color: #244f94; background: #e7eefb; font-weight: 650; }
.maintenance-sider__meta { display: grid; gap: 3px; margin: 12px; padding: 12px; border: 1px solid #dfe3ea; border-radius: 8px; color: #737b8c; background: #fff; font-size: 11px; }
.maintenance-sider__meta strong { color: #293249; font-size: 12px; }
.maintenance-content { min-width: 0; background: #f5f6f8; }
.maintenance-page { width: 100%; padding: 18px 24px 40px; }
.maintenance-page > .ant-breadcrumb { margin-bottom: 10px; font-size: 12px; }
.maintenance-page__header { display: flex; margin-bottom: 16px; align-items: center; justify-content: space-between; }
.maintenance-page__header > div { display: flex; align-items: center; gap: 12px; }
.maintenance-page__header h1 { margin: 0; color: #172033; font-size: 24px; }
.maintenance-page__header p { margin: 4px 0 0; color: #697185; }
.maintenance-page__icon { display: grid; width: 38px; height: 38px; place-items: center; border-radius: 10px; color: #fff; background: #315ea8; font-size: 18px; }
.maintenance-auth-state { display: flex; align-items: center; gap: 10px; }
.maintenance-auth-state .ant-card-body { display: flex; align-items: center; gap: 10px; }
.maintenance-login { max-width: 640px; margin: 8vh auto; text-align: center; }
.maintenance-login > .ant-card-body > .anticon { color: #315ea8; font-size: 40px; }
.maintenance-login p { max-width: 520px; margin: 0 auto 24px; color: #697185; line-height: 1.8; }
.maintenance-workspace { width: 100%; }
.maintenance-status-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.maintenance-role-card { margin-top: 14px; }
.maintenance-role-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; }
.maintenance-role-list article { display: grid; gap: 5px; padding: 15px; border: 1px solid #e1e5ec; border-radius: 9px; background: #fafbfc; }
.maintenance-role-list article span { color: #315ea8; font-weight: 650; }
.maintenance-role-list article small { color: #7a8293; line-height: 1.55; }
.ops-device-workspace { display: grid; gap: 14px; }
.ops-device-toolbar > .ant-card-body { display: flex; align-items: center; justify-content: space-between; gap: 18px; }
.ops-device-toolbar > .ant-card-body > div:first-child { display: grid; gap: 4px; }
.ops-device-toolbar span, .ops-device-table-card small { color: #697185; }
.ops-device-table-card .ant-table-cell { vertical-align: middle; }
.ops-device-table-card .ant-typography code { white-space: nowrap; }
.quality-workspace { display: grid; gap: 14px; }
.quality-toolbar .ant-card-body { display: flex; align-items: center; justify-content: space-between; gap: 18px; }
.quality-toolbar .ant-card-body > div:first-child { display: grid; gap: 4px; }
.quality-toolbar strong { color: #202a3d; }
.quality-toolbar span { color: #737b8c; font-size: 12px; }
.quality-summary-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.quality-metric .ant-card-body { display: grid; gap: 6px; }
.quality-metric span { color: #697185; font-size: 12px; }
.quality-metric strong { color: #172033; font-size: 28px; line-height: 1.2; }
.quality-metric small { color: #8a91a0; }
.quality-state { display: grid; min-height: 180px; place-items: center; align-content: center; gap: 9px; color: #737b8c; text-align: center; }
.quality-state > .anticon { color: #315ea8; font-size: 34px; }
.quality-version-list { display: grid; gap: 12px; }
.quality-version-list > article { display: grid; gap: 14px; padding: 16px; border: 1px solid #e1e5ec; border-radius: 10px; background: #fafbfc; }
.quality-version-list header { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.quality-version-list header > div { display: grid; gap: 3px; }
.quality-version-list header strong { color: #202a3d; }
.quality-version-list header span { color: #737b8c; font-size: 12px; }
.quality-version-metrics { display: grid; grid-template-columns: repeat(6, minmax(90px, 1fr)); gap: 8px; }
.quality-version-metrics > span { display: grid; gap: 5px; padding: 10px; border-radius: 8px; color: #737b8c; background: #fff; font-size: 11px; }
.quality-version-metrics strong { color: #293249; font-size: 17px; }
.quality-error-types { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.quality-error-types small { margin-right: 4px; color: #737b8c; }
.quality-error-types > span:not(.ant-tag) { color: #9399a6; font-size: 12px; }
.device-binding-actions { display: flex; margin-top: 16px; padding: 15px 0 0; align-items: center; justify-content: space-between; gap: 16px; border-top: 1px solid var(--console-border); }
.device-binding-actions p { margin: 4px 0 0; color: var(--console-muted); font-size: 12px; }
.workspace-dialog-backdrop--nested { z-index: 230; }
.device-binding-impact { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; padding: 13px; border: 1px solid; border-radius: 9px; font-size: 12px; }
.device-binding-impact strong, .device-binding-impact p { grid-column: 1 / -1; }
.device-binding-impact p { margin: 0; line-height: 1.6; }
.device-binding-impact--allowed { border-color: #b9dfc9; color: #236941; background: #f3fbf6; }
.device-binding-impact--blocked { border-color: #efc4bd; color: #9c3327; background: #fff6f4; }
.privacy-consent-selection { display: grid; gap: 10px; padding: 14px; border: 1px solid var(--console-border); border-radius: 9px; }
.privacy-consent-selection label { display: flex !important; flex-direction: row !important; align-items: center; gap: 9px; }
.privacy-consent-selection input { width: 16px !important; height: 16px; }
@media (max-width: 900px) {
.maintenance-search, .maintenance-header__brand > span:not(.maintenance-brand-mark) { display: none; }
.maintenance-page { padding: 14px 14px 28px; }
.ops-device-toolbar > .ant-card-body { align-items: stretch; flex-direction: column; }
.maintenance-status-grid { grid-template-columns: 1fr; }
.quality-toolbar .ant-card-body { align-items: stretch; flex-direction: column; }
.quality-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.quality-version-metrics { grid-template-columns: repeat(2, minmax(90px, 1fr)); }
}
.app-header {
position: fixed;
inset: 0 0 auto;
z-index: 100;
display: flex;
height: 60px;
padding: 0 22px;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid var(--console-border);
line-height: normal;
box-shadow: 0 1px 5px rgba(31, 35, 41, 0.04);
}
.app-header__brand,
.app-header__tools {
display: flex;
align-items: center;
gap: 12px;
}
.app-header__brand > strong {
color: #15181d;
font-size: 16px;
white-space: nowrap;
}
.app-header__collapse.ant-btn {
width: 36px;
padding: 0;
color: #3d424a;
}
.brand-mark,
.page-icon {
display: grid;
place-items: center;
color: #fff;
background: linear-gradient(135deg, #1677ff, #6c4cff);
}
.brand-mark {
width: 32px;
height: 32px;
border-radius: 8px;
font-size: 17px;
}
.header-search { width: min(300px, 24vw); }
.header-user { max-width: 110px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.app-layout__body { min-height: 100vh; padding-top: 60px; }
.app-sider {
position: sticky !important;
top: 60px;
height: calc(100vh - 60px);
overflow: auto;
border-right: 1px solid var(--console-border);
}
.app-sider .ant-layout-sider-children {
display: flex;
min-height: 100%;
flex-direction: column;
}
.sider-product {
display: flex;
height: 58px;
padding: 0 20px;
align-items: center;
gap: 10px;
color: #252a31;
font-size: 14px;
font-weight: 600;
white-space: nowrap;
}
.sider-product .anticon { color: var(--console-primary); font-size: 18px; }
.app-sider .ant-menu { flex: 1; border-inline-end: 0 !important; padding: 0 10px; }
.app-sider .ant-menu-item { height: 42px; margin-block: 4px; line-height: 42px; }
.app-sider .ant-menu-item-group-title { padding: 12px 14px 4px; color: #8f959e; font-size: 12px; }
.app-sider .ant-menu-item-selected { font-weight: 600; }
.sider-meta {
display: grid;
gap: 3px;
margin: 12px;
padding: 12px;
border: 1px solid var(--console-border);
border-radius: 8px;
color: var(--console-muted);
background: #fff;
font-size: 11px;
}
.sider-meta strong { color: #363b43; font-size: 12px; }
.app-content { min-width: 0; background: #f5f6f8; }
.page-container {
width: 100%;
max-width: 1560px;
margin: 0 auto;
padding: 22px 28px 40px;
}
.page-breadcrumb { margin-bottom: 14px; color: #8f959e; font-size: 12px; }
.hero {
align-items: center;
gap: 24px;
margin: 0 0 20px;
padding: 4px 0 2px;
}
.hero h1 {
max-width: none;
color: #171a1f;
font-family: inherit;
font-size: 24px;
line-height: 1.4;
}
.page-icon {
width: 36px;
height: 36px;
border-radius: 10px;
font-size: 18px;
}
.hero__description {
max-width: 64rem;
margin: 8px 0 0 46px;
color: var(--console-muted);
font-size: 14px;
line-height: 1.65;
}
.eyebrow {
margin: 0 0 7px;
color: var(--console-primary);
font-size: 11px;
letter-spacing: 0.12em;
}
h1, h2, h3, h4 { color: var(--console-text); }
h2 { font-size: 20px; }
h3 { font-size: 16px; }
.status-grid {
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 14px;
margin-top: 16px;
}
.status-card {
min-height: 132px;
padding: 0;
border-color: var(--console-border);
border-radius: 10px;
background: #fff;
box-shadow: none;
}
.status-card .ant-card-body { padding: 18px 20px; }
.status-card__topline { color: #7b818a; font-size: 13px; }
.status-card strong { margin-top: 19px; color: #1f2329; font-size: 22px; line-height: 1.2; }
.status-card p { overflow: hidden; margin: 8px 0 0; color: #7b818a; font-size: 12px; line-height: 1.5; text-overflow: ellipsis; white-space: nowrap; }
.identity-panel,
.workspace-shell,
.milestone-panel,
.workspace,
.ops-workspace {
border: 1px solid var(--console-border);
border-radius: 10px;
background: #fff;
box-shadow: none;
}
.identity-panel {
grid-template-columns: minmax(260px, 0.75fr) minmax(360px, 1.5fr);
gap: 34px;
margin-top: 14px;
padding: 22px 24px;
}
.identity-panel__intro > p:last-child,
.identity-panel__state,
.identity-panel__login,
.identity-panel__login p {
color: var(--console-muted);
}
.identity-panel__intro h2 { font-size: 19px; }
.identity-panel__login strong { color: var(--console-text); font-size: 16px; }
.identity-panel__account-head span { color: #8a9099; }
.account-card {
padding: 12px 14px;
border: 1px solid var(--console-border);
border-radius: 8px;
background: var(--console-fill);
}
.account-card > strong { color: var(--console-text); }
.membership { border-color: var(--console-border); color: #535961; }
.workspace-shell {
margin-top: 14px;
padding: 0;
overflow: hidden;
}
.workspace-shell__heading {
align-items: center;
padding: 18px 22px;
border-bottom: 1px solid var(--console-border);
background: #fff;
}
.workspace-shell__heading h2 { font-size: 19px; }
.workspace-shell__heading > p { color: var(--console-muted); font-size: 12px; }
.workspace-shell__content { padding: 0; }
.workspace-shell__content > .workspace,
.workspace-shell__content > .ops-workspace { margin-top: 0; }
.workspace,
.ops-workspace {
margin-top: 0;
padding: 22px;
border: 0;
border-radius: 0;
}
.workspace__header,
.ops-workspace__head { align-items: center; }
.workspace__header > div:first-child > p:last-child,
.ops-workspace__head p { color: var(--console-muted); }
.workspace__tabs {
gap: 4px;
margin: 20px 0 16px;
padding: 4px;
border: 1px solid var(--console-border);
border-radius: 8px;
background: #f7f8fa;
}
.tab-button {
min-height: 32px;
border: 0;
border-radius: 6px;
padding: 6px 12px;
color: #5f656d;
background: transparent;
}
.tab-button:hover { color: var(--console-primary); background: #f0efff; }
.tab-button.active { color: var(--console-primary); background: #fff; box-shadow: 0 1px 4px rgba(31, 35, 41, 0.08); }
.workspace select,
.workspace input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
.workspace textarea,
.ops-workspace select,
.ops-workspace input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
.ops-workspace textarea {
min-height: 36px;
border: 1px solid #d8dbe2;
border-radius: 7px;
padding: 7px 10px;
color: #252a31;
background: #fff;
box-shadow: none;
}
.workspace input:focus,
.workspace select:focus,
.workspace textarea:focus,
.ops-workspace input:focus,
.ops-workspace select:focus,
.ops-workspace textarea:focus {
outline: none;
border-color: #7778e6;
box-shadow: 0 0 0 2px rgba(91, 92, 226, 0.12);
}
.workspace label,
.ops-workspace label,
.ops-config-form label,
.billing-form label,
.alert-config-form label,
.diagnostic-search label {
color: #5d636c;
font-size: 12px;
font-weight: 600;
}
.tool-form,
.subject-create-form,
.profile-editor,
.conversation-readiness,
.panel-section,
.ops-config-form,
.ops-gate-card,
.ops-rollout-panel,
.billing-form,
.conversation-usage,
.diagnostic-search,
.alert-config-form,
.privacy-delete-confirmation,
.firmware-recovery-form,
.firmware-impact {
border-color: var(--console-border);
border-radius: 8px;
background: var(--console-fill);
box-shadow: none;
}
.summary-card,
.device-card,
.diagnostic-card,
.billing-summary-grid article,
.alert-summary-grid article,
.ops-ledger,
.ops-version-group,
.billing-ledger,
.billing-policy-list,
.alert-ledger-grid > section,
.firmware-key-ledger,
.firmware-key-card,
.firmware-impact__metrics article,
.firmware-impact__devices article {
border-color: var(--console-border);
border-radius: 8px;
background: #fff;
box-shadow: none;
}
.workspace__split,
.conversation-layout,
.story-layout,
.alert-queue-layout,
.billing-rate-table {
border-color: var(--console-border);
border-radius: 8px;
}
.resource-list,
.conversation-list,
.story-sidebar,
.alert-queue,
.billing-rate-table > div,
.ops-ledger > div,
.ops-version-group > div:first-child,
.billing-ledger > div,
.billing-policy-list > div,
.alert-queue__toolbar,
.alert-ledger-grid section > div {
background: #f7f8fa;
}
.resource-button,
.conversation-row {
border-radius: 7px;
color: #50565e;
}
.resource-button:hover,
.conversation-row:hover { background: #eeeff2; }
.resource-button.active,
.conversation-row.active { color: var(--console-primary); background: #fff; box-shadow: 0 1px 4px rgba(31, 35, 41, 0.08); }
.ops-billing,
.ops-alerts,
.ops-diagnostics { background: #fff; }
.billing-summary-grid strong,
.alert-summary-grid strong,
.summary-card strong,
.diagnostic-card__head strong { color: var(--console-text); }
.status-pill,
.event-stream-status,
.alert-severity,
.alert-detail__title b {
border-radius: 5px;
}
.event-stream-status { color: #137a50; background: #e9f7f0; }
.event-stream-status--connecting,
.event-stream-status--reconnecting { color: #a86500; background: #fff5df; }
.workspace__inline-error { border: 1px solid #ffd6d2; border-radius: 7px; color: #b42318; background: #fff2f0; }
.workspace__action-message { border: 1px solid #cdebdc; border-radius: 7px; color: #137a50; background: #edf9f3; }
.workspace__readonly-note,
.ops-config-form__note { border-radius: 7px; color: #646a73; background: #f2f3f5; }
.alert-queue li.selected { box-shadow: inset 3px 0 var(--console-primary); background: #f4f3ff; }
.alert-timeline ol::before { background: #d8dbe2; }
.alert-timeline li::before { background: var(--console-primary); box-shadow: 0 0 0 1px #c8c9f6; }
.milestone-panel {
grid-template-columns: 300px 1fr;
gap: 30px;
margin-top: 14px;
padding: 20px 24px;
color: var(--console-text);
background: #fff;
}
.milestone-panel h2 { color: var(--console-text); font-size: 18px; }
.milestone-panel ol { gap: 10px; }
.milestone-panel li { color: #8b9199; font-size: 11px; }
.milestone-panel li span { margin-bottom: 7px; color: #a5abb3; font-size: 14px; font-weight: 700; }
.milestone-panel li.done,
.milestone-panel li.active { color: #4d535b; }
.milestone-panel li.done span { color: #1f9d68; }
.milestone-panel li.active span { color: var(--console-primary); }
@media (max-width: 1080px) {
.header-search { display: none; }
.identity-panel { grid-template-columns: 1fr; gap: 18px; }
.milestone-panel { grid-template-columns: 1fr; }
.milestone-panel ol { grid-template-columns: repeat(4, 1fr); }
}
@media (max-width: 760px) {
.app-header { padding: 0 10px; }
.app-header__brand > strong,
.app-header__brand .ant-tag,
.header-user,
.app-header__tools > .ant-badge { display: none; }
.app-sider { position: fixed !important; z-index: 80; }
.app-sider:not(.ant-layout-sider-collapsed) { box-shadow: 8px 0 24px rgba(31, 35, 41, 0.12); }
.app-content { margin-left: 72px; }
.page-container { padding: 16px 12px 28px; }
.hero { align-items: flex-start; gap: 14px; }
.hero__description { margin-left: 0; }
.status-grid { grid-template-columns: 1fr; }
.identity-panel { gap: 16px; padding: 18px; }
.workspace-shell__heading { align-items: flex-start; flex-direction: column; gap: 6px; }
.workspace-shell__heading > p { text-align: left; }
.workspace,
.ops-workspace { padding: 16px; }
.milestone-panel { padding: 18px; }
.milestone-panel ol { grid-template-columns: repeat(2, 1fr); }
}
2026-08-29 21:56:51 +08:00
/* Long-term care profile management: warm Kinship visual language. */
.workspace--subjects {
--subject-primary: #a73920;
--subject-primary-strong: #86220a;
--subject-coral: #f27052;
--subject-surface: #fbf9f8;
--subject-surface-low: #f5f3f3;
--subject-border: #ead8d3;
--subject-text: #1b1c1c;
--subject-muted: #715e59;
overflow: visible;
border-color: #eee1dd !important;
background: var(--subject-surface) !important;
}
.workspace--subjects .workspace__header { border-bottom-color: #eadfdb; }
.workspace--subjects .workspace__header h2 { color: var(--subject-text); font-size: 24px; }
.workspace--subjects .eyebrow { color: var(--subject-primary); }
.workspace--subjects .workspace__actions select,
.workspace--subjects .workspace__actions .button-secondary {
border-color: var(--subject-border);
background: #fff;
}
.subject-add-button,
.subject-create-modal footer button[type="submit"],
.subject-editor-actions button {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
color: #fff;
background: var(--subject-primary);
box-shadow: 0 8px 18px rgba(167, 57, 32, .18);
}
.subject-add-button:hover,
.subject-create-modal footer button[type="submit"]:hover,
.subject-editor-actions button:hover { background: var(--subject-primary-strong); }
.subject-management { display: flex; flex-direction: column; gap: 18px; margin-top: 18px; }
.subject-card-layout { order: 1; display: block; overflow: visible; border: 0; background: transparent; }
.subject-management-operations { order: 2; border: 1px solid var(--subject-border); border-radius: 14px; background: #fff; }
.subject-management-operations > summary {
display: flex;
align-items: center;
justify-content: space-between;
gap: 18px;
padding: 15px 18px;
color: var(--subject-text);
cursor: pointer;
list-style: none;
}
.subject-management-operations > summary::-webkit-details-marker { display: none; }
.subject-management-operations > summary span { font-weight: 700; }
.subject-management-operations > summary small { color: var(--subject-muted); font-size: 12px; font-weight: 400; }
.subject-management-operations[open] > summary { border-bottom: 1px solid #f0e5e2; }
.subject-management-operations__forms { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; padding: 16px; }
.subject-management-operations .tool-form { margin: 0; border-color: var(--subject-border); border-radius: 12px; background: var(--subject-surface); }
.subject-card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.subject-profile-card {
position: relative;
display: grid;
grid-template-columns: auto 1fr auto;
gap: 16px;
min-height: 260px;
padding: 24px;
overflow: hidden;
border: 1px solid #eadfdb;
border-radius: 14px;
color: var(--subject-text);
background: #fff;
box-shadow: 0 8px 24px rgba(80, 48, 39, .06);
text-align: left;
}
.subject-profile-card:hover,
.subject-profile-card.active { border-color: #dcb7ad; background: #fffdfc; box-shadow: 0 12px 28px rgba(111, 55, 39, .11); transform: translateY(-2px); }
.subject-profile-card__avatar {
display: inline-flex;
align-items: center;
justify-content: center;
width: 58px;
height: 58px;
border-radius: 50%;
color: #184b72;
background: #d4e3ff;
font-size: 25px;
}
.subject-profile-card__avatar--1 { color: #86220a; background: #ffdad2; }
.subject-profile-card__avatar--2 { color: #633f00; background: #ffddb3; }
.subject-profile-card__identity { display: grid; align-content: center; gap: 5px; min-width: 0; }
.subject-profile-card__identity strong { color: var(--subject-text); font-size: 19px; }
.subject-profile-card__identity small { overflow: hidden; color: var(--subject-muted); text-overflow: ellipsis; white-space: nowrap; }
.subject-profile-card__status {
align-self: start;
padding: 5px 9px;
border-radius: 6px;
color: #633f00;
background: #fff1d6;
font-size: 11px;
font-weight: 700;
}
.subject-profile-card__facts { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.subject-profile-card__facts > span { display: grid; gap: 5px; padding: 12px; border-radius: 9px; background: var(--subject-surface-low); }
.subject-profile-card__facts small { color: var(--subject-muted); font-size: 11px; }
.subject-profile-card__facts strong { color: var(--subject-text); font-size: 13px; }
.subject-profile-card__footer {
grid-column: 1 / -1;
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
padding-top: 16px;
border-top: 1px solid #eee4e1;
}
.subject-profile-card__footer small { color: var(--subject-primary); }
.subject-profile-card__footer > span { display: inline-flex; align-items: center; gap: 6px; color: var(--subject-primary); font-weight: 700; }
.subject-profile-card--add { display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 10px; border: 2px dashed #dcc2bb; box-shadow: none; text-align: center; }
.subject-profile-card--add > span { display: grid; place-items: center; width: 60px; height: 60px; border-radius: 50%; color: #86220a; background: var(--subject-coral); font-size: 25px; }
.subject-profile-card--add > strong { font-size: 19px; }
.subject-profile-card--add > small { color: var(--subject-muted); }
.subject-modal-backdrop {
position: fixed;
inset: 0;
z-index: 320;
display: grid;
place-items: center;
padding: 24px;
background: rgba(30, 24, 22, .42);
backdrop-filter: blur(5px);
}
.subject-create-modal,
.subject-detail-modal {
overflow: hidden;
border: 1px solid rgba(255,255,255,.7);
border-radius: 18px;
background: #fff;
box-shadow: 0 24px 60px rgba(45, 30, 26, .2);
}
.subject-create-modal { width: min(560px, 100%); max-height: calc(100vh - 48px); overflow-y: auto; }
.subject-create-modal > header,
.subject-detail-modal__header {
display: flex;
align-items: center;
gap: 18px;
padding: 20px 24px;
border-bottom: 1px solid #eee5e2;
background: #fff;
}
.subject-create-modal > header > div,
.subject-detail-modal__header > div:first-child { flex: 1; }
.subject-create-modal h3,
.subject-detail-modal h3 { color: var(--subject-text); font-size: 20px; }
.subject-create-modal header p,
.subject-detail-modal__header p { margin: 4px 0 0; color: var(--subject-muted); font-size: 12px; }
.subject-create-modal header button,
.subject-detail-modal__header > button { padding: 9px; color: #58423d; background: transparent; box-shadow: none; }
.subject-create-modal__body { display: grid; gap: 18px; padding: 24px; background: var(--subject-surface); }
2026-08-29 22:06:30 +08:00
.dialogue-presets { display: grid; gap: 10px; }
.dialogue-presets > div:first-child { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.dialogue-presets > div:first-child > strong { color: var(--subject-text); font-size: 13px; }
.dialogue-presets > div:first-child > small { color: var(--subject-muted); font-size: 11px; }
.dialogue-presets > div:last-child,
.dialogue-presets--editor { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.dialogue-presets button { display: grid; gap: 4px; min-height: 72px; padding: 12px; border: 1px solid #dfcfca; border-radius: 12px; color: var(--subject-text); text-align: left; background: #fff; box-shadow: none; }
.dialogue-presets button:hover:not(:disabled) { border-color: var(--subject-primary); background: #fff8f5; transform: translateY(-1px); }
.dialogue-presets button strong { font-size: 13px; }
.dialogue-presets button span { color: var(--subject-muted); font-size: 11px; font-weight: 400; line-height: 1.45; }
.dialogue-presets button:disabled { cursor: not-allowed; opacity: .58; }
.dialogue-presets--editor { margin-top: 12px; }
2026-08-29 21:56:51 +08:00
.subject-avatar-upload { display: grid; place-items: center; gap: 8px; width: 92px; height: 92px; margin: 0 auto 4px; border: 1px solid #e3d6d2; border-radius: 50%; color: #58423d; background: #f4f1f0; }
.subject-avatar-upload > svg { font-size: 28px; }
.subject-avatar-upload span { font-size: 11px; }
.subject-create-modal__row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.subject-field { display: grid; gap: 7px; color: var(--subject-text); font-size: 13px; font-weight: 700; }
.subject-field input,
.subject-field select,
.subject-field textarea {
width: 100%;
min-width: 0;
padding: 11px 13px;
border: 1px solid #dfc0b9;
border-radius: 9px;
outline: none;
color: var(--subject-text);
background: #fbf9f8;
font: inherit;
font-weight: 400;
}
.subject-field textarea { min-height: 96px; resize: vertical; }
.subject-field input:focus,
.subject-field select:focus,
.subject-field textarea:focus { border-color: var(--subject-primary); box-shadow: 0 0 0 3px rgba(167, 57, 32, .09); }
.subject-field input:disabled,
.subject-field select:disabled,
.subject-field textarea:disabled { color: #6f625f; background: #f1eeee; }
.subject-field small { color: var(--subject-muted); font-size: 11px; font-weight: 400; line-height: 1.55; }
.subject-create-modal > footer { display: flex; align-items: center; justify-content: flex-end; gap: 12px; padding: 16px 24px; border-top: 1px solid #eee5e2; }
.subject-create-modal > footer button { min-width: 110px; }
.subject-modal-cancel { color: #58423d; background: transparent; box-shadow: none; }
.subject-detail-modal { width: min(980px, 100%); max-height: calc(100vh - 48px); }
.subject-detail-modal__header { min-height: 80px; }
.subject-profile-completion { display: flex !important; align-items: center; gap: 8px; flex: none !important; padding: 7px 12px; border-radius: 999px; background: var(--subject-surface-low); }
.subject-profile-completion > span { display: grid; place-items: center; width: 40px; height: 40px; border: 3px solid var(--subject-primary); border-radius: 50%; color: var(--subject-primary); }
.subject-profile-completion strong { font-size: 10px; }
.subject-profile-completion small { color: var(--subject-muted); font-size: 11px; }
.subject-detail-modal__body { max-height: calc(100vh - 129px); overflow-y: auto; padding: 22px; background: var(--subject-surface); }
.subject-detail-summary { display: flex; align-items: center; gap: 14px; margin-bottom: 16px; padding: 14px 16px; border: 1px solid var(--subject-border); border-radius: 12px; background: #fff; }
.subject-detail-summary > div { display: grid; flex: 1; gap: 4px; }
.subject-detail-summary > div strong { color: var(--subject-text); font-size: 17px; }
.subject-detail-summary > div small { color: var(--subject-muted); }
.subject-profile-editor { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 0; padding: 0; border: 0; background: transparent; }
.subject-editor-card,
.subject-record-card { padding: 18px; border: 1px solid var(--subject-border); border-radius: 13px; background: #fff; box-shadow: 0 6px 18px rgba(80, 48, 39, .04); }
2026-08-29 22:06:30 +08:00
.subject-editor-card--presets,
2026-08-29 21:56:51 +08:00
.subject-editor-card--avoid,
.subject-editor-card--basics,
.subject-editor-actions { grid-column: 1 / -1; }
.subject-editor-card--avoid { border-color: #f0cbc3; }
.subject-section-heading { display: flex; align-items: center; gap: 11px; margin-bottom: 14px; }
.subject-section-heading > div { flex: 1; }
.subject-section-heading h4 { color: var(--subject-text); font-size: 17px; }
.subject-section-heading p { margin: 3px 0 0; color: var(--subject-muted); font-size: 11px; line-height: 1.5; }
.subject-section-heading > strong { color: var(--subject-primary); }
.subject-section-icon { display: grid; place-items: center; flex: none; width: 36px; height: 36px; border-radius: 50%; color: #003e73; background: #d4e3ff; font-size: 16px; }
.subject-section-icon--topic { color: #86220a; background: #ffdad2; }
.subject-section-icon--avoid { color: #93000a; background: #ffdad6; }
.subject-section-icon--clock { color: #633f00; background: #ffddb3; }
.subject-section-icon--safe { color: #004883; background: #d4e3ff; }
.subject-chip-list { display: flex; flex-wrap: wrap; gap: 7px; min-height: 31px; margin-bottom: 12px; }
.subject-chip-list > span { padding: 6px 10px; border: 1px solid #dfc0b9; border-radius: 999px; color: #58423d; background: #f1eeee; font-size: 11px; }
.subject-chip-list--avoid > span { border-radius: 7px; color: #7d2b22; background: #fff0ed; }
.subject-chip-list > small,
.subject-topic-list > small { align-self: center; color: #978783; }
.subject-topic-list { display: grid; gap: 7px; min-height: 31px; margin-bottom: 12px; }
.subject-topic-list > span { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border: 1px solid #ece1de; border-radius: 7px; color: #58423d; background: var(--subject-surface); font-size: 11px; }
.subject-topic-list svg { color: var(--subject-primary); }
.subject-basics-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.subject-field--wide { grid-column: 1 / -1; }
.subject-editor-actions { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 18px; border: 1px solid var(--subject-border); border-radius: 12px; background: #fff; }
.subject-editor-actions span { color: var(--subject-muted); font-size: 12px; }
.subject-editor-actions button { justify-self: auto; }
.subject-record-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 16px; }
.subject-data-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 0; border-top: 1px solid #eee5e2; }
.subject-data-row > div:first-child { min-width: 0; }
.subject-data-row strong { color: var(--subject-text); font-size: 12px; }
.subject-data-row p { margin: 4px 0 0; color: var(--subject-muted); font-size: 11px; line-height: 1.5; }
@media (max-width: 1050px) {
.subject-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.subject-management-operations__forms { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
.workspace--subjects .workspace__actions { width: 100%; }
.subject-card-grid,
.subject-profile-editor,
.subject-record-grid,
.subject-basics-grid,
.subject-create-modal__row { grid-template-columns: 1fr; }
2026-08-29 22:06:30 +08:00
.subject-editor-card--presets,
2026-08-29 21:56:51 +08:00
.subject-editor-card--avoid,
.subject-editor-card--basics,
.subject-editor-actions,
.subject-field--wide { grid-column: auto; }
2026-08-29 22:06:30 +08:00
.dialogue-presets > div:first-child { align-items: flex-start; flex-direction: column; }
.dialogue-presets > div:last-child,
.dialogue-presets--editor { grid-template-columns: 1fr; }
2026-08-29 21:56:51 +08:00
.subject-modal-backdrop { align-items: end; padding: 0; }
.subject-create-modal,
.subject-detail-modal { width: 100%; max-height: 94vh; border-radius: 18px 18px 0 0; }
.subject-detail-modal__header { align-items: flex-start; }
.subject-profile-completion small { display: none; }
.subject-detail-summary { align-items: flex-start; }
.subject-editor-actions { align-items: stretch; flex-direction: column; }
.subject-editor-actions button { width: 100%; }
.subject-management-operations > summary { align-items: flex-start; flex-direction: column; }
}
/* Follow-up: let elder management use the full work area and use direct tag editors. */
.customer-page--subjects {
width: 100%;
max-width: none;
}
.customer-page--subjects > .workspace { width: 100%; }
.customer-page--subjects .subject-card-grid { grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); }
.subject-tag-editor { display: grid; gap: 12px; }
.subject-tag-editor__chips { display: flex; flex-wrap: wrap; gap: 9px; min-height: 32px; }
.subject-tag-editor__chips > span {
display: inline-flex;
align-items: center;
gap: 7px;
min-height: 32px;
padding: 5px 9px 5px 12px;
border: 1px solid #dfc0b9;
border-radius: 999px;
color: #2f2927;
background: #f1eeee;
font-size: 12px;
}
.subject-tag-editor__chips > span strong { color: inherit; font-weight: 600; }
.subject-tag-editor__chips > span button {
display: inline-grid;
place-items: center;
width: 17px;
height: 17px;
padding: 0;
border-radius: 50%;
color: #fff;
background: #58423d;
box-shadow: none;
font-size: 9px;
}
.subject-tag-editor__chips > span button:hover { color: #fff; background: #93000a; transform: none; }
.subject-tag-editor__chips > small { align-self: center; color: #978783; }
.subject-tag-editor__input { position: relative; }
.subject-tag-editor__input input {
width: 100%;
height: 46px;
padding: 10px 48px 10px 14px;
border: 1px solid #dfc0b9;
border-radius: 9px;
outline: none;
color: #1b1c1c;
background: #fbf9f8;
font: inherit;
}
.subject-tag-editor__input input:focus { border-color: #a73920; box-shadow: 0 0 0 3px rgba(167, 57, 32, .09); }
.subject-tag-editor__input button {
position: absolute;
top: 50%;
right: 11px;
display: grid;
place-items: center;
width: 24px;
height: 24px;
padding: 0;
border-radius: 50%;
color: #fff;
background: #a73920;
box-shadow: none;
transform: translateY(-50%);
}
.subject-tag-editor__input button:hover { background: #86220a; transform: translateY(-50%); }
.subject-tag-editor__input button:disabled { background: #c9bbb7; }
.subject-tag-editor--topic .subject-tag-editor__chips > span { border-color: #e8c7c0; background: #fff3f0; }
.subject-tag-editor--avoid .subject-tag-editor__chips > span { border-color: #efc9c1; color: #7d2b22; background: #fff0ed; }
.subject-tag-editor__note { display: block; margin-top: 10px; color: #715e59; font-size: 11px; line-height: 1.55; }
@media (max-width: 720px) {
.customer-page--subjects { padding-inline: 12px; }
.customer-page--subjects .subject-card-grid { grid-template-columns: 1fr; }
}
/* Family center visual system: extend the elder-management language to every customer page. */
.customer-layout {
--family-primary: #a73920;
--family-primary-strong: #86220a;
--family-bg: #f5f2f1;
--family-surface: #fffdfc;
--family-surface-soft: #f8f5f4;
--family-border: #eadeda;
--family-border-strong: #ddc3bc;
--family-text: #211d1c;
--family-muted: #756762;
--family-success: #297454;
color: var(--family-text);
background: var(--family-bg);
}
.customer-header {
border-bottom-color: var(--family-border);
background: rgba(255, 253, 252, .96);
box-shadow: 0 4px 18px rgba(77, 48, 40, .04);
backdrop-filter: blur(14px);
}
.customer-header__brand > strong { color: var(--family-text); }
.customer-brand-mark { color: #fff; background: var(--family-primary); box-shadow: 0 6px 14px rgba(167, 57, 32, .2); }
.customer-brand-divider { background: var(--family-border); }
.customer-search .ant-input-affix-wrapper,
.customer-search .ant-input-group-addon .ant-btn { border-color: var(--family-border) !important; background: var(--family-surface-soft) !important; }
.customer-search .ant-input-affix-wrapper:focus-within { border-color: var(--family-primary) !important; box-shadow: 0 0 0 3px rgba(167, 57, 32, .08) !important; }
.customer-account-button .ant-avatar { color: var(--family-primary); background: #f8e6e1; }
.customer-sider { border-right-color: var(--family-border); background: #fffdfc !important; }
.customer-sider__title { color: var(--family-primary); }
.customer-sider .ant-menu-item-selected,
.customer-sider .ant-menu-submenu-selected > .ant-menu-submenu-title { color: var(--family-primary) !important; background: #f8e8e3 !important; }
.customer-sider .ant-menu-item:hover,
.customer-sider .ant-menu-submenu-title:hover { color: var(--family-primary) !important; background: #fbf2ef !important; }
.customer-sider__help { border-color: var(--family-border); background: var(--family-surface-soft); }
.customer-content {
width: auto;
margin: 0;
padding: 0;
background: var(--family-bg);
}
.customer-page,
.customer-page--subjects {
width: 100%;
max-width: none;
padding: 28px clamp(20px, 2.4vw, 42px) 48px;
}
.customer-page .ant-breadcrumb { color: #978984; font-size: 12px; }
.customer-page__header { margin: 14px 0 20px; }
.customer-page__header h1 { color: var(--family-text); font-size: clamp(24px, 2vw, 30px); letter-spacing: -.02em; }
.customer-page__header p { color: var(--family-muted); }
.customer-page__header .ant-tag { border: 0; border-radius: 999px; padding: 5px 11px; color: var(--family-success); background: #e9f5ee; }
.customer-page > .workspace,
.customer-page > .customer-profile,
.customer-page > .customer-auth-state { width: 100%; }
.customer-page > .workspace {
padding: clamp(18px, 2vw, 28px);
overflow: visible;
border: 1px solid var(--family-border) !important;
border-radius: 16px !important;
background: var(--family-surface) !important;
box-shadow: 0 12px 32px rgba(76, 46, 38, .05) !important;
}
.customer-page .workspace__header { align-items: flex-end; border-bottom-color: #efe5e2; }
.customer-page .workspace__header h2 { color: var(--family-text); font-size: 22px; }
.customer-page .workspace__header > div:first-child > p:last-child { color: var(--family-muted); }
.customer-page .eyebrow { color: var(--family-primary); letter-spacing: .16em; }
.customer-page .workspace__actions { align-items: flex-end; }
.customer-page .workspace__actions label > span { color: var(--family-muted); }
.customer-page button:not(.ant-btn),
.customer-layout .ant-btn-primary { border-radius: 9px; }
.customer-page button:not(.ant-btn):not(.button-secondary):not(.button-danger):not(.tab-button):not(.resource-button):not(.conversation-row):not(.story-button):not(.subject-profile-card):not(.story-candidate-card),
.customer-layout .ant-btn-primary {
border-color: var(--family-primary);
color: #fff;
background: var(--family-primary);
box-shadow: 0 6px 14px rgba(167, 57, 32, .14);
}
.customer-page .button-secondary { border-color: var(--family-border-strong); color: #614d47; background: #fff; box-shadow: none; }
.customer-page .button-secondary:hover { border-color: var(--family-primary); color: var(--family-primary); background: #fff9f7; }
.customer-page .button-danger { border-color: #d9a99e; color: #9b321e; background: #fff2ef; box-shadow: none; }
.customer-page .workspace select,
.customer-page .workspace input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
.customer-page .workspace textarea {
border-color: var(--family-border-strong);
border-radius: 9px;
color: var(--family-text);
background: #fff;
}
.customer-page .workspace input:focus,
.customer-page .workspace select:focus,
.customer-page .workspace textarea:focus { border-color: var(--family-primary); box-shadow: 0 0 0 3px rgba(167, 57, 32, .08); }
.customer-page .tool-form,
.customer-page .profile-editor,
.customer-page .conversation-readiness,
.customer-page .panel-section,
.customer-page .privacy-toolbar,
.customer-page .privacy-exports,
.customer-page .memory-management,
.customer-page .firmware-workspace,
.customer-page .customer-billing-panel,
.customer-page .customer-message-panel {
border-color: var(--family-border);
border-radius: 13px;
background: var(--family-surface-soft);
box-shadow: none;
}
.customer-page .tool-form { padding: 18px; }
.customer-page .tool-form > div:first-child strong,
.customer-page .section-title h4,
.customer-page .panel-title h3 { color: var(--family-text); }
.customer-page .tool-form > div:first-child span,
.customer-page .empty-copy { color: var(--family-muted); }
.customer-page .workspace__summary { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.customer-page .metric,
.customer-page .summary-card,
.customer-page .device-card,
.customer-page .privacy-card,
.customer-page .billing-total-grid article,
.customer-page .customer-quick-grid button,
.customer-page .customer-action-list > button,
.customer-page .member-columns > section,
.customer-page .subject-record-card {
border: 1px solid var(--family-border);
border-radius: 13px;
background: #fff;
box-shadow: 0 7px 20px rgba(76, 46, 38, .04);
}
.customer-page .metric strong,
.customer-page .summary-card strong,
.customer-page .billing-total-grid strong,
.customer-page .customer-quick-grid strong { color: var(--family-text); }
.customer-page .customer-welcome-card {
border: 1px solid #edcec5;
border-radius: 15px;
background: linear-gradient(120deg, #fff9f6 0%, #fffdfc 58%, #f8efea 100%);
box-shadow: 0 10px 26px rgba(118, 55, 37, .06);
}
.customer-page .customer-welcome-card h3 { color: var(--family-text); }
.customer-page .customer-welcome-card > button { background: var(--family-primary); box-shadow: 0 7px 16px rgba(167, 57, 32, .16); }
.customer-page .customer-quick-grid { gap: 14px; }
.customer-page .customer-quick-grid button:hover,
.customer-page .customer-action-list > button:hover { border-color: #d8afa5; background: #fffaf8; transform: translateY(-1px); }
.customer-page .customer-action-list > div { padding-left: 2px; }
.customer-page .accept-invitation,
.customer-page .household-create,
.customer-page .invitation-secret,
.customer-page .invitation-token,
.customer-page .quota-note { border-color: var(--family-border); border-radius: 12px; background: var(--family-surface-soft); }
.customer-page .member-columns { gap: 16px; }
.customer-page .member-columns > section { overflow: hidden; }
.customer-page .section-title { padding-bottom: 13px; border-bottom-color: #eee4e1; }
.customer-page .member-row,
.customer-page .data-row { border-bottom-color: #f0e7e4; }
.customer-page .device-grid { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 16px; }
.customer-page .device-card { padding: 18px; }
.customer-page .device-card__head { border-bottom-color: #eee5e2; }
.customer-page .device-volume { border-color: var(--family-border); border-radius: 10px; background: var(--family-surface-soft); }
.customer-page .device-volume input[type="range"] { accent-color: var(--family-primary); }
.customer-page .conversation-layout,
.customer-page .story-layout,
.customer-page .workspace__split {
border-color: var(--family-border);
border-radius: 14px;
background: #fff;
box-shadow: 0 8px 24px rgba(76, 46, 38, .04);
}
.customer-page .conversation-list,
.customer-page .story-sidebar,
.customer-page .resource-list { border-color: var(--family-border); background: var(--family-surface-soft); }
.customer-page .conversation-row,
.customer-page .resource-button,
.customer-page .story-button { color: #66534d; }
.customer-page .conversation-row:hover,
.customer-page .resource-button:hover,
.customer-page .story-button:hover { background: #f6ece9; }
.customer-page .conversation-row.active,
.customer-page .resource-button.active,
.customer-page .story-button.active { color: var(--family-primary); background: #fff; box-shadow: 0 4px 12px rgba(93, 50, 38, .08); }
.customer-page .conversation-detail,
.customer-page .story-detail,
.customer-page .resource-detail { background: #fff; }
.customer-page .content-block,
.customer-page .conversation-usage,
.customer-page .recording-notice,
.customer-page .memory-management__content { border-color: var(--family-border); border-radius: 11px; background: var(--family-surface-soft); }
.customer-page .privacy-layout { gap: 16px; }
.customer-page .privacy-grid { grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 14px; }
.customer-page .privacy-card { padding: 18px; }
.customer-page .privacy-counts .info,
.customer-page .detail-grid .info { border-radius: 9px; background: var(--family-surface-soft); }
.customer-page .billing-category-list,
.customer-page .billing-ledger,
.customer-page .billing-policy-list { border-color: var(--family-border); border-radius: 12px; }
.customer-page .billing-category-list div,
.customer-page .billing-ledger li,
.customer-page .billing-policy-list li { border-bottom-color: #f0e7e4; }
.customer-page .message-list { gap: 10px; }
.customer-page .message-item { border-color: var(--family-border); border-radius: 12px; box-shadow: 0 5px 14px rgba(76, 46, 38, .035); }
.customer-page .message-item > span { background: var(--family-primary); }
.customer-page .message-timeline article { border-bottom-color: #efe5e2; }
.customer-profile > .ant-card,
.customer-profile .ant-col > .ant-card,
.customer-login-card { border-color: var(--family-border); border-radius: 15px; background: var(--family-surface); box-shadow: 0 9px 25px rgba(76, 46, 38, .05); }
.customer-profile__identity .ant-avatar,
.customer-login-icon { color: var(--family-primary); background: #f8e6e1; }
.customer-profile .ant-tag { border: 0; border-radius: 999px; color: var(--family-primary); background: #f8e8e3; }
.customer-membership-list > div { border-top-color: #eee5e2; }
.customer-page .tag,
.customer-page .status,
.customer-page .permission,
.customer-page .event-stream-status { border-radius: 999px; }
.customer-page .event-stream-status { color: var(--family-success); background: #e9f5ee; }
.customer-page .workspace__action-message { border-color: #cce4d7; border-radius: 10px; color: var(--family-success); background: #eff8f3; }
.customer-page .workspace__inline-error { border-color: #efcbc3; border-radius: 10px; background: #fff3f0; }
.customer-page .workspace__readonly-note { border-radius: 10px; color: var(--family-muted); background: var(--family-surface-soft); }
/* Keep compact icon and cancel controls neutral inside the elder profile dialogs. */
.customer-page .subject-create-modal header button,
.customer-page .subject-detail-modal__header > button,
.customer-page .subject-modal-cancel {
border-color: transparent !important;
color: #58423d !important;
background: transparent !important;
box-shadow: none !important;
}
.customer-page .subject-tag-editor__chips > span button {
border: 0;
color: #fff;
background: #58423d;
box-shadow: none;
}
.customer-page .subject-tag-editor__chips > span button:hover { background: #93000a !important; }
.customer-page .subject-tag-editor__input button {
border: 0;
color: #fff;
background: var(--family-primary);
box-shadow: none;
}
.customer-page .subject-tag-editor__input button:hover { background: var(--family-primary-strong) !important; }
@media (max-width: 1180px) {
.customer-page .workspace__summary,
.customer-page .customer-quick-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.customer-page .customer-action-list { grid-template-columns: repeat(3, 1fr); }
.customer-page .customer-action-list > div { grid-column: 1 / -1; }
}
@media (max-width: 760px) {
.customer-page { padding: 20px 14px 36px; }
.customer-page__header { align-items: flex-start; }
.customer-page__header .ant-tag { display: none; }
.customer-page > .workspace { padding: 16px; border-radius: 13px !important; }
.customer-page .workspace__header { align-items: flex-start; }
.customer-page .workspace__actions { width: 100%; }
.customer-page .workspace__actions label,
.customer-page .workspace__actions select,
.customer-page .workspace__actions button { width: 100%; }
.customer-page .workspace__summary,
.customer-page .customer-quick-grid,
.customer-page .customer-action-list,
.customer-page .device-grid,
.customer-page .privacy-grid { grid-template-columns: 1fr; }
.customer-page .customer-action-list > div { grid-column: auto; }
.customer-page .customer-welcome-card { align-items: flex-start; flex-direction: column; }
.customer-page .customer-welcome-card > button { width: 100%; }
}
/* Browse-first information architecture: compact page chrome, fixed cards, modal operations. */
.customer-page { padding-top: 8px; }
.customer-page__header { margin: 6px 0 12px; }
.customer-page__header h1 { font-size: 25px; }
.customer-page__header p { margin-top: 3px; }
.customer-page > .workspace { padding-top: 16px; }
.customer-page .workspace__header { min-height: 42px; justify-content: flex-end; padding-bottom: 12px; }
.customer-page .workspace__header > div:first-child { display: none; }
.customer-page .workspace__actions { flex-wrap: wrap; justify-content: flex-end; }
.customer-page .customer-welcome-card { background: #fff9f6; }
.customer-page--subjects .subject-management { margin-top: 14px; }
.customer-page--subjects .subject-card-layout { min-height: 0; box-shadow: none; }
.customer-page--subjects .subject-card-grid {
grid-template-columns: repeat(auto-fill, minmax(320px, 370px));
justify-content: start;
gap: 16px;
}
.customer-page--subjects .subject-profile-card {
width: 100%;
min-height: 220px;
aspect-ratio: 1.62 / 1;
padding: 20px;
}
.customer-page--subjects .subject-profile-card--add { min-height: 220px; }
.subject-management-operations:not([open]) { display: none; }
.subject-management-operations[open] {
position: fixed;
top: 50%;
left: 50%;
z-index: 330;
width: min(980px, calc(100vw - 48px));
max-height: calc(100vh - 48px);
margin: 0;
overflow: auto;
background: #fffdfc;
box-shadow: 0 24px 70px rgba(45, 30, 26, .24);
transform: translate(-50%, -50%);
}
.subject-management-operations > summary button {
flex: none;
border: 0 !important;
color: #58423d !important;
background: transparent !important;
box-shadow: none !important;
}
.workspace-dialog-backdrop {
position: fixed;
inset: 0;
z-index: 360;
display: grid;
place-items: center;
padding: 24px;
background: rgba(35, 25, 22, .44);
backdrop-filter: blur(5px);
}
.workspace-dialog {
display: grid;
width: min(560px, 100%);
max-height: calc(100vh - 48px);
margin: 0;
overflow: auto;
border: 1px solid var(--family-border) !important;
border-radius: 18px !important;
background: #fffdfc !important;
box-shadow: 0 24px 70px rgba(45, 30, 26, .22) !important;
}
.workspace-dialog--wide { width: min(860px, 100%); }
.workspace-dialog > header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 18px;
padding: 20px 24px;
border-bottom: 1px solid #eee5e2;
}
.workspace-dialog > header h3 { margin: 0; color: var(--family-text); font-size: 20px; }
.workspace-dialog > header p { margin: 5px 0 0; color: var(--family-muted); font-size: 12px; line-height: 1.5; }
.workspace-dialog > header > button {
border: 0 !important;
padding: 8px !important;
color: #58423d !important;
background: transparent !important;
box-shadow: none !important;
}
.workspace-dialog__body { display: grid; gap: 16px; padding: 22px 24px; background: var(--family-surface-soft); }
.workspace-dialog__body label { display: grid; gap: 7px; }
.workspace-dialog__body small { color: var(--family-muted); font-size: 11px; line-height: 1.55; }
.workspace-dialog__grid { grid-template-columns: 1fr 1fr; }
.workspace-dialog__wide { grid-column: 1 / -1; }
.workspace-dialog > footer {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 10px;
padding: 15px 24px;
border-top: 1px solid #eee5e2;
}
.workspace-dialog > footer button { min-width: 100px; }
.family-controlled-operation.workspace-dialog { padding: 22px; }
.privacy-delete-confirmation.workspace-dialog { padding: 22px; }
.customer-page--members .customer-page__header,
.customer-page--members .workspace__header { display: none; }
.customer-page--members > .workspace { padding-top: 0; }
.family-overview { display: grid; gap: 24px; width: 100%; max-width: none; margin: 0; }
.family-overview__head {
display: flex;
align-items: flex-end;
justify-content: space-between;
gap: 20px;
padding: 2px 0 12px;
border-bottom: 1px solid #e9e8e7;
}
.family-overview__identity { display: grid; gap: 4px; min-width: 0; }
.family-overview__head small { color: #58423d; font-size: 11px; letter-spacing: .06em; }
.family-overview__head p { margin: 0; color: var(--family-muted); font-size: 12px; }
.family-overview__title-row { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.family-switcher { position: relative; display: inline-flex; align-items: center; }
.family-switcher select {
width: auto;
max-width: min(440px, 58vw);
height: 46px;
padding: 0 34px 0 0;
border: 0;
color: #1b1c1c;
background: transparent;
font-size: 30px;
font-weight: 700;
line-height: 40px;
appearance: none;
cursor: pointer;
}
.family-switcher select:focus { outline: 2px solid rgba(0, 96, 172, .24); outline-offset: 3px; }
.family-switcher > svg { position: absolute; right: 7px; color: #58423d; pointer-events: none; }
.family-icon-button {
display: grid !important;
place-items: center;
width: 36px;
height: 36px;
padding: 0 !important;
border: 0 !important;
border-radius: 50% !important;
color: #0060ac !important;
background: #d4e3ff !important;
box-shadow: none !important;
}
.family-icon-button--delete { color: #8b716b !important; background: transparent !important; }
.family-icon-button:disabled { opacity: .45; cursor: not-allowed; }
.family-add-button { margin-left: 8px; border-radius: 999px !important; padding-inline: 18px !important; }
.family-accept-button { border-radius: 999px !important; }
.family-overview__layout { display: grid; grid-template-columns: minmax(0, 1fr) clamp(320px, 24vw, 440px); gap: 24px; align-items: start; }
.family-members-panel { min-width: 0; }
.family-members-panel .section-title { min-height: 28px; }
.family-member-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 16px; margin-top: 12px; }
.family-member-card {
display: grid;
grid-template-columns: auto 1fr auto;
align-items: center;
gap: 16px;
min-height: 112px;
padding: 24px;
border: 1px solid transparent;
border-radius: 12px;
background: #fff;
box-shadow: 0 4px 12px rgba(76, 46, 38, .035);
}
.family-member-card--owner { border-color: #f1c0b5; }
.family-member-card__avatar {
position: relative;
display: grid;
place-items: center;
width: 62px;
height: 62px;
border: 2px solid #efc1b7;
border-radius: 50%;
color: var(--family-primary);
background: #fff7f4;
font-size: 24px;
}
.family-member-card__avatar > small { position: absolute; right: -4px; bottom: -3px; display: grid; place-items: center; width: 23px; height: 23px; border: 2px solid #fff; border-radius: 50%; color: #fff; background: var(--family-primary); font-size: 11px; }
.family-member-card__content { display: grid; gap: 7px; }
.family-member-card__content > strong { color: var(--family-text); font-size: 16px; }
.family-role { justify-self: start; padding: 3px 9px; border-radius: 999px; color: #004883; background: #d4e3ff; font-size: 10px; }
.family-role--owner { color: #86220a; background: #ffdad2; }
.family-member-menu { position: relative; }
.family-member-menu summary { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; color: #58423d; cursor: pointer; list-style: none; }
.family-member-menu summary::-webkit-details-marker { display: none; }
.family-member-menu summary:hover { color: var(--family-primary); background: #f5f3f3; }
.family-member-menu > div { position: absolute; top: 40px; right: 0; z-index: 12; display: grid; min-width: 138px; padding: 6px; border: 1px solid #e9e8e7; border-radius: 10px; background: #fff; box-shadow: 0 12px 28px rgba(45, 30, 26, .14); }
.family-member-menu button { padding: 8px 10px !important; border: 0 !important; color: #1b1c1c !important; background: transparent !important; box-shadow: none !important; text-align: left; }
.family-member-menu button:hover { background: #f5f3f3 !important; }
.family-member-menu button.danger { color: #ba1a1a !important; }
.family-member-card--invite {
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
border: 2px dashed #dfc0b9;
color: var(--family-text) !important;
background: #f5f3f3 !important;
box-shadow: none !important;
}
.family-member-card--invite:hover { border-color: var(--family-primary); background: #fff7f4 !important; }
.family-member-card--invite > span { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; color: #58423d; background: #e4e2e2; font-size: 20px; }
.family-overview__aside { display: grid; gap: 20px; }
.family-home-card,
.family-activity-card { overflow: hidden; border: 0; border-radius: 12px; background: #fff; box-shadow: 0 4px 12px rgba(76, 46, 38, .04); }
.family-home-card__image { min-height: 132px; padding: 16px; background-image: url('https://lh3.googleusercontent.com/aida-public/AB6AXuAeacxv6Wc3RqAtRr34IaICDCv7_my_KoRCmeOOsMy71ApDJkqhwBxBQ2HFtLsbPlQtHZfUT6s9dcYmKXRkn_OGdA8-FjlXwEWb75wml_FNpscxeiBv3-_DEmjCgSIc5glFN6Wqks-NUbyAqk12fNcUaFVgr9TgAJl-dhBnkCy4hke2Fm6ANwIhZrao6v_RHAHb0SPvK7NOlH012NliOSMrFcxjwAudqaMrCPNcTCu2a9_ZtPbNKtFBjA'); background-position: center; background-size: cover; }
.family-home-card__image > div { display: flex; align-items: flex-end; gap: 8px; min-height: 100px; margin: -16px; padding: 16px; color: #fff; background: rgba(30, 24, 21, .48); }
.family-home-card__image span { display: grid; gap: 2px; }
.family-home-card__image strong { font-size: 18px; }
.family-home-card__image small { color: rgba(255,255,255,.82); }
.family-home-card footer { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; }
.family-home-card footer span { padding: 4px 10px; border-radius: 6px; color: #633f00; background: #ffddb3; font-size: 10px; }
.family-home-card footer button { padding: 4px !important; border: 0 !important; color: var(--family-primary) !important; background: transparent !important; box-shadow: none !important; font-size: 11px; }
.family-activity-card { padding: 20px; }
.family-activity-card article { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; padding: 11px 0; border-bottom: 1px solid #f0e7e4; }
.family-activity-card article:last-child { border-bottom: 0; }
.family-activity-card article > svg { padding: 8px; border-radius: 50%; color: #004883; background: #d4e3ff; font-size: 32px; }
.family-activity-card article strong { color: var(--family-text); font-size: 12px; }
.family-activity-card article p { margin: 3px 0 0; color: var(--family-muted); font-size: 10px; }
.family-activity-card__more { width: 100%; margin-top: 8px; padding: 8px !important; border: 0 !important; color: var(--family-primary) !important; background: transparent !important; box-shadow: none !important; }
.subject-list-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 14px 16px; border: 1px solid var(--family-border); border-radius: 12px; background: #fff; }
.subject-list-toolbar > div { display: grid; gap: 3px; }
.subject-list-toolbar span { color: var(--family-muted); font-size: 11px; }
.customer-page--conversations .conversation-layout,
.customer-page--stories .story-layout { display: block; min-height: 0; overflow: visible; border: 0; background: transparent; box-shadow: none; }
.customer-page--conversations .conversation-list,
.customer-page--stories .story-sidebar { border: 0; border-radius: 13px; background: #fff; box-shadow: 0 7px 20px rgba(76, 46, 38, .04); }
.customer-page--conversations .conversation-filter { border: 1px solid var(--family-border); border-radius: 13px 13px 0 0; background: var(--family-surface-soft); }
.customer-page--conversations .conversation-row { margin: 8px 12px; border: 1px solid var(--family-border); border-radius: 10px; background: #fff; }
.customer-page--conversations .conversation-row.active { border-color: #d7aea4; }
.customer-page--conversations .conversation-detail.workspace-dialog,
.customer-page--stories .story-detail.workspace-dialog { padding: 0; }
.customer-page--conversations .conversation-detail .workspace-dialog__body,
.customer-page--stories .story-detail .workspace-dialog__body { overflow-y: auto; }
.customer-page--stories .story-sidebar { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; padding: 16px; }
.customer-page--stories .story-sidebar > label,
.customer-page--stories .story-sidebar > .section-title,
.customer-page--stories .story-sidebar > .memory-search { grid-column: 1 / -1; }
.customer-page--stories .story-button,
.customer-page--stories .memory-row { min-width: 0; border: 1px solid var(--family-border); border-radius: 11px; background: #fff; }
.customer-page--stories .story-button { min-height: 78px; }
.customer-page--stories .memory-row { padding: 10px; }
.device-card__manage { width: 100%; margin-top: 12px; }
/* Device management reference layout. */
.device-list-panel {
display: grid;
gap: 20px;
padding: clamp(18px, 2vw, 24px);
border: 1px solid var(--family-border);
border-radius: 14px;
background: #fffdfc;
box-shadow: 0 6px 20px rgba(76, 46, 38, .04);
}
.device-list-panel__heading { display: flex; align-items: end; justify-content: space-between; gap: 20px; padding-bottom: 14px; border-bottom: 1px solid #e9e8e7; }
.device-list-panel__heading > div { display: flex; align-items: center; gap: 9px; }
.device-list-panel__heading strong { color: var(--family-text); font-size: 17px; }
.device-list-panel__heading span { padding: 3px 8px; border-radius: 999px; color: #58423d; background: #e9e8e7; font-size: 10px; }
.device-list-panel__heading p { margin: 0; color: var(--family-muted); font-size: 11px; }
.customer-page--devices .device-grid { display: grid; grid-template-columns: 1fr; gap: 16px; }
.customer-page--devices .device-card {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
min-height: 188px;
padding: 0;
overflow: hidden;
border: 1px solid #e4e2e2;
border-radius: 12px;
background: #f5f3f3;
}
.customer-page--devices .device-card--online { border-color: #cfe1d7; }
.device-card__main { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 18px; padding: 22px; }
.device-card__identity { display: flex; align-items: center; gap: 15px; min-width: 0; }
.device-card__icon { position: relative; display: grid; place-items: center; flex: 0 0 auto; width: 52px; height: 52px; border-radius: 50%; color: #58423d; background: #e4e2e2; font-size: 23px; }
.device-card--online .device-card__icon { color: var(--family-success); background: #e9f5ee; }
.device-card__icon > small { position: absolute; right: -2px; bottom: -2px; display: grid; place-items: center; width: 20px; height: 20px; border: 2px solid #f5f3f3; border-radius: 50%; color: #58423d; background: #e4e2e2; font-size: 10px; }
.device-card__icon > small > span { width: 8px; height: 8px; border-radius: 50%; background: var(--family-success); }
.device-card__identity h3 { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 0; color: var(--family-text); font-size: 17px; }
.device-card__identity h3 span { padding: 3px 8px; border-radius: 999px; color: #004883; background: #d4e3ff; font-size: 10px; font-weight: 500; }
.device-card__identity p { display: flex; align-items: center; gap: 5px; margin: 6px 0 0; color: var(--family-muted); font-size: 11px; }
.device-card__main > .permission { align-self: start; display: inline-flex; align-items: center; gap: 5px; }
.device-card__facts { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.device-card__facts > div { display: grid; gap: 7px; padding: 14px; border: 1px solid #e9e8e7; border-radius: 9px; background: #fff; }
.device-card__facts small { color: var(--family-muted); font-size: 10px; }
.device-card__facts strong { display: flex; align-items: center; gap: 9px; color: var(--family-text); font-size: 13px; }
.device-card__facts .presence-dot { width: 8px; height: 8px; box-shadow: none; }
.device-card__side { display: grid; align-items: center; padding: 22px; border-left: 1px solid #e4e2e2; background: #fffdfc; }
.device-card__side .device-card__manage { display: inline-flex; align-items: center; justify-content: center; gap: 7px; width: auto; min-width: 150px; margin: 0; }
.device-list-empty { display: grid; place-items: center; min-height: 220px; padding: 32px; border: 2px dashed #dfc0b9; border-radius: 12px; text-align: center; background: #fbf9f8; }
.device-list-empty > span,
.story-board-empty > span { display: grid; place-items: center; width: 64px; height: 64px; border-radius: 50%; color: #58423d; background: #e9e8e7; font-size: 28px; }
.device-list-empty h3,
.story-board-empty h3 { margin: 12px 0 5px; color: var(--family-text); font-size: 17px; }
.device-list-empty p,
.story-board-empty p { max-width: 420px; margin: 0; color: var(--family-muted); font-size: 12px; line-height: 1.6; }
/* Story and curated-memory reference layout. */
.customer-page--stories .customer-page__header { padding-bottom: 16px; border-bottom: 1px solid #e4e2e2; }
.customer-page--stories > .workspace {
padding: 0;
border: 0 !important;
border-radius: 0 !important;
background: transparent !important;
box-shadow: none !important;
}
.customer-page--stories .workspace__header {
min-height: 64px;
padding: 12px 16px;
border: 1px solid #e9e8e7;
border-radius: 12px;
background: #fff;
box-shadow: 0 4px 12px rgba(76, 46, 38, .035);
}
.customer-page--stories .workspace__actions { width: 100%; }
.customer-page--stories .workspace-story-subject { width: min(420px, 40%); margin-right: auto; }
.customer-page--stories .workspace-story-subject select { width: 100%; }
.customer-page--stories .story-board {
display: grid;
grid-template-columns: minmax(0, 1fr);
gap: 24px;
min-height: 0;
margin-top: 20px;
overflow: visible;
border: 0;
background: transparent;
}
.story-candidates,
.confirmed-memories { display: grid; gap: 14px; }
.story-board__section-title { display: flex; align-items: end; justify-content: space-between; }
.story-board__section-title h3 { display: flex; align-items: center; gap: 8px; margin: 0; color: var(--family-text); font-size: 18px; }
.story-board__section-title h3 > span { padding: 3px 8px; border-radius: 999px; color: #58423d; background: #e4e2e2; font-size: 10px; }
.story-board__section-title h3 > small { color: var(--family-muted); font-size: 12px; font-weight: 400; }
.story-board__section-title--bordered { padding-bottom: 8px; border-bottom: 1px solid #e4e2e2; }
.story-candidate-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.customer-page--stories .story-candidate-card {
display: flex;
align-items: flex-start;
justify-content: space-between;
flex-direction: column;
min-height: 192px;
padding: 24px;
border: 1px solid #e4e2e2;
border-radius: 12px;
color: var(--family-text);
background: #fff;
box-shadow: 0 4px 12px rgba(76, 46, 38, .035);
text-align: left;
}
.customer-page--stories .story-candidate-card:hover,
.customer-page--stories .story-candidate-card.active { border-color: #d6a69b; background: #fffaf8; box-shadow: 0 12px 24px rgba(76, 46, 38, .08); }
.story-candidate-card__status { display: inline-flex; align-items: center; gap: 5px; color: #825500; font-size: 11px; }
.story-candidate-card > strong { display: -webkit-box; overflow: hidden; margin: 10px 0; color: var(--family-text); font-size: 14px; font-weight: 400; line-height: 1.65; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
.story-candidate-card > small { display: inline-flex; align-items: center; gap: 4px; color: var(--family-muted); font-size: 10px; }
.memory-search-field { position: relative; display: block; }
.memory-search-field > svg { position: absolute; top: 50%; left: 14px; z-index: 1; color: #58423d; transform: translateY(-50%); }
.memory-search-field input { width: 100%; padding-left: 42px !important; border-radius: 12px !important; }
.confirmed-memory-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 14px; }
.confirmed-memory-card { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 16px; border: 1px solid #e4e2e2; border-radius: 11px; background: #fff; }
.confirmed-memory-card.selected { border-color: #d6a69b; background: #fffaf8; }
.confirmed-memory-card > button:first-child { min-width: 0; padding: 0 !important; border: 0 !important; color: inherit !important; background: transparent !important; box-shadow: none !important; text-align: left; }
.confirmed-memory-card strong { display: -webkit-box; overflow: hidden; color: var(--family-text); font-size: 13px; line-height: 1.55; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.confirmed-memory-card span { display: block; margin-top: 6px; color: var(--family-muted); font-size: 10px; }
.story-board-empty { grid-column: 1 / -1; display: grid; place-items: center; min-height: 200px; padding: 32px; border: 1px dashed #dfc0b9; border-radius: 12px; background: #fff; text-align: center; }
.story-board-empty--compact { min-height: 192px; }
.story-review-fields { display: grid; grid-template-columns: minmax(0, 2fr) minmax(220px, 1fr); gap: 12px; }
.story-review-fields > label { display: grid; gap: 6px; }
.story-review-fields > label > span { color: var(--family-muted); font-size: 11px; }
@media (max-width: 1000px) {
.family-overview__layout { grid-template-columns: 1fr; }
.family-overview__aside { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 720px) {
.customer-page { padding-top: 6px; }
.customer-page .workspace__header { align-items: stretch; }
.customer-page .workspace__actions { justify-content: stretch; }
.customer-page--subjects .subject-card-grid,
.family-member-grid,
.family-overview__aside,
.workspace-dialog__grid { grid-template-columns: 1fr; }
.customer-page--subjects .subject-profile-card { aspect-ratio: auto; }
.workspace-dialog-backdrop { align-items: end; padding: 0; }
.workspace-dialog { width: 100%; max-height: 94vh; border-radius: 18px 18px 0 0 !important; }
.family-overview__head { align-items: stretch; flex-direction: column; }
.family-overview__title-row { align-items: center; }
.family-switcher { width: 100%; }
.family-switcher select { width: 100%; max-width: none; font-size: 24px; }
.family-add-button { width: 100%; margin: 6px 0 0; }
.family-accept-button { width: 100%; }
.family-member-card { min-height: 104px; padding: 18px; }
.device-list-panel__heading { align-items: flex-start; flex-direction: column; }
.customer-page--devices .device-card { grid-template-columns: 1fr; }
.device-card__main { grid-template-columns: 1fr; padding: 18px; }
.device-card__main > .permission { justify-self: start; }
.device-card__facts { grid-column: auto; grid-template-columns: 1fr; }
.device-card__side { padding: 14px 18px 18px; border-top: 1px solid #e4e2e2; border-left: 0; }
.device-card__side .device-card__manage { width: 100%; }
.customer-page--stories .workspace-story-subject { width: 100%; margin-right: 0; }
.story-candidate-grid,
.confirmed-memory-grid { grid-template-columns: 1fr; }
.story-review-fields { grid-template-columns: 1fr; }
}
@media (min-width: 721px) and (max-width: 1180px) {
.story-candidate-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
/* Apple-inspired gallery system: shared across the family and maintenance surfaces. */
:root {
--apple-blue: #0066cc;
--apple-blue-focus: #0071e3;
--apple-blue-dark: #2997ff;
--apple-ink: #1d1d1f;
--apple-muted: #7a7a7a;
--apple-canvas: #fff;
--apple-parchment: #f5f5f7;
--apple-pearl: #fafafc;
--apple-hairline: #e0e0e0;
--apple-divider: #f0f0f0;
--apple-dark: #272729;
--apple-black: #000;
--family-primary: var(--apple-blue);
--family-primary-strong: var(--apple-blue-focus);
--family-text: var(--apple-ink);
--family-muted: var(--apple-muted);
--family-border: var(--apple-hairline);
--family-border-strong: #c7c7cc;
--family-surface: var(--apple-canvas);
--family-surface-soft: var(--apple-parchment);
font-family: "SF Pro Text", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
color: var(--apple-ink);
background: var(--apple-parchment);
}
html { background: var(--apple-parchment); }
body {
color: var(--apple-ink);
background: var(--apple-parchment);
font-family: inherit;
font-size: 17px;
line-height: 1.47;
letter-spacing: -.022em;
}
button,
input,
select,
textarea { font-family: inherit; }
h1, h2, h3, h4,
.ant-typography h1,
.ant-typography h2,
.ant-typography h3,
.ant-typography h4 {
color: var(--apple-ink);
font-family: "SF Pro Display", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
font-weight: 600;
letter-spacing: -.01em;
}
a { color: var(--apple-blue); }
a:hover { color: var(--apple-blue-focus); }
:where(button, a, input, select, textarea, [tabindex]):focus-visible {
outline: 2px solid var(--apple-blue-focus);
outline-offset: 3px;
}
/* The global bar is the sole black chrome surface. */
.customer-header,
.maintenance-header,
.app-header {
height: 44px;
padding-inline: 22px;
border: 0;
color: #fff;
background: var(--apple-black) !important;
box-shadow: none;
}
.customer-header__brand,
.maintenance-header__brand,
.app-header__brand,
.customer-header__brand > strong,
.maintenance-header__brand > strong,
.app-header__brand > strong { color: #fff; }
.customer-header .ant-btn,
.maintenance-header .ant-btn,
.app-header .ant-btn { color: #fff; }
.customer-header .ant-btn:hover,
.maintenance-header .ant-btn:hover,
.app-header .ant-btn:hover { color: var(--apple-blue-dark) !important; background: rgba(255,255,255,.08) !important; }
.customer-header .ant-avatar,
.maintenance-header .ant-avatar,
.app-header .ant-avatar { color: #fff; background: #333336; }
.customer-brand-mark,
.maintenance-brand-mark,
.app-brand-mark { width: 28px; height: 28px; border-radius: 50%; color: #fff; background: transparent !important; box-shadow: none; }
.customer-brand-divider,
.maintenance-brand-divider,
.app-brand-divider { background: #424245; }
.customer-header .ant-tag,
.maintenance-header .ant-tag,
.app-header .ant-tag { border: 0; color: #fff; background: #333336; }
.customer-search .ant-input-affix-wrapper,
.customer-search .ant-input-group-addon .ant-btn,
.maintenance-search.ant-input-affix-wrapper,
.app-search.ant-input-affix-wrapper {
height: 32px;
border: 0 !important;
color: #fff;
background: #272729 !important;
box-shadow: none !important;
}
.customer-search input,
.maintenance-search input,
.app-search input { color: #fff !important; background: transparent !important; }
.customer-search input::placeholder,
.maintenance-search input::placeholder,
.app-search input::placeholder { color: #a1a1a6 !important; }
.customer-layout__body,
.maintenance-layout__body,
.app-layout__body { padding-top: 44px; background: var(--apple-parchment); }
.customer-sider,
.maintenance-sider,
.app-sider { top: 44px; height: calc(100vh - 44px); border-right: 1px solid var(--apple-hairline); background: var(--apple-parchment) !important; }
.customer-content,
.maintenance-content,
.app-content { background: var(--apple-parchment) !important; }
.customer-sider__title,
.maintenance-sider__title,
.app-sider__title { height: 52px; color: var(--apple-ink); font-size: 14px; font-weight: 600; }
.customer-sider__title .anticon,
.maintenance-sider__title .anticon,
.app-sider__title .anticon { color: var(--apple-blue); }
.customer-sider .ant-menu,
.maintenance-sider .ant-menu,
.app-sider .ant-menu { background: transparent !important; }
.customer-sider .ant-menu-item,
.customer-sider .ant-menu-submenu-title,
.maintenance-sider .ant-menu-item,
.app-sider .ant-menu-item { min-height: 44px; border-radius: 11px; color: #333; }
.customer-sider .ant-menu-item-selected,
.customer-sider .ant-menu-submenu-selected > .ant-menu-submenu-title,
.maintenance-sider .ant-menu-item-selected,
.app-sider .ant-menu-item-selected {
color: var(--apple-blue) !important;
background: #fff !important;
box-shadow: inset 0 0 0 1px var(--apple-divider);
}
.customer-sider .ant-menu-item:hover,
.customer-sider .ant-menu-submenu-title:hover,
.maintenance-sider .ant-menu-item:hover,
.app-sider .ant-menu-item:hover { color: var(--apple-blue) !important; background: rgba(255,255,255,.7) !important; }
.customer-sider__help,
.maintenance-sider__meta,
.app-sider__meta { border: 1px solid var(--apple-hairline); border-radius: 11px; color: var(--apple-muted); background: var(--apple-pearl); box-shadow: none; }
/* Spacious editorial page headers and quiet utility cards. */
.customer-page,
.maintenance-page,
.app-page { width: min(1440px, 100%); margin-inline: auto; padding: 32px clamp(20px, 3vw, 48px) 80px; }
.customer-page__header,
.maintenance-page__header,
.app-page__header { margin: 14px 0 32px; }
.customer-page__header h1,
.maintenance-page__header h1,
.app-page__header h1 { font-size: clamp(34px, 3.2vw, 40px); line-height: 1.1; font-weight: 600; }
.customer-page__header p,
.maintenance-page__header p,
.app-page__header p { margin-top: 8px; color: var(--apple-muted); font-size: 17px; line-height: 1.47; }
.maintenance-page__icon,
.app-page__icon { border-radius: 50%; color: var(--apple-blue); background: #fff; box-shadow: none; }
.ant-breadcrumb { color: var(--apple-muted); font-size: 12px; }
.ant-card,
.workspace,
.ops-workspace,
.device-list-panel,
.family-member-card,
.family-home-card,
.family-activity-card,
.subject-profile-card,
.story-candidate-card,
.confirmed-memory-card,
.panel-section,
.tool-form,
.profile-editor,
.conversation-readiness,
.privacy-card,
.message-item {
border: 1px solid var(--apple-hairline) !important;
border-radius: 18px !important;
background: var(--apple-canvas) !important;
box-shadow: none !important;
}
.workspace,
.ops-workspace { padding: clamp(24px, 3vw, 48px); }
.customer-page > .workspace { padding: clamp(24px, 3vw, 48px); }
.workspace__header,
.ops-workspace__head { padding-bottom: 24px; border-bottom: 1px solid var(--apple-divider); }
.workspace__header h2,
.ops-workspace__head h2 { font-size: clamp(24px, 2.4vw, 34px); line-height: 1.2; }
.eyebrow { color: var(--apple-blue); font-size: 12px; font-weight: 600; letter-spacing: .12em; }
/* One interaction color, two button grammars. */
button:not(.ant-btn),
.ant-btn-primary {
min-height: 44px;
border-radius: 9999px !important;
color: #fff;
background: var(--apple-blue);
box-shadow: none !important;
font-size: 14px;
font-weight: 400;
transition: background-color 160ms ease, transform 160ms ease, opacity 160ms ease;
}
button:not(.ant-btn):hover,
.ant-btn-primary:hover { color: #fff; background: var(--apple-blue-focus) !important; transform: none; }
.button-secondary,
.ant-btn-default { border: 1px solid var(--apple-hairline) !important; color: var(--apple-blue) !important; background: #fff !important; }
.button-secondary:hover,
.ant-btn-default:hover { border-color: var(--apple-blue) !important; color: var(--apple-blue-focus) !important; background: #fff !important; }
.button-small { min-height: 32px !important; padding: 6px 14px !important; border-radius: 8px !important; }
.button-danger { color: #b42318 !important; background: #fff !important; border-color: #e9b9b4 !important; }
.button-danger:hover { color: #fff !important; background: #b42318 !important; }
/* Forms read as white capsules; text areas remain practical utility rectangles. */
input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
select,
.ant-input,
.ant-select-selector,
.ant-input-affix-wrapper { min-height: 44px; border-color: var(--apple-hairline) !important; border-radius: 9999px !important; color: var(--apple-ink); background: #fff !important; box-shadow: none !important; }
textarea,
.ant-input[type="textarea"] { min-height: 96px; border-color: var(--apple-hairline) !important; border-radius: 11px !important; background: #fff !important; box-shadow: none !important; }
input:focus,
select:focus,
textarea:focus,
.ant-input-affix-wrapper:focus-within { border-color: var(--apple-blue) !important; box-shadow: 0 0 0 3px rgba(0,102,204,.14) !important; outline: 0; }
.metric,
.summary-card,
.info,
.readiness-check,
.device-card__facts > div,
.billing-total-grid article { border: 0; border-radius: 11px; background: var(--apple-parchment); box-shadow: none; }
.metric strong,
.summary-card strong,
.info strong { color: var(--apple-ink); }
.workspace__tabs { padding: 4px; border-radius: 9999px; background: #e8e8ed; }
.tab-button { min-height: 40px !important; border-radius: 9999px !important; color: #515154 !important; background: transparent !important; }
.tab-button.active { color: #fff !important; background: var(--apple-blue) !important; }
.tag,
.status,
.permission,
.event-stream-status,
.ant-tag { border-radius: 9999px; }
.workspace__action-message { color: #186a3b; background: #edf8f1; }
.workspace__inline-error { color: #9f2d20; background: #fff1ef; }
.workspace__readonly-note { color: var(--apple-muted); background: var(--apple-parchment); }
/* Dark editorial moments replace decorative gradients. */
.milestone-panel,
.customer-welcome-card {
border: 0 !important;
border-radius: 0 !important;
color: #fff;
background: var(--apple-dark) !important;
box-shadow: none !important;
}
.milestone-panel h2,
.customer-welcome-card h3 { color: #fff !important; }
.milestone-panel p,
.customer-welcome-card p { color: #ccc !important; }
.customer-welcome-card > button { background: var(--apple-blue) !important; }
.conversation-readiness,
.conversation-readiness--ready,
.conversation-readiness--blocked { background-image: none !important; }
.workspace-dialog-backdrop { background: rgba(0,0,0,.48); backdrop-filter: blur(12px); }
.workspace-dialog,
.subject-management-operations[open] { border-radius: 18px !important; background: #fff !important; box-shadow: 0 18px 60px rgba(0,0,0,.22) !important; }
.workspace-dialog__body { background: var(--apple-parchment); }
@media (max-width: 900px) {
.customer-header,
.maintenance-header,
.app-header { padding-inline: 12px; }
.customer-header__brand > span:last-child,
.maintenance-header__brand > span:last-child,
.customer-account-button > span,
.maintenance-account > span { display: none; }
.customer-search,
.maintenance-search { width: min(42vw, 280px); }
.customer-page,
.maintenance-page,
.app-page { padding: 24px 20px 64px; }
.workspace,
.ops-workspace,
.customer-page > .workspace { padding: 24px; }
}
@media (max-width: 720px) {
.customer-sider,
.maintenance-sider,
.app-sider {
position: fixed !important;
top: 44px;
left: 0;
z-index: 100;
width: 224px !important;
min-width: 224px !important;
max-width: 224px !important;
height: calc(100dvh - 44px);
transform: translateX(0);
transition: transform 180ms ease;
}
.customer-sider.ant-layout-sider-collapsed,
.maintenance-sider.ant-layout-sider-collapsed,
.app-sider.ant-layout-sider-collapsed { transform: translateX(-100%); }
.customer-content,
.maintenance-content,
.app-content { width: 100%; margin-left: 0 !important; }
.customer-header__brand > strong,
.maintenance-header__brand > strong,
.customer-brand-divider,
.maintenance-brand-divider,
.customer-search,
.maintenance-search { display: none; }
.customer-page__header h1,
.maintenance-page__header h1,
.app-page__header h1 { font-size: 34px; }
.customer-page__header,
.maintenance-page__header,
.app-page__header { align-items: flex-start; gap: 16px; }
.workspace,
.ops-workspace,
.customer-page > .workspace { padding: 20px; border-radius: 0 !important; }
.workspace-dialog { border-radius: 18px 18px 0 0 !important; }
}
/* Conversation duration and optional billed-cost overview. */
.usage-overview { display: grid; gap: 18px; margin: 18px 0 26px; color: #242427; }
.usage-overview__toolbar { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; padding: 2px 2px 0; }
.usage-overview__toolbar h3 { margin-bottom: 7px; font-size: 22px; font-weight: 650; letter-spacing: -.02em; }
.usage-overview__toolbar p:last-child { margin: 0; color: #77777d; font-size: 13px; }
.usage-overview__filters { display: flex; align-items: flex-end; justify-content: flex-end; flex-wrap: wrap; gap: 10px; }
.usage-overview__filters label { display: grid; gap: 5px; min-width: 142px; }
.usage-overview__filters label > span { color: #77777d; font-size: 11px; font-weight: 600; }
.usage-overview__filters label > strong { display: flex; align-items: center; min-height: 40px; padding: 0 15px; border: 1px solid #e5e5e8; border-radius: 999px; color: #424247; background: #fff; font-size: 13px; font-weight: 550; }
.usage-overview__filters select { min-height: 40px !important; padding: 0 34px 0 14px; font-size: 13px; }
.usage-overview__reload { display: grid; place-items: center; width: 40px; height: 40px; padding: 0 !important; border: 1px solid #e5e5e8 !important; border-radius: 50% !important; color: #4f5359 !important; background: #fff !important; }
.usage-overview__mode { display: inline-flex; justify-self: start; gap: 3px; padding: 4px; border-radius: 999px; background: #f0f0f2; }
.usage-overview__mode button { display: flex; align-items: center; gap: 7px; min-height: 34px !important; padding: 0 15px !important; border-radius: 999px !important; color: #737378 !important; background: transparent !important; font-size: 12px; font-weight: 600; box-shadow: none !important; }
.usage-overview__mode button.active { color: #202024 !important; background: #fff !important; box-shadow: 0 1px 4px rgba(0,0,0,.08) !important; }
.usage-overview__mode button:disabled { cursor: not-allowed; opacity: .48; }
.usage-overview__metrics { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); overflow: hidden; border: 1px solid #ececee; border-radius: 18px; background: #fff; }
.usage-overview__metrics article { position: relative; display: grid; place-items: center; gap: 7px; min-height: 92px; padding: 17px 12px; text-align: center; }
.usage-overview__metrics article:not(:last-child)::after { position: absolute; top: 18px; right: 0; bottom: 18px; width: 1px; background: #efeff1; content: ""; }
.usage-overview__metrics strong { color: #2f3034; font-size: clamp(17px,2vw,22px); font-weight: 560; letter-spacing: -.025em; }
.usage-overview__metrics span { color: #7d7d82; font-size: 12px; }
.usage-overview__metrics.is-loading { opacity: .58; }
.usage-activity-card { overflow: hidden; padding: 22px 24px 16px; border: 1px solid #ececee; border-radius: 18px; background: #fff; }
.usage-activity-card > header { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 14px; }
.usage-activity-card > header > div:first-child { display: flex; align-items: baseline; gap: 10px; }
.usage-activity-card > header strong { color: #29292d; font-size: 14px; }
.usage-activity-card > header span { color: #909096; font-size: 11px; }
.usage-density-tabs { display: flex; gap: 4px; }
.usage-density-tabs button { min-height: 30px !important; padding: 0 7px !important; border-radius: 7px !important; color: #96969c !important; background: transparent !important; font-size: 12px; font-weight: 550; }
.usage-density-tabs button.active { color: #25252a !important; background: #f1f1f3 !important; }
.usage-heatmap-scroll { overflow-x: auto; padding: 2px 2px 10px; scrollbar-width: thin; }
.usage-months { display: flex; justify-content: space-between; min-width: 790px; margin: 0 0 9px 30px; color: #919197; font-size: 10px; }
.usage-heatmap-wrap { display: flex; align-items: flex-start; gap: 10px; min-width: 820px; }
.usage-weekdays { display: grid; grid-template-rows: repeat(3,18px); gap: 8px; width: 20px; padding-top: 7px; color: #aaaab0; font-size: 9px; }
.usage-heatmap { display: grid; grid-auto-flow: column; grid-auto-columns: 11px; grid-template-rows: repeat(7,11px); gap: 4px; width: max-content; min-height: 101px; }
.usage-heatmap button,.usage-heatmap > span { width: 11px; min-height: 11px !important; height: 11px; padding: 0 !important; border: 0 !important; border-radius: 3px !important; transform: none !important; }
.usage-heatmap > span { background: transparent; }
.usage-heatmap button { outline-offset: 2px; }
.usage-heatmap button.selected { outline: 2px solid #4f7fbf; }
.usage-heatmap .level-0,.usage-legend .level-0 { background: #f1f2f4 !important; }
.usage-heatmap .level-1,.usage-legend .level-1 { background: #dbe8f8 !important; }
.usage-heatmap .level-2,.usage-legend .level-2 { background: #b9d0ef !important; }
.usage-heatmap .level-3,.usage-legend .level-3 { background: #82aada !important; }
.usage-heatmap .level-4,.usage-legend .level-4 { background: #3977c4 !important; }
.usage-activity-card > footer { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 28px; padding-top: 9px; border-top: 1px solid #f2f2f3; color: #8a8a90; font-size: 11px; }
.usage-legend { display: flex; align-items: center; gap: 5px; white-space: nowrap; }
.usage-legend i { display: block; width: 10px; height: 10px; border-radius: 3px; }
.usage-overview__details { display: grid; grid-template-columns: minmax(0,.8fr) minmax(0,1.2fr); gap: 16px; }
.usage-overview__details > section { overflow: hidden; border: 1px solid #ececee; border-radius: 18px; background: #fff; }
.usage-overview__details > section > header { display: flex; justify-content: space-between; padding: 17px 19px 13px; border-bottom: 1px solid #f1f1f2; }
.usage-overview__details > section > header strong { font-size: 14px; }
.usage-overview__details > section > header span { color: #96969c; font-size: 11px; }
.usage-device-list,.usage-recent-list { display: grid; max-height: 360px; overflow-y: auto; }
.usage-device-list article,.usage-recent-list article { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 19px; border-bottom: 1px solid #f3f3f4; }
.usage-device-list article:last-child,.usage-recent-list article:last-child { border-bottom: 0; }
.usage-device-list article > div,.usage-recent-list article > div { display: grid; gap: 4px; min-width: 0; }
.usage-device-list article > div:last-child,.usage-recent-list article > div:last-child { flex: none; text-align: right; }
.usage-device-list strong,.usage-recent-list strong { overflow: hidden; color: #343438; font-size: 12px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.usage-device-list span,.usage-recent-list span,.usage-recent-list time { color: #929298; font-size: 10px; }
.usage-recent-list time { flex: 0 0 76px; }
.usage-recent-list article > div:nth-child(2) { flex: 1; }
.usage-empty { margin: 0; padding: 28px 19px; color: #99999f; font-size: 12px; text-align: center; }
@media (max-width: 1080px) {
.usage-overview__toolbar { align-items: flex-start; flex-direction: column; }
.usage-overview__filters { justify-content: flex-start; width: 100%; }
.usage-overview__metrics { grid-template-columns: repeat(3,minmax(0,1fr)); }
.usage-overview__metrics article:nth-child(3)::after { display: none; }
.usage-overview__details { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
.usage-overview { margin-inline: -4px; }
.usage-overview__filters { display: grid; grid-template-columns: 1fr 1fr; }
.usage-overview__filters label { min-width: 0; }
.usage-overview__filters label:first-child { grid-column: 1 / -1; }
.usage-overview__metrics { grid-template-columns: repeat(2,minmax(0,1fr)); border-radius: 14px; }
.usage-overview__metrics article { min-height: 82px; }
.usage-overview__metrics article:nth-child(even)::after { display: none; }
.usage-overview__metrics article:last-child { grid-column: 1 / -1; }
.usage-activity-card { padding-inline: 14px; border-radius: 14px; }
.usage-activity-card > header { align-items: flex-start; flex-direction: column; }
.usage-activity-card > footer { align-items: flex-start; flex-direction: column; }
.usage-overview__details > section { border-radius: 14px; }
}
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}
/* Customer experience v1 — Conversation Journal, selected product direction. */
.customer-layout {
--journal-paper: #fbfaf7;
--journal-card: #fffefd;
--journal-ink: #242526;
--journal-muted: #73716d;
--journal-line: #e7e2da;
--journal-blue: #315d9b;
--journal-blue-soft: #edf3fb;
--journal-coral: #e66d3d;
--journal-green: #6ca658;
min-height: 100vh;
color: var(--journal-ink);
background: var(--journal-paper);
}
.customer-header {
height: 74px !important;
padding-inline: 26px !important;
border-bottom: 1px solid var(--journal-line) !important;
color: var(--journal-ink) !important;
background: rgba(255,254,252,.98) !important;
}
.customer-header__brand,
.customer-header__brand > strong,
.customer-header .ant-btn { color: var(--journal-ink) !important; }
.customer-header__brand > strong { font-size: 22px; letter-spacing: -.03em; }
.customer-brand-mark { width: 34px; height: 34px; color: var(--journal-ink) !important; }
.customer-header__actions { margin-left: auto; }
.customer-search { width: min(34vw, 370px); }
.customer-search .ant-input-affix-wrapper,
.customer-search .ant-input-group-addon .ant-btn {
height: 44px;
border: 1px solid var(--journal-line) !important;
color: var(--journal-ink) !important;
background: #fff !important;
}
.customer-search input { color: var(--journal-ink) !important; }
.customer-search input::placeholder { color: #a5a19b !important; }
.customer-header .ant-avatar { color: var(--journal-ink); background: #f3ede4; }
.customer-layout__body { padding-top: 74px; background: var(--journal-paper); }
.customer-sider {
top: 74px;
height: calc(100vh - 74px);
border-right: 1px solid var(--journal-line);
background: #fffefd !important;
}
.customer-sider__title { height: 56px; padding-inline: 22px; color: var(--journal-muted); }
.customer-sider .ant-menu { padding: 8px 12px; }
.customer-sider .ant-menu-item,
.customer-sider .ant-menu-submenu-title {
min-height: 52px;
margin-block: 3px;
border-radius: 8px;
color: #494a49;
font-size: 15px;
}
.customer-sider .ant-menu-item-selected,
.customer-sider .ant-menu-submenu-selected > .ant-menu-submenu-title {
color: var(--journal-blue) !important;
background: var(--journal-blue-soft) !important;
box-shadow: none !important;
}
.customer-sider__help { margin: auto 16px 20px; border-radius: 10px; background: #faf7f2; }
.customer-content { background: var(--journal-paper) !important; }
.customer-page.customer-page { width: min(1500px,100%) !important; padding: 0 28px 64px !important; }
.customer-page.customer-page--home { padding-inline: 28px !important; }
.customer-page > .ant-breadcrumb,
.customer-page > .customer-page__header { display: none; }
.customer-page.customer-page > .workspace {
padding: 0 !important;
border: 0 !important;
border-radius: 0 !important;
background: transparent !important;
}
.workspace__header { margin: 0 0 20px; padding: 18px 0 20px; border-bottom-color: var(--journal-line); }
.workspace__header h2 { font-size: 28px; }
.workspace__header > div:first-child > p:last-child { color: var(--journal-muted); }
.workspace--home > .workspace__header { display: none; }
.household-tabs {
display: flex;
gap: 8px;
overflow-x: auto;
padding: 0 0 5px;
border-bottom: 1px solid var(--journal-line);
scrollbar-width: thin;
}
.household-tabs button {
min-width: 76px;
min-height: 34px !important;
padding: 0 18px !important;
border: 1px solid var(--journal-line) !important;
border-radius: 8px !important;
color: #4b4946 !important;
background: #fffefd !important;
white-space: nowrap;
}
.household-tabs button.active { color: var(--journal-ink) !important; background: #f6ecdf !important; border-color: #e8d8c5 !important; font-weight: 650; }
.household-tabs .household-tabs__add { min-width: 38px; width: 38px; padding: 0 !important; }
.conversation-journal { display: grid; gap: 7px; }
.elder-switcher {
display: flex;
gap: clamp(18px,4vw,64px);
min-height: 85px;
overflow-x: auto;
padding: 0 26px;
align-items: center;
}
.elder-switcher > button {
display: grid;
justify-items: center;
gap: 2px;
min-width: 96px;
min-height: 85px !important;
padding: 2px 8px !important;
border: 0 !important;
border-radius: 12px !important;
color: var(--journal-ink) !important;
background: transparent !important;
}
.elder-switcher img {
width: 64px;
height: 64px;
border: 4px solid transparent;
border-radius: 50%;
object-fit: cover;
box-shadow: 0 0 0 1px #d9d4cc;
}
.elder-switcher button.active img { border-color: #fff; box-shadow: 0 0 0 2px var(--journal-blue), 0 4px 14px rgba(49,93,155,.16); }
.elder-switcher strong { font-size: 13px; }
.elder-switcher small { color: var(--journal-muted); font-size: 11px; }
.journal-grid { display: grid; grid-template-columns: minmax(0,1.6fr) minmax(320px,1fr); gap: 16px; }
.journal-grid { margin-bottom: 9px; }
.journal-lower-grid { display: grid; grid-template-columns: minmax(280px,.8fr) minmax(0,1.2fr); gap: 16px; }
.journal-grid,.journal-lower-grid,.journal-card { min-width: 0; }
.journal-card {
border: 1px solid var(--journal-line);
border-radius: 12px;
background: var(--journal-card);
box-shadow: 0 2px 8px rgba(75,67,57,.025);
}
.journal-card > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; padding: 24px 26px 10px; }
.journal-card h3 { margin: 0; color: var(--journal-ink); font-size: 22px; line-height: 1.2; }
.journal-card header p { margin: 7px 0 0; color: var(--journal-muted); }
.elder-presence { padding: 5px 9px; border-radius: 999px; color: #8c6354; background: #f7eee8; font-size: 11px; }
.elder-presence.is-online { color: #437d43; background: #edf6e9; }
.journal-weekly__chart { display: grid; grid-template-columns: repeat(7,minmax(58px,1fr)); gap: 8px; min-height: 260px; padding: 0 18px 14px; align-items: end; }
.journal-weekly__chart article { display: grid; justify-items: center; align-content: end; gap: 7px; min-width: 0; min-height: 245px; padding: 10px 4px 8px; border-radius: 10px; }
.journal-weekly__chart article.is-today { background: var(--journal-blue-soft); }
.journal-weekly__chart article > div { display: grid; text-align: center; }
.journal-weekly__chart time { color: #4f4e4b; font-size: 12px; }
.journal-weekly__chart small { color: var(--journal-muted); font-size: 10px; }
.journal-weekly__chart strong { color: #77736e; font-size: 11px; font-weight: 500; }
.journal-duration { width: 20px; min-height: 3px; border-radius: 4px 4px 2px 2px; background: #5e86c1; }
.is-today .journal-duration { background: var(--journal-blue); }
.journal-mood { display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; color: #aaa6a0; background: #eeeae4; }
.journal-mood--positive { color: #5e9a4d; background: #ecf6e7; }
.journal-mood--attention { color: var(--journal-coral); background: #fff0e8; }
.journal-weekly > footer { display: flex; justify-content: space-between; gap: 12px; padding: 12px 26px 18px; border-top: 1px solid var(--journal-line); color: var(--journal-muted); font-size: 11px; }
.journal-weekly > footer span { display: flex; align-items: center; gap: 7px; }
.journal-legend-duration { width: 12px; height: 12px; border-radius: 3px; background: #5e86c1; }
.latest-chat { padding-bottom: 18px; }
.latest-chat__topics { display: flex; flex-wrap: wrap; gap: 6px; padding: 8px 24px 10px; }
.latest-chat__topics span { padding: 5px 10px; border-radius: 7px; color: #4e5865; background: #eff2f6; font-size: 12px; }
.latest-chat blockquote { margin: 4px 24px 16px; padding: 16px; border: 1px solid var(--journal-line); border-radius: 10px; color: #4f4d49; font-size: 14px; line-height: 1.7; }
.latest-chat__mood { display: flex; gap: 12px; margin: 0 24px 16px; padding: 15px 0; border-top: 1px dashed var(--journal-line); }
.latest-chat__mood > .anticon { margin-top: 2px; color: var(--journal-coral); font-size: 22px; }
.latest-chat__mood div { display: grid; gap: 4px; }
.latest-chat__mood strong { font-size: 14px; }
.latest-chat__mood small { color: var(--journal-muted); line-height: 1.6; }
.latest-chat > button { width: calc(100% - 48px); margin: 0 24px; border-radius: 8px !important; background: var(--journal-blue) !important; }
.journal-empty { display: grid; place-items: center; gap: 12px; padding: 48px 24px 28px; color: var(--journal-muted); text-align: center; }
.journal-empty > .anticon { font-size: 32px; }
.family-attention > header { justify-content: flex-start; color: var(--journal-coral); }
.family-attention > button { display: grid; gap: 7px; width: calc(100% - 46px); margin: 8px 23px 24px; padding: 18px !important; border: 1px solid #f0d9c9 !important; border-radius: 10px !important; color: #694833 !important; background: #fff7ef !important; text-align: left; }
.family-attention > button span { color: #8b6d5a; font-size: 12px; line-height: 1.6; }
.family-attention__calm { display: flex; align-items: center; gap: 12px; margin: 8px 23px 24px; padding: 18px; border-radius: 10px; color: #52704c; background: #f1f7ee; line-height: 1.6; }
.recent-activity > div { display: grid; padding: 0 22px; }
.recent-activity > div > button { display: grid; grid-template-columns: 28px 78px minmax(150px,1fr) minmax(90px,.7fr); align-items: center; gap: 10px; min-height: 58px !important; padding: 8px 4px !important; border: 0 !important; border-bottom: 1px solid var(--journal-line) !important; border-radius: 0 !important; color: var(--journal-ink) !important; background: transparent !important; text-align: left; }
.recent-activity > div > button > .anticon { color: var(--journal-blue); font-size: 18px; }
.recent-activity time,.recent-activity span { overflow: hidden; color: var(--journal-muted); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.recent-activity > footer { display: flex; justify-content: center; padding: 8px 20px 14px; }
.recent-activity > footer button { min-height: 32px !important; color: var(--journal-blue) !important; background: transparent !important; }
.customer-layout button:not(.ant-btn) { border-radius: 8px !important; }
.customer-layout button:disabled,
.customer-layout [role="button"][aria-disabled="true"] { cursor: wait !important; opacity: .5; transform: none !important; }
.subject-avatar-upload { position: relative; display: grid; grid-row: span 2; place-items: center; align-content: center; gap: 7px; min-height: 132px; overflow: hidden; border: 1px dashed #c9c0b5; border-radius: 12px; color: var(--journal-blue); background: #fbf8f3; cursor: pointer; }
.subject-avatar-upload input,.subject-avatar-editor input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.subject-avatar-upload > .anticon { font-size: 27px; }
.subject-avatar-upload img { width: 108px; height: 108px; border-radius: 50%; object-fit: cover; }
.subject-avatar-upload small { color: var(--journal-muted); }
.subject-avatar-error { grid-column: 1 / -1; margin: 0; color: #a94132; font-size: 12px; }
.subject-profile-card__avatar { overflow: hidden; }
.subject-profile-card__avatar img { width: 100%; height: 100%; border-radius: inherit; object-fit: cover; }
.subject-avatar-editor { position: relative; display: flex; align-items: center; gap: 18px; width: max-content; cursor: pointer; }
.subject-avatar-editor img { width: 88px; height: 88px; border-radius: 50%; object-fit: cover; }
.subject-avatar-editor > span { color: var(--journal-blue); }
.conversation-row { grid-template-columns: 34px minmax(0,1fr) auto !important; }
.conversation-row__mood { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; color: #9e9a94; background: #efede9; }
.conversation-row__mood--positive { color: #5e984e; background: #edf6e9; }
.conversation-row__mood--attention { color: var(--journal-coral); background: #fff0e8; }
.conversation-row > div { min-width: 0; }
.conversation-row > div > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.conversation-row > div > small { color: var(--journal-blue); }
.permission-matrix-card { margin-top: 18px; }
.permission-matrix-note { margin: 0 0 16px; color: var(--journal-muted); line-height: 1.65; }
.permission-matrix-wrap { overflow-x: auto; }
.permission-matrix { width: 100%; min-width: 700px; border-collapse: collapse; }
.permission-matrix th,.permission-matrix td { padding: 12px 14px; border-bottom: 1px solid var(--journal-line); text-align: center; }
.permission-matrix thead th { color: var(--journal-muted); background: #faf7f2; font-size: 12px; }
.permission-matrix tbody th { display: grid; gap: 2px; text-align: left; }
.permission-matrix tbody th strong { font-size: 13px; }
.permission-matrix tbody th small { color: #9a9690; font-size: 10px; font-weight: 400; }
.permission-matrix td { color: #c8c3bc; }
.permission-matrix td.is-enabled { color: var(--journal-blue); }
.customer-profile { display: grid; gap: 18px; padding-top: 14px; }
@media (max-width: 1050px) {
.journal-grid,.journal-lower-grid { grid-template-columns: 1fr; }
.elder-switcher { gap: 24px; }
}
@media (max-width: 720px) {
.customer-header { height: 58px !important; }
.customer-layout__body { padding-top: 58px; }
.customer-sider { top: 58px; height: calc(100dvh - 58px); }
.customer-page.customer-page,.customer-page.customer-page--home { padding: 10px 12px 44px !important; }
.customer-page.customer-page > .workspace { padding: 0 !important; }
.customer-header__brand > strong { display: block; font-size: 18px; }
.household-tabs { padding-inline: 2px; }
.elder-switcher { min-height: 116px; padding-inline: 8px; }
.elder-switcher img { width: 62px; height: 62px; }
.elder-switcher > button { min-width: 78px; min-height: 100px !important; }
.journal-card { overflow: hidden; }
.journal-weekly__chart { width: 100%; max-width: 100%; overflow-x: auto; grid-template-columns: repeat(7,64px); justify-content: start; }
.journal-card > header { padding-inline: 18px; }
.latest-chat blockquote,.latest-chat__mood { margin-inline: 18px; }
.latest-chat > button { width: calc(100% - 36px); margin-inline: 18px; }
.recent-activity > div > button { grid-template-columns: 28px minmax(0,1fr); gap: 5px 10px; }
.recent-activity > div > button > .anticon { grid-column: 1; grid-row: 1 / 4; }
.recent-activity time,.recent-activity strong,.recent-activity span { grid-column: 2; }
}
/* Keep the selected visual target authoritative over legacy workspace rules. */
.customer-page--conversations .memory-timeline-grid { display: grid; grid-template-columns: minmax(280px,.78fr) minmax(420px,1.28fr) minmax(220px,.62fr); gap: 16px; }
.customer-page--conversations .memory-timeline-grid .conversation-list { border-right: 1px solid #eadeda; background: #fffdfb; }
.customer-page--conversations .memory-timeline-list .conversation-row { grid-template-columns: 16px 34px minmax(0,1fr) !important; }
.customer-page--conversations .memory-timeline-list .conversation-row > .tag { grid-column: 3; }
.customer-page--conversations .workspace__header,
.customer-page--models .workspace__header { justify-content: space-between; }
.customer-page--conversations .workspace__header > div:first-child,
.customer-page--models .workspace__header > div:first-child { display: block; }
.memory-summary-block--story { border-color: #ead7bf; background: #fffaf1; }
.memory-summary-block--story strong { display: block; margin-bottom: 7px; color: #644d3e; font-family: "Noto Serif SC", "Songti SC", serif; }
@media (max-width: 1180px) {
.customer-page--conversations .memory-timeline-grid { grid-template-columns: minmax(270px,.8fr) minmax(390px,1.2fr); }
.customer-page--conversations .memory-model-card { grid-column: 1 / -1; }
}
@media (max-width: 760px) {
.customer-page--conversations .memory-timeline-grid { grid-template-columns: 1fr; }
.customer-page--conversations .memory-model-card { grid-column: auto; }
}