:root { color-scheme: light dark; font-family: Inter, ui-sans-serif, system-ui, -apple-system, sans-serif; --surface: color-mix(in srgb, Canvas 94%, #d8b4fe 6%); --surface-strong: color-mix(in srgb, Canvas 86%, #c084fc 14%); --line: color-mix(in srgb, CanvasText 18%, transparent); --line-strong: color-mix(in srgb, CanvasText 34%, transparent); --muted: color-mix(in srgb, CanvasText 66%, transparent); --accent: #7e22a8; --accent-ink: #ffffff; --success: #167448; --warning: #b45309; background: Canvas; color: CanvasText; } * { box-sizing: border-box; } body { margin: 0; min-width: 320px; } button, input, select, textarea { font: inherit; } button, input, select, textarea, .file-button { border: 1px solid var(--line); border-radius: 0.68rem; background: Canvas; color: CanvasText; padding: 0.62rem 0.75rem; } button, .file-button { min-height: 2.55rem; cursor: pointer; background: var(--surface); font-weight: 650; } button:hover, .file-button:hover { border-color: var(--accent); background: var(--surface-strong); } button:disabled, input:disabled { cursor: not-allowed; opacity: 0.55; } button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible { outline: 3px solid color-mix(in srgb, var(--accent) 48%, transparent); outline-offset: 2px; } .toolbox-shell__main { width: min(100%, 90rem); } .workbench { display: grid; gap: 1rem; padding: clamp(0.75rem, 2vw, 1.5rem); } .panel { min-width: 0; border: 1px solid var(--line); border-radius: 1rem; background: var(--surface); padding: clamp(0.85rem, 2vw, 1.2rem); box-shadow: 0 0.5rem 1.8rem color-mix(in srgb, CanvasText 5%, transparent); } .hero, .section-heading, .dialog-heading { display: flex; align-items: center; justify-content: space-between; gap: 1rem; } .hero { background: radial-gradient( circle at 90% 10%, color-mix(in srgb, #e879f9 24%, transparent), transparent 38% ), linear-gradient(135deg, var(--surface), var(--surface-strong)); } .hero h1 { margin: 0.15rem 0; font-size: clamp(1.75rem, 4vw, 2.8rem); letter-spacing: -0.035em; } .hero p:not(.eyebrow) { max-width: 70ch; margin: 0.35rem 0 0; color: var(--muted); } .eyebrow { margin: 0; color: var(--accent); font-size: 0.7rem; font-weight: 850; letter-spacing: 0.13em; text-transform: uppercase; } .file-button { position: relative; display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; background: var(--accent); color: var(--accent-ink); border-color: var(--accent); padding-inline: 1.1rem; } .file-button input { position: absolute; width: 1px; height: 1px; clip: rect(0 0 0 0); } .status { min-height: 1.5em; margin: 0; color: var(--muted); } .empty { display: grid; justify-items: center; gap: 0.5rem; padding-block: clamp(2.5rem, 8vw, 6rem); text-align: center; } .empty h2, .empty p { margin: 0; } .empty p { max-width: 62ch; color: var(--muted); } .drop-icon { display: grid; width: 5rem; height: 5rem; place-items: center; border: 1px solid var(--line-strong); border-radius: 1.25rem; background: Canvas; color: var(--accent); font: 800 1.8rem/1 Georgia, serif; transform: rotate(-3deg); } .limit-grid, .summary-grid, .two-column, .block-grid { display: grid; gap: 1rem; } .limit-grid { width: min(100%, 48rem); grid-template-columns: repeat(3, 1fr); margin: 1rem 0 0; } .limit-grid div { border-top: 1px solid var(--line); padding-top: 0.7rem; } .limit-grid dt { color: var(--muted); font-size: 0.75rem; text-transform: uppercase; } .limit-grid dd { margin: 0.25rem 0 0; font-weight: 700; } .summary-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } .collection-panel { display: grid; gap: 0.75rem; border-left: 4px solid var(--accent); } .collection-panel .section-heading { margin-bottom: 0; } .collection-panel select { width: min(100%, 52rem); } .summary-card { display: grid; align-content: start; gap: 0.3rem; } .summary-card strong { font-size: clamp(1rem, 2vw, 1.18rem); overflow-wrap: anywhere; } .summary-card span { color: var(--muted); font-size: 0.82rem; } .summary-card.ok { border-top: 3px solid var(--success); } .summary-card.warn { border-top: 3px solid var(--warning); } .section-heading { margin-bottom: 0.8rem; } .section-heading h2 { margin: 0.15rem 0 0; } .isolation { border: 1px solid var(--line); border-radius: 99rem; padding: 0.35rem 0.65rem; color: var(--muted); font-size: 0.75rem; white-space: nowrap; } label { display: grid; gap: 0.35rem; color: var(--muted); font-size: 0.84rem; } textarea { min-height: 6rem; resize: vertical; line-height: 1.45; } .preview-controls, .inline-controls { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; margin-block: 0.8rem; } .preview-controls label { display: grid; grid-template-columns: auto minmax(8rem, 16rem) 4rem; align-items: center; } .shaping-controls label { grid-template-columns: auto minmax(8rem, 18rem); } input[type="range"] { padding: 0; accent-color: var(--accent); } .axes { display: grid; gap: 0.65rem; margin: 0.8rem 0; border: 1px solid var(--line); border-radius: 0.75rem; padding: 0.8rem; } .axes legend { color: var(--muted); font-weight: 750; } .axes label { display: grid; grid-template-columns: minmax(9rem, 1fr) minmax(10rem, 3fr) 5rem; align-items: center; } .font-preview-frame { display: block; width: 100%; height: clamp(25rem, 48vh, 36rem); border: 1px solid var(--line); border-radius: 0.8rem; background: Canvas; } .two-column { grid-template-columns: repeat(2, minmax(0, 1fr)); } .metadata-list { margin: 0; } .metadata-list div { display: grid; grid-template-columns: minmax(8rem, 0.7fr) minmax(0, 1.5fr); gap: 0.75rem; border-top: 1px solid var(--line); padding: 0.55rem 0; } .metadata-list div:first-child { border: 0; } .metadata-list dt { color: var(--muted); } .metadata-list dd { margin: 0; overflow-wrap: anywhere; } .rights { border-left: 4px solid var(--success); } .rights.blocked { border-left-color: var(--warning); } .rights-label { font-size: 1.15rem; font-weight: 800; } .rights li, .loss-report li, .diagnostics li { margin-block: 0.35rem; } .license-text { max-height: 12rem; overflow: auto; border: 1px solid var(--line); border-radius: 0.7rem; background: Canvas; padding: 0.75rem; } .license-text p { white-space: pre-wrap; } .break { overflow-wrap: anywhere; } .block-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .coverage-block { display: grid; gap: 0.4rem; border: 1px solid var(--line); border-radius: 0.7rem; background: Canvas; padding: 0.65rem; } .coverage-block div { display: flex; justify-content: space-between; gap: 0.5rem; font-size: 0.78rem; } .coverage-block span { color: var(--muted); white-space: nowrap; } meter { width: 100%; accent-color: var(--accent); } .coverage-summary { margin: 1rem 0 0.5rem; } .glyph-strip { display: grid; grid-template-columns: repeat(auto-fill, minmax(4.5rem, 1fr)); gap: 0.4rem; max-height: 25rem; overflow: auto; } .glyph-strip > span { display: grid; min-height: 4.5rem; place-items: center; border: 1px solid var(--line); border-radius: 0.55rem; background: Canvas; padding: 0.3rem; } .glyph-strip .missing { border-color: color-mix(in srgb, var(--warning) 65%, var(--line)); background: color-mix(in srgb, var(--warning) 8%, Canvas); } .glyph-char { font-size: 1.35rem; } .glyph-strip small { color: var(--muted); font: 0.65rem ui-monospace, monospace; } details { margin-top: 1rem; border-top: 1px solid var(--line); padding-top: 0.8rem; } summary { cursor: pointer; font-weight: 750; } .range-list { display: flex; flex-wrap: wrap; gap: 0.35rem; max-height: 16rem; overflow: auto; margin-top: 0.65rem; } .range-list code { border-radius: 0.35rem; background: Canvas; padding: 0.25rem 0.4rem; } .compact { display: grid; grid-template-columns: auto minmax(9rem, 18rem); align-items: center; } .layout-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); gap: 0.7rem; margin-bottom: 1rem; } .layout-summary article { border: 1px solid var(--line); border-radius: 0.7rem; background: Canvas; padding: 0.75rem; } .layout-summary h3, .layout-summary p { margin: 0; } .layout-summary p + p { margin-top: 0.35rem; } .table-scroll { max-height: 35rem; overflow: auto; } table { width: 100%; border-collapse: collapse; font-size: 0.84rem; } th, td { max-width: 25rem; border-bottom: 1px solid var(--line); padding: 0.58rem; text-align: left; vertical-align: top; overflow-wrap: anywhere; } thead th { position: sticky; top: 0; background: var(--surface-strong); z-index: 1; } .diagnostics, .loss-report { margin-top: 0.8rem; border: 1px solid var(--line); border-radius: 0.7rem; padding: 0.8rem; } .diagnostics h3, .loss-report h3 { margin-top: 0; } .output-grid > section { display: grid; align-content: start; gap: 0.7rem; } .check { display: flex; align-items: flex-start; gap: 0.55rem; } .check input { width: 1.1rem; height: 1.1rem; flex: 0 0 auto; margin-top: 0.1rem; accent-color: var(--accent); } .code-output { min-height: 14rem; font: 0.78rem/1.5 ui-monospace, SFMono-Regular, Consolas, monospace; } .primary { background: var(--accent); color: var(--accent-ink); border-color: var(--accent); } .block-reason { border-left: 3px solid var(--warning); border-radius: 0.35rem; background: color-mix(in srgb, var(--warning) 9%, Canvas); padding: 0.65rem; } .note { margin: 0.5rem 0; color: var(--muted); font-size: 0.82rem; } .help-dialog { width: min(44rem, calc(100% - 2rem)); border: 1px solid var(--line); border-radius: 1rem; background: Canvas; color: CanvasText; padding: 1.2rem; } .help-dialog::backdrop { background: #13091cbb; backdrop-filter: blur(3px); } .dialog-heading button { width: 2.5rem; height: 2.5rem; padding: 0; } .fatal { width: min(100% - 2rem, 50rem); margin: 3rem auto; border: 1px solid var(--line); border-radius: 1rem; padding: 1.5rem; } @media (max-width: 1000px) { .summary-grid, .block-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 760px) { .hero, .section-heading { align-items: stretch; flex-direction: column; } .summary-grid, .two-column, .block-grid, .limit-grid { grid-template-columns: 1fr; } .preview-controls, .inline-controls { align-items: stretch; flex-direction: column; } .preview-controls label, .axes label, .compact, .metadata-list div { grid-template-columns: 1fr; } .isolation { align-self: flex-start; } } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; } }