body { font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; margin: 0; padding: 0; background: #f5f7fb; color: #222; } .container { max-width: 1180px; margin: 24px auto; padding: 16px 20px 32px; background: #ffffff; border-radius: 12px; box-shadow: 0 10px 30px rgba(15, 23, 42, 0.08); } h1 { margin-top: 0; margin-bottom: 16px; font-size: 1.6rem; } label { font-weight: 500; } .panel { margin: 12px 0; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; } .image-nav { justify-content: space-between; gap: 8px; } .image-nav button { padding: 4px 10px; border-radius: 999px; } .image-nav-left { display: flex; align-items: center; gap: 8px; } .page-switch select { padding: 4px 8px; border-radius: 999px; border: 1px solid #cbd5f0; background: #f9fbff; font-size: 0.9rem; } .main-layout { display: flex; gap: 16px; align-items: flex-start; } .objects-pane { flex: 0 0 260px; } .left-pane { flex: 1 1 auto; } .right-pane { flex: 0 0 280px; display: flex; flex-direction: column; gap: 12px; } .sentences-pane { flex: 0 0 300px; display: flex; flex-direction: column; gap: 12px; } .mode-option { display: inline-flex; align-items: center; gap: 4px; font-weight: 400; } select { min-width: 220px; padding: 6px 10px; border-radius: 8px; border: 1px solid #cbd5f0; background: #f9fbff; } .canvas-wrapper { border-radius: 12px; border: 1px solid #d4ddf5; background: #f1f5ff; overflow: visible; padding: 8px; } canvas { display: block; max-width: 100%; height: auto; } button { padding: 8px 14px; border-radius: 999px; border: none; background: #2563eb; color: white; font-weight: 500; cursor: pointer; box-shadow: 0 4px 10px rgba(37, 99, 235, 0.4); transition: background 0.15s ease, box-shadow 0.15s ease, transform 0.1s ease; } button:disabled { background: #9ca3af; cursor: not-allowed; box-shadow: none; } button:not(:disabled):hover { background: #1d4ed8; box-shadow: 0 6px 18px rgba(37, 99, 235, 0.5); transform: translateY(-1px); } .status { font-size: 0.9rem; } .status.ok { color: #16a34a; } .status.error { color: #dc2626; } .sidebar-section { border-radius: 10px; border: 1px solid #e5e7eb; padding: 10px 12px; background: #f9fafb; } .sidebar-section h2 { font-size: 1rem; margin: 0 0 6px; } .sidebar-row { display: flex; flex-direction: column; gap: 4px; margin-top: 6px; } .sidebar-row input[type="text"] { padding: 6px 8px; border-radius: 6px; border: 1px solid #d1d5db; font-size: 0.9rem; } .detail-value { padding: 4px 6px; border-radius: 6px; border: 1px solid #e5e7eb; background: #f9fafb; font-size: 0.9rem; min-height: 24px; } .objects-list { display: flex; flex-direction: column; gap: 8px; max-height: 260px; overflow-y: auto; padding-right: 4px; } .objects-tags { margin-top: 8px; display: flex; flex-wrap: wrap; gap: 4px; } .object-tag { padding: 2px 6px; border-radius: 999px; background: #e5e7eb; font-size: 0.75rem; white-space: nowrap; } .object-item { display: flex; flex-direction: column; gap: 4px; padding: 4px 6px; border-radius: 8px; border: 1px solid #e5e7eb; background: #ffffff; } .object-item-header { display: flex; align-items: center; gap: 4px; flex-wrap: nowrap; } .object-hierarchy-select { width: 40px; min-width: 0; padding: 2px 3px; border-radius: 6px; border: 1px solid #d1d5db; font-size: 0.8rem; background: #f9fafb; } .object-parent-select { width: 50px; min-width: 0; padding: 2px 3px; border-radius: 6px; border: 1px solid #d1d5db; font-size: 0.8rem; background: #eef2ff; } .object-item img { width: 40px; height: 40px; object-fit: cover; border-radius: 6px; border: 1px solid #e5e7eb; } .object-item-text { display: flex; flex-direction: column; font-size: 0.8rem; } .object-item-details { padding-left: 24px; display: none; flex-direction: column; gap: 4px; margin-top: 4px; } .object-item-details.visible { display: flex; } .object-item-details input[type="text"] { padding: 4px 6px; border-radius: 6px; border: 1px solid #d1d5db; font-size: 0.8rem; } .object-item-details label { font-size: 0.75rem; } .sentences-pane { flex: 0 0 300px; display: flex; flex-direction: column; gap: 12px; } .sentences-list { display: flex; flex-direction: column; gap: 12px; max-height: 70vh; overflow-y: auto; padding: 4px; } .sentence-item { padding: 12px; background: #f9fbff; border: 1px solid #d4ddf5; border-radius: 8px; display: flex; flex-direction: column; gap: 8px; } .sentence-item-question { font-weight: 600; color: #1e40af; font-size: 0.95rem; } .sentence-item-answer { color: #475569; font-size: 0.9rem; padding-left: 12px; border-left: 2px solid #cbd5f0; } .sentence-item-empty { padding: 24px; text-align: center; color: #94a3b8; font-style: italic; } .object-item-text strong { font-size: 0.85rem; } .selections-list { display: flex; flex-direction: column; gap: 8px; max-height: 200px; overflow-y: auto; padding: 8px; background: #f9fbff; border: 1px solid #d4ddf5; border-radius: 8px; margin-bottom: 8px; } .selection-item { padding: 8px; background: #ffffff; border: 1px solid #e5e7eb; border-radius: 6px; font-size: 0.85rem; color: #475569; } .selection-item strong { color: #1e40af; font-weight: 600; } .selections-empty { padding: 16px; text-align: center; color: #94a3b8; font-style: italic; font-size: 0.85rem; }