/*
 * Office 2013-inspired presentation layer for the bundled Bootstrap Icons.
 * Keep glyph selection in markup; keep palette and semantic coloring here.
 */
:root {
  --office-icon-ink: #6b737b;
  --office-icon-blue: #2b75b8;
  --office-icon-green: #4f9b65;
  --office-icon-orange: #e09a43;
  --office-icon-red: #d3523c;
  --office-icon-purple: #8064a2;
  --office-icon-yellow: #e6b94f;
}

.office-icons.dark {
  --office-icon-ink: #c5cbd1;
  --office-icon-blue: #70a9dc;
  --office-icon-green: #78b88a;
  --office-icon-orange: #efb56e;
  --office-icon-red: #e47868;
  --office-icon-purple: #ad98c7;
  --office-icon-yellow: #efd276;
}

.office-icons i.bi {
  --office-icon-primary: var(--office-icon-ink);
  --office-icon-accent: var(--office-icon-blue);
  --office-icon-split: 70%;
  color: var(--office-icon-primary);
  font-style: normal;
}

/* A hard diagonal color break matches the flat, small-pixel Office 2013 family. */
.office-icons i.bi::before {
  color: var(--office-icon-primary);
  background: linear-gradient(
    135deg,
    var(--office-icon-primary) 0 var(--office-icon-split),
    var(--office-icon-accent) var(--office-icon-split) 100%
  );
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

/* People, collaboration and communication use the blue/green Office palette. */
.office-icons i[class*="bi-person"],
.office-icons i[class*="bi-people"],
.office-icons i[class*="bi-chat"],
.office-icons i[class*="bi-headset"],
.office-icons i[class*="bi-telephone"],
.office-icons i[class*="bi-telegram"] {
  --office-icon-primary: var(--office-icon-blue);
  --office-icon-accent: var(--office-icon-green);
  --office-icon-split: 66%;
}

/* Documents and scheduling use the gray/blue or gray/orange combinations. */
.office-icons i[class*="bi-file"],
.office-icons i[class*="bi-folder"],
.office-icons i[class*="bi-book"],
.office-icons i[class*="bi-envelope"],
.office-icons i[class*="bi-inbox"],
.office-icons i[class*="bi-window"] {
  --office-icon-primary: var(--office-icon-ink);
  --office-icon-accent: var(--office-icon-blue);
}
.office-icons i[class*="bi-calendar"],
.office-icons i[class*="bi-clock"],
.office-icons i[class*="bi-stopwatch"] {
  --office-icon-primary: var(--office-icon-ink);
  --office-icon-accent: var(--office-icon-orange);
}

/* Data, reports and settings receive the warmer accents visible in the reference. */
.office-icons i[class*="bi-database"],
.office-icons i[class*="bi-table"],
.office-icons i[class*="bi-grid"],
.office-icons i[class*="bi-bar-chart"],
.office-icons i[class*="bi-pie-chart"],
.office-icons i[class*="bi-graph"] {
  --office-icon-primary: var(--office-icon-blue);
  --office-icon-accent: var(--office-icon-orange);
  --office-icon-split: 68%;
}
.office-icons i[class*="bi-gear"],
.office-icons i[class*="bi-wrench"],
.office-icons i[class*="bi-sliders"] {
  --office-icon-primary: var(--office-icon-ink);
  --office-icon-accent: var(--office-icon-orange);
  --office-icon-split: 64%;
}
.office-icons i[class*="bi-globe"],
.office-icons i[class*="bi-link"],
.office-icons i[class*="bi-arrow"],
.office-icons i[class*="bi-chevron"] {
  --office-icon-primary: var(--office-icon-blue);
  --office-icon-accent: var(--office-icon-green);
}

/* Status colors stay recognizable regardless of the surrounding application theme. */
.office-icons i[class*="bi-check"],
.office-icons i[class*="bi-plus"] {
  --office-icon-primary: var(--office-icon-green);
  --office-icon-accent: var(--office-icon-blue);
}
.office-icons i[class*="bi-x"],
.office-icons i[class*="bi-trash"],
.office-icons i[class*="bi-exclamation"],
.office-icons i[class*="bi-lock"] {
  --office-icon-primary: var(--office-icon-red);
  --office-icon-accent: var(--office-icon-orange);
}
.office-icons i[class*="bi-bell"],
.office-icons i[class*="bi-moon"],
.office-icons i[class*="bi-sun"] {
  --office-icon-primary: var(--office-icon-ink);
  --office-icon-accent: var(--office-icon-yellow);
}
.office-icons i[class*="bi-lightning"],
.office-icons i[class*="bi-star"] {
  --office-icon-primary: var(--office-icon-orange);
  --office-icon-accent: var(--office-icon-yellow);
}
.office-icons i[class*="bi-shield"],
.office-icons i[class*="bi-key"] {
  --office-icon-primary: var(--office-icon-purple);
  --office-icon-accent: var(--office-icon-orange);
}

/* Dark and strongly colored surfaces keep currentColor for reliable contrast. */
.office-icons .admin-app-topbar i.bi::before,
.office-icons .admin-launcher-header i.bi::before,
.office-icons .admin-launcher-app i.bi::before,
.office-icons .navbar-dark i.bi::before,
.office-icons .btn-primary i.bi::before,
.office-icons .btn-danger i.bi::before,
.office-icons .btn-dark i.bi::before,
.office-icons .text-bg-primary i.bi::before,
.office-icons .text-bg-danger i.bi::before {
  color: currentColor;
  background: none;
  -webkit-text-fill-color: currentColor;
}

.office-icons .admin-app-topbar i.bi,
.office-icons .admin-launcher-header i.bi,
.office-icons .admin-launcher-app i.bi,
.office-icons .navbar-dark i.bi,
.office-icons .btn-primary i.bi,
.office-icons .btn-danger i.bi,
.office-icons .btn-dark i.bi,
.office-icons .text-bg-primary i.bi,
.office-icons .text-bg-danger i.bi {
  color: inherit;
}

/* Creation actions use the compact, flat command style from Office 2013. */
.office-icons .office-add-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
  color: #386f45;
  background: #f7faf5;
  border: 1px solid #a9c5a9;
  border-radius: 2px;
  box-shadow: inset 0 1px 0 #fff;
  text-decoration: none;
}

.office-icons .office-add-action:hover,
.office-icons .office-add-action:focus-visible {
  color: #245b32;
  background: #e8f2e5;
  border-color: #78a47b;
}

.office-icons .office-add-action:active,
.office-icons .office-add-action.active {
  color: #1f512c;
  background: #dcebd8;
  border-color: #67936b;
  box-shadow: inset 0 1px 2px rgb(31 81 44 / 18%);
}

.office-icons .office-add-action i.bi {
  color: var(--office-icon-green);
}

.office-icons .office-add-action i.bi::before {
  color: var(--office-icon-green);
  background: linear-gradient(
    135deg,
    var(--office-icon-green) 0 68%,
    var(--office-icon-blue) 68% 100%
  );
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

.office-icons.dark .office-add-action {
  color: #d4ead8;
  background: #27342b;
  border-color: #58745d;
  box-shadow: none;
}

.office-icons.dark .office-add-action:hover,
.office-icons.dark .office-add-action:focus-visible {
  color: #fff;
  background: #33463a;
  border-color: #78a781;
}

/* Reusable Excel ribbon/page command; behavior comes from an explicit module adapter. */
.office-icons .office-excel-action {
  display: inline-flex;
  align-items: center;
  gap: .42rem;
  color: #185c37;
  background: #f5fbf7;
  border-color: #83aa91;
  border-radius: 2px;
  box-shadow: inset 0 1px 0 #fff;
}
.office-icons .office-excel-action:hover,
.office-icons .office-excel-action:focus-visible { color: #104a2b; background: #e2f2e7; border-color: #5f9271; }
.office-icons .office-excel-action:focus-visible { outline: 2px solid #217346; outline-offset: 2px; }
.office-icons .office-excel-action i.bi { color: #217346; }
.office-icons.dark .office-excel-action { color: #d8f0df; background: #27382d; border-color: #5c8068; box-shadow: none; }
.office-icons.dark .office-excel-action:hover,
.office-icons.dark .office-excel-action:focus-visible { color: #fff; background: #31513c; border-color: #79a889; }

/* Secondary-page return command uses the restrained Office 2013 cancel treatment. */
.office-icons .office-cancel-action {
  display: inline-flex;
  align-items: center;
  gap: .42rem;
  color: #444;
  background: #f7f7f7;
  border-color: #a6a6a6;
  border-radius: 2px;
  box-shadow: inset 0 1px 0 #fff;
}
.office-icons .office-cancel-action:hover,
.office-icons .office-cancel-action:focus-visible { color: #7a1d16; background: #fce8e6; border-color: #c9827b; }
.office-icons .office-cancel-action:focus-visible { outline: 2px solid #c43b2f; outline-offset: 2px; }
.office-icons .office-cancel-action i.bi { color: #c43b2f; }
.office-icons.dark .office-cancel-action { color: #e5e5e5; background: #303030; border-color: #707070; box-shadow: none; }
.office-icons.dark .office-cancel-action:hover,
.office-icons.dark .office-cancel-action:focus-visible { color: #fff; background: #53312f; border-color: #b87670; }

/* Form submit command can live in the ribbon while targeting its original Form Helper form. */
.office-icons .office-save-action {
  display: inline-flex;
  align-items: center;
  gap: .42rem;
  color: #174f7a;
  background: #f4f8fc;
  border-color: #7fa4c2;
  border-radius: 2px;
  box-shadow: inset 0 1px 0 #fff;
}
.office-icons .office-save-action:hover,
.office-icons .office-save-action:focus-visible { color: #0d3c61; background: #e1edf6; border-color: #527f9f; }
.office-icons .office-save-action:focus-visible { outline: 2px solid #2b6f9f; outline-offset: 2px; }
.office-icons .office-save-action i.bi { color: #2b6f9f; }
.office-icons.dark .office-save-action { color: #d9ebf8; background: #293743; border-color: #5b7e98; box-shadow: none; }
.office-icons.dark .office-save-action:hover,
.office-icons.dark .office-save-action:focus-visible { color: #fff; background: #314b60; border-color: #77a2c1; }

/* Table edit commands stay compact while retaining an accessible text name. */
.office-icons .office-table-edit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  padding: 0;
  color: #2b75b8;
  background: #f8fafc;
  border: 1px solid #aebdca;
  border-radius: 2px;
  box-shadow: inset 0 1px 0 #fff;
  text-decoration: none;
  vertical-align: middle;
}

.office-icons .office-table-edit:hover,
.office-icons .office-table-edit:focus-visible {
  color: #1d5c94;
  background: #e8f1f8;
  border-color: #739bbd;
}

.office-icons .office-table-edit:focus-visible {
  outline: 2px solid #2b75b8;
  outline-offset: 2px;
}

.office-icons .office-table-edit:active {
  background: #d9e8f3;
  border-color: #5f88aa;
  box-shadow: inset 0 1px 2px rgb(29 92 148 / 20%);
}

.office-icons .office-table-edit i.bi {
  color: var(--office-icon-blue);
  font-size: 1rem;
  line-height: 1;
}

.office-icons .office-table-edit i.bi::before {
  color: var(--office-icon-blue);
  background: linear-gradient(
    135deg,
    var(--office-icon-blue) 0 70%,
    var(--office-icon-orange) 70% 100%
  );
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

.office-icons.dark .office-table-edit {
  color: #cfe4f5;
  background: #29343e;
  border-color: #60798d;
  box-shadow: none;
}

.office-icons.dark .office-table-edit:hover,
.office-icons.dark .office-table-edit:focus-visible {
  color: #fff;
  background: #344757;
  border-color: #77a2c5;
}

.office-icons .office-table-delete {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  padding: 0;
  color: #a83b2d;
  background: #fff9f7;
  border: 1px solid #c8aaa4;
  border-radius: 2px;
  box-shadow: inset 0 1px 0 #fff;
  vertical-align: middle;
}

.office-icons .office-table-delete:hover,
.office-icons .office-table-delete:focus-visible {
  color: #84291f;
  background: #f8e7e3;
  border-color: #b66b5f;
}

.office-icons .office-table-delete:focus-visible { outline: 2px solid #a83b2d; outline-offset: 2px; }
.office-icons .office-table-delete i.bi { color: #c1442e; font-size: 1rem; line-height: 1; }
.office-icons.dark .office-table-delete { color: #ffd9d2; background: #3a2b29; border-color: #8f655d; box-shadow: none; }
.office-icons.dark .office-table-delete:hover,
.office-icons.dark .office-table-delete:focus-visible { color: #fff; background: #513631; border-color: #c77a6c; }

.office-confirm-dialog {
  width: min(430px, calc(100vw - 2rem));
  padding: 0;
  color: #222;
  background: #f6f6f6;
  border: 1px solid #8c8c8c;
  border-radius: 2px;
  box-shadow: 0 12px 36px rgb(0 0 0 / 32%);
}
.office-confirm-dialog::backdrop { background: rgb(20 28 36 / 42%); }
.office-confirm-title { display: flex; gap: .65rem; align-items: center; padding: .85rem 1rem; color: #fff; background: #b7472f; font-weight: 700; }
.office-confirm-message { margin: 0; padding: 1.25rem 1rem; line-height: 1.9; }
.office-confirm-actions { display: flex; justify-content: flex-end; gap: .5rem; padding: .8rem 1rem; background: #e7e7e7; border-top: 1px solid #c8c8c8; }
.office-confirm-actions button { min-width: 92px; padding: .42rem .8rem; border: 1px solid #8e8e8e; border-radius: 2px; }
.office-confirm-cancel { color: #222; background: #fff; }
.office-confirm-accept { color: #fff; background: #b7472f; border-color: #913522 !important; }
.office-confirm-actions button:focus-visible { outline: 2px solid #2b75b8; outline-offset: 2px; }
.office-icons.dark .office-confirm-dialog { color: #f1f1f1; background: #272727; border-color: #696969; }
.office-icons.dark .office-confirm-actions { background: #333; border-color: #555; }
.office-icons.dark .office-confirm-cancel { color: #fff; background: #444; border-color: #777; }

@media (forced-colors: active) {
  .office-icons i.bi,
  .office-icons i.bi::before {
    color: currentColor;
    background: none;
    -webkit-text-fill-color: currentColor;
  }
}
