.rgl-canvas-ctx-menu{z-index:200;background:var(--klh-css-surface);border:1px solid var(--klh-css-border);border-radius:4px;min-width:160px;padding:4px 0;position:absolute;box-shadow:0 2px 8px #0003}.rgl-canvas-ctx-item{width:100%;color:var(--klh-css-ink);text-align:left;cursor:pointer;background:0 0;border:none;padding:6px 14px;font-size:12px;display:block}.rgl-canvas-ctx-item:hover{background:var(--klh-css-hover-bg)}.rgl-canvas-ctx-item--danger{color:var(--klh-css-danger)}.rgl-canvas-ctx-item--danger:hover{background:var(--klh-css-danger);color:#fff}.rgl-canvas-ctx-divider{background:var(--klh-css-border);height:1px;margin:4px 0}.rgl-canvas-image-body{flex-direction:column;justify-content:center;align-items:center;display:flex;overflow:hidden}.rgl-canvas-image-img{object-fit:contain;border-radius:4px;max-width:100%;max-height:100%}.rgl-canvas-image-img--cover{object-fit:cover;width:100%;height:100%}.rgl-canvas-image-placeholder{width:100%;height:100%;color:var(--klh-css-ink);border:1px dashed var(--klh-css-border);border-radius:4px;justify-content:center;align-items:center;font-size:12px;display:flex}.rgl-canvas-image-caption{color:var(--klh-css-ink);text-align:center;padding:4px 8px;font-size:11px}.klh-canvas-svg-body{flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}.klh-canvas-svg-embed{justify-content:center;align-items:center;width:100%;height:100%;display:flex;overflow:hidden}.klh-canvas-svg-embed svg{max-width:100%;max-height:100%}.klh-canvas-svg-placeholder{width:100%;height:100%;color:var(--klh-css-ink);border:1px dashed var(--klh-css-border);border-radius:4px;justify-content:center;align-items:center;font-size:12px;display:flex}.klh-canvas-svg-paste{box-sizing:border-box;flex-direction:column;gap:6px;width:100%;padding:8px;display:flex}.klh-canvas-svg-textarea{width:100%;height:100px;color:var(--klh-css-ink);background:var(--klh-css-bg);border:1px solid var(--klh-css-border);resize:vertical;box-sizing:border-box;border-radius:4px;padding:6px 8px;font-family:monospace;font-size:11px}.klh-canvas-svg-invalid{color:var(--klh-css-ink);background:var(--klh-css-alert-warn-bg,#fef9c3);border-left:4px solid var(--klh-css-warn,#ca8a04);border-radius:0 4px 4px 0;padding:4px 8px;font-size:11px}.klh-canvas-svg-apply-btn{color:var(--klh-css-accent);background:var(--klh-css-bg);border:1px solid var(--klh-css-accent);cursor:pointer;border-radius:4px;align-self:flex-start;padding:3px 10px;font-size:11px;font-weight:600}.klh-canvas-svg-apply-btn:hover{background:var(--klh-css-hover-bg)}.klh-canvas-svg-apply-btn:disabled{color:var(--klh-css-disabled);border-color:var(--klh-css-border);cursor:default}.rgl-canvas-preset-card{background:var(--klh-css-surface);border:1px solid var(--klh-css-border);border-radius:4px;box-shadow:0 1px 3px #0000001a}.rgl-canvas-preset-flat{background:var(--klh-css-bg);border:none;border-radius:0}.rgl-canvas-preset-outlined{border:2px solid var(--klh-css-border);background:0 0;border-radius:4px}.rgl-canvas-preset-filled{background:var(--klh-css-hover-bg);border:none;border-radius:4px}.rgl-canvas-preset-minimal{background:0 0;border:none;border-radius:0}.react-grid-item.react-draggable-dragging{opacity:.7}.react-grid-item.react-grid-placeholder{background:var(--klh-css-accent);opacity:.15;border-radius:4px}.rgl-canvas-widget-autosize .rgl-canvas-body{overflow:visible}.rgl-canvas-widget-selected>.react-grid-item,.rgl-canvas-widget-selected{outline:2px solid var(--klh-css-accent);outline-offset:-2px;border-radius:4px}.rgl-filter-panel{flex-direction:column;gap:6px;padding:6px 8px;display:flex}.rgl-filter-desc{font-size:var(--klh-css-font-size-sm);color:var(--klh-css-ink);border-bottom:1px solid var(--klh-css-border);padding-bottom:4px}.rgl-align-grid{gap:10px;display:flex}.rgl-align-set{display:inline-flex}.rgl-align-btn{width:24px;height:22px;color:var(--klh-css-ink);background:var(--klh-css-bg);border:1px solid var(--klh-css-border);cursor:pointer;border-left-width:0;font-size:11px;font-weight:600}.rgl-align-set .rgl-align-btn:first-child{border-left-width:1px;border-radius:4px 0 0 4px}.rgl-align-set .rgl-align-btn:last-child{border-radius:0 4px 4px 0}.rgl-align-btn.is-active{background:var(--klh-css-accent);color:#fff;border-color:var(--klh-css-accent)}.rgl-th-hint{color:var(--klh-css-ink);opacity:.85;margin-bottom:4px;font-size:10px}.rgl-th-row{align-items:center;gap:4px;margin-bottom:4px;display:flex}.rgl-th-row select{flex:none;font-size:11px}.rgl-th-value{width:64px;padding:2px 4px;font-size:11px}.rgl-th-color{border:1px solid var(--klh-css-border);cursor:pointer;background:0 0;border-radius:4px;width:28px;height:22px;padding:0}.rgl-th-del{width:20px;height:22px;color:var(--klh-css-ink);background:var(--klh-css-bg);border:1px solid var(--klh-css-border);cursor:pointer;border-radius:4px;font-size:12px;line-height:1}.rgl-th-add{color:var(--klh-css-accent);background:var(--klh-css-bg);border:1px solid var(--klh-css-border);cursor:pointer;border-radius:4px;margin-top:2px;padding:3px 8px;font-size:11px;font-weight:500}.rgl-th-add:hover{background:var(--klh-css-hover-bg)}.klh-widget-info{background:var(--klh-css-hover-bg);border:1px solid var(--klh-css-border);border-radius:4px;margin-bottom:8px;padding:6px 8px}.klh-widget-info-summary{color:var(--klh-css-ink);cursor:pointer;-webkit-user-select:none;user-select:none;list-style:revert;font-size:11px;font-weight:600}.klh-widget-info-desc{color:var(--klh-css-ink);white-space:pre-wrap;margin:6px 0;font-size:11px;line-height:1.45}.klh-widget-info-notes-label{color:var(--klh-css-ink);margin-top:6px;font-size:11px;font-weight:600;display:block}.klh-widget-info-textarea{width:100%;color:var(--klh-css-ink);background:var(--klh-css-bg);border:1px solid var(--klh-css-border);resize:vertical;box-sizing:border-box;border-radius:4px;margin-top:3px;padding:4px 6px;font-family:inherit;font-size:11px;line-height:1.4}.rgl-filter-row{flex-wrap:wrap;gap:8px;display:flex}.rgl-filter-field{flex-direction:column;gap:2px;display:flex}.rgl-filter-label{font-size:var(--klh-css-font-size-sm);color:var(--klh-css-ink);align-items:center;gap:3px;display:flex}.rgl-filter-help{color:var(--klh-css-accent);cursor:default;border:1px solid var(--klh-css-accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:13px;height:13px;font-size:9px;line-height:1;display:inline-flex;position:relative}.rgl-filter-help:after{content:attr(data-tooltip);background:var(--klh-css-ink);color:var(--klh-css-card);font-size:var(--klh-css-font-size-sm);padding:var(--klh-css-cell-pad);border-radius:var(--klh-css-radius);white-space:normal;z-index:300;pointer-events:none;opacity:0;max-width:220px;transition:opacity .1s;position:absolute;top:calc(100% + 4px);left:0}.rgl-filter-help:hover:after{opacity:1}.rgl-filter-input,.rgl-filter-select{font-size:var(--klh-css-font-size-sm);color:var(--klh-css-ink);background:var(--klh-css-card);border:1px solid var(--klh-css-border);border-radius:var(--klh-css-radius);padding:var(--klh-css-cell-pad);outline:none}.rgl-filter-input:focus,.rgl-filter-select:focus{outline:var(--klh-css-focus-ring)}.rgl-filter-input[type=date]{min-width:120px}.klh-cd-body{justify-content:center;align-items:center;height:100%;padding:12px;display:flex}.klh-cd{flex-direction:column;align-items:center;gap:10px;display:flex}.klh-cd-label{font-size:var(--klh-css-font-size-sm);color:var(--klh-css-ink);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.klh-cd-units{gap:10px;display:flex}.klh-cd-unit{background:var(--klh-css-ink);border-radius:var(--klh-css-radius);flex-direction:column;align-items:center;min-width:60px;padding:8px 6px;display:flex}.klh-cd-num{color:var(--klh-css-bg);font-variant-numeric:tabular-nums;font-size:30px;font-weight:800;line-height:1}.klh-cd-cap{font-size:var(--klh-css-font-size-xs,10px);letter-spacing:.08em;color:var(--klh-css-accent);margin-top:4px;font-weight:700}.klh-cd-expired{font-size:var(--klh-css-font-size-lg,16px);color:var(--klh-css-danger);text-align:center;font-weight:700}.klh-bk{flex-direction:column;gap:8px;padding:10px;display:flex}.klh-bk-types{flex-wrap:wrap;gap:6px;display:flex}.klh-bk-type{font-size:var(--klh-css-font-size-sm);color:var(--klh-css-ink);background:var(--klh-css-card);border:1px solid var(--klh-css-border);border-radius:var(--klh-css-radius);cursor:pointer;flex-direction:column;align-items:flex-start;gap:2px;padding:6px 10px;font-weight:600;display:flex}.klh-bk-type--on{background:var(--klh-css-accent);border-color:var(--klh-css-accent);color:var(--klh-css-card)}.klh-bk-dur{font-size:var(--klh-css-font-size-xs,10px);opacity:.85;font-weight:500}.klh-bk-row{gap:6px;display:flex}.klh-bk-input{min-width:0;font-size:var(--klh-css-font-size-sm);color:var(--klh-css-ink);background:var(--klh-css-bg);border:1px solid var(--klh-css-border);border-radius:var(--klh-css-radius);flex:1;padding:6px 8px}.klh-bk-textarea{resize:vertical}.klh-bk-cta{font-size:var(--klh-css-font-size-sm);color:var(--klh-css-card);background:var(--klh-css-accent);border-radius:var(--klh-css-radius);cursor:pointer;border:0;padding:8px 12px;font-weight:700}.klh-bk-cta:disabled{background:var(--klh-css-disabled);cursor:default}.klh-bk-error{font-size:var(--klh-css-font-size-sm);color:var(--klh-css-danger)}.klh-bk-done{text-align:center;flex-direction:column;align-items:center;gap:4px;padding:20px;display:flex}.klh-bk-done-title{font-size:var(--klh-css-font-size-lg,16px);color:var(--klh-css-ok);font-weight:700}.klh-bk-done-sub{font-size:var(--klh-css-font-size-sm);color:var(--klh-css-ink)}.rgl-canvas-markdown-body{flex:1;min-height:0;padding:8px 10px;overflow:auto}.rgl-canvas-markdown{color:var(--klh-css-ink);font-size:var(--klh-css-font-size);line-height:1.45}.rgl-canvas-markdown p{margin:0 0 6px}.rgl-canvas-markdown ul,.rgl-canvas-markdown ol{margin:0 0 6px;padding-left:18px}.rgl-canvas-markdown h1,.rgl-canvas-markdown h2,.rgl-canvas-markdown h3,.rgl-canvas-markdown h4{margin:6px 0 4px;font-weight:600}.rgl-canvas-markdown code{border:1px solid var(--klh-css-border);border-radius:var(--klh-css-radius);padding:0 3px}.rgl-canvas-markdown table{border-collapse:collapse;margin:0 0 6px}.rgl-canvas-markdown th,.rgl-canvas-markdown td{border:1px solid var(--klh-css-border);text-align:left;padding:3px 10px}.rgl-canvas-markdown a{color:var(--klh-css-accent)}.rgl-canvas-markdown-empty{font-size:var(--klh-css-font-size-sm);color:var(--klh-css-ink);margin:0}
