:root {
  --venn-blue: #149bd7;
  --venn-ink: #102131;
  --venn-line: #b9cbd7;
  --venn-soft: #edf6fa;
  --venn-success: #197443;
  --venn-error: #a92f2f;
  --venn-header: #071018;
  --venn-header-control: #122436;
  --venn-header-line: #263d51;
}

.venn-tool, .venn-tool *, .venn-dialog, .venn-dialog * { box-sizing: border-box; }
body[data-spire-tool-id="venn-diagram"] { min-height: 100%; margin: 0; background: #edf5f9; color: var(--venn-ink); font-family: Arial, Helvetica, sans-serif; }

body[data-spire-tool-id="venn-diagram"] .app { min-height: 100vh; display: grid; grid-template-rows: auto minmax(0, 1fr); }
body[data-spire-tool-id="venn-diagram"] .topbar { min-height: 72px; display: grid; grid-template-columns: minmax(190px,1fr) auto; align-items: center; gap: 16px; padding: 12px 18px; background: var(--venn-header); color: #fff; }
body[data-spire-tool-id="venn-diagram"] .brand { display: flex; align-items: center; gap: 14px; min-width: 0; }
body[data-spire-tool-id="venn-diagram"] .brand-logo { display: inline-flex; border-radius: 6px; }
body[data-spire-tool-id="venn-diagram"] .brand-logo img { display: block; width: 142px; height: auto; object-fit: contain; }
body[data-spire-tool-id="venn-diagram"] .brand h1 { margin: 0; color: #fff; font-family: Arial,Helvetica,sans-serif; font-size: clamp(1.35rem,2vw,2.05rem); line-height: 1.05; white-space: nowrap; }
body[data-spire-tool-id="venn-diagram"] .top-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
body[data-spire-tool-id="venn-diagram"] .icon-button { width: 48px; min-width: 48px; min-height: 48px; padding: 0; border: 2px solid var(--venn-header-line); border-radius: 8px; color: #fff; background: var(--venn-header-control); display: inline-grid; place-items: center; font: inherit; font-weight: 800; cursor: pointer; }
body[data-spire-tool-id="venn-diagram"] .home-button { min-height: 48px; padding: 0 14px; border: 2px solid var(--venn-header-line); border-radius: 8px; color: #fff; background: var(--venn-header-control); display: inline-flex; align-items: center; justify-content: center; text-decoration: none; font-weight: 800; white-space: nowrap; }
body[data-spire-tool-id="venn-diagram"] .icon-button:hover, body[data-spire-tool-id="venn-diagram"] .icon-button:focus-visible, body[data-spire-tool-id="venn-diagram"] .home-button:hover, body[data-spire-tool-id="venn-diagram"] .home-button:focus-visible { border-color: #8fd8f3; background: var(--venn-blue); color: #06111a; outline: none; }
body[data-spire-tool-id="venn-diagram"] .icon { width: 24px; height: 24px; }
#vennDiagramTool { min-height: 0; }
.venn-tool { min-height: 0; height: 100%; display: grid; grid-template-rows: auto minmax(0, 1fr) auto; color: var(--venn-ink); background: #edf5f9; font-family: Arial, Helvetica, sans-serif; }
.venn-tool button, .venn-tool input, .venn-tool select, .venn-tool textarea, .venn-dialog button, .venn-dialog input, .venn-dialog textarea { font: inherit; }
.venn-tool [hidden], .venn-dialog [hidden] { display: none!important; }
.venn-tool button, .venn-tool select, .venn-dialog button { min-height: 48px; }
.venn-tool button, .venn-dialog button { border: 1px solid #aebfcb; border-radius: 8px; padding: 0 14px; background: #fff; color: var(--venn-ink); font-weight: 800; cursor: pointer; }
.venn-tool button:hover:not(:disabled), .venn-tool button:focus-visible, .venn-tool select:focus-visible, .venn-dialog button:hover:not(:disabled), .venn-dialog button:focus-visible, .venn-dialog input:focus-visible, .venn-dialog textarea:focus-visible { outline: 4px solid rgba(20,155,215,.28); outline-offset: 2px; border-color: var(--venn-blue); }
.venn-tool button:disabled, .venn-dialog button:disabled { opacity: .45; cursor: not-allowed; }
.venn-tool .venn-primary, .venn-dialog .venn-primary { border-color: var(--venn-blue); background: var(--venn-blue); color: #fff; }

.venn-tool--embedded { min-height: 320px; background: transparent; }
.venn-tool--embedded .venn-workspace { padding: 0; }

.venn-toolbar { min-height: 66px; display: flex; align-items: center; gap: 9px; padding: 8px 14px; border-bottom: 1px solid #cedce5; background: #fff; }
.venn-activity-label { display: inline-flex; align-items: center; gap: 8px; font-weight: 900; white-space: nowrap; }
.venn-activity-label select { width: min(360px, 36vw); border: 1px solid #aebfcb; border-radius: 8px; padding: 0 36px 0 12px; background: #fff; color: var(--venn-ink); font-weight: 800; }
.venn-task-summary { color: #526977; font-size: .88rem; font-weight: 800; white-space: nowrap; }
.venn-toolbar-spacer { flex: 1; }

.venn-workspace { min-width: 0; min-height: 0; display: grid; grid-template-columns: minmax(190px, 250px) minmax(0, 1fr); gap: 12px; padding: 12px; overflow: hidden; }
.venn-tray-panel, .venn-board-panel { min-width: 0; min-height: 0; border: 1px solid #c7d6df; border-radius: 10px; background: #fff; }
.venn-tray-panel { display: grid; grid-template-rows: auto minmax(0, 1fr); padding: 12px; }
.venn-tray-panel h2 { margin: 0 0 8px; display: flex; align-items: baseline; justify-content: space-between; gap: 8px; font-size: 1rem; }
.venn-drag-hint { color: #0b79aa; font-size: .72rem; font-weight: 900; white-space: nowrap; }
.venn-card-tray { min-height: 110px; display: grid; align-content: start; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 7px; border: 2px dashed #a8bfcd; border-radius: 9px; background: #f7fbfd; overflow: auto; }
.venn-empty { align-self: center; grid-column: 1 / -1; margin: 12px; color: #627987; text-align: center; font-weight: 800; }

.venn-board-panel { display: grid; grid-template-rows: auto minmax(300px, 1fr) auto; gap: 8px; padding: 10px; overflow: hidden; }
.venn-prompt { margin: 0; min-height: 26px; text-align: center; font-weight: 900; }
.venn-diagram-canvas { position: relative; min-width: 0; min-height: 0; height: 100%; border: 2px solid #9eb7c7; border-radius: 10px; background: #fff; overflow: hidden; touch-action: none; }
.venn-diagram-background, .venn-diagram-background > .question-visual, .venn-diagram-background svg { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; }
.venn-diagram-background figcaption { position: absolute!important; width: 1px!important; height: 1px!important; padding: 0!important; margin: -1px!important; overflow: hidden!important; clip: rect(0,0,0,0)!important; white-space: nowrap!important; border: 0!important; }
.venn-diagram-background svg { object-fit: fill; }
.venn-placement-layer { position: absolute; inset: 0; pointer-events: none; }
.venn-region-stack { position: absolute; z-index: 2; display: flex; flex-wrap: wrap; align-content: center; justify-content: center; gap: 3px; transform: translate(-50%, -50%); pointer-events: auto; }

.venn-card { position: relative; min-width: 64px; min-height: 66px!important; width: min(100%, 104px); height: 66px; padding: 0!important; overflow: hidden; border: 2px solid #87a3b5!important; border-radius: 8px!important; background: #fff!important; box-shadow: 0 2px 6px rgba(14,43,60,.12); cursor: grab; touch-action: none; transition: transform .12s ease, border-color .12s ease, box-shadow .12s ease, opacity .12s ease; }
.venn-card .question-visual { width: 100%; height: 100%; min-height: 0; margin: 0; padding: 0; }
.venn-card .question-visual figcaption { position: absolute!important; width: 1px!important; height: 1px!important; padding: 0!important; margin: -1px!important; overflow: hidden!important; clip: rect(0,0,0,0)!important; white-space: nowrap!important; border: 0!important; }
.venn-card .question-visual svg { display: block; width: 100%; height: 100%; }
.venn-card:hover:not(:disabled), .venn-card:focus-visible { border-color: #0b79aa!important; box-shadow: 0 5px 12px rgba(11,121,170,.22); transform: translateY(-2px); }
.venn-card:active, .is-dragging-card .venn-card { cursor: grabbing; }
.venn-card.is-drag-source { opacity: .32; transform: scale(.96); }
.venn-drag-preview { position: fixed!important; z-index: 10000!important; min-width: 0!important; margin: 0!important; pointer-events: none!important; cursor: grabbing!important; opacity: .96; transform: translate(-50%, -50%) scale(1.06)!important; box-shadow: 0 12px 28px rgba(7,48,72,.34)!important; }
.venn-card.is-selected { border-color: #0b79aa!important; box-shadow: 0 0 0 4px rgba(20,155,215,.28); }
.venn-card.is-correct { border-color: var(--venn-success)!important; box-shadow: 0 0 0 3px rgba(25,116,67,.2); }
.venn-card.needs-review { border-color: var(--venn-error)!important; box-shadow: 0 0 0 3px rgba(169,47,47,.2); }
.venn-card.is-revealed { border-style: double!important; }
.venn-card-tray .venn-card { width: 100%; }
.venn-region-stack .venn-card { width: min(var(--venn-card-width, 78px), 100%); min-width: 0; height: var(--venn-card-height, 54px); min-height: var(--venn-card-height, 54px)!important; }
.venn-diagram-canvas[data-set-count="3"] .venn-region-stack .venn-card { border-radius: 6px!important; }
.venn-region-stack .sorting-set-compact-label { font-size: 10px!important; }
.venn-card-tray.is-drop-target, .venn-diagram-canvas.is-drag-target { border-color: #0b79aa; box-shadow: inset 0 0 0 3px rgba(20,155,215,.18); }
.venn-region-stack.is-drop-target { border-radius: 10px; outline: 3px dashed #0b79aa; outline-offset: 4px; background: rgba(223,243,250,.72); }
.venn-drag-cue { position: absolute; z-index: 5; top: 10px; left: 50%; min-width: 150px; max-width: calc(100% - 24px); transform: translateX(-50%); padding: 7px 12px; border: 2px solid #8fd8f3; border-radius: 999px; background: #071018; color: #fff; box-shadow: 0 4px 12px rgba(7,16,24,.24); text-align: center; font-size: .88rem; font-weight: 900; pointer-events: none; }

.venn-region-choices { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; min-height: 48px; }
.venn-region-choices[hidden] { display: none; }
.venn-region-choices button { min-height: 44px; padding: 0 11px; font-size: .9rem; }
.venn-region-choices button.is-target { border-color: var(--venn-blue); background: #dff3fa; }
.venn-feedback { min-height: 48px; display: flex; align-items: center; margin: 0 12px 12px; padding: 10px 14px; border: 1px solid #c7d6df; border-radius: 9px; background: #fff; font-weight: 800; }
.venn-feedback[data-tone="success"] { border-color: #66a581; background: #edf8f1; color: #125b34; }
.venn-feedback[data-tone="error"] { border-color: #d89a9a; background: #fff3f3; color: #842626; }
.venn-sr-only { position: absolute!important; width: 1px!important; height: 1px!important; padding: 0!important; margin: -1px!important; overflow: hidden!important; clip: rect(0,0,0,0)!important; white-space: nowrap!important; border: 0!important; }

.venn-dialog { width: min(720px, calc(100vw - 28px)); max-height: calc(100vh - 28px); padding: 0; border: 0; border-radius: 10px; color: var(--venn-ink); box-shadow: 0 24px 70px rgba(7,16,24,.38); }
.venn-dialog::backdrop { background: rgba(7,16,24,.58); }
.venn-dialog-card { margin: 0; display: grid; grid-template-rows: auto minmax(0,1fr) auto; max-height: calc(100vh - 28px); background: #fff; }
.venn-dialog-header { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 18px; background: #071018; color: #fff; }
.venn-dialog-header h2 { margin: 0; font-size: 1.35rem; }
.venn-dialog-header button { min-height: 42px; border-color: #38536a; background: #122436; color: #fff; }
.venn-dialog-body { padding: 18px; overflow: auto; line-height: 1.5; }
.venn-dialog-body fieldset { margin: 0 0 14px; border: 1px solid #c7d6df; border-radius: 8px; padding: 10px; }
.venn-dialog-body legend { padding: 0 6px; font-weight: 900; }
.venn-choice-row { display: flex; flex-wrap: wrap; gap: 12px 20px; }
.venn-choice-row label { min-height: 44px; display: inline-flex; align-items: center; gap: 7px; font-weight: 800; }
.venn-choice-row input { width: 22px; height: 22px; }
.venn-set-inputs { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; margin-bottom: 14px; }
.venn-set-inputs label, .venn-items-label { display: grid; gap: 5px; font-weight: 900; }
.venn-set-inputs input, .venn-items-label textarea { width: 100%; border: 1px solid #aebfcb; border-radius: 7px; padding: 10px; color: var(--venn-ink); }
.venn-items-label textarea { resize: vertical; min-height: 140px; line-height: 1.35; }
.venn-edit-help { color: #526977; }
.venn-edit-errors { min-height: 24px; margin-bottom: 0; color: var(--venn-error); font-weight: 900; }
.venn-dialog-actions { display: flex; justify-content: space-between; gap: 10px; padding: 12px 18px; border-top: 1px solid #d6e1e8; }
.venn-instructions h3 { margin-bottom: 4px; }
.venn-instructions p, .venn-instructions ul, .venn-instructions ol { margin-top: 4px; }

@media (max-width: 1050px) {
  .venn-task-summary { display: none; }
  .venn-toolbar { flex-wrap: wrap; }
  .venn-toolbar-spacer { display: none; }
  .venn-activity-label { flex: 1 1 320px; }
  .venn-activity-label select { width: 100%; }
}

@media (min-width: 900px) and (min-height: 650px) {
  body[data-spire-tool-id="venn-diagram"] { overflow: hidden; }
  body[data-spire-tool-id="venn-diagram"] #vennDiagramTool > .venn-tool { height: calc(100vh - 72px); min-height: 0; }
}

@media (max-width: 899px), (max-height: 649px) {
  body[data-spire-tool-id="venn-diagram"] .app, body[data-spire-tool-id="venn-diagram"] #vennDiagramTool > .venn-tool { height: auto; min-height: 100vh; }
  body[data-spire-tool-id="venn-diagram"] #vennDiagramTool > .venn-tool { grid-template-rows: auto auto auto; }
  .venn-toolbar { align-items: stretch; }
  .venn-toolbar > button { flex: 1 1 130px; }
  .venn-workspace { grid-template-columns: 1fr; overflow: visible; }
  .venn-tray-panel { min-height: 180px; }
  .venn-card-tray { grid-template-columns: repeat(3,minmax(0,1fr)); max-height: 270px; }
  .venn-board-panel { min-height: 560px; grid-template-rows: auto 430px auto; overflow: visible; }
  .venn-region-choices button { flex: 1 1 145px; }
}

@media (max-width: 860px) {
  body[data-spire-tool-id="venn-diagram"] .topbar { grid-template-columns: 1fr; align-items: flex-start; }
  body[data-spire-tool-id="venn-diagram"] .top-actions { justify-content: flex-start; flex-wrap: wrap; }
}

@media (max-width: 520px) {
  body[data-spire-tool-id="venn-diagram"] .topbar { padding: 8px 10px; }
  body[data-spire-tool-id="venn-diagram"] .brand-logo img { width: 118px; }
  body[data-spire-tool-id="venn-diagram"] .brand h1 { font-size: 1rem; white-space: normal; }
  body[data-spire-tool-id="venn-diagram"] .home-button { display: none; }
  .venn-toolbar { padding: 8px; }
  .venn-activity-label { flex-basis: 100%; display: grid; }
  .venn-workspace { padding: 8px; gap: 8px; }
  .venn-card-tray { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .venn-board-panel { min-height: 520px; grid-template-rows: auto 390px auto; padding: 7px; }
  .venn-diagram-canvas[data-set-count="3"] .venn-region-stack .venn-card { border-width: 1px!important; border-radius: 4px!important; }
  .venn-region-stack .sorting-set-compact-label { font-size: 16px!important; }
  .venn-set-inputs { grid-template-columns: 1fr; }
  .venn-dialog-body { padding: 14px; }
}

@media (prefers-reduced-motion: reduce) {
  .venn-tool *, .venn-tool *::before, .venn-tool *::after { scroll-behavior: auto!important; transition-duration: .001ms!important; animation-duration: .001ms!important; }
}

@media print {
  @page { size: A4 landscape; margin: 8mm; }
  .topbar, .venn-toolbar, .venn-feedback, .venn-dialog, .venn-region-choices, .venn-drag-hint, .venn-drag-cue, .venn-drag-preview { display: none!important; }
  body[data-spire-tool-id="venn-diagram"], body[data-spire-tool-id="venn-diagram"] .app, body[data-spire-tool-id="venn-diagram"] .venn-tool { width: 100%; height: auto!important; min-height: 0!important; margin: 0; background: #fff; }
  .venn-tool { display: block; }
  .venn-workspace { height: 176mm; display: grid; grid-template-columns: 48mm minmax(0,1fr); gap: 5mm; padding: 0 0 12mm; overflow: hidden; }
  .venn-tray-panel, .venn-board-panel { border-color: #8da4b2; break-inside: avoid; }
  .venn-board-panel { grid-template-rows: auto minmax(0,1fr); }
  .venn-card-tray { grid-template-columns: 1fr; overflow: hidden; }
  .venn-card { box-shadow: none!important; outline: none!important; }
}
