: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; } * { 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); } :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; } .toolbox-shell__main { width: min(100%, 90rem); padding: clamp(0.75rem, 1.8vw, 1.5rem); } .workbench { display: grid; gap: 1rem; } .hero, .panel { 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); } .hero h1, .panel h2, .panel h3, .help-dialog h2, .fatal h1 { margin: 0; letter-spacing: -0.025em; } .hero p:not(.eyebrow) { max-width: 52rem; 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 { padding: 1rem; } .panel-heading { display: flex; justify-content: space-between; gap: 1rem; align-items: end; margin-bottom: 0.9rem; } .capability-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr)); gap: 0.75rem; } .capability-grid article { padding: 0.9rem; border: 1px solid var(--toolbox-border); border-radius: 0.72rem; background: var(--toolbox-surface-soft); } .capability-grid p { margin: 0.4rem 0 0; color: var(--toolbox-muted); line-height: 1.48; } .workspace-tabs { display: flex; gap: 0.4rem; 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); } .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); gap: 0.85rem; } .field { display: grid; gap: 0.35rem; } .field > span { font-size: 0.76rem; font-weight: 750; } .muted { color: var(--toolbox-muted); } .result { padding: 0.8rem; border: 1px solid var(--toolbox-border); border-radius: 0.68rem; background: var(--toolbox-surface-soft); overflow-wrap: anywhere; } .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; } .workspace { display: grid; gap: 0.85rem; } .editor-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; } .editor-grid textarea { min-height: 22rem; } .encoding-row { display: grid; grid-template-columns: minmax(10rem, 16rem) minmax(12rem, 1fr); gap: 0.7rem; align-items: end; } .actions { display: flex; gap: 0.5rem; 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; } .check { display: flex; gap: 0.5rem; align-items: center; min-height: 2.55rem; } .check input { width: auto; min-height: auto; } .inventory { display: grid; grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr)); gap: 0.45rem; margin: 0; } .inventory div { padding: 0.55rem; border-radius: 0.55rem; background: var(--toolbox-surface-soft); } .inventory dt { color: var(--toolbox-muted); font-size: 0.66rem; font-weight: 750; } .inventory dd { margin: 0.15rem 0 0; } .steps { display: grid; gap: 0.55rem; margin: 0; padding: 0; list-style: none; } .steps li { display: grid; grid-template-columns: minmax(12rem, 0.8fr) minmax(12rem, 1.4fr) auto; gap: 0.6rem; align-items: center; padding: 0.6rem; border: 1px solid var(--toolbox-border); border-radius: 0.65rem; } .step-actions { display: flex; gap: 0.25rem; } .step-actions button { min-width: 2.55rem; padding: 0.4rem; } .warning, .error, .notice { margin: 0; padding: 0.7rem; border: 1px solid var(--toolbox-border); border-radius: 0.65rem; line-height: 1.5; } .warning { border-color: #d9a72e; background: #fff8df; color: #725000; } .error { border-color: var(--toolbox-danger); color: var(--toolbox-danger); } .notice { background: var(--toolbox-surface-soft); } table { width: 100%; border-collapse: collapse; } th, td { padding: 0.55rem; border-bottom: 1px solid var(--toolbox-border); text-align: left; } th { color: var(--toolbox-muted); font-size: 0.7rem; text-transform: uppercase; } details { border: 1px solid var(--toolbox-border); border-radius: 0.65rem; } summary { padding: 0.65rem; cursor: pointer; font-weight: 750; } .recipe { display: grid; gap: 0.6rem; padding: 0 0.65rem 0.65rem; } .privacy-strip { display: grid; grid-template-columns: minmax(16rem, 1fr) auto auto; gap: 0.8rem; align-items: center; padding: 0.8rem 1rem; border: 1px solid var(--toolbox-border); border-radius: 0.8rem; background: var(--toolbox-accent-soft); } .privacy-strip > div { display: grid; gap: 0.16rem; } .privacy-strip span, .duplicate-list article > div span { color: var(--toolbox-muted); font-size: 0.82rem; } .alert { margin: 0; padding: 0.75rem 0.9rem; border: 1px solid var(--toolbox-danger); border-radius: 0.68rem; color: var(--toolbox-danger); background: color-mix( in srgb, var(--toolbox-danger) 7%, var(--toolbox-surface) ); } .split-layout { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; align-items: start; } .split-layout textarea { min-height: 25rem; } .form-grid, .mapping-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.7rem; } .form-grid textarea { min-height: 8rem; } .wide { grid-column: 1 / -1; } .compact { width: auto; max-width: 18rem; } .diagnostics { max-height: 18rem; margin: 0; padding: 0 2.2rem 0.8rem; overflow: auto; color: var(--toolbox-muted); line-height: 1.5; } .empty { margin: 0; padding: 1.2rem; border: 1px dashed var(--toolbox-border); border-radius: 0.7rem; color: var(--toolbox-muted); text-align: center; } .duplicate-list { display: grid; gap: 0.7rem; } .duplicate-list article { display: grid; grid-template-columns: minmax(9rem, 1fr) auto minmax(9rem, 1fr) minmax( 14rem, 1.35fr ); gap: 0.75rem; align-items: center; padding: 0.8rem; border: 1px solid var(--toolbox-border); border-radius: 0.7rem; background: var(--toolbox-surface-soft); } .duplicate-list article > div, .duplicate-reasons { display: grid; gap: 0.3rem; } .merge-arrow { color: var(--toolbox-accent); font-size: 1.3rem; font-weight: 800; } .qr-workspace, .qr-grid, .qr-grid > div, .qr-preview { display: grid; gap: 1rem; } .qr-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .qr-preview { place-items: center; min-height: 24rem; padding: 1rem; border: 1px solid var(--toolbox-border); border-radius: 0.75rem; background: #fff; } .qr-preview img { width: min(100%, 24rem); aspect-ratio: 1; object-fit: contain; } pre { max-height: 18rem; margin: 0; padding: 0.75rem; overflow: auto; border-radius: 0.55rem; background: var(--toolbox-surface-soft); color: var(--toolbox-text); white-space: pre-wrap; overflow-wrap: anywhere; } @media (max-width: 62rem) { .editor-grid { grid-template-columns: 1fr; } .split-layout, .qr-grid { grid-template-columns: 1fr; } .privacy-strip { grid-template-columns: 1fr; } .duplicate-list article { grid-template-columns: 1fr auto 1fr; } .duplicate-reasons { grid-column: 1 / -1; } } @media (max-width: 48rem) { .steps li { grid-template-columns: 1fr; } } @media (max-width: 42rem) { .hero { flex-direction: column; } .privacy-pill { order: -1; } .form-grid, .mapping-grid, .duplicate-list article { grid-template-columns: 1fr; } .merge-arrow { display: none; } }