:root { color-scheme: light; --bg: #f4f7fb; --surface: #ffffff; --surface-soft: #f8fafc; --surface-strong: #eef3f8; --line: #d8e0ea; --line-strong: #b9c7d6; --text: #1e2733; --muted: #66758a; --accent: #0f69c9; --accent-soft: #e8f2ff; --word: #176bc2; --sheets: #139652; --slides: #e14b1c; --mail: #297bd8; --danger: #bd2f2f; --shadow: 0 16px 40px rgba(28, 45, 67, 0.12); font-family: Inter, "Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif; font-size: 14px; line-height: 1.45; color: var(--text); background: var(--bg); } * { box-sizing: border-box; } html, body, #root { width: 100%; height: 100%; margin: 0; } body { overflow: auto; } button, input, select, textarea { font: inherit; letter-spacing: 0; } button { color: inherit; } .qoffice-shell { display: grid; grid-template-columns: minmax(0, 1fr); width: 100%; height: 100%; min-height: 0; overflow: hidden; background: var(--bg); } .icon-button, .tool-button, .compact-command, .wide-command, .primary-command, .segmented-tools button, .message-actions button { display: inline-flex; align-items: center; justify-content: center; gap: 7px; border: 1px solid var(--line); border-radius: 6px; background: var(--surface); color: var(--text); cursor: pointer; } .icon-button { width: 34px; height: 34px; } .workspace { display: grid; grid-template-rows: 34px minmax(0, 1fr) 28px; min-width: 0; min-height: 0; height: 100%; overflow: hidden; } .titlebar { display: grid; grid-template-columns: 150px minmax(0, 1fr) auto; position: relative; align-items: center; gap: 14px; min-height: 34px; padding: 0 10px; background: #2f5f9f; color: #ffffff; } .titlebar strong { display: block; font-size: 13px; font-weight: 650; text-align: center; } .titlebar span { color: rgba(255, 255, 255, 0.82); font-size: 12px; } .quick-access { display: inline-flex; align-items: center; gap: 4px; } .quick-access button { display: grid; place-items: center; width: 26px; height: 26px; border: 0; border-radius: 3px; background: transparent; color: #ffffff; cursor: pointer; } .quick-access button:hover { background: rgba(255, 255, 255, 0.16); } .window-title { justify-self: center; min-width: 170px; } .titlebar-actions { display: flex; align-items: center; justify-content: flex-end; gap: 10px; } .command-search, .mail-search { display: flex; align-items: center; gap: 8px; min-width: 270px; height: 24px; padding: 0 9px; border: 1px solid var(--line); border-radius: 0; background: var(--surface); color: var(--muted); } .titlebar .command-search { width: min(320px, 32vw); min-width: 220px; border-color: rgba(255, 255, 255, 0.28); background: rgba(255, 255, 255, 0.36); color: #15345c; } .titlebar .command-search input::placeholder { color: #15345c; } .command-search input, .mail-search input { min-width: 0; border: 0; outline: 0; background: transparent; } .primary-command { height: 26px; padding: 0 12px; border-color: rgba(255, 255, 255, 0.55); background: #ffffff; color: #2f5f9f; font-weight: 650; } .primary-command:disabled, .compact-command:disabled { cursor: not-allowed; opacity: 0.55; } .ribbon { border-bottom: 1px solid var(--line); background: var(--surface); } .ribbon-tabs { display: flex; align-items: center; height: 36px; padding: 0 10px 0 0; border-bottom: 1px solid var(--line); } .ribbon-tabs button { height: 36px; padding: 0 13px; border: 0; border-bottom: 2px solid transparent; background: transparent; cursor: pointer; } .ribbon-tabs button.is-active { border-bottom-color: var(--accent); color: #0f5fae; font-weight: 700; } .ribbon-groups { display: flex; height: 88px; } .ribbon-group { display: flex; flex-direction: column; justify-content: space-between; min-width: 184px; padding: 11px 14px 7px; border-right: 1px solid var(--line); } .ribbon-command-row { display: flex; gap: 8px; } .tool-button { min-width: 68px; height: 40px; padding: 0 9px; flex-direction: column; gap: 2px; font-size: 11px; } .ribbon-group-title { align-self: center; color: var(--muted); font-size: 11px; } .surface-host { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); min-width: 0; min-height: 0; height: 100%; overflow: hidden; } .surface-host > * { min-width: 0; min-height: 0; } .statusbar { display: flex; align-items: center; gap: 0; justify-content: space-between; overflow: hidden; padding: 0 10px 0 18px; border-top: 1px solid var(--line); background: var(--surface); color: var(--muted); font-size: 12px; } .statusbar-main, .statusbar-trailing { display: flex; align-items: center; min-width: 0; } .statusbar-main { flex: 1 1 auto; gap: 28px; overflow: hidden; } .statusbar-trailing { flex: 0 0 auto; gap: 8px; margin-left: auto; } .statusbar span { white-space: nowrap; } .word-statusbar { color: #4f5967; } .word-statusbar-tools, .word-view-buttons { display: inline-flex; align-items: center; } .word-statusbar-tools { gap: 6px; } .word-view-buttons { gap: 2px; padding-right: 8px; border-right: 1px solid #d2d9e3; } .word-statusbar-tools button { display: grid; place-items: center; width: 24px; height: 24px; border: 1px solid transparent; border-radius: 3px; background: transparent; color: #4f5967; cursor: pointer; } .word-statusbar-tools button:hover, .word-statusbar-tools button.is-active { border-color: #c3d3e6; background: #eef5fd; color: #1f4f8a; } .word-zoom-slider { width: 120px; accent-color: #6b7280; } .editor-layout { display: grid; grid-template-columns: minmax(0, 1fr); height: 100%; min-height: 0; } .document-stage, .spreadsheet-stage, .slide-stage { min-width: 0; min-height: 0; overflow: auto; background: #eef3f8; } .document-stage { position: relative; background: #dedede; } .module-toolbar { position: sticky; top: 0; z-index: 2; display: flex; align-items: center; gap: 9px; min-height: 52px; padding: 9px 14px; border-bottom: 1px solid var(--line); background: rgba(255, 255, 255, 0.96); } .word-module-toolbar { display: block; min-height: 154px; padding: 0; overflow: hidden; } .word-ribbon-tabs { display: flex; align-items: center; min-width: 100%; height: 36px; overflow-x: auto; overflow-y: hidden; border-bottom: 1px solid #d6dde8; background: #ffffff; } .word-ribbon-tabs button { flex: 0 0 auto; height: 36px; padding: 0 13px; border: 0; border-bottom: 2px solid transparent; background: transparent; color: #2f343c; cursor: pointer; font-size: 13px; } .word-ribbon-tabs button.is-active { border-bottom-color: #2f5f9f; color: #1f4f8a; font-weight: 700; } .word-ribbon-tabs button:hover { background: #edf4fb; } .word-ribbon { display: flex; align-items: stretch; width: 100%; min-width: 100%; height: 118px; min-height: 118px; overflow: hidden; background: #ffffff; } .word-ribbon-group { display: grid; grid-template-rows: minmax(0, 1fr) 18px; align-items: stretch; gap: 4px; height: 118px; min-height: 118px; min-width: 0; padding: 7px 8px 4px; border-right: 1px solid #d6dde8; } .word-ribbon-title { align-self: end; color: #69778a; font-size: 11px; line-height: 1; text-align: center; } .word-command-row, .word-select-row, .word-color-row { display: flex; align-items: center; gap: 6px; min-width: 0; } .word-file-group { flex: 0 0 68px; grid-template-columns: minmax(0, 1fr); } .word-file-actions { display: grid; grid-template-columns: repeat(2, 26px); align-content: start; justify-content: center; gap: 5px; } .word-icon-command { display: grid; place-items: center; width: 26px; height: 26px; border: 1px solid transparent; border-radius: 4px; background: #ffffff; color: var(--text); cursor: pointer; } .word-icon-command:hover { border-color: #c7d8eb; background: #edf6ff; } .word-clipboard-group { flex: 0 1 136px; grid-template-columns: auto auto; } .word-clipboard-group .word-ribbon-title, .word-font-group .word-ribbon-title, .word-paragraph-group .word-ribbon-title, .word-styles-group .word-ribbon-title, .word-insert-group .word-ribbon-title, .word-edit-group .word-ribbon-title { grid-column: 1 / -1; } .word-large-command { display: grid; place-items: center; align-content: center; gap: 4px; min-width: 58px; min-height: 70px; border: 1px solid transparent; border-radius: 4px; background: #ffffff; color: var(--text); cursor: pointer; font-size: 12px; } .word-large-command:hover, .word-command-stack button:hover, .word-style-gallery button:hover { border-color: #c7d8eb; background: #edf6ff; } .word-command-stack { display: grid; align-content: start; gap: 4px; } .word-command-stack button { display: inline-flex; align-items: center; gap: 6px; max-width: 100%; min-height: 22px; border: 1px solid transparent; border-radius: 4px; background: #ffffff; color: var(--text); cursor: pointer; font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .word-font-group { flex: 1 1 226px; min-width: 214px; grid-template-rows: 28px 28px minmax(0, 1fr) 18px; grid-template-columns: minmax(0, 1fr); } .word-ribbon select { height: 28px; border-radius: 3px; font-size: 12px; } .word-font-select { min-width: 0; flex: 1 1 132px; } .word-font-size-select { flex: 0 0 64px; width: 64px; } .word-format-tools { width: fit-content; max-width: 100%; margin-top: 0; } .word-color-row { flex-wrap: wrap; gap: 4px; margin-top: 0; overflow: hidden; } .word-color-row .text-color-tools { min-height: 22px; padding-left: 0; border-left: 0; } .word-color-row .color-swatch { width: 18px; height: 18px; } .word-paragraph-group { flex: 0 1 154px; grid-template-rows: 28px 28px minmax(0, 1fr) 18px; grid-template-columns: minmax(0, 1fr); } .word-paragraph-group > .segmented-tools, .word-paragraph-group > .compact-command { align-self: start; } .word-paragraph-group .compact-command { width: 100%; } .word-styles-group { flex: 1 1 238px; min-width: 190px; grid-template-columns: minmax(0, 1fr); } .word-style-gallery { display: flex; align-items: stretch; gap: 6px; min-width: 0; overflow: hidden; } .word-style-gallery button { display: grid; align-content: center; flex: 0 0 78px; min-height: 64px; padding: 6px 8px; border: 1px solid #d6dde8; border-radius: 4px; background: #ffffff; color: #334155; cursor: pointer; font-size: 12px; overflow: hidden; text-align: left; text-overflow: ellipsis; white-space: nowrap; } .word-style-gallery button span { color: #1e5fa7; font-size: 18px; line-height: 1.1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .word-insert-group { flex: 0 0 86px; grid-template-columns: minmax(0, 1fr); } .word-insert-group .compact-command, .word-edit-group .compact-command { justify-content: flex-start; } .word-edit-group { flex: 0 0 118px; grid-template-columns: minmax(0, 1fr); } .word-view-group { flex: 0 0 320px; grid-template-columns: minmax(0, 1fr); } .word-view-mode-row { display: flex; align-items: start; gap: 6px; min-width: 0; } .word-view-mode-row .compact-command { flex: 1 1 0; height: 58px; flex-direction: column; gap: 4px; white-space: normal; } .word-edit-group .toolbar-status { min-height: 26px; padding: 0; border-left: 0; font-size: 11px; } .word-ribbon .segmented-tools button { width: 30px; height: 28px; } .word-ribbon .compact-command { height: 28px; min-width: 0; padding: 0 8px; font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .hidden-file-input { display: none; } .file-title-input { min-width: 220px; height: 34px; padding: 0 10px; border: 1px solid var(--line); border-radius: 6px; background: var(--surface-soft); font-weight: 650; } .segmented-tools { display: inline-flex; overflow: hidden; border: 1px solid var(--line); border-radius: 6px; background: var(--surface); } .segmented-tools button { width: 34px; height: 32px; border: 0; border-right: 1px solid var(--line); border-radius: 0; } .segmented-tools button:last-child { border-right: 0; } .segmented-tools button.is-active { background: #e8f2ff; color: #0f5fae; } .module-toolbar select, .office-workbar select, .office-workbar input, .office-workbar textarea { height: 34px; border: 1px solid var(--line); border-radius: 6px; background: #ffffff; } .compact-command { height: 34px; padding: 0 10px; background: #ffffff; font-size: 13px; } .compact-command.is-active { border-color: var(--accent); background: #e8f2ff; color: #0f5fae; } .toolbar-status { display: inline-flex; align-items: center; min-height: 34px; padding: 0 10px; border-left: 1px solid var(--line); color: var(--muted); font-size: 12px; white-space: nowrap; } .office-workbar { display: flex; align-items: stretch; gap: 0; overflow-x: auto; border-bottom: 1px solid var(--line); background: #ffffff; } .office-tool-section { display: inline-flex; align-items: center; gap: 8px; min-height: 62px; padding: 8px 12px; border-right: 1px solid var(--line); white-space: nowrap; } .office-tool-title { align-self: end; color: var(--muted); font-size: 11px; } .office-field { display: inline-grid; gap: 2px; color: var(--muted); font-size: 11px; } .office-field > span { display: inline-flex; align-items: center; gap: 4px; } .office-field input, .office-field select { min-width: 110px; } .office-field-wide input { min-width: 190px; } .cell-comment-field { min-width: 220px; min-height: 38px; padding: 6px 8px; resize: vertical; } .office-check { display: inline-flex; align-items: center; gap: 6px; color: var(--text); font-size: 12px; } .office-chip { display: inline-flex; align-items: center; min-height: 28px; padding: 0 8px; border: 1px solid var(--line); border-radius: 4px; background: #f8fafc; color: #475569; font-size: 12px; } .cell-format-tools { display: inline-flex; align-items: center; gap: 6px; min-height: 34px; padding-left: 6px; border-left: 1px solid var(--line); } .format-toggle.is-active { border-color: var(--accent); background: #e8f2ff; color: #0f5fae; } .slide-format-tools { padding-left: 0; border-left: 0; } .fill-swatches { display: inline-flex; align-items: center; gap: 4px; padding-left: 2px; } .slide-background-swatches { display: flex; flex-wrap: wrap; gap: 6px; } .slide-text-controls { display: grid; grid-template-columns: minmax(96px, 1fr) minmax(118px, 1fr); gap: 8px; align-items: center; } .slide-text-controls > span { font-size: 12px; font-weight: 700; color: var(--muted); } .slide-text-controls .slide-background-swatches { grid-column: 1 / -1; } .fill-swatch { position: relative; width: 24px; height: 24px; border: 1px solid #b8c5d4; border-radius: 5px; background: #ffffff; cursor: pointer; } .fill-swatch.is-empty::after { position: absolute; top: 2px; left: 10px; width: 1px; height: 18px; background: #c2410c; content: ""; transform: rotate(45deg); } .fill-swatch.is-active { border-color: var(--accent); outline: 2px solid #bdd9f6; outline-offset: 1px; } .text-color-tools { display: inline-flex; align-items: center; gap: 4px; min-height: 34px; padding-left: 6px; border-left: 1px solid var(--line); } .color-swatch { width: 23px; height: 23px; border: 1px solid #aab7c6; border-radius: 5px; cursor: pointer; } .wide-command { width: 100%; min-height: 36px; padding: 0 10px; font-weight: 650; } .page-ruler { display: grid; grid-template-columns: repeat(9, 1fr); width: var(--qword-page-width, 794px); zoom: var(--qword-zoom, 1); height: 26px; margin: 12px auto 0; color: #7a8797; font-size: 11px; } .page-ruler span { border-left: 1px solid #c5cfdb; padding-left: 6px; } .vertical-page-ruler { position: sticky; left: 0; z-index: 1; float: left; display: grid; grid-template-rows: repeat(19, 42px); width: 18px; min-height: 798px; margin-top: 0; border-right: 1px solid #c5cfdb; background: #f4f4f4; color: #475569; font-size: 10px; } .vertical-page-ruler span { border-top: 1px solid #c5cfdb; writing-mode: vertical-rl; text-align: start; } .paper-frame { position: relative; width: var(--qword-page-width, 794px); zoom: var(--qword-zoom, 1); margin: 0 auto 38px; } .paper { --qword-page-height: 1123px; min-height: var(--qword-page-height); width: 100%; margin: 0; padding: 72px 86px; border: 1px solid #c7d1dd; background: #ffffff; box-shadow: var(--shadow); outline: 0; } .qword-view-read .page-ruler, .qword-view-read .vertical-page-ruler, .qword-view-web .page-ruler, .qword-view-web .vertical-page-ruler { display: none; } .qword-view-read .paper-frame { width: min(920px, calc(100% - 96px)); margin-top: 34px; } .qword-view-read .paper { min-height: auto; padding: 56px 72px; } .qword-view-web .paper-frame { width: min(1040px, calc(100% - 64px)); margin-top: 24px; } .qword-view-web .paper { min-height: auto; padding: 36px 48px; border-right: 0; border-left: 0; box-shadow: none; } .page-break-guides { position: absolute; inset: 0; pointer-events: none; } .page-break-guides span { position: absolute; left: 0; right: 0; display: grid; place-items: center; height: 24px; border-top: 1px dashed #94a3b8; color: #64748b; font-size: 11px; transform: translateY(-12px); } .page-break-guides span::before, .page-break-guides span::after { content: ""; position: absolute; top: 11px; width: calc(50% - 58px); border-top: 1px dashed #94a3b8; } .page-break-guides span::before { left: 0; } .page-break-guides span::after { right: 0; } .document-content h1 { margin: 0 0 18px; padding-bottom: 14px; border-bottom: 2px solid #2c75c8; font-size: 34px; line-height: 1.16; } .document-content h2 { margin: 28px 0 8px; color: #0f5fae; font-size: 20px; } .document-content p, .document-content li { color: #374151; font-size: 15px; } .document-content a { color: #0f5fae; text-decoration: underline; } .document-content img { display: block; max-width: 100%; height: auto; margin: 14px 0; } .document-content [data-qoffice-page-break="true"] { display: block; position: relative; height: 0; margin: 28px 0; border-top: 1px dashed #94a3b8; break-after: page; page-break-after: always; } .document-content [data-qoffice-page-break="true"]::after { position: absolute; top: -11px; left: 50%; padding: 2px 8px; border: 1px solid #d5dde8; border-radius: 999px; background: #ffffff; color: #64748b; content: "Разрыв страницы"; font-size: 11px; transform: translateX(-50%); white-space: nowrap; } .document-content table { width: 100%; margin-top: 14px; border-collapse: collapse; table-layout: fixed; font-size: 13px; } .document-content th, .document-content td { border: 1px solid #aeb8c5; padding: 8px 10px; text-align: left; overflow-wrap: anywhere; } .document-content th { background: #edf2f7; } .metric-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } .metric-grid label { margin: 0; } .stat-line { display: flex; align-items: center; gap: 8px; margin: 0 0 10px; font-weight: 700; } .muted { color: var(--muted); } .big-number { margin: 0; font-size: 28px; font-weight: 760; } .formula-bar { display: grid; grid-template-columns: 68px minmax(0, 1fr); align-items: center; gap: 8px; padding: 10px 14px; border-bottom: 1px solid var(--line); background: #f8fbfe; } .formula-bar span { display: grid; place-items: center; height: 34px; border: 1px solid var(--line); border-radius: 6px; background: #ffffff; font-weight: 700; } .formula-bar input { height: 34px; padding: 0 10px; border: 1px solid var(--line); border-radius: 6px; } .grid-wrap { padding: 18px; } .sheet-grid { width: max-content; min-width: 100%; border-collapse: collapse; table-layout: fixed; background: #ffffff; box-shadow: var(--shadow); } .sheet-grid th { min-width: 112px; height: 32px; border: 1px solid #cbd5e1; background: #edf2f7; color: #475569; font-weight: 700; } .sheet-grid th:first-child { min-width: 72px; width: 72px; } .sheet-grid td { min-width: 112px; height: 34px; border: 1px solid #d7e0ea; padding: 0; } .sheet-grid td.is-selected { outline: 2px solid var(--accent); outline-offset: -2px; } .sheet-grid td.is-merged { background: #f8fbff; } .sheet-grid th.is-hidden-column, .sheet-grid th.is-hidden-row, .sheet-grid td.is-hidden-column, .sheet-grid td.is-hidden-row { background-image: repeating-linear-gradient(135deg, rgba(15, 95, 174, 0.08) 0 8px, transparent 8px 16px); color: #64748b; } .sheet-grid td.is-hidden-column input, .sheet-grid td.is-hidden-column textarea, .sheet-grid td.is-hidden-row input, .sheet-grid td.is-hidden-row textarea { color: #64748b; } .sheet-grid td.is-linked input, .sheet-grid td.is-linked textarea { color: #0f5fae; text-decoration: underline; } .sheet-grid td.is-commented { position: relative; } .sheet-grid td.is-commented::after { position: absolute; top: 1px; right: 1px; width: 0; height: 0; border-top: 9px solid #f59e0b; border-left: 9px solid transparent; content: ""; pointer-events: none; } .sheet-grid td.is-wrapped { height: 58px; } .sheet-grid td.is-bordered { border-color: #334155; box-shadow: inset 0 0 0 1px #334155; } .sheet-grid td.is-valign-top input { padding-top: 0; padding-bottom: 8px; } .sheet-grid td.is-valign-middle input { padding-top: 0; padding-bottom: 0; } .sheet-grid td.is-valign-bottom input { padding-top: 8px; padding-bottom: 0; } .sheet-grid td.is-valign-middle textarea { padding-top: 14px; padding-bottom: 14px; } .sheet-grid td.is-valign-bottom textarea { padding-top: 22px; padding-bottom: 2px; } .sheet-grid input, .sheet-grid textarea { width: 100%; height: 100%; border: 0; padding: 0 8px; outline: 0; background: transparent; } .sheet-grid textarea { min-height: 58px; padding-top: 6px; padding-bottom: 6px; resize: none; } .chart-board { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 14px; padding: 0 18px 24px; } .sheet-chart { display: grid; gap: 10px; min-width: 0; padding: 12px; border: 1px solid #cbd5e1; border-radius: 7px; background: #ffffff; box-shadow: var(--shadow); cursor: pointer; } .sheet-chart.is-selected { border-color: var(--accent); outline: 2px solid #bdd9f6; } .sheet-chart header { display: flex; align-items: center; justify-content: space-between; gap: 10px; } .sheet-chart header div { display: flex; align-items: center; gap: 8px; min-width: 0; } .sheet-chart strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .sheet-chart .muted { margin: 0; font-size: 12px; } .chart-svg { width: 100%; height: 180px; border: 1px solid #e2e8f0; border-radius: 6px; background: #f8fbff; } .chart-svg line { stroke: #94a3b8; stroke-width: 1; } .chart-svg rect, .chart-svg circle { fill: #2c75c8; } .chart-svg polyline { fill: none; stroke: #0f766e; stroke-linecap: round; stroke-linejoin: round; stroke-width: 3; } .chart-svg text { fill: #475569; font-size: 10px; } .pie-slice { stroke: #ffffff; stroke-width: 1.5; } .slice-0 { fill: #2c75c8; } .slice-1 { fill: #0f766e; } .slice-2 { fill: #c2410c; } .slice-3 { fill: #7c3aed; } .slice-4 { fill: #ca8a04; } .slice-5 { fill: #475569; } .slides-layout { grid-template-columns: 190px minmax(0, 1fr); } .slide-strip { min-width: 0; overflow: auto; padding: 12px; border-right: 1px solid var(--line); background: #f8fafc; } .slide-thumb { display: grid; gap: 8px; width: 100%; min-height: 96px; margin-top: 10px; padding: 10px; border: 2px solid transparent; border-radius: 7px; color: #ffffff; text-align: left; cursor: pointer; } .slide-thumb span { font-size: 12px; opacity: 0.8; } .slide-thumb strong { font-size: 13px; } .slide-thumb.is-active { border-color: var(--accent); } .slide-thumb.is-hidden { box-shadow: inset 0 0 0 999px rgb(0 0 0 / 14%); } .slide-hidden-badge { display: inline-flex; align-items: center; gap: 5px; width: fit-content; padding: 3px 7px; border-radius: 999px; background: rgb(255 255 255 / 18%); font-size: 12px; font-weight: 700; } .slide-stage { display: grid; grid-template-rows: auto auto minmax(0, 1fr); padding-bottom: 24px; } .slide-canvas { display: grid; position: relative; align-content: center; gap: 20px; overflow: hidden; aspect-ratio: 16 / 9; width: min(980px, calc(100% - 64px)); margin: 36px auto; padding: 72px; border-radius: 8px; box-shadow: var(--shadow); } .theme-classic { background: linear-gradient(135deg, #ffffff 0%, #e7f0fb 100%); color: #172033; } .theme-ocean { background: linear-gradient(135deg, #0b5d8d 0%, #0aa083 100%); color: #ffffff; } .theme-graphite { background: linear-gradient(135deg, #172033 0%, #465568 100%); color: #ffffff; } .slide-title-input, .slide-subtitle-input { position: relative; z-index: 2; width: 100%; border: 0; outline: 0; background: transparent; color: inherit; } .slide-title-input { font-size: clamp(30px, 4vw, 54px); font-weight: 780; line-height: 1.1; } .slide-subtitle-input { min-height: 110px; resize: vertical; font-size: clamp(17px, 1.8vw, 24px); line-height: 1.35; } .slide-subtitle-input.is-bullet-list, .slide-subtitle-input.is-number-list { padding-left: 34px; } .slide-subtitle-input.is-bullet-list { background-image: radial-gradient(currentColor 0 3px, transparent 3px); background-position: 10px 0.63em; background-repeat: no-repeat; } .slide-subtitle-input.is-number-list { background-image: linear-gradient(currentColor 0 0); background-position: 13px 0.64em; background-repeat: no-repeat; background-size: 13px 2px; } .slide-list-tools { width: fit-content; } .slide-accent-line { position: relative; z-index: 2; width: 150px; height: 5px; border-radius: 999px; background: currentColor; opacity: 0.35; } .slide-image-object { position: absolute; z-index: 1; padding: 0; border: 2px solid transparent; border-radius: 6px; background: transparent; overflow: hidden; cursor: pointer; } .slide-image-object.is-selected { border-color: #2c75c8; box-shadow: 0 0 0 3px rgb(44 117 200 / 20%); } .slide-image-object img { display: block; width: 100%; height: 100%; object-fit: contain; } .slide-image-list { display: grid; gap: 6px; } .slide-image-list button { min-height: 32px; padding: 0 10px; border: 1px solid var(--line); border-radius: 6px; background: #ffffff; color: var(--text); text-align: left; cursor: pointer; } .slide-image-list button.is-active { border-color: var(--accent); background: var(--accent-soft); color: var(--accent); font-weight: 700; } .image-geometry-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 10px; } .image-geometry-grid label { gap: 4px; } .slide-hidden-toggle { grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 8px 10px; } .slide-hidden-toggle > span:first-child { grid-column: 1 / -1; } .slide-hidden-toggle input[type="checkbox"] { width: 18px; height: 18px; margin: 0; } .slide-hidden-toggle-text { color: var(--text); font-size: 13px; } .danger-command { margin-top: 10px; border-color: #f3b4b4; color: #b42318; } .notes-field { min-height: 160px; padding: 10px; resize: vertical; } .notes-inline { align-items: stretch; } .notes-inline .notes-field { width: 220px; min-height: 44px; height: 46px; padding: 6px 8px; resize: none; } .office-workbar .slide-image-list { display: inline-flex; gap: 6px; max-width: 220px; overflow-x: auto; } .office-workbar .slide-image-list button { min-width: 96px; white-space: nowrap; } .office-workbar .image-geometry-grid { grid-template-columns: repeat(4, 72px); margin-top: 0; } .office-workbar .image-geometry-grid input { width: 72px; min-width: 0; } .office-workbar .danger-command { margin-top: 0; } .mail-layout { display: grid; grid-template-columns: 190px 360px minmax(0, 1fr); height: 100%; min-height: 0; } .mail-folders { display: flex; flex-direction: column; gap: 8px; min-width: 0; padding: 14px; border-right: 1px solid var(--line); background: #f8fafc; } .compose-command { margin-bottom: 8px; } .mail-folders > button:not(.wide-command) { display: flex; justify-content: space-between; min-height: 36px; padding: 0 10px; border: 1px solid transparent; border-radius: 6px; background: transparent; cursor: pointer; } .mail-folders > button.is-active { border-color: #c7d8eb; background: #edf6ff; color: #0f5fae; font-weight: 700; } .message-list-panel { display: grid; grid-template-rows: auto minmax(0, 1fr); min-width: 0; padding: 14px; border-right: 1px solid var(--line); background: #ffffff; } .mail-search { min-width: 0; width: 100%; margin-bottom: 12px; } .message-list { min-height: 0; overflow: auto; } .message-row { display: grid; gap: 5px; width: 100%; min-height: 102px; margin-bottom: 8px; padding: 12px; border: 1px solid var(--line); border-radius: 7px; background: #ffffff; text-align: left; cursor: pointer; } .message-row.is-active { border-color: var(--accent); background: var(--accent-soft); } .message-row.is-unread b, .message-row.is-unread strong { font-weight: 800; } .message-row span { display: flex; justify-content: space-between; gap: 12px; } .message-row small, .message-row em { color: var(--muted); font-style: normal; } .message-row em { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; } .message-attachment-count { display: inline-flex; align-items: center; gap: 4px; width: fit-content; padding-top: 2px; color: var(--accent); font-weight: 700; } .message-reader { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; min-width: 0; min-height: 0; background: #f4f7fb; } .message-actions { display: flex; flex-wrap: wrap; gap: 8px; padding: 14px; border-bottom: 1px solid var(--line); background: #ffffff; } .message-actions button { min-height: 34px; padding: 0 10px; } .message-content { overflow: auto; padding: 30px 38px; background: #ffffff; } .message-content h2 { margin: 0 0 8px; font-size: 28px; } .message-content p { max-width: 760px; font-size: 15px; } .message-html-body { max-width: 840px; overflow-x: auto; color: #111827; font-size: 15px; line-height: 1.58; } .message-html-body :where(p, ul, ol, blockquote, pre, table) { margin: 0 0 12px; } .message-html-body :where(h1, h2, h3, h4, h5, h6) { margin: 18px 0 10px; color: #111827; line-height: 1.25; } .message-html-body :where(ul, ol) { padding-left: 22px; } .message-html-body table { width: max-content; max-width: 100%; border-collapse: collapse; } .message-html-body :where(th, td) { padding: 6px 8px; border: 1px solid #d7dce5; text-align: left; vertical-align: top; } .message-html-body img { max-width: 100%; height: auto; } .message-html-body a { color: #0f5fae; } .attachments-panel { max-width: 760px; margin-top: 24px; } .attachments-panel h3 { margin: 0 0 10px; font-size: 15px; } .attachment-list { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; } .attachment-list.compact { gap: 6px; } .attachment-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; padding: 9px 10px; border: 1px solid var(--line); border-radius: 7px; background: #f8fafc; } .attachment-main { display: inline-flex; align-items: center; gap: 9px; min-width: 0; } .attachment-main > span { display: grid; min-width: 0; } .attachment-main strong, .attachment-main small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .attachment-main small { color: var(--muted); } .attachment-item button { min-width: 34px; min-height: 32px; padding: 0 8px; } .compose-panel { display: grid; gap: 8px; padding: 14px; border-top: 1px solid var(--line); background: #ffffff; } .compose-panel h3 { margin: 0 0 4px; } .compose-panel input, .compose-panel textarea { width: 100%; border: 1px solid var(--line); border-radius: 6px; padding: 9px 10px; } .compose-panel textarea { min-height: 82px; resize: vertical; } .compose-attachments { display: grid; gap: 8px; } .compose-attachments > button { justify-self: start; } .empty-state { margin: 18px 0; color: var(--muted); } @media print { @page { size: A4; margin: 14mm; } html, body, #root { height: auto; overflow: visible; background: #ffffff; } .qoffice-shell, .workspace, .surface-host, .editor-layout, .document-stage, .spreadsheet-stage, .slide-stage, .mail-layout, .message-reader { display: block; height: auto; min-height: 0; overflow: visible; background: #ffffff; } .titlebar, .ribbon, .statusbar, .module-toolbar, .slide-strip, .mail-folders, .message-list-panel, .message-actions, .compose-panel, .page-ruler, .vertical-page-ruler { display: none !important; } .paper { width: auto; min-height: auto; margin: 0; padding: 0; border: 0; box-shadow: none; } .paper-frame { width: auto; margin: 0; } .page-break-guides { display: none; } .slide-canvas { width: 100%; margin: 0; box-shadow: none; break-inside: avoid; } .grid-wrap { padding: 0; } .sheet-grid { min-width: 0; box-shadow: none; font-size: 10px; } .message-content { padding: 0; overflow: visible; } } @media (max-width: 980px) { .qoffice-shell { grid-template-columns: minmax(0, 1fr); } .ribbon, .command-search { display: none; } .workspace { grid-template-rows: 52px minmax(0, 1fr) 34px; } .titlebar { padding: 0 10px 0 14px; } .titlebar-actions .primary-command { width: 38px; min-width: 38px; padding: 0; overflow: hidden; font-size: 0; } .editor-layout, .slides-layout, .mail-layout { grid-template-columns: 1fr; } .slide-strip, .mail-folders, .message-list-panel { display: none; } .document-stage, .spreadsheet-stage, .slide-stage { overflow: auto; } .page-ruler { display: grid; width: 794px; margin-top: 12px; } .paper-frame { width: 794px; margin: 0 auto 32px; } .paper { --qword-page-height: 1123px; min-height: var(--qword-page-height); padding: 56px 64px; border: 1px solid #c7d1dd; box-shadow: var(--shadow); } .module-toolbar { flex-wrap: wrap; align-content: flex-start; max-height: 190px; overflow-y: auto; } .file-title-input { min-width: 0; flex: 1 1 220px; } .document-content h1 { font-size: 32px; } .document-content p, .document-content li { font-size: 14px; } }