/* ────────────────────────────────────────────── Skrift Auftragsmanager – job-spezifische Styles Baut auf configurator.css auf (--sk-* Variablen) ────────────────────────────────────────────── */ /* Breite eingrenzen */ .sk-job-app { max-width: 1200px; margin: 0 auto; } /* ── Mehr Luft in Cards ──────────────────────────── */ .sk-job-app .sk-card-head { padding: 20px 24px; } .sk-job-app .sk-card-body { padding: 24px; } .sk-job-app .sk-card { margin-bottom: 20px; } /* ── Stepper: nie umbrechen, horizontal scrollen ─── */ .sk-job-app .sk-stepper { flex-wrap: nowrap; overflow-x: auto; padding: 4px 0 8px; scrollbar-width: thin; scrollbar-color: var(--sk-border-strong) transparent; margin-bottom: 16px; } .sk-job-app .sk-stepper::-webkit-scrollbar { height: 4px; } .sk-job-app .sk-stepper::-webkit-scrollbar-thumb { background: var(--sk-border-strong); border-radius: 2px; } .sk-job-app .sk-chip { flex-shrink: 0; white-space: nowrap; } .sk-job-app .sk-stepper-arrow { flex-shrink: 0; } /* ── Gesperrte Felder (ausgegraut) ───────────────── */ .sk-job-locked { padding: 10px 12px; background: rgba(15, 23, 42, 0.04); border: 1px solid var(--sk-border); border-radius: var(--sk-radius); font-size: 14px; color: var(--sk-muted); font-style: italic; } /* ── Übersichts-Grid ─────────────────────────────── */ .sk-job-overview-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } @media (max-width: 560px) { .sk-job-overview-grid { grid-template-columns: 1fr; } } /* ── Upload-Zone ─────────────────────────────────── */ .sk-job-upload-zone { border: 2px dashed var(--sk-border-strong); border-radius: var(--sk-radius); padding: 32px 24px; text-align: center; cursor: pointer; transition: border-color .15s, background .15s; margin-top: 16px; } .sk-job-upload-zone:hover, .sk-job-upload-zone.is-dragover { border-color: var(--sk-accent); background: rgba(30, 58, 106, 0.03); } .sk-job-upload-zone.is-success { border-color: var(--sk-success); background: rgba(5, 150, 105, 0.04); border-style: solid; } .sk-job-upload-zone input[type="file"] { display: none; } .sk-job-upload-icon { font-size: 28px; margin-bottom: 8px; opacity: .6; } .sk-job-upload-title { font-size: 14px; font-weight: 600; color: var(--sk-text); } .sk-job-upload-sub { font-size: 12px; color: var(--sk-muted); margin-top: 4px; } /* ── Download-Buttons ────────────────────────────── */ .sk-job-dl-row { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; } .sk-job-dl-btn { display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px; border: 1px solid var(--sk-border-strong); border-radius: var(--sk-radius); background: white; font-size: 13px; font-weight: 600; color: var(--sk-accent); cursor: pointer; transition: all .15s; font-family: inherit; } .sk-job-dl-btn:hover { border-color: var(--sk-accent); background: rgba(30, 58, 106, 0.04); transform: translateY(-1px); } /* ── Platzhalter-Chips ───────────────────────────── */ .sk-job-ph-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; } .sk-job-ph-chip { display: inline-block; padding: 3px 10px; background: rgba(30, 58, 106, 0.08); border: 1px solid rgba(30, 58, 106, 0.2); border-radius: 999px; font-size: 12px; font-family: monospace; color: var(--sk-accent); cursor: pointer; transition: background .12s, border-color .12s; user-select: none; } .sk-job-ph-chip:hover { background: rgba(30, 58, 106, 0.14); border-color: var(--sk-accent); } /* ── Preview-Navigation ──────────────────────────── */ .sk-job-preview-nav { display: flex; align-items: center; justify-content: center; gap: 16px; margin-top: 12px; } .sk-job-preview-counter { font-size: 13px; color: var(--sk-muted); min-width: 70px; text-align: center; } .sk-job-preview-box { margin-top: 16px; min-height: 260px; border: 1px solid var(--sk-border); border-radius: var(--sk-radius); background: rgba(15, 23, 42, 0.02); display: flex; align-items: center; justify-content: center; overflow: hidden; padding: 12px; } .sk-job-preview-box img { max-width: 100%; max-height: 520px; border-radius: 4px; box-shadow: 0 2px 12px rgba(0, 0, 0, .12); } /* ── Spinner ─────────────────────────────────────── */ @keyframes sk-job-spin { to { transform: rotate(360deg); } } .sk-job-spinner { display: inline-block; width: 16px; height: 16px; border: 2px solid rgba(255, 255, 255, .35); border-top-color: currentColor; border-radius: 50%; animation: sk-job-spin .7s linear infinite; vertical-align: middle; } .sk-job-spinner--dark { border-color: var(--sk-border); border-top-color: var(--sk-accent); } /* ── Verify-Eingabe ──────────────────────────────── */ .sk-job-verify-row { display: flex; gap: 10px; flex-wrap: wrap; } .sk-job-verify-row .sk-input { flex: 1; min-width: 180px; font-size: 16px; letter-spacing: .03em; } /* ── Mengen-Popup (Modal) ────────────────────────── */ .sk-job-modal-overlay { position: fixed; inset: 0; background: rgba(15, 23, 42, 0.55); z-index: 99999; display: flex; align-items: center; justify-content: center; padding: 24px; animation: sk-modal-fade-in .15s ease; /* Das Overlay hängt an – also außerhalb von .sk-configurator, wo die --sk-*-Variablen definiert sind. Ohne diese Re-Definition blieben var(--sk-accent) & Co. leer und die .sk-btn-Buttons erschienen unsichtbar (weißer Primärbutton, kein Rahmen). Werte identisch zu configurator.css. */ --sk-accent: #1e3a6a; --sk-text: #0f172a; --sk-muted: rgba(15, 23, 42, 0.68); --sk-card: #ffffff; --sk-border: rgba(15, 23, 42, 0.1); --sk-border-strong: rgba(15, 23, 42, 0.16); --sk-radius: 8px; --sk-font-text: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif; color: var(--sk-text); } @keyframes sk-modal-fade-in { from { opacity: 0; } to { opacity: 1; } } .sk-job-modal { background: #fff; border-radius: var(--sk-radius); padding: 32px; max-width: 480px; width: 100%; box-shadow: 0 20px 60px rgba(0, 0, 0, .2); animation: sk-modal-slide-in .15s ease; } @keyframes sk-modal-slide-in { from { transform: translateY(-12px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .sk-job-modal-title { margin: 0 0 16px; font-size: 18px; font-weight: 700; color: var(--sk-text); } .sk-job-modal-text { color: var(--sk-muted); font-size: 14px; margin: 0 0 10px; line-height: 1.6; } .sk-job-modal-text strong { color: var(--sk-text); } .sk-job-modal-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 24px; flex-wrap: wrap; } /* ── Vollbreite Checkbox-Option ──────────────────── */ .sk-option-full { display: flex; align-items: flex-start; gap: 12px; padding: 14px; border: 1px solid var(--sk-border); border-radius: var(--sk-radius); cursor: pointer; transition: all 0.2s ease; background: white; width: 100%; box-sizing: border-box; scroll-margin: 0; } .sk-option-full input[type="checkbox"] { margin-top: 2px; flex-shrink: 0; scroll-margin: 0; } .sk-option-full:hover { border-color: var(--sk-border-strong); background: rgba(15, 23, 42, 0.02); } .sk-option-full.is-selected { border-color: var(--sk-accent); background: rgba(30, 58, 106, 0.04); } .sk-option-full.is-selected .sk-option-label { font-weight: 600; } /* Warn-Variante (finale Bestätigung) */ .sk-option-full--warn.is-selected { border-color: #d97706; background: rgba(217, 119, 6, 0.06); } .sk-option-full--warn.is-selected .sk-option-label { color: #92400e; } /* ── Tabellen-Nummerierungs-Spalte (#) ───────────── */ .sk-table .sk-col-nr { width: 36px; min-width: 36px; max-width: 36px; padding: 8px 6px !important; text-align: center; color: var(--sk-muted); font-variant-numeric: tabular-nums; font-size: 12px; white-space: nowrap; } .sk-job-app .sk-table { min-width: 0; /* Konfigurator-Default ist 600px → bei wenig Spalten ungenutzte Breite */ } /* Vertikale Scroll-Höhe für lange Tabellen begrenzen */ .sk-job-app .sk-table-wrapper { max-height: 420px; overflow: auto; } /* ── Editierbare Tabelle (Direkteingabe Adresse/Platzhalter) ─────── */ .sk-table-input { width: 100%; min-width: 90px; padding: 6px 8px; border: 1px solid transparent; border-radius: 4px; font-size: 13px; font-family: inherit; background: transparent; box-sizing: border-box; } .sk-table-input:hover { border-color: var(--sk-border); } .sk-table-input:focus { border-color: var(--sk-accent); background: white; outline: none; } .sk-table-readonly { color: var(--sk-muted); font-style: italic; } /* ── Preview-Sektionen (Brief + Umschlag gestapelt) ─ */ .sk-job-preview-section { margin-top: 20px; } .sk-job-preview-section-title { font-size: 13px; font-weight: 600; color: var(--sk-muted); text-transform: uppercase; letter-spacing: .05em; margin-bottom: 8px; } .sk-job-preview-box--envelope { min-height: 160px; background: rgba(15, 23, 42, 0.04); } .sk-job-preview-box--envelope img { max-height: 280px; } /* ── Overflow-Warnung (Text zu lang) ─────────────── */ .sk-overflow-warning .sk-overflow-title { font-weight: 700; font-size: 15px; margin-bottom: 10px; } .sk-overflow-list { list-style: none; margin: 0 0 10px; padding: 0; max-height: 220px; overflow-y: auto; } .sk-overflow-item { display: flex; justify-content: space-between; align-items: center; padding: 6px 10px; border-radius: 4px; font-size: 13px; gap: 12px; } .sk-overflow-item + .sk-overflow-item { border-top: 1px solid rgba(220, 38, 38, 0.15); } .sk-overflow-lines { font-variant-numeric: tabular-nums; font-weight: 600; white-space: nowrap; } .sk-overflow-more { font-style: italic; opacity: .8; justify-content: flex-start; } .sk-overflow-hint { font-size: 13px; margin: 8px 0 0; line-height: 1.5; opacity: .9; } /* ── Lightbox / Bild-Vergrößerung ────────────────── */ .sk-job-lightbox { position: fixed; inset: 0; background: rgba(15, 23, 42, 0.92); z-index: 100000; display: flex; align-items: center; justify-content: center; padding: 40px; cursor: zoom-out; animation: sk-modal-fade-in .15s ease; } .sk-job-lightbox img { max-width: 95vw; max-height: 90vh; object-fit: contain; background: white; border-radius: 6px; box-shadow: 0 12px 60px rgba(0, 0, 0, 0.5); cursor: default; } .sk-job-lightbox-close { position: absolute; top: 16px; right: 16px; width: 44px; height: 44px; border-radius: 50%; border: none; background: rgba(255, 255, 255, 0.9); color: var(--sk-text); font-size: 28px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background .15s, transform .15s; } .sk-job-lightbox-close:hover { background: white; transform: scale(1.05); } /* ── Platzhalter-Import Tabelle ──────────────────── */ .sk-job-ph-table-wrap { overflow: auto; margin-top: 12px; border: 1px solid var(--sk-border); border-radius: var(--sk-radius); } .sk-job-ph-table { width: 100%; border-collapse: collapse; font-size: 13px; } .sk-job-ph-table th, .sk-job-ph-table td { padding: 8px 12px; text-align: left; border-bottom: 1px solid var(--sk-border); white-space: nowrap; } .sk-job-ph-table th { background: rgba(15, 23, 42, 0.03); font-weight: 600; color: var(--sk-text); position: sticky; top: 0; } .sk-job-ph-table td { color: var(--sk-muted); } .sk-job-ph-table tr:last-child td { border-bottom: none; } /* ── Mobile Optimierungen ────────────────────────── */ @media (max-width: 600px) { .sk-job-app .sk-card-head { padding: 16px; } .sk-job-app .sk-card-body { padding: 16px; } .sk-job-overview-grid { grid-template-columns: 1fr; } .sk-job-dl-row { flex-direction: column; } .sk-job-dl-btn { width: 100%; justify-content: center; } .sk-job-verify-row { flex-direction: column; } .sk-job-verify-row .sk-input { min-width: 0; width: 100%; } .sk-job-modal { padding: 24px 16px; } .sk-job-modal-actions { flex-direction: column-reverse; } .sk-job-modal-actions .sk-btn { width: 100%; justify-content: center; } }