/* Shared styles for the RiverSync domain & services document set
   (master + nine drill-downs). Layered on top of ../prd/prd-doc.css. */

/* service chips — tone per domain, mirrors the ERD tones */
.svcchip{display:inline-block; font-family:var(--rs-font-mono, ui-monospace, monospace);
  font-size:8.5px; font-weight:700; letter-spacing:.05em; padding:1px 6px; border-radius:2px;
  border:1px solid; vertical-align:1px;}
.svcchip--blue{color:#3679AC; background:#E8F1F8; border-color:#C9DDEE;}
.svcchip--purple{color:#7363A3; background:#F0EDF7; border-color:#D8D0E8;}
.svcchip--teal{color:#4C7C8A; background:#E9F2F4; border-color:#C7DDE2;}
.svcchip--green{color:#3F8A45; background:#EAF4EB; border-color:#C8E2CA;}
.svcchip--ochre{color:#9C7A1E; background:#FAF1D8; border-color:#EBD9A4;}
.svcchip--red{color:#B0474B; background:#F9ECED; border-color:#EBC8CA;}
.svcchip--slate{color:#66737F; background:#F1F4F7; border-color:#D7DEE4;}

/* method pills */
.mpill{display:inline-block; font-family:var(--rs-font-mono, ui-monospace, monospace);
  font-size:8.5px; font-weight:700; letter-spacing:.04em; padding:2px 6px; border-radius:2px;
  border:1px solid; white-space:nowrap;}
.mpill--get{color:#3679AC; background:#E8F1F8; border-color:#C9DDEE;}
.mpill--post{color:#3F8A45; background:#EAF4EB; border-color:#C8E2CA;}
.mpill--put{color:#7363A3; background:#F0EDF7; border-color:#D8D0E8;}
.mpill--patch{color:#9C7A1E; background:#FAF1D8; border-color:#EBD9A4;}
.mpill--delete{color:#B0474B; background:#F9ECED; border-color:#EBC8CA;}
.mpill--sub{color:#66737F; background:#F1F4F7; border-color:#D7DEE4;}

/* endpoint catalog */
.eptab{width:100%; border-collapse:collapse; font-size:12.5px; margin:10px 0 4px;}
.eptab td{padding:9px 10px 9px 0; border-bottom:1px solid var(--hairline); vertical-align:top;}
.eptab__g td{font-size:10px; font-weight:700; letter-spacing:.07em; text-transform:uppercase;
  color:var(--ink-3); border-bottom:1px solid var(--hairline-strong); padding:18px 0 5px;}
.eptab__m{width:56px; white-space:nowrap;}
.eptab__a{width:150px; text-align:right;}
.eptab__a .mono{font-size:9.5px; color:var(--ink-3); line-height:1.7;}
.eppath{font-family:var(--rs-font-mono, ui-monospace, monospace); font-size:11px; font-weight:600; color:var(--ink);}
.epname{font-size:12px; font-weight:600; color:var(--ink-2); margin-left:10px;}
.epdesc{margin:3px 0 0; font-size:12px; color:var(--ink-2);}
.epdesc i{color:var(--ink-3);}
.epio{display:flex; gap:7px; align-items:baseline; margin-top:3px;
  font-family:var(--rs-font-mono, ui-monospace, monospace); font-size:10px; color:var(--ink-3); letter-spacing:0;}
.epio__dir{color:var(--accent); font-weight:700; flex:none;}

/* event catalog */
.evtab{width:100%; border-collapse:collapse; font-size:12.5px; margin:10px 0 4px;}
.evtab th{text-align:left; font-size:10px; font-weight:700; letter-spacing:.07em; text-transform:uppercase;
  color:var(--ink-3); padding:6px 12px 6px 0; border-bottom:1px solid var(--hairline-strong);}
.evtab td{padding:9px 12px 9px 0; border-bottom:1px solid var(--hairline); vertical-align:top;}
.evtab td:nth-child(2), .evtab td:nth-child(3){white-space:nowrap; width:1%;}
.evtab td:nth-child(3){white-space:normal; min-width:90px;}
.evkey{font-family:var(--rs-font-mono, ui-monospace, monospace); font-size:11px; font-weight:700; color:var(--ink);}
.evnone{color:#C3CCD4;}

/* owned-entity cards (composed from the ERD catalog) */
.owned{display:grid; grid-template-columns:repeat(3, 1fr); gap:10px; margin:12px 0 4px;}
.owned__e{border:1px solid var(--hairline-strong); border-top:3px solid var(--ink-3);
  border-radius:3px; padding:8px 11px 9px; break-inside:avoid;}
.owned__h{display:flex; justify-content:space-between; align-items:baseline; gap:8px; margin-bottom:5px;}
.owned__h b{font-size:12px;}
.owned__h .mono{font-size:8.5px; color:var(--ink-3);}
.owned__f{display:flex; justify-content:space-between; gap:8px;
  font-family:var(--rs-font-mono, ui-monospace, monospace); font-size:9.5px; color:var(--ink-2); line-height:1.75;}
.owned__f i{font-style:normal; font-size:8.5px; font-weight:700;}

/* context map */
.dommap{margin:16px 0 6px; break-inside:avoid;}
.dommap svg{display:block; width:100%; height:auto;}

/* figure captions — same idiom as the ERD set (erd-doc.css is not loaded here) */
.erd-cap{font-size:11px; color:var(--ink-3); margin:6px 0 0; display:flex; justify-content:space-between; gap:16px;}
.erd-cap .mono{font-size:9.5px; white-space:nowrap;}

/* ====================================================================
   DDD layer — strategic (subdomains, context map) + tactical (ubiquitous
   language, aggregates). Used by DOMR.subdomains / contextmap / language /
   aggregates. Self-contained; layered on prd-doc.css tokens. */

/* subdomain classification — three columns, core / supporting / generic */
.subd{display:grid; grid-template-columns:repeat(3, 1fr); gap:12px; margin:14px 0 6px; break-inside:avoid;}
.subd__col{border:1px solid var(--hairline-strong); border-radius:4px; overflow:hidden; background:#fff;}
.subd__h{padding:8px 12px; border-bottom:1px solid var(--hairline);}
.subd__h .k{font-size:8.5px; font-weight:700; letter-spacing:.09em; text-transform:uppercase; color:var(--ink-3);}
.subd__h .n{display:block; font-size:13px; font-weight:600; color:var(--ink); margin-top:1px;}
.subd--core .subd__h{background:#FDEEEE; border-bottom-color:#F4C9CA;} .subd--core .subd__h .n{color:#8E3438;}
.subd--supporting .subd__h{background:var(--accent-soft); border-bottom-color:#C9DDEE;} .subd--supporting .subd__h .n{color:#2C638F;}
.subd--generic .subd__h{background:#F1F4F7; border-bottom-color:var(--hairline-strong);} .subd--generic .subd__h .n{color:var(--ink-2);}
.subd__e{padding:8px 12px; border-bottom:1px solid var(--hairline);}
.subd__e:last-child{border-bottom:0;}
.subd__e b{font-size:12px; font-weight:600; color:var(--ink);}
.subd__e p{margin:2px 0 0; font-size:11px; color:var(--ink-3); line-height:1.45;}

/* context map — relationship-pattern table between bounded contexts */
.cmap{width:100%; border-collapse:collapse; font-size:12.5px; margin:12px 0 4px; table-layout:fixed;}
.cmap th{text-align:left; font-size:10px; font-weight:700; letter-spacing:.07em; text-transform:uppercase;
  color:var(--ink-3); padding:6px 12px 6px 0; border-bottom:1px solid var(--hairline-strong);}
.cmap td{padding:9px 12px 9px 0; border-bottom:1px solid var(--hairline); vertical-align:top;}
.cmap th:nth-child(1), .cmap td:nth-child(1){width:23%;}
.cmap th:nth-child(2), .cmap td:nth-child(2){width:15%;}
.cmap th:nth-child(3), .cmap td:nth-child(3){width:16%;}
.cmap th:nth-child(4), .cmap td:nth-child(4){width:46%;}
.cmap td:nth-child(4){font-size:11.5px; color:var(--ink-2); line-height:1.45;}
.cmap td:nth-child(4) i{color:var(--ink-3);}
.cmap tr{break-inside:avoid;}
.cmap__rel{line-height:1.7;}
.cmap__rel .ar{color:var(--ink-3); margin:0 5px;}
.patt{display:inline-block; font-size:9px; font-weight:700; letter-spacing:.04em; padding:2px 7px; border-radius:999px;
  border:1px solid #C9DDEE; color:#2C638F; background:var(--accent-soft); line-height:1.5;}
.cmap__via{font-family:var(--rs-font-mono, ui-monospace, monospace); font-size:10px; color:var(--ink-3); overflow-wrap:break-word;}

/* ubiquitous language — glossary */
.ulang{display:grid; grid-template-columns:repeat(2, 1fr); gap:0 24px; margin:12px 0 4px;}
.ulang__t{display:flex; gap:10px; padding:7px 0; border-bottom:1px solid var(--hairline); break-inside:avoid;}
.ulang__t dt{flex:none; width:118px; font-weight:600; font-size:12px; color:var(--ink);}
.ulang__t dd{margin:0; font-size:11.5px; color:var(--ink-3); line-height:1.45;}

/* aggregates — root + members + invariants */
.aggr{display:grid; grid-template-columns:repeat(2, 1fr); gap:11px; margin:12px 0 4px;}
.aggr__c{border:1px solid var(--hairline-strong); border-top:3px solid #B0474B; border-radius:3px;
  padding:9px 12px 10px; break-inside:avoid; background:#fff;}
.aggr__h{display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; margin-bottom:5px;}
.aggr__h .rt{font-size:8px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:#B0474B;}
.aggr__h b{font-size:13px; font-weight:600; color:var(--ink);}
.aggr__p{font-family:var(--rs-font-mono, ui-monospace, monospace); font-size:9.5px; color:var(--ink-3); margin:0 0 6px;}
.aggr__p .lbl{font-family:var(--rs-font-sans, Roboto, sans-serif); font-size:8.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-3); margin-right:5px;}
.aggr__inv{margin:0; padding-left:16px;}
.aggr__inv li{font-size:11px; color:var(--ink-2); margin:3px 0; line-height:1.4; break-inside:avoid;}
.aggr__inv li .mono{font-size:10px;}

@media print{
  .dommap{break-inside:avoid;}
  .dommap svg, .svcchip, .mpill, .patt, .subd__h{print-color-adjust:exact; -webkit-print-color-adjust:exact;}
  .eptab tr, .evtab tr, .owned__e, .subd__col, .aggr__c, .cmap tr, .ulang__t{break-inside:avoid;}
}
