:root{--bg:#fafaf6;--surface:#fff;--surface-muted:#f6f5f2;--ink:#222128;--muted:#5a5668;--line:#e4dfeb;--border-strong:#d2ccdd;--primary:#2f5f65;--primary-hover:#274f55;--primary-ink:#f7f9ff;--secondary-bg:#eceaf1;--secondary-ink:#2f2c38;--danger:#8e2f3a;--danger-bg:#f1d3d7;--danger-ink:#6c1f2d;--info-bg:#dce8f8;--info-ink:#1e3f69;--focus:#2f5f65;--radius:14px;--radius-sm:10px;--radius-xs:9px;--shadow:0 2px 8px #22212814;--shadow-lg:0 6px 18px #22212824;--space-1:6px;--space-2:10px;--space-3:14px;--space-4:18px;--space-5:26px;--space-6:36px;--container:1180px;--motion:.15s;--font-ui:"Avenir Next", "Segoe UI", "Trebuchet MS", "Helvetica Neue", Helvetica, sans-serif;--font-mono:ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace}*,:before,:after{box-sizing:border-box}html,body,#app{margin:0}#app{flex-direction:column;min-height:100vh;display:flex}body{background:var(--bg);color:var(--ink);font-family:var(--font-ui);line-height:1.45}a{color:var(--primary)}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.skip-link{top:-48px;left:var(--space-3);z-index:100;padding:var(--space-2) var(--space-3);border-radius:var(--radius-xs);background:var(--primary);color:var(--primary-ink);position:absolute}.skip-link:focus{top:var(--space-2)}.app-header{z-index:10;border-bottom:1px solid var(--line);background:#fafaf6f2;position:sticky;top:0}.header-inner{max-width:var(--container);justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);margin:0 auto;display:flex}.brand{color:var(--ink);flex-direction:column;line-height:1.15;text-decoration:none;display:flex}.brand-name{font-size:1.25rem;font-weight:700}.brand-sub{color:var(--muted);font-size:.78rem}.search-button{align-items:center;gap:var(--space-2);min-height:40px;padding:0 var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--muted);cursor:pointer;font:inherit;transition:border-color var(--motion);display:inline-flex}.search-button:hover{border-color:var(--primary)}kbd{border:1px solid var(--line);background:var(--surface-muted);font-family:var(--font-ui);border-radius:6px;padding:2px 7px;font-size:.78rem}.app-main{width:100%;max-width:var(--container);padding:var(--space-5) var(--space-4);flex:1;margin:0 auto}.app-footer{border-top:1px solid var(--line);color:var(--muted);text-align:center;font-size:.88rem}.app-footer p{padding:var(--space-4);margin:0}.loading{color:var(--muted)}.load-error{padding:var(--space-4);border-radius:var(--radius);background:var(--danger-bg);color:var(--danger-ink)}.btn{min-height:40px;padding:0 var(--space-4);border:1px solid var(--primary);border-radius:var(--radius-sm);background:var(--primary);color:var(--primary-ink);cursor:pointer;font:inherit;transition:background var(--motion);justify-content:center;align-items:center;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover:not(:disabled){background:var(--primary-hover)}.btn.secondary{border-color:var(--border-strong);background:var(--secondary-bg);color:var(--secondary-ink)}.btn.secondary:hover:not(:disabled){background:var(--line)}.btn.small{min-height:32px;padding:0 var(--space-3);font-size:.88rem}.btn:disabled{cursor:not-allowed;opacity:.55}.input{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font:inherit}textarea.input{resize:vertical;min-height:280px;font-family:var(--font-mono);font-size:.9rem}.field-label,.panel-label{margin:0;font-size:.95rem;font-weight:600}.directory-title{margin:0 0 var(--space-1);font-size:1.8rem}.directory-lede{margin:0 0 var(--space-4);color:var(--muted)}.search-row{gap:var(--space-1);max-width:520px;display:grid}.chips{gap:var(--space-1);margin:var(--space-3) 0 var(--space-4);flex-wrap:wrap;display:flex}.chip{min-height:34px;padding:0 var(--space-3);border:1px solid var(--border-strong);background:var(--surface);color:var(--secondary-ink);cursor:pointer;font:inherit;border-radius:999px;font-size:.88rem}.chip[aria-pressed=true]{border-color:var(--primary);background:var(--primary);color:var(--primary-ink)}.group{margin-top:var(--space-5)}.group-title{margin:0 0 var(--space-2);color:var(--muted);letter-spacing:.02em;font-size:1rem}.cards{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(240px,1fr));margin:0;padding:0;list-style:none;display:grid}.card{height:100%;padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);color:var(--ink);transition:border-color var(--motion), transform var(--motion);flex-direction:column;gap:4px;text-decoration:none;display:flex}.card:hover{border-color:var(--primary);transform:translateY(-1px)}.card-name{font-weight:700}.card-desc{color:var(--muted);font-size:.9rem}.empty{padding:var(--space-4);border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--muted)}.palette-backdrop{z-index:50;padding:12vh var(--space-3) var(--space-3);background:#22212866;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0}.palette{width:min(560px,100%);max-height:70vh;padding:var(--space-3);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-lg);overflow:auto}.palette-head{gap:var(--space-2);display:flex}.palette-list{margin:var(--space-2) 0 0;padding:0;list-style:none}.palette-option{justify-content:space-between;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-xs);cursor:pointer;display:flex}.palette-option[aria-selected=true]{background:var(--primary);color:var(--primary-ink)}.palette-cat{opacity:.8;font-size:.82rem}.palette-empty{margin:var(--space-3) 0 0;color:var(--muted)}.toast-region{right:var(--space-4);bottom:var(--space-4);z-index:60;position:fixed}.toast{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--ink);box-shadow:var(--shadow-lg);color:var(--bg);display:inline-block}.workspace-title{margin:0;font-size:1.6rem}.workspace-desc{margin:var(--space-1) 0 var(--space-3);color:var(--muted)}.options{gap:var(--space-3);margin-bottom:var(--space-3);padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);flex-wrap:wrap;display:flex}.toolbar{align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.toolbar:empty{display:none}.running,.notice{color:var(--muted);font-size:.9rem}.notice{margin:0 0 var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--info-bg);color:var(--info-ink)}.panels{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}.panel{min-width:0;padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}.panel-head{justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.panel-actions{gap:var(--space-1);display:flex}.field{gap:var(--space-2);display:grid}.error{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--danger-bg);color:var(--danger-ink);white-space:pre-wrap;font-size:.92rem}[aria-invalid=true]{border-color:var(--danger)}@media (max-width:720px){.panels{grid-template-columns:1fr}.header-inner,.app-main{padding-right:var(--space-3);padding-left:var(--space-3)}textarea.input{min-height:200px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}.card:hover{transform:none}}.opt{align-items:center;gap:var(--space-2);min-width:0;max-width:100%;display:inline-flex}.opt input[type=text]{flex:auto;min-width:0}.opt select{flex:0 auto;width:auto;min-width:0;max-width:100%}.tool-note{color:var(--muted);flex-basis:100%;margin:0;font-size:.9rem}.tool-warning{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--info-bg);color:var(--info-ink);flex-basis:100%;margin:0;font-size:.9rem}.status-ok{color:var(--primary);margin:0;font-weight:600}.md-preview{min-height:12rem;padding:var(--space-3);overflow-wrap:anywhere;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);overflow:auto}.md-preview :is(h1,h2,h3,h4,h5,h6){margin:.8em 0 .4em;line-height:1.25}.md-preview pre{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--surface-muted);overflow:auto}.md-preview table{border-collapse:collapse}.md-preview :is(th,td){border:1px solid var(--line);padding:.25em .6em}.md-preview blockquote{border-inline-start:3px solid var(--line);color:var(--muted);margin-inline:0;padding-inline-start:var(--space-3)}.md-preview .md-image{border:1px dashed var(--line);border-radius:var(--radius-sm);color:var(--muted);padding:0 .3em;font-size:.9em}.diff-inputs{gap:var(--space-2);display:grid}.diff-field{gap:var(--space-1);font-weight:600;display:grid}.diff-output{gap:var(--space-2);display:grid}.diff-stats,.diff-same{margin:0;font-weight:600}.diff-scroll{border:1px solid var(--line);border-radius:var(--radius-sm);max-height:32rem;overflow:auto}.diff-table{border-collapse:collapse;width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem}.diff-table td{vertical-align:top;padding:1px 6px}.diff-num{width:3.5em;color:var(--muted);text-align:right;-webkit-user-select:none;user-select:none}.diff-text{white-space:pre-wrap;overflow-wrap:anywhere;width:50%}.diff-add .diff-text:last-child,.diff-change .diff-text:last-child{color:#1c4a2a;background:#dcefe0}.diff-remove .diff-text:nth-child(2),.diff-change .diff-text:nth-child(2){background:var(--danger-bg);color:var(--danger-ink)}.diff-unified{padding:var(--space-2) var(--space-3);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:.85rem}.jd-list{gap:2px;max-height:32rem;margin:0;padding:0;list-style:none;display:grid;overflow:auto}.jd-item{gap:var(--space-2);padding:4px var(--space-2);border-radius:var(--radius-xs);background:var(--surface-muted);grid-template-columns:8.5em minmax(8em,16em) 1fr;font-size:.9rem;display:grid}.jd-kind{font-weight:600}.jd-added .jd-kind{color:#1c4a2a}.jd-removed .jd-kind{color:var(--danger-ink)}.jd-changed .jd-kind,.jd-type-changed .jd-kind{color:var(--info-ink)}.jd-path,.jd-values{overflow-wrap:anywhere}@media (max-width:720px){.jd-item{grid-template-columns:1fr}}.regex-inputs{gap:var(--space-3);display:grid}.regex-field{gap:var(--space-1);font-weight:600;display:grid}.regex-pattern{font-family:var(--font-mono)}.regex-flags{gap:var(--space-2) var(--space-3);padding:var(--space-1) var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-sm);flex-wrap:wrap;margin:0;display:inline-flex}.regex-flag-name{color:var(--muted);font-size:.85rem}.regex-limit{width:6rem}.regex-output{gap:var(--space-2);display:grid}.regex-summary{margin:0;font-weight:600}.regex-matches{padding-left:var(--space-5,1.5rem);gap:var(--space-2);margin:0;display:grid}.regex-matches ul{margin:var(--space-1) 0 0;padding-left:var(--space-4,1rem);list-style:none}.regex-index{margin-right:var(--space-2);color:var(--muted);font-size:.85rem}.regex-matches code,.regex-replaced{font-family:var(--font-mono);overflow-wrap:anywhere}.regex-replaced{white-space:pre-wrap;margin:0}.regex-sub{margin:var(--space-2) 0 0;font-size:1rem}.cron-input{font-family:var(--font-mono)}.cron-zone{width:14rem}.cron-count{width:5rem}.cron-output{gap:var(--space-2);display:grid}.cron-explanation{margin:0;font-weight:600}.cron-table{border-collapse:collapse;width:100%;font-size:.9rem}.cron-table th,.cron-table td{padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--border);text-align:left;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.cidr-inputs{gap:var(--space-3);display:grid}.cidr-field{gap:var(--space-1);font-weight:600;display:grid}.cidr-input{font-family:var(--font-mono)}.cidr-output{gap:var(--space-3);display:grid}.cidr-check{margin:0;font-weight:600}.cidr-list{gap:var(--space-1) var(--space-4);grid-template-columns:max-content 1fr;margin:0;display:grid}.cidr-list dt{color:var(--muted)}.cidr-list dd{font-family:var(--font-mono);overflow-wrap:anywhere;margin:0}.cidr-notes{padding-left:var(--space-5,1.5rem);color:var(--muted);margin:0;font-size:.9rem}@media (max-width:720px){.cidr-list{grid-template-columns:1fr}}.ts-input{font-family:var(--font-mono)}.ts-zone{width:14rem}.ts-output{gap:var(--space-3);display:grid}.ts-block{gap:var(--space-1);display:grid}.ts-label{margin:0;font-weight:600}.ts-list{gap:var(--space-1) var(--space-4);grid-template-columns:max-content 1fr;margin:0;display:grid}.ts-list>div{display:contents}.ts-list dt{color:var(--muted)}.ts-list dd{font-family:var(--font-mono);overflow-wrap:anywhere;margin:0}@media (max-width:720px){.ts-list{grid-template-columns:1fr}}.units-input{font-family:var(--font-mono)}.units-output{gap:var(--space-2);display:grid}.units-breakdown{margin:0;font-weight:600}.units-table{border-collapse:collapse;width:100%;font-size:.9rem}.units-table th,.units-table td{padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--border);text-align:left;overflow-wrap:anywhere}.units-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.nb-input{font-family:var(--font-mono)}.nb-output{gap:var(--space-3);display:grid}.nb-twos{gap:var(--space-1);display:grid}.nb-label{margin:0;font-weight:600}.nb-list{gap:var(--space-1) var(--space-4);grid-template-columns:max-content 1fr;margin:0;display:grid}.nb-list>div{display:contents}.nb-list dt{color:var(--muted)}.nb-list dd{font-family:var(--font-mono);overflow-wrap:anywhere;margin:0}@media (max-width:720px){.nb-list{grid-template-columns:1fr}}.color-input,.color-bg{font-family:var(--font-mono)}.color-bg{width:12rem}.color-output{gap:var(--space-3);display:grid}.color-swatch{border:1px solid var(--border);background-image:linear-gradient(45deg,#ccc 25%,#0000 25% 75%,#ccc 75%),linear-gradient(45deg,#ccc 25%,#fff 25% 75%,#ccc 75%);background-position:0 0,8px 8px;background-size:16px 16px;border-radius:6px;height:4rem}.color-sample{padding:var(--space-3);border:1px solid var(--border);border-radius:6px;font-size:1.1rem}.color-ratio{margin:0;font-weight:600}.color-list{gap:var(--space-1) var(--space-4);grid-template-columns:max-content 1fr;margin:0;display:grid}.color-list>div{display:contents}.color-list dt{color:var(--muted)}.color-list dd{font-family:var(--font-mono);overflow-wrap:anywhere;margin:0}.color-pass{font-weight:600}.color-fail{font-weight:600;text-decoration:underline}@media (max-width:720px){.color-list{grid-template-columns:1fr}}.image-result{gap:.5rem;display:grid}.image-preview{border:1px solid var(--line);background:repeating-conic-gradient(#e5e5e5 0% 25%,#fff 0% 50%) 0/16px 16px;border-radius:4px;max-width:100%;height:auto}.qr-result{justify-items:start;gap:.5rem;display:grid}.qr-svg{border:1px solid var(--line);max-width:100%;height:auto}
