.kv-list{display:flex;flex-direction:column;gap:var(--s-2);margin-top:var(--s-3)}.kv-row{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface)}.kv-row .kv-label{flex:none;min-width:96px;font-weight:600;font-size:var(--fs-sm);color:var(--text-soft)}.kv-row .kv-val{flex:1;font-family:var(--font-mono);font-size:var(--fs-sm);overflow-wrap:anywhere;word-break:break-word}.kv-row .kv-copy{flex:none;width:30px;height:30px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-mute);cursor:pointer;display:grid;place-items:center}.kv-row .kv-copy:hover{color:var(--signal-deep);border-color:var(--signal)}.kv-row .kv-copy svg{width:15px;height:15px}.kv-meta{font-size:var(--fs-xs);color:var(--text-mute);font-family:var(--font-mono);margin-left:auto}.drop-zone{border:2px dashed var(--border-strong);border-radius:var(--r-lg);padding:var(--s-7) var(--s-5);text-align:center;color:var(--text-mute);cursor:pointer;transition:border-color .15s,background .15s;background:var(--bg-sunken)}.drop-zone:hover,.drop-zone.drag{border-color:var(--signal);background:var(--grad-soft);color:var(--text)}.drop-zone .dz-icon{width:38px;height:38px;margin:0 auto var(--s-2);color:var(--signal-deep)}.drop-zone .dz-hint{font-size:var(--fs-xs);margin-top:var(--s-1)}.drop-zone input[type=file]{display:none}.meter{height:10px;border-radius:var(--r-pill);background:var(--bg-sunken);overflow:hidden;margin:var(--s-3) 0}.meter span{display:block;height:100%;width:0;transition:width .25s,background .25s;border-radius:var(--r-pill)}.meter span.s0{background:#e1566b}.meter span.s1{background:#f0883e}.meter span.s2{background:#e8c14b}.meter span.s3{background:#7bc47f}.meter span.s4{background:#3fae6b}.strength-label{font-weight:700;font-size:var(--fs-sm)}.warn-list{list-style:none;margin:var(--s-3) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--s-1)}.warn-list li{font-size:var(--fs-sm);color:var(--text-soft);display:flex;gap:.4rem;align-items:flex-start}.warn-list li::before{content:"!";flex:none;width:16px;height:16px;border-radius:50%;background:#f0883e;color:#fff;font-size:11px;font-weight:700;display:grid;place-items:center;margin-top:2px}.color-preview{height:120px;border-radius:var(--r-lg);border:1px solid var(--border);margin-bottom:var(--s-4)}.swatch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:var(--s-3);margin-top:var(--s-4)}.swatch{border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden;cursor:pointer;background:var(--surface)}.swatch .sw-color{height:64px}.swatch .sw-hex{font-family:var(--font-mono);font-size:var(--fs-xs);text-align:center;padding:.4rem;color:var(--text-soft)}.gradient-preview{height:140px;border-radius:var(--r-lg);border:1px solid var(--border);margin-bottom:var(--s-4)}.contrast-demo{padding:var(--s-5);border-radius:var(--r-md);text-align:center;font-weight:600;margin-top:var(--s-3)}.badge{display:inline-block;padding:.2rem .6rem;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:700}.badge.pass{background:rgba(63,174,107,.16);color:#2c8a55}.badge.fail{background:rgba(225,86,107,.16);color:#c2304a}:root[data-theme="dark"] .badge.pass{color:#6fd99a}:root[data-theme="dark"] .badge.fail{color:#ff8ba0}.code-preview{display:flex;align-items:center;justify-content:center;padding:var(--s-5);background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);min-height:200px}.code-preview canvas,.code-preview svg,.code-preview img{max-width:100%;height:auto}.qr-empty{color:var(--text-mute);font-size:var(--fs-sm)}.exif-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm);margin-top:var(--s-3)}.exif-table th,.exif-table td{text-align:left;padding:var(--s-2) var(--s-3);border-bottom:1px solid var(--border)}.exif-table th{color:var(--text-soft);font-weight:600;width:40%}.exif-table td{font-family:var(--font-mono);overflow-wrap:anywhere}.exif-img{max-width:100%;max-height:280px;border-radius:var(--r-md);border:1px solid var(--border);margin-bottom:var(--s-3)}.tag-row{display:flex;flex-wrap:wrap;gap:var(--s-2);margin-top:var(--s-3)}.mono-out{font-family:var(--font-mono);font-size:var(--fs-sm);word-break:break-word;overflow-wrap:anywhere}.file-row{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-3);border:1px solid var(--border);border-radius:var(--r-md);margin-top:var(--s-2);background:var(--surface)}.file-row .fr-name{flex:1;font-weight:600;font-size:var(--fs-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-row .fr-size{font-size:var(--fs-xs);color:var(--text-mute);font-family:var(--font-mono)}@media (max-width:560px){.kv-row{flex-wrap:wrap}.kv-row .kv-label{min-width:0;width:100%}.exif-table th{width:45%}}.out-field{margin-top:var(--s-3)}.out-field .of-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);margin-bottom:var(--s-1)}.out-field .of-head span{font-size:var(--fs-xs);color:var(--text-mute);text-transform:uppercase;letter-spacing:.04em}.out-field .of-val{display:block;padding:var(--s-2) var(--s-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg-sunken);font-family:var(--font-mono);font-size:var(--fs-sm);word-break:break-all;white-space:pre-wrap;max-height:140px;overflow:auto}.gen-item{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);font-family:var(--font-mono);font-size:var(--fs-sm);word-break:break-all}.gen-item + .gen-item{margin-top:var(--s-2)}.gen-item .gi-val{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gen-item .gi-copy{flex:none;width:30px;height:30px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-mute);cursor:pointer;display:grid;place-items:center}.gen-item .gi-copy:hover{color:var(--signal-deep);border-color:var(--signal)}.gen-item .gi-copy svg{width:15px;height:15px}
/* ── Batch 4.5: new developer tools UI ── */
.field-inline{display:inline-flex;align-items:center;gap:var(--s-2);font-size:var(--fs-sm);color:var(--text-mute)}
.field-inline input[type="text"],.field-inline select{margin-top:var(--s-1)}
.hint-mute{color:var(--text-mute);font-size:var(--fs-xs)}
.tool-error{background:var(--bg-sunken);border:1px solid var(--border);border-left:3px solid var(--danger,#c0392b);border-radius:var(--r-sm);padding:var(--s-2) var(--s-3)}

/* Markdown preview */
.md-preview{background:var(--bg-sunken);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-4);overflow:auto;min-height:6rem;line-height:1.6}
.md-preview h1,.md-preview h2,.md-preview h3,.md-preview h4{margin:.8em 0 .4em;line-height:1.25}
.md-preview h1{font-size:1.6rem;border-bottom:1px solid var(--border);padding-bottom:.2em}
.md-preview h2{font-size:1.35rem;border-bottom:1px solid var(--border);padding-bottom:.2em}
.md-preview h3{font-size:1.15rem}
.md-preview p{margin:.6em 0}
.md-preview ul,.md-preview ol{margin:.5em 0;padding-left:1.6em}
.md-preview li{margin:.2em 0}
.md-preview code{font-family:var(--font-mono);background:var(--surface);padding:.15em .4em;border-radius:var(--r-sm);font-size:.9em}
.md-preview pre{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-3);overflow:auto}
.md-preview pre code{background:none;padding:0}
.md-preview blockquote{border-left:3px solid var(--border-strong);margin:.6em 0;padding:.2em 0 .2em var(--s-3);color:var(--text-mute)}
.md-preview table{border-collapse:collapse;margin:.6em 0;width:100%}
.md-preview th,.md-preview td{border:1px solid var(--border);padding:.4em .7em;text-align:left}
.md-preview th{background:var(--surface)}
.md-preview a{color:var(--signal);text-decoration:underline}
.md-preview img{max-width:100%;height:auto}
.md-preview hr{border:none;border-top:1px solid var(--border);margin:1em 0}

/* Regex tester */
.rx-highlight{font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word;background:var(--bg-sunken);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-3);min-height:3rem;line-height:1.6}
.rx-hit{background:var(--signal);color:#fff;border-radius:2px;padding:0 1px}
.rx-groups{display:flex;flex-direction:column;gap:var(--s-3)}
.rx-match{background:var(--bg-sunken);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-3)}
.rx-match-head{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text);margin-bottom:var(--s-2);word-break:break-word}
.rx-group{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-mute);padding-left:var(--s-3);word-break:break-word}

/* HTTP header start line */
.kv-startline .kv-val{font-family:var(--font-mono);color:var(--text)}

/* cron field grid responsive */
@media(max-width:640px){.cron-fields{grid-template-columns:repeat(2,1fr)!important}}
