/* ============================================ Offers Module ============================================ */ /* Items table */ .offers-items-table { overflow-x: auto; overflow-y: hidden; margin-bottom: 1rem; border: 1px solid var(--border-color); border-radius: 0.5rem; } .offers-items-table .admin-table { min-width: 700px; margin: 0; } .offers-items-table .admin-table thead th { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; color: var(--text-tertiary); padding: 8px 10px; white-space: nowrap; } .offers-items-table .admin-table td { vertical-align: top; padding: 8px; } .offers-items-table .admin-table tbody tr { transition: background var(--transition); } .offers-items-table .admin-table tbody tr:hover { background: var(--table-row-hover); } .offers-items-table .admin-table td .admin-form-input { display: block; padding: 6px 8px; font-size: 13px; min-height: 32px; } /* Template dropdown menu */ .offers-template-menu { position: absolute; top: 100%; right: 0; z-index: 100; min-width: 200px; max-height: 250px; overflow-y: auto; background: var(--bg-primary); border: 1px solid var(--border-color); border-radius: 0.5rem; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); margin-top: 0.25rem; } .offers-template-menu-item { padding: 0.5rem 0.75rem; cursor: pointer; font-size: 0.875rem; transition: background var(--transition); } .offers-template-menu-item:hover { background: var(--bg-secondary); } /* Language badges */ .offers-lang-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 1.5rem; height: 1.25rem; padding: 0 0.375rem; border-radius: 0.25rem; font-size: 0.625rem; font-weight: 700; letter-spacing: 0.03em; text-transform: uppercase; background: color-mix(in srgb, var(--info) 15%, transparent); color: var(--info); margin-right: 0.375rem; vertical-align: middle; } .offers-lang-badge-cz { background: color-mix(in srgb, var(--danger) 15%, transparent); color: var(--danger); } /* RichEditor (Quill) */ .admin-rich-editor { border: 1px solid var(--border-color); border-radius: 0.5rem; overflow: visible; } .admin-rich-editor .quill { display: flex; flex-direction: column; } /* Toolbar */ .admin-rich-editor .ql-toolbar.ql-snow { background: var(--bg-secondary); border: none; border-bottom: 1px solid var(--border-color); border-radius: 0.5rem 0.5rem 0 0; padding: 0.5rem; flex-wrap: wrap; gap: 2px; } .admin-rich-editor .ql-toolbar .ql-formats { margin-right: 8px; } /* Toolbar buttons */ .admin-rich-editor .ql-snow .ql-stroke { stroke: var(--text-secondary); } .admin-rich-editor .ql-snow .ql-fill { fill: var(--text-secondary); } .admin-rich-editor .ql-snow .ql-picker-label { color: var(--text-secondary); border-color: var(--border-color); } .admin-rich-editor .ql-snow button:hover .ql-stroke, .admin-rich-editor .ql-snow .ql-picker-label:hover .ql-stroke { stroke: var(--text-primary); } .admin-rich-editor .ql-snow button:hover .ql-fill, .admin-rich-editor .ql-snow .ql-picker-label:hover .ql-fill { fill: var(--text-primary); } .admin-rich-editor .ql-snow button:hover, .admin-rich-editor .ql-snow .ql-picker-label:hover { color: var(--text-primary); } /* Active state */ .admin-rich-editor .ql-snow button.ql-active { color: var(--accent-color); background: color-mix(in srgb, var(--accent-color) 15%, transparent); border-radius: 4px; } .admin-rich-editor .ql-snow button.ql-active .ql-stroke { stroke: var(--accent-color); } .admin-rich-editor .ql-snow button.ql-active .ql-fill, .admin-rich-editor .ql-snow button.ql-active .ql-stroke.ql-fill { fill: var(--accent-color); } .admin-rich-editor .ql-snow .ql-picker-item.ql-selected { color: var(--accent-color); } .admin-rich-editor .ql-snow .ql-picker-label.ql-active { color: var(--accent-color); } .admin-rich-editor .ql-snow .ql-picker-label.ql-active .ql-stroke { stroke: var(--accent-color); } /* Dropdowns (font, size, color, align) */ .admin-rich-editor .ql-snow .ql-picker-options { background: var(--bg-primary); border: 1px solid var(--border-color); border-radius: 0.375rem; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3); z-index: 1000; padding: 0.25rem; } .admin-rich-editor .ql-snow .ql-picker-item { color: var(--text-secondary); padding: 0.25rem 0.5rem; border-radius: 0.25rem; } .admin-rich-editor .ql-snow .ql-picker-item:hover { color: var(--text-primary); background: var(--bg-secondary); } /* Font picker */ .admin-rich-editor .ql-snow .ql-font .ql-picker-options { min-width: 11rem; max-height: 200px; overflow-y: auto; } .admin-rich-editor .ql-snow .ql-size .ql-picker-options { max-height: 200px; overflow-y: auto; } /* Font labels - vysoka specificita kvuli quill.snow.css */ .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="arial"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="arial"]::before { content: "Arial" !important; font-family: Arial, sans-serif; } .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="tahoma"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="tahoma"]::before { content: "Tahoma" !important; font-family: Tahoma, sans-serif; } .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="verdana"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="verdana"]::before { content: "Verdana" !important; font-family: Verdana, sans-serif; } .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="georgia"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="georgia"]::before { content: "Georgia" !important; font-family: Georgia, serif; } .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="times-new-roman"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="times-new-roman"]::before { content: "Times New Roman" !important; font-family: "Times New Roman", serif; } .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="courier-new"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="courier-new"]::before { content: "Courier New" !important; font-family: "Courier New", monospace; } .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="trebuchet-ms"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="trebuchet-ms"]::before { content: "Trebuchet MS" !important; font-family: "Trebuchet MS", sans-serif; } .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="impact"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="impact"]::before { content: "Impact" !important; font-family: Impact, sans-serif; } .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="comic-sans-ms"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="comic-sans-ms"]::before { content: "Comic Sans MS" !important; font-family: "Comic Sans MS", cursive; } .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="lucida-console"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="lucida-console"]::before { content: "Lucida Console" !important; font-family: "Lucida Console", monospace; } .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="palatino-linotype"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="palatino-linotype"]::before { content: "Palatino Linotype" !important; font-family: "Palatino Linotype", serif; } .ql-snow .ql-picker.ql-font .ql-picker-label[data-value="garamond"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="garamond"]::before { content: "Garamond" !important; font-family: Garamond, serif; } /* Font classes */ .ql-font-arial { font-family: Arial, sans-serif; } .ql-font-tahoma { font-family: Tahoma, sans-serif; } .ql-font-verdana { font-family: Verdana, sans-serif; } .ql-font-georgia { font-family: Georgia, serif; } .ql-font-times-new-roman { font-family: "Times New Roman", serif; } .ql-font-courier-new { font-family: "Courier New", monospace; } .ql-font-trebuchet-ms { font-family: "Trebuchet MS", sans-serif; } .ql-font-impact { font-family: Impact, sans-serif; } .ql-font-comic-sans-ms { font-family: "Comic Sans MS", cursive; } .ql-font-lucida-console { font-family: "Lucida Console", monospace; } .ql-font-palatino-linotype { font-family: "Palatino Linotype", serif; } .ql-font-garamond { font-family: Garamond, serif; } /* Size picker */ .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="8px"]::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="8px"]::before { content: "8px" !important; } .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="9px"]::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="9px"]::before { content: "9px" !important; } .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="10px"]::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="10px"]::before { content: "10px" !important; } .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="11px"]::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="11px"]::before { content: "11px" !important; } .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="12px"]::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="12px"]::before { content: "12px" !important; } .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="14px"]::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="14px"]::before { content: "14px" !important; } .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="16px"]::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="16px"]::before { content: "16px" !important; } .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="18px"]::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="18px"]::before { content: "18px" !important; } .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="20px"]::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="20px"]::before { content: "20px" !important; } .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="24px"]::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="24px"]::before { content: "24px" !important; } .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="28px"]::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="28px"]::before { content: "28px" !important; } .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="32px"]::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="32px"]::before { content: "32px" !important; } .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="36px"]::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="36px"]::before { content: "36px" !important; } .ql-snow .ql-picker.ql-size .ql-picker-label[data-value="48px"]::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value="48px"]::before { content: "48px" !important; } /* Editor area */ .admin-rich-editor .ql-container.ql-snow { border: none; border-radius: 0 0 0.5rem 0.5rem; font-size: 0.875rem; } .admin-rich-editor .ql-editor { min-height: var(--re-min-height, 120px); padding: 0.75rem; color: var(--text-primary); line-height: 1.6; font-size: 0.875rem; background: var(--input-bg); } .admin-rich-editor .ql-editor.ql-blank::before { color: var(--text-tertiary); font-style: normal; } /* Lists inside editor */ .admin-rich-editor .ql-editor ul, .admin-rich-editor .ql-editor ol { padding-left: 1.5rem; } /* Color picker */ .admin-rich-editor .ql-snow .ql-color-picker .ql-picker-options[aria-hidden="false"] { width: 176px; padding: 0.375rem; display: flex; flex-wrap: wrap; gap: 2px; } .admin-rich-editor .ql-snow .ql-color-picker .ql-picker-item { width: 18px; height: 18px; border-radius: 2px; margin: 0; padding: 0; flex-shrink: 0; } /* Tooltip (link editor) */ .admin-rich-editor .ql-snow .ql-tooltip { background: var(--bg-primary); border: 1px solid var(--border-color); border-radius: 0.375rem; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3); color: var(--text-primary); } .admin-rich-editor .ql-snow .ql-tooltip input[type="text"] { background: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 0.25rem; color: var(--text-primary); padding: 0.25rem 0.5rem; } .admin-rich-editor .ql-snow .ql-tooltip a { color: var(--accent-color); } /* Read-only rendered rich text (Quill HTML output) */ .admin-rich-text-view { color: var(--text-secondary); line-height: 1.6; font-size: 0.875rem; overflow-wrap: break-word; word-break: break-word; min-width: 0; } .admin-rich-text-view ul, .admin-rich-text-view ol { padding-left: 1.5rem; margin: 0.25rem 0 0.75rem; } .admin-rich-text-view li { margin-bottom: 0.15rem; } .admin-rich-text-view a { color: var(--accent-color); } .admin-rich-text-view strong, .admin-rich-text-view b { font-weight: 600; color: var(--text-primary); display: inline-block; margin-top: 0.5rem; } .admin-rich-text-view br + b, .admin-rich-text-view br + strong { margin-top: 0.75rem; } .admin-rich-text-view > br:first-child, .admin-rich-text-view ul + br, .admin-rich-text-view ol + br { display: none; } @media (max-width: 640px) { .offers-items-table { margin: 0 -1rem; width: calc(100% + 2rem); } } /* Offer draft row in table */ .offers-draft-row { background: var(--row-draft); } .offers-draft-row-label { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.03em; color: var(--warning); background: color-mix(in srgb, var(--warning) 14%, transparent); padding: 0.2rem 0.55rem; border-radius: 99px; } /* Expired offer without order */ .offers-expired-row { background: var(--row-expired); } .offers-expired-row td { color: var(--danger) !important; } .offers-expired-row a { color: var(--danger) !important; } /* Invalidated offer */ .offers-invalidated-row { opacity: 0.6; } .offers-invalidated-row td { color: var(--text-muted) !important; } .offers-invalidated-row a { color: var(--text-muted) !important; } /* Read-only form (invalidated offer detail) */ .offers-readonly input[readonly], .offers-readonly select:disabled { background-color: var(--bg-secondary); cursor: default; } /* Offer draft indicator */ .offers-draft-indicator { display: flex; align-items: center; gap: 0.3rem; font-size: 0.72rem; font-weight: 500; color: var(--text-tertiary); margin-top: 0.2rem; opacity: 0.8; }