/* All canvas styles are scoped; the parent determines viewport height. */
.cv-viewport{position:relative;width:100%;height:100%;min-width:0;overflow:hidden;touch-action:none;overscroll-behavior:contain;user-select:none;background-color:#f5f6f3;background-image:radial-gradient(#cdd3ca 1px,transparent 1px);background-size:24px 24px;cursor:grab;isolation:isolate;--cv-light:#edf4ed;--cv-tint:#dcebdc;--cv-color:#416b47}
.cv-viewport:focus-visible{outline:3px solid #335e3c;outline-offset:-4px}
.cv-viewport.cv-dragging,.cv-viewport.cv-dragging *{cursor:grabbing!important}
.cv-world{position:absolute;left:0;top:0;width:1568px;height:1568px;transform-origin:0 0;will-change:transform}
.cv-group{position:absolute;width:480px;height:480px;border-radius:20px;background:#fff;box-shadow:0 4px 24px #2333260c;box-sizing:border-box;border:2px solid #c4cdc1;padding:7px}
.cv-group.cv-selected{outline:4px solid var(--cv-color);outline-offset:5px}
.cv-group-detail{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));gap:6px;width:100%;height:100%}
.cv-cell,.cv-group-summary{font-family:inherit;box-sizing:border-box;appearance:none;border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;min-width:0;min-height:0;gap:9px;line-height:1.35;color:#27352d;background:var(--cv-light);border-radius:11px;padding:12px;overflow:hidden;transition:filter .12s ease,box-shadow .12s ease}
.cv-cell:hover,.cv-group-summary:hover{filter:brightness(.975);box-shadow:inset 0 0 0 3px var(--cv-color)}
.cv-cell:focus-visible,.cv-group-summary:focus-visible{outline:4px solid #213d28;outline-offset:-5px}
.cv-cell .cv-title{font-size:var(--cv-readable-font,20px);font-weight:600;overflow-wrap:anywhere;white-space:pre-wrap;max-width:100%;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:5;overflow:hidden}
.cv-cell.cv-area{background:var(--cv-tint);color:var(--cv-color)}
.cv-cell.cv-action{background:var(--cv-light)}
.cv-cell.cv-goal,.cv-group-summary.cv-goal-summary{background:#62577e;color:white;--cv-color:#e0ede1}
.cv-goal .cv-title{font-weight:750}
.cv-kicker,.cv-meta,.cv-status{font-size:var(--cv-meta-font,14px);font-weight:500;line-height:1.2}
.cv-kicker{letter-spacing:.02em}
.cv-meta{opacity:.9}
.cv-status{color:#375c3e;font-weight:650}
.cv-empty.cv-action{background:#fbfcfa;color:#657261;box-shadow:inset 0 0 0 1px #d3dbcf}
.cv-empty.cv-action:hover{box-shadow:inset 0 0 0 3px var(--cv-color)}
.cv-done .cv-title{color:#4f6453;text-decoration:line-through;text-decoration-thickness:1px}
.cv-group-summary{display:none;width:100%;height:100%;background:var(--cv-tint);color:var(--cv-color);padding:24px;gap:24px;border-radius:12px}
.cv-summary-title{font-size:var(--cv-overview-font,40px);font-weight:700;line-height:1.32;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
.cv-overview .cv-group-detail{display:none}
.cv-overview .cv-group-summary{display:flex}
.cv-overview .cv-group-summary .cv-kicker{font-size:var(--cv-meta-font)}
.cv-overview .cv-group-summary .cv-meta{font-size:var(--cv-meta-font)}
@media(prefers-reduced-motion:reduce){.cv-cell,.cv-group-summary{transition:none}}

.cv-compact .cv-cell{gap:6px;padding:10px}
.cv-compact .cv-cell .cv-kicker{display:none}
.cv-compact .cv-cell .cv-title{-webkit-line-clamp:3}
.cv-compact .cv-cell.cv-goal .cv-meta{display:none}
