:root { --toolbox-background: #f6f7fb; --toolbox-surface: #fff; --toolbox-surface-soft: #eff1f7; --toolbox-text: #202332; --toolbox-muted: #656b7d; --toolbox-border: #d9dce7; --toolbox-accent: #5b4ec4; --toolbox-accent-hover: #493caf; --toolbox-accent-soft: #ece9ff; --toolbox-accent-contrast: #fff; --toolbox-focus: #137d75; --toolbox-danger: #b42342; --toolbox-warning: #8b5a00; --toolbox-success: #18734a; } * { box-sizing: border-box; } html { min-width: 20rem; min-height: 100%; background: var(--toolbox-background); scrollbar-gutter: stable; } body { min-width: 20rem; min-height: 100vh; margin: 0; background: var(--toolbox-background); color: var(--toolbox-text); font-family: Inter, ui-sans-serif, system-ui, sans-serif; } button, input, select, textarea { font: inherit; } button, .button { min-height: 2.55rem; display: inline-flex; align-items: center; justify-content: center; gap: 0.4rem; padding: 0.55rem 0.8rem; border: 1px solid var(--toolbox-border); border-radius: 0.65rem; background: var(--toolbox-surface); color: var(--toolbox-text); font-weight: 720; cursor: pointer; } button:hover:not(:disabled), .button:hover { border-color: var(--toolbox-accent); background: var(--toolbox-surface-soft); } button:disabled, input:disabled, select:disabled { cursor: not-allowed; opacity: 0.6; } :where(button, input, select, textarea, a):focus-visible { outline: 3px solid color-mix(in srgb, var(--toolbox-focus) 42%, transparent); outline-offset: 2px; } input, select, textarea { width: 100%; min-height: 2.55rem; padding: 0.58rem 0.7rem; border: 1px solid var(--toolbox-border); border-radius: 0.62rem; background: var(--toolbox-surface); color: var(--toolbox-text); } textarea { min-height: 10rem; resize: vertical; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; line-height: 1.48; } pre, code { font-family: ui-monospace, SFMono-Regular, Consolas, monospace; } .toolbox-shell__main { width: min(100%, 90rem); padding: clamp(0.75rem, 1.8vw, 1.5rem); } .workbench, .workspace, .stack { display: grid; gap: 1rem; } .hero, .panel, .metrics article { border: 1px solid var(--toolbox-border); border-radius: 0.9rem; background: var(--toolbox-surface); box-shadow: 0 8px 28px rgb(30 36 70 / 4%); } .hero { display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start; padding: clamp(1.1rem, 3vw, 2rem); } .panel { padding: 1rem; } .hero h1, .panel h2, .panel h3, .help-dialog h2, .fatal h1 { margin: 0; letter-spacing: -0.025em; } .hero p:not(.eyebrow) { max-width: 58rem; margin: 0.55rem 0 0; color: var(--toolbox-muted); line-height: 1.55; } .eyebrow { margin: 0 0 0.3rem; color: var(--toolbox-accent); font-size: 0.69rem; font-weight: 820; letter-spacing: 0.115em; text-transform: uppercase; } .privacy-pill { flex: 0 0 auto; padding: 0.38rem 0.62rem; border-radius: 999px; background: var(--toolbox-accent-soft); color: var(--toolbox-accent); font-size: 0.75rem; font-weight: 760; } .panel-heading { display: flex; justify-content: space-between; gap: 1rem; align-items: end; margin-bottom: 0.9rem; } .source-grid { display: grid; grid-template-columns: minmax(15rem, 0.75fr) minmax(20rem, 1.25fr); gap: 1rem; align-items: start; } .field { display: grid; gap: 0.35rem; } .field > span { font-size: 0.76rem; font-weight: 750; } .muted { margin: 0; color: var(--toolbox-muted); line-height: 1.5; } .actions, .workspace-tabs { display: flex; gap: 0.45rem; flex-wrap: wrap; } .primary { border-color: var(--toolbox-accent); background: var(--toolbox-accent); color: var(--toolbox-accent-contrast); } .file-button { position: relative; overflow: hidden; } .file-button input { position: absolute; inset: 0; opacity: 0; cursor: pointer; } .progress-row { display: grid; grid-template-columns: minmax(8rem, 1fr) minmax(12rem, 1.4fr) auto; gap: 0.75rem; align-items: center; margin-top: 1rem; padding: 0.75rem; border-radius: 0.7rem; background: var(--toolbox-surface-soft); color: var(--toolbox-muted); font-size: 0.82rem; } progress, meter { width: 100%; accent-color: var(--toolbox-accent); } .metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr)); gap: 0.7rem; } .metrics article { display: grid; gap: 0.2rem; padding: 0.85rem; } .metrics span, .metrics small { color: var(--toolbox-muted); } .metrics span { font-size: 0.7rem; font-weight: 760; text-transform: uppercase; } .metrics strong { font-size: 1.08rem; overflow-wrap: anywhere; } .metrics small { line-height: 1.35; overflow-wrap: anywhere; } .workspace-tabs { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 0.2rem; } .workspace-tabs button[aria-selected="true"] { border-color: var(--toolbox-accent); background: var(--toolbox-accent); color: var(--toolbox-accent-contrast); } .filter-grid { display: grid; grid-template-columns: minmax(12rem, 1.5fr) repeat(4, minmax(9rem, 1fr)); gap: 0.65rem; align-items: end; } .table-wrap { max-height: 34rem; overflow: auto; border: 1px solid var(--toolbox-border); border-radius: 0.7rem; } table { width: 100%; border-collapse: collapse; } th, td { max-width: 34rem; padding: 0.6rem; border-bottom: 1px solid var(--toolbox-border); text-align: left; vertical-align: top; overflow-wrap: anywhere; } th { position: sticky; top: 0; z-index: 1; background: var(--toolbox-surface); color: var(--toolbox-muted); font-size: 0.68rem; text-transform: uppercase; } .message-cell { display: block; white-space: pre-wrap; } td small { display: block; margin-top: 0.25rem; color: var(--toolbox-danger); } .invalid-row { background: color-mix( in srgb, var(--toolbox-danger) 5%, var(--toolbox-surface) ); } .level { display: inline-block; padding: 0.15rem 0.38rem; border-radius: 999px; background: var(--toolbox-surface-soft); font-size: 0.68rem; font-weight: 800; text-transform: uppercase; } .level-error, .level-critical, .level-alert, .level-emergency { background: color-mix( in srgb, var(--toolbox-danger) 13%, var(--toolbox-surface) ); color: var(--toolbox-danger); } .level-warning { background: color-mix( in srgb, var(--toolbox-warning) 13%, var(--toolbox-surface) ); color: var(--toolbox-warning); } .level-info, .level-notice { background: color-mix( in srgb, var(--toolbox-success) 13%, var(--toolbox-surface) ); color: var(--toolbox-success); } .correlation-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; } .timeline-section { grid-column: 1 / -1; } .count-list { display: grid; gap: 0.5rem; max-height: 25rem; margin: 0; padding: 0; overflow: auto; list-style: none; } .count-list li { display: grid; grid-template-columns: minmax(8rem, 1fr) auto minmax(6rem, 0.8fr); gap: 0.6rem; align-items: center; padding: 0.55rem; border-radius: 0.6rem; background: var(--toolbox-surface-soft); } .redaction-grid, .export-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; align-items: start; } .check-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.5rem; } .check { display: flex; gap: 0.55rem; align-items: center; min-height: 2.6rem; padding: 0.55rem; border: 1px solid var(--toolbox-border); border-radius: 0.6rem; } .check input { width: auto; min-height: auto; } .redaction-report, .summary-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr)); gap: 0.5rem; margin: 0; } .redaction-report div, .summary-list div { padding: 0.6rem; border-radius: 0.6rem; background: var(--toolbox-surface-soft); } .redaction-report dt, .summary-list dt { color: var(--toolbox-muted); font-size: 0.68rem; font-weight: 780; text-transform: uppercase; } .redaction-report dd, .summary-list dd { margin: 0.2rem 0 0; font-weight: 780; overflow-wrap: anywhere; } .summary-card { padding: 1rem; border: 1px solid var(--toolbox-border); border-radius: 0.75rem; background: var(--toolbox-surface-soft); } .summary-card .summary-list { margin-top: 0.8rem; } .summary-card .summary-list div { background: var(--toolbox-surface); } .output { min-height: 24rem; max-height: 38rem; margin: 0; padding: 0.8rem; overflow: auto; border: 1px solid var(--toolbox-border); border-radius: 0.65rem; background: var(--toolbox-surface-soft); color: var(--toolbox-text); white-space: pre-wrap; overflow-wrap: anywhere; } .alert, .warning, .notice { margin: 0; padding: 0.75rem 0.9rem; border: 1px solid var(--toolbox-border); border-radius: 0.68rem; line-height: 1.48; } .alert { border-color: var(--toolbox-danger); color: var(--toolbox-danger); background: color-mix( in srgb, var(--toolbox-danger) 7%, var(--toolbox-surface) ); } .warning { border-color: color-mix( in srgb, var(--toolbox-warning) 60%, var(--toolbox-border) ); color: var(--toolbox-warning); background: color-mix( in srgb, var(--toolbox-warning) 8%, var(--toolbox-surface) ); } .notice { background: var(--toolbox-surface-soft); } .empty, .empty-state { text-align: center; color: var(--toolbox-muted); } .empty-state p { margin-bottom: 0; } .loading, .fatal { width: min(100% - 2rem, 60rem); margin: 2rem auto; padding: 1rem; } .help-dialog { width: min(36rem, calc(100% - 2rem)); border: 1px solid var(--toolbox-border); border-radius: 0.9rem; background: var(--toolbox-surface); color: var(--toolbox-text); } .help-dialog::backdrop { background: rgb(20 24 45 / 55%); } .dialog-heading { display: flex; justify-content: space-between; gap: 1rem; align-items: start; } @media (max-width: 72rem) { .filter-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } } @media (max-width: 62rem) { .source-grid, .redaction-grid, .export-grid, .correlation-grid { grid-template-columns: 1fr; } .timeline-section { grid-column: auto; } .progress-row { grid-template-columns: 1fr; } } @media (max-width: 44rem) { .hero { flex-direction: column; } .privacy-pill { order: -1; } .filter-grid, .check-grid { grid-template-columns: 1fr; } .panel { padding: 0.75rem; } }