@font-face { font-family: "OByte Nunito"; src: url("../fonts/Nunito-VariableFont_wght.ttf") format("truetype"); font-style: normal; font-weight: 200 900; font-display: swap; } @font-face { font-family: "OByte Gothic Demi"; src: url("../fonts/urw_gothic_l_demi.ttf") format("truetype"); font-style: normal; font-weight: 600; font-display: swap; } .obyte-qa-tool, .obyte-qa-tool * { box-sizing: border-box; } .obyte-qa-tool { --oqt-blue: #00a7e6; --oqt-blue-soft: #33b9eb; --oqt-blue-ink: #00648a; --oqt-bg: #f5fbfe; --oqt-surface: #ffffff; --oqt-surface-soft: #f6fafc; --oqt-line: #dbe6ec; --oqt-line-strong: #c4d2da; --oqt-text: #343537; --oqt-text-soft: #68737c; --oqt-text-faint: #89949d; --oqt-success: #188f5c; --oqt-warning: #f59c00; --oqt-danger: #c43b3b; --oqt-muted: #67717a; --oqt-focus: 0 0 0 3px rgba(0, 167, 230, 0.28); width: 100%; margin: 0; overflow: visible; border: 1px solid var(--oqt-line); border-radius: 8px; background: var(--oqt-surface); color: var(--oqt-text); font-family: "OByte Nunito", "Segoe UI", Arial, sans-serif; font-size: 15px; line-height: 1.45; box-shadow: 0 18px 42px rgba(52, 53, 55, 0.08); } .obyte-qa-tool-notice { max-width: 920px; margin: 0 auto; border: 1px solid rgba(0, 167, 230, 0.4); border-radius: 8px; background: rgba(0, 167, 230, 0.1); color: #343537; padding: 14px 16px; font-family: "OByte Nunito", "Segoe UI", Arial, sans-serif; } .obyte-qa-tool-notice a { color: var(--oqt-blue-ink); font-weight: 800; } .oqt-header { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 20px; align-items: center; padding: 20px 22px; border-radius: 8px 8px 0 0; border-bottom: 1px solid rgba(255, 255, 255, 0.12); background: linear-gradient(135deg, #343537 0%, #25292d 100%); color: #ffffff; } .oqt-title-block { min-width: 0; } .oqt-kicker { margin: 0 0 4px; color: rgba(245, 251, 254, 0.72); font-size: 11px; font-weight: 900; letter-spacing: 0.12em; text-transform: uppercase; } .oqt-header h1 { margin: 0; color: #ffffff; font-family: "OByte Gothic Demi", "OByte Nunito", "Segoe UI", Arial, sans-serif; font-size: 36px; font-weight: 600; line-height: 1.04; letter-spacing: 0; } .oqt-tags, .oqt-service-tags, .oqt-header-actions, .oqt-template-actions, .oqt-step-actions, .oqt-action-group { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; } .oqt-tags { margin-top: 12px; } .oqt-tag { display: inline-flex; align-items: center; min-height: 28px; max-width: 100%; border: 1px solid var(--oqt-line); border-radius: 999px; background: #ffffff; color: var(--oqt-text-soft); padding: 4px 10px; font-size: 12px; font-weight: 800; line-height: 1.2; white-space: nowrap; } .oqt-tag[data-field="stepSummary"] { white-space: normal; } .oqt-header .oqt-tag { border-color: rgba(255, 255, 255, 0.22); background: rgba(255, 255, 255, 0.1); color: rgba(255, 255, 255, 0.88); } .oqt-tag--muted { background: var(--oqt-surface-soft); } .oqt-tag.is-ok { border-color: rgba(24, 143, 92, 0.42); background: rgba(24, 143, 92, 0.12); color: #126842; } .oqt-tag.is-warn { border-color: rgba(245, 156, 0, 0.48); background: rgba(245, 156, 0, 0.14); color: #875600; } .oqt-tag.is-bad { border-color: rgba(196, 59, 59, 0.42); background: rgba(196, 59, 59, 0.12); color: #8f2424; } .oqt-header .oqt-tag.is-ok, .oqt-header .oqt-tag.is-warn, .oqt-header .oqt-tag.is-bad { color: #ffffff; } .oqt-panel { padding: 20px 22px; background: var(--oqt-surface); border-bottom: 1px solid var(--oqt-line); } .oqt-panel--setup { background: linear-gradient(180deg, #ffffff 0%, #fbfdfe 100%); } .oqt-panel-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px; align-items: start; margin-bottom: 16px; } .oqt-panel-head h2 { margin: 0; color: var(--oqt-text); font-size: 18px; font-weight: 900; line-height: 1.15; letter-spacing: 0; } .oqt-panel-head p { margin: 4px 0 0; color: var(--oqt-text-soft); font-size: 13px; } .oqt-setup-grid { display: grid; grid-template-columns: minmax(260px, 0.95fr) minmax(0, 2fr); gap: 16px; align-items: start; } .oqt-template-card { display: grid; gap: 10px; min-width: 0; border: 1px solid var(--oqt-line); border-radius: 8px; background: var(--oqt-surface); padding: 14px; } .oqt-meta-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; min-width: 0; } .oqt-field { display: grid; gap: 6px; min-width: 0; color: var(--oqt-text-soft); font-size: 12px; font-weight: 850; } .oqt-field--select { width: 100%; } .oqt-field--wide-line { grid-column: span 3; } .oqt-field span, .oqt-mini-label, .oqt-group-label { color: var(--oqt-text-soft); font-size: 11px; font-weight: 900; letter-spacing: 0.08em; text-transform: uppercase; } .oqt-field input, .oqt-field select, .oqt-steps-table input, .oqt-steps-table textarea, .oqt-steps-table select { width: 100%; min-height: 40px; border: 1px solid var(--oqt-line-strong); border-radius: 8px; background: #ffffff; color: var(--oqt-text); font: inherit; padding: 9px 11px; outline: none; transition: border-color 0.16s ease, box-shadow 0.16s ease, background 0.16s ease; } .oqt-field input::placeholder, .oqt-field select::placeholder, .oqt-steps-table input::placeholder, .oqt-steps-table textarea::placeholder { color: #7a858e; } .oqt-field input:focus, .oqt-field select:focus, .oqt-steps-table input:focus, .oqt-steps-table textarea:focus, .oqt-steps-table select:focus, .oqt-btn:focus, .oqt-icon-btn:focus, .oqt-status-btn:focus, .oqt-drag-handle:focus { outline: none; box-shadow: var(--oqt-focus); border-color: var(--oqt-blue); } .oqt-field input[readonly] { background: #edf5f9; color: var(--oqt-text-soft); } .oqt-file { display: none; } .oqt-btn, .oqt-icon-btn, .oqt-status-btn { border: 1px solid transparent; cursor: pointer; font: inherit; text-decoration: none; transition: border-color 0.16s ease, background 0.16s ease, color 0.16s ease, filter 0.16s ease; } .oqt-btn { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 40px; border-radius: 8px; padding: 9px 13px; font-family: "OByte Gothic Demi", "OByte Nunito", "Segoe UI", Arial, sans-serif; font-size: 14px; font-weight: 600; line-height: 1; white-space: nowrap; } .oqt-btn .dashicons { width: 18px; height: 18px; font-size: 18px; line-height: 18px; } .oqt-btn--primary { background: linear-gradient(132deg, var(--oqt-blue) 0%, var(--oqt-blue-soft) 100%); color: #ffffff; } .oqt-btn--primary:hover { filter: brightness(1.05); } .oqt-btn--light { background: #ffffff; border-color: var(--oqt-line-strong); color: var(--oqt-text); } .oqt-btn--light:hover { border-color: rgba(0, 167, 230, 0.62); color: #163441; } .oqt-btn[disabled], .oqt-btn.is-busy { opacity: 0.62; pointer-events: none; } .oqt-table-wrap { overflow-x: auto; border: 1px solid var(--oqt-line); border-radius: 8px; background: #ffffff; } .oqt-steps-table { width: 100%; min-width: 1080px; border-collapse: separate; border-spacing: 0; table-layout: fixed; } .oqt-steps-table th, .oqt-steps-table td { border-bottom: 1px solid var(--oqt-line); padding: 12px; text-align: left; vertical-align: top; } .oqt-steps-table th { position: sticky; top: 0; z-index: 1; background: #eef8fc; color: var(--oqt-text); font-size: 11px; font-weight: 900; letter-spacing: 0.1em; line-height: 1.2; text-transform: uppercase; } .oqt-steps-table tbody tr:last-child td { border-bottom: 0; } .oqt-steps-table th:nth-child(1), .oqt-steps-table td:nth-child(1) { width: 36%; } .oqt-steps-table th:nth-child(2), .oqt-steps-table td:nth-child(2) { width: 28%; } .oqt-steps-table th:nth-child(3), .oqt-steps-table td:nth-child(3) { width: 12%; } .oqt-steps-table th:nth-child(4), .oqt-steps-table td:nth-child(4) { width: 24%; } .oqt-empty-row td { padding: 28px 16px; color: var(--oqt-text-soft); text-align: center; } .oqt-step-head { display: grid; grid-template-columns: 108px minmax(150px, 1fr) minmax(34px, auto); gap: 8px; align-items: start; } .oqt-step-id-wrap, .oqt-step-title-wrap, .oqt-group-main { display: grid; gap: 5px; min-width: 0; } .oqt-steps-table textarea { min-height: 82px; resize: vertical; } .oqt-steps-table .oqt-title { min-height: 40px; } .oqt-required { display: inline-flex; align-items: center; gap: 7px; margin-top: 10px; color: var(--oqt-text-soft); font-size: 12px; font-weight: 800; } .oqt-required input { width: 16px; min-height: 16px; } .oqt-pin { display: inline-flex; align-items: center; justify-content: center; width: 100%; min-width: 34px; min-height: 28px; border: 1px solid rgba(245, 156, 0, 0.46); border-radius: 999px; background: rgba(245, 156, 0, 0.14); color: #8b5900; padding: 4px 7px; font-size: 11px; font-weight: 900; white-space: nowrap; } .oqt-pin--off { border-color: rgba(103, 113, 122, 0.28); background: rgba(103, 113, 122, 0.08); color: var(--oqt-muted); } .oqt-evidence { margin-top: 8px; } .oqt-icon-btn, .oqt-drag-handle { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 8px; flex: 0 0 auto; } .oqt-icon-btn { border-color: var(--oqt-line-strong); background: #ffffff; color: var(--oqt-text-soft); } .oqt-icon-btn:hover { border-color: rgba(196, 59, 59, 0.46); color: var(--oqt-danger); } .oqt-icon-btn .dashicons, .oqt-drag-handle .dashicons { width: 18px; height: 18px; font-size: 18px; line-height: 18px; } .oqt-drag-handle { border: 1px solid var(--oqt-line-strong); background: rgba(0, 167, 230, 0.08); color: var(--oqt-blue-ink); cursor: grab; user-select: none; } .oqt-row-tools { display: inline-flex; flex-direction: column; align-items: stretch; justify-content: flex-start; gap: 6px; min-width: 34px; } .oqt-row-tools .oqt-icon-btn, .oqt-row-tools .oqt-drag-handle { width: 34px; height: 34px; } .oqt-step-tools { justify-self: end; } .oqt-drag-handle:active { cursor: grabbing; } .oqt-group-row td { background: #f1f9fd; border-left: 4px solid var(--oqt-blue); } .oqt-group-row.is-ok td { background: rgba(24, 143, 92, 0.09); border-left-color: var(--oqt-success); } .oqt-group-row.is-bad td { background: rgba(196, 59, 59, 0.09); border-left-color: var(--oqt-danger); } .oqt-group-head { display: grid; grid-template-columns: minmax(240px, 1fr) auto; gap: 12px; align-items: end; } .oqt-group-actions { display: flex; flex-wrap: nowrap; align-items: flex-start; justify-content: flex-end; gap: 7px; } .oqt-status-set { display: inline-flex; align-items: center; overflow: hidden; border: 1px solid var(--oqt-line-strong); border-radius: 8px; background: #ffffff; } .oqt-status-btn { min-height: 34px; border-right: 1px solid var(--oqt-line); background: #ffffff; color: var(--oqt-text); padding: 6px 9px; font-size: 12px; font-weight: 900; line-height: 1; } .oqt-status-btn:last-child { border-right: 0; } .oqt-status-btn:hover { background: var(--oqt-surface-soft); } .oqt-status-btn.is-pass { color: var(--oqt-success); } .oqt-status-btn.is-fail { color: var(--oqt-danger); } .oqt-status-btn.is-skip { color: var(--oqt-muted); } .oqt-status-btn.is-blocked { color: #925d00; } .oqt-row-pass td { background: rgba(24, 143, 92, 0.055); } .oqt-row-fail td { background: rgba(196, 59, 59, 0.06); } .oqt-row-skip td { background: rgba(103, 113, 122, 0.055); } .oqt-row-blocked td { background: rgba(245, 156, 0, 0.07); } .oqt-status-pass { border-color: rgba(24, 143, 92, 0.46) !important; background: rgba(24, 143, 92, 0.12) !important; } .oqt-status-fail { border-color: rgba(196, 59, 59, 0.46) !important; background: rgba(196, 59, 59, 0.12) !important; } .oqt-status-skip { border-color: rgba(103, 113, 122, 0.46) !important; background: rgba(103, 113, 122, 0.12) !important; } .oqt-status-blocked { border-color: rgba(245, 156, 0, 0.52) !important; background: rgba(245, 156, 0, 0.14) !important; } .oqt-dragging { opacity: 0.58; } .oqt-drag-over { outline: 2px dashed var(--oqt-blue); outline-offset: -3px; } .oqt-drag-over[data-drop-pos="before"] { box-shadow: inset 0 3px 0 var(--oqt-blue); } .oqt-drag-over[data-drop-pos="after"] { box-shadow: inset 0 -3px 0 var(--oqt-blue); } tr[data-hidden="1"] { display: none; } .oqt-action-dock { position: sticky; bottom: 0; z-index: 3; display: grid; grid-template-columns: minmax(0, auto) minmax(280px, 1fr); gap: 14px; align-items: center; padding: 14px 22px; border-top: 1px solid var(--oqt-line); background: rgba(255, 255, 255, 0.94); backdrop-filter: blur(8px); } .oqt-message { min-height: 40px; border: 1px solid transparent; border-radius: 8px; background: var(--oqt-surface-soft); color: var(--oqt-text-soft); padding: 10px 12px; font-size: 13px; font-weight: 800; } .oqt-message:empty { visibility: hidden; } .oqt-message a { color: var(--oqt-blue-ink); text-decoration: underline; } .oqt-message.is-ok { border-color: rgba(24, 143, 92, 0.28); background: rgba(24, 143, 92, 0.1); color: #126842; } .oqt-message.is-bad { border-color: rgba(196, 59, 59, 0.28); background: rgba(196, 59, 59, 0.1); color: #8f2424; } @media (max-width: 1180px) { .oqt-setup-grid { grid-template-columns: 1fr; } .oqt-meta-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .oqt-field--wide-line { grid-column: span 2; } } @media (max-width: 860px) { .obyte-qa-tool { border-left: 0; border-right: 0; border-radius: 0; } .oqt-header { border-radius: 0; } .oqt-header, .oqt-panel-head, .oqt-action-dock { grid-template-columns: 1fr; } .oqt-header-actions, .oqt-service-tags, .oqt-step-actions, .oqt-action-group { justify-content: flex-start; } .oqt-header h1 { font-size: 30px; } .oqt-meta-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .oqt-field--wide-line { grid-column: span 2; } } @media (max-width: 620px) { .oqt-header, .oqt-panel, .oqt-action-dock { padding-left: 14px; padding-right: 14px; } .oqt-meta-grid { grid-template-columns: 1fr; } .oqt-field--wide-line { grid-column: span 1; } .oqt-header-actions .oqt-btn, .oqt-template-actions .oqt-btn, .oqt-step-actions .oqt-btn, .oqt-action-group .oqt-btn { flex: 1 1 auto; } } @media print { .obyte-qa-tool { border: 0; box-shadow: none; } .oqt-panel--setup, .oqt-action-dock, .oqt-step-actions, .oqt-header-actions { display: none; } }