
		:root {
			--zoom: 1;
			/* 패널 레이아웃 (좌: RCA / 우: Papers + Idea refinement) */
			--panel-gap: 20px;
			--analysis-panel-width: 720px;
			--papers-panel-width: 520px;
			--refinement-panel-width: 520px;
			--right-panel-stack-gap: 14px;
		}

		.ad-canvas-root, .ad-canvas-root * {
			box-sizing: border-box;
			margin: 0;
			padding: 0;
		}

		.ad-canvas-root, .ad-canvas-root {
			width: 100%;
			height: 100%;
			overflow: hidden;
			font-family: "Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;
			color-scheme: light;
			background:
				radial-gradient(circle at 0% 0%, rgba(255, 255, 255, 1) 0, rgba(243, 244, 246, 1) 40%, rgba(229, 231, 235, 1) 100%);
		}

		/* 폼 컨트롤은 브라우저/플랫폼에 따라 body 폰트를 잘 안 따르는 경우가 있어 명시적으로 통일 */
		.ad-canvas-root button, .ad-canvas-root input, .ad-canvas-root textarea, .ad-canvas-root select {
			font-family: "Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif !important;
		}

		.ad-canvas-root input::placeholder, .ad-canvas-root textarea::placeholder {
			font-family: "Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif !important;
		}

		/* 패널이 열릴 때 body 배경 그라데이션 조정
		   패널의 오른쪽 끝(740px)에서의 색상이 캔버스의 왼쪽 끝(720px)에서의 색상과 일치하도록
		   그라데이션 중심점을 740px로 이동시킴 (패널 오른쪽 끝 위치) */
		.ad-canvas-root.analysis-open {
			background:
				radial-gradient(circle at 740px 0%, rgba(255, 255, 255, 1) 0, rgba(243, 244, 246, 1) 40%, rgba(229, 231, 235, 1) 100%);
		}

		.ad-canvas-root {
			position: relative;
		}

		/* 드래그 선택 중 브라우저 기본 텍스트 선택 방지 */
		.ad-canvas-root.drag-selecting, .ad-canvas-root.drag-selecting * {
			user-select: none !important;
			-webkit-user-select: none !important;
		}

		/* PAN(캔버스 이동) 드래그 중 브라우저 기본 텍스트 선택 방지 */
		.ad-canvas-root.panning, .ad-canvas-root.panning * {
			user-select: none !important;
			-webkit-user-select: none !important;
		}

		/* ===== 공통 메시지 토스트 ===== */

		.ad-canvas-root #message-toast {
			position: fixed;
			top: 20px;
			left: 50%;
			transform: translateX(-50%) translateY(-10px);
			z-index: 2700;
			/* idea-canvas-modal (2600)보다 높게 설정 */
			pointer-events: none;
			opacity: 0;
			transition:
				opacity 0.18s ease-out,
				transform 0.18s ease-out;
		}

		.ad-canvas-root #message-toast.visible {
			opacity: 1;
			transform: translateX(-50%) translateY(0);
			pointer-events: auto;
		}

		.ad-canvas-root #message-toast.hidden {
			display: none;
		}

		.ad-canvas-root #message-toast .message-inner {
			min-width: 260px;
			max-width: 420px;
			padding: 10px 14px;
			border-radius: 999px;
			background: radial-gradient(circle at 0 0, rgba(248, 250, 252, 1), rgba(241, 245, 249, 0.98));
			border: 1px solid rgba(148, 163, 184, 0.55);
			box-shadow:
				0 18px 40px rgba(15, 23, 42, 0.22),
				0 0 0 1px rgba(255, 255, 255, 0.9);
			display: flex;
			align-items: center;
			gap: 10px;
			font-size: 12px;
			color: rgba(15, 23, 42, 0.88);
			backdrop-filter: blur(14px);
			-webkit-backdrop-filter: blur(14px);
			cursor: pointer;
		}

		.ad-canvas-root #message-toast .message-pill {
			width: 18px;
			height: 18px;
			min-width: 18px;
			min-height: 18px;
			flex: 0 0 18px;
			aspect-ratio: 1 / 1;
			border-radius: 999px;
			display: inline-flex;
			align-items: center;
			justify-content: center;
			font-size: 11px;
			font-weight: 600;
			background: linear-gradient(135deg, #22c55e, #4ade80);
			color: #022c22;
			box-shadow: 0 4px 10px rgba(34, 197, 94, 0.55);
		}

		.ad-canvas-root #message-toast.warn .message-pill {
			background: linear-gradient(135deg, #f97316, #fb923c);
			color: #431407;
			box-shadow: 0 4px 10px rgba(248, 113, 22, 0.55);
		}

		.ad-canvas-root #message-toast.error .message-pill {
			background: linear-gradient(135deg, #ef4444, #fb7185);
			color: #450a0a;
			box-shadow: 0 4px 10px rgba(239, 68, 68, 0.55);
		}

		.ad-canvas-root #message-toast .message-text {
			flex: 1;
			line-height: 1.4;
		}

		/* ===== 디버깅 패널 ===== */

		.ad-canvas-root #debug-panel {
			position: fixed;
			bottom: 20px;
			right: 20px;
			width: 400px;
			max-height: 500px;
			background: rgba(15, 23, 42, 0.95);
			border: 1px solid rgba(148, 163, 184, 0.3);
			border-radius: 12px;
			box-shadow: 0 8px 32px rgba(15, 23, 42, 0.3);
			z-index: 3000;
			display: none;
			flex-direction: column;
			font-family: "Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;
			font-size: 11px;
		}

		.ad-canvas-root #debug-panel.visible {
			display: flex;
		}

		.ad-canvas-root #debug-panel-header {
			padding: 10px 14px;
			border-bottom: 1px solid rgba(148, 163, 184, 0.2);
			display: flex;
			justify-content: space-between;
			align-items: center;
			background: rgba(30, 41, 59, 0.8);
			border-top-left-radius: 12px;
			border-top-right-radius: 12px;
		}

		.ad-canvas-root #debug-panel-title {
			color: #e2e8f0;
			font-weight: 600;
			font-size: 12px;
		}

		.ad-canvas-root #debug-panel-close {
			background: none;
			border: none;
			color: #94a3b8;
			cursor: pointer;
			font-size: 18px;
			padding: 0;
			width: 24px;
			height: 24px;
			display: flex;
			align-items: center;
			justify-content: center;
			border-radius: 4px;
			transition: background 0.2s ease, color 0.2s ease;
		}

		.ad-canvas-root #debug-panel-close:hover {
			background: rgba(148, 163, 184, 0.2);
			color: #e2e8f0;
		}

		.ad-canvas-root #debug-panel-content {
			flex: 1;
			overflow-y: auto;
			padding: 12px;
			color: #cbd5e1;
			line-height: 1.6;
		}

		.ad-canvas-root #debug-panel-content .debug-entry {
			margin-bottom: 8px;
			padding: 8px;
			background: rgba(30, 41, 59, 0.5);
			border-radius: 6px;
			border-left: 3px solid #3b82f6;
		}

		.ad-canvas-root #debug-panel-content .debug-entry.error {
			border-left-color: #ef4444;
		}

		.ad-canvas-root #debug-panel-content .debug-entry.warn {
			border-left-color: #f97316;
		}

		.ad-canvas-root #debug-panel-content .debug-label {
			color: #94a3b8;
			font-weight: 600;
			margin-bottom: 4px;
			font-size: 10px;
			text-transform: uppercase;
		}

		.ad-canvas-root #debug-panel-content .debug-value {
			color: #e2e8f0;
			white-space: pre-wrap;
			word-break: break-word;
			font-size: 11px;
		}

		.ad-canvas-root #debug-panel-toggle {
			position: fixed;
			bottom: 20px;
			right: 20px;
			width: 40px;
			height: 40px;
			border-radius: 50%;
			background: rgba(15, 23, 42, 0.9);
			border: 1px solid rgba(148, 163, 184, 0.3);
			color: #e2e8f0;
			font-size: 14px;
			cursor: pointer;
			/* 기본은 숨김(관리자 UID에서만 JS로 활성화) */
			display: none;
			align-items: center;
			justify-content: center;
			z-index: 2999;
			box-shadow: 0 4px 12px rgba(15, 23, 42, 0.3);
			transition: transform 0.2s ease, background 0.2s ease;
		}

		.ad-canvas-root #debug-panel-toggle:hover {
			transform: scale(1.1);
			background: rgba(30, 41, 59, 0.95);
		}

		.ad-canvas-root #debug-panel.visible~#debug-panel-toggle {
			display: none;
		}

		/* ===== 상단 바 (제목 + 저장/불러오기 + 줌) ===== */

		.ad-canvas-root #top-bar {
			position: fixed;
			right: 16px;
			top: 12px;
			z-index: 1100;
			display: flex;
			align-items: center;
			gap: 8px;
			padding: 6px 10px;
			border-radius: 999px;
			background: rgba(255, 255, 255, 0.9);
			border: 1px solid rgba(15, 23, 42, 0.08);
			backdrop-filter: blur(12px);
			-webkit-backdrop-filter: blur(12px);
			box-shadow: 0 10px 24px rgba(15, 23, 42, 0.2);
		}

		.ad-canvas-root #project-title {
			min-width: 220px;
			max-width: 360px;
			border-radius: 999px;
			border: none;
			padding: 5px 10px;
			font-size: 12px;
			background: rgba(248, 250, 252, 0.95);
			color: rgba(15, 23, 42, 0.88);
			outline: none;
		}

		.ad-canvas-root #project-title::placeholder {
			color: rgba(148, 163, 184, 0.95);
		}

		.ad-canvas-root #save-load {
			display: flex;
			gap: 4px;
		}

		.ad-canvas-root #save-load button {
			border-radius: 999px;
			border: none;
			padding: 5px 10px;
			font-size: 11px;
			cursor: pointer;
			background: rgba(15, 23, 42, 0.05);
			color: rgba(15, 23, 42, 0.75);
			transition: background 0.14s ease, transform 0.12s ease, box-shadow 0.14s ease;
		}

		.ad-canvas-root #save-load button:hover {
			background: rgba(15, 23, 42, 0.12);
			transform: translateY(-1px);
			box-shadow: 0 4px 10px rgba(15, 23, 42, 0.18);
		}

		/* ===== Busy(작업중) 버튼 쉬머 효과 ===== */
		.ad-canvas-root .btn-busy {
			position: relative;
			overflow: hidden;
			/* NOTE: #save-load button 같은 강한 셀렉터에 덮이지 않도록 !important */
			background: linear-gradient(135deg, #6366f1 0%, #22d3ee 45%, #a78bfa 100%) !important;
			background-size: 260% 260% !important;
			animation: busyGradient 0.95s ease-in-out infinite;
			color: rgba(4, 16, 22, 0.95) !important;
			opacity: 1 !important;
			cursor: progress !important;
			box-shadow:
				0 10px 22px rgba(99, 102, 241, 0.28),
				inset 0 0 0 1px rgba(255, 255, 255, 0.55) !important;
			border: 1px solid rgba(99, 102, 241, 0.35) !important;
		}

		/* 작은 버튼(저장/불러오기)에서 쉬머 대비 강화 */
		.ad-canvas-root #save-load button.btn-busy {
			filter: saturate(1.12) contrast(1.06);
		}

		.ad-canvas-root .btn-busy::after {
			content: '';
			position: absolute;
			inset: -55% -75%;
			background: linear-gradient(90deg,
					transparent 0%,
					rgba(255, 255, 255, 0.92) 50%,
					transparent 100%);
			transform: skewX(-18deg);
			opacity: 0.72;
			animation: busyShine 0.85s linear infinite;
			pointer-events: none;
			mix-blend-mode: soft-light;
		}

		.ad-canvas-root .btn-busy:disabled {
			opacity: 1 !important;
			cursor: progress !important;
		}

		@keyframes busyGradient {
			0% {
				background-position: 0% 50%;
			}

			50% {
				background-position: 100% 50%;
			}

			100% {
				background-position: 0% 50%;
			}
		}

		@keyframes busyShine {
			0% {
				transform: translateX(-40%) skewX(-18deg);
			}

			100% {
				transform: translateX(40%) skewX(-18deg);
			}
		}

		.ad-canvas-root #zoom-controls {
			display: flex;
			gap: 6px;
			padding-left: 4px;
			margin-left: 4px;
			border-left: 1px solid rgba(226, 232, 240, 0.9);
		}

		.ad-canvas-root #zoom-controls button {
			width: 28px;
			height: 28px;
			border-radius: 999px;
			border: none;
			cursor: pointer;
			font-size: 18px;
			display: flex;
			align-items: center;
			justify-content: center;
			background: rgba(15, 23, 42, 0.03);
			color: rgba(15, 23, 42, 0.8);
			transition: background 0.14s ease, transform 0.12s ease, box-shadow 0.14s ease;
		}

		.ad-canvas-root #zoom-controls button:hover {
			background: rgba(15, 23, 42, 0.08);
			transform: translateY(-1px);
			box-shadow: 0 6px 16px rgba(15, 23, 42, 0.2);
		}

		/* 좌측 툴바 */

		.ad-canvas-root #left-toolbar {
			position: fixed;
			left: 16px;
			top: 50%;
			transform: translateY(-50%);
			display: flex;
			flex-direction: column;
			gap: 8px;
			z-index: 1100;
			padding: 8px;
			border-radius: 18px;
			background: rgba(255, 255, 255, 0.9);
			backdrop-filter: blur(14px);
			-webkit-backdrop-filter: blur(14px);
			border: 1px solid rgba(15, 23, 42, 0.08);
			box-shadow: 0 12px 30px rgba(15, 23, 42, 0.22);
		}

		.ad-canvas-root.analysis-open #left-toolbar {
			left: 736px;
		}

		.ad-canvas-root .tool-btn {
			width: 32px;
			height: 32px;
			border-radius: 999px;
			border: none;
			background: rgba(15, 23, 42, 0.03);
			color: rgba(15, 23, 42, 0.7);
			display: flex;
			align-items: center;
			justify-content: center;
			cursor: pointer;
			font-size: 17px;
			transition: background 0.14s ease, box-shadow 0.14s ease, transform 0.12s ease, color 0.14s ease;
		}

		.ad-canvas-root .tool-btn:hover {
			background: rgba(15, 23, 42, 0.08);
			transform: translateY(-1px);
			box-shadow: 0 6px 18px rgba(15, 23, 42, 0.21);
		}

		.ad-canvas-root .tool-btn.active {
			background: linear-gradient(135deg, #b7ff8a, #8af7ff);
			color: #041016;
			box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.06), 0 10px 24px rgba(132, 225, 188, 0.75);
		}

		/* 캔버스 */

		.ad-canvas-root #canvas {
			position: fixed;
			left: 0;
			top: 0;
			right: 0;
			bottom: 0;
			width: 100vw;
			height: calc(100 * var(--ad-vh));
			/* free space: 네이티브 스크롤 폐기 — 이동은 #board 의 translate 가 담당 */
			overflow: hidden;
			cursor: default;
			background:
				radial-gradient(circle at 0% 0%, rgba(255, 255, 255, 1) 0, rgba(243, 244, 246, 1) 40%, rgba(229, 231, 235, 1) 100%);
		}

		.ad-canvas-root.analysis-open #canvas {
			margin-left: 720px;
			width: calc(100vw - 720px);
		}

		.ad-canvas-root #board {
			position: relative;
			width: 3200px;
			height: 2000px;
			min-width: 3200px;
			min-height: 2000px;
			transform-origin: 0 0;
			/* free space: pan/zoom transform 뷰포트. transition 은 두지 않는다 —
			   팬 드래그·휠 줌이 연속으로 transform 을 바꾸므로.
			   --board-zoom 은 휠 뷰포트 줌 전용이고, UI 전체 스케일(--zoom)과 분리다 */
			transform: translate(var(--pan-x, 0px), var(--pan-y, 0px)) scale(var(--board-zoom, 1));
		}

		/* pan 모드(도구 선택 또는 스페이스 누름)에서는 카드 안 버튼/링크/입력이
		   클릭을 가로채지 않도록 카드 히트테스트를 끈다. 카드 위에서도 팬 드래그가
		   바로 시작되는 부수 효과까지 의도된 동작이다 */
		.ad-canvas-root.pan-mode .card {
			pointer-events: none;
		}

		/* free space: 격자를 보드가 아니라 뷰포트(#canvas)에 그린다 — 보드 밖(음수 좌표
		   포함)에서도 격자가 무한히 이어진다. 간격·선 두께가 pan/zoom 을 따라가므로
		   기존(보드 transform 에 실려 스케일되던 격자)과 동일하게 보인다 */
		.ad-canvas-root #canvas::before {
			content: "";
			position: absolute;
			inset: 0;
			background-image:
				linear-gradient(to right, rgba(148, 163, 184, 0.15) calc(1px * var(--board-zoom, 1)), transparent calc(1px * var(--board-zoom, 1))),
				linear-gradient(to bottom, rgba(148, 163, 184, 0.12) calc(1px * var(--board-zoom, 1)), transparent calc(1px * var(--board-zoom, 1)));
			background-size: calc(40px * var(--board-zoom, 1)) calc(40px * var(--board-zoom, 1));
			background-position: var(--pan-x, 0px) var(--pan-y, 0px);
			opacity: 0.25;
			pointer-events: none;
		}

		.ad-canvas-root #connection-layer {
			position: absolute;
			inset: 0;
			width: 100%;
			height: 100%;
			pointer-events: none;
			z-index: 1;
			/* free space: SVG 기본값(hidden)이면 보드 밖(음수 좌표 포함) 연결선이 잘린다 */
			overflow: visible;
		}

		/* 카드 */

		.ad-canvas-root .card {
			position: absolute;
			/* width와 height는 renderCard에서 동적으로 설정됨 */
			padding: 10px;
			padding-bottom: 0;
			border-radius: 18px;
			background:
				linear-gradient(135deg, rgba(255, 255, 255, 0.98), rgba(248, 250, 252, 0.98));
			border: 1px solid rgba(148, 163, 184, 0.4);
			box-shadow:
				0 16px 40px rgba(15, 23, 42, 0.14),
				0 0 0 1px rgba(255, 255, 255, 0.7);
			display: flex;
			flex-direction: column;
			gap: 6px;
			user-select: none;
			transition:
				transform 0.18s ease-out,
				box-shadow 0.18s ease-out,
				border-color 0.18s ease-out,
				opacity 0.15s ease-out,
				background 0.18s ease-out,
				filter 0.15s ease-out;
			z-index: 2;
			box-sizing: border-box;
			/* 카드 우측의 ... 메뉴가 잘리지 않도록 overflow는 기본적으로 visible */
			overflow: visible;
		}

		.ad-canvas-root .card[data-accent] {
			background:
				radial-gradient(circle at 0 0, color-mix(in srgb, var(--card-accent, #ffffff) 32%, transparent 68%) 0, transparent 55%),
				linear-gradient(135deg, rgba(255, 255, 255, 0.96), rgba(248, 250, 252, 0.98));
			border-color: color-mix(in srgb, var(--card-accent, #94a3b8) 40%, rgba(148, 163, 184, 0.5) 60%);
			box-shadow:
				0 18px 42px rgba(15, 23, 42, 0.16),
				0 0 0 1px rgba(255, 255, 255, 0.85),
				0 0 22px color-mix(in srgb, var(--card-accent, #94a3b8) 32%, transparent 68%);
		}

		.ad-canvas-root .card:hover {
			transform: translateY(-2px);
			box-shadow:
				0 22px 50px rgba(15, 23, 42, 0.22),
				0 0 0 1px rgba(148, 163, 184, 0.7);
			border-color: rgba(148, 163, 184, 0.7);
		}

		.ad-canvas-root .card.dragging {
			box-shadow:
				0 26px 60px rgba(15, 23, 42, 0.32),
				0 0 0 1px rgba(148, 163, 184, 0.9);
			opacity: 0.96;
			transform: scale(1.02);
		}

		.ad-canvas-root .card.selected, .ad-canvas-root .card.analysis-result-node.selected, .ad-canvas-root .card.paper-knowledge-node.selected, .ad-canvas-root .card.idea-refinement-node.selected {
			outline: 1px solid rgba(168, 255, 120, 0.95);
			box-shadow:
				0 0 0 1px rgba(168, 255, 120, 0.9),
				0 0 0 4px rgba(168, 255, 120, 0.2),
				0 22px 50px rgba(15, 23, 42, 0.25);
		}

		.ad-canvas-root .card.dimmed {
			opacity: 0.25;
			filter: grayscale(0.3) blur(0.4px);
		}

		.ad-canvas-root .card.focus-highlight {
			outline: 2px solid rgba(168, 255, 120, 0.98);
			box-shadow:
				0 0 0 1px rgba(168, 255, 120, 0.95),
				0 0 0 6px rgba(168, 255, 120, 0.3),
				0 26px 60px rgba(15, 23, 42, 0.35);
			transform: scale(1.04);
			z-index: 5;
		}

		.ad-canvas-root .card.link-pending {
			box-shadow:
				0 0 0 1px rgba(37, 99, 235, 0.9),
				0 0 0 5px rgba(37, 99, 235, 0.2),
				0 22px 50px rgba(15, 23, 42, 0.25);
		}

		.ad-canvas-root .card, .ad-canvas-root .card * {
			cursor: default;
		}

		.ad-canvas-root .card-textarea {
			cursor: text;
		}

		.ad-canvas-root .card-header {
			font-size: calc(10px * var(--zoom, 1));
			font-weight: 600;
			letter-spacing: 0.08em;
			text-transform: uppercase;
			color: rgba(15, 23, 42, 0.55);
			display: flex;
			justify-content: space-between;
			align-items: center;
			padding-bottom: 3px;
			border-bottom: 1px solid rgba(148, 163, 184, 0.35);
			position: relative;
			z-index: 2;
		}

		.ad-canvas-root .card-title {
			pointer-events: none;
		}

		.ad-canvas-root .card-menu-trigger {
			border: none;
			background: transparent;
			font-size: calc(16px * var(--zoom, 1));
			line-height: 1;
			cursor: pointer;
			padding: 0 5px;
			border-radius: 999px;
			color: rgba(15, 23, 42, 0.55);
			transition: background 0.15s ease, transform 0.12s ease, color 0.15s ease;
		}

		.ad-canvas-root .card-menu-trigger:hover {
			background: rgba(148, 163, 184, 0.18);
			color: rgba(15, 23, 42, 0.85);
			transform: translateY(-0.5px);
		}

		.ad-canvas-root .card-body {
			flex: 1;
			display: flex;
			flex-direction: column;
			padding-top: 0;
			position: relative;
			z-index: 2;
			min-height: 0;
			overflow: hidden;
		}

		.ad-canvas-root .card-textarea {
			width: 100%;
			border-radius: 10px;
			border: 1px solid transparent;
			resize: none;
			background: transparent;
			outline: none;
			font-size: calc(11px * var(--zoom, 1));
			line-height: 1.5;
			color: rgba(15, 23, 42, 0.9);
			user-select: text;
			padding: 6px 8px;
			overflow-y: auto;
			max-height: 100%;
			box-sizing: border-box;
			transition: border-color 0.15s ease, background 0.15s ease;
			flex: 1;
		}

		/* 지식 탐색 카드: 콘텐츠에 맞게 높이가 늘어나는 가변형 — textarea 는 JS 가
		   scrollHeight 로 키우므로 내부 스크롤과 높이 상한을 끈다 */
		.ad-canvas-root .card.knowledge-search-card .card-textarea {
			overflow-y: hidden;
			max-height: none;
		}

		.ad-canvas-root .card-textarea::placeholder {
			color: rgba(148, 163, 184, 0.9);
			font-style: italic;
		}

		.ad-canvas-root .card-textarea:focus {
			background: rgba(248, 250, 252, 0.95);
			border-color: color-mix(in srgb, var(--card-accent, #94a3b8) 60%, transparent 40%);
		}

		/* 지식 탐색 카드: 번역 입력 영역 */
		.ad-canvas-root .knowledge-translation {
			margin: 6px 0 0;
			padding: 6px 8px;
			border-radius: 10px;
			border: 1px solid rgba(148, 163, 184, 0.22);
			background: rgba(15, 23, 42, 0.04);
		}

		.ad-canvas-root .knowledge-translation.hidden {
			display: none;
		}

		.ad-canvas-root .knowledge-translation-label {
			font-size: calc(10px * var(--zoom, 1));
			color: rgba(71, 85, 105, 0.85);
			margin-bottom: 4px;
		}

		.ad-canvas-root .knowledge-translation-input {
			width: 100%;
			border-radius: 10px;
			border: 1px solid transparent;
			background: rgba(255, 255, 255, 0.75);
			outline: none;
			font-size: calc(11px * var(--zoom, 1));
			line-height: 1.4;
			color: rgba(15, 23, 42, 0.9);
			padding: 6px 8px;
			box-sizing: border-box;
			transition: border-color 0.15s ease, background 0.15s ease;
		}

		.ad-canvas-root .knowledge-translation-input:focus {
			background: rgba(255, 255, 255, 0.92);
			border-color: color-mix(in srgb, var(--card-accent, #94a3b8) 60%, transparent 40%);
		}

		/* 카드 푸터: 구분선 아래 영역, 버튼은 세로 중앙 정렬 */
		.ad-canvas-root .card-footer {
			display: flex;
			align-items: center;
			justify-content: flex-end;
			gap: 8px;
			margin-top: 0;
			padding: 4px 0;
			border-top: 1px solid rgba(226, 232, 240, 0.9);
			position: relative;
			z-index: 2;
		}

		.ad-canvas-root .small-btn {
			border: none;
			border-radius: 999px;
			padding: 3px 10px;
			font-size: 10px;
			font-weight: 500;
			letter-spacing: 0.04em;
		}

		.ad-canvas-root .small-btn.secondary-btn {
			background: rgba(148, 163, 184, 0.2);
			color: rgba(71, 85, 105, 0.8);
			cursor: pointer;
			transition: background 0.2s ease, color 0.2s ease;
		}

		.ad-canvas-root .small-btn.secondary-btn:hover {
			background: rgba(148, 163, 184, 0.3);
			color: rgba(71, 85, 105, 1);
		}

		.ad-canvas-root .small-btn:not(.secondary-btn) {
			text-transform: uppercase;
			cursor: pointer;
			background: linear-gradient(135deg, #22c55e, #4ade80);
			color: #022c22;
			box-shadow: 0 7px 18px rgba(34, 197, 94, 0.35);
			transition:
				transform 0.12s ease,
				box-shadow 0.12s ease,
				filter 0.12s ease;
		}

		/* 전략 카드 내 아이콘 버튼(좌측 세로메뉴 아이콘 톤과 통일) */
		.ad-canvas-root .card-footer .icon-btn {
			width: 28px;
			height: 28px;
			border-radius: 999px;
			border: none;
			background: rgba(15, 23, 42, 0.03);
			color: rgba(15, 23, 42, 0.7);
			display: flex;
			align-items: center;
			justify-content: center;
			cursor: pointer;
			font-size: calc(15px * var(--zoom, 1));
			transition: background 0.14s ease, box-shadow 0.14s ease, transform 0.12s ease, color 0.14s ease;
		}

		.ad-canvas-root .card-footer .icon-btn:hover {
			background: rgba(15, 23, 42, 0.07);
			box-shadow: 0 10px 22px rgba(15, 23, 42, 0.10);
			transform: translateY(-1px);
			color: rgba(15, 23, 42, 0.92);
		}

		/* 전략 카드 비동기 작업(지식 탐색) 표시 */
		.ad-canvas-root .strategy-card.busy {
			opacity: 0.35;
			filter: saturate(0.9);
			pointer-events: none;
		}

		.ad-canvas-root .strategy-card .busy-overlay {
			position: absolute;
			inset: 0;
			display: none;
			align-items: center;
			justify-content: center;
			background: rgba(255, 255, 255, 0.35);
			backdrop-filter: blur(1px);
			z-index: 6;
		}

		.ad-canvas-root .strategy-card.busy .busy-overlay {
			display: flex;
		}

		.ad-canvas-root .strategy-card .busy-panel {
			display: flex;
			align-items: center;
			gap: 10px;
			padding: 10px 12px;
			border-radius: 14px;
			background: rgba(255, 255, 255, 0.85);
			border: 1px solid rgba(148, 163, 184, 0.35);
			box-shadow: 0 12px 28px rgba(15, 23, 42, 0.12);
		}

		.ad-canvas-root .strategy-card .busy-text {
			font-size: calc(12px * var(--zoom, 1));
			font-weight: 600;
			color: rgba(15, 23, 42, 0.75);
		}

		/* 문제 분석 결과 노드 (토글 스위치 스타일의 작은 노드) */
		.ad-canvas-root .card.analysis-result-node, .ad-canvas-root .card.paper-knowledge-node, .ad-canvas-root .card.idea-refinement-node {
			width: 76px !important;
			height: 40px !important;
			min-height: 40px !important;
			max-height: 40px !important;
			padding: 4px !important;
			border-radius: 999px;
			background: rgba(241, 245, 249, 0.98);
			border: 1px solid rgba(148, 163, 184, 0.35);
			box-shadow:
				0 2px 8px rgba(15, 23, 42, 0.1),
				0 0 0 0.5px rgba(255, 255, 255, 0.9) inset;
			display: inline-flex !important;
			flex-direction: row;
			align-items: center;
			justify-content: space-between;
			gap: 4px;
			cursor: default;
			z-index: 6;
			transition: transform 0.12s ease, box-shadow 0.14s ease, border-color 0.14s ease;
			position: absolute !important;
			box-sizing: border-box !important;
		}

		.ad-canvas-root .card.analysis-result-node:hover, .ad-canvas-root .card.paper-knowledge-node:hover {
			transform: translateY(-1px);
			box-shadow:
				0 4px 12px rgba(15, 23, 42, 0.14),
				0 0 0 0.5px rgba(255, 255, 255, 0.95) inset;
			border-color: rgba(96, 165, 250, 0.5);
		}

		.ad-canvas-root .analysis-result-node-icon, .ad-canvas-root .paper-knowledge-node-icon, .ad-canvas-root .idea-refinement-node-icon {
			flex: 0 0 32px;
			width: 32px;
			height: 32px;
			min-width: 32px;
			min-height: 32px;
			border-radius: 999px;
			aspect-ratio: 1 / 1;
			display: flex;
			align-items: center;
			justify-content: center;
			font-size: calc(13px * var(--zoom, 1));
			font-weight: 700;
			background: linear-gradient(135deg, #0f172a, #1e293b);
			color: #ffffff;
			box-shadow: 0 2px 4px rgba(15, 23, 42, 0.25);
			margin: 0;
		}

		.ad-canvas-root .analysis-result-node-open-btn, .ad-canvas-root .paper-knowledge-node-open-btn, .ad-canvas-root .idea-refinement-node-open-btn {
			flex: 0 0 32px;
			width: 32px;
			height: 32px;
			min-width: 32px;
			min-height: 32px;
			border-radius: 999px;
			aspect-ratio: 1 / 1;
			display: flex;
			align-items: center;
			justify-content: center;
			font-size: calc(11px * var(--zoom, 1));
			background: rgba(255, 255, 255, 1);
			color: #0f172a;
			border: 1px solid rgba(148, 163, 184, 0.25);
			cursor: pointer;
			transition: background 0.14s ease, transform 0.12s ease, box-shadow 0.14s ease;
			margin: 0;
			padding: 0;
		}

		.ad-canvas-root .analysis-result-node-open-btn:hover, .ad-canvas-root .paper-knowledge-node-open-btn:hover {
			background: rgba(255, 255, 255, 1);
			transform: scale(1.1);
			box-shadow: 0 2px 6px rgba(15, 23, 42, 0.15);
		}

		.ad-canvas-root .analysis-result-node-open-btn:active, .ad-canvas-root .paper-knowledge-node-open-btn:active {
			transform: scale(0.96);
		}

		/* 커서 옆에 표시되는 커스텀 툴팁 */
		.ad-canvas-root .analysis-result-tooltip {
			position: fixed;
			pointer-events: none;
			z-index: 10000;
			background: rgba(15, 23, 42, 0.95);
			color: #ffffff;
			padding: calc(6px * var(--zoom, 1)) calc(10px * var(--zoom, 1));
			border-radius: calc(6px * var(--zoom, 1));
			font-size: calc(11px * var(--zoom, 1));
			line-height: 1.4;
			max-width: calc(300px * var(--zoom, 1));
			box-shadow: 0 calc(8px * var(--zoom, 1)) calc(24px * var(--zoom, 1)) rgba(15, 23, 42, 0.4);
			backdrop-filter: blur(8px);
			-webkit-backdrop-filter: blur(8px);
			opacity: 0;
			transform: translate(-50%, -100%) translateY(calc(-8px * var(--zoom, 1)));
			transition: opacity 0.2s ease, transform 0.2s ease;
			white-space: normal;
			word-wrap: break-word;
		}

		.ad-canvas-root .analysis-result-tooltip.visible {
			opacity: 1;
			transform: translate(-50%, -100%) translateY(calc(-4px * var(--zoom, 1)));
		}


		/* ===== CRACKLES 아이디에이션 캔버스 노드 (캔버스 안의 캔버스) ===== */

		.ad-canvas-root .card.crackless-ideas-node {
			width: 92px !important;
			height: 40px !important;
			min-height: 40px !important;
			max-height: 40px !important;
			padding: 4px !important;
			border-radius: 999px;
			background: rgba(241, 245, 249, 0.98);
			border: 1px solid rgba(148, 163, 184, 0.35);
			box-shadow:
				0 2px 8px rgba(15, 23, 42, 0.1),
				0 0 0 0.5px rgba(255, 255, 255, 0.9) inset;
			display: inline-flex !important;
			flex-direction: row;
			align-items: center;
			justify-content: space-between;
			gap: 4px;
			cursor: default;
			z-index: 6;
			transition: transform 0.12s ease, box-shadow 0.14s ease, border-color 0.14s ease, filter 0.14s ease;
			position: absolute !important;
			box-sizing: border-box !important;
		}

		.ad-canvas-root .card.crackless-ideas-node:hover {
			transform: translateY(-1px);
			box-shadow:
				0 4px 12px rgba(15, 23, 42, 0.14),
				0 0 0 0.5px rgba(255, 255, 255, 0.95) inset;
			border-color: rgba(99, 102, 241, 0.45);
		}

		.ad-canvas-root .crackless-ideas-node-icon {
			flex: 0 0 32px;
			width: 32px;
			height: 32px;
			min-width: 32px;
			min-height: 32px;
			border-radius: 999px;
			aspect-ratio: 1 / 1;
			display: flex;
			align-items: center;
			justify-content: center;
			font-size: calc(12px * var(--zoom, 1));
			font-weight: 800;
			letter-spacing: 0.08em;
			background: linear-gradient(135deg, #111827, #020617);
			color: #ffffff;
			box-shadow: 0 2px 4px rgba(15, 23, 42, 0.25);
		}

		.ad-canvas-root .crackless-ideas-node-state {
			flex: 0 0 16px;
			width: 16px;
			height: 16px;
			min-width: 16px;
			min-height: 16px;
			border-radius: 999px;
			border: 2px solid rgba(148, 163, 184, 0.35);
			border-top-color: #6366f1;
			animation: spinLoading 0.75s linear infinite;
			opacity: 0.0;
			transform: scale(0.9);
			transition: opacity 0.14s ease, transform 0.14s ease;
		}

		.ad-canvas-root .card.crackless-ideas-node.pending .crackless-ideas-node-state {
			opacity: 1;
			transform: scale(1);
		}

		.ad-canvas-root .crackless-ideas-node-open-btn {
			flex: 0 0 32px;
			width: 32px;
			height: 32px;
			min-width: 32px;
			min-height: 32px;
			border-radius: 999px;
			aspect-ratio: 1 / 1;
			display: flex;
			align-items: center;
			justify-content: center;
			font-size: calc(11px * var(--zoom, 1));
			background: rgba(255, 255, 255, 1);
			color: #0f172a;
			border: 1px solid rgba(148, 163, 184, 0.25);
			cursor: pointer;
			transition: background 0.14s ease, transform 0.12s ease, box-shadow 0.14s ease, opacity 0.14s ease;
			margin: 0;
			padding: 0;
		}

		.ad-canvas-root .crackless-ideas-node-open-btn:hover {
			transform: scale(1.1);
			box-shadow: 0 2px 6px rgba(15, 23, 42, 0.15);
		}

		.ad-canvas-root .crackless-ideas-node-open-btn:active {
			transform: scale(0.96);
		}

		.ad-canvas-root .card.crackless-ideas-node.pending .crackless-ideas-node-open-btn {
			opacity: 0.35;
			cursor: not-allowed;
			pointer-events: none;
		}

		/* ===== 아이디에이션 템플릿(창/모달) ===== */

		.ad-canvas-root #idea-canvas-modal {
			position: fixed;
			inset: 0;
			/* 패널/창들과 같이 쓰기 위해: 전체 오버레이는 클릭 방해하지 않게 */
			z-index: 1250;
			display: none;
			pointer-events: none;
		}

		.ad-canvas-root #idea-canvas-modal.active {
			display: block;
		}

		.ad-canvas-root #idea-canvas-modal .idea-backdrop {
			position: absolute;
			inset: 0;
			/* 기본: 다른 패널과 함께 열릴 수 있으므로 백드롭은 비활성 */
			background: transparent;
			backdrop-filter: none;
			-webkit-backdrop-filter: none;
			pointer-events: none;
		}

		.ad-canvas-root #idea-canvas-modal .idea-shell {
			position: fixed;
			top: var(--panel-gap, 20px);
			bottom: var(--panel-gap, 20px);
			left: var(--panel-gap, 20px);
			right: var(--panel-gap, 20px);
			width: auto;
			height: auto;
			border-radius: 16px;
			background:
				radial-gradient(circle at 0 0, rgba(255, 255, 255, 1), rgba(241, 245, 249, 0.98));
			border: 1px solid rgba(148, 163, 184, 0.55);
			box-shadow:
				0 26px 70px rgba(15, 23, 42, 0.35),
				0 0 0 1px rgba(255, 255, 255, 0.95);
			display: flex;
			flex-direction: column;
			overflow: hidden;
			pointer-events: auto;
		}

		.ad-canvas-root .idea-shell-header {
			display: flex;
			align-items: center;
			justify-content: space-between;
			/* papers/idea-refinement 헤더와 높이(패딩) 정렬 */
			padding: calc(8px * var(--zoom, 1)) calc(12px * var(--zoom, 1));
			border-bottom: 1px solid rgba(226, 232, 240, 0.92);
			background: rgba(255, 255, 255, 0.65);
			backdrop-filter: blur(8px);
			-webkit-backdrop-filter: blur(8px);
			min-height: calc(40px * var(--zoom, 1));
		}

		.ad-canvas-root .idea-shell-title {
			display: flex;
			flex-direction: column;
			gap: 1px;
			flex: 1;
			min-width: 0;
		}

		.ad-canvas-root .idea-shell-title .kicker {
			font-size: calc(9px * var(--zoom, 1));
			line-height: 1.05;
			font-weight: 700;
			letter-spacing: 0.1em;
			text-transform: uppercase;
			color: rgba(15, 23, 42, 0.55);
		}

		.ad-canvas-root .idea-shell-title .headline {
			font-size: calc(11px * var(--zoom, 1));
			font-weight: 700;
			color: rgba(15, 23, 42, 0.86);
			white-space: nowrap;
			overflow: hidden;
			text-overflow: ellipsis;
			max-width: 100%;
			cursor: default;
		}

		.ad-canvas-root .idea-shell-actions {
			display: flex;
			gap: 8px;
			align-items: center;
		}

		.ad-canvas-root .idea-shell-actions button {
			border-radius: 999px;
			border: none;
			padding: calc(6px * var(--zoom, 1)) calc(12px * var(--zoom, 1));
			font-size: calc(11px * var(--zoom, 1));
			cursor: pointer;
			background: rgba(15, 23, 42, 0.04);
			color: rgba(15, 23, 42, 0.78);
			transition: background 0.14s ease, transform 0.12s ease, box-shadow 0.14s ease;
		}

		.ad-canvas-root .idea-shell-actions button:hover {
			background: rgba(15, 23, 42, 0.08);
			transform: translateY(-1px);
			box-shadow: 0 6px 14px rgba(15, 23, 42, 0.18);
		}

		.ad-canvas-root .idea-shell-actions .primary {
			background: linear-gradient(135deg, #6366f1, #22d3ee);
			color: #041016;
			box-shadow: 0 10px 24px rgba(99, 102, 241, 0.26);
		}

		.ad-canvas-root .idea-shell-actions .primary:hover {
			filter: brightness(1.02);
		}

		/* 아이디에이션 단독 오픈 시: 헤더의 "모두 추가 생성" 버튼을 X와 동일 높이로(1줄) */
		.ad-canvas-root.idea-canvas-open:not(.papers-open):not(.idea-refinement-open):not(.analysis-open) #ideaCanvasAddAllBtn {
			height: calc(28px * var(--zoom, 1));
			padding: 0 calc(14px * var(--zoom, 1));
			display: inline-flex;
			align-items: center;
			justify-content: center;
			white-space: nowrap;
			line-height: 1;
		}

		/* 아이디에이션 닫기 버튼: 다른 창들과 동일한 X 스타일 */
		.ad-canvas-root #ideaCanvasCloseBtn {
			border: none;
			background: rgba(255, 255, 255, 0.75);
			border: 1px solid rgba(148, 163, 184, 0.25);
			width: calc(28px * var(--zoom, 1));
			height: calc(28px * var(--zoom, 1));
			border-radius: 999px;
			font-size: calc(18px * var(--zoom, 1));
			cursor: pointer;
			padding: 0;
			color: rgba(15, 23, 42, 0.55);
			display: inline-flex;
			align-items: center;
			justify-content: center;
			box-shadow: 0 10px 22px rgba(15, 23, 42, 0.10);
			transition: transform 0.12s ease, background 0.12s ease, color 0.12s ease;
		}

		.ad-canvas-root #ideaCanvasCloseBtn:hover {
			color: rgba(15, 23, 42, 0.92);
			background: rgba(255, 255, 255, 0.92);
			transform: translateY(-1px);
		}

		.ad-canvas-root .idea-shell-body {
			flex: 1;
			min-height: 0;
			padding: calc(14px * var(--zoom, 1));
			background:
				radial-gradient(circle at 0% 0%, rgba(255, 255, 255, 0.85) 0, rgba(243, 244, 246, 0.65) 40%, rgba(229, 231, 235, 0.55) 100%);
			overflow: auto;
			position: relative;
		}

		.ad-canvas-root .idea-shell-loading-overlay {
			position: absolute;
			inset: 0;
			background: rgba(255, 255, 255, 0.85);
			backdrop-filter: blur(4px);
			-webkit-backdrop-filter: blur(4px);
			z-index: 1000;
			display: flex;
			align-items: center;
			justify-content: center;
		}

		.ad-canvas-root .idea-shell-loading-panel {
			display: flex;
			flex-direction: column;
			align-items: center;
			gap: calc(16px * var(--zoom, 1));
		}

		.ad-canvas-root .idea-shell-loading-spinner {
			width: calc(40px * var(--zoom, 1));
			height: calc(40px * var(--zoom, 1));
			border: calc(4px * var(--zoom, 1)) solid rgba(99, 102, 241, 0.2);
			border-top-color: rgba(99, 102, 241, 0.8);
			border-radius: 50%;
			animation: spin 0.8s linear infinite;
		}

		@keyframes spin {
			to {
				transform: rotate(360deg);
			}
		}

		.ad-canvas-root .idea-shell-loading-text {
			font-size: calc(13px * var(--zoom, 1));
			font-weight: 600;
			color: rgba(15, 23, 42, 0.75);
		}

		.ad-canvas-root .idea-grid {
			display: grid;
			grid-template-columns: repeat(3, minmax(0, 1fr));
			gap: calc(10px * var(--zoom, 1));
		}

		/* 아이디에이션이 다른 창과 함께 열리면: 2컬럼이 더 가독성 좋음 */
		.ad-canvas-root.idea-canvas-open.papers-open:not(.idea-refinement-open) #idea-canvas-modal .idea-grid, .ad-canvas-root.idea-canvas-open.idea-refinement-open:not(.papers-open) #idea-canvas-modal .idea-grid {
			grid-template-columns: repeat(2, minmax(0, 1fr));
		}

		/* 3개 창(papers + idea template + refinement) 동시 오픈 시: 아이디에이션은 1컬럼로 */
		.ad-canvas-root.papers-open.idea-refinement-open.idea-canvas-open #idea-canvas-modal .idea-grid {
			grid-template-columns: 1fr;
		}

		/* 아이디에이션 푸터(다른 창과 함께일 때) */
		.ad-canvas-root .idea-shell-footer {
			display: none;
			position: relative;
			border-top: 1px solid rgba(226, 232, 240, 0.75);
			background: linear-gradient(180deg,
					rgba(248, 250, 252, 0) 0%,
					rgba(248, 250, 252, 0.55) 35%,
					rgba(241, 245, 249, 0.82) 100%);
			backdrop-filter: blur(10px);
			-webkit-backdrop-filter: blur(10px);
			padding: calc(10px * var(--zoom, 1)) calc(12px * var(--zoom, 1));
			align-items: center;
			justify-content: flex-end;
			gap: calc(8px * var(--zoom, 1));
			min-height: calc(56px * var(--zoom, 1));
			flex-shrink: 0;
		}

		.ad-canvas-root.idea-canvas-open.papers-open #idea-canvas-modal .idea-shell-footer, .ad-canvas-root.idea-canvas-open.idea-refinement-open #idea-canvas-modal .idea-shell-footer, .ad-canvas-root.idea-canvas-open.analysis-open #idea-canvas-modal .idea-shell-footer {
			display: flex;
		}

		/* 푸터에 들어간 AddAll 버튼은 "전송" 버튼 톤으로 */
		.ad-canvas-root .idea-shell-footer #ideaCanvasAddAllBtn {
			height: calc(36px * var(--zoom, 1));
			padding: 0 calc(16px * var(--zoom, 1));
			background: linear-gradient(135deg, #6366f1, #22d3ee);
			color: #041016;
			border: none;
			border-radius: calc(12px * var(--zoom, 1));
			font-size: calc(12px * var(--zoom, 1));
			font-weight: 600;
			cursor: pointer;
			white-space: nowrap;
			box-shadow: 0 calc(8px * var(--zoom, 1)) calc(18px * var(--zoom, 1)) rgba(99, 102, 241, 0.22);
			transition: filter 0.14s ease, transform 0.12s ease, box-shadow 0.14s ease, opacity 0.14s ease;
		}

		.ad-canvas-root .idea-shell-footer #ideaCanvasAddAllBtn:hover:not(:disabled) {
			transform: translateY(-1px);
			filter: brightness(1.04) saturate(1.03);
			box-shadow: 0 calc(10px * var(--zoom, 1)) calc(22px * var(--zoom, 1)) rgba(99, 102, 241, 0.28);
		}

		.ad-canvas-root .idea-shell-footer #ideaCanvasAddAllBtn:disabled {
			opacity: 0.6;
			cursor: not-allowed;
		}

		/* 아이디에이션 오픈 상태에서의 우측 창 스택(폭 90vw 목표) */
		.ad-canvas-root.idea-canvas-open {
			--right-stack-target: 90vw;
			--right-stack-two-col: calc((var(--right-stack-target) - (var(--panel-gap) * 2) - var(--right-panel-stack-gap)) / 2);
			--right-stack-three-col: calc((var(--right-stack-target) - (var(--panel-gap) * 2) - (var(--right-panel-stack-gap) * 2)) / 3);
			--right-stack-two-total: calc((var(--right-stack-two-col) * 2) + var(--right-panel-stack-gap));
			--right-stack-three-total: calc((var(--right-stack-three-col) * 3) + (var(--right-panel-stack-gap) * 2));
		}

		/* 아이디에이션만 열렸을 때는 집중 모드: 약한 백드롭 + 클릭으로 닫기 */
		.ad-canvas-root.idea-canvas-open:not(.papers-open):not(.idea-refinement-open):not(.analysis-open) #idea-canvas-modal {
			pointer-events: auto;
		}

		.ad-canvas-root.idea-canvas-open:not(.papers-open):not(.idea-refinement-open):not(.analysis-open) #idea-canvas-modal .idea-backdrop {
			background: rgba(15, 23, 42, 0.18);
			backdrop-filter: blur(10px);
			-webkit-backdrop-filter: blur(10px);
			pointer-events: auto;
		}

		/* 2개( papers + idea template ) */
		.ad-canvas-root.papers-open.idea-canvas-open:not(.idea-refinement-open) #papers-panel {
			width: var(--right-stack-two-col);
			right: calc(var(--panel-gap) + var(--right-stack-two-col) + var(--right-panel-stack-gap));
		}

		.ad-canvas-root.papers-open.idea-canvas-open:not(.idea-refinement-open) #idea-canvas-modal .idea-shell {
			width: var(--right-stack-two-col);
			left: auto;
			right: var(--panel-gap);
		}

		.ad-canvas-root.papers-open.idea-canvas-open:not(.idea-refinement-open) #canvas {
			margin-right: var(--right-stack-two-total);
			width: calc(100vw - var(--right-stack-two-total));
		}

		.ad-canvas-root.analysis-open.papers-open.idea-canvas-open:not(.idea-refinement-open) #canvas {
			margin-left: var(--analysis-panel-width);
			margin-right: var(--right-stack-two-total);
			width: calc(100vw - (var(--analysis-panel-width) + var(--right-stack-two-total)));
		}

		/* 2개( idea template + refinement ) */
		.ad-canvas-root.idea-refinement-open.idea-canvas-open:not(.papers-open) #idea-refinement-panel {
			width: var(--right-stack-two-col);
			right: var(--panel-gap);
		}

		.ad-canvas-root.idea-refinement-open.idea-canvas-open:not(.papers-open) #idea-canvas-modal .idea-shell {
			width: var(--right-stack-two-col);
			left: auto;
			right: calc(var(--panel-gap) + var(--right-stack-two-col) + var(--right-panel-stack-gap));
		}

		.ad-canvas-root.idea-refinement-open.idea-canvas-open:not(.papers-open) #canvas {
			margin-right: var(--right-stack-two-total);
			width: calc(100vw - var(--right-stack-two-total));
		}

		.ad-canvas-root.analysis-open.idea-refinement-open.idea-canvas-open:not(.papers-open) #canvas {
			margin-left: var(--analysis-panel-width);
			margin-right: var(--right-stack-two-total);
			width: calc(100vw - (var(--analysis-panel-width) + var(--right-stack-two-total)));
		}

		/* 3개( papers + idea template + refinement ) */
		.ad-canvas-root.papers-open.idea-refinement-open.idea-canvas-open #idea-refinement-panel {
			width: var(--right-stack-three-col);
			right: var(--panel-gap);
		}

		.ad-canvas-root.papers-open.idea-refinement-open.idea-canvas-open #idea-canvas-modal .idea-shell {
			width: var(--right-stack-three-col);
			left: auto;
			right: calc(var(--panel-gap) + var(--right-stack-three-col) + var(--right-panel-stack-gap));
		}

		.ad-canvas-root.papers-open.idea-refinement-open.idea-canvas-open #papers-panel {
			width: var(--right-stack-three-col);
			right: calc(var(--panel-gap) + (var(--right-stack-three-col) * 2) + (var(--right-panel-stack-gap) * 2));
		}

		.ad-canvas-root.papers-open.idea-refinement-open.idea-canvas-open #canvas {
			margin-right: var(--right-stack-three-total);
			width: calc(100vw - var(--right-stack-three-total));
		}

		.ad-canvas-root.analysis-open.papers-open.idea-refinement-open.idea-canvas-open #canvas {
			margin-left: var(--analysis-panel-width);
			margin-right: var(--right-stack-three-total);
			width: calc(100vw - (var(--analysis-panel-width) + var(--right-stack-three-total)));
		}

		.ad-canvas-root .idea-cell {
			border-radius: calc(18px * var(--zoom, 1));
			background:
				radial-gradient(circle at 0 0, rgba(255, 255, 255, 0.95), rgba(248, 250, 252, 0.88));
			border: 1px solid rgba(148, 163, 184, 0.35);
			box-shadow: 0 calc(10px * var(--zoom, 1)) calc(22px * var(--zoom, 1)) rgba(15, 23, 42, 0.10);
			overflow: hidden;
			display: flex;
			flex-direction: column;
			min-height: calc(200px * var(--zoom, 1));
			position: relative;
		}

		.ad-canvas-root .idea-cell-header {
			padding: calc(10px * var(--zoom, 1)) calc(10px * var(--zoom, 1)) calc(8px * var(--zoom, 1));
			border-bottom: 1px solid rgba(226, 232, 240, 0.92);
			display: flex;
			align-items: center;
			justify-content: space-between;
			gap: calc(8px * var(--zoom, 1));
			background:
				radial-gradient(circle at 0 0, rgba(255, 255, 255, 0.95), rgba(241, 245, 249, 0.78));
		}

		.ad-canvas-root .idea-cell-title {
			display: flex;
			flex-direction: column;
			gap: 2px;
			flex: 1;
		}

		.ad-canvas-root .idea-cell-title-row {
			display: flex;
			align-items: center;
			gap: calc(8px * var(--zoom, 1));
		}

		.ad-canvas-root .idea-cell-title .strategy {
			font-size: calc(11px * var(--zoom, 1));
			font-weight: 800;
			letter-spacing: 0.08em;
			text-transform: uppercase;
			color: rgba(15, 23, 42, 0.72);
		}

		.ad-canvas-root .idea-cell-title .hint {
			font-size: calc(10px * var(--zoom, 1));
			color: rgba(100, 116, 139, 0.9);
			font-style: italic;
		}

		.ad-canvas-root .idea-cell-count {
			font-size: calc(10px * var(--zoom, 1));
			font-weight: 700;
			color: rgba(15, 23, 42, 0.55);
			padding: calc(2px * var(--zoom, 1)) calc(8px * var(--zoom, 1));
			border-radius: 999px;
			background: rgba(148, 163, 184, 0.16);
		}

		.ad-canvas-root .idea-cell-generate-btn {
			border-radius: 999px;
			border: none;
			padding: calc(4px * var(--zoom, 1)) calc(10px * var(--zoom, 1));
			font-size: calc(10px * var(--zoom, 1));
			font-weight: 600;
			cursor: pointer;
			background: linear-gradient(135deg, #6366f1, #22d3ee);
			color: #041016;
			box-shadow: 0 calc(4px * var(--zoom, 1)) calc(10px * var(--zoom, 1)) rgba(99, 102, 241, 0.26);
			transition: background 0.14s ease, transform 0.12s ease, box-shadow 0.14s ease, opacity 0.14s ease;
			white-space: nowrap;
		}

		.ad-canvas-root .idea-cell-generate-btn:hover:not(:disabled) {
			filter: brightness(1.05);
			transform: translateY(-1px);
			box-shadow: 0 calc(6px * var(--zoom, 1)) calc(14px * var(--zoom, 1)) rgba(99, 102, 241, 0.32);
		}

		.ad-canvas-root .idea-cell-generate-btn:disabled {
			opacity: 0.6;
			cursor: not-allowed;
		}

		.ad-canvas-root .idea-cell-generate-btn.error {
			background: rgba(239, 68, 68, 0.1);
			color: rgba(127, 29, 29, 0.9);
			box-shadow: none;
			display: flex;
			align-items: center;
			gap: calc(4px * var(--zoom, 1));
		}

		.ad-canvas-root .idea-cell-generate-btn.error:hover {
			background: rgba(239, 68, 68, 0.15);
		}

		.ad-canvas-root .idea-cell-generate-spinner {
			display: inline-block;
			width: calc(12px * var(--zoom, 1));
			height: calc(12px * var(--zoom, 1));
			border: calc(2px * var(--zoom, 1)) solid rgba(99, 102, 241, 0.2);
			border-top-color: #6366f1;
			border-radius: 50%;
			animation: spinLoading 0.75s linear infinite;
		}

		.ad-canvas-root .idea-cell-generate-status {
			font-size: calc(10px * var(--zoom, 1));
			color: rgba(100, 116, 139, 0.9);
			font-style: italic;
			display: flex;
			align-items: center;
			gap: calc(6px * var(--zoom, 1));
		}

		.ad-canvas-root .idea-cell.loading {
			opacity: 0.5;
			pointer-events: none;
		}

		.ad-canvas-root .idea-cell.error-state {
			opacity: 0.7;
		}

		@keyframes spinLoading {
			to {
				transform: rotate(360deg);
			}
		}

		.ad-canvas-root .idea-cell-body {
			padding: calc(10px * var(--zoom, 1));
			display: flex;
			flex-direction: column;
			gap: calc(8px * var(--zoom, 1));
			overflow: auto;
			min-height: 0;
			flex: 1;
			position: relative;
		}

		.ad-canvas-root .idea-cell-body.empty {
			justify-content: center;
			align-items: center;
		}

		.ad-canvas-root .idea-empty-message {
			font-size: calc(11px * var(--zoom, 1));
			font-weight: 800;
			letter-spacing: 0.08em;
			text-transform: uppercase;
			color: rgba(15, 23, 42, 0.72);
			font-style: normal;
			padding: 0;
		}

		/* 섹션 전체를 채우는 그라데이션 배경 (아이디어 카드와 별개) */
		.ad-canvas-root .idea-cell::before {
			content: '';
			position: absolute;
			inset: 0;
			background:
				radial-gradient(circle at 0 0, rgba(255, 255, 255, 0.95), rgba(248, 250, 252, 0.88));
			z-index: 0;
			pointer-events: none;
		}

		.ad-canvas-root .idea-cell-header, .ad-canvas-root .local-constraints-section, .ad-canvas-root .idea-cell-body {
			position: relative;
			z-index: 1;
		}

		.ad-canvas-root .idea-item {
			border-radius: calc(16px * var(--zoom, 1));
			border: 1px solid rgba(148, 163, 184, 0.32);
			background:
				radial-gradient(circle at 0 0, rgba(255, 255, 255, 0.95), rgba(248, 250, 252, 0.88));
			box-shadow: 0 calc(10px * var(--zoom, 1)) calc(20px * var(--zoom, 1)) rgba(15, 23, 42, 0.10);
			padding: calc(10px * var(--zoom, 1));
			display: flex;
			flex-direction: column;
			gap: calc(6px * var(--zoom, 1));
		}

		.ad-canvas-root .idea-item-header {
			display: flex;
			justify-content: space-between;
			align-items: flex-start;
			gap: 8px;
		}

		.ad-canvas-root .idea-item .idea-title {
			font-size: calc(12px * var(--zoom, 1));
			font-weight: 800;
			color: rgba(15, 23, 42, 0.88);
			line-height: 1.35;
			flex: 1;
		}

		.ad-canvas-root .idea-delete-btn {
			background: transparent;
			border: none;
			color: rgba(100, 116, 139, 0.7);
			font-size: calc(18px * var(--zoom, 1));
			line-height: 1;
			cursor: pointer;
			padding: 0;
			width: calc(20px * var(--zoom, 1));
			height: calc(20px * var(--zoom, 1));
			display: flex;
			align-items: center;
			justify-content: center;
			border-radius: 4px;
			transition: background 0.14s ease, color 0.14s ease;
			flex-shrink: 0;
		}

		.ad-canvas-root .idea-delete-btn:hover {
			background: rgba(239, 68, 68, 0.1);
			color: rgba(239, 68, 68, 0.9);
		}

		.ad-canvas-root .idea-added-text {
			font-size: calc(10px * var(--zoom, 1));
			color: rgba(100, 116, 139, 0.8);
			margin-right: auto;
		}

		.ad-canvas-root .idea-focus-btn {
			border-radius: 999px;
			border: none;
			padding: calc(5px * var(--zoom, 1)) calc(10px * var(--zoom, 1));
			font-size: calc(12px * var(--zoom, 1));
			cursor: pointer;
			background: rgba(15, 23, 42, 0.05);
			color: rgba(15, 23, 42, 0.78);
			transition: background 0.14s ease, transform 0.12s ease, box-shadow 0.14s ease;
		}

		.ad-canvas-root .idea-focus-btn:hover {
			background: rgba(15, 23, 42, 0.09);
			transform: translateY(-1px);
			box-shadow: 0 6px 14px rgba(15, 23, 42, 0.14);
		}

		.ad-canvas-root .idea-item .idea-meta {
			display: grid;
			grid-template-columns: 1fr;
			gap: calc(6px * var(--zoom, 1));
			font-size: calc(11px * var(--zoom, 1));
			color: rgba(15, 23, 42, 0.8);
			line-height: 1.45;
		}

		.ad-canvas-root .idea-item .meta-label {
			font-size: calc(10px * var(--zoom, 1));
			font-weight: 800;
			letter-spacing: 0.06em;
			text-transform: uppercase;
			color: rgba(100, 116, 139, 0.95);
			margin-bottom: calc(2px * var(--zoom, 1));
		}

		.ad-canvas-root .idea-item .risk-chips {
			display: flex;
			flex-wrap: wrap;
			gap: 6px;
		}

		.ad-canvas-root .idea-item .risk-chip {
			font-size: calc(10px * var(--zoom, 1));
			padding: calc(3px * var(--zoom, 1)) calc(8px * var(--zoom, 1));
			border-radius: 999px;
			background: rgba(248, 113, 113, 0.12);
			border: 1px solid rgba(248, 113, 113, 0.22);
			color: rgba(127, 29, 29, 0.86);
		}

		.ad-canvas-root .idea-item .idea-actions {
			margin-top: calc(2px * var(--zoom, 1));
			display: flex;
			gap: calc(6px * var(--zoom, 1));
			justify-content: flex-end;
		}

		.ad-canvas-root .idea-item .idea-actions button {
			border-radius: 999px;
			border: none;
			padding: calc(5px * var(--zoom, 1)) calc(10px * var(--zoom, 1));
			font-size: calc(10px * var(--zoom, 1));
			cursor: pointer;
			background: rgba(15, 23, 42, 0.05);
			color: rgba(15, 23, 42, 0.78);
			transition: background 0.14s ease, transform 0.12s ease, box-shadow 0.14s ease;
		}

		.ad-canvas-root .idea-item .idea-actions button:hover {
			background: rgba(15, 23, 42, 0.09);
			transform: translateY(-1px);
			box-shadow: 0 6px 14px rgba(15, 23, 42, 0.14);
		}

		.ad-canvas-root .idea-item .idea-actions .primary {
			background: linear-gradient(135deg, #22c55e, #4ade80);
			color: #022c22;
			box-shadow: 0 7px 18px rgba(34, 197, 94, 0.28);
		}

		/* GLOBAL CONSTRAINTS 섹션 스타일 */
		.ad-canvas-root .global-constraints-section {
			margin-bottom: calc(14px * var(--zoom, 1));
			padding-bottom: calc(14px * var(--zoom, 1));
			border-bottom: 1px solid rgba(226, 232, 240, 0.92);
		}

		.ad-canvas-root .constraints-section-header {
			margin-bottom: calc(8px * var(--zoom, 1));
		}

		.ad-canvas-root .constraints-section-title {
			font-size: calc(10px * var(--zoom, 1));
			font-weight: 700;
			letter-spacing: 0.1em;
			text-transform: uppercase;
			color: rgba(15, 23, 42, 0.55);
		}

		.ad-canvas-root .constraints-list {
			display: flex;
			flex-direction: column;
			gap: calc(6px * var(--zoom, 1));
		}

		.ad-canvas-root .constraint-item {
			display: flex;
			align-items: center;
			gap: calc(8px * var(--zoom, 1));
		}

		.ad-canvas-root .constraint-input {
			flex: 1;
			border: 1px solid rgba(148, 163, 184, 0.4);
			border-radius: calc(6px * var(--zoom, 1));
			padding: calc(6px * var(--zoom, 1)) calc(10px * var(--zoom, 1));
			font-size: calc(11px * var(--zoom, 1));
			background: rgba(255, 255, 255, 0.95);
			color: rgba(15, 23, 42, 0.88);
			outline: none;
			transition: border-color 0.14s ease, box-shadow 0.14s ease;
		}

		.ad-canvas-root .constraint-input:focus {
			border-color: rgba(99, 102, 241, 0.6);
			box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.1);
		}

		.ad-canvas-root .constraint-delete-btn {
			background: transparent;
			border: none;
			color: rgba(100, 116, 139, 0.7);
			font-size: calc(18px * var(--zoom, 1));
			line-height: 1;
			cursor: pointer;
			padding: 0;
			width: calc(20px * var(--zoom, 1));
			height: calc(20px * var(--zoom, 1));
			display: flex;
			align-items: center;
			justify-content: center;
			border-radius: calc(4px * var(--zoom, 1));
			transition: background 0.14s ease, color 0.14s ease;
			flex-shrink: 0;
		}

		.ad-canvas-root .constraint-delete-btn:hover {
			background: rgba(239, 68, 68, 0.1);
			color: rgba(239, 68, 68, 0.9);
		}

		.ad-canvas-root .constraint-add-btn {
			border: 1px dashed rgba(148, 163, 184, 0.5);
			border-radius: calc(6px * var(--zoom, 1));
			padding: calc(6px * var(--zoom, 1)) calc(10px * var(--zoom, 1));
			font-size: calc(11px * var(--zoom, 1));
			background: transparent;
			color: rgba(100, 116, 139, 0.8);
			cursor: pointer;
			transition: border-color 0.14s ease, background 0.14s ease, color 0.14s ease;
			text-align: left;
		}

		.ad-canvas-root .constraint-add-btn:hover {
			border-color: rgba(99, 102, 241, 0.6);
			background: rgba(99, 102, 241, 0.05);
			color: rgba(99, 102, 241, 0.9);
		}

		/* LOCAL CONSTRAINTS 섹션 스타일 */
		.ad-canvas-root .local-constraints-section {
			padding: calc(8px * var(--zoom, 1)) calc(10px * var(--zoom, 1));
			border-top: 1px solid rgba(226, 232, 240, 0.92);
			border-bottom: 1px solid rgba(226, 232, 240, 0.92);
			background: rgba(241, 245, 249, 0.85);
			margin-top: calc(4px * var(--zoom, 1));
		}

		.ad-canvas-root .local-constraints-title {
			font-size: calc(11px * var(--zoom, 1));
			font-weight: 800;
			letter-spacing: 0.08em;
			text-transform: uppercase;
			color: rgba(15, 23, 42, 0.72);
			margin-bottom: calc(6px * var(--zoom, 1));
		}

		.ad-canvas-root .local-constraints-list {
			display: flex;
			flex-direction: column;
			gap: calc(4px * var(--zoom, 1));
		}

		.ad-canvas-root .local-constraints-list .constraint-item {
			gap: calc(6px * var(--zoom, 1));
		}

		.ad-canvas-root .local-constraints-list .constraint-input {
			padding: calc(4px * var(--zoom, 1)) calc(8px * var(--zoom, 1));
			font-size: calc(10px * var(--zoom, 1));
		}

		.ad-canvas-root .local-constraints-list .constraint-delete-btn {
			width: calc(18px * var(--zoom, 1));
			height: calc(18px * var(--zoom, 1));
			font-size: calc(16px * var(--zoom, 1));
		}

		.ad-canvas-root .local-constraints-list .constraint-add-btn {
			padding: calc(4px * var(--zoom, 1)) calc(8px * var(--zoom, 1));
			font-size: calc(10px * var(--zoom, 1));
			border: 1px dashed rgba(15, 23, 42, 0.6);
			border-color: rgba(15, 23, 42, 0.6);
			color: rgba(15, 23, 42, 0.72);
			font-weight: 600;
		}

		.ad-canvas-root .local-constraints-list .constraint-add-btn:hover {
			border-color: rgba(99, 102, 241, 0.8);
			color: rgba(15, 23, 42, 1);
		}

		/* 아이디어 카드 본문 스타일 (템플릿과 동일한 스타일) */
		.ad-canvas-root .idea-card-body {
			flex: 1;
			display: flex;
			flex-direction: column;
			padding: 0;
			position: relative;
			min-height: 0;
			overflow: hidden;
		}

		.ad-canvas-root .idea-card-display {
			flex: 1;
			display: flex;
			flex-direction: column;
			gap: 6px;
			padding: 8px 0;
			cursor: pointer;
			min-height: 0;
			overflow: auto;
		}

		.ad-canvas-root .idea-card-display .idea-title {
			font-size: calc(12px * var(--zoom, 1));
			font-weight: 800;
			color: rgba(15, 23, 42, 0.88);
			line-height: 1.35;
		}

		.ad-canvas-root .idea-card-display .idea-meta {
			display: grid;
			grid-template-columns: 1fr;
			gap: 6px;
			font-size: calc(11px * var(--zoom, 1));
			color: rgba(15, 23, 42, 0.8);
			line-height: 1.45;
		}

		.ad-canvas-root .idea-card-display .meta-label {
			font-size: calc(10px * var(--zoom, 1));
			font-weight: 800;
			letter-spacing: 0.06em;
			text-transform: uppercase;
			color: rgba(100, 116, 139, 0.95);
			margin-bottom: 2px;
		}

		.ad-canvas-root .idea-card-display .risk-chips {
			display: flex;
			flex-wrap: wrap;
			gap: 6px;
		}

		.ad-canvas-root .idea-card-display .risk-chip {
			font-size: calc(10px * var(--zoom, 1));
			padding: 3px 8px;
			border-radius: 999px;
			background: rgba(248, 113, 113, 0.12);
			border: 1px solid rgba(248, 113, 113, 0.22);
			color: rgba(127, 29, 29, 0.86);
		}

		.ad-canvas-root .idea-card-textarea {
			width: 100%;
			flex: 1;
			border: none;
			background: transparent;
			resize: none;
			font-family: inherit;
			font-size: calc(11px * var(--zoom, 1));
			line-height: 1.5;
			color: rgba(15, 23, 42, 0.88);
			padding: 8px 0;
			outline: none;
		}

		.ad-canvas-root .small-btn:hover {
			transform: translateY(-1px);
			box-shadow: 0 10px 26px rgba(34, 197, 94, 0.55);
			filter: brightness(1.03);
		}

		.ad-canvas-root .small-btn:active {
			transform: translateY(0);
			box-shadow: 0 6px 14px rgba(34, 197, 94, 0.4);
		}

		.ad-canvas-root .card-menu {
			position: absolute;
			left: 100%;
			top: 22px;
			margin-left: 10px;
			display: none;
			flex-direction: column;
			gap: 6px;
			z-index: 10;
		}

		.ad-canvas-root .card-menu.open {
			display: flex;
		}

		.ad-canvas-root .icon-btn {
			width: 32px;
			height: 32px;
			border-radius: 999px;
			border: none;
			background: radial-gradient(circle at 30% 0, #ffffff, #e5f0ff);
			box-shadow:
				0 10px 20px rgba(15, 23, 42, 0.22),
				0 0 0 1px rgba(255, 255, 255, 0.9);
			display: flex;
			align-items: center;
			justify-content: center;
			font-size: 16px;
			cursor: pointer;
			color: #111827;
			transition:
				transform 0.14s ease,
				box-shadow 0.14s ease,
				filter 0.12s ease;
		}

		.ad-canvas-root .icon-btn:hover {
			transform: translateY(-1px);
			box-shadow:
				0 14px 26px rgba(15, 23, 42, 0.3),
				0 0 0 1px rgba(148, 163, 184, 0.9);
			filter: brightness(1.03);
		}

		.ad-canvas-root .icon-btn:active {
			transform: translateY(0);
			box-shadow: 0 8px 16px rgba(15, 23, 42, 0.26);
		}

		.ad-canvas-root .color-picker {
			margin-top: 2px;
			background: rgba(255, 255, 255, 0.96);
			border-radius: 999px;
			padding: 4px 8px;
			box-shadow: 0 10px 28px rgba(15, 23, 42, 0.26);
			display: none;
			gap: 6px;
			align-items: center;
			justify-content: center;
			border: 1px solid rgba(148, 163, 184, 0.5);
			backdrop-filter: blur(12px);
			-webkit-backdrop-filter: blur(12px);
		}

		.ad-canvas-root .color-picker.open {
			display: flex;
		}

		.ad-canvas-root .color-swatch {
			width: 16px;
			height: 16px;
			border-radius: 999px;
			cursor: pointer;
			border: 1px solid rgba(148, 163, 184, 0.8);
			box-shadow:
				0 0 0 1px rgba(255, 255, 255, 0.9),
				0 4px 8px rgba(15, 23, 42, 0.22);
			transition:
				transform 0.12s ease,
				box-shadow 0.12s ease,
				filter 0.12s ease;
		}

		.ad-canvas-root .color-swatch:hover {
			transform: translateY(-1px) scale(1.05);
			box-shadow:
				0 0 0 1px rgba(148, 163, 184, 1),
				0 7px 14px rgba(15, 23, 42, 0.26);
			filter: brightness(1.03);
		}

		/* 연결선 가운데 핸들 & 색상 메뉴 */

		.ad-canvas-root .link-handle {
			position: absolute;
			width: 20px;
			height: 20px;
			border-radius: 999px;
			border: none;
			background: #111827;
			color: #f9fafb;
			font-size: 11px;
			display: flex;
			align-items: center;
			justify-content: center;
			pointer-events: auto;
			cursor: pointer;
			z-index: 4;
			box-shadow: 0 4px 10px rgba(15, 23, 42, 0.4);
			transform: translate(-50%, -50%);
		}

		.ad-canvas-root .link-handle:hover {
			background: #2642ba;
		}

		.ad-canvas-root #link-color-menu {
			position: absolute;
			display: none;
			padding: 4px 6px;
			border-radius: 999px;
			background: rgba(255, 255, 255, 0.98);
			border: 1px solid rgba(148, 163, 184, 0.7);
			box-shadow: 0 10px 24px rgba(15, 23, 42, 0.25);
			z-index: 5;
			gap: 4px;
			align-items: center;
			justify-content: center;
		}

		.ad-canvas-root .link-color-swatch {
			width: 16px;
			height: 16px;
			border-radius: 999px;
			border: 1px solid rgba(148, 163, 184, 0.8);
			cursor: pointer;
			padding: 0;
		}

		.ad-canvas-root .link-color-swatch:hover {
			transform: translateY(-1px) scale(1.05);
		}

		/* 커서 + 버튼 */
		.ad-canvas-root #cursor-add-btn {
			position: fixed;
			width: 26px;
			height: 26px;
			border-radius: 50%;
			border: none;
			display: flex;
			align-items: center;
			justify-content: center;
			font-size: 16px;
			font-weight: 800;
			line-height: 1;
			background: transparent;
			color: rgba(15, 23, 42, 0.82);
			pointer-events: auto;
			cursor: pointer;
			z-index: 1000;
			position: fixed;
			isolation: isolate;
			transition:
				opacity 0.12s ease,
				transform 0.12s ease,
				box-shadow 0.12s ease,
				filter 0.12s ease;
		}

		/* 실제 클릭 영역은 유지하고, 보이는 원형만 더 작게(약 75%) */
		.ad-canvas-root #cursor-add-btn::before {
			content: "";
			position: absolute;
			left: 50%;
			top: 50%;
			width: 20px;   /* 26px의 약 75% */
			height: 20px;
			transform: translate(-50%, -50%);
			border-radius: 999px;
			border: 1px solid rgba(148, 163, 184, 0.55);
			background: rgba(255, 255, 255, 0.86);
			box-shadow:
				0 10px 24px rgba(15, 23, 42, 0.18),
				inset 0 0 0 1px rgba(255, 255, 255, 0.75);
			backdrop-filter: blur(10px);
			-webkit-backdrop-filter: blur(10px);
			z-index: -1;
			transition:
				transform 0.12s ease,
				box-shadow 0.12s ease,
				filter 0.12s ease,
				border-color 0.12s ease,
				background 0.12s ease;
		}

		.ad-canvas-root #cursor-add-btn.hidden {
			opacity: 0;
			pointer-events: none;
			transform: scale(0.96);
		}

		.ad-canvas-root #cursor-add-btn:hover {
			transform: translateY(-1px) scale(1.03);
			filter: brightness(1.02);
		}

		.ad-canvas-root #cursor-add-btn:hover::before {
			transform: translate(-50%, -50%) scale(1.04);
			box-shadow:
				0 14px 34px rgba(15, 23, 42, 0.22),
				inset 0 0 0 1px rgba(255, 255, 255, 0.82);
			border-color: rgba(148, 163, 184, 0.7);
			filter: brightness(1.02);
		}

		.ad-canvas-root #cursor-add-btn:active {
			transform: scale(0.98);
		}

		.ad-canvas-root #cursor-add-btn:active::before {
			transform: translate(-50%, -50%) scale(0.98);
			box-shadow:
				0 8px 18px rgba(15, 23, 42, 0.18),
				inset 0 0 0 1px rgba(255, 255, 255, 0.7);
		}

		.ad-canvas-root #cursor-add-btn:focus-visible {
			outline: none;
		}

		.ad-canvas-root #cursor-add-btn:focus-visible::before {
			box-shadow:
				0 14px 34px rgba(15, 23, 42, 0.22),
				0 0 0 3px rgba(34, 211, 238, 0.22),
				inset 0 0 0 1px rgba(255, 255, 255, 0.82);
		}

		/* 커서 + 옆 카드 타입 선택 메뉴 */
		.ad-canvas-root #cursor-add-menu {
			position: fixed;
			z-index: 1101;
			display: flex;
			gap: 4px;
			padding: 4px;
			border-radius: 999px;
			background: rgba(255, 255, 255, 0.96);
			border: 1px solid rgba(148, 163, 184, 0.5);
			box-shadow:
				0 10px 26px rgba(15, 23, 42, 0.25),
				0 0 0 1px rgba(255, 255, 255, 0.9);
			backdrop-filter: blur(10px);
			-webkit-backdrop-filter: blur(10px);
		}

		.ad-canvas-root #cursor-add-menu.hidden {
			opacity: 0;
			pointer-events: none;
		}

		.ad-canvas-root .cursor-add-option {
			border: none;
			border-radius: 999px;
			padding: 4px 10px;
			font-size: 11px;
			cursor: pointer;
			background: rgba(15, 23, 42, 0.03);
			color: rgba(15, 23, 42, 0.8);
			white-space: nowrap;
			transition:
				background 0.12s ease,
				transform 0.12s ease,
				box-shadow 0.12s ease;
		}

		.ad-canvas-root .cursor-add-option:hover {
			background: rgba(15, 23, 42, 0.08);
			transform: translateY(-1px);
			box-shadow: 0 5px 14px rgba(15, 23, 42, 0.22);
		}


		/* 드래그 선택 박스 */
		.ad-canvas-root .selection-rect {
			position: fixed;
			border-radius: 18px;
			border: 1px solid rgba(168, 255, 120, 0.95);
			background:
				radial-gradient(circle at 0 0, rgba(168, 255, 120, 0.28), transparent 60%),
				rgba(168, 255, 120, 0.08);
			box-shadow: 0 0 24px rgba(168, 255, 120, 0.42);
			pointer-events: none;
			z-index: 999;
		}

		/* ===== 왼쪽 근본 원인 분석 패널 ===== */

		.ad-canvas-root #analysis-panel {
			position: fixed;
			overflow: hidden;
			left: 20px;
			top: 20px;
			width: 720px;
			height: calc(calc(100 * var(--ad-vh)) - 40px);
			display: flex;
			flex-direction: column;
			background: rgba(255, 255, 255, 0.98);
			border: 1px solid rgba(148, 163, 184, 0.3);
			border-radius: 16px;
			box-shadow:
				0 8px 32px rgba(15, 23, 42, 0.12),
				0 2px 8px rgba(15, 23, 42, 0.08);
			z-index: 1200;
			transform: translateX(0);
			transition: transform 0.2s ease-out, opacity 0.2s ease-out;
		}

		.ad-canvas-root #analysis-panel.hidden {
			transform: translateX(calc(-100% - 40px));
			opacity: 0;
			pointer-events: none;
		}

		.ad-canvas-root .analysis-header {
			display: flex;
			align-items: center;
			justify-content: space-between;
			padding: 10px 14px;
			border-bottom: 1px solid rgba(226, 232, 240, 0.9);
			font-size: 11px;
			font-weight: 600;
			color: rgba(15, 23, 42, 0.8);
			border-radius: 16px 16px 0 0;
			background: rgba(255, 255, 255, 0.98);
		}

		.ad-canvas-root .analysis-header-title {
			display: flex;
			align-items: center;
			gap: 8px;
			font-size: 11px;
		}

		.ad-canvas-root .analysis-header-hint {
			font-size: 11px;
			font-weight: 400;
			color: rgba(15, 23, 42, 0.6);
			font-style: italic;
			display: none;
		}

		.ad-canvas-root .analysis-header-hint.visible {
			display: inline;
		}

		.ad-canvas-root #analysis-close-btn {
			border: none;
			background: transparent;
			font-size: 18px;
			cursor: pointer;
			padding: 0 4px;
			color: rgba(15, 23, 42, 0.5);
		}

		.ad-canvas-root #analysis-close-btn:hover {
			color: rgba(15, 23, 42, 0.9);
		}

		.ad-canvas-root .analysis-actions {
			padding: 8px 14px;
			border-bottom: 1px solid rgba(226, 232, 240, 0.9);
			display: flex;
			justify-content: space-between;
			align-items: center;
			gap: 10px;
		}

		.ad-canvas-root .analysis-actions-left, .ad-canvas-root .analysis-actions-right {
			display: flex;
			align-items: center;
			gap: 8px;
		}

		.ad-canvas-root #analysis-run-btn, .ad-canvas-root #analysis-reset-btn, .ad-canvas-root #analysis-overwrite-btn, .ad-canvas-root #analysis-add-new-btn {
			border-radius: 999px;
			border: none;
			padding: 6px 12px;
			font-size: 11px;
			cursor: pointer;
			background: rgba(15, 23, 42, 0.04);
			color: rgba(15, 23, 42, 0.78);
			letter-spacing: 0.02em;
			transition: background 0.14s ease;
		}

		.ad-canvas-root #analysis-run-btn:hover, .ad-canvas-root #analysis-reset-btn:hover, .ad-canvas-root #analysis-overwrite-btn:hover:not(:disabled), .ad-canvas-root #analysis-add-new-btn:hover:not(:disabled) {
			background: rgba(15, 23, 42, 0.08);
		}

		.ad-canvas-root #analysis-overwrite-btn:disabled, .ad-canvas-root #analysis-add-new-btn:disabled {
			opacity: 0.4;
			cursor: not-allowed;
			background: rgba(15, 23, 42, 0.02);
		}

		.ad-canvas-root #treeContainer {
			flex: 1;
			position: relative;
			padding: 10px;
			background: #f9fafb;
			overflow-x: auto;
			overflow-y: auto;
			min-height: 0;
		}

		.ad-canvas-root #analysis-history-section {
			border-top: 1px solid rgba(226, 232, 240, 0.9);
			background: rgba(248, 250, 252, 0.95);
			padding: 10px 14px;
			max-height: 120px;
			display: flex;
			flex-direction: column;
			overflow: hidden;
			margin-top: 0;
			border-radius: 0 0 16px 16px;
		}

		.ad-canvas-root .analysis-history-header {
			font-size: 11px;
			font-weight: 600;
			color: rgba(15, 23, 42, 0.7);
			margin-bottom: 8px;
			/* 해상도와 무관하게 고정 크기 */
		}

		.ad-canvas-root .analysis-history-list {
			display: flex;
			gap: 8px;
			overflow-x: auto;
			overflow-y: hidden;
			padding: 4px 4px;
			align-items: center;
			position: relative;
		}

		.ad-canvas-root .analysis-history-list::-webkit-scrollbar {
			height: 6px;
		}

		.ad-canvas-root .analysis-history-list::-webkit-scrollbar-track {
			background: rgba(241, 245, 249, 0.5);
			border-radius: 3px;
		}

		.ad-canvas-root .analysis-history-list::-webkit-scrollbar-thumb {
			background: rgba(148, 163, 184, 0.4);
			border-radius: 3px;
		}

		.ad-canvas-root .analysis-history-list::-webkit-scrollbar-thumb:hover {
			background: rgba(148, 163, 184, 0.6);
		}

		.ad-canvas-root .analysis-history-empty {
			font-size: 11px;
			color: rgba(15, 23, 42, 0.5);
			text-align: center;
			padding: 12px 8px;
			font-style: italic;
			line-height: 1.5;
		}

		.ad-canvas-root .analysis-history-item {
			flex: 0 0 auto;
			width: 40px;
			height: 40px;
			border-radius: 999px;
			display: flex;
			align-items: center;
			justify-content: center;
			font-size: 16px;
			font-weight: 700;
			background: rgba(148, 163, 184, 0.2);
			color: rgba(15, 23, 42, 0.7);
			cursor: pointer;
			box-shadow: 0 2px 6px rgba(15, 23, 42, 0.1);
			transition: transform 0.12s ease, box-shadow 0.14s ease, background 0.14s ease, outline 0.14s ease;
			position: relative;
			outline: none;
		}

		.ad-canvas-root .analysis-history-item.selected {
			background: linear-gradient(135deg, #0f172a, #1e293b);
			color: #ffffff;
			outline: 2px solid rgba(168, 255, 120, 0.98);
			box-shadow:
				0 0 0 1px rgba(168, 255, 120, 0.95),
				0 0 0 4px rgba(168, 255, 120, 0.2),
				0 4px 12px rgba(15, 23, 42, 0.25);
		}

		.ad-canvas-root .analysis-history-item:hover {
			transform: scale(1.1);
			box-shadow: 0 4px 16px rgba(15, 23, 42, 0.2);
		}

		.ad-canvas-root .analysis-history-item.selected:hover {
			box-shadow:
				0 0 0 1px rgba(168, 255, 120, 0.95),
				0 0 0 4px rgba(168, 255, 120, 0.3),
				0 6px 18px rgba(15, 23, 42, 0.3);
		}

		.ad-canvas-root .analysis-history-item:active {
			transform: scale(0.95);
		}

		/* 툴팁 제거 - 마우스 호버 시 텍스트 표시 안 함 */

		.ad-canvas-root #treeInner {
			position: relative;
			width: max-content;
			height: max-content;
		}

		.ad-canvas-root #tree-connections {
			position: absolute;
			top: 0;
			left: 0;
			width: 100%;
			height: 100%;
			pointer-events: none;
			z-index: 1;
		}

		.ad-canvas-root #tree-edge-buttons {
			position: absolute;
			top: 0;
			left: 0;
			width: 100%;
			height: 100%;
			pointer-events: none;
			z-index: 3;
		}

		.ad-canvas-root ul.tree-root, .ad-canvas-root ul.children {
			list-style: none;
			padding-left: 18px;
			margin: 0;
		}

		.ad-canvas-root .node {
			margin: 8px 0;
		}

		.ad-canvas-root .node-content {
			display: inline-flex;
			align-items: center;
			flex-wrap: nowrap;
			gap: 4px;
			background: rgba(255, 255, 255, 0.98);
			padding: 4px 6px;
			border-radius: 9999px;
			border: 1px solid rgba(148, 163, 184, 0.5);
			box-shadow: 0 8px 20px rgba(15, 23, 42, 0.12);
			position: relative;
			z-index: 10;
			height: 30px;
			box-sizing: border-box;
		}

		/* 원인 노드 input이 disabled 되었을 때 (옅은 회색) */
		.ad-canvas-root .node-content>input:disabled {
			color: #9ca3af;
			/* light gray */
		}

		/* 전략 노드 input이 disabled 되었을 때 (짙은 회색) */
		.ad-canvas-root .strategy-box input:disabled {
			color: #4b5563;
			/* darker gray */
		}

		/* 공통 busy 상태 시 약간 투명 처리 */
		.ad-canvas-root .node-content.is-busy, .ad-canvas-root .strategy-box.is-busy {
			opacity: 0.7;
			cursor: not-allowed;
		}

		.ad-canvas-root .node-content.is-busy input, .ad-canvas-root .strategy-box.is-busy input {
			cursor: not-allowed;
		}


		.ad-canvas-root .root-wrap {
			display: inline-flex;
			align-items: center;
			background: linear-gradient(135deg, #e0f2fe, #f9fafb);
			border-color: rgba(59, 130, 246, 0.45);
			box-shadow:
				0 8px 22px rgba(59, 130, 246, 0.18),
				0 0 0 1px rgba(255, 255, 255, 0.9);
			color: #1f2933;
			font-weight: 700;
		}

		.ad-canvas-root .root-wrap>input {
			flex: 1;
			min-width: 220px;
			color: #111827;
			font-weight: 700;
		}

		/* root 포함 모든 노드 버튼 간격 통일 (전략 노드와 동일하게 더 타이트하게) */
		.ad-canvas-root .node-content {
			display: inline-flex;
			align-items: center;
			gap: 4px;
		}

		.ad-canvas-root .root-wrap .root-rca-button, .ad-canvas-root .root-wrap .root-focus-button {
			/* 다른 노드의 inNode-button과 동일하게: 완전 원형 + 동일 간격 */
			align-self: center;
			margin-left: 0;
			padding: 0;
			width: 22px;
			height: 22px;
			border-radius: 50%;
			font-size: 13px;
		}

		.ad-canvas-root .node-content>input {
			height: 22px;
			min-width: 240px;
			padding: 2px 6px;
			background: transparent;
			font-size: 11px;
			border: 0;
			border-radius: 9999px;
			color: #111827;
		}

		.ad-canvas-root .node-content>input::placeholder {
			color: rgba(148, 163, 184, 0.9);
		}

		.ad-canvas-root .n-loading {
			animation: nLoading 0.85s infinite alternate ease;
		}

		@keyframes nLoading {
			from {
				box-shadow: 0 0 0 0 rgba(37, 99, 235, 0.14);
			}

			to {
				box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.25);
			}
		}

		.ad-canvas-root .strategy-box {
			display: inline-flex;
			align-items: center;
			background: linear-gradient(135deg, #111827, #020617);
			color: #f9fafb;
			height: 22px;
			line-height: 22px;
			padding-left: 10px;
			padding-right: 4px;
			margin-left: 6px;
			border-radius: 9999px;
			font-size: 11px;
			box-shadow:
				0 10px 22px rgba(15, 23, 42, 0.45),
				0 0 0 1px rgba(148, 163, 184, 0.4);
			gap: 4px;
			box-sizing: border-box;
		}

		.ad-canvas-root .strategy-box input {
			background: transparent;
			border: none;
			color: #f9fafb;
			font-size: 11px;
			min-width: 220px;
			width: auto;
		}

		.ad-canvas-root .strategy-box button {
			margin-left: 0;
			font-size: 10px;
		}

		.ad-canvas-root .inNode-button, .ad-canvas-root .inStrategy-button {
			display: flex;
			justify-content: center;
			align-items: center;
			border: none;
			cursor: pointer;
		}

		.ad-canvas-root .inNode-button {
			width: 22px;
			height: 22px;
			border-radius: 50%;
			background: #111827;
			color: #f9fafb;
			font-size: 13px;
			box-shadow: 0 4px 10px rgba(15, 23, 42, 0.4);
		}

		.ad-canvas-root .inStrategy-button {
			width: 18px;
			height: 18px;
			border-radius: 50%;
			background: #f9fafb;
			color: #111827;
			font-size: 10px;
			box-shadow: 0 3px 8px rgba(15, 23, 42, 0.35);
		}

		.ad-canvas-root .inNode-button:hover, .ad-canvas-root .inStrategy-button:hover, .ad-canvas-root .edge-insert-button:hover {
			background: #2642BA !important;
			color: #E2E8F5 !important;
			border-color: #E2E8F5 !important;
		}

		.ad-canvas-root .delete-btn:hover {
			background: #ff3b30 !important;
			color: #ffffff !important;
			border-color: #ffffff !important;
		}

		.ad-canvas-root .btn-disabled {
			opacity: .3;
			pointer-events: none;
		}

		.ad-canvas-root .edge-insert-button {
			position: absolute;
			transform: translate(-50%, -50%);
			width: 20px;
			height: 20px;
			font-size: 12px;
			border-radius: 50%;
			border: 1px solid #111827;
			background: #111827;
			color: #fff;
			pointer-events: auto;
			cursor: pointer;
			z-index: 5;
			display: flex;
			align-items: center;
			justify-content: center;
			box-shadow: 0 4px 10px rgba(15, 23, 42, 0.4);
		}

		/* 전략 카드 (캔버스에 크게 표시되는 카드 스타일)
		   폭은 일반 전략 카드와 동일하게 440px로 통일 */
		.ad-canvas-root .strategy-card {
			width: 440px;
			min-height: 260px;
			padding: 18px;
			background: rgba(255, 255, 255, 0.92);
			backdrop-filter: blur(6px);
			border-radius: 14px;
			border: 1px solid rgba(148, 163, 184, 0.6);
			box-shadow: 0 18px 40px rgba(15, 23, 42, 0.18);
			display: flex;
			flex-direction: column;
			gap: 8px;
			z-index: 4;
		}

		.ad-canvas-root .strategy-card.pending {
			opacity: 0.85;
		}

		.ad-canvas-root .strategy-title {
			font-size: 14px;
			font-weight: 700;
			color: #0f172a;
		}

		.ad-canvas-root .strategy-section {
			margin-top: 6px;
		}

		.ad-canvas-root .strategy-section .label {
			font-size: calc(11px * var(--zoom, 1));
			font-weight: 700;
			color: #374151;
		}

		.ad-canvas-root .strategy-section .value {
			font-size: calc(12px * var(--zoom, 1));
			color: #0f172a;
			margin-top: 4px;
		}

		.ad-canvas-root .strategy-spinner {
			width: 24px;
			height: 24px;
			border: 3px solid rgba(148, 163, 184, 0.35);
			border-top-color: #22c55e;
			border-radius: 50%;
			animation: spinLoading 0.8s linear infinite;
			margin-right: 8px;
		}

		/* 로딩 오버레이 (트리용) */

		.ad-canvas-root #loadingOverlay {
			position: absolute;
			/* ✅ fixed → absolute */
			inset: 0;
			/* top:0; left:0; right:0; bottom:0 */
			width: 100%;
			height: 100%;
			display: none;

			background:
				rgba(255, 255, 255, 0.55),
				radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.6));

			backdrop-filter: blur(18px);
			-webkit-backdrop-filter: blur(18px);

			z-index: 9999;

			display: flex;
			align-items: center;
			/* ✅ 세로 중앙 */
			justify-content: center;
			/* ✅ 가로 중앙 */
			flex-direction: column;
		}

		.ad-canvas-root #loadingOverlay .loading-panel {
			padding: 0;
			background: transparent;
			border: none;
			box-shadow: none;
		}

		.ad-canvas-root .loading-spinner {
			width: 26px;
			height: 26px;
			border-radius: 999px;
			border: 2px solid rgba(148, 163, 184, 0.35);
			border-top-color: #22c55e;
			animation: spinLoading 0.75s linear infinite;
			margin-bottom: 4px;
		}

		.ad-canvas-root .loading-main {
			font-size: 12px;
			font-weight: 600;
			color: rgba(15, 23, 42, 0.92);
		}

		.ad-canvas-root .loading-sub {
			font-size: 11px;
			color: rgba(100, 116, 139, 0.95);
		}

		@keyframes spinLoading {
			from {
				transform: rotate(0deg);
			}

			to {
				transform: rotate(360deg);
			}
		}

		.ad-canvas-root .label-row {
			display: flex;
			align-items: center;
			justify-content: space-between;
			gap: 6px;
		}

		/* 라벨 + 안내 문구 묶음 */
		.ad-canvas-root .label-group {
			display: flex;
			flex-direction: column;
			gap: 1px;
		}

		.ad-canvas-root .label-hint {
			font-size: 9px;
			color: #9ca3af;
			font-style: italic;
		}


		/* 분석 패널 폰트 줌 연동 — 원본 그대로 전체 UI 스케일(--zoom, 버튼·설정이
		   제어)을 따른다. 휠 뷰포트 줌(--board-zoom)에는 반응하지 않는다 */
		.ad-canvas-root #analysis-panel {
			font-size: calc(12px * var(--zoom));
		}

		.ad-canvas-root #analysis-panel .node-content>input, .ad-canvas-root #analysis-panel .strategy-box, .ad-canvas-root #analysis-panel .strategy-box input {
			font-size: calc(11px * var(--zoom));
		}

		.ad-canvas-root #analysis-panel .inNode-button, .ad-canvas-root #analysis-panel .inStrategy-button {
			font-size: calc(10px * var(--zoom));
		}

		/* ===== 공통 컨펌 다이얼로그 ===== */

		.ad-canvas-root #confirm-overlay {
			position: fixed;
			inset: 0;
			display: none;
			align-items: center;
			justify-content: center;
			z-index: 2700;
			font-size: 12px;
		}

		.ad-canvas-root #confirm-overlay.active {
			display: flex;
		}

		.ad-canvas-root #confirm-overlay .confirm-backdrop {
			position: absolute;
			inset: 0;
			background: rgba(15, 23, 42, 0.40);
			backdrop-filter: blur(6px);
			-webkit-backdrop-filter: blur(6px);
		}

		.ad-canvas-root #confirm-overlay .confirm-dialog {
			position: relative;
			max-width: 420px;
			width: calc(100% - 40px);
			padding: 14px 16px 12px;
			border-radius: 24px;
			background:
				radial-gradient(circle at 0 0, rgba(248, 250, 252, 1), rgba(241, 245, 249, 0.98));
			border: 1px solid rgba(148, 163, 184, 0.55);
			box-shadow:
				0 18px 40px rgba(15, 23, 42, 0.32),
				0 0 0 1px rgba(255, 255, 255, 0.95);
			display: flex;
			flex-direction: column;
			gap: 10px;
			color: rgba(15, 23, 42, 0.9);
		}

		.ad-canvas-root .confirm-header {
			display: flex;
			align-items: center;
			gap: 8px;
		}

		.ad-canvas-root .confirm-pill {
			width: 22px;
			height: 22px;
			min-width: 22px;
			min-height: 22px;
			flex: 0 0 22px;
			aspect-ratio: 1 / 1;
			border-radius: 999px;
			display: inline-flex;
			align-items: center;
			justify-content: center;
			font-size: 13px;
			font-weight: 600;
			background: linear-gradient(135deg, #f97316, #fb923c);
			color: #431407;
			box-shadow: 0 4px 10px rgba(248, 113, 22, 0.55);
		}

		.ad-canvas-root .confirm-title {
			font-size: 12px;
			font-weight: 600;
		}

		.ad-canvas-root .confirm-message {
			font-size: 11px;
			line-height: 1.5;
			margin-top: 2px;
			white-space: pre-line;
		}

		.ad-canvas-root .confirm-actions {
			display: flex;
			justify-content: flex-end;
			gap: 8px;
			margin-top: 6px;
		}

		.ad-canvas-root .confirm-actions button {
			border-radius: 999px;
			border: none;
			padding: 6px 12px;
			font-size: 11px;
			cursor: pointer;
			background: rgba(15, 23, 42, 0.04);
			color: rgba(15, 23, 42, 0.78);
			transition: background 0.14s ease, transform 0.12s ease, box-shadow 0.14s ease;
		}

		.ad-canvas-root .confirm-actions button:hover {
			background: rgba(15, 23, 42, 0.08);
			transform: translateY(-1px);
			box-shadow: 0 6px 14px rgba(15, 23, 42, 0.18);
		}

		.ad-canvas-root .confirm-actions .confirm-primary {
			background: linear-gradient(135deg, #22c55e, #4ade80);
			color: #022c22;
			box-shadow: 0 7px 18px rgba(34, 197, 94, 0.35);
		}

		.ad-canvas-root .confirm-actions .confirm-primary:hover {
			background: linear-gradient(135deg, #16a34a, #22c55e);
		}

		/* === 전략 카드 레이아웃 재정비 (아이디어 카드와 패딩 통일) === */
		/* ===== 문제해결 전략 카드 (아이디어 카드와 여백 통일 버전) ===== */

		/* 바깥 카드 박스: 아이디어 카드와 패딩/갭만 맞추고, 가로폭만 넓게 */
		/* width와 height는 renderCard에서 동적으로 설정됨 */
		.ad-canvas-root .card.strategy-card {
			padding: 10px;
			padding-bottom: 0;
			/* .card 기본 padding과 동일 */
			border-radius: 18px;
			/* 다른 카드와 동일하게 */
			gap: 6px;
			/* .card의 gap과 동일 */
			/* 전략 박스 안쪽 버튼 그림자가 잘리지 않도록 카드에서는 overflow를 허용 */
			overflow: visible;
		}

		/* 카드 본문 레이아웃: 위에서부터 세로로 쌓이게 */
		.ad-canvas-root .card.strategy-card .card-body {
			flex: 1;
			display: flex;
			flex-direction: column;
			gap: 6px;
			/* 카드 전체 gap과 맞춤 */
			padding-top: 3px;
			/* .card-body 기본값 그대로 */
		}

		/* 전략 카드 안쪽 컨테이너 */
		.ad-canvas-root .card.strategy-card .strategy-body {
			flex: 1;
			display: flex;
			flex-direction: column;
			gap: 6px;
			margin-top: 0;
		}

		/* === 상단 텍스트들 === */

		/* “전략” 섹션 아래에 표시되는 실제 전략 문장 */
		.ad-canvas-root .card.strategy-card .strategy-title-line {
			margin: 0;
			font-size: calc(11px * var(--zoom, 1));
			/* 아이디어 카드 텍스트 크기와 비슷하게 */
			font-weight: 700;
			/* 볼드 */
			color: #0f172a;
		}

		/* 원인 / 상위원인 한 줄 메타 라인 */
		.ad-canvas-root .card.strategy-card .strategy-meta {
			margin-top: 2px;
			font-size: calc(10px * var(--zoom, 1));
			color: #64748b;
			display: flex;
			flex-wrap: wrap;
			gap: 6px;
			align-items: center;
		}

		.ad-canvas-root .card.strategy-card .strategy-meta .meta-label {
			font-weight: 600;
		}

		.ad-canvas-root .card.strategy-card .strategy-meta .meta-sep {
			opacity: 0.6;
		}

		/* 공통 섹션 여백 */
		.ad-canvas-root .card.strategy-card .strategy-section {
			margin-top: 6px;
		}

		.ad-canvas-root .card.strategy-card .strategy-section:first-child {
			margin-top: 0;
		}

		/* 섹션 라벨/값 스타일 (“전략”, “모순 쌍”, “자연의 방법” 등) */
		.ad-canvas-root .card.strategy-card .strategy-section .label {
			font-size: calc(11px * var(--zoom, 1));
			font-weight: 700;
			color: #374151;
			margin: 0;
		}

		.ad-canvas-root .card.strategy-card .strategy-section .value {
			margin-top: 3px;
			font-size: calc(11px * var(--zoom, 1));
			color: #0f172a;
		}

		/* === 모순 드롭다운 === */

		.ad-canvas-root .card.strategy-card .contradiction-row {
			display: flex;
			align-items: center;
			gap: 6px;
			margin-top: 4px;
		}

		.ad-canvas-root .card.strategy-card .contradiction-row:first-child {
			margin-top: 0;
		}

		.ad-canvas-root .card.strategy-card .contr-label {
			flex: 0 0 auto;
			font-size: calc(10px * var(--zoom, 1));
			color: #6b7280;
		}

		.ad-canvas-root .card.strategy-card .contr-select {
			flex: 1;
			border-radius: 999px;
			border: 1px solid rgba(148, 163, 184, 0.8);
			padding: 3px 8px;
			font-size: calc(11px * var(--zoom, 1));
			background: rgba(248, 250, 252, 0.96);
			color: #0f172a;
		}

		/* === 자연의 방법 === */

		/* “자연의 방법” 라벨 + 토글 버튼 한 줄 */
		.ad-canvas-root .card.strategy-card .label-row {
			display: flex;
			align-items: center;
			justify-content: space-between;
			gap: 6px;
		}

		/* 대표 한 줄 */
		.ad-canvas-root .card.strategy-card .method-summary-row {
			display: flex;
			align-items: center;
			gap: 6px;
			margin-bottom: 2px;
		}

		/* 전체 리스트 (펼친 상태) */
		.ad-canvas-root .card.strategy-card .method-list {
			list-style: none;
			margin: 4px 0 2px;
			padding: 0;
			display: flex;
			flex-direction: column;
			gap: 4px;
			/* 삭제 버튼 그림자가 리스트 밖으로 자연스럽게 보이도록 */
			overflow: visible;
		}

		.ad-canvas-root .card.strategy-card .method-item {
			display: flex;
			align-items: center;
			gap: 6px;
			/* 오른쪽에 약간의 여백을 줘서 버튼 그림자가 카드 패딩에 가려지지 않도록 */
			padding-right: 4px;
			box-sizing: border-box;
		}

		/* 개별 자연의 방법 편집용 input */
		.ad-canvas-root .card.strategy-card .method-input {
			flex: 1;
			border-radius: 999px;
			border: 1px solid rgba(148, 163, 184, 0.8);
			padding: 3px 8px;
			font-size: calc(11px * var(--zoom, 1));
			background: rgba(248, 250, 252, 0.96);
			color: #0f172a;
		}

		/* 추가 버튼은 기존 small-btn 스타일을 그대로 쓰되, 위에 약간만 띄움 */
		.ad-canvas-root .card.strategy-card .method-add-btn {
			margin-top: 4px;
		}

		/* 자연의 방법 펼치기 토글 버튼 (동그란 ↓ / ↑ 아이콘) */
		.ad-canvas-root .card.strategy-card .method-toggle-btn {
			border: none;
			border-radius: 999px;
			width: 20px;
			height: 20px;
			font-size: calc(12px * var(--zoom, 1));
			line-height: 1;
			background: rgba(15, 23, 42, 0.05);
			color: rgba(15, 23, 42, 0.7);
			cursor: pointer;
			display: flex;
			align-items: center;
			justify-content: center;
			transition:
				background 0.12s ease,
				transform 0.12s ease,
				box-shadow 0.12s ease;
		}

		.ad-canvas-root .card.strategy-card .method-toggle-btn:hover {
			background: rgba(15, 23, 42, 0.12);
			box-shadow: 0 2px 6px rgba(15, 23, 42, 0.18);
			transform: translateY(-0.5px);
		}

		.ad-canvas-root .card.strategy-card .method-toggle-btn.expanded {
			background: rgba(16, 185, 129, 0.12);
			color: #047857;
		}

		/* === 전략 카드 전용 로딩 상태 === */

		.ad-canvas-root .card.strategy-card .strategy-loading {
			display: flex;
			align-items: center;
			gap: 10px;
			padding: 6px 2px 2px;
		}

		.ad-canvas-root .card.strategy-card .strategy-loading-text-main {
			font-size: calc(12px * var(--zoom, 1));
			font-weight: 600;
			color: #0f172a;
		}

		.ad-canvas-root .card.strategy-card .strategy-loading-text-sub {
			margin-top: 2px;
			font-size: calc(11px * var(--zoom, 1));
			color: #64748b;
		}

		.ad-canvas-root .card.strategy-card .strategy-spinner {
			width: 22px;
			height: 22px;
			border-radius: 999px;
			border: 3px solid rgba(148, 163, 184, 0.35);
			border-top-color: #22c55e;
			animation: spinLoading 0.8s linear infinite;
		}

		/* 논문 카드 레이아웃 (Canvas 내 '논문 카드' 전용) */
		.ad-canvas-root .card .paper-card-body {
			display: flex;
			flex-direction: column;
			gap: 10px;
			overflow-y: auto;
			padding-top: 4px;
		}

		/* 섹션 구분: 전략 카드의 그리드/구분선 톤과 맞춤 */
		.ad-canvas-root .paper-card-section {
			padding-bottom: 10px;
			border-bottom: 1px solid rgba(226, 232, 240, 0.85);
		}

		.ad-canvas-root .paper-card-section:last-of-type {
			border-bottom: none;
			padding-bottom: 0;
		}

		/* 타이틀 + 메타 */
		.ad-canvas-root .paper-card-title {
			font-size: calc(13px * var(--zoom, 1));
			font-weight: 750;
			letter-spacing: -0.01em;
			color: rgba(15, 23, 42, 0.92);
			line-height: 1.35;
			margin: 0 0 6px 0;
			display: -webkit-box;
			-webkit-box-orient: vertical;
			-webkit-line-clamp: 2;
			overflow: hidden;
		}

		.ad-canvas-root .paper-card-title-link {
			cursor: pointer;
		}

		.ad-canvas-root .paper-card-title-link:hover {
			text-decoration: underline;
			text-decoration-color: rgba(34, 197, 94, 0.55);
			text-underline-offset: 2px;
		}

		.ad-canvas-root .paper-card-meta {
			font-size: calc(10px * var(--zoom, 1));
			color: rgba(100, 116, 139, 0.78);
			line-height: 1.35;
			margin: 0;
			display: -webkit-box;
			-webkit-box-orient: vertical;
			-webkit-line-clamp: 2;
			overflow: hidden;
		}

		/* 라벨은 기존 카드의 캡션 톤 유지 */
		.ad-canvas-root .paper-card-label {
			font-size: calc(10px * var(--zoom, 1));
			font-weight: 650;
			color: rgba(100, 116, 139, 0.82);
			text-transform: uppercase;
			letter-spacing: 0.08em;
			margin-bottom: 6px;
		}

		/* 초록: 읽기 편한 줄간격 + 긴 텍스트 대비 */
		.ad-canvas-root .paper-card-abstract {
			font-size: calc(11px * var(--zoom, 1));
			line-height: 1.55;
			color: rgba(15, 23, 42, 0.86);
			margin: 0;
			position: relative;
		}

		.ad-canvas-root .paper-abstract-toggle {
			margin-top: 6px;
			border: none;
			background: rgba(34, 197, 94, 0.10);
			color: rgba(2, 44, 34, 0.95);
			font-size: calc(10px * var(--zoom, 1));
			font-weight: 650;
			letter-spacing: 0.06em;
			text-transform: uppercase;
			padding: 4px 10px;
			border-radius: 999px;
			cursor: pointer;
			box-shadow: 0 6px 16px rgba(34, 197, 94, 0.18);
			align-self: flex-start;
			transition: transform 0.12s ease, box-shadow 0.12s ease, filter 0.12s ease;
		}

		.ad-canvas-root .paper-abstract-toggle:hover {
			transform: translateY(-1px);
			box-shadow: 0 10px 22px rgba(34, 197, 94, 0.22);
			filter: saturate(1.05);
		}

		/* 인사이트: 전략 카드의 '성공/추천' 톤으로 더 정돈된 인포 박스 */
		.ad-canvas-root .paper-card-insight {
			font-size: calc(11px * var(--zoom, 1));
			line-height: 1.55;
			color: rgba(4, 120, 87, 0.95);
			padding: 10px 12px;
			background:
				linear-gradient(135deg, rgba(16, 185, 129, 0.12), rgba(16, 185, 129, 0.06));
			border-radius: 12px;
			border: 1px solid rgba(16, 185, 129, 0.22);
			box-shadow:
				inset 0 0 0 1px rgba(255, 255, 255, 0.6);
			margin: 0;
		}

		/* 이미지 토글: 카드 버튼 문법(soft pill + 구분선)과 통일 */
		.ad-canvas-root .paper-card-toggle {
			font-size: calc(10px * var(--zoom, 1));
			font-weight: 650;
			letter-spacing: 0.06em;
			text-transform: uppercase;
			color: rgba(15, 23, 42, 0.72);
			background:
				linear-gradient(135deg, rgba(248, 250, 252, 0.95), rgba(241, 245, 249, 0.85));
			border: 1px solid rgba(148, 163, 184, 0.35);
			border-radius: 999px;
			padding: 5px 10px;
			cursor: pointer;
			display: flex;
			align-items: center;
			gap: 6px;
			width: 100%;
			transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.12s ease;
		}

		.ad-canvas-root .paper-card-toggle:hover {
			transform: translateY(-1px);
			box-shadow: 0 10px 24px rgba(15, 23, 42, 0.10);
			background:
				linear-gradient(135deg, rgba(255, 255, 255, 0.95), rgba(241, 245, 249, 0.9));
		}

		.ad-canvas-root .toggle-icon {
			font-size: 10px;
			margin-left: auto;
			opacity: 0.75;
		}

		/* 이미지 그리드: 썸네일 가독성 강화 (카드 크기에 따라 자동 적응) */
		.ad-canvas-root .paper-card-images {
			display: grid;
			grid-template-columns: repeat(4, 1fr);
			gap: 8px;
			margin-top: 10px;
			transition: max-height 0.25s ease, opacity 0.25s ease;
		}

		.ad-canvas-root .paper-card-images.collapsed {
			max-height: 0;
			margin: 0;
			opacity: 0;
			overflow: hidden;
		}

		.ad-canvas-root .paper-card-image {
			width: 100%;
			aspect-ratio: 1;
			object-fit: cover;
			border-radius: 12px;
			border: 1px solid rgba(148, 163, 184, 0.22);
			background: rgba(241, 245, 249, 0.55);
			cursor: pointer;
			box-shadow:
				0 8px 18px rgba(15, 23, 42, 0.08),
				inset 0 0 0 1px rgba(255, 255, 255, 0.55);
			transition: transform 0.18s ease, box-shadow 0.18s ease, filter 0.18s ease;
			user-select: none;
			-webkit-user-select: none;
			-moz-user-select: none;
			-ms-user-select: none;
			pointer-events: auto;
		}

		.ad-canvas-root .paper-card-image:hover {
			transform: translateY(-2px) scale(1.03);
			box-shadow:
				0 14px 30px rgba(15, 23, 42, 0.14),
				inset 0 0 0 1px rgba(255, 255, 255, 0.6);
			filter: saturate(1.04);
		}

		/* ===== 캔버스 불러오기 모달 ===== */
		.ad-canvas-root #canvas-load-modal {
			position: fixed;
			inset: 0;
			z-index: 2600;
			display: none;
			align-items: center;
			justify-content: center;
			font-size: 12px;
		}

		.ad-canvas-root #canvas-load-modal.active {
			display: flex;
		}

		.ad-canvas-root #canvas-load-modal.hidden {
			display: none;
		}


		.ad-canvas-root #canvas-load-modal .settings-backdrop {
			position: absolute;
			inset: 0;
			background: rgba(15, 23, 42, 0.52);
			backdrop-filter: blur(10px);
			-webkit-backdrop-filter: blur(10px);
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-dialog {
			position: relative;
			width: min(980px, 92vw);
			max-height: calc(86 * var(--ad-vh));
			border-radius: 26px;
			background: radial-gradient(circle at 0 0, rgba(248, 250, 252, 1), rgba(241, 245, 249, 0.98));
			border: 1px solid rgba(148, 163, 184, 0.55);
			box-shadow:
				0 22px 60px rgba(15, 23, 42, 0.35),
				0 0 0 1px rgba(255, 255, 255, 0.95);
			display: flex;
			flex-direction: column;
			overflow: hidden;
		}

		.ad-canvas-root #canvas-load-modal .settings-body {
			padding: 14px 16px;
		}

		.ad-canvas-root #canvas-load-list {
			display: grid !important;
			grid-template-columns: repeat(2, minmax(0, 1fr));
			gap: 12px !important;
		}

		@media (max-width: 820px) {
			.ad-canvas-root #canvas-load-list {
				grid-template-columns: 1fr;
			}
		}

		.ad-canvas-root .canvas-load-toolbar {
			display: flex;
			flex-direction: column;
			gap: 4px;
			margin-bottom: 12px;
		}

		.ad-canvas-root .canvas-load-search-label {
			font-size: 11px;
			font-weight: 600;
			color: rgba(71, 85, 105, 0.95);
		}

		.ad-canvas-root #canvas-load-search.canvas-load-search-input, .ad-canvas-root .canvas-load-search-input {
			width: 100%;
			box-sizing: border-box;
			padding: 6px 0 7px;
			border: none;
			border-bottom: 1px solid rgba(148, 163, 184, 0.65);
			border-radius: 0;
			font-size: 12px;
			font-weight: 600;
			color: #0f172a;
			background: transparent;
			outline: none;
			transition: border-color 0.15s ease;
		}

		.ad-canvas-root #canvas-load-search.canvas-load-search-input:focus, .ad-canvas-root .canvas-load-search-input:focus {
			border-bottom-color: rgba(99, 102, 241, 0.72);
			box-shadow: none;
		}

		.ad-canvas-root .canvas-load-no-match-banner {
			display: none;
			margin: 0 0 12px;
			padding: 10px 12px;
			border-radius: 12px;
			font-size: 12px;
			font-weight: 600;
			color: rgba(100, 116, 139, 0.95);
			background: rgba(254, 242, 242, 0.75);
			border: 1px solid rgba(252, 165, 165, 0.45);
		}

		.ad-canvas-root .canvas-load-no-match-banner.is-visible {
			display: block;
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-item-title .canvas-load-title-hit, .ad-canvas-root #canvas-load-modal mark.canvas-load-title-hit {
			background: #fef08a;
			color: #0f172a;
			padding: 0 2px;
			border-radius: 3px;
			font-weight: 700;
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-item {
			position: relative;
			display: flex;
			flex-direction: column;
			gap: 8px;
			padding: 14px;
			border: 1px solid rgba(148, 163, 184, 0.22);
			border-radius: 16px;
			background: rgba(255, 255, 255, 0.82);
			box-shadow:
				0 10px 26px rgba(15, 23, 42, 0.10),
				inset 0 0 0 1px rgba(255, 255, 255, 0.55);
			cursor: pointer;
			transition: transform 0.14s ease, box-shadow 0.14s ease, border-color 0.14s ease, background 0.14s ease;
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-item:hover {
			transform: translateY(-1px);
			background: rgba(255, 255, 255, 0.92);
			border-color: rgba(99, 102, 241, 0.28);
			box-shadow:
				0 14px 34px rgba(15, 23, 42, 0.14),
				inset 0 0 0 1px rgba(255, 255, 255, 0.6);
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-item.selected {
			border-color: rgba(99, 102, 241, 0.55);
			background: rgba(238, 242, 255, 0.85);
			box-shadow:
				0 18px 44px rgba(15, 23, 42, 0.16),
				inset 0 0 0 1px rgba(255, 255, 255, 0.65);
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-item-title {
			font-weight: 700;
			color: rgba(15, 23, 42, 0.9);
			letter-spacing: -0.01em;
			margin-bottom: 0;
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-item-time {
			font-size: 11px;
			color: rgba(100, 116, 139, 0.75);
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-item-actions {
			display: flex;
			justify-content: flex-end;
			gap: 8px;
			margin-top: 6px;
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-item-action-btn {
			border: 1px solid rgba(148, 163, 184, 0.5);
			background: rgba(255, 255, 255, 0.92);
			color: #334155;
			border-radius: 9px;
			font-size: 11px;
			font-weight: 600;
			padding: 5px 9px;
			cursor: pointer;
			transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-item-action-btn:hover:not(:disabled) {
			background: rgba(241, 245, 249, 0.95);
			border-color: rgba(100, 116, 139, 0.6);
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-item-action-btn:disabled {
			opacity: 0.65;
			cursor: not-allowed;
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-item-action-btn.danger {
			color: #b91c1c;
			border-color: rgba(248, 113, 113, 0.55);
			background: rgba(254, 242, 242, 0.9);
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-item-action-btn.danger:hover:not(:disabled) {
			background: rgba(254, 226, 226, 0.95);
			border-color: rgba(239, 68, 68, 0.65);
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-title-edit-input {
			width: 100%;
			box-sizing: border-box;
			padding: 8px 10px;
			border: 1px solid rgba(99, 102, 241, 0.65);
			border-radius: 10px;
			font-size: 13px;
			font-weight: 700;
			color: #0f172a;
			background: rgba(255, 255, 255, 0.98);
			outline: none;
			box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.12);
		}

		.ad-canvas-root #canvas-load-modal.canvas-load-editing .canvas-load-toolbar, .ad-canvas-root #canvas-load-modal.canvas-load-editing #canvas-load-no-match-banner, .ad-canvas-root #canvas-load-modal.canvas-load-editing .settings-footer, .ad-canvas-root #canvas-load-modal.canvas-load-editing #canvas-load-list .canvas-load-item:not(.is-editing-target) {
			opacity: 0.35;
			filter: grayscale(0.25);
			pointer-events: none;
		}

		.ad-canvas-root #canvas-load-modal.canvas-load-editing #canvas-load-list .canvas-load-item.is-editing-target {
			opacity: 1;
			filter: none;
			pointer-events: auto;
			border-color: rgba(99, 102, 241, 0.75);
			box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.18);
		}

		.ad-canvas-root #canvas-load-modal.canvas-load-editing #canvas-load-list .canvas-load-item.is-editing-target .canvas-load-item-time {
			opacity: 0.32;
			filter: blur(0.8px);
			user-select: none;
			pointer-events: none;
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-item {
			padding: 16px;
			border: 2px solid transparent;
			border-radius: 8px;
			background: #f8fafc;
			cursor: pointer;
			transition: all 0.2s;
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-item:hover {
			background: #f1f5f9;
			border-color: #cbd5e1;
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-item.selected {
			border-color: #3b82f6;
			background: #eff6ff;
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-item-title {
			font-weight: 600;
			color: #1e293b;
			margin-bottom: 4px;
		}

		.ad-canvas-root #canvas-load-modal .canvas-load-item-time {
			font-size: 11px;
			color: #64748b;
		}

		/* ===== 환경설정 모달 ===== */
		.ad-canvas-root #settings-overlay {
			position: fixed;
			inset: 0;
			z-index: 2600;
			display: none;
			align-items: center;
			justify-content: center;
			font-size: 12px;
		}

		.ad-canvas-root #settings-overlay.active {
			display: flex;
		}

		.ad-canvas-root #settings-overlay.hidden {
			display: none;
		}

		.ad-canvas-root #settings-overlay .settings-backdrop {
			position: absolute;
			inset: 0;
			background: rgba(15, 23, 42, 0.45);
			backdrop-filter: blur(8px);
			-webkit-backdrop-filter: blur(8px);
		}

		.ad-canvas-root #settings-overlay .settings-dialog {
			position: relative;
			width: min(1200px, 90vw);
			height: calc(90 * var(--ad-vh));
			border-radius: 26px;
			background: radial-gradient(circle at 0 0, rgba(248, 250, 252, 1), rgba(241, 245, 249, 0.98));
			border: 1px solid rgba(148, 163, 184, 0.55);
			box-shadow:
				0 22px 60px rgba(15, 23, 42, 0.35),
				0 0 0 1px rgba(255, 255, 255, 0.95);
			display: flex;
			flex-direction: column;
			overflow: hidden;
		}

		.ad-canvas-root .settings-header {
			display: flex;
			align-items: center;
			justify-content: space-between;
			padding: 12px 16px;
			border-bottom: 1px solid rgba(226, 232, 240, 0.95);
		}

		.ad-canvas-root .settings-title {
			font-size: 14px;
			font-weight: 700;
			color: rgba(15, 23, 42, 0.9);
			letter-spacing: -0.01em;
		}

		.ad-canvas-root #settings-close-btn {
			border: none;
			background: transparent;
			font-size: 22px;
			cursor: pointer;
			padding: 2px 6px;
			color: rgba(15, 23, 42, 0.55);
			border-radius: 999px;
		}

		.ad-canvas-root #settings-close-btn:hover {
			color: rgba(15, 23, 42, 0.92);
			background: rgba(148, 163, 184, 0.16);
		}

		/* 캔버스 불러오기 모달의 X 버튼도 동일 톤으로 */
		.ad-canvas-root #canvas-load-close-btn {
			border: none;
			background: transparent;
			font-size: 22px;
			cursor: pointer;
			padding: 2px 6px;
			color: rgba(15, 23, 42, 0.55);
			border-radius: 999px;
			line-height: 1;
			display: inline-flex;
			align-items: center;
			justify-content: center;
		}

		.ad-canvas-root #canvas-load-close-btn:hover {
			color: rgba(15, 23, 42, 0.92);
			background: rgba(148, 163, 184, 0.16);
		}

		.ad-canvas-root .settings-body {
			flex: 1;
			padding: 14px 16px;
			overflow: auto;
			display: flex;
			flex-direction: column;
			gap: 14px;
		}

		.ad-canvas-root .settings-section {
			background: rgba(255, 255, 255, 0.7);
			border: 1px solid rgba(148, 163, 184, 0.35);
			border-radius: 22px;
			padding: 12px 14px;
			box-shadow: 0 10px 24px rgba(15, 23, 42, 0.08);
			display: flex;
			flex-direction: column;
			gap: 10px;
		}

		.ad-canvas-root .settings-section-title {
			font-size: 12px;
			font-weight: 700;
			color: rgba(15, 23, 42, 0.85);
		}

		.ad-canvas-root .settings-row {
			display: flex;
			align-items: center;
			gap: 10px;
			flex-wrap: wrap;
		}

		.ad-canvas-root .settings-label {
			width: 180px;
			min-width: 160px;
			color: rgba(15, 23, 42, 0.78);
			font-weight: 600;
		}

		.ad-canvas-root .settings-control {
			display: flex;
			align-items: center;
			gap: 10px;
			flex-wrap: wrap;
			flex: 1;
		}

		.ad-canvas-root .settings-color-text {
			width: 120px;
			border-radius: 999px;
			border: 1px solid rgba(148, 163, 184, 0.6);
			padding: 6px 10px;
			font-size: 11px;
			background: rgba(248, 250, 252, 0.96);
			color: rgba(15, 23, 42, 0.9);
			outline: none;
		}

		.ad-canvas-root .settings-color-text:focus {
			outline: 2px solid rgba(37, 99, 235, 0.35);
		}

		.ad-canvas-root .settings-hint {
			font-size: 10px;
			color: rgba(100, 116, 139, 0.95);
		}

		.ad-canvas-root .settings-toggle {
			display: flex;
			align-items: center;
			gap: 10px;
			color: rgba(15, 23, 42, 0.78);
		}

		.ad-canvas-root .settings-toggle input {
			transform: translateY(0.5px);
		}

		.ad-canvas-root .settings-footer {
			display: flex;
			align-items: center;
			gap: 8px;
			padding: 10px 14px;
			border-top: 1px solid rgba(226, 232, 240, 0.95);
			background: rgba(255, 255, 255, 0.82);
			backdrop-filter: blur(10px);
			-webkit-backdrop-filter: blur(10px);
		}

		.ad-canvas-root .settings-footer button {
			border-radius: 999px;
			border: none;
			padding: 7px 12px;
			font-size: 11px;
			cursor: pointer;
			background: rgba(15, 23, 42, 0.06);
			color: rgba(15, 23, 42, 0.78);
			transition: background 0.14s ease, transform 0.12s ease, box-shadow 0.14s ease;
		}

		.ad-canvas-root .settings-footer button:hover {
			background: rgba(15, 23, 42, 0.12);
			transform: translateY(-1px);
			box-shadow: 0 6px 14px rgba(15, 23, 42, 0.16);
		}

		.ad-canvas-root .settings-footer button.primary {
			background: linear-gradient(135deg, #22c55e, #4ade80);
			color: #022c22;
			box-shadow: 0 7px 18px rgba(34, 197, 94, 0.35);
		}

		.ad-canvas-root .settings-footer button.primary:hover {
			background: linear-gradient(135deg, #16a34a, #22c55e);
		}

		/* ===== 오른쪽 논문/지식 탐색 패널 ===== */
		.ad-canvas-root #papers-panel {
			position: fixed;
			overflow: hidden;
			right: var(--panel-gap);
			top: var(--panel-gap);
			width: var(--papers-panel-width);
			height: calc(calc(100 * var(--ad-vh)) - (var(--panel-gap) * 2));
			display: flex;
			flex-direction: column;
			background: radial-gradient(circle at 0 0, rgba(248, 250, 252, 0.98), rgba(241, 245, 249, 0.96));
			border: 1px solid rgba(148, 163, 184, 0.35);
			border-radius: 16px;
			box-shadow:
				0 18px 54px rgba(15, 23, 42, 0.18),
				0 0 0 1px rgba(255, 255, 255, 0.8);
			backdrop-filter: blur(10px);
			-webkit-backdrop-filter: blur(10px);
			z-index: 1200;
			transform: translateX(0);
			transition: transform 0.2s ease-out, opacity 0.2s ease-out;
		}

		.ad-canvas-root #papers-panel.hidden {
			transform: translateX(calc(100% + var(--panel-gap)));
			opacity: 0;
			pointer-events: none;
		}

		.ad-canvas-root .papers-header {
			display: flex;
			align-items: center;
			justify-content: space-between;
			padding: calc(8px * var(--zoom, 1)) calc(12px * var(--zoom, 1));
			border-bottom: 1px solid rgba(226, 232, 240, 0.9);
			font-size: 11px;
			font-weight: 600;
			color: rgba(15, 23, 42, 0.8);
			background: rgba(255, 255, 255, 0.65);
			backdrop-filter: blur(8px);
			-webkit-backdrop-filter: blur(8px);
			border-radius: 16px 16px 0 0;
		}

		.ad-canvas-root .papers-header-left {
			display: flex;
			align-items: center;
			gap: calc(10px * var(--zoom, 1));
		}

		.ad-canvas-root .papers-header-title {
			white-space: nowrap;
			font-size: 11px;
		}

		.ad-canvas-root .papers-header-select {
			display: flex;
			align-items: center;
			gap: calc(10px * var(--zoom, 1));
			font-size: 11px;
		}

		.ad-canvas-root .papers-header-select .papers-select-btn {
			padding: 0;
		}

		.ad-canvas-root #papers-close-btn {
			border: none;
			background: rgba(255, 255, 255, 0.75);
			border: 1px solid rgba(148, 163, 184, 0.25);
			width: calc(28px * var(--zoom, 1));
			height: calc(28px * var(--zoom, 1));
			border-radius: 999px;
			font-size: calc(18px * var(--zoom, 1));
			cursor: pointer;
			padding: 0;
			color: rgba(15, 23, 42, 0.5);
			display: inline-flex;
			align-items: center;
			justify-content: center;
			box-shadow: 0 10px 22px rgba(15, 23, 42, 0.10);
			transition: transform 0.12s ease, background 0.12s ease, color 0.12s ease;
		}

		.ad-canvas-root #papers-close-btn:hover {
			color: rgba(15, 23, 42, 0.9);
			background: rgba(255, 255, 255, 0.92);
			transform: translateY(-1px);
		}

		.ad-canvas-root .papers-body {
			flex: 1;
			position: relative;
			padding: calc(8px * var(--zoom, 1));
			background: #f9fafb;
			overflow: hidden;
		}

		.ad-canvas-root .papers-hint {
			position: absolute;
			/* 밴드 버전: 패널 가로폭을 거의 다 차지 */
			left: calc(10px * var(--zoom, 1));
			right: calc(10px * var(--zoom, 1));
			top: 50%;
			transform: translateY(-50%);
			width: auto;
			max-width: none;
			padding: calc(12px * var(--zoom, 1)) calc(18px * var(--zoom, 1));
			font-size: calc(13px * var(--zoom, 1));
			line-height: 1.6;
			color: rgba(15, 23, 42, 0.85);
			user-select: none;
			text-align: center;
			/* 논문 카드 애니메이션(#papersQueue)보다 앞에 오도록 */
			z-index: 20;
			pointer-events: none;
			border-radius: 0;
			/* 요청: 테두리 없음 + 배경 투명도 50% */
			background: rgba(255, 255, 255, 0.22);
			box-shadow:
				0 calc(18px * var(--zoom, 1)) calc(48px * var(--zoom, 1)) rgba(15, 23, 42, 0.10);
			backdrop-filter: blur(12px);
			-webkit-backdrop-filter: blur(12px);
		}

		.ad-canvas-root .papers-hint .brand {
			font-weight: 800;
			/* 예전 디자인 느낌: M I M I C U S    L L M 처럼 넓은 자간/단어 간격 */
			letter-spacing: 0.42em;
			word-spacing: 0.9em;
			color: rgba(15, 23, 42, 0.95);
			display: block;
			margin-bottom: calc(12px * var(--zoom, 1));
			font-size: calc(14px * var(--zoom, 1));
			text-transform: uppercase;
		}

		.ad-canvas-root .papers-hint .sub-note {
			font-size: calc(11px * var(--zoom, 1));
			color: rgba(15, 23, 42, 0.65);
			font-weight: 400;
		}

		.ad-canvas-root .papers-hint .smallNote {
			font-size: calc(10px * var(--zoom, 1));
			color: rgba(15, 23, 42, 0.55);
			font-weight: 400;
			font-style: italic;
		}

		.ad-canvas-root #papersQueue {
			position: absolute;
			inset: 0;
			pointer-events: none;
			overflow: hidden;
			z-index: 1;
		}

		.ad-canvas-root #bioecoQueue {
			position: absolute;
			inset: 0;
			pointer-events: none;
			overflow: hidden;
			z-index: 1;
		}

		.ad-canvas-root #scientificEffectsQueue {
			position: absolute;
			inset: 0;
			pointer-events: none;
			overflow: hidden;
			z-index: 1;
		}

		.ad-canvas-root #knowledge-loading-bioeco.bioeco-queue-active .bioeco-loading {
			display: none;
		}

		.ad-canvas-root #knowledge-loading-scientific-effects.bioeco-queue-active .bioeco-loading {
			display: none;
		}

		.ad-canvas-root .paper-snack {
			position: absolute;
			left: 50%;
			/* 스택 간격이 항상 동일해 보이도록: scale 애니메이션 제거 (opacity만) */
			transform: translate(-50%, 0);
			width: calc(100% - calc(16px * var(--zoom, 1)));
			/* 최종 결과 박스와 동일한 폭 */
			padding: calc(8px * var(--zoom, 1)) calc(10px * var(--zoom, 1));
			border-radius: calc(12px * var(--zoom, 1));
			border: 1px solid rgba(148, 163, 184, 0.2);
			background:
				radial-gradient(circle at 0 0, rgba(255, 255, 255, 0.6), rgba(248, 250, 252, 0.55)),
				linear-gradient(135deg, rgba(255, 255, 255, 0.55), rgba(248, 250, 252, 0.55));
			box-shadow: 0 calc(6px * var(--zoom, 1)) calc(20px * var(--zoom, 1)) rgba(15, 23, 42, 0.06), 0 0 0 1px rgba(255, 255, 255, 0.5);
			backdrop-filter: blur(6px);
			-webkit-backdrop-filter: blur(6px);
			opacity: 0;
			filter: blur(1px);
			transition: opacity 260ms ease, filter 260ms ease;
			height: calc(62px * var(--zoom, 1));
			overflow: hidden;
			will-change: opacity, filter;
		}

		.ad-canvas-root .paper-snack.show {
			opacity: 0.98;
			filter: blur(0);
			transform: translate(-50%, 0);
		}

		.ad-canvas-root .paper-snack.leave {
			opacity: 0;
			filter: blur(1px);
			transform: translate(-50%, 0);
		}

		.ad-canvas-root .paper-snack::before {
			content: '';
			position: absolute;
			inset: 0;
			left: -120%;
			background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.75), transparent);
			transform: skewX(-18deg);
			opacity: 0.55;
			animation: paperHighlight 1.1s ease forwards;
		}

		@keyframes paperHighlight {
			0% {
				left: -120%;
			}

			100% {
				left: 120%;
			}
		}

		.ad-canvas-root .paper-snack .paper-title {
			font-size: calc(10px * var(--zoom, 1));
			font-weight: 600;
			color: rgba(15, 23, 42, 0.6);
			margin-bottom: calc(4px * var(--zoom, 1));
			line-height: 1.3;
			overflow: hidden;
			text-overflow: ellipsis;
			display: -webkit-box;
			-webkit-line-clamp: 2;
			line-clamp: 2;
			-webkit-box-orient: vertical;
		}

		.ad-canvas-root .paper-snack .paper-meta {
			font-size: calc(9px * var(--zoom, 1));
			color: rgba(100, 116, 139, 0.5);
			white-space: nowrap;
			overflow: hidden;
			text-overflow: ellipsis;
		}

		.ad-canvas-root.papers-open #canvas {
			margin-right: var(--papers-panel-width);
			width: calc(100vw - var(--papers-panel-width));
		}

		.ad-canvas-root.analysis-open.papers-open #canvas {
			margin-left: var(--analysis-panel-width);
			margin-right: var(--papers-panel-width);
			width: calc(100vw - (var(--analysis-panel-width) + var(--papers-panel-width)));
		}

		/* ===== 오른쪽 아이디어 고도화 채팅 패널 ===== */
		.ad-canvas-root #idea-refinement-panel {
			position: fixed;
			overflow: hidden;
			right: var(--panel-gap);
			top: var(--panel-gap);
			width: var(--refinement-panel-width);
			height: calc(calc(100 * var(--ad-vh)) - (var(--panel-gap) * 2));
			display: flex;
			flex-direction: column;
			background: radial-gradient(circle at 0 0, rgba(248, 250, 252, 0.98), rgba(241, 245, 249, 0.96));
			border: 1px solid rgba(148, 163, 184, 0.35);
			border-radius: 16px;
			box-shadow:
				0 18px 54px rgba(15, 23, 42, 0.18),
				0 0 0 1px rgba(255, 255, 255, 0.85);
			backdrop-filter: blur(10px);
			-webkit-backdrop-filter: blur(10px);
			z-index: 1200;
			transform: translateX(0);
			transition: transform 0.22s ease-out, opacity 0.22s ease-out;
		}

		.ad-canvas-root #idea-refinement-panel::before {
			content: '';
			position: absolute;
			inset: 0;
			background: radial-gradient(circle at 30% 10%, rgba(99, 102, 241, 0.10), transparent 55%),
				radial-gradient(circle at 70% 80%, rgba(16, 185, 129, 0.08), transparent 50%);
			pointer-events: none;
		}

		.ad-canvas-root #idea-refinement-panel.hidden {
			transform: translateX(calc(100% + var(--panel-gap)));
			opacity: 0;
			pointer-events: none;
		}

		.ad-canvas-root .idea-refinement-header {
			position: relative;
			display: flex;
			align-items: center;
			justify-content: space-between;
			/* papers-header와 높이(패딩) 정렬 */
			padding: calc(8px * var(--zoom, 1)) calc(12px * var(--zoom, 1));
			border-bottom: 1px solid rgba(226, 232, 240, 0.95);
			background: rgba(255, 255, 255, 0.65);
			backdrop-filter: blur(8px);
			-webkit-backdrop-filter: blur(8px);
			font-size: 11px;
			font-weight: 700;
			color: rgba(15, 23, 42, 0.82);
			z-index: 1;
		}

		.ad-canvas-root .idea-refinement-header-title {
			white-space: nowrap;
			font-size: 11px;
			letter-spacing: -0.01em;
		}

		.ad-canvas-root #idea-refinement-close-btn {
			border: none;
			background: rgba(255, 255, 255, 0.75);
			border: 1px solid rgba(148, 163, 184, 0.25);
			width: calc(28px * var(--zoom, 1));
			height: calc(28px * var(--zoom, 1));
			border-radius: 999px;
			font-size: calc(18px * var(--zoom, 1));
			cursor: pointer;
			padding: 0;
			color: rgba(15, 23, 42, 0.55);
			display: inline-flex;
			align-items: center;
			justify-content: center;
			box-shadow: 0 10px 22px rgba(15, 23, 42, 0.10);
			transition: transform 0.12s ease, background 0.12s ease, color 0.12s ease;
		}

		.ad-canvas-root #idea-refinement-close-btn:hover {
			color: rgba(15, 23, 42, 0.92);
			background: rgba(255, 255, 255, 0.92);
			transform: translateY(-1px);
		}

		.ad-canvas-root .idea-refinement-body {
			position: relative;
			flex: 1;
			display: flex;
			flex-direction: column;
			background: linear-gradient(180deg, rgba(248, 250, 252, 0.2), rgba(241, 245, 249, 0.55));
			overflow: hidden;
			z-index: 1;
		}

		.ad-canvas-root .idea-refinement-chat {
			flex: 1;
			overflow-y: auto;
			padding: calc(16px * var(--zoom, 1));
			display: flex;
			flex-direction: column;
			gap: calc(12px * var(--zoom, 1));
		}

		.ad-canvas-root .idea-refinement-input-container {
			position: relative;
			padding: calc(12px * var(--zoom, 1));
			border-top: 1px solid rgba(226, 232, 240, 0.95);
			background: rgba(255, 255, 255, 0.72);
			backdrop-filter: blur(8px);
			-webkit-backdrop-filter: blur(8px);
			display: flex;
			gap: calc(10px * var(--zoom, 1));
			align-items: flex-end;
		}

		.ad-canvas-root .idea-refinement-chat {
			flex: 1;
			overflow-y: auto;
			padding: calc(16px * var(--zoom, 1));
			display: flex;
			flex-direction: column;
			gap: calc(12px * var(--zoom, 1));
		}

		.ad-canvas-root .idea-refinement-message {
			display: flex;
			flex-direction: column;
			gap: calc(4px * var(--zoom, 1));
			max-width: 85%;
			animation: fadeIn 0.3s ease;
		}

		@keyframes fadeIn {
			from {
				opacity: 0;
				transform: translateY(10px);
			}

			to {
				opacity: 1;
				transform: translateY(0);
			}
		}

		.ad-canvas-root .idea-refinement-message.user {
			align-self: flex-end;
		}

		.ad-canvas-root .idea-refinement-message.assistant {
			align-self: flex-start;
		}

		.ad-canvas-root .idea-refinement-message-label {
			font-size: calc(9px * var(--zoom, 1));
			font-weight: 600;
			color: rgba(100, 116, 139, 0.7);
			text-transform: uppercase;
			letter-spacing: 0.05em;
			margin-bottom: calc(4px * var(--zoom, 1));
		}

		.ad-canvas-root .idea-refinement-message-content {
			padding: calc(10px * var(--zoom, 1)) calc(14px * var(--zoom, 1));
			border-radius: calc(12px * var(--zoom, 1));
			font-size: calc(12px * var(--zoom, 1));
			line-height: 1.6;
			word-wrap: break-word;
		}

		.ad-canvas-root .idea-refinement-message.user .idea-refinement-message-content {
			background: linear-gradient(135deg, rgba(99, 102, 241, 0.12), rgba(99, 102, 241, 0.08));
			color: rgba(15, 23, 42, 0.9);
			border: 1px solid rgba(99, 102, 241, 0.2);
		}

		.ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content {
			background: linear-gradient(135deg, rgba(255, 255, 255, 0.95), rgba(248, 250, 252, 0.85));
			color: rgba(15, 23, 42, 0.85);
			border: 1px solid rgba(226, 232, 240, 0.8);
			box-shadow: 0 2px 8px rgba(15, 23, 42, 0.06);
		}

		.ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content pre {
			background: rgba(15, 23, 42, 0.04);
			padding: calc(8px * var(--zoom, 1)) calc(12px * var(--zoom, 1));
			border-radius: calc(6px * var(--zoom, 1));
			overflow-x: auto;
			font-size: calc(11px * var(--zoom, 1));
			margin: calc(8px * var(--zoom, 1)) 0;
		}

		.ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content code {
			background: rgba(15, 23, 42, 0.06);
			padding: calc(2px * var(--zoom, 1)) calc(6px * var(--zoom, 1));
			border-radius: calc(4px * var(--zoom, 1));
			font-size: calc(11px * var(--zoom, 1));
			font-family: "Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;
		}

		.ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content ul, .ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content ol {
			margin: calc(8px * var(--zoom, 1)) 0;
			padding-left: calc(20px * var(--zoom, 1));
		}

		.ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content li {
			margin: calc(4px * var(--zoom, 1)) 0;
			line-height: 1.7;
		}

		.ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content strong {
			font-weight: 600;
			color: rgba(15, 23, 42, 0.95);
		}

		.ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content em {
			font-style: italic;
			color: rgba(15, 23, 42, 0.8);
		}

		.ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content h1, .ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content h2, .ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content h3 {
			font-weight: 600;
			margin: calc(12px * var(--zoom, 1)) 0 calc(8px * var(--zoom, 1)) 0;
			color: rgba(15, 23, 42, 0.95);
			line-height: 1.5;
		}

		.ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content h1 {
			font-size: calc(18px * var(--zoom, 1));
			border-bottom: 2px solid rgba(226, 232, 240, 0.6);
			padding-bottom: calc(6px * var(--zoom, 1));
		}

		.ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content h2 {
			font-size: calc(16px * var(--zoom, 1));
			border-bottom: 1px solid rgba(226, 232, 240, 0.5);
			padding-bottom: calc(4px * var(--zoom, 1));
		}

		.ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content h3 {
			font-size: calc(14px * var(--zoom, 1));
		}

		.ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content blockquote {
			border-left: 3px solid rgba(99, 102, 241, 0.3);
			padding-left: calc(12px * var(--zoom, 1));
			margin: calc(8px * var(--zoom, 1)) 0;
			color: rgba(15, 23, 42, 0.75);
			font-style: italic;
			background: rgba(99, 102, 241, 0.03);
			padding: calc(8px * var(--zoom, 1)) calc(12px * var(--zoom, 1));
			border-radius: calc(4px * var(--zoom, 1));
		}

		.ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content a {
			color: rgba(99, 102, 241, 0.9);
			text-decoration: underline;
			text-decoration-color: rgba(99, 102, 241, 0.3);
			transition: all 0.2s ease;
		}

		.ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content a:hover {
			color: rgba(99, 102, 241, 1);
			text-decoration-color: rgba(99, 102, 241, 0.6);
		}

		.ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content p {
			margin: calc(6px * var(--zoom, 1)) 0;
			line-height: 1.7;
		}

		.ad-canvas-root .idea-refinement-message.assistant .idea-refinement-message-content hr {
			border: none;
			border-top: 1px solid rgba(226, 232, 240, 0.6);
			margin: calc(12px * var(--zoom, 1)) 0;
		}

		.ad-canvas-root .idea-refinement-input-container {
			display: flex;
			gap: calc(8px * var(--zoom, 1));
			/* papers-results-footer와 높이/리듬 정렬 */
			padding: calc(10px * var(--zoom, 1)) calc(12px * var(--zoom, 1));
			border-top: 1px solid rgba(226, 232, 240, 0.9);
			background: rgba(255, 255, 255, 0.95);
			align-items: stretch;
			min-height: calc(56px * var(--zoom, 1));
		}

		.ad-canvas-root #idea-refinement-input {
			flex: 1;
			height: calc(36px * var(--zoom, 1));
			padding: calc(8px * var(--zoom, 1)) calc(12px * var(--zoom, 1));
			border: 1px solid rgba(148, 163, 184, 0.35);
			border-radius: calc(12px * var(--zoom, 1));
			font-size: calc(12px * var(--zoom, 1));
			font-family: inherit;
			resize: none;
			outline: none;
			transition: border-color 0.2s ease, box-shadow 0.2s ease;
			background: rgba(248, 250, 252, 0.95);
			box-shadow:
				inset 0 0 0 1px rgba(255, 255, 255, 0.55),
				0 calc(6px * var(--zoom, 1)) calc(16px * var(--zoom, 1)) rgba(15, 23, 42, 0.06);
			line-height: 1.2;
			overflow: auto;
		}

		.ad-canvas-root #idea-refinement-input:focus {
			border-color: rgba(99, 102, 241, 0.5);
			box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);
		}

		.ad-canvas-root .idea-refinement-send-btn {
			height: calc(36px * var(--zoom, 1));
			padding: 0 calc(16px * var(--zoom, 1));
			background: linear-gradient(135deg, #6366f1, #22d3ee);
			color: #041016;
			border: none;
			border-radius: calc(12px * var(--zoom, 1));
			font-size: calc(12px * var(--zoom, 1));
			font-weight: 600;
			cursor: pointer;
			transition: filter 0.14s ease, transform 0.12s ease, box-shadow 0.14s ease, opacity 0.14s ease;
			display: inline-flex;
			align-items: center;
			justify-content: center;
			white-space: nowrap;
			box-shadow: 0 calc(8px * var(--zoom, 1)) calc(18px * var(--zoom, 1)) rgba(99, 102, 241, 0.22);
		}

		.ad-canvas-root .idea-refinement-send-btn:hover:not(:disabled) {
			transform: translateY(-1px);
			filter: brightness(1.04) saturate(1.03);
			box-shadow: 0 calc(10px * var(--zoom, 1)) calc(22px * var(--zoom, 1)) rgba(99, 102, 241, 0.28);
		}

		.ad-canvas-root .idea-refinement-send-btn:disabled {
			opacity: 0.5;
			cursor: not-allowed;
		}

		.ad-canvas-root .idea-refinement-loading {
			display: flex;
			align-items: center;
			gap: calc(8px * var(--zoom, 1));
			padding: calc(10px * var(--zoom, 1)) calc(14px * var(--zoom, 1));
			color: rgba(100, 116, 139, 0.7);
			font-size: calc(11px * var(--zoom, 1));
		}

		.ad-canvas-root .idea-refinement-spinner {
			width: calc(16px * var(--zoom, 1));
			height: calc(16px * var(--zoom, 1));
			border: 2px solid rgba(99, 102, 241, 0.2);
			border-top-color: rgba(99, 102, 241, 0.8);
			border-radius: 50%;
			animation: spin 0.8s linear infinite;
		}

		.ad-canvas-root.papers-open.idea-refinement-open #canvas {
			margin-right: calc(var(--refinement-panel-width) + var(--papers-panel-width) + var(--right-panel-stack-gap));
			width: calc(100vw - (var(--refinement-panel-width) + var(--papers-panel-width) + var(--right-panel-stack-gap)));
		}

		.ad-canvas-root.analysis-open.idea-refinement-open #canvas {
			margin-right: var(--refinement-panel-width);
			width: calc(100vw - var(--refinement-panel-width));
		}

		.ad-canvas-root.analysis-open.papers-open.idea-refinement-open #canvas {
			margin-left: var(--analysis-panel-width);
			margin-right: calc(var(--refinement-panel-width) + var(--papers-panel-width) + var(--right-panel-stack-gap));
			width: calc(100vw - (var(--analysis-panel-width) + var(--refinement-panel-width) + var(--papers-panel-width) + var(--right-panel-stack-gap)));
		}

		/* 두 우측 패널 동시 오픈 시: papers는 refinement 왼쪽에 배치 */
		.ad-canvas-root.papers-open.idea-refinement-open #papers-panel {
			right: calc(var(--panel-gap) + var(--refinement-panel-width) + var(--right-panel-stack-gap));
		}

		/* 폰트 줌 연동 */
		.ad-canvas-root #papers-panel {
			font-size: calc(12px * var(--zoom, 1));
		}

		/* ===== 지식 탐색 패널 탭 ===== */
		.ad-canvas-root .papers-tabs {
			display: flex;
			gap: calc(8px * var(--zoom, 1));
			padding: calc(8px * var(--zoom, 1)) calc(12px * var(--zoom, 1));
			border-bottom: 1px solid rgba(226, 232, 240, 0.9);
			background: rgba(255, 255, 255, 0.92);
			backdrop-filter: blur(10px);
			-webkit-backdrop-filter: blur(10px);
		}

		.ad-canvas-root .papers-tab {
			appearance: none;
			border: 1px solid rgba(148, 163, 184, 0.35);
			background: rgba(248, 250, 252, 0.92);
			color: rgba(15, 23, 42, 0.78);
			border-radius: calc(999px * var(--zoom, 1));
			padding: calc(6px * var(--zoom, 1)) calc(10px * var(--zoom, 1));
			font-size: calc(11px * var(--zoom, 1));
			font-weight: 700;
			cursor: pointer;
			transition: transform 0.12s ease, background 0.12s ease, border-color 0.12s ease, color 0.12s ease;
			line-height: 1.1;
			white-space: nowrap;
		}

		.ad-canvas-root .papers-tab:hover {
			transform: translateY(calc(-1px * var(--zoom, 1)));
			border-color: rgba(99, 102, 241, 0.35);
			color: rgba(15, 23, 42, 0.92);
		}

		.ad-canvas-root .papers-tab[aria-selected="true"] {
			background: linear-gradient(135deg, rgba(99, 102, 241, 0.18), rgba(34, 211, 238, 0.18));
			border-color: rgba(99, 102, 241, 0.42);
			color: rgba(15, 23, 42, 0.92);
		}

		.ad-canvas-root .knowledge-loading-panel {
			display: none;
			width: 100%;
		}

		.ad-canvas-root .knowledge-loading-panel.active {
			display: block;
		}

		.ad-canvas-root .papers-tabpanel {
			display: none;
			flex: 1;
			min-height: 0;
			flex-direction: column;
		}

		.ad-canvas-root .papers-tabpanel.active {
			display: flex;
		}

		.ad-canvas-root .papers-tab-actions {
			display: flex;
			gap: calc(12px * var(--zoom, 1));
			align-items: center;
			justify-content: flex-start;
			padding: calc(10px * var(--zoom, 1)) calc(12px * var(--zoom, 1));
			padding-bottom: calc(6px * var(--zoom, 1));
		}

		/* ===== 생물∙생태 특성: 로딩 ===== */
		.ad-canvas-root .bioeco-hint {
			color: rgba(15, 23, 42, 0.7);
			font-size: calc(12px * var(--zoom, 1));
			line-height: 1.55;
			padding: calc(12px * var(--zoom, 1)) calc(14px * var(--zoom, 1));
		}

		.ad-canvas-root .bioeco-loading {
			display: flex;
			align-items: center;
			gap: calc(10px * var(--zoom, 1));
			padding: calc(12px * var(--zoom, 1)) calc(14px * var(--zoom, 1));
			color: rgba(100, 116, 139, 0.85);
		}

		.ad-canvas-root .bioeco-spinner {
			width: calc(16px * var(--zoom, 1));
			height: calc(16px * var(--zoom, 1));
			border: 2px solid rgba(99, 102, 241, 0.18);
			border-top-color: rgba(99, 102, 241, 0.85);
			border-radius: 50%;
			animation: spin 0.8s linear infinite;
			flex-shrink: 0;
		}

		.ad-canvas-root .bioeco-loading-text {
			font-size: calc(11px * var(--zoom, 1));
			font-weight: 600;
		}

		.ad-canvas-root .bioeco-inline-loading {
			display: flex;
			align-items: center;
			gap: calc(10px * var(--zoom, 1));
			padding: calc(8px * var(--zoom, 1)) calc(12px * var(--zoom, 1));
			color: rgba(100, 116, 139, 0.85);
		}

		.ad-canvas-root .bioeco-inline-loading.hidden {
			display: none;
		}

		.ad-canvas-root #papers-results {
			/* footer를 패널 끝까지(바깥 패딩 없이) 붙이기 위해 results 컨테이너 패딩 제거 */
			padding: 0;
			overflow-y: auto;
			display: none;
			/* 기본적으로 숨김, 최종 결과가 나올 때만 표시 */
			flex: 1;
			position: relative;
			min-height: 0;
			/* flex에서 공간 확보 */
		}

		.ad-canvas-root #papers-results-header {
			/* 선택 버튼을 헤더로 옮겼으므로, 결과 헤더는 여백만 담당 */
			height: calc(6px * var(--zoom, 1));
		}

		/* 논문 카드 리스트는 내부 패딩으로 여백을 유지 (푸터는 full-bleed) */
		.ad-canvas-root #papers-results-list {
			padding: calc(10px * var(--zoom, 1));
			padding-top: 0;
			/* sticky footer에 마지막 카드가 가리지 않도록 여유 확보 */
			padding-bottom: calc((56px + 16px) * var(--zoom, 1));
		}

		.ad-canvas-root #bioeco-results-list {
			padding: calc(10px * var(--zoom, 1));
			padding-top: 0;
			padding-bottom: calc((56px + 16px) * var(--zoom, 1));
		}

		.ad-canvas-root #scientific-effects-results-list {
			padding: calc(10px * var(--zoom, 1));
			padding-top: 0;
			padding-bottom: calc((56px + 16px) * var(--zoom, 1));
		}

		.ad-canvas-root .papers-select-btn {
			font-size: 11px;
			padding: calc(2px * var(--zoom, 1)) 0;
			background: none;
			border: none;
			color: rgba(15, 23, 42, 0.7);
			cursor: pointer;
			transition: text-decoration 0.2s ease, color 0.2s ease;
			text-decoration: none;
		}

		.ad-canvas-root .papers-select-btn:hover:not(:disabled) {
			text-decoration: underline;
			color: rgba(15, 23, 42, 0.9);
		}

		.ad-canvas-root .papers-select-btn:disabled {
			color: rgba(148, 163, 184, 0.5);
			cursor: not-allowed;
		}

		.ad-canvas-root #papers-panel.showing-results .papers-body {
			display: none;
			/* 최종 결과가 나오면 body 숨김 */
		}

		.ad-canvas-root #papers-panel.showing-results #papers-results {
			display: flex;
			/* 최종 결과가 나오면 results 표시 (flex로 설정하여 flex: 1이 작동하도록) */
			flex-direction: column;
		}

		.ad-canvas-root #papers-results-footer {
			position: sticky;
			bottom: 0;
			/* 하단 경계를 가리지 않도록: 투명 기반 유리 그라데이션 */
			background: linear-gradient(180deg,
					rgba(248, 250, 252, 0) 0%,
					rgba(248, 250, 252, 0.55) 35%,
					rgba(241, 245, 249, 0.82) 100%);
			border-top: 1px solid rgba(226, 232, 240, 0.75);
			backdrop-filter: blur(10px);
			-webkit-backdrop-filter: blur(10px);
			/* 패널 하단 라운드와 정렬 (full-bleed라서 패널 곡률을 따르는 게 자연스러움) */
			border-bottom-left-radius: 16px;
			border-bottom-right-radius: 16px;
			padding: calc(10px * var(--zoom, 1)) calc(12px * var(--zoom, 1));
			display: flex;
			align-items: center;
			justify-content: flex-end;
			gap: calc(8px * var(--zoom, 1));
			z-index: 10;
			margin-top: auto;
			flex-shrink: 0;
			/* footer가 축소되지 않도록 */
			min-height: calc(56px * var(--zoom, 1));
		}

		.ad-canvas-root #bioeco-results-footer {
			position: sticky;
			bottom: 0;
			background: linear-gradient(180deg,
					rgba(248, 250, 252, 0) 0%,
					rgba(248, 250, 252, 0.55) 35%,
					rgba(241, 245, 249, 0.82) 100%);
			border-top: 1px solid rgba(226, 232, 240, 0.75);
			backdrop-filter: blur(10px);
			-webkit-backdrop-filter: blur(10px);
			border-bottom-left-radius: 16px;
			border-bottom-right-radius: 16px;
			padding: calc(10px * var(--zoom, 1)) calc(12px * var(--zoom, 1));
			display: flex;
			align-items: center;
			justify-content: flex-end;
			gap: calc(8px * var(--zoom, 1));
			z-index: 10;
			margin-top: auto;
			flex-shrink: 0;
			min-height: calc(56px * var(--zoom, 1));
		}

		.ad-canvas-root #scientific-effects-results-footer {
			position: sticky;
			bottom: 0;
			background: linear-gradient(180deg,
					rgba(248, 250, 252, 0) 0%,
					rgba(248, 250, 252, 0.55) 35%,
					rgba(241, 245, 249, 0.82) 100%);
			border-top: 1px solid rgba(226, 232, 240, 0.75);
			backdrop-filter: blur(10px);
			-webkit-backdrop-filter: blur(10px);
			border-bottom-left-radius: 16px;
			border-bottom-right-radius: 16px;
			padding: calc(10px * var(--zoom, 1)) calc(12px * var(--zoom, 1));
			display: flex;
			align-items: center;
			justify-content: flex-end;
			gap: calc(8px * var(--zoom, 1));
			z-index: 10;
			margin-top: auto;
			flex-shrink: 0;
			min-height: calc(56px * var(--zoom, 1));
		}

		.ad-canvas-root #papers-add-to-canvas-btn {
			padding: calc(8px * var(--zoom, 1)) calc(16px * var(--zoom, 1));
			background: linear-gradient(135deg, #22c55e, #4ade80);
			color: #022c22;
			border: none;
			border-radius: calc(8px * var(--zoom, 1));
			font-size: 11px;
			font-weight: 600;
			cursor: pointer;
			box-shadow: 0 calc(4px * var(--zoom, 1)) calc(12px * var(--zoom, 1)) rgba(34, 197, 94, 0.3);
			transition: transform 0.12s ease, box-shadow 0.12s ease;
		}

		.ad-canvas-root #papers-add-to-canvas-btn:hover {
			transform: translateY(calc(-1px * var(--zoom, 1)));
			box-shadow: 0 calc(6px * var(--zoom, 1)) calc(16px * var(--zoom, 1)) rgba(34, 197, 94, 0.4);
		}

		.ad-canvas-root #papers-add-to-canvas-btn:disabled {
			opacity: 0.5;
			cursor: not-allowed;
			transform: none;
		}

		.ad-canvas-root #bioeco-add-to-canvas-btn {
			padding: calc(8px * var(--zoom, 1)) calc(16px * var(--zoom, 1));
			background: linear-gradient(135deg, #22c55e, #4ade80);
			color: #022c22;
			border: none;
			border-radius: calc(8px * var(--zoom, 1));
			font-size: 11px;
			font-weight: 600;
			cursor: pointer;
			box-shadow: 0 calc(4px * var(--zoom, 1)) calc(12px * var(--zoom, 1)) rgba(34, 197, 94, 0.3);
			transition: transform 0.12s ease, box-shadow 0.12s ease;
		}

		.ad-canvas-root #bioeco-add-to-canvas-btn:hover:not(:disabled) {
			transform: translateY(calc(-1px * var(--zoom, 1)));
			box-shadow: 0 calc(6px * var(--zoom, 1)) calc(16px * var(--zoom, 1)) rgba(34, 197, 94, 0.4);
		}

		.ad-canvas-root #bioeco-add-to-canvas-btn:disabled {
			opacity: 0.5;
			cursor: not-allowed;
			transform: none;
		}

		.ad-canvas-root #scientific-effects-add-to-canvas-btn {
			padding: calc(8px * var(--zoom, 1)) calc(16px * var(--zoom, 1));
			background: linear-gradient(135deg, #22c55e, #4ade80);
			color: #022c22;
			border: none;
			border-radius: calc(8px * var(--zoom, 1));
			font-size: 11px;
			font-weight: 600;
			cursor: pointer;
			box-shadow: 0 calc(4px * var(--zoom, 1)) calc(12px * var(--zoom, 1)) rgba(34, 197, 94, 0.3);
			transition: transform 0.12s ease, box-shadow 0.12s ease;
		}

		.ad-canvas-root #scientific-effects-add-to-canvas-btn:hover:not(:disabled) {
			transform: translateY(calc(-1px * var(--zoom, 1)));
			box-shadow: 0 calc(6px * var(--zoom, 1)) calc(16px * var(--zoom, 1)) rgba(34, 197, 94, 0.4);
		}

		.ad-canvas-root #scientific-effects-add-to-canvas-btn:disabled {
			opacity: 0.5;
			cursor: not-allowed;
			transform: none;
		}

		.ad-canvas-root .paper-card {
			background: #ffffff;
			border-radius: calc(12px * var(--zoom, 1));
			padding: calc(14px * var(--zoom, 1)) calc(16px * var(--zoom, 1));
			margin-bottom: calc(12px * var(--zoom, 1));
			box-shadow: 0 calc(4px * var(--zoom, 1)) calc(12px * var(--zoom, 1)) rgba(0, 0, 0, 0.06);
			font-size: calc(11px * var(--zoom, 1));
			/* 카드 기본 텍스트 크기와 동일 */
			display: flex;
			gap: calc(12px * var(--zoom, 1));
			width: 100%;
			margin-left: 0;
			margin-right: 0;
		}

		.ad-canvas-root .papers-empty-state {
			flex: 1;
			display: flex;
			align-items: center;
			justify-content: center;
			padding: calc(28px * var(--zoom, 1));
			color: rgba(15, 23, 42, 0.75);
			text-align: center;
			line-height: 1.6;
		}

		.ad-canvas-root .papers-empty-state .hint {
			max-width: 440px;
			background: rgba(255, 255, 255, 0.9);
			border: 1px solid rgba(226, 232, 240, 0.9);
			border-radius: calc(14px * var(--zoom, 1));
			padding: calc(16px * var(--zoom, 1)) calc(18px * var(--zoom, 1));
			box-shadow: 0 calc(6px * var(--zoom, 1)) calc(18px * var(--zoom, 1)) rgba(15, 23, 42, 0.08);
		}

		.ad-canvas-root .papers-empty-state .hint-title {
			font-weight: 700;
			margin-bottom: calc(6px * var(--zoom, 1));
		}

		.ad-canvas-root .papers-empty-state .hint-sub {
			font-size: calc(11px * var(--zoom, 1));
			color: rgba(100, 116, 139, 0.85);
		}

		/* ✅ 논문 리스트: 체크박스 + eye 버튼 정렬 */
		.ad-canvas-root .paper-card-checkbox {
			flex: 0 0 calc(24px * var(--zoom, 1));
			/* 여유 폭(정렬 안정) */
			display: flex;
			flex-direction: column;
			gap: calc(6px * var(--zoom, 1));
			align-items: center;
			/* ← 핵심: 체크박스/아이콘 중심 정렬 */
			justify-content: flex-start;
		}

		/* 체크박스 기본 마진 제거(미세 어긋남 방지) */
		.ad-canvas-root .paper-card-checkbox input[type="checkbox"] {
			width: calc(16px * var(--zoom, 1));
			height: calc(16px * var(--zoom, 1));
			margin: 0;
			flex-shrink: 0;
		}

		/* ✅ eye 버튼: 배경 투명 + 정렬 통일 */
		.ad-canvas-root .paper-focus-btn {
			width: calc(24px * var(--zoom, 1));
			height: calc(24px * var(--zoom, 1));
			min-width: calc(24px * var(--zoom, 1));
			min-height: calc(24px * var(--zoom, 1));

			border: none;
			background: transparent;
			/* ← 요청: 배경 투명 */
			border-radius: calc(6px * var(--zoom, 1));

			display: flex;
			align-items: center;
			/* 수직정렬 */
			justify-content: center;

			padding: 0;
			cursor: pointer;
			color: #6b7280;
			transition: background 0.18s ease, transform 0.18s ease, color 0.18s ease;
		}

		.ad-canvas-root .paper-focus-btn:hover {
			background: rgba(0, 0, 0, 0.04);
			/* hover에서만 은은하게 */
			color: #374151;
			transform: translateY(calc(-1px * var(--zoom, 1)));
		}


		.ad-canvas-root .paper-focus-btn:hover {
			background: rgba(226, 232, 240, 0.9);
			transform: scale(1.1);
		}

		.ad-canvas-root .paper-card-content {
			flex: 1;
		}

		.ad-canvas-root .paper-card .paper-title {
			font-size: calc(11px * var(--zoom, 1));
			/* 카드 기본 텍스트 크기 */
			font-weight: 600;
			margin-bottom: calc(6px * var(--zoom, 1));
			cursor: pointer;
			transition: text-decoration 0.2s ease;
		}

		.ad-canvas-root .paper-card .paper-title:hover {
			text-decoration: underline;
		}

		.ad-canvas-root .paper-card .paper-meta {
			font-size: calc(11px * var(--zoom, 1));
			/* 카드 기본 텍스트 크기 */
			color: #666;
			margin-bottom: calc(6px * var(--zoom, 1));
		}

		.ad-canvas-root .paper-card .paper-abstract {
			font-size: calc(11px * var(--zoom, 1));
			/* 카드 기본 텍스트 크기 */
			color: #333;
			line-height: 1.4;
			margin-bottom: calc(8px * var(--zoom, 1));
		}

		.ad-canvas-root .paper-card .paper-insight {
			font-size: calc(11px * var(--zoom, 1));
			/* 카드 기본 텍스트 크기 */
			color: #047857;
			line-height: 1.5;
			padding: calc(10px * var(--zoom, 1));
			background: rgba(16, 185, 129, 0.08);
			border-radius: calc(8px * var(--zoom, 1));
			margin-top: calc(8px * var(--zoom, 1));
			margin-bottom: calc(8px * var(--zoom, 1));
		}

		.ad-canvas-root .paper-card .paper-insight-loading {
			font-size: calc(11px * var(--zoom, 1));
			color: #666;
			font-style: italic;
			padding: calc(8px * var(--zoom, 1));
		}

		.ad-canvas-root .paper-card .paper-insight-error {
			font-size: calc(11px * var(--zoom, 1));
			color: #dc2626;
			padding: calc(8px * var(--zoom, 1));
		}

		.ad-canvas-root .paper-card .paper-insight-retry-btn {
			font-size: calc(11px * var(--zoom, 1));
			padding: calc(6px * var(--zoom, 1)) calc(12px * var(--zoom, 1));
			background: rgba(16, 185, 129, 0.1);
			border: 1px solid rgba(16, 185, 129, 0.3);
			border-radius: calc(6px * var(--zoom, 1));
			color: #047857;
			cursor: pointer;
			margin-top: calc(4px * var(--zoom, 1));
			transition: background 0.2s ease;
		}

		.ad-canvas-root .paper-card .paper-insight-retry-btn:hover {
			background: rgba(16, 185, 129, 0.15);
		}

		/* 아이디어 적용 방안 스타일 */
		.ad-canvas-root .paper-adaptation-container {
			margin-top: calc(8px * var(--zoom, 1));
			min-height: calc(40px * var(--zoom, 1));
			/* 최소 높이 보장 */
			display: block;
			/* 항상 표시되도록 보장 */
		}

		/* 아이디어 적용 방안 섹션이 항상 표시되도록 보장 */
		.ad-canvas-root .paper-card-section:has(.paper-adaptation-container) {
			display: block !important;
			visibility: visible !important;
		}

		/* 아이디어 적용 방안 섹션 스타일 */
		.ad-canvas-root .paper-adaptation-section {
			margin-bottom: calc(12px * var(--zoom, 1));
		}

		.ad-canvas-root .paper-adaptation-section:last-child {
			margin-bottom: 0;
		}

		.ad-canvas-root .paper-adaptation-label {
			font-size: calc(10px * var(--zoom, 1));
			/* paper-card-label과 동일한 크기 */
			font-weight: 650;
			color: rgba(100, 116, 139, 0.82);
			text-transform: uppercase;
			letter-spacing: 0.08em;
			margin-bottom: calc(6px * var(--zoom, 1));
		}

		.ad-canvas-root .paper-adaptation-loading {
			display: flex;
			align-items: center;
			gap: calc(8px * var(--zoom, 1));
			padding: calc(10px * var(--zoom, 1));
			color: rgba(100, 116, 139, 0.8);
			font-size: calc(11px * var(--zoom, 1));
		}

		.ad-canvas-root .paper-adaptation-spinner {
			width: calc(16px * var(--zoom, 1));
			height: calc(16px * var(--zoom, 1));
			border: calc(2px * var(--zoom, 1)) solid rgba(99, 102, 241, 0.2);
			border-top-color: rgba(99, 102, 241, 0.8);
			border-radius: 50%;
			animation: spin 0.8s linear infinite;
		}

		.ad-canvas-root .paper-adaptation-display {
			margin-top: calc(4px * var(--zoom, 1));
		}

		.ad-canvas-root .paper-adaptation-idea-display {
			padding: calc(10px * var(--zoom, 1));
			background: rgba(241, 245, 249, 0.6);
			border-radius: calc(8px * var(--zoom, 1));
			border: 1px solid rgba(226, 232, 240, 0.8);
		}

		.ad-canvas-root .paper-adaptation-idea-display .idea-title {
			font-size: calc(12px * var(--zoom, 1));
			font-weight: 800;
			color: rgba(15, 23, 42, 0.88);
			line-height: 1.35;
			margin-bottom: calc(8px * var(--zoom, 1));
		}

		.ad-canvas-root .paper-adaptation-idea-display .idea-meta {
			display: grid;
			grid-template-columns: 1fr;
			gap: calc(6px * var(--zoom, 1));
			font-size: calc(11px * var(--zoom, 1));
			color: rgba(15, 23, 42, 0.8);
			line-height: 1.45;
		}

		.ad-canvas-root .paper-adaptation-idea-display .meta-label {
			font-size: calc(10px * var(--zoom, 1));
			font-weight: 800;
			letter-spacing: 0.06em;
			text-transform: uppercase;
			color: rgba(100, 116, 139, 0.95);
			margin-bottom: calc(2px * var(--zoom, 1));
		}

		.ad-canvas-root .paper-adaptation-idea-display .risk-chips {
			display: flex;
			flex-wrap: wrap;
			gap: 6px;
		}

		.ad-canvas-root .paper-adaptation-idea-display .risk-chip {
			display: inline-block;
			padding: calc(3px * var(--zoom, 1)) calc(8px * var(--zoom, 1));
			background: rgba(239, 68, 68, 0.1);
			border: 1px solid rgba(239, 68, 68, 0.25);
			border-radius: calc(4px * var(--zoom, 1));
			font-size: calc(10px * var(--zoom, 1));
			color: rgba(239, 68, 68, 0.9);
		}

		.ad-canvas-root .paper-adaptation-error {
			padding: calc(10px * var(--zoom, 1));
		}

		.ad-canvas-root .paper-adaptation-error-message {
			font-size: calc(11px * var(--zoom, 1));
			color: rgba(239, 68, 68, 0.9);
			margin-bottom: calc(8px * var(--zoom, 1));
		}

		.ad-canvas-root .paper-card .paper-images {
			display: flex;
			gap: calc(8px * var(--zoom, 1));
			margin-top: calc(8px * var(--zoom, 1));
			margin-bottom: calc(8px * var(--zoom, 1));
			flex-wrap: wrap;
			min-height: calc(80px * var(--zoom, 1));
			align-items: flex-start;
		}

		.ad-canvas-root .paper-card .paper-image {
			width: calc(80px * var(--zoom, 1));
			height: calc(80px * var(--zoom, 1));
			min-width: calc(80px * var(--zoom, 1));
			min-height: calc(80px * var(--zoom, 1));
			object-fit: cover;
			border-radius: calc(6px * var(--zoom, 1));
			border: 1px solid rgba(148, 163, 184, 0.2);
			background: rgba(241, 245, 249, 0.5);
			flex-shrink: 0;
			user-select: none;
			-webkit-user-select: none;
			-moz-user-select: none;
			-ms-user-select: none;
			pointer-events: auto;
			cursor: pointer;
			transition: transform 0.18s ease, box-shadow 0.18s ease, filter 0.18s ease;
		}

		.ad-canvas-root .paper-card .paper-image:hover {
			transform: translateY(calc(-2px * var(--zoom, 1))) scale(1.03);
			box-shadow:
				0 calc(14px * var(--zoom, 1)) calc(30px * var(--zoom, 1)) rgba(15, 23, 42, 0.14),
				inset 0 0 0 1px rgba(255, 255, 255, 0.6);
			filter: saturate(1.04);
		}

		.ad-canvas-root .paper-card .paper-image-error {
			display: none;
		}

		.ad-canvas-root .paper-card .paper-score {
			font-size: calc(11px * var(--zoom, 1));
			color: #888;
			margin-top: calc(6px * var(--zoom, 1));
		}

		/* 이미지 전체 화면 모달 */
		.ad-canvas-root #paper-image-modal {
			position: fixed;
			inset: 0;
			background: rgba(15, 23, 42, 0.95);
			backdrop-filter: blur(8px);
			-webkit-backdrop-filter: blur(8px);
			z-index: 10000;
			display: none;
			align-items: center;
			justify-content: center;
			padding: 20px;
		}

		.ad-canvas-root #paper-image-modal.active {
			display: flex;
		}

		.ad-canvas-root #paper-image-modal-content {
			position: relative;
			max-width: 95vw;
			max-height: calc(95 * var(--ad-vh));
			display: flex;
			flex-direction: column;
			align-items: center;
			gap: 16px;
		}

		.ad-canvas-root #paper-image-modal img {
			max-width: 100%;
			max-height: calc(calc(95 * var(--ad-vh)) - 120px);
			object-fit: contain;
			border-radius: 12px;
			box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
		}

		.ad-canvas-root #paper-image-modal-info {
			background: rgba(255, 255, 255, 0.95);
			padding: 16px 20px;
			border-radius: 12px;
			max-width: 90vw;
			width: 100%;
			box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
		}

		.ad-canvas-root #paper-image-modal-title {
			font-size: 11px;
			/* 카드 기본 텍스트 크기 */
			font-weight: 600;
			color: rgba(15, 23, 42, 0.9);
			margin-bottom: 8px;
			line-height: 1.4;
		}

		.ad-canvas-root #paper-image-modal-source {
			font-size: 11px;
			/* 카드 기본 텍스트 크기 */
			color: rgba(15, 23, 42, 0.7);
		}

		.ad-canvas-root #paper-image-modal-source a {
			color: #2563eb;
			text-decoration: none;
			transition: text-decoration 0.2s ease;
		}

		.ad-canvas-root #paper-image-modal-source a:hover {
			text-decoration: underline;
		}

		.ad-canvas-root #paper-image-modal-close {
			position: absolute;
			top: -40px;
			right: 0;
			width: 36px;
			height: 36px;
			border-radius: 999px;
			border: none;
			background: rgba(255, 255, 255, 0.9);
			color: rgba(15, 23, 42, 0.8);
			font-size: 24px;
			line-height: 1;
			cursor: pointer;
			display: flex;
			align-items: center;
			justify-content: center;
			transition: background 0.2s ease, transform 0.2s ease;
			z-index: 10001;
		}

		.ad-canvas-root #paper-image-modal-close:hover {
			background: rgba(255, 255, 255, 1);
			transform: scale(1.1);
		}
	