:root {
  --ng-bg: #f8eee8;
  --ng-surface: #fffdfb;
  --ng-text: #2e2925;
  --ng-muted: #766c65;
  --ng-line: #ead8ca;
  --ng-accent: #a42620;
  --ng-accent-soft: #f9e8e2;
  --ng-green: #277653;
  --ng-green-soft: #e7f2ec;
  --ng-warm: #b65d22;
  --ng-warm-soft: #fff0e2;
  --ng-danger: #a42620;
  --ng-danger-soft: #fae8e5;
  --ng-pink: #b54763;
  --ng-gold: #c9851e;
  --ng-gold-soft: #f8e8c8;
  --ng-oxblood: #8f1f1a;
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }

html {
  height: auto;
  min-height: 100%;
  overflow-x: hidden;
  overflow-y: auto;
}

body.ng815Body {
  margin: 0;
  height: auto;
  min-height: 100vh;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  color: var(--ng-text);
  background: var(--ng-bg);
  font-family: "Avenir Next", "PingFang SC", "Microsoft YaHei", sans-serif;
}

.ng815Wrap { width: min(1280px, 100%); margin: 0 auto; padding: 18px 18px 40px; }
.ng815DetailWrap { width: min(1080px, 100%); }
.ng815Head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 14px; }
.ng815Kicker { margin: 0 0 4px; color: var(--ng-accent); font-size: 12px; font-weight: 700; letter-spacing: 0; }
.ng815Head h1 { margin: 0; font-size: 26px; line-height: 1.25; letter-spacing: 0; }
.ng815Meta { margin: 6px 0 0; color: var(--ng-muted); font-size: 13px; }
.ng815Actions { display: flex; gap: 8px; flex-wrap: wrap; }

.ng815Metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); background: var(--ng-surface); border: 1px solid var(--ng-line); border-radius: 8px; margin-bottom: 12px; }
.ng815Metric { min-width: 0; padding: 12px 16px; border-right: 1px solid var(--ng-line); }
.ng815Metric:last-child { border-right: 0; }
.ng815Metric span { display: block; color: var(--ng-muted); font-size: 12px; }
.ng815Metric strong { display: block; margin-top: 2px; font-size: 24px; line-height: 1.2; letter-spacing: 0; }
.ng815Metric--ok strong { color: var(--ng-green); }
.ng815Metric--mine strong { color: var(--ng-accent); }

.ng815Workspace {
  --ng-list-main-cols: minmax(110px, 1fr) 64px minmax(118px, 1.1fr) minmax(80px, 0.65fr) repeat(3, minmax(72px, 0.5fr)) minmax(108px, 0.9fr);
  --ng-list-main-gap: 12px;
  --ng-list-side: 132px;
  background: var(--ng-surface);
  border: 1px solid var(--ng-line);
  border-radius: 8px;
  overflow: hidden;
}
.ng815WorkspaceHead { min-height: 40px; display: flex; align-items: center; justify-content: flex-end; gap: 12px; padding: 8px 14px; border-bottom: 1px solid var(--ng-line); }
.ng815ScopeTabs { display: inline-flex; height: 36px; padding: 3px; gap: 2px; background: var(--ng-green-soft); border: 1px solid #c9e0d3; border-radius: 8px; }
.ng815ScopeTab { min-width: 0; min-height: 0; height: 100%; border: 0; border-radius: 5px; padding: 0 8px; color: var(--ng-green); background: transparent; font: inherit; font-size: 12px; font-weight: 600; cursor: pointer; white-space: nowrap; }
.ng815ScopeTab.is-active { color: #1b4d36; background: var(--ng-surface); box-shadow: 0 1px 3px rgba(27, 43, 52, 0.12); }
.ng815ResultMeta { margin: 0; color: var(--ng-muted); font-size: 13px; }

.ng815Toolbar { display: grid; grid-template-columns: minmax(220px, 1.6fr) repeat(4, minmax(130px, 1fr)) auto auto; gap: 8px; align-items: end; padding: 12px 14px; background: #fafbfc; border-bottom: 1px solid var(--ng-line); }
.ng815Toolbar label { min-width: 0; display: grid; gap: 4px; }
.ng815Toolbar label > span { color: var(--ng-muted); font-size: 11px; }
.ng815Toolbar input, .ng815Toolbar select, .ng815DevLogin input { width: 100%; height: 38px; min-width: 0; border: 1px solid #ccd5da; border-radius: 6px; padding: 0 10px; color: var(--ng-text); background: var(--ng-surface); font: inherit; font-size: 13px; }
.ng815Toolbar input:focus, .ng815Toolbar select:focus, .ng815DevLogin input:focus { outline: 2px solid rgba(18, 98, 138, 0.15); border-color: var(--ng-accent); }
.ng815Toolbar select:disabled { opacity: 0.55; background: #f0f2f3; }
.ng815SearchBtn, .ng815ClearBtn { height: 38px; }

.ng815ListHead, .ng815Item { display: grid; grid-template-columns: minmax(190px, 1.1fr) minmax(180px, 1.2fr) minmax(220px, 1.35fr) minmax(160px, 0.9fr) 74px; gap: 14px; align-items: center; }
.ng815ListHead { min-height: 36px; padding: 0 14px; color: var(--ng-muted); background: #f5f7f8; border-bottom: 1px solid var(--ng-line); font-size: 11px; font-weight: 600; }
.ng815List { min-height: 180px; }
.ng815Item { min-height: 84px; padding: 12px 14px; color: inherit; text-decoration: none; border-bottom: 1px solid #edf0f2; transition: background 120ms ease; }
.ng815Item:last-child { border-bottom: 0; }
.ng815Item:hover { background: #f8fbfc; }
.ng815CustomerCell, .ng815IntentCell, .ng815OwnerCell, .ng815ArrivalCell { min-width: 0; display: grid; gap: 4px; }
.ng815CustomerCell { grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: 8px; }
.ng815CustomerCell > div { min-width: 0; display: grid; gap: 3px; }
.ng815CustomerCell strong, .ng815IntentCell strong, .ng815ArrivalCell strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; }
.ng815CustomerCell span, .ng815IntentCell span, .ng815OwnerCell > span, .ng815ArrivalCell span, .ng815ArrivalCell small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ng-muted); font-size: 12px; }
.ng815IntentCell strong { color: var(--ng-green); }
.ng815IntentCell strong.ng815ExpectedProduct { color: var(--ng-pink); }
.ng815OwnerCell > div { display: flex; align-items: center; gap: 5px; min-width: 0; }
.ng815TeamLabel { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ng-text); font-size: 13px; font-weight: 600; }
.ng815OwnerCell em { flex: 0 0 auto; border-radius: 4px; padding: 1px 5px; color: var(--ng-accent); background: var(--ng-accent-soft); font-size: 10px; font-style: normal; }
.ng815RowAction { color: var(--ng-accent); font-size: 12px; font-weight: 600; text-align: right; }

.ng815Badge { display: inline-flex; align-items: center; justify-content: center; width: max-content; min-height: 22px; border-radius: 4px; padding: 2px 7px; color: var(--ng-warm); background: var(--ng-warm-soft); font-size: 11px; font-weight: 700; white-space: nowrap; }
.ng815TestViewer { display: flex; align-items: center; gap: 7px; border: 1px solid var(--ng-line); border-radius: 6px; padding: 5px 7px; background: #fff; }
.ng815TestViewer span { color: var(--ng-muted); font-size: 11px; white-space: nowrap; }
.ng815TestViewer select { max-width: 190px; border: 0; outline: 0; color: var(--ng-text); background: transparent; font: inherit; font-size: 12px; }
.ng815Badge--ok { color: var(--ng-green); background: var(--ng-green-soft); }
.ng815Pager { min-height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 14px; border-top: 1px solid var(--ng-line); background: #fafbfc; }
.ng815Pager p { margin: 0; color: var(--ng-muted); font-size: 12px; }
.ng815Pager > div { display: flex; gap: 8px; }
.ng815State { min-height: 120px; display: flex; align-items: center; justify-content: center; padding: 28px 14px; color: var(--ng-muted); text-align: center; }
.ng815State--empty, .ng815State--error { min-height: 210px; flex-direction: column; gap: 8px; }
.ng815State--empty strong, .ng815State--error strong { color: var(--ng-text); font-size: 15px; }
.ng815State--error strong { color: var(--ng-danger); }
.ng815State--empty span, .ng815State--error span { max-width: 520px; font-size: 13px; }

.ng815DetailSurface { margin-bottom: 12px; background: var(--ng-surface); border: 1px solid var(--ng-line); border-radius: 8px; overflow: hidden; }
.ng815DetailSectionHead { min-height: 66px; display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 18px; border-bottom: 1px solid var(--ng-line); }
.ng815DetailSectionHead p { margin: 0 0 2px; color: var(--ng-muted); font-size: 11px; }
.ng815DetailSectionHead h2 { margin: 0; font-size: 18px; letter-spacing: 0; }
.ng815ReceptionTop { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; padding: 18px; }
.ng815ReceptionTop > div { min-width: 0; padding: 14px 16px; background: #f6f8f9; border-radius: 7px; }
.ng815ReceptionTop span { display: block; color: var(--ng-muted); font-size: 11px; }
.ng815ReceptionTop strong { display: block; margin: 5px 0 3px; font-size: 20px; letter-spacing: 0; }
.ng815ReceptionTop p { margin: 0; color: var(--ng-muted); font-size: 12px; }
.ng815Arrival { border-left: 3px solid #c89575; }
.ng815Arrival.is-verified { border-left-color: var(--ng-green); background: var(--ng-green-soft); }
.ng815Arrival.is-verified .ng815ArrivalStatus:first-child strong { color: var(--ng-green); }
.ng815Arrival.is-complete { border-left-color: var(--ng-accent); }
.ng815Arrival.is-complete .ng815ArrivalStatus--deal strong { color: var(--ng-green); }
.ng815Arrival { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 12px; align-content: center; }
.ng815ArrivalStatus { min-width: 0; }
.ng815ArrivalStatus strong { margin: 3px 0 0; font-size: 16px; }
.ng815ArrivalStatus--deal strong { color: var(--ng-muted); }
.ng815Arrival > p { grid-column: 1 / -1; }
.ng815Facts { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-top: 1px solid var(--ng-line); }
.ng815Fact { min-width: 0; min-height: 68px; padding: 12px 16px; border-right: 1px solid var(--ng-line); border-bottom: 1px solid var(--ng-line); }
.ng815Fact:nth-child(4n) { border-right: 0; }
.ng815Fact span { display: block; color: var(--ng-muted); font-size: 11px; }
.ng815Fact strong { display: block; margin-top: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; }
.ng815Fact--team strong { color: var(--ng-accent); }
.ng815Fact--need strong { color: var(--ng-green); }
.ng815Fact--money strong { color: var(--ng-accent); }
.ng815Fact--done strong { color: var(--ng-green); }
.ng815Fact--gap strong { color: var(--ng-danger); }
.ng815ReceptionRisk { display: flex; gap: 10px; align-items: flex-start; margin: 16px 18px 18px; border-left: 3px solid var(--ng-danger); padding: 10px 12px; color: var(--ng-danger); background: var(--ng-danger-soft); border-radius: 0 6px 6px 0; }
.ng815ReceptionRisk strong { flex: 0 0 auto; font-size: 12px; }
.ng815ReceptionRisk span { font-size: 12px; }

.ng815DetailSection { padding: 18px; border-bottom: 1px solid var(--ng-line); }
.ng815DetailSection:last-child { border-bottom: 0; }
.ng815DetailSection h3 { margin: 0 0 12px; font-size: 15px; letter-spacing: 0; }
.ng815DetailSection h4 { margin: 0 0 8px; color: var(--ng-muted); font-size: 12px; }
.ng815DetailSection > .ng815Facts { border: 1px solid var(--ng-line); border-radius: 7px; overflow: hidden; }
.ng815DetailSection > .ng815Facts .ng815Fact { min-height: 60px; }
.ng815DetailGrid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.ng815SubBlock { margin-top: 16px; }
.ng815TagRow { display: flex; gap: 6px; flex-wrap: wrap; }
.ng815Tag { border: 1px solid #d9e5ea; border-radius: 4px; padding: 3px 7px; color: #405863; background: #f4f8fa; font-size: 11px; }
.ng815ScoreList { display: grid; gap: 8px; }
.ng815ScoreItem { display: grid; grid-template-columns: minmax(130px, 1fr) minmax(80px, 0.8fr) 28px; gap: 8px; align-items: center; }
.ng815ScoreItem > div:first-child { min-width: 0; display: grid; gap: 2px; }
.ng815ScoreItem strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
.ng815ScoreItem span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ng-muted); font-size: 10px; }
.ng815ScoreItem em { color: var(--ng-muted); font-size: 11px; font-style: normal; text-align: right; }
.ng815ScoreTrack { height: 5px; overflow: hidden; background: #e6ebee; border-radius: 3px; }
.ng815ScoreTrack i { display: block; height: 100%; background: var(--ng-accent); border-radius: 3px; }
.ng815PlanningList { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.ng815PlanningList article { min-width: 0; border: 1px solid var(--ng-line); border-radius: 7px; padding: 10px 12px; }
.ng815PlanningList article > div { display: flex; align-items: center; gap: 8px; }
.ng815PlanningList span { flex: 0 0 auto; border-radius: 4px; padding: 2px 5px; color: var(--ng-accent); background: var(--ng-accent-soft); font-size: 10px; }
.ng815PlanningList strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
.ng815PlanningList p { margin: 6px 0 0; color: var(--ng-muted); font-size: 11px; }
.ng815Evolution { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.ng815Evolution span { color: var(--ng-muted); }
.ng815Evolution em { border-radius: 4px; padding: 4px 8px; color: var(--ng-accent); background: var(--ng-accent-soft); font-size: 11px; font-style: normal; }
.ng815Growth { display: grid; gap: 9px; }
.ng815GrowthRow { display: grid; grid-template-columns: 72px 1fr; gap: 10px; align-items: start; }
.ng815GrowthRow time { color: var(--ng-muted); font-size: 11px; }
.ng815GrowthRow > div { display: flex; gap: 5px; flex-wrap: wrap; }
.ng815GrowthRow span { border: 1px solid #ddcfbf; border-radius: 4px; padding: 2px 6px; color: var(--ng-warm); background: var(--ng-warm-soft); font-size: 10px; }
.ng815GrowthRow span.is-done { border-color: #cce2d5; color: var(--ng-green); background: var(--ng-green-soft); }
.ng815TreatmentGrid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.ng815TreatmentGroup { min-width: 0; overflow: hidden; border: 1px solid var(--ng-line); border-radius: 7px; }
.ng815TreatmentGroup > header { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 38px; padding: 8px 10px; border-bottom: 1px solid var(--ng-line); background: #f7f9fa; }
.ng815TreatmentGroup > header strong { font-size: 13px; }
.ng815TreatmentGroup > header span { border-radius: 4px; padding: 2px 6px; color: var(--ng-muted); background: var(--ng-surface); font-size: 10px; }
.ng815TreatmentGroup.is-untreated > header strong { color: var(--ng-warm); }
.ng815TreatmentGroup.is-treated > header strong { color: var(--ng-green); }
.ng815TreatmentList { display: grid; }
.ng815TreatmentList article { min-width: 0; display: grid; gap: 3px; padding: 9px 10px; border-bottom: 1px solid #edf0f2; }
.ng815TreatmentList article:last-child { border-bottom: 0; }
.ng815TreatmentList article > div { min-width: 0; display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.ng815TreatmentList strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
.ng815TreatmentList time { flex: 0 0 auto; color: var(--ng-muted); font-size: 10px; }
.ng815TreatmentList p, .ng815TreatmentList small { margin: 0; color: var(--ng-muted); font-size: 10px; line-height: 1.45; }
.ng815TreatmentList p { color: var(--ng-text); }
.ng815TreatmentMore { margin: 0; padding: 8px 10px; color: var(--ng-muted); background: #fafbfc; font-size: 10px; }
.ng815ReminderList { display: grid; gap: 7px; }
.ng815ReminderList article { border-left: 3px solid #d0a180; padding: 7px 10px; background: var(--ng-warm-soft); }
.ng815ReminderList article.is-high { border-left-color: var(--ng-danger); background: var(--ng-danger-soft); }
.ng815ReminderList strong { font-size: 12px; }
.ng815ReminderList p { margin: 2px 0 0; color: var(--ng-muted); font-size: 11px; }
.ng815History { display: grid; }
.ng815History article { display: grid; grid-template-columns: 90px 1fr; gap: 12px; padding: 9px 0; border-bottom: 1px solid #edf0f2; }
.ng815History article:last-child { border-bottom: 0; }
.ng815History time { color: var(--ng-muted); font-size: 11px; }
.ng815History article > div { min-width: 0; display: grid; gap: 2px; }
.ng815History strong { font-size: 12px; }
.ng815History span { color: var(--ng-muted); font-size: 11px; }
.ng815AiInsight { display: grid; gap: 6px; }
.ng815AiInsight p { margin: 0; color: #3f525c; font-size: 12px; line-height: 1.55; }
.ng815FaceDoctor { color: var(--ng-danger); font-weight: 800; }
.ng815AiSummary { display: grid; gap: 8px; }
.ng815AiSummary header { display: flex; justify-content: space-between; gap: 12px; }
.ng815AiSummary header strong { font-size: 14px; }
.ng815AiSummary header span { color: var(--ng-muted); font-size: 10px; }
.ng815AiSummary p { display: grid; grid-template-columns: 42px 1fr; gap: 8px; margin: 0; color: #3f525c; font-size: 12px; }
.ng815AiSummary b { color: var(--ng-accent); }
.ng815AiSummary ul { margin: 0; padding-left: 18px; color: var(--ng-muted); font-size: 11px; }
.ng815Empty { padding: 18px 10px; color: var(--ng-muted); background: #f7f9fa; border-radius: 6px; font-size: 12px; text-align: center; }
.ng815Empty--large { min-height: 140px; display: flex; align-items: center; justify-content: center; }
.ng815Empty--quiet { padding: 6px 0; background: transparent; text-align: left; }

.ng815AuthGate { max-width: 520px; margin: 56px auto 0; padding: 24px; background: var(--ng-surface); border: 1px solid var(--ng-line); border-radius: 8px; }
.ng815AuthGate h1 { margin: 0 0 8px; font-size: 22px; letter-spacing: 0; }
.ng815DevLogin { margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--ng-line); }
.ng815DevLogin summary { cursor: pointer; color: var(--ng-muted); font-size: 12px; }
.ng815DevLogin label { display: grid; gap: 5px; margin: 10px 0; font-size: 12px; }

@media (max-width: 1050px) {
  .ng815Toolbar { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ng815Toolbar .ng815SearchField { grid-column: span 2; }
  .ng815ListHead, .ng815Item { grid-template-columns: minmax(170px, 1fr) minmax(160px, 1fr) minmax(190px, 1.2fr) minmax(140px, 0.8fr); }
  .ng815RowAction { display: none; }
}

@media (max-width: 720px) {
  .ng815Wrap { padding: 12px 10px 28px; }
  .ng815Head { align-items: stretch; margin-bottom: 10px; }
  .ng815Head h1 { font-size: 21px; }
  .ng815SessionSwitch { display: flex; width: 100%; }
  .ng815SessionTab { flex: 1; min-height: 44px; }
  .ng815Head .ng815Actions { justify-content: flex-end; }
  .ng815Metrics { grid-template-columns: 1fr 1fr; }
  .ng815Metric { padding: 10px 12px; border-bottom: 1px solid var(--ng-line); }
  .ng815Metric:nth-child(2) { border-right: 0; }
  .ng815Metric:nth-child(3), .ng815Metric:nth-child(4) { border-bottom: 0; }
  .ng815Metric strong { font-size: 20px; }
  .ng815WorkspaceHead { align-items: stretch; flex-direction: column; }
  .ng815ScopeTabs { width: 100%; }
  .ng815ScopeTab { flex: 1; padding: 0 8px; }
  .ng815Toolbar { grid-template-columns: 1fr 1fr; padding: 10px; }
  .ng815Toolbar .ng815SearchField { grid-column: 1 / -1; }
  .ng815SearchBtn, .ng815ClearBtn { width: 100%; }
  .ng815ListHead { display: none; }
  .ng815Item { grid-template-columns: 1fr 1fr; min-height: 0; gap: 10px 12px; padding: 13px 12px; }
  .ng815CustomerCell { grid-column: 1 / -1; }
  .ng815IntentCell { grid-column: 1 / -1; padding: 8px 10px; background: #f6f9fa; border-radius: 6px; }
  .ng815OwnerCell, .ng815ArrivalCell { align-self: start; }
  .ng815OwnerCell > span, .ng815ArrivalCell span, .ng815ArrivalCell small { white-space: normal; line-height: 1.45; }
  .ng815Pager { align-items: stretch; flex-direction: column; }
  .ng815Pager > div { display: grid; grid-template-columns: 1fr 1fr; }
  .ng815Pager button { width: 100%; }
  .ng815ReceptionTop, .ng815DetailGrid { grid-template-columns: 1fr; }
  .ng815ReceptionTop { padding: 12px; }
  .ng815Facts { grid-template-columns: 1fr 1fr; }
  .ng815DetailIdentity { padding: 11px 14px; }
  .ng815DetailIdentity strong { font-size: 18px; }
  .ng815ModalDetail .ng815Facts { grid-template-columns: 1fr 1fr; }
  .ng815ModalDetail .ng815Fact { min-height: 56px; padding: 9px 10px; }
  .ng815ModalDetail .ng815Fact strong { font-size: 12px; }
  .ng815Fact:nth-child(2n) { border-right: 0; }
  .ng815Fact:nth-child(4n) { border-right: 0; }
  .ng815DetailSection { padding: 14px 12px; }
  .ng815PlanningList { grid-template-columns: 1fr; }
  .ng815ScoreItem { grid-template-columns: minmax(120px, 1fr) 70px 24px; }
  .ng815ReceptionRisk { flex-direction: column; margin: 12px; }
}

@media (max-width: 420px) {
  .ng815Toolbar { grid-template-columns: 1fr; }
  .ng815Toolbar .ng815SearchField { grid-column: auto; }
  .ng815Facts { grid-template-columns: 1fr; }
  .ng815ModalDetail .ng815Facts { grid-template-columns: 1fr 1fr; }
  .ng815Fact, .ng815Fact:nth-child(2n), .ng815Fact:nth-child(4n) { border-right: 0; }
  .ng815Item { grid-template-columns: 1fr; }
  .ng815CustomerCell, .ng815IntentCell { grid-column: auto; }
}

/* Live command center: compact, scan-first layer on top of the shared detail tokens. */
.ng815CommandHead { align-items: center; margin-bottom: 10px; }
.ng815CommandHead h1 { font-size: 24px; }
.ng815IconBtn { width: 40px; height: 40px; border: 1px solid var(--ng-line); border-radius: 7px; color: var(--ng-text); background: var(--ng-surface); font: inherit; font-size: 21px; cursor: pointer; }
.ng815IconBtn:hover { border-color: var(--ng-accent); color: var(--ng-accent); }
.ng815SyncMeta { color: var(--ng-muted); font-size: 11px; white-space: nowrap; align-self: center; }
.ng815CommandMetrics { grid-template-columns: repeat(6, minmax(0, 1fr)); margin-bottom: 10px; border-radius: 7px; }
.ng815CommandMetrics .ng815Metric { padding: 9px 12px; border-bottom: 0; }
.ng815CommandMetrics .ng815Metric strong { font-size: 20px; }
.ng815Metric--money strong { color: var(--ng-accent); }
.ng815Metric--done strong { color: var(--ng-green); }
.ng815Metric--gap strong { color: var(--ng-danger); }
.ng815Metric--gap.is-over strong { color: var(--ng-green); }
.ng815HeadMeta { display: grid; gap: 2px; justify-items: end; }
.ng815HeadMeta > span { color: var(--ng-muted); font-size: 10px; }
.ng815QuickBar { display: flex; flex-wrap: nowrap; align-items: center; gap: 5px; padding: 10px; border-bottom: 1px solid var(--ng-line); background: #fbfcfc; }
.ng815SearchField { flex: 0 1 148px; width: 148px; max-width: 148px; display: flex; align-items: center; gap: 6px; height: 36px; min-width: 0; margin: 0; padding: 0 8px; border: 1px solid #ccd5da; border-radius: 6px; background: var(--ng-surface); }
.ng815QuickBar .ng815ScopeTabs { flex: 0 1 auto; min-width: 0; }
.ng815SearchField > span { color: var(--ng-muted); font-size: 17px; line-height: 1; }
.ng815SearchField input { width: 100%; min-width: 0; border: 0; outline: 0; color: var(--ng-text); background: transparent; font: inherit; font-size: 13px; }
.ng815QuickChips { flex: 1 1 240px; min-width: 0; display: grid; grid-template-columns: minmax(40px, 0.75fr) repeat(2, minmax(52px, 1fr)) minmax(84px, 1.6fr) repeat(2, minmax(52px, 1fr)); height: 36px; padding: 3px; gap: 2px; overflow: hidden; background: var(--ng-accent-soft); border: 1px solid #c5dbe6; border-radius: 8px; }
.ng815QuickChip { width: 100%; min-width: 0; min-height: 0; height: 100%; padding: 0 5px; border: 0; border-radius: 5px; color: var(--ng-accent); background: transparent; font: inherit; font-size: 12px; font-weight: 600; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ng815QuickChip.is-active { color: #0e4a68; background: var(--ng-surface); box-shadow: 0 1px 3px rgba(27, 43, 52, 0.12); font-weight: 700; }
.ng815SlotField,
.ng815SortField { flex: 0 0 auto; display: flex; align-items: center; height: 36px; min-width: 0; padding: 0 8px 0 10px; border: 1px solid #ccd5da; border-radius: 8px; background: var(--ng-surface); }
.ng815SlotField span { color: var(--ng-muted); font-size: 12px; white-space: nowrap; }
.ng815SlotField { width: 108px; flex-shrink: 0; }
.ng815SortField { width: 136px; flex-shrink: 0; }
.ng815SlotField select,
.ng815SortField select { width: 100%; height: 100%; min-width: 0; border: 0; outline: 0; color: var(--ng-text); background: transparent; font: inherit; font-size: 12px; }
.ng815List { min-height: 180px; }
.ng815ListHead {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 6px 12px;
  min-height: 36px;
  padding: 0 12px 0 16px;
  color: var(--ng-muted);
  background: #f5f7f8;
  border-bottom: 1px solid var(--ng-line);
  font-size: 11px;
  font-weight: 600;
  align-items: center;
}
.ng815ListHeadMain {
  min-width: 0;
  display: grid;
  grid-template-columns: var(--ng-list-main-cols);
  gap: var(--ng-list-main-gap);
  align-items: center;
}
.ng815ListHeadSide {
  width: var(--ng-list-side);
  min-width: var(--ng-list-side);
  text-align: right;
}
.ng815Item { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; min-height: 0; padding: 6px 12px 6px 16px; position: relative; border-bottom: 1px solid #edf0f2; background: var(--ng-surface); }
.ng815Item::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; background: #c9a06e; }
.ng815Item.is-arrived::before { background: var(--ng-green); }
.ng815Item.is-complete::before { background: var(--ng-accent); }
.ng815ItemMain { min-width: 0; display: grid; grid-template-columns: var(--ng-list-main-cols); gap: var(--ng-list-main-gap); align-items: center; }
.ng815CustomerCell, .ng815IntentCell, .ng815OwnerCell, .ng815AmountCell { min-width: 0; display: grid; gap: 2px; }
.ng815CustomerCell > div { min-width: 0; display: grid; gap: 1px; }
.ng815CustomerName { display: flex; align-items: center; gap: 6px; min-width: 0; }
.ng815CustomerName strong { flex: 0 1 auto; min-width: 0; font-size: 18px; line-height: 1.2; }
.ng815PhoneRow { display: inline-flex; align-items: center; gap: 4px; min-width: 0; max-width: 100%; }
.ng815PhoneText { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ng-muted); font-size: 11px; }
.ng815VisitMeta { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ng-muted); font-size: 11px; }
.ng815CustomerCell .ng815VisitMeta { color: var(--ng-muted); font-size: 11px; font-weight: 700; }
.ng815ExpectedProduct { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ng-pink); font-size: 14px; font-weight: 700; }
.ng815IntentCell .ng815ExpectedProduct { color: var(--ng-pink); font-size: 14px; font-weight: 700; }
.ng815CustomerName .ng815Badge { flex: 0 0 auto; color: var(--ng-warm); background: var(--ng-warm-soft); }
.ng815CustomerName .ng815Badge--ok { color: var(--ng-green); background: var(--ng-green-soft); }
.ng815CustomerName .ng815Badge--done { color: var(--ng-accent); background: var(--ng-accent-soft); }
.ng815PhoneBtn { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; padding: 0; margin: 0; border: 0; border-radius: 3px; color: #8a9bb8; background: transparent; cursor: pointer; flex-shrink: 0; }
.ng815PhoneBtn:hover, .ng815PhoneBtn.is-revealed { color: var(--ng-accent); }
.ng815PhoneBtn.is-loading { opacity: 0.55; pointer-events: none; }
.ng815PhoneIcon { display: block; width: 13px; height: 13px; }
.ng815CustomerCell strong, .ng815IntentCell strong, .ng815AmountCell strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; }
.ng815CustomerName strong { font-size: 18px; line-height: 1.2; }
.ng815IntentCell span, .ng815OwnerCell > span, .ng815AmountCell span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ng-muted); font-size: 11px; }
.ng815IntentCell strong { color: var(--ng-green); }
.ng815IntentCell strong.ng815ExpectedProduct { color: var(--ng-pink); }
.ng815OwnerCell > div { display: flex; align-items: center; gap: 5px; min-width: 0; }
.ng815TeamLabel { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ng-text); font-size: 12px; font-weight: 700; }
.ng815OwnerCell em { flex: 0 0 auto; border-radius: 4px; padding: 1px 5px; color: var(--ng-accent); background: var(--ng-accent-soft); font-size: 10px; font-style: normal; }
.ng815ListHeadMain > span:nth-child(2),
.ng815ListHeadMain > span:nth-child(5),
.ng815ListHeadMain > span:nth-child(6),
.ng815ListHeadMain > span:nth-child(7),
.ng815StatCell { text-align: center; }
.ng815StatCell { min-width: 0; display: grid; align-content: center; justify-items: stretch; }
.ng815StatCell strong { display: block; width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ng-text); font-size: 13px; font-weight: 700; text-align: center; }
.ng815StatCell strong.is-empty { color: var(--ng-muted); font-weight: 600; }
.ng815MustCell { display: flex; align-items: center; justify-content: center; min-width: 0; }
.ng815MustSwitch {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  min-height: 44px;
  margin: 0;
  cursor: pointer;
}
.ng815MustSwitch input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}
.ng815MustSwitchUi {
  display: block;
  width: 44px;
  height: 26px;
  border-radius: 999px;
  background: #e7dcd3;
  box-shadow: inset 0 0 0 1px rgba(109, 44, 32, 0.08);
  transition: background 160ms ease;
}
.ng815MustSwitchUi::after {
  content: "";
  display: block;
  width: 22px;
  height: 22px;
  margin: 2px 0 0 2px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 1px 3px rgba(46, 41, 37, 0.2);
  transition: transform 160ms ease;
}
.ng815MustSwitch input:checked + .ng815MustSwitchUi {
  background: var(--ng-accent);
}
.ng815MustSwitch input:checked + .ng815MustSwitchUi::after {
  transform: translateX(18px);
}
.ng815MustSwitch input:focus-visible + .ng815MustSwitchUi {
  box-shadow: 0 0 0 3px rgba(164, 38, 32, 0.18);
}
.ng815MustSwitch.is-readonly {
  cursor: default;
  opacity: 0.55;
}
.ng815ScopeTab em,
.ng815QuickChip em,
.ng815ListHeadMain em {
  margin-left: 3px;
  font-style: normal;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  opacity: 0.8;
}
.ng815ScopeTab.is-active em,
.ng815QuickChip.is-active em {
  opacity: 1;
}
.ng815StatsInline { display: none; }
.ng815AmountCell strong { color: var(--ng-muted); font-size: 14px; }
.ng815AmountCell strong.is-done { color: var(--ng-green); }
.ng815AmountCell .ng815ExpectedAmount { color: var(--ng-accent); font-size: 11px; font-weight: 700; }
.ng815MoneyTag { color: var(--ng-accent) !important; font-weight: 700; }
.ng815Badge--done { color: var(--ng-accent); background: var(--ng-accent-soft); }
.ng815ItemSide { width: var(--ng-list-side); min-width: var(--ng-list-side); display: flex; flex-direction: column; align-items: flex-end; justify-content: center; gap: 6px; }
.ng815ItemActions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 7px; }
.ng815TextBtn { min-width: 46px; height: 26px; padding: 0 8px; border: 1px solid var(--ng-line); border-radius: 5px; color: var(--ng-text); background: var(--ng-surface); font: inherit; font-size: 11px; cursor: pointer; }
.ng815TextBtn--accent { border-color: #b7d5c4; color: var(--ng-green); background: var(--ng-green-soft); }
.ng815TextBtn--warn { border-color: #efc2ce; color: #b54763; background: #fbe9ee; }
.ng815TextBtn:hover { border-color: var(--ng-accent); }
.ng815TextBtn--warn:hover { border-color: #b54763; }
.ng815Modal[hidden] { display: none; }
.ng815Modal { position: fixed; inset: 0; z-index: 50; display: grid; place-items: center; padding: 20px; }
.ng815ModalBackdrop { position: absolute; inset: 0; background: rgba(29, 42, 51, 0.38); }
.ng815ModalPanel { position: relative; display: grid; grid-template-rows: auto minmax(0, 1fr); width: min(720px, 100%); max-height: min(88vh, 820px); overflow: hidden; border: 1px solid var(--ng-line); border-radius: 10px; background: var(--ng-surface); box-shadow: 0 18px 44px rgba(27, 43, 52, 0.18); }
.ng815ModalHead { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--ng-line); }
.ng815ModalHead h2 { margin: 0; font-size: 19px; }
.ng815ModalHead .ng815Kicker { margin-bottom: 2px; }
.ng815ModalMeta { display: flex; align-items: center; gap: 8px; min-width: 0; margin-top: 6px; color: var(--ng-muted); font-size: 12px; }
.ng815ModalMeta[hidden] { display: none; }
.ng815ModalMeta .ng815PhoneText { color: inherit; font-size: inherit; }
.ng815IdentitySession { white-space: nowrap; }
.ng815ModalMeta em, .ng815IdentityMeta em { border-radius: 4px; padding: 2px 6px; color: var(--ng-accent); background: var(--ng-accent-soft); font-style: normal; white-space: nowrap; }
.ng815ModalClose { width: 32px; height: 32px; border: 0; border-radius: 5px; color: var(--ng-muted); background: #f1f4f5; font: inherit; font-size: 22px; line-height: 1; cursor: pointer; }
.ng815ModalBody { min-height: 0; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; }
.ng815ModalDetail { padding: 0 0 20px; }
.ng815DetailIdentity { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; padding: 12px 16px; border-bottom: 1px solid var(--ng-line); background: #fbfcfc; }
.ng815IdentityName { display: flex; align-items: center; gap: 8px; min-width: 0; }
.ng815DetailIdentity strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 21px; }
.ng815IdentityMeta { display: flex; align-items: center; gap: 8px; min-width: 0; margin-left: auto; color: var(--ng-muted); font-size: 12px; }
.ng815DetailIdentity span { color: var(--ng-muted); font-size: 12px; white-space: nowrap; }
.ng815DetailIdentity .ng815Badge { flex: 0 0 auto; color: var(--ng-warm); background: var(--ng-warm-soft); }
.ng815DetailIdentity .ng815Badge--ok { color: var(--ng-green); background: var(--ng-green-soft); }
.ng815ModalDetail .ng815ReceptionTop { padding: 14px 16px; }
.ng815ModalSection { border-top: 1px solid var(--ng-line); }
.ng815ModalSection > h3 { margin: 0; padding: 14px 16px 0; font-size: 15px; }
.ng815PortfolioNav {
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  z-index: 8;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 4px;
  margin: 0;
  padding: 8px 16px;
  background: var(--ng-surface);
  border-bottom: 1px solid var(--ng-line);
}
.ng815PortfolioNav button {
  min-width: 0;
  min-height: 36px;
  padding: 0 6px;
  border: 0;
  border-radius: 6px;
  color: var(--ng-accent);
  background: var(--ng-accent-soft);
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ng815PortfolioNav button:hover { background: #f3d4cb; }
.ng815PortfolioNav button.is-active {
  color: #fff;
  background: var(--ng-accent);
}
.ng815ModalSection > .ng815PortfolioNav + h3,
.ng815PortfolioHeading {
  margin: 0;
  padding: 12px 16px 0;
  font-size: 15px;
}
.ng815NavTarget { scroll-margin-top: 56px; }
.ng815DetailSurface--portfolio { overflow: visible; }
.ng815PortfolioNavPlaceholder {
  display: block;
  height: 0;
  overflow: hidden;
  pointer-events: none;
}
.ng815PortfolioNav.is-stuck {
  position: fixed;
  left: 0;
  right: 0;
  width: 100%;
  z-index: 40;
  box-shadow: 0 6px 16px rgba(46, 41, 37, 0.08);
}
.ng815PortfolioNavDock {
  flex: 0 0 auto;
  z-index: 40;
  background: var(--ng-surface);
  box-shadow: 0 6px 16px rgba(46, 41, 37, 0.08);
}
.ng815PortfolioNavDock .ng815PortfolioNav {
  position: relative;
  top: auto;
  box-shadow: none;
}
.ng815PortfolioNavDock.is-window-pin {
  position: absolute;
  left: 0;
  width: 100%;
  z-index: 40;
}

html.ng815DetailPage,
html.ng815DetailPage body.ng815Body {
  position: relative;
  width: 100%;
  height: 100%;
  height: 100dvh;
  height: -webkit-fill-available;
  max-height: 100%;
  max-height: 100dvh;
  max-height: -webkit-fill-available;
  min-height: 0;
  overflow: hidden !important;
  overscroll-behavior: none;
}
html.ng815DetailPage .ng815DetailWrap {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  max-height: 100%;
  min-height: 0;
  overflow: hidden;
  padding: 0;
}
html.ng815DetailPage #ngAuthGate {
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding: 18px 12px 24px;
}
html.ng815DetailPage #ngDetailMain {
  flex: 1;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  padding: 10px 8px 28px;
  touch-action: pan-y;
}
html.ng815DetailPage .ng815PortfolioNavDock .ng815PortfolioNav {
  padding-left: max(16px, env(safe-area-inset-left, 0px));
  padding-right: max(16px, env(safe-area-inset-right, 0px));
}
.ng815ExpectedForm { display: grid; gap: 14px; padding: 16px; }
.ng815FormCustomer { display: grid; gap: 3px; padding-bottom: 10px; border-bottom: 1px solid var(--ng-line); }
.ng815FormCustomer strong { font-size: 17px; }
.ng815FormCustomer span, .ng815FormCustomer small, .ng815FormHint { color: var(--ng-muted); font-size: 12px; }
.ng815FormGrid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.ng815FormSpan { grid-column: 1 / -1; }
.ng815ExpectedForm label { display: grid; gap: 6px; color: var(--ng-text); font-size: 12px; font-weight: 600; }
.ng815ExpectedForm .ng815RequiredLabel { color: var(--ng-danger); }
.ng815ExpectedForm input, .ng815ExpectedForm select { width: 100%; height: 42px; border: 1px solid #ccd5da; border-radius: 6px; padding: 0 11px; color: var(--ng-text); background: white; font: inherit; font-size: 14px; }
.ng815ExpectedForm select { padding-right: 28px; }
.ng815ExpectedForm input:focus, .ng815ExpectedForm select:focus { outline: 2px solid rgba(18, 98, 138, 0.14); border-color: var(--ng-accent); }
.ng815AmountInput { display: flex; align-items: center; border: 1px solid #ccd5da; border-radius: 6px; background: white; }
.ng815AmountInput:focus-within { outline: 2px solid rgba(18, 98, 138, 0.14); border-color: var(--ng-accent); }
.ng815AmountInput b { padding-left: 11px; color: var(--ng-muted); }
.ng815AmountInput input { border: 0; outline: 0; }
.ng815ModalActions { display: flex; justify-content: flex-end; gap: 8px; padding-top: 2px; }
.ng815FormError { margin: 0; color: var(--ng-danger); font-size: 12px; }
.ng815FormError[hidden] { display: none; }
html.ng815ModalOpen, body.ng815ModalOpen { overflow: hidden; overscroll-behavior: none; }
.ng815Modal--notice { z-index: 60; }
.ng815NoticePanel {
  position: relative;
  width: min(400px, 100%);
  overflow: hidden;
  border: 1px solid var(--ng-line);
  border-radius: 10px;
  background: var(--ng-surface);
  box-shadow: 0 18px 44px rgba(27, 43, 52, 0.18);
}
.ng815NoticeBody { display: grid; gap: 16px; padding: 16px; }
.ng815NoticeBody p { margin: 0; color: var(--ng-text); font-size: 14px; line-height: 1.55; }
.ng815NoticeBody .ng815ModalActions { padding-top: 0; }
html { scrollbar-gutter: stable; }
.ng815DetailLoading { min-height: 92px; display: flex; align-items: center; justify-content: center; gap: 8px; padding: 18px; color: var(--ng-muted); background: #f7f9fa; border-radius: 6px; font-size: 12px; }
.ng815LoadingDot { width: 7px; height: 7px; border-radius: 50%; background: var(--ng-accent); animation: ng815Pulse 900ms ease-in-out infinite alternate; }
@keyframes ng815Pulse { from { opacity: .35; transform: scale(.8); } to { opacity: 1; transform: scale(1); } }

@media (max-width: 1050px) {
  .ng815CommandMetrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ng815CommandMetrics .ng815Metric { border-bottom: 1px solid var(--ng-line); }
  .ng815CommandMetrics .ng815Metric:nth-child(3n) { border-right: 0; }
  .ng815Workspace {
    --ng-list-main-cols: minmax(92px, 1fr) 58px minmax(100px, 1fr) minmax(70px, 0.6fr) repeat(3, minmax(58px, 0.45fr)) minmax(92px, 0.85fr);
    --ng-list-main-gap: 8px;
    --ng-list-side: 132px;
  }
}

@media (max-width: 720px) {
  .ng815Wrap { padding: 10px 8px 24px; }
  .ng815CommandHead { margin-bottom: 8px; }
  .ng815CommandHead h1 { font-size: 21px; }
  .ng815CommandMetrics { grid-template-columns: repeat(3, minmax(0, 1fr)); border-radius: 7px; }
  .ng815CommandMetrics .ng815Metric { padding: 8px 9px; }
  .ng815CommandMetrics .ng815Metric span { font-size: 10px; }
  .ng815CommandMetrics .ng815Metric strong { font-size: 17px; }
  .ng815HeadMeta { justify-items: start; }
  .ng815WorkspaceHead { min-height: 36px; flex-direction: row; align-items: center; padding: 8px 10px; }
  .ng815ScopeTab { flex: 1; padding: 0 8px; font-size: 12px; }
  .ng815ResultMeta { font-size: 11px; text-align: right; }
  .ng815QuickBar { flex-wrap: wrap; gap: 6px; padding: 8px 10px; }
  .ng815SearchField { flex: 1 1 100%; width: auto; max-width: none; height: 34px; }
  .ng815QuickBar .ng815ScopeTabs { width: auto; height: 34px; }
  .ng815QuickChips { flex: 1 1 100%; min-width: 0; height: auto; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ng815QuickChip { min-height: 30px; }
  .ng815SlotField,
  .ng815SortField { height: 34px; }
  .ng815ListHead { display: none; }
  .ng815Item { grid-template-columns: minmax(0, 1fr) auto; min-height: 0; gap: 4px 8px; padding: 6px 9px 5px 13px; }
  .ng815ItemMain { grid-column: 1; grid-row: 1; grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: auto auto auto; gap: 2px 8px; align-content: center; }
  .ng815CustomerCell { grid-column: 1; grid-row: 1; min-height: 0; display: grid; gap: 1px; align-content: center; }
  .ng815MustCell { grid-column: 2; grid-row: 1; justify-self: end; align-self: center; }
  .ng815CustomerCell > div { min-width: 0; display: grid; gap: 1px; }
  .ng815CustomerCell strong { flex: 0 1 auto; font-size: 20px; line-height: 1.2; }
  .ng815PhoneText { font-size: 11px; }
  .ng815VisitMeta { font-size: 11px; }
  .ng815IntentCell { grid-column: 1 / -1; min-height: 0; display: grid; gap: 1px; padding: 0; background: transparent; border-radius: 0; }
  .ng815IntentCell strong { max-width: none; font-size: 14px; }
  .ng815ExpectedProduct { font-size: 14px; }
  .ng815OwnerCell { min-height: 0; display: flex; align-items: baseline; gap: 7px; overflow: hidden; }
  .ng815OwnerCell > div { flex: 0 1 auto; }
  .ng815OwnerCell > span { flex: 1 1 auto; min-width: 0; white-space: nowrap; line-height: 1.25; text-overflow: ellipsis; }
  .ng815AmountCell { min-height: 0; display: grid; justify-items: start; gap: 1px; text-align: left; white-space: nowrap; }
  .ng815AmountCell:empty { display: none; }
  .ng815StatCell { display: none; }
  .ng815StatsInline { grid-column: 1 / -1; display: flex; gap: 10px; min-width: 0; overflow: hidden; color: var(--ng-muted); font-size: 11px; font-weight: 600; }
  .ng815StatsInline span { white-space: nowrap; }
  .ng815ItemSide { grid-column: 2; grid-row: 1; align-self: stretch; width: 66px; min-width: 66px; justify-content: flex-end; }
  .ng815ItemActions { flex-direction: column; justify-content: flex-end; gap: 5px; }
  .ng815TextBtn { min-width: 54px; height: 26px; padding: 0 7px; }
  .ng815Modal { align-items: end; padding: 0; }
  .ng815ModalPanel { width: 100%; max-height: 92vh; border-radius: 12px 12px 0 0; border-bottom: 0; }
  .ng815Modal--notice { align-items: center; padding: 20px; }
  .ng815NoticePanel { width: min(400px, 100%); max-height: none; border-radius: 10px; }
  .ng815ModalHead { padding: 13px 14px; }
  .ng815ModalBody { max-height: calc(92vh - 64px); }
  .ng815PortfolioNav { padding: 8px 12px; gap: 3px; }
  .ng815PortfolioNav button { min-height: 34px; font-size: 12px; }
  .ng815FormGrid { grid-template-columns: 1fr; }
  .ng815DetailIdentity { padding: 11px 14px; }
  .ng815DetailIdentity strong { font-size: 18px; }
  .ng815TreatmentGrid { grid-template-columns: 1fr; }
}

@media (max-width: 420px) {
  .ng815Toolbar { grid-template-columns: 1fr 1fr; }
  .ng815CommandMetrics .ng815Metric strong { font-size: 16px; }
  .ng815Item { min-height: 0; }
}

/* Champion report visual layer: selected 8.15 / 8.22 campaign direction. */
.ng815CampaignShell {
  width: 100%;
  min-height: 100vh;
  display: grid;
  grid-template-columns: 134px minmax(0, 1fr);
  background: var(--ng-oxblood);
}

.ng815CampaignRail {
  position: sticky;
  top: 0;
  align-self: start;
  height: 100vh;
  min-height: 680px;
  display: flex;
  flex-direction: column;
  align-items: center;
  overflow: hidden;
  padding: 26px 14px 32px;
  color: #fff6e7;
  background: var(--ng-oxblood);
  border-right: 1px solid #761711;
  box-shadow: 7px 0 24px rgba(91, 26, 20, 0.11);
}

.ng815CampaignDate {
  width: 102px;
  min-height: 72px;
  display: grid;
  place-content: center;
  gap: 5px;
  border: 1px solid #f4d489;
  border-radius: 7px;
  color: #84211d;
  background: #f6d98d;
  text-align: center;
  box-shadow: 0 7px 18px rgba(73, 16, 13, 0.2);
}

.ng815CampaignDate strong,
.ng815CampaignDate span {
  display: block;
  white-space: nowrap;
  font-family: "Songti SC", STSong, "SimSun", serif;
  font-weight: 700;
}

.ng815CampaignDate strong { font-size: 15px; }
.ng815CampaignDate span { font-size: 18px; }

.ng815CampaignTitle {
  margin: 28px 0 0;
  writing-mode: vertical-rl;
  text-orientation: upright;
  color: #fff7e9;
  font-family: "Songti SC", STSong, "SimSun", serif;
  font-size: 50px;
  font-weight: 900;
  line-height: 1.08;
  letter-spacing: 8px;
}

.ng815CampaignShell > .ng815Wrap {
  width: 100%;
  max-width: none;
  min-width: 0;
  margin: 0;
  padding: 26px 18px 42px;
  background: var(--ng-bg);
}

.ng815CommandHead {
  min-height: 92px;
  margin-bottom: 14px;
  padding: 0 4px 0 10px;
}

.ng815CommandHead .ng815Kicker { display: none; }

.ng815CommandHead h1 {
  color: var(--ng-accent);
  font-family: "Songti SC", STSong, "SimSun", serif;
  font-size: 48px;
  font-weight: 700;
  line-height: 1.08;
  letter-spacing: -1px;
}

.ng815CommandHead .ng815Meta {
  margin-top: 8px;
  color: #6d625c;
  font-size: 14px;
}

.ng815CommandHead .ng815Actions {
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  max-width: min(760px, 100%);
}

.ng815TeamSwitch {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 6px;
  max-width: 100%;
}

.ng815TeamChip {
  min-height: 36px;
  border: 1px solid var(--ng-line);
  border-radius: 999px;
  padding: 0 12px;
  color: var(--ng-text);
  background: #fff;
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}

.ng815TeamChip.is-active {
  border-color: var(--ng-accent);
  color: #fff;
  background: var(--ng-accent);
}

.ng815TeamChip:focus-visible {
  outline: 2px solid rgba(164, 38, 32, 0.35);
  outline-offset: 2px;
}

.ng815SessionSwitch {
  display: inline-flex;
  align-items: stretch;
  margin: 8px 0 4px;
  padding: 3px;
  gap: 3px;
  min-height: 44px;
  background: #fff7f2;
  border: 1px solid #e4cdbd;
  border-radius: 10px;
}

.ng815SessionTab {
  min-width: 104px;
  min-height: 38px;
  padding: 0 16px;
  border: 0;
  border-radius: 7px;
  color: #8a5a48;
  background: transparent;
  font: inherit;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
}

.ng815SessionTab.is-active {
  color: #fff;
  background: var(--ng-accent);
}

.ng815SessionTab:focus-visible {
  outline: 2px solid rgba(164, 38, 32, 0.35);
  outline-offset: 2px;
}

.ng815TestViewer {
  min-height: 48px;
  padding: 8px 12px;
  border-color: #e4cdbd;
  border-radius: 8px;
  background: #fffaf6;
}

.ng815TestViewer span { font-size: 12px; }
.ng815TestViewer select { max-width: 260px; font-size: 13px; font-weight: 600; }

.ng815IconBtn {
  width: 48px;
  height: 48px;
  border-color: #e4cdbd;
  border-radius: 8px;
  background: #fffaf6;
}

.ng815IconBtn:hover {
  color: #fff;
  border-color: var(--ng-accent);
  background: var(--ng-accent);
}

.ng815CommandMetrics {
  grid-template-columns: 1.08fr .84fr .84fr 1.08fr 1.08fr 1.08fr;
  overflow: hidden;
  margin-bottom: 16px;
  border-color: #dfc5b4;
  border-radius: 9px;
  background: var(--ng-surface);
  box-shadow: 0 8px 22px rgba(109, 44, 32, 0.06);
}

.ng815CommandMetrics .ng815Metric {
  min-height: 114px;
  display: grid;
  align-content: center;
  padding: 14px 22px;
  border-color: #ead4c5;
}

.ng815CommandMetrics .ng815Metric span {
  color: #7f6f64;
  font-size: 15px;
}

.ng815CommandMetrics .ng815Metric strong {
  margin-top: 6px;
  color: var(--ng-text);
  font-family: Georgia, "Times New Roman", "Songti SC", serif;
  font-size: clamp(24px, 2.25vw, 35px);
  font-weight: 700;
  line-height: 1;
}

.ng815CommandMetrics .ng815Metric--ok strong { color: var(--ng-green); }

.ng815CommandMetrics .ng815Metric--money,
.ng815CommandMetrics .ng815Metric--done,
.ng815CommandMetrics .ng815Metric--gap {
  border-right-color: rgba(255, 255, 255, 0.4);
}

.ng815CommandMetrics .ng815Metric--money { background: var(--ng-gold); }
.ng815CommandMetrics .ng815Metric--done { background: var(--ng-green); }
.ng815CommandMetrics .ng815Metric--gap { background: var(--ng-accent); }
.ng815CommandMetrics .ng815Metric--gap.is-over { background: var(--ng-green); }

.ng815CommandMetrics .ng815Metric--money span,
.ng815CommandMetrics .ng815Metric--money strong,
.ng815CommandMetrics .ng815Metric--done span,
.ng815CommandMetrics .ng815Metric--done strong,
.ng815CommandMetrics .ng815Metric--gap span,
.ng815CommandMetrics .ng815Metric--gap strong,
.ng815CommandMetrics .ng815Metric--gap.is-over strong {
  color: #fffaf2;
}

.ng815Workspace {
  border-color: #e4cdbd;
  border-radius: 10px;
  background: var(--ng-surface);
  box-shadow: 0 10px 26px rgba(109, 44, 32, 0.05);
}

.ng815QuickBar {
  min-height: 72px;
  gap: 5px;
  padding: 12px 10px;
  border-bottom-color: #ead7ca;
  background: #fffaf6;
}

.ng815SearchField {
  flex-basis: 148px;
  width: 148px;
  max-width: 148px;
  height: 48px;
  padding: 0 10px;
  border-color: #e1c6b3;
  border-radius: 8px;
  background: #fffdfb;
}

.ng815SearchField:focus-within,
.ng815SlotField:focus-within,
.ng815SortField:focus-within {
  border-color: var(--ng-accent);
  box-shadow: 0 0 0 3px rgba(164, 38, 32, 0.1);
}

.ng815SearchField input { font-size: 14px; }

.ng815ScopeTabs,
.ng815QuickChips {
  height: 48px;
  padding: 4px;
  gap: 3px;
  border-color: #ead5c5;
  border-radius: 8px;
  background: #f8efe8;
}

.ng815ScopeTab,
.ng815QuickChip {
  border-radius: 6px;
  color: #5f534c;
  font-weight: 600;
}

.ng815ScopeTab { padding-inline: 6px; font-size: 12px; }
.ng815QuickChip { padding-inline: 4px; font-size: 12px; }

.ng815ScopeTab.is-active,
.ng815QuickChip.is-active {
  color: #fff;
  background: var(--ng-accent);
  box-shadow: 0 3px 8px rgba(125, 28, 24, 0.2);
}

.ng815SlotField,
.ng815SortField {
  height: 48px;
  padding: 0 8px 0 10px;
  border-color: #e1c6b3;
  border-radius: 8px;
  background: #fffdfb;
}

.ng815SlotField select,
.ng815SortField select { min-width: 0; font-size: 13px; }

.ng815ListHead {
  min-height: 46px;
  padding-left: 18px;
  color: #786960;
  border-bottom-color: #e8d3c5;
  background: #f8efe8;
  font-size: 13px;
}

.ng815Item {
  min-height: 106px;
  padding: 10px 12px 10px 18px;
  border-bottom-color: #efe0d6;
  background: #fffdfb;
}

.ng815Item:hover { background: #fff8f3; }
.ng815Item::before { width: 4px; background: #d1954d; }
.ng815Item.is-arrived::before { background: var(--ng-green); }
.ng815Item.is-complete::before { background: var(--ng-accent); }

.ng815CustomerName strong {
  flex: 0 0 auto;
  max-width: 100%;
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
  color: #28231f;
  font-family: "Songti SC", STSong, "SimSun", serif;
  font-size: 24px;
  font-weight: 700;
}

.ng815CustomerName {
  flex-wrap: wrap;
  row-gap: 4px;
}

.ng815CustomerName .ng815Badge {
  min-width: 50px;
  min-height: 26px;
  padding: 3px 8px;
  border-radius: 5px;
  font-size: 11px;
}

.ng815IntentCell strong,
.ng815IntentCell .ng815ExpectedProduct {
  color: var(--ng-green);
  font-size: 17px;
}

.ng815VisitMeta,
.ng815PhoneText,
.ng815IntentCell span,
.ng815OwnerCell > span,
.ng815AmountCell span { font-size: 13px; }
.ng815CustomerCell .ng815VisitMeta { font-size: 13px; }

.ng815StatCell strong { font-size: 14px; }
.ng815AmountCell strong.is-done { color: #ba3b35; font-size: 17px; }
.ng815TeamLabel { font-size: 14px; }

.ng815IntentCell strong.ng815ExpectedProduct { color: #ba3b35; }
.ng815IntentCell strong.ng815ExpectedProduct {
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
  line-height: 1.35;
}
.ng815AmountCell .ng815ExpectedAmount,
.ng815MoneyTag { color: #0f5d85 !important; }

.ng815OwnerCell em {
  color: #276985;
  background: #e7f2f7;
}

.ng815TextBtn {
  min-width: 58px;
  height: 34px;
  padding: 0 8px;
  border-color: #e3cdbd;
  border-radius: 6px;
  background: #fffdfb;
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
}

.ng815TextBtn--warn {
  color: #fff;
  border-color: var(--ng-accent);
  background: var(--ng-accent);
}

.ng815TextBtn--accent {
  color: #fff;
  border-color: var(--ng-green);
  background: var(--ng-green);
}

.ng815TextBtn--warn:hover {
  color: #fff;
  border-color: #7d1915;
  background: #7d1915;
}

.ng815TextBtn--accent:hover {
  color: #fff;
  border-color: #195c3e;
  background: #195c3e;
}

.ng815Pager { border-top-color: #e8d3c5; background: #fffaf6; }

.ng815ModalBackdrop { background: rgba(62, 27, 23, 0.48); }
.ng815ModalPanel,
.ng815NoticePanel { border-color: #dec3b1; box-shadow: 0 18px 48px rgba(64, 24, 20, 0.22); }
.ng815ModalHead,
.ng815DetailIdentity { background: #fff7f1; }

@media (min-width: 1181px) {
  .ng815SearchField {
    flex-basis: 156px;
    width: 156px;
    max-width: 156px;
  }

  .ng815ScopeTab { min-width: 0; padding-inline: 6px; font-size: 12px; }
  .ng815QuickChips { flex: 1 1 240px; min-width: 0; }
  .ng815SlotField { width: 104px; }
  .ng815SortField { width: 136px; }
  .ng815SlotField select,
  .ng815SortField select { min-width: 0; }
}

@media (min-width: 1181px) and (max-width: 1339px) {
  .ng815QuickBar { flex-wrap: wrap; }
  .ng815SearchField { flex: 1 1 240px; width: auto; max-width: none; }
  .ng815QuickChips { min-width: 0; }
}

@media (max-width: 1180px) {
  .ng815CampaignShell { grid-template-columns: 104px minmax(0, 1fr); }
  .ng815CampaignRail { padding-inline: 10px; }
  .ng815CampaignDate { width: 82px; }
  .ng815CampaignTitle { font-size: 40px; }
  .ng815CommandHead h1 { font-size: 36px; }
  .ng815QuickBar { flex-wrap: wrap; }
  .ng815SearchField { flex: 1 1 240px; width: auto; max-width: none; }
  .ng815Workspace { --ng-list-side: 66px; }
  .ng815ItemActions { flex-direction: column; align-items: stretch; gap: 6px; }
  .ng815TextBtn { width: 58px; min-width: 58px; }
}

@media (max-width: 720px) {
  .ng815CampaignShell { display: block; }

  .ng815CampaignRail {
    position: static;
    width: 100%;
    height: 52px;
    min-height: 0;
    flex-direction: row;
    justify-content: space-between;
    padding: 7px 12px;
    border-right: 0;
    border-bottom: 1px solid #761711;
    box-shadow: 0 5px 16px rgba(91, 26, 20, 0.12);
  }

  .ng815CampaignDate {
    width: auto;
    min-height: 36px;
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 0 10px;
    border-radius: 5px;
    box-shadow: none;
  }

  .ng815CampaignDate strong { font-size: 13px; }
  .ng815CampaignDate span { font-size: 14px; }

  .ng815CampaignTitle {
    margin: 0;
    writing-mode: horizontal-tb;
    color: #fff7e9;
    font-size: 24px;
    font-weight: 900;
    line-height: 36px;
    letter-spacing: 2px;
  }

  .ng815CampaignShell > .ng815Wrap { padding: 12px 8px 26px; }

  .ng815CommandHead {
    min-height: 0;
    align-items: flex-start;
    margin-bottom: 10px;
    padding: 0 2px;
  }

  .ng815CommandHead h1 { font-size: 28px; letter-spacing: 0; }
  .ng815CommandHead .ng815Meta { margin-top: 5px; font-size: 12px; }
  .ng815CommandHead .ng815Actions { gap: 5px; flex-wrap: wrap; }
  .ng815TestViewer { min-height: 38px; padding: 5px 7px; }
  .ng815TestViewer select { max-width: 150px; font-size: 11px; }
  .ng815IconBtn { width: 38px; height: 38px; }

  .ng815CommandMetrics { margin-bottom: 10px; }
  .ng815CommandMetrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ng815CommandMetrics .ng815Metric { min-height: 72px; padding: 9px 10px; }
  .ng815CommandMetrics .ng815Metric span { font-size: 10px; }
  .ng815CommandMetrics .ng815Metric strong { margin-top: 4px; font-size: 18px; }

  .ng815QuickBar { min-height: 0; gap: 7px; padding: 9px; }
  .ng815SearchField { height: 38px; }
  .ng815ScopeTabs { height: 38px; }
  .ng815QuickChips { height: auto; }
  .ng815ScopeTabs { flex: 1 1 100%; }
  .ng815ScopeTab { flex: 1; padding-inline: 8px; font-size: 12px; }
  .ng815QuickChips { flex: 1 1 100%; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ng815QuickChip { min-height: 32px; padding-inline: 6px; font-size: 11px; }
  .ng815SlotField,
  .ng815SortField { height: 38px; }

  .ng815Item {
    min-height: 96px;
    padding: 6px 9px 5px 13px;
  }

  .ng815CustomerName strong { font-size: 20px; }
  .ng815VisitMeta,
  .ng815PhoneText,
  .ng815IntentCell span,
  .ng815OwnerCell > span,
  .ng815AmountCell span { font-size: 11px; }
  .ng815CustomerCell .ng815VisitMeta { font-size: 11px; }
  .ng815TextBtn { min-width: 54px; height: 26px; padding-inline: 7px; font-size: 11px; }
}

@media (max-width: 460px) {
  .ng815CommandHead { display: grid; grid-template-columns: minmax(0, 1fr) auto; }
  .ng815CommandHead .ng815Actions { align-content: start; }
  .ng815TestViewer span { display: none; }
  .ng815TestViewer select { max-width: 128px; }
  .ng815SyncMeta { display: none; }
  .ng815QuickChips { flex-basis: 100%; }
  .ng815SlotField { margin-left: auto; }
}
