@layer components{:where(.tool-page,.tools-index){--tf-surface:var(--surface,var(--bg));--tf-surface-2:var(--surface-2,var(--slate-2));--tf-line:var(--line,var(--slate-6));--tf-line-strong:var(--line-strong,var(--slate-8));--tf-ink:var(--ink,var(--slate-12));--tf-ink-2:var(--ink-2,var(--slate-11));--tf-accent:var(--accent,var(--orange-9));--tf-on-accent:var(--on-accent,var(--slate-12));--tf-good:var(--good,var(--grass-9,var(--ink)));--tf-warn:var(--warn,var(--amber-9,var(--ink)));--tf-crit:var(--crit,var(--red-9,var(--ink)));--tf-s1:var(--series-1,var(--ink));--tf-s2:var(--series-2,var(--accent-ink));--tf-mono:var(--font-mono,"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace);--tf-radius:var(--radius-input,6px);--tf-radius-card:var(--radius-card,10px);--tf-target:44px}.tool-page,.tools-index{min-width:0;max-width:72rem;margin-inline:auto;padding-block:1rem 3rem}.tool-page__head{max-width:42rem;margin-block-end:1.25rem}.tool-page__head h1,.tools-index h1{text-wrap:balance;margin:.25rem 0 .5rem;font-size:clamp(2.07rem,1.6rem + 1.9vw,3.15rem);font-weight:700;line-height:1.05}.tool-page__lead{color:var(--tf-ink-2);text-wrap:pretty;font-size:1.1rem}.tool-page__app{container:tf-app/inline-size}.tool-page__section{max-width:48rem;margin-block-start:2rem}.tool-page__section h2{margin-block-end:.75rem;font-size:clamp(1.44rem,1.3rem + .6vw,1.77rem);font-weight:700}.tool-page__note{color:var(--tf-ink-2);max-width:48rem;margin-block-start:1.5rem;font-size:.875rem}.tf-math{border:1px solid var(--tf-line);border-radius:var(--tf-radius-card);background:var(--tf-surface);max-width:48rem;margin-block-start:1.5rem}.tf-math>summary{min-height:var(--tf-target);cursor:pointer;align-items:center;padding:.5rem 1rem;font-weight:600;display:flex}.tf-math__title{font:inherit;letter-spacing:normal;text-transform:none;text-wrap:inherit;color:inherit;margin:0}.tf-math__body{text-wrap:pretty;grid-template-columns:minmax(0,1fr);gap:.75rem;padding:0 1rem 1rem;display:grid}.tf-math__body h3{text-transform:uppercase;letter-spacing:.08em;color:var(--tf-ink-2);margin-block-start:.5rem;font-size:.875rem;font-weight:700}.tf-math__body ul{gap:.35rem;padding-inline-start:1.25rem;list-style:outside;display:grid}.tf-formula{font-family:var(--tf-mono);background:var(--tf-surface-2);border:1px solid var(--tf-line);border-radius:var(--tf-radius);white-space:pre-wrap;overflow-wrap:anywhere;padding:.6rem .75rem;font-size:.95rem;overflow-x:auto}.tf-tool{grid-template-columns:minmax(0,1fr);gap:1.25rem;min-width:0;display:grid}@container tf-app (width>=50rem){.tf-tool:not(.tf-tool--stack){grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start}.tf-tool:not(.tf-tool--stack)>.tf-result{position:sticky;top:4.5rem}}.tf-form{grid-template-columns:minmax(0,1fr);gap:1rem;min-width:0;display:grid;container:tf-form/inline-size}.tf-grid{gap:.75rem 1rem;min-width:0;display:grid}@container tf-form (width>=26rem){.tf-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.tf-grid.tf-grid--unit{grid-template-columns:minmax(0,1fr) 6.5rem}.tf-group{border:1px solid var(--tf-line);border-radius:var(--tf-radius-card);background:var(--tf-surface);min-width:0;grid-template-columns:minmax(0,1fr);gap:.75rem;min-inline-size:0;padding:.75rem .875rem 1rem;display:grid}.tf-group__title{text-transform:uppercase;letter-spacing:.1em;color:var(--tf-ink-2);padding-inline:.25rem;font-size:.8rem;font-weight:700}.tf-field{align-content:start;gap:.3rem;min-width:0;display:grid}.tf-label-row{flex-wrap:wrap;align-items:baseline;gap:.25rem .5rem;display:flex}.tf-label{font-size:.95rem;font-weight:600}.tf-opt{color:var(--tf-ink-2);font-weight:400}.tf-tag{letter-spacing:.02em;border:1px dashed var(--tf-line-strong);color:var(--tf-ink-2);border-radius:999px;align-items:center;max-width:100%;padding:.1rem .5rem;font-size:.75rem;font-weight:600;display:inline-flex}.tf-input,.tf-select{min-height:var(--tf-target);border:1px solid var(--tf-line-strong);border-radius:var(--tf-radius);background:var(--tf-surface);align-items:stretch;min-width:0;display:flex}.tf-input:focus-within,.tf-select:focus-within{outline:2px solid var(--focus,var(--orange-8));outline-offset:2px}.tf-field[data-invalid] .tf-input{border-color:var(--tf-crit);border-width:2px}.tf-input input,.tf-select select{width:100%;min-width:0;color:inherit;font:inherit;font-variant-numeric:tabular-nums;background:0 0;border:0;flex:auto;padding:0 .75rem;font-size:1rem}.tf-input input:focus,.tf-select select:focus{outline:none}.tf-select select{appearance:auto;cursor:pointer;background-color:var(--tf-surface);border-radius:inherit}.tf-sfx{color:var(--tf-ink-2);font-family:var(--tf-mono);white-space:nowrap;border-inline-start:1px solid var(--tf-line);background:var(--tf-surface-2);border-start-end-radius:var(--tf-radius);border-end-end-radius:var(--tf-radius);align-items:center;padding:0 .75rem;font-size:.875rem;display:flex}.tf-hint{color:var(--tf-ink-2);text-wrap:pretty;font-size:.875rem}.tf-paste-issues{overflow-wrap:anywhere;margin:.25rem 0 0;padding-inline-start:1.25rem}.tf-error{align-items:flex-start;gap:.35rem;font-size:.875rem;font-weight:600;display:flex}.tf-error svg{color:var(--tf-crit);flex:none;margin-block-start:.15rem}.tf-sr{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.tf-seg{gap:.35rem;min-width:0;display:grid}.tf-seg__row{border:1px solid var(--tf-line-strong);border-radius:var(--tf-radius);background:var(--tf-surface);display:flex;overflow:hidden}.tf-seg__opt{flex:1 1 0;min-width:0;display:flex;position:relative}.tf-seg__opt+.tf-seg__opt{border-inline-start:1px solid var(--tf-line-strong)}.tf-seg__opt input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.tf-seg__opt span{text-align:center;min-height:var(--tf-target);flex:1;justify-content:center;align-items:center;padding:.25rem .5rem;font-weight:600;display:flex}.tf-seg__opt input:checked+span{background:var(--tf-ink);color:var(--tf-surface)}.tf-seg__opt input:focus-visible+span{outline:2px solid var(--focus,var(--orange-8));outline-offset:-4px}.tf-btn{min-height:var(--tf-target);border-radius:var(--tf-radius);border:1px solid var(--tf-ink);background:var(--tf-ink);color:var(--tf-surface);font:inherit;cursor:pointer;justify-content:center;align-items:center;gap:.4rem;padding:0 1rem;font-weight:600;display:inline-flex}.tf-btn--ghost{background:var(--tf-surface);color:var(--tf-ink);border-color:var(--tf-line-strong)}.tf-btn:disabled,.tf-icon-btn:disabled{opacity:.5;cursor:not-allowed}.tf-icon-btn{width:var(--tf-target);height:var(--tf-target);border:1px solid var(--tf-line);border-radius:var(--tf-radius);background:var(--tf-surface);color:var(--tf-ink);cursor:pointer;justify-content:center;align-items:center;display:inline-flex}.tf-btn-row,.tf-chips{flex-wrap:wrap;gap:.5rem;display:flex}fieldset.tf-chips{border:0;min-inline-size:0;margin:0;padding:0}.tf-chip{min-height:var(--tf-target);border:1px solid var(--tf-line-strong);background:var(--tf-surface);color:var(--tf-ink);font:inherit;font-family:var(--tf-mono);cursor:pointer;border-radius:999px;padding:0 .875rem;font-size:.875rem}.tf-chip[aria-pressed=true]{background:var(--tf-ink);color:var(--tf-surface);border-color:var(--tf-ink)}.tf-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;display:flex}.tf-example{flex-wrap:wrap;align-items:center;gap:.25rem .75rem;font-weight:600;display:flex}.tf-saved{color:var(--tf-ink-2);font-size:.8rem;font-weight:400}.tf-rows{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.tf-row{grid-template-columns:1rem minmax(0, 1fr) minmax(0, 1fr) var(--tf-target);align-items:start;gap:.375rem;display:grid}.tf-row .tf-input input{padding-inline:.5rem}.tf-row .tf-sfx{padding-inline:.375rem}.tf-row--cable{grid-template-columns:1rem minmax(0, 3fr) minmax(0, 2fr) var(--tf-target)}.tf-row__idx{font-family:var(--tf-mono);color:var(--tf-ink-2);min-height:var(--tf-target);justify-content:flex-end;align-items:center;font-size:.875rem;display:flex}.tf-result{border:1px solid var(--tf-line-strong);border-radius:var(--tf-radius-card);background:var(--tf-surface);box-shadow:var(--shadow-raised,none);align-content:start;gap:.75rem;min-width:0;padding:1rem;display:grid}.tf-pills{flex-wrap:wrap;gap:.5rem;display:flex}.tf-pill{border:2px solid var(--tf-pill,var(--tf-line-strong));background:var(--tf-surface);max-width:100%;min-height:2rem;color:var(--tf-ink);border-radius:1rem;justify-self:start;align-items:center;gap:.45rem;padding:.3rem .85rem .3rem .6rem;font-size:.925rem;font-weight:600;line-height:1.25;display:inline-flex}.tf-pill svg{color:var(--tf-pill);flex:none}.tf-pill[data-status=good]{--tf-pill:var(--tf-good)}.tf-pill[data-status=warn]{--tf-pill:var(--tf-warn)}.tf-pill[data-status=crit]{--tf-pill:var(--tf-crit)}.tf-result-error{gap:.5rem;display:grid}.tf-eyebrow{letter-spacing:.1em;text-transform:uppercase;color:var(--tf-ink-2);font-size:.8rem;font-weight:700}.tf-hero{font-variant-numeric:tabular-nums;font-size:clamp(2.4rem,2rem + 2vw,3.25rem);font-weight:600;line-height:1}.tf-hero small{color:var(--tf-ink-2);font-size:.4em;font-weight:600}.tf-sub,.tf-sentence{text-wrap:pretty}.tf-sentence{font-size:1.1rem}.tf-muted{color:var(--tf-ink-2)}.tf-notes{gap:.35rem;padding-inline-start:1.25rem;font-size:.925rem;list-style:outside;display:grid}.tf-callout{border:1px solid var(--tf-line-strong);border-radius:var(--tf-radius);background:var(--tf-surface-2);border-inline-start-width:4px;gap:.25rem;padding:.75rem;display:grid}.tf-kv{gap:.4rem;display:grid}.tf-kv>div{border-block-end:1px solid var(--tf-line);flex-wrap:wrap;justify-content:space-between;gap:.25rem 1rem;padding-block:.35rem;display:flex}.tf-kv dt{color:var(--tf-ink-2)}.tf-kv dd{font-variant-numeric:tabular-nums;font-weight:600}.tf-kv--grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem 1rem}.tf-kv--grid>div{flex-direction:column;justify-content:flex-start}.tf-copy{justify-items:start;gap:.5rem;display:grid}.tf-copy__fallback{gap:.35rem;width:100%;display:grid}.tf-copy__fallback textarea,.tf-paste{width:100%;font-family:var(--tf-mono);border:1px solid var(--tf-line-strong);border-radius:var(--tf-radius);background:var(--tf-surface);color:inherit;padding:.5rem .75rem;font-size:.875rem}.tf-meter{gap:.35rem;padding-block:.25rem .75rem;display:grid}.tf-meter__track{background:var(--tf-surface-2);border:1px solid var(--tf-line);border-radius:999px;height:.875rem;position:relative}.tf-meter__fill{background:var(--tf-meter,var(--tf-ink-2));border-radius:999px;position:absolute;inset-block:0;inset-inline-start:0}.tf-meter[data-status=good]{--tf-meter:var(--tf-good)}.tf-meter[data-status=warn]{--tf-meter:var(--tf-warn)}.tf-meter[data-status=crit]{--tf-meter:var(--tf-crit)}.tf-meter__tick{border-inline-start:2px solid var(--tf-ink);width:0;position:absolute;top:-.35rem;bottom:-.35rem;transform:translate(-1px)}.tf-meter__tick--min{border-inline-start-style:dashed}.tf-meter__scale{height:1.1rem;font-family:var(--tf-mono);color:var(--tf-ink-2);font-size:.75rem;position:relative}.tf-meter__scale span{white-space:nowrap;position:absolute;top:0;transform:translate(-50%)}.tf-meter__scale span[data-edge=start]{transform:none}.tf-meter__scale span[data-edge=end]{transform:translate(-100%)}.tf-table-wrap{border:1px solid var(--tf-line);border-radius:var(--tf-radius);overscroll-behavior-x:contain;max-width:100%;position:relative;overflow-x:auto}.tf-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.925rem}.tf-table th,.tf-table td{text-align:start;border-block-end:1px solid var(--tf-line);vertical-align:middle;padding:.45rem .6rem}.tf-table thead th{color:var(--tf-ink-2);background:var(--tf-surface-2);white-space:nowrap;font-size:.8rem;font-weight:700}.tf-table tbody th{font-weight:600}.tf-table .tf-num{text-align:end;font-family:var(--tf-mono)}.tf-table__sum th,.tf-table__sum td{border-block-start:2px solid var(--tf-line-strong);font-weight:700}.tf-table--inputs td{padding:.3rem}.tf-table--inputs{min-width:30rem}.tf-cell{width:100%;min-width:4.5rem;min-height:var(--tf-target);border:1px solid var(--tf-line-strong);border-radius:var(--tf-radius);background:var(--tf-surface);color:inherit;font:inherit;padding:0 .6rem;font-size:1rem}.tf-cell.tf-num{text-align:end}.tf-cell[aria-invalid=true]{border:2px solid var(--tf-crit)}.tf-flag{text-transform:uppercase;letter-spacing:.04em;color:var(--tf-ink-2);font-family:inherit;font-size:.75rem;font-weight:700}.tf-result-cell{align-items:center;gap:.3rem;font-weight:700;display:inline-flex}.tf-result-cell[data-status=good] svg{color:var(--tf-good)}.tf-result-cell[data-status=crit] svg{color:var(--tf-crit)}.tf-details>summary{min-height:var(--tf-target);cursor:pointer;align-items:center;font-weight:600;display:flex}.tf-swatch{border:1px solid var(--tf-line-strong);border-radius:4px;flex:none;display:inline-block}.tf-swatch--md{width:3rem;height:1.5rem}.tf-swatch--sm{width:1.25rem;height:1.25rem}.tf-swatch[data-empty]{background:repeating-linear-gradient(135deg, var(--tf-surface-2) 0 4px, var(--tf-line) 4px 6px)}.tf-pair{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.tf-pair__cell{border:1px solid var(--tf-line);border-radius:var(--tf-radius);background:var(--tf-surface-2);justify-items:start;gap:.35rem;min-width:0;padding:.75rem;display:grid}.tf-pair__num{font-variant-numeric:tabular-nums;font-size:2rem;font-weight:600;line-height:1}.tf-pair__name{overflow-wrap:anywhere;font-weight:600}.tf-block{gap:.5rem;display:grid}.tf-strip{flex-wrap:wrap;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.tf-strip__f{border:2px solid #0000;border-radius:4px;justify-items:center;gap:.15rem;padding:.2rem;display:grid}.tf-strip__f[data-on]{border-color:var(--tf-ink)}.tf-strip__n{font-family:var(--tf-mono);color:var(--tf-ink-2);font-size:.7rem}.tf-strip__f[data-on] .tf-strip__n{color:var(--tf-ink);font-weight:700}.tf-colors{grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:.5rem;padding:0;list-style:none;display:grid}.tf-colors li{border:1px solid var(--tf-line);border-radius:var(--tf-radius);align-items:center;gap:.5rem;padding:.4rem .5rem;display:flex}.tf-colors__n{font-family:var(--tf-mono);color:var(--tf-ink-2);text-align:end;min-width:1.5rem}.tf-chart{gap:.5rem;min-width:0;margin:0;display:grid}.tf-chart__title{font-weight:700}.tf-legend{color:var(--tf-ink);flex-wrap:wrap;gap:.25rem 1rem;margin:0;padding:0;font-size:.875rem;list-style:none;display:flex}.tf-legend li{align-items:center;gap:.4rem;display:inline-flex}.tf-chart__plot{touch-action:pan-y;border-radius:var(--tf-radius);min-width:0;position:relative}.tf-chart__plot svg{max-width:100%;height:auto;display:block}.tf-chart__plot:focus-visible{outline:2px solid var(--focus,var(--orange-8));outline-offset:2px}.tf-series{fill:none;stroke-width:2.25px;stroke-linejoin:round;stroke-linecap:round}.tf-series--a{stroke:var(--tf-s1)}.tf-series--b{stroke:var(--tf-s2);stroke-dasharray:7 5}.tf-dot{stroke:var(--tf-surface);stroke-width:2px}.tf-dot--a{fill:var(--tf-s1)}.tf-dot--b{fill:var(--tf-s2)}.tf-rating{stroke:var(--tf-ink-2);stroke-width:1.5px;stroke-dasharray:2 4}.tf-grid-line{stroke:var(--tf-line);stroke-width:1px}.tf-axis{stroke:var(--tf-line-strong);stroke-width:1px}.tf-cross{stroke:var(--tf-ink-2);stroke-width:1px}.tf-tick{fill:var(--tf-ink-2);font-family:var(--tf-mono);font-size:12px}.tf-label{fill:var(--tf-ink);paint-order:stroke;stroke:var(--tf-surface);stroke-width:3px;font-size:12.5px;font-weight:600}.tf-tip{border:1px solid var(--tf-line-strong);border-radius:var(--tf-radius);background:var(--tf-surface);width:10.5rem;box-shadow:var(--shadow-overlay,0 4px 12px color-mix(in oklab, var(--tf-ink) 18%, transparent));pointer-events:none;gap:.2rem;padding:.5rem .6rem;font-size:.8rem;display:grid;position:absolute}.tf-tip__x{color:var(--tf-ink-2);font-family:var(--tf-mono)}.tf-tip__row{align-items:center;gap:.35rem;display:flex}.tf-tip__row span{color:var(--tf-ink-2)}.tools-index__lead{color:var(--tf-ink-2);text-wrap:pretty;max-width:42rem;font-size:1.1rem}.tools-jump{margin-block:1.25rem 0}.tools-jump ul{grid-template-columns:repeat(auto-fit,minmax(min(100%,10.5rem),1fr));gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.tools-jump__link{min-height:var(--tf-target);border:1px solid var(--tf-line-strong);border-radius:var(--tf-radius-card);background:var(--tf-surface);color:var(--tf-ink);align-items:center;gap:.5rem;padding:.5rem .75rem;font-weight:600;text-decoration:none;display:flex}.tools-jump__link:hover{border-color:var(--tf-ink)}.tools-jump__badge,.tools-jump__icon{flex:none;display:inline-flex}.tools-jump__icon{color:var(--accent-ink,var(--tf-ink))}.tools-jump__label{flex:1;min-width:0;line-height:1.2}.tools-jump__count{font-family:var(--tf-mono);color:var(--tf-ink-2);font-size:.875rem}.tools-cat{margin-block-start:2.25rem}.tools-cat__list{grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr));gap:.75rem;margin:1rem 0 0;padding:0;list-style:none;display:grid}.tools-card__glyph{color:var(--accent-ink,var(--tf-ink));display:inline-flex}.tools-card__sheets{font-size:var(--step--1);flex-wrap:wrap;gap:0 .85rem;margin:0;padding:0;list-style:none;display:flex}.tools-card__sheets a{z-index:1;color:var(--accent-ink,var(--tf-ink));text-underline-offset:.15em;padding-block:.35rem;display:inline-block;position:relative}.tools-card__also{font-size:var(--step--1);color:var(--tf-ink-2);margin-block-start:auto;padding-block-start:.25rem}.bp-example{margin-block-start:.75rem}.bp-sketch{gap:.35rem;max-width:30rem;margin:.5rem 0 1rem;display:grid}.bp-sketch svg{width:100%;height:auto;display:block}.bp-sketch text{fill:var(--tf-ink);font-family:var(--tf-mono);font-size:10.5px}.bp-sketch figcaption{color:var(--tf-ink-2);font-size:.875rem}.bp-ground{stroke:var(--tf-line-strong);stroke-width:1.5px}.bp-level{stroke:var(--tf-ink-2);stroke-width:1px;stroke-dasharray:2 4}.bp-path{fill:none;stroke:var(--map-ug);stroke-width:3px;stroke-dasharray:8 5}.bp-dim{fill:none;stroke:var(--tf-ink-2);stroke-width:1px}@media (prefers-contrast:more){.tf-group,.tf-result,.tf-table-wrap{border-color:var(--tf-line-strong)}}@media print{.tf-btn,.tf-icon-btn,.tf-chips,.tf-copy,.tf-toolbar button,.tf-paste-group{display:none!important}.tf-result{box-shadow:none;break-inside:avoid;position:static!important}.tf-tip{display:none}}}
