/* M08 — coupons (prefix .m08-) */
.m08-code { font-weight: 600; letter-spacing: .02em; white-space: nowrap; font-variant-numeric: tabular-nums; }
.m08-num { font-variant-numeric: tabular-nums; }
.m08-neg { color: var(--rv-danger); font-variant-numeric: tabular-nums; }
.m08-fail { display: inline-block; max-width: 220px; color: var(--rv-danger); font-size: var(--rv-fs-small); line-height: 18px; white-space: normal; text-align: left; }
.m08-campaign { overflow-wrap: anywhere; }
.m08-kpi { margin-bottom: var(--rv-space-4); }
.m08-mid { font-variant-numeric: tabular-nums; }

/* scope */
.m08-scope { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 6px; min-width: 0; }
.m08-scope__item { max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.m08-scope-all { color: var(--rv-primary-800); font-weight: 500; }
.m08-more { display: inline-flex; padding: 0 6px; border-radius: var(--rv-radius-pill); background: var(--rv-neutral-100); color: var(--rv-text-secondary); font-size: var(--rv-fs-small); line-height: 18px; white-space: nowrap; }
.m08-scope-list { margin: 0; padding-left: var(--rv-space-5); }
.m08-scope-list li { margin: 2px 0; }

/* quota */
.m08-quota { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 2px 8px; min-width: 110px; }
.m08-quota__n { font-variant-numeric: tabular-nums; white-space: nowrap; }
.m08-quota__res { color: var(--rv-info); white-space: nowrap; justify-self: end; }
.m08-quota__bar { grid-column: 1 / -1; display: flex; height: 6px; overflow: hidden; border-radius: var(--rv-radius-pill); background: var(--rv-neutral-200); }
.m08-quota__bar > span { display: block; height: 100%; background: var(--rv-primary-600); }
.m08-quota__bar > span.is-res { background: repeating-linear-gradient(135deg, var(--rv-info), var(--rv-info) 3px, #7FB6DE 3px, #7FB6DE 6px); }

/* form (CPN-02/03) */
.m08-form__grid { display: grid; grid-template-columns: minmax(0, 1fr) 460px; gap: var(--rv-space-4); align-items: start; }
.m08-form__aside { position: sticky; top: calc(var(--rv-header-height, 64px) + 12px); min-width: 0; }
.m08-courses .rv-options { max-height: 260px; overflow: auto; padding: 8px 10px; border: 1px solid var(--rv-divider); border-radius: var(--rv-radius-card); }
.m08-kv .rv-kv__row { grid-template-columns: 150px minmax(0, 1fr); }

/* Price Simulation */
.m08-sim { display: flex; flex-direction: column; gap: var(--rv-space-3); min-width: 0; }
.m08-sim .rv-grid-form { grid-template-columns: minmax(0, 1fr); }
.m08-sim__courses { max-height: 200px; overflow: auto; padding: 8px 10px; border: 1px solid var(--rv-divider); border-radius: var(--rv-radius-card); }
.m08-sim__stack { padding: 10px 12px; border: 1px solid var(--rv-warning-border); background: var(--rv-warning-bg); border-radius: var(--rv-radius-card); }
.m08-simtable { min-width: 620px; font-size: 13px; }
.m08-simtable th[scope="row"] { font-weight: 500; text-align: left; min-width: 160px; }
.m08-simtable .is-n { text-align: center; white-space: nowrap; font-variant-numeric: tabular-nums; vertical-align: top; }
.m08-simtable tfoot th, .m08-simtable tfoot td { background: var(--rv-surface-subtle); font-weight: 500; }
.m08-steps { margin: 0; padding-left: var(--rv-space-5); font-size: 13px; line-height: 22px; }
.m08-steps li { margin: 2px 0; }

/* detail (CPN-04) */
.m08-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; margin-bottom: var(--rv-space-4); border: 1px solid var(--rv-card-border); border-radius: var(--rv-radius-card); background: var(--rv-divider); overflow: hidden; }
.m08-summary__item { display: flex; flex-direction: column; gap: 2px; padding: var(--rv-space-3) var(--rv-space-4); background: var(--rv-surface); min-width: 0; }
.m08-summary__label { font-size: var(--rv-fs-small); color: var(--rv-text-secondary); }
.m08-summary__value { font-size: var(--rv-fs-stat-sm); line-height: var(--rv-lh-stat-sm); font-weight: 600; font-variant-numeric: tabular-nums; }
.m08-tabbody { margin-top: var(--rv-space-4); }
.m08-cond { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: var(--rv-space-4); align-items: start; }
.m08-affected { list-style: none; margin: 0; padding: 0; font-size: 13px; line-height: 20px; }
.m08-statf { flex: 1 1 auto; min-width: 0; }

@media (max-width: 1199px) {
  .m08-form__grid, .m08-cond { grid-template-columns: minmax(0, 1fr); }
  .m08-form__aside { position: static; }
  .m08-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
  .m08-summary { grid-template-columns: minmax(0, 1fr); }
  .m08-kv .rv-kv__row { grid-template-columns: 112px minmax(0, 1fr); }
  .m08-fail { max-width: none; }
}
.m08-sim__q { margin-bottom: 8px; }
