/* холст: общий стиль для приложения и страницы доступа по ссылке */
.cv{display:flex;flex-direction:column;border:1px solid #d9dedb;border-radius:10px;overflow:hidden;background:#fff;position:relative}
.cv-tb,.cv-ctx{display:flex;flex-wrap:wrap;gap:4px;align-items:center;padding:6px;border-bottom:1px solid #d9dedb;background:#f6f7f5}
.cv-ctx{background:#fff;padding:4px 6px}
.cv-b{min-width:34px;height:34px;border:1px solid #d9dedb;background:#fff;border-radius:8px;cursor:pointer;font-size:16px;line-height:1;padding:0 6px;color:#1c1f23;font-family:inherit}
.cv-b.sm{min-width:30px;height:30px;font-size:14px}
.cv-b.on{background:#1D5C78;color:#fff;border-color:#1D5C78}.cv-b.danger{color:#c42b25}.cv-b[disabled]{opacity:.4}
.cv-grp{display:inline-flex;gap:3px;padding:2px;border:1px dashed #c9cfcb;border-radius:9px}
.cv-sep{width:1px;height:22px;background:#d9dedb;margin:0 2px}
.cv-cs{display:inline-flex;gap:3px;margin:0 4px;flex-wrap:wrap}.cv-c{width:22px;height:22px;border-radius:50%;border:1px solid #bbb;cursor:pointer;padding:0}.cv-c.on{outline:2px solid #1D5C78;outline-offset:1px}
.cv-sp{flex:1}.cv-zl{min-width:44px;text-align:center;font-size:12px;color:#5a6662;white-space:nowrap}.cv-ro{font-size:12px;color:#5a6662;padding:0 6px}
.cv-st{position:relative;flex:1;overflow:hidden;touch-action:none;cursor:default;background-color:#fbfbf9;background-image:radial-gradient(#dcdfd9 1px,transparent 1px);background-size:22px 22px;user-select:none;-webkit-user-select:none}
.cv-st.panmode,.cv-st.panmode *{cursor:grab!important}.cv-st.panning,.cv-st.panning *{cursor:grabbing!important}
.cv-st.drop{box-shadow:inset 0 0 0 3px #1D5C78}
.cv-w{position:absolute;left:0;top:0;transform-origin:0 0}
.cv-svg{position:absolute;left:0;top:0;overflow:visible;pointer-events:none;z-index:900}.cv-ln{pointer-events:auto;cursor:pointer}.cv-ln .hit{stroke:transparent;stroke-width:16}.cv-ln.on .vis{filter:drop-shadow(0 0 3px #1D5C78)}
.cv-tmp{stroke:#1D5C78;stroke-width:2;stroke-dasharray:5 4}
.cv-band{position:absolute;display:none;border:1px solid #1D5C78;background:rgba(29,92,120,.08);pointer-events:none;z-index:10}
.cv-e{position:absolute;box-sizing:border-box;cursor:move}
.cv-e .cv-tx{position:relative;width:100%;height:100%;overflow:hidden;white-space:pre-wrap;overflow-wrap:anywhere;outline:none;font:14px/1.35 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:inherit;box-sizing:border-box}
.cv-e .cv-tx ul,.cv-e .cv-tx ol{margin:2px 0;padding-left:1.3em}.cv-e .cv-tx p{margin:0}.cv-e .cv-tx a{color:#1D5C78;text-decoration:underline}
.cv-e.editing .cv-tx,.cv-e .cv-tx[contenteditable=true]{cursor:text;user-select:text;-webkit-user-select:text;overflow:auto}
.cv-e.editing{outline:2px dashed #1D5C78;outline-offset:3px}
.cv-note{padding:10px;box-shadow:0 2px 6px rgba(0,0,0,.18);border-radius:3px;color:#1c1f23}
.cv-text .cv-tx{font-size:18px;font-weight:600}
.cv-shape{color:#1c1f23}.cv-sv{position:absolute;inset:0;pointer-events:none}.cv-shp{width:100%;height:100%;display:block;overflow:visible}.cv-shp *{vector-effect:non-scaling-stroke}
.cv-shape .cv-tx{display:flex;flex-direction:column;align-items:stretch;justify-content:center;text-align:center;padding:10px}
.cv-ell .cv-tx{padding:14% 16%}.cv-dia .cv-tx{padding:22% 24%}.cv-tri .cv-tx{padding:42% 22% 6%}
.cv-pen{cursor:move}.cv-pen .cv-tx{display:none}
.cv-frame{border:2px dashed;border-radius:10px;background:rgba(138,148,143,.05)}.cv-frame .cv-tx{height:auto;max-height:100%;padding:6px 10px;font-weight:700;color:#5a6662}
.cv-img .cv-tx{display:flex;flex-direction:column;align-items:stretch;justify-content:center;background:#fff;white-space:normal}.cv-img img{width:100%;height:100%;object-fit:contain;pointer-events:none}
.cv-pdf{flex:1;min-height:0;overflow:hidden;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.25)}.cv-pdf canvas{width:100%;height:auto;display:block;pointer-events:none}
.cv-pbar{height:32px;flex:0 0 32px;display:flex;align-items:center;gap:4px;padding:0 4px;background:#f6f7f5;border-top:1px solid #d9dedb;font-size:12px;color:#5a6662}
.cv-pn{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-left:4px}.cv-pl{white-space:nowrap}
.cv-fb{height:24px;min-width:26px;border:1px solid #d9dedb;background:#fff;border-radius:6px;cursor:pointer;font-size:13px;padding:0 5px;color:#1c1f23}
.cv-fc{display:flex;align-items:center;gap:10px;height:100%;padding:8px 10px;border:1px solid #d9dedb;border-radius:8px;background:#fff;box-sizing:border-box}.cv-fi{font-size:30px}.cv-fm{flex:1;min-width:0;display:flex;flex-direction:column;font-size:13px}.cv-fm b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cv-fm span{font-size:11px;color:#8a948f}
.cv-e.on{outline:2px solid #1D5C78;outline-offset:2px}.cv-e.lk.on{outline-color:#8a948f}
.cv-lkb{position:absolute;right:-6px;top:-12px;font-size:13px;background:#fff;border-radius:50%;width:22px;height:22px;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.cv-h{position:absolute;right:-8px;bottom:-8px;width:16px;height:16px;background:#1D5C78;border:2px solid #fff;border-radius:4px;cursor:nwse-resize;z-index:2}
@media (pointer:coarse){.cv-h{width:26px;height:26px;right:-13px;bottom:-13px}.cv-b{min-width:40px;height:40px}.cv-b.sm{min-width:36px;height:36px}.cv-fb{height:30px;min-width:32px}}
@media (max-width:700px){.cv-tb,.cv-ctx{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.cv-tb::-webkit-scrollbar,.cv-ctx::-webkit-scrollbar{display:none}.cv-cs{flex-wrap:nowrap}.cv-b,.cv-c{flex:0 0 auto}.cv-sp{flex:0 0 6px}}
.cv-msg{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);background:#1c1f23;color:#fff;padding:6px 12px;border-radius:8px;font-size:13px;z-index:5}
.cv-empty{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%);max-width:460px;text-align:center;color:#8a948f;font-size:14px;pointer-events:none;padding:0 16px}
/* страница доступа по ссылке */
body.pub{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:#f4f5f2}
.pub-h{display:flex;gap:12px;align-items:center;padding:10px 14px;padding-top:calc(10px + env(safe-area-inset-top,0px));background:#fff;border-bottom:1px solid #d9dedb}.pub-h b{letter-spacing:.12em}.pub-ro{margin-left:auto;font-size:12px;color:#5a6662}
body.pub #board .cv{border:0;border-radius:0;height:100%}
