/* ОСТРО — slide surface. Shared by editor, presenter, public viewer, print and HTML export. */
.os-slide {
  position: relative;
  width: 1600px;
  height: 900px;
  overflow: hidden;
  contain: layout paint style;
  font-family: var(--os-font-body, "Inter", "Helvetica Neue", Arial, sans-serif);
  font-kerning: normal;
  font-synthesis: none;
  text-rendering: geometricPrecision;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
  color: #000;
  isolation: isolate;
}
.os-slide *, .os-slide *::before, .os-slide *::after { box-sizing: border-box; }
.os-layer { position: absolute; inset: 0; z-index: 1; }
.os-el { position: absolute; margin: 0; transform-origin: 50% 50%; }

/* text */
.os-tx {
  white-space: pre-wrap;
  overflow-wrap: break-word;
  word-break: normal;
  hyphens: manual;
  font-feature-settings: "kern" 1;
  font-optical-sizing: auto;
  min-width: 0;
}
.os-mode-edit .os-tx:empty::before { content: attr(data-ph); opacity: .38; }

/* images */
.os-clip { position: absolute; inset: 0; overflow: hidden; }
.os-imgel { display: block; width: 100%; height: 100%; user-select: none; -webkit-user-drag: none; }
.os-asset { display: block; width: 100%; height: 100%; object-fit: contain; user-select: none; -webkit-user-drag: none; }
.os-svg { display: block; width: 100%; height: 100%; overflow: visible; }
.os-outline { position: absolute; left: 0; top: 0; overflow: visible; pointer-events: none; }
.os-ph-label {
  position: absolute; left: 26px; bottom: 24px; right: 26px;
  font: 500 13px/1.25 var(--os-font-body, "Inter", sans-serif);
  letter-spacing: .24em; text-transform: uppercase; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.os-ph-hint {
  position: absolute; left: 26px; bottom: 48px; right: 26px;
  font: 500 15px/1.3 var(--os-font-body, "Inter", sans-serif); opacity: .9;
}
.os-pattern { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
.os-pattern > svg { display: block; }

/* shapes */
.os-shape-svg { display: block; width: 100%; height: 100%; overflow: visible; }

/* tables */
.os-table-wrap { width: 100%; height: 100%; overflow: hidden; }
.os-table { width: 100%; border-collapse: collapse; table-layout: fixed; font-variant-numeric: tabular-nums; line-height: 1.32; }
.os-table th, .os-table td {
  text-align: left; vertical-align: top; white-space: pre-wrap; overflow-wrap: break-word;
  padding: .66em 1em .66em 0; border-bottom: 1px solid var(--os-line);
}
.os-table th {
  font-weight: 500; font-size: .7em; letter-spacing: .2em; text-transform: uppercase;
  color: var(--os-head-color); padding-top: 0; padding-bottom: 1.05em; border-bottom: 2px solid var(--os-head-color);
}
.os-table td:last-child, .os-table th:last-child { padding-right: 0; }
.os-table-block th { background: var(--os-head-bg); border-bottom: 0; padding: 1.1em 1em 1em; }
.os-table-block td { padding-left: 1em; }
.os-table-grid th, .os-table-grid td { border: 1px solid var(--os-line); padding: .6em .8em; }
.os-table-grid th { border-bottom: 2px solid var(--os-head-color); }
.os-table-zebra tr:nth-child(even) td { background: rgba(127, 127, 127, .07); }
.os-table-zebra td { border-bottom: 0; padding-left: .8em; }

/* gantt */
.os-gantt { display: grid; width: 100%; height: 100%; font-variant-numeric: tabular-nums; }
.os-g-corner { grid-row: 1; grid-column: 1; border-bottom: 2px solid currentColor; }
.os-g-head {
  grid-row: 1; align-self: end; padding: 0 0 .7em .5em; font-size: .72em; letter-spacing: .14em; text-transform: uppercase;
  border-bottom: 2px solid currentColor; border-left: 1px solid var(--os-line); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; opacity: .85;
}
.os-g-label { grid-column: 1; align-self: center; padding-right: 1em; line-height: 1.2; overflow: hidden; }
.os-g-cell { border-left: 1px solid var(--os-line); border-bottom: 1px solid var(--os-line); }
.os-g-label { border-bottom: 1px solid var(--os-line); height: 100%; display: flex; align-items: center; }
.os-g-bar { align-self: center; height: 42%; margin: 0 2px; z-index: 1; }

/* background */
.os-bg-image { position: absolute; inset: 0; z-index: 0; }
.os-bg-image img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.os-bg-dim { position: absolute; inset: 0; background: #000; }
.os-bg-pattern { z-index: 0; }

/* chrome (колонтитулы) */
.os-chrome { position: absolute; inset: 0; z-index: 2; pointer-events: none; font-family: var(--os-font-body, "Inter", sans-serif); }
.os-chrome-logo { position: absolute; left: 80px; top: 58px; width: 104px; height: 38px; }
.os-chrome-logo .os-svg { object-position: left center; }
.os-chrome-label {
  position: absolute; right: 80px; top: 70px; max-width: 760px;
  font-weight: 500; font-size: 13px; line-height: 1; letter-spacing: .24em; text-transform: uppercase;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: right;
}
.os-chrome-footer {
  position: absolute; left: 80px; bottom: 54px; max-width: 900px;
  font-weight: 500; font-size: 13px; line-height: 1; letter-spacing: .2em; text-transform: uppercase;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.os-chrome-num { position: absolute; right: 80px; bottom: 50px; font-weight: 500; font-size: 14px; line-height: 1; letter-spacing: .08em; font-variant-numeric: tabular-nums; }
.os-chrome-num b { font-weight: 900; font-size: 18px; letter-spacing: .02em; }

.os-mode-edit .os-missing { outline: 1px dashed rgba(127, 127, 127, .7); }
.os-mode-edit .os-chrome-footer[data-edit] { pointer-events: auto; cursor: pointer; }
.os-mode-edit .os-chrome-footer[data-edit]:hover { outline: 1px dashed currentColor; outline-offset: 5px; }

@media print {
  .os-slide { contain: none; }
}
.os-ph-center {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; text-align: center; padding: 8px;
  font: 500 12px/1.2 var(--os-font-body, "Inter", sans-serif); letter-spacing: .22em; text-transform: uppercase;
}
