.ktool{margin-bottom:28px}
.kbar{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin:10px 0}
.kbar label{display:flex;flex-direction:column;font-size:.8rem;font-weight:700;gap:3px;color:var(--muted)}
.kbar input[type=number],.kbar select{font:inherit;font-size:.95rem;padding:7px 8px;border:1px solid var(--grid);border-radius:7px;width:110px;background:#fff;color:var(--ink)}
.kbar select{width:auto}
.kpal{display:flex;gap:8px}
.kp{display:flex;flex-direction:column;align-items:center;gap:2px}
.kp button{width:40px;height:40px;border-radius:8px;border:2px solid var(--grid);font:inherit;font-weight:800;color:#fff;text-shadow:0 0 3px rgba(0,0,0,.7);cursor:pointer}
.kp.on button{border-color:var(--ink);box-shadow:0 0 0 2px var(--ink)}
.kp input{width:40px;height:20px;border:0;padding:0;background:none;cursor:pointer}
.kfile{position:relative;cursor:pointer;color:var(--link)!important;text-decoration:underline;font-size:.92rem!important}
.kfile input{position:absolute;inset:0;opacity:0;cursor:pointer}
.kwrap{background:var(--paper);border:1px solid var(--grid);border-radius:10px;padding:10px;overflow:auto}
#kc{display:block;margin:0 auto;max-width:100%;touch-action:none;cursor:crosshair}
.klegend{display:flex;flex-wrap:wrap;gap:14px;font-size:.88rem;margin:8px 0}.klegend i{display:inline-block;width:14px;height:14px;border:1px solid rgba(0,0,0,.25);border-radius:3px;vertical-align:-2px;margin-right:5px}
.kbtn{font:inherit;font-weight:700;font-size:.92rem;padding:9px 15px;border-radius:8px;border:1px solid var(--plum);background:var(--plum);color:#fff;cursor:pointer}.kbtn.ghost{background:#fff;color:var(--plum)}
.kwritten pre{white-space:pre-wrap;font-size:.85rem;max-height:320px;overflow:auto;background:var(--paper);border:1px solid var(--grid);border-radius:8px;padding:10px}
@media print{header.site,footer.site,.kbar,.prose,.intro .lead,.kwritten summary{display:none!important}.kwrap{border:0;background:none}#kc{max-width:100%}}
