.canvas-ink-layer{position:absolute;left:0;top:0;width:1px;height:1px;overflow:visible;pointer-events:none;z-index:50}
/* 绘图光标由 94-canvas-ink.js 按当前工具（画笔/荧光笔/文字/橡皮擦）动态注入 */
.canvas-ink-drawing{touch-action:none}
.canvas-ink-drawing.canvas-ink-panning,.canvas-ink-drawing.canvas-ink-panning *{cursor:grab!important}
.canvas-ink-toolbar{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);z-index:65;color:#1e293b;background:rgba(255,255,255,.98);border:1px solid #dbe2ea;border-radius:14px;padding:6px;box-shadow:0 5px 22px #0f172a17;font:13px/1.4 system-ui,sans-serif;cursor:default!important}
.canvas-ink-toolbar *{box-sizing:border-box;cursor:auto!important}
.canvas-ink-tools{display:flex;align-items:center;gap:4px}
/* Selection remains directly available alongside Esc. */
.canvas-ink-toolbar button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;min-width:0;padding:7px;border:0;border-radius:8px;background:transparent;color:inherit;font:20px/1 system-ui;cursor:pointer!important;box-shadow:none}
.canvas-ink-toolbar button:hover{background:#f1f5f9}
.canvas-ink-toolbar button[aria-pressed=true]{background:#e8efff;color:#1d4ed8;box-shadow:inset 0 0 0 1px #b8ccff}
.canvas-ink-toolbar button:disabled{opacity:.35;cursor:default!important}
.canvas-ink-toolbar button:focus-visible,.canvas-ink-toolbar input:focus-visible{outline:2px solid #2563eb;outline-offset:2px}
.canvas-ink-toolbar button svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.canvas-ink-divider{height:22px;width:1px;background:#e2e8f0;margin:0 3px}
.canvas-ink-options{position:absolute;bottom:calc(100% + 10px);left:50%;transform:translateX(-50%);width:248px;padding:14px;background:#fff;border:1px solid #dbe2ea;border-radius:14px;box-shadow:0 8px 30px #0f172a1c}
.canvas-ink-toolbar [hidden]{display:none!important}
.canvas-ink-colors{display:flex;gap:6px;align-items:center;margin-bottom:15px}
.canvas-ink-colors button{width:25px;height:25px;padding:0;border:3px solid white;background:var(--ink-color)!important;border-radius:50%;box-shadow:0 0 0 1px #e2e8f0}
.canvas-ink-colors button[aria-pressed=true]{box-shadow:0 0 0 2px #2563eb}
.canvas-ink-colors input[type=color]{width:26px;height:28px;padding:1px;border:1px solid #cbd5e1;background:white;border-radius:6px}
.canvas-ink-width{display:flex;align-items:center;gap:10px;font-size:12px;white-space:nowrap}
.canvas-ink-width input{width:135px;accent-color:#2563eb;margin:0}
.canvas-ink-width output{min-width:18px;text-align:right;font-variant-numeric:tabular-nums}
.canvas-ink-preview{display:block;width:100%;height:52px;margin-top:8px;background:#f8fafc;border-radius:8px}
.canvas-ink-options small{display:block;color:#64748b;font-size:11px;margin-top:9px;text-align:center}
@media(max-width:700px){.canvas-ink-toolbar{bottom:78px}.canvas-ink-options{width:240px}}
/* Both pages reserve the bottom center strip for canvas/session statistics. */
.knowledge-recall-page .canvas-ink-toolbar,.question-workspace-page .canvas-ink-toolbar{bottom:64px}
@media(max-width:700px){.knowledge-recall-page .canvas-ink-toolbar,.question-workspace-page .canvas-ink-toolbar{bottom:96px}}

.canvas-ink-toolbar[hidden]{display:none!important}
/* Popover mode (trigger button present): always docked at the bottom center of the viewport. */
.canvas-ink-toolbar.canvas-ink-popover{position:fixed;left:50%;bottom:22px;top:auto;transform:translateX(-50%);z-index:110}
.knowledge-recall-page .canvas-ink-toolbar.canvas-ink-popover,.question-workspace-page .canvas-ink-toolbar.canvas-ink-popover{bottom:64px}
.canvas-ink-popover .canvas-ink-options{top:auto;bottom:calc(100% + 8px);left:50%;right:auto;transform:translateX(-50%)}
@media(max-width:700px){
  .canvas-ink-toolbar.canvas-ink-popover{bottom:78px}
  .knowledge-recall-page .canvas-ink-toolbar.canvas-ink-popover,.question-workspace-page .canvas-ink-toolbar.canvas-ink-popover{bottom:96px}
}
.canvas-ink-entry-icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* 文字工具的画布内输入框 */
.canvas-ink-text-editor{position:fixed;z-index:130;min-width:140px;max-width:520px;padding:4px 8px;border:1.5px dashed #2563eb;border-radius:8px;background:rgba(255,255,255,.94);color:#111827;resize:none;outline:none;box-shadow:0 8px 28px #0f172a26;font-family:system-ui,-apple-system,sans-serif;line-height:1.35;overflow:hidden;white-space:pre}
.canvas-ink-text-editor::placeholder{color:#94a3b8}
.canvas-ink-text-editor-viewport{position:fixed;z-index:130;overflow:auto;overscroll-behavior:contain;border-radius:8px;box-shadow:0 8px 28px #0f172a26}
.canvas-ink-text-editor-viewport .canvas-ink-text-editor{display:block;margin:0;box-shadow:none}

/* 橡皮擦长按 3 秒进度指示 */
.canvas-ink-toolbar button[data-ink-tool="eraser"]{position:relative;overflow:hidden}
.canvas-ink-toolbar button[data-ink-tool="eraser"].canvas-ink-holding::after{content:'';position:absolute;left:0;right:0;bottom:0;height:3px;background:#ef4444;transform-origin:left;animation:canvas-ink-hold-progress 3s linear forwards}
@keyframes canvas-ink-hold-progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* Keep control hit targets and their SVG children clickable while drawing/panning. */
.canvas-ink-toolbar button:not(:disabled),.canvas-ink-toolbar input:not(:disabled),.canvas-ink-entry:not(:disabled){cursor:pointer!important}
.canvas-ink-toolbar button:disabled,.canvas-ink-entry:disabled{cursor:default!important}
.canvas-ink-toolbar button[type] *,.canvas-ink-entry[type] *{cursor:inherit!important}

.canvas-ink-text-selected{filter:none;outline:none}
/* Edge grips appear on hover; the larger transparent hit area stays easy to catch. */
.canvas-ink-text-box rect.canvas-ink-handle-hit{fill:transparent;stroke:none}
.canvas-ink-text-handle-dot{fill:#fff;stroke:#3b82f6;opacity:0;pointer-events:none}
.canvas-ink-text-box:hover .canvas-ink-text-handle-dot,
.canvas-ink-text-box.is-interacting .canvas-ink-text-handle-dot{opacity:1}
.canvas-ink-text-box:hover .canvas-ink-text-outline,
.canvas-ink-text-box.is-interacting .canvas-ink-text-outline{stroke-dasharray:none}
.canvas-ink-text-dragging .canvas-ink-text-box{opacity:0;pointer-events:none}
.canvas-ink-text-actions{position:fixed;z-index:131;display:flex;gap:6px;background:white;padding:4px;border:1px solid #cbd5e1;border-radius:6px}
.canvas-ink-text-actions button{padding:5px 12px;border:1px solid #cbd5e1;background:white;border-radius:4px;cursor:pointer}
.canvas-ink-toolbar [data-ink-bold]{margin-top:8px;font-weight:700}

.canvas-ink-text-editor{min-width:0;max-width:none;box-sizing:content-box;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-all}
.canvas-ink-text-status{position:fixed;z-index:131;background:white;color:#b91c1c;font:12px system-ui}
.canvas-ink-text-editor[data-save-state=failed]{border-color:#dc2626}
/* Formatting controls remain reachable above a tall editor. */
.canvas-ink-toolbar{z-index:140}
.canvas-ink-toolbar.canvas-ink-popover{z-index:140}

/* The four border hit areas move the live draft without stealing textarea focus. */
.canvas-ink-text-edit-border{position:fixed;z-index:132;pointer-events:none}
.canvas-ink-text-edit-border [data-ink-edit-drag]{position:absolute;pointer-events:auto;cursor:grab!important;touch-action:none}
.canvas-ink-text-edit-border.is-dragging [data-ink-edit-drag]{cursor:grabbing!important}
.canvas-ink-text-edit-point{position:absolute;width:8px;height:8px;box-sizing:border-box;border:1.5px solid #3b82f6;border-radius:1px;background:#fff;transform:translate(-50%,-50%);opacity:0;pointer-events:none}
.canvas-ink-text-edit-border:hover .canvas-ink-text-edit-point,
.canvas-ink-text-edit-border.is-dragging .canvas-ink-text-edit-point{opacity:1}
.canvas-ink-text-edit-border:hover::before,
.canvas-ink-text-edit-border.is-dragging::before{content:'';position:absolute;inset:0;border:1px solid #3b82f6;pointer-events:none}
.canvas-ink-text-edit-point[data-ink-edit-point=nw]{left:0;top:0}
.canvas-ink-text-edit-point[data-ink-edit-point=n]{left:50%;top:0}
.canvas-ink-text-edit-point[data-ink-edit-point=ne]{left:100%;top:0}
.canvas-ink-text-edit-point[data-ink-edit-point=e]{left:100%;top:50%}
.canvas-ink-text-edit-point[data-ink-edit-point=se]{left:100%;top:100%}
.canvas-ink-text-edit-point[data-ink-edit-point=s]{left:50%;top:100%}
.canvas-ink-text-edit-point[data-ink-edit-point=sw]{left:0;top:100%}
.canvas-ink-text-edit-point[data-ink-edit-point=w]{left:0;top:50%}
.canvas-ink-text-edit-border [data-ink-edit-drag=top]{left:0;top:-3px;width:100%;height:8px}
.canvas-ink-text-edit-border [data-ink-edit-drag=bottom]{left:0;bottom:-3px;width:100%;height:8px}
.canvas-ink-text-edit-border [data-ink-edit-drag=left]{left:-3px;top:5px;width:8px;height:calc(100% - 10px)}
.canvas-ink-text-edit-border [data-ink-edit-drag=right]{right:-3px;top:5px;width:8px;height:calc(100% - 10px)}
/* Keep drawing over question cards visually steady; selection outlines stay intact. */
.canvas-ink-drawing .qw-question-card,
.canvas-ink-drawing .qw-question-card:hover{box-shadow:none!important;transition:none!important}

/* Common colors stay visible; the labelled settings button exposes numeric controls. */
.canvas-ink-toolbar .canvas-ink-colors{justify-content:center;margin:0 6px;padding:0 7px;border-left:1px solid #e2e8f0;border-right:1px solid #e2e8f0;gap:7px}
.canvas-ink-toolbar .canvas-ink-colors button{width:18px;height:18px;border-width:2px}
.canvas-ink-toolbar .canvas-ink-colors input[type=color]{width:22px;height:22px}
.canvas-ink-font,.canvas-ink-opacity{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:12px;white-space:nowrap}
.canvas-ink-font input{width:75px;padding:4px 6px;border:1px solid #cbd5e1;border-radius:5px;font:inherit}
.canvas-ink-opacity input{width:112px;accent-color:#2563eb;margin:0}
.canvas-ink-opacity output{min-width:32px;text-align:right;font-variant-numeric:tabular-nums}
.canvas-ink-stroke-selection{pointer-events:none}
@media(max-width:440px){.canvas-ink-tools{gap:2px}.canvas-ink-toolbar button{width:30px;height:32px;padding:5px}.canvas-ink-divider{margin:0 1px}.canvas-ink-options{max-height:calc(100dvh - 180px);overflow:auto}}

@media(max-width:700px){
  .canvas-ink-toolbar{max-width:calc(100vw - 16px);width:max-content}
  .canvas-ink-tools{flex-wrap:wrap;justify-content:center}
  .canvas-ink-toolbar .canvas-ink-colors{order:2;flex-basis:100%;margin:4px 0 0;padding-top:4px;border:0;border-top:1px solid #e2e8f0}
}

.canvas-ink-text-dragging .canvas-ink-stroke-selection{opacity:0}

.canvas-ink-width{flex-wrap:wrap;gap:6px}
.canvas-ink-width input[type=range]{width:120px}
.canvas-ink-width input[type=number]{width:50px;padding:3px;border:1px solid #cbd5e1;border-radius:5px;font:inherit}
